fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
29 lines (27 loc) • 1.2 kB
JavaScript
const gradientsAttrs = ['gradientTransform', 'x1', 'x2', 'y1', 'y2', 'gradientUnits', 'cx', 'cy', 'r', 'fx', 'fy'];
const xlinkAttr = 'xlink:href';
function recursivelyParseGradientsXlink(doc, gradient) {
var _gradient$getAttribut;
const xLink = ((_gradient$getAttribut = gradient.getAttribute(xlinkAttr)) === null || _gradient$getAttribut === void 0 ? void 0 : _gradient$getAttribut.slice(1)) || '',
referencedGradient = doc.getElementById(xLink);
if (referencedGradient && referencedGradient.getAttribute(xlinkAttr)) {
recursivelyParseGradientsXlink(doc, referencedGradient);
}
if (referencedGradient) {
gradientsAttrs.forEach(attr => {
const value = referencedGradient.getAttribute(attr);
if (!gradient.hasAttribute(attr) && value) {
gradient.setAttribute(attr, value);
}
});
if (!gradient.children.length) {
const referenceClone = referencedGradient.cloneNode(true);
while (referenceClone.firstChild) {
gradient.appendChild(referenceClone.firstChild);
}
}
}
gradient.removeAttribute(xlinkAttr);
}
export { recursivelyParseGradientsXlink };
//# sourceMappingURL=recursivelyParseGradientsXlink.mjs.map