UNPKG

fabric

Version:

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

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