I create my own objects with svg. I’m doing this using gojs picture
I’m bind to the source of the gojs picture.
but here the source is always bind
i think this will cause performance loss
i just want it to be called when picture source is change to color and border Color values under node Config
Please check the svg and code I sent
Example of a svg
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 58 58" style="enable-background:new 0 0 58 58;" width="58" height="58" xml:space="preserve">
<g id="flw_x5F_and_x5F_Operator">
<g>
<path style="fill:strokeColor;" d="M24,47c-0.552,0-1-0.447-1-1s0.448-1,1-1c1.558,0,3-0.484,3-4v-8
c0.075-1.146,0.601-2.902,1.961-3.999c-1.36-1.091-1.885-2.831-1.958-3.935L27,17c0-3.516-1.442-4-3-4c-0.552,0-1-0.448-1-1
s0.448-1,1-1c3.271,0,5,2.075,5,6v8c0.021,0.243,0.311,3,3,3c0.553,0,1,0.448,1,1s-0.447,1-1,1c-2.689,0-2.979,2.757-3.002,3.071
L29,41C29,44.925,27.271,47,24,47z"/>
</g>
<g>
<path style="fill:currentColor;" d="M47,35c-0.256,0-0.512-0.098-0.707-0.293c-0.391-0.391-0.391-1.023,0-1.414L50.586,29l-4.293-4.293
c-0.391-0.391-0.391-1.023,0-1.414s1.023-0.391,1.414,0l5,5c0.391,0.391,0.391,1.023,0,1.414l-5,5C47.512,34.902,47.256,35,47,35z
"/>
</g>
<g>
<path style="fill:currentColor;" d="M52,30H38c-0.553,0-1-0.448-1-1s0.447-1,1-1h14c0.553,0,1,0.448,1,1S52.553,30,52,30z"/>
</g>
<g>
<path style="fill:currentColor;" d="M12,18c-0.263,0-0.518-0.104-0.707-0.293l-3-3c-0.391-0.391-0.391-1.023,0-1.414
s1.023-0.391,1.414,0l2.063,2.063l4.356-7.841c0.268-0.481,0.876-0.657,1.36-0.388c0.482,0.268,0.657,0.877,0.388,1.36l-5,9
c-0.152,0.274-0.425,0.461-0.735,0.504C12.092,17.997,12.046,18,12,18z"/>
</g>
<g>
<path style="fill:currentColor;" d="M12,51c-0.263,0-0.518-0.104-0.707-0.293l-3-3c-0.391-0.391-0.391-1.023,0-1.414
s1.023-0.391,1.414,0l2.063,2.063l4.356-7.841c0.268-0.482,0.876-0.659,1.36-0.389c0.482,0.269,0.657,0.877,0.388,1.359l-5,9
c-0.152,0.274-0.425,0.462-0.735,0.505C12.092,50.997,12.046,51,12,51z"/>
</g>
</g>
<g id="Layer_1">
</g>
</svg>
goMake(go.Panel, "Viewbox",
{
cursor: "move",
background: "transparent",
padding: 5
},
goMake(go.Picture, { desiredSize: new go.Size(58, 58) },
new go.Binding("source", "", (sourceData, target) => {
let fileSvg = require('../assets/svg/' + sourceData.typeName + '.svg');
let color = target.part.data.nodeConfig.color;
let borderColor = target.part.data.nodeConfig.borderColor;
if (!color) {
color = (this.diagram.model.modelData as IFlowDiagram).configs.nodeConfig.color;
}
if (!color) {
color = this.props.config.nodeConfig.color;
}
if (!borderColor) {
borderColor = (this.diagram.model.modelData as IFlowDiagram).configs.nodeConfig.borderColor;
}
if (!borderColor) {
borderColor = this.props.config.nodeConfig.borderColor;
}
fileSvg = fileSvg.replace(new RegExp("fill:currentColor", 'g'), "fill: " + color).replace(new RegExp("fill:strokeColor", 'g'), "fill: " + borderColor);
return "data:image/svg+xml;base64," + btoa(fileSvg);
})
)
);