fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
3 lines (2 loc) • 2.59 kB
JavaScript
import{defineProperty as t}from"../_virtual/_rollupPluginBabelHelpers.min.mjs";import{classRegistry as e}from"./ClassRegistry.min.mjs";import{Color as o}from"./color/Color.min.mjs";import{config as s}from"./config.min.mjs";import{reNum as i}from"./parser/constants.min.mjs";import{Point as r}from"./Point.min.mjs";import{uid as n}from"./util/internals/uid.min.mjs";import{pickBy as f}from"./util/misc/pick.min.mjs";import{degreesToRadians as l}from"./util/misc/radiansDegreesConversion.min.mjs";import{toFixed as a}from"./util/misc/toFixed.min.mjs";import{rotateVector as m}from"./util/misc/vectors.min.mjs";const c="(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?",u=new RegExp("(?:\\s|^)"+c+c+"("+i+"?(?:px)?)?(?:\\s?|$)(?:$|\\s)"),h={color:"rgb(0,0,0)",blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1};class p{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e="string"==typeof t?p.parseShadow(t):t;Object.assign(this,p.ownDefaults,e),this.id=n()}static parseShadow(t){const e=t.trim(),[,o=0,s=0,i=0]=(u.exec(e)||[]).map(t=>parseFloat(t)||0);return{color:(e.replace(u,"")||"rgb(0,0,0)").trim(),offsetX:o,offsetY:s,blur:i}}toString(){return[this.offsetX,this.offsetY,this.blur,this.color].join("px ")}toSVG(t){const e=m(new r(this.offsetX,this.offsetY),l(-t.angle)),i=new o(this.color);let n=40,f=40;return t.width&&t.height&&(n=100*a((Math.abs(e.x)+this.blur)/t.width,s.NUM_FRACTION_DIGITS)+20,f=100*a((Math.abs(e.y)+this.blur)/t.height,s.NUM_FRACTION_DIGITS)+20),t.flipX&&(e.x*=-1),t.flipY&&(e.y*=-1),`<filter id="SVGID_${this.id}" y="-${f}%" height="${100+2*f}%" x="-${n}%" width="${100+2*n}%" >\n\t<feGaussianBlur in="SourceAlpha" stdDeviation="${a(this.blur?this.blur/2:0,s.NUM_FRACTION_DIGITS)}"></feGaussianBlur>\n\t<feOffset dx="${a(e.x,s.NUM_FRACTION_DIGITS)}" dy="${a(e.y,s.NUM_FRACTION_DIGITS)}" result="oBlur" ></feOffset>\n\t<feFlood flood-color="${i.toRgb()}" flood-opacity="${i.getAlpha()}"/>\n\t<feComposite in2="oBlur" operator="in" />\n\t<feMerge>\n\t\t<feMergeNode></feMergeNode>\n\t\t<feMergeNode in="SourceGraphic"></feMergeNode>\n\t</feMerge>\n</filter>\n`}toObject(){const t={color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling,type:this.constructor.type},e=p.ownDefaults;return this.includeDefaultValues?t:f(t,(t,o)=>t!==e[o])}static async fromObject(t){return new this(t)}}t(p,"ownDefaults",h),t(p,"type","shadow"),e.setClass(p,"shadow");export{p as Shadow,h as shadowDefaultValues};
//# sourceMappingURL=Shadow.min.mjs.map