UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

3 lines (2 loc) 3.07 kB
import{uid as t}from"../../util/internals/uid.min.mjs";import{colorPropToSVG as i}from"../../util/misc/svgParsing.min.mjs";import{NONE as s,FILL as r,STROKE as e}from"../../constants.min.mjs";import{isFiller as o}from"../../util/typeAssertions.min.mjs";import{matrixToSVG as h}from"../../util/misc/svgExport.min.mjs";import{escapeXml as n}from"../../util/lang_string.min.mjs";class a{getSvgStyles(t){const o=this.fillRule?this.fillRule:"nonzero",h=this.strokeWidth?this.strokeWidth:"0",a=this.strokeDashArray?this.strokeDashArray.join(" "):s,l=this.strokeDashOffset?this.strokeDashOffset:"0",m=this.strokeLineCap?this.strokeLineCap:"butt",p=this.strokeLineJoin?this.strokeLineJoin:"miter",d=this.strokeMiterLimit?this.strokeMiterLimit:"4",g=void 0!==this.opacity?this.opacity:"1",u=this.visible?"":" visibility: hidden;",c=t?"":this.getSvgFilter(),S=i(r,this.fill);return[i(e,this.stroke),"stroke-width: ",h,"; ","stroke-dasharray: ",a,"; ","stroke-linecap: ",m,"; ","stroke-dashoffset: ",l,"; ","stroke-linejoin: ",p,"; ","stroke-miterlimit: ",d,"; ",S,"fill-rule: ",o,"; ","opacity: ",g,";",c,u].map(t=>n(t)).join("")}getSvgFilter(){return this.shadow?`filter: url(#SVGID_${n(this.shadow.id)});`:""}getSvgCommons(){return[this.id?`id="${n(String(this.id))}" `:"",this.clipPath?`clip-path="url(#${this.clipPath.clipPathId})" `:""].join("")}getSvgTransform(t){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const s=t?this.calcTransformMatrix():this.calcOwnMatrix();return`${`transform="${h(s)}`}${i}" `}_toSVG(t){return[""]}toSVG(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})}toClipPathSVG(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})}_createBaseClipPathSVGMarkup(t){let{reviver:i,additionalTransform:s=""}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=[this.getSvgTransform(!0,s),this.getSvgCommons()].join(""),e=t.indexOf("COMMON_PARTS");return t[e]=r,i?i(t.join("")):t.join("")}_createBaseSVGMarkup(i){let{noStyle:s,reviver:r,withShadow:e,additionalTransform:h}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=s?"":`style="${this.getSvgStyles()}" `,a=e?`style="${this.getSvgFilter()}" `:"",l=this.clipPath,m=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",p=l&&l.absolutePositioned,d=this.stroke,g=this.fill,u=this.shadow,c=[],S=i.indexOf("COMMON_PARTS");let f;l&&(l.clipPathId=`CLIPPATH_${t()}`,f=`<clipPath id="${l.clipPathId}" >\n${l.toClipPathSVG(r)}</clipPath>\n`),p&&c.push("<g ",a,this.getSvgCommons()," >\n"),c.push("<g ",this.getSvgTransform(!1),p?"":a+this.getSvgCommons()," >\n");const v=[n,m,s?"":this.addPaintOrder()," ",h?`transform="${h}" `:""].join("");return i[S]=v,o(g)&&c.push(g.toSVG(this)),o(d)&&c.push(d.toSVG(this)),u&&c.push(u.toSVG(this)),l&&c.push(f),c.push(i.join("")),c.push("</g>\n"),p&&c.push("</g>\n"),r?r(c.join("")):c.join("")}addPaintOrder(){return this.paintFirst!==r?` paint-order="${n(this.paintFirst)}" `:""}}export{a as FabricObjectSVGExportMixin}; //# sourceMappingURL=FabricObjectSVGExportMixin.min.mjs.map