fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
2 lines • 1.34 kB
JavaScript
import{svgNS as e}from"./constants.min.mjs";import{parseStyleString as t}from"./parseStyleString.min.mjs";import{applyViewboxTransform as n}from"./applyViewboxTransform.min.mjs";import{getMultipleNodes as r}from"./getMultipleNodes.min.mjs";function i(i){let a=r(i,[`use`,`svg:use`]),o=[`x`,`y`,`xlink:href`,`href`,`transform`];for(let r of a){let a=r.attributes,s={};for(let e of a)e.value&&(s[e.name]=e.value);let c=(s[`xlink:href`]||s.href||``).slice(1);if(c===``)return;let l=i.getElementById(c);if(l===null)return;let u=l.cloneNode(!0),d=u.attributes,f={};for(let e of d)e.value&&(f[e.name]=e.value);let{x:p=0,y:m=0,transform:h=``}=s,g=`${h} ${f.transform||``} translate(${p}, ${m})`;if(n(u),/^svg$/i.test(u.nodeName)){let t=u.ownerDocument.createElementNS(e,`g`);Object.entries(f).forEach(([n,r])=>t.setAttributeNS(e,n,r)),t.append(...u.childNodes),u=t}for(let e of a){if(!e)continue;let{name:n,value:r}=e;if(!o.includes(n))if(n===`style`){let e={};t(r,e),Object.entries(f).forEach(([t,n])=>{e[t]=n}),t(f.style||``,e);let i=Object.entries(e).map(e=>e.join(`:`)).join(`;`);u.setAttribute(n,i)}else !f[n]&&u.setAttribute(n,r)}u.setAttribute(`transform`,g),u.setAttribute(`instantiated_by_use`,`1`),u.removeAttribute(`id`),r.parentNode.replaceChild(u,r)}}export{i as parseUseDirectives};
//# sourceMappingURL=parseUseDirectives.min.mjs.map