fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
1 lines • 1.82 kB
Source Map (JSON)
{"version":3,"file":"recursivelyParseGradientsXlink.mjs","names":[],"sources":["../../../src/parser/recursivelyParseGradientsXlink.ts"],"sourcesContent":["const gradientsAttrs = [\n 'gradientTransform',\n 'x1',\n 'x2',\n 'y1',\n 'y2',\n 'gradientUnits',\n 'cx',\n 'cy',\n 'r',\n 'fx',\n 'fy',\n];\nconst xlinkAttr = 'xlink:href';\n\nexport function recursivelyParseGradientsXlink(\n doc: Document,\n gradient: Element,\n) {\n const xLink = gradient.getAttribute(xlinkAttr)?.slice(1) || '',\n referencedGradient = doc.getElementById(xLink);\n if (referencedGradient && referencedGradient.getAttribute(xlinkAttr)) {\n recursivelyParseGradientsXlink(doc, referencedGradient as Element);\n }\n if (referencedGradient) {\n gradientsAttrs.forEach((attr) => {\n const value = referencedGradient.getAttribute(attr);\n if (!gradient.hasAttribute(attr) && value) {\n gradient.setAttribute(attr, value);\n }\n });\n if (!gradient.children.length) {\n const referenceClone = referencedGradient.cloneNode(true);\n while (referenceClone.firstChild) {\n gradient.appendChild(referenceClone.firstChild);\n }\n }\n }\n gradient.removeAttribute(xlinkAttr);\n}\n"],"mappings":";AAAA,MAAM,iBAAiB;CACrB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AACD,MAAM,YAAY;AAElB,SAAgB,+BACd,KACA,UACA;;CACA,MAAM,UAAA,wBAAQ,SAAS,aAAa,UAAU,MAAA,QAAA,0BAAA,KAAA,IAAA,KAAA,IAAA,sBAAE,MAAM,EAAE,KAAI,IAC1D,qBAAqB,IAAI,eAAe,MAAM;AAChD,KAAI,sBAAsB,mBAAmB,aAAa,UAAU,CAClE,gCAA+B,KAAK,mBAA8B;AAEpE,KAAI,oBAAoB;AACtB,iBAAe,SAAS,SAAS;GAC/B,MAAM,QAAQ,mBAAmB,aAAa,KAAK;AACnD,OAAI,CAAC,SAAS,aAAa,KAAK,IAAI,MAClC,UAAS,aAAa,MAAM,MAAM;IAEpC;AACF,MAAI,CAAC,SAAS,SAAS,QAAQ;GAC7B,MAAM,iBAAiB,mBAAmB,UAAU,KAAK;AACzD,UAAO,eAAe,WACpB,UAAS,YAAY,eAAe,WAAW;;;AAIrD,UAAS,gBAAgB,UAAU"}