UNPKG

fabric

Version:

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

1 lines 2.66 kB
{"version":3,"file":"parseColorStops.min.mjs","names":[],"sources":["../../../../src/gradient/parser/parseColorStops.ts"],"sourcesContent":["import { Color } from '../../color/Color';\nimport { parsePercent } from '../../parser/percent';\nimport { ifNaN } from '../../util/internals/ifNaN';\nimport type { ColorStop } from '../typedefs';\n\nconst RE_KEY_VALUE_PAIRS = /\\s*;\\s*/;\nconst RE_KEY_VALUE = /\\s*:\\s*/;\n\nfunction parseColorStop(el: SVGStopElement, opacityMultiplier: number) {\n let colorValue, opacityValue;\n const style = el.getAttribute('style');\n if (style) {\n const keyValuePairs = style.split(RE_KEY_VALUE_PAIRS);\n\n if (keyValuePairs[keyValuePairs.length - 1] === '') {\n keyValuePairs.pop();\n }\n\n for (let i = keyValuePairs.length; i--; ) {\n const [key, value] = keyValuePairs[i]\n .split(RE_KEY_VALUE)\n .map((s) => s.trim());\n if (key === 'stop-color') {\n colorValue = value;\n } else if (key === 'stop-opacity') {\n opacityValue = value;\n }\n }\n }\n\n colorValue = colorValue || el.getAttribute('stop-color') || 'rgb(0,0,0)';\n opacityValue = ifNaN(\n parseFloat(opacityValue || el.getAttribute('stop-opacity') || ''),\n 1,\n );\n\n const color = new Color(colorValue);\n\n color.setAlpha(color.getAlpha() * opacityValue * opacityMultiplier);\n\n return {\n offset: parsePercent(el.getAttribute('offset'), 0),\n color: color.toRgba(),\n };\n}\n\nexport function parseColorStops(\n el: SVGGradientElement,\n opacityAttr: string | null,\n) {\n const colorStops: ColorStop[] = [],\n colorStopEls = el.getElementsByTagName('stop'),\n multiplier = parsePercent(opacityAttr, 1);\n for (let i = colorStopEls.length; i--; ) {\n colorStops.push(parseColorStop(colorStopEls[i], multiplier));\n }\n return colorStops;\n}\n"],"mappings":"yKAKA,MAAM,EAAqB,UACrB,EAAe,UAErB,SAAS,EAAe,EAAoB,EAAA,CAC1C,IAAI,EAAY,EACV,EAAQ,EAAG,aAAa,QAAA,CAC9B,GAAI,EAAO,CACT,IAAM,EAAgB,EAAM,MAAM,EAAA,CAE9B,EAAc,EAAc,OAAS,KAAO,IAC9C,EAAc,KAAA,CAGhB,IAAK,IAAI,EAAI,EAAc,OAAQ,KAAO,CACxC,GAAA,CAAO,EAAK,GAAS,EAAc,GAChC,MAAM,EAAA,CACN,IAAK,GAAM,EAAE,MAAA,CAAA,CACZ,IAAQ,aACV,EAAa,EACJ,IAAQ,iBACjB,EAAe,IAKrB,EAAa,GAAc,EAAG,aAAa,aAAA,EAAiB,aAC5D,EAAe,EACb,WAAW,GAAgB,EAAG,aAAa,eAAA,EAAmB,GAAA,CAC9D,EAAA,CAGF,IAAM,EAAQ,IAAI,EAAM,EAAA,CAIxB,OAFA,EAAM,SAAS,EAAM,UAAA,CAAa,EAAe,EAAA,CAE1C,CACL,OAAQ,EAAa,EAAG,aAAa,SAAA,CAAW,EAAA,CAChD,MAAO,EAAM,QAAA,CAAA,CAIjB,SAAgB,EACd,EACA,EAAA,CAEA,IAAM,EAA0B,EAAA,CAC9B,EAAe,EAAG,qBAAqB,OAAA,CACvC,EAAa,EAAa,EAAa,EAAA,CACzC,IAAK,IAAI,EAAI,EAAa,OAAQ,KAChC,EAAW,KAAK,EAAe,EAAa,GAAI,EAAA,CAAA,CAElD,OAAO,EAAA,OAAA,KAAA"}