linearGradient情報含まれるSVGファイルをfancy product designerに取り込むと、その情報がなくなった。原因はSVG各objectのfillを処理する際のバグ?か
ソースコードの6018行目あたり、objectのfillは、色のHexかtransparentとなるが、linearGradientの場合、fillがobjectになっている。
var color = objects[i].fill.length > 0 ? tinycolor(objects[i].fill).toHexString() : 'transparent';
params.colors.push(color);
対応するには、下記のように変更
if(typeof(objects[i].fill) !== "object") {
var color = objects[i].fill.length > 0 ? tinycolor(objects[i].fill).toHexString() : 'transparent';
params.colors.push(color);
} else {
params.colors.push('');
}
さらに、6070行目あたり
//if no default colors are set, use the initial path colors
else if(!fabricParams.fill && !fabricParams.svgFill) {
if(objects) {
params.colors = [];
for(var i=0; i < objects.length; ++i) {
if(typeof(objects[i].fill) !== "object") {
var color = objects[i].fill.length > 0 ? tinycolor(objects[i].fill).toHexString() : 'transparent';
params.colors.push(color);
} else {
params.colors.push('');
}
}
params.svgFill = params.colors;
}
fabricParams.svgFill = params.svgFill;
}
最後、7540行目あたり
//path groups (svg)
else if(element.type == FPDPathGroupName && typeof hex == 'object') {
for(var i=0; i < hex.length; ++i) {
if(element.getObjects()[i] && hex[i] !== '') {
element.getObjects()[i].set('fill', hex[i]);
}
}