mirror of
https://github.com/Sternenlabor/fabaccess-sticker-generator.git
synced 2025-03-12 06:51:41 +01:00
1 line
575 KiB
Plaintext
1 line
575 KiB
Plaintext
{"version":3,"file":"umd.js","sources":["../src/presets/offscreen.ts","../src/presets/node.ts","../src/util/string.ts","../src/util/styles.ts","../src/util/math.ts","../node_modules/performance-now/lib/performance-now.js","../node_modules/raf/index.js","../node_modules/rgbcolor/index.js","../src/Property.ts","../src/ViewPort.ts","../src/Point.ts","../src/Mouse.ts","../src/Screen.ts","../src/Parser.ts","../src/Transform/Translate.ts","../src/Transform/Rotate.ts","../src/Transform/Scale.ts","../src/Transform/Matrix.ts","../src/Transform/Skew.ts","../src/Transform/SkewX.ts","../src/Transform/SkewY.ts","../src/Transform/Transform.ts","../src/Document/Element.ts","../src/Document/UnknownElement.ts","../src/Font.ts","../src/BoundingBox.ts","../src/Document/RenderedElement.ts","../src/Document/TextElement.ts","../src/Document/TSpanElement.ts","../src/Document/TextNode.ts","../node_modules/svg-pathdata/lib/SVGPathData.module.js","../src/PathParser.ts","../src/Document/PathElement.ts","../src/Document/SVGElement.ts","../src/Document/RectElement.ts","../src/Document/CircleElement.ts","../src/Document/EllipseElement.ts","../src/Document/LineElement.ts","../src/Document/PolylineElement.ts","../src/Document/PolygonElement.ts","../src/Document/PatternElement.ts","../src/Document/MarkerElement.ts","../src/Document/DefsElement.ts","../src/Document/GElement.ts","../src/Document/GradientElement.ts","../src/Document/LinearGradientElement.ts","../src/Document/RadialGradientElement.ts","../src/Document/StopElement.ts","../src/Document/AnimateElement.ts","../src/Document/AnimateColorElement.ts","../src/Document/AnimateTransformElement.ts","../src/Document/FontFaceElement.ts","../src/Document/GlyphElement.ts","../src/Document/MissingGlyphElement.ts","../src/Document/FontElement.ts","../src/Document/TRefElement.ts","../src/Document/AElement.ts","../src/Document/TextPathElement.ts","../src/Document/ImageElement.ts","../src/Document/SymbolElement.ts","../src/SVGFontLoader.ts","../src/Document/StyleElement.ts","../src/Document/UseElement.ts","../src/Document/FeColorMatrixElement.ts","../src/Document/MaskElement.ts","../src/Document/ClipPathElement.ts","../src/Document/FilterElement.ts","../src/Document/FeDropShadowElement.ts","../src/Document/FeMorphologyElement.ts","../src/Document/FeCompositeElement.ts","../node_modules/stackblur-canvas/dist/stackblur-es.js","../src/Document/FeGaussianBlurElement.ts","../src/Document/TitleElement.ts","../src/Document/DescElement.ts","../src/Document/elements.ts","../src/Document/Document.ts","../src/Canvg.ts"],"sourcesContent":["import { DOMParser } from './types'\n\ninterface IConfig {\n /**\n * XML/HTML parser from string into DOM Document.\n */\n DOMParser?: DOMParser\n}\n\n/**\n * Options preset for `OffscreenCanvas`.\n * @param config - Preset requirements.\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\n * @returns Preset object.\n */\nexport function offscreen({ DOMParser: DOMParserFallback }: IConfig = {}) {\n const preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n createCanvas(width: number, height: number) {\n return new OffscreenCanvas(width, height)\n },\n async createImage(url: string) {\n const response = await fetch(url)\n const blob = await response.blob()\n const img = await createImageBitmap(blob)\n\n return img\n }\n }\n\n if (typeof globalThis.DOMParser !== 'undefined'\n || typeof DOMParserFallback === 'undefined'\n ) {\n Reflect.deleteProperty(preset, 'DOMParser')\n }\n\n return preset\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DOMParser } from './types'\n\n/**\n * `node-canvas` exports.\n */\ninterface ICanvas {\n createCanvas(width: number, height: number): any\n loadImage(src: string): Promise<any>\n}\n\n/**\n * WHATWG-compatible `fetch` function.\n */\ntype Fetch = (input: any, config?: any) => Promise<any>\n\ninterface IConfig {\n /**\n * XML/HTML parser from string into DOM Document.\n */\n DOMParser: DOMParser\n /**\n * `node-canvas` exports.\n */\n canvas: ICanvas\n /**\n * WHATWG-compatible `fetch` function.\n */\n fetch: Fetch\n}\n\n/**\n * Options preset for `node-canvas`.\n * @param config - Preset requirements.\n * @param config.DOMParser - XML/HTML parser from string into DOM Document.\n * @param config.canvas - `node-canvas` exports.\n * @param config.fetch - WHATWG-compatible `fetch` function.\n * @returns Preset object.\n */\nexport function node({\n DOMParser,\n canvas,\n fetch\n}: IConfig) {\n return {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser,\n fetch,\n createCanvas: canvas.createCanvas,\n createImage: canvas.loadImage\n }\n}\n","import { MatrixValue } from '../types'\n\n/**\n * HTML-safe compress white-spaces.\n * @param str - String to compress.\n * @returns String.\n */\nexport function compressSpaces(str: string) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ')\n}\n\n/**\n * HTML-safe left trim.\n * @param str - String to trim.\n * @returns String.\n */\nexport function trimLeft(str: string) {\n return str.replace(/^[\\n \\t]+/, '')\n}\n\n/**\n * HTML-safe right trim.\n * @param str - String to trim.\n * @returns String.\n */\nexport function trimRight(str: string) {\n return str.replace(/[\\n \\t]+$/, '')\n}\n\n/**\n * String to numbers array.\n * @param str - Numbers string.\n * @returns Numbers array.\n */\nexport function toNumbers(str: string) {\n const matches = str.match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm)\n\n return matches ? matches.map(parseFloat) : []\n}\n\n/**\n * String to matrix value.\n * @param str - Numbers string.\n * @returns Matrix value.\n */\nexport function toMatrixValue(str: string): MatrixValue {\n const numbers = toNumbers(str)\n const matrix = [\n numbers[0] || 0,\n numbers[1] || 0,\n numbers[2] || 0,\n numbers[3] || 0,\n numbers[4] || 0,\n numbers[5] || 0\n ] as const\n\n return matrix\n}\n\n// Microsoft Edge fix\nconst allUppercase = /^[A-Z-]+$/\n\n/**\n * Normalize attribute name.\n * @param name - Attribute name.\n * @returns Normalized attribute name.\n */\nexport function normalizeAttributeName(name: string) {\n if (allUppercase.test(name)) {\n return name.toLowerCase()\n }\n\n return name\n}\n\n/**\n * Parse external URL.\n * @param url - CSS url string.\n * @returns Parsed URL.\n */\nexport function parseExternalUrl(url: string): string {\n // single quotes [2]\n // v double quotes [3]\n // v v no quotes [4]\n // v v v\n const urlMatch = /url\\(('([^']+)'|\"([^\"]+)\"|([^'\")]+))\\)/.exec(url)\n\n if (!urlMatch) {\n return ''\n }\n\n return urlMatch[2] || urlMatch[3] || urlMatch[4] || ''\n}\n\n/**\n * Transform floats to integers in rgb colors.\n * @param color - Color to normalize.\n * @returns Normalized color.\n */\nexport function normalizeColor(color: string) {\n if (!color.startsWith('rgb')) {\n return color\n }\n\n let rgbParts = 3\n const normalizedColor = color.replace(\n /\\d+(\\.\\d+)?/g,\n (num, isFloat) => (rgbParts-- && isFloat\n ? String(Math.round(parseFloat(num)))\n : num)\n )\n\n return normalizedColor\n}\n","\n// slightly modified version of https://github.com/keeganstreet/specificity/blob/master/specificity.js\nconst attributeRegex = /(\\[[^\\]]+\\])/g\nconst idRegex = /(#[^\\s+>~.[:]+)/g\nconst classRegex = /(\\.[^\\s+>~.[:]+)/g\nconst pseudoElementRegex = /(::[^\\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi\nconst pseudoClassWithBracketsRegex = /(:[\\w-]+\\([^)]*\\))/gi\nconst pseudoClassRegex = /(:[^\\s+>~.[:]+)/g\nconst elementRegex = /([^\\s+>~.[:]+)/g\n\nfunction findSelectorMatch(selector: string, regex: RegExp): [string, number] {\n const matches = regex.exec(selector)\n\n if (!matches) {\n return [selector, 0]\n }\n\n return [selector.replace(regex, ' '), matches.length]\n}\n\n/**\n * Measure selector specificity.\n * @param selector - Selector to measure.\n * @returns Specificity.\n */\nexport function getSelectorSpecificity(selector: string) {\n const specificity = [\n 0,\n 0,\n 0\n ]\n let currentSelector = selector\n .replace(/:not\\(([^)]*)\\)/g, ' $1 ')\n .replace(/{[\\s\\S]*/gm, ' ')\n let delta = 0;\n\n [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex)\n specificity[1] += delta;\n\n [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex)\n specificity[0] += delta;\n\n [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex)\n specificity[1] += delta;\n\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex)\n specificity[2] += delta;\n\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex)\n specificity[1] += delta;\n\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex)\n specificity[1] += delta\n\n currentSelector = currentSelector\n .replace(/[*\\s+>~]/g, ' ')\n .replace(/[#.]/g, ' ');\n\n [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex) // lgtm [js/useless-assignment-to-local]\n specificity[2] += delta\n\n return specificity.join('')\n}\n","import { VectorValue } from '../types'\n\nexport const PSEUDO_ZERO = .00000001\n\n/**\n * Vector magnitude.\n * @param v\n * @returns Number result.\n */\nexport function vectorMagnitude(v: VectorValue) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2))\n}\n\n/**\n * Ratio between two vectors.\n * @param u\n * @param v\n * @returns Number result.\n */\nexport function vectorsRatio(u: VectorValue, v: VectorValue) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v))\n}\n\n/**\n * Angle between two vectors.\n * @param u\n * @param v\n * @returns Number result.\n */\nexport function vectorsAngle(u: VectorValue, v: VectorValue) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v))\n}\n\nexport function CB1(t: number) {\n return t * t * t\n}\n\nexport function CB2(t: number) {\n return 3 * t * t * (1 - t)\n}\n\nexport function CB3(t: number) {\n return 3 * t * (1 - t) * (1 - t)\n}\n\nexport function CB4(t: number) {\n return (1 - t) * (1 - t) * (1 - t)\n}\n\nexport function QB1(t: number) {\n return t * t\n}\n\nexport function QB2(t: number) {\n return 2 * t * (1 - t)\n}\n\nexport function QB3(t: number) {\n return (1 - t) * (1 - t)\n}\n","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","/*\n\tBased on rgbcolor.js by Stoyan Stefanov <sstoo@gmail.com>\n\thttp://www.phpied.com/rgb-color-parser-in-javascript/\n*/\n\nmodule.exports = function(color_string) {\n this.ok = false;\n this.alpha = 1.0;\n\n // strip any leading #\n if (color_string.charAt(0) == '#') { // remove # if any\n color_string = color_string.substr(1,6);\n }\n\n color_string = color_string.replace(/ /g,'');\n color_string = color_string.toLowerCase();\n\n // before getting into regexps, try simple matches\n // and overwrite the input\n var simple_colors = {\n aliceblue: 'f0f8ff',\n antiquewhite: 'faebd7',\n aqua: '00ffff',\n aquamarine: '7fffd4',\n azure: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '000000',\n blanchedalmond: 'ffebcd',\n blue: '0000ff',\n blueviolet: '8a2be2',\n brown: 'a52a2a',\n burlywood: 'deb887',\n cadetblue: '5f9ea0',\n chartreuse: '7fff00',\n chocolate: 'd2691e',\n coral: 'ff7f50',\n cornflowerblue: '6495ed',\n cornsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: '00ffff',\n darkblue: '00008b',\n darkcyan: '008b8b',\n darkgoldenrod: 'b8860b',\n darkgray: 'a9a9a9',\n darkgreen: '006400',\n darkkhaki: 'bdb76b',\n darkmagenta: '8b008b',\n darkolivegreen: '556b2f',\n darkorange: 'ff8c00',\n darkorchid: '9932cc',\n darkred: '8b0000',\n darksalmon: 'e9967a',\n darkseagreen: '8fbc8f',\n darkslateblue: '483d8b',\n darkslategray: '2f4f4f',\n darkturquoise: '00ced1',\n darkviolet: '9400d3',\n deeppink: 'ff1493',\n deepskyblue: '00bfff',\n dimgray: '696969',\n dodgerblue: '1e90ff',\n feldspar: 'd19275',\n firebrick: 'b22222',\n floralwhite: 'fffaf0',\n forestgreen: '228b22',\n fuchsia: 'ff00ff',\n gainsboro: 'dcdcdc',\n ghostwhite: 'f8f8ff',\n gold: 'ffd700',\n goldenrod: 'daa520',\n gray: '808080',\n green: '008000',\n greenyellow: 'adff2f',\n honeydew: 'f0fff0',\n hotpink: 'ff69b4',\n indianred : 'cd5c5c',\n indigo : '4b0082',\n ivory: 'fffff0',\n khaki: 'f0e68c',\n lavender: 'e6e6fa',\n lavenderblush: 'fff0f5',\n lawngreen: '7cfc00',\n lemonchiffon: 'fffacd',\n lightblue: 'add8e6',\n lightcoral: 'f08080',\n lightcyan: 'e0ffff',\n lightgoldenrodyellow: 'fafad2',\n lightgrey: 'd3d3d3',\n lightgreen: '90ee90',\n lightpink: 'ffb6c1',\n lightsalmon: 'ffa07a',\n lightseagreen: '20b2aa',\n lightskyblue: '87cefa',\n lightslateblue: '8470ff',\n lightslategray: '778899',\n lightsteelblue: 'b0c4de',\n lightyellow: 'ffffe0',\n lime: '00ff00',\n limegreen: '32cd32',\n linen: 'faf0e6',\n magenta: 'ff00ff',\n maroon: '800000',\n mediumaquamarine: '66cdaa',\n mediumblue: '0000cd',\n mediumorchid: 'ba55d3',\n mediumpurple: '9370d8',\n mediumseagreen: '3cb371',\n mediumslateblue: '7b68ee',\n mediumspringgreen: '00fa9a',\n mediumturquoise: '48d1cc',\n mediumvioletred: 'c71585',\n midnightblue: '191970',\n mintcream: 'f5fffa',\n mistyrose: 'ffe4e1',\n moccasin: 'ffe4b5',\n navajowhite: 'ffdead',\n navy: '000080',\n oldlace: 'fdf5e6',\n olive: '808000',\n olivedrab: '6b8e23',\n orange: 'ffa500',\n orangered: 'ff4500',\n orchid: 'da70d6',\n palegoldenrod: 'eee8aa',\n palegreen: '98fb98',\n paleturquoise: 'afeeee',\n palevioletred: 'd87093',\n papayawhip: 'ffefd5',\n peachpuff: 'ffdab9',\n peru: 'cd853f',\n pink: 'ffc0cb',\n plum: 'dda0dd',\n powderblue: 'b0e0e6',\n purple: '800080',\n rebeccapurple: '663399',\n red: 'ff0000',\n rosybrown: 'bc8f8f',\n royalblue: '4169e1',\n saddlebrown: '8b4513',\n salmon: 'fa8072',\n sandybrown: 'f4a460',\n seagreen: '2e8b57',\n seashell: 'fff5ee',\n sienna: 'a0522d',\n silver: 'c0c0c0',\n skyblue: '87ceeb',\n slateblue: '6a5acd',\n slategray: '708090',\n snow: 'fffafa',\n springgreen: '00ff7f',\n steelblue: '4682b4',\n tan: 'd2b48c',\n teal: '008080',\n thistle: 'd8bfd8',\n tomato: 'ff6347',\n turquoise: '40e0d0',\n violet: 'ee82ee',\n violetred: 'd02090',\n wheat: 'f5deb3',\n white: 'ffffff',\n whitesmoke: 'f5f5f5',\n yellow: 'ffff00',\n yellowgreen: '9acd32'\n };\n color_string = simple_colors[color_string] || color_string;\n // emd of simple type-in colors\n\n // array of color definition objects\n var color_defs = [\n {\n re: /^rgba\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3}),\\s*((?:\\d?\\.)?\\d)\\)$/,\n example: ['rgba(123, 234, 45, 0.8)', 'rgba(255,234,245,1.0)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3]),\n parseFloat(bits[4])\n ];\n }\n },\n {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n example: ['rgb(123, 234, 45)', 'rgb(255,234,245)'],\n process: function (bits){\n return [\n parseInt(bits[1]),\n parseInt(bits[2]),\n parseInt(bits[3])\n ];\n }\n },\n {\n re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n example: ['#00ff00', '336699'],\n process: function (bits){\n return [\n parseInt(bits[1], 16),\n parseInt(bits[2], 16),\n parseInt(bits[3], 16)\n ];\n }\n },\n {\n re: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n example: ['#fb0', 'f0f'],\n process: function (bits){\n return [\n parseInt(bits[1] + bits[1], 16),\n parseInt(bits[2] + bits[2], 16),\n parseInt(bits[3] + bits[3], 16)\n ];\n }\n }\n ];\n\n // search through the definitions to find a match\n for (var i = 0; i < color_defs.length; i++) {\n var re = color_defs[i].re;\n var processor = color_defs[i].process;\n var bits = re.exec(color_string);\n if (bits) {\n var channels = processor(bits);\n this.r = channels[0];\n this.g = channels[1];\n this.b = channels[2];\n if (channels.length > 3) {\n this.alpha = channels[3];\n }\n this.ok = true;\n }\n\n }\n\n // validate/cleanup values\n this.r = (this.r < 0 || isNaN(this.r)) ? 0 : ((this.r > 255) ? 255 : this.r);\n this.g = (this.g < 0 || isNaN(this.g)) ? 0 : ((this.g > 255) ? 255 : this.g);\n this.b = (this.b < 0 || isNaN(this.b)) ? 0 : ((this.b > 255) ? 255 : this.b);\n this.alpha = (this.alpha < 0) ? 0 : ((this.alpha > 1.0 || isNaN(this.alpha)) ? 1.0 : this.alpha);\n\n // some getters\n this.toRGB = function () {\n return 'rgb(' + this.r + ', ' + this.g + ', ' + this.b + ')';\n }\n this.toRGBA = function () {\n return 'rgba(' + this.r + ', ' + this.g + ', ' + this.b + ', ' + this.alpha + ')';\n }\n this.toHex = function () {\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n if (r.length == 1) r = '0' + r;\n if (g.length == 1) g = '0' + g;\n if (b.length == 1) b = '0' + b;\n return '#' + r + g + b;\n }\n\n // help\n this.getHelpXML = function () {\n\n var examples = new Array();\n // add regexps\n for (var i = 0; i < color_defs.length; i++) {\n var example = color_defs[i].example;\n for (var j = 0; j < example.length; j++) {\n examples[examples.length] = example[j];\n }\n }\n // add type-in colors\n for (var sc in simple_colors) {\n examples[examples.length] = sc;\n }\n\n var xml = document.createElement('ul');\n xml.setAttribute('id', 'rgbcolor-examples');\n for (var i = 0; i < examples.length; i++) {\n try {\n var list_item = document.createElement('li');\n var list_color = new RGBColor(examples[i]);\n var example_div = document.createElement('div');\n example_div.style.cssText =\n 'margin: 3px; '\n + 'border: 1px solid black; '\n + 'background:' + list_color.toHex() + '; '\n + 'color:' + list_color.toHex()\n ;\n example_div.appendChild(document.createTextNode('test'));\n var list_item_value = document.createTextNode(\n ' ' + examples[i] + ' -> ' + list_color.toRGB() + ' -> ' + list_color.toHex()\n );\n list_item.appendChild(example_div);\n list_item.appendChild(list_item_value);\n xml.appendChild(list_item);\n\n } catch(e){}\n }\n return xml;\n\n }\n\n}\n","import RGBColor from 'rgbcolor'\nimport {\n compressSpaces,\n normalizeColor\n} from './util'\nimport { Axis } from './ViewPort'\nimport {\n Document,\n Element,\n PathElement,\n PatternElement,\n GradientElement\n} from './Document'\n\nexport class Property<T = unknown> {\n static empty(document: Document) {\n return new Property(document, 'EMPTY', '')\n }\n\n static readonly textBaselineMapping: Record<string, string> = {\n 'baseline': 'alphabetic',\n 'before-edge': 'top',\n 'text-before-edge': 'top',\n 'middle': 'middle',\n 'central': 'middle',\n 'after-edge': 'bottom',\n 'text-after-edge': 'bottom',\n 'ideographic': 'ideographic',\n 'alphabetic': 'alphabetic',\n 'hanging': 'hanging',\n 'mathematical': 'alphabetic'\n }\n\n private isNormalizedColor = false\n\n constructor(\n private readonly document: Document,\n private readonly name: string,\n private value: T\n ) {}\n\n split(separator = ' ') {\n const {\n document,\n name\n } = this\n\n return compressSpaces(this.getString())\n .trim()\n .split(separator)\n .map(value => new Property<string>(document, name, value))\n }\n\n hasValue(zeroIsValue?: boolean) {\n const value = this.value as unknown\n\n return value !== null\n && value !== ''\n && (zeroIsValue || value !== 0)\n && typeof value !== 'undefined'\n }\n\n isString(regexp?: RegExp) {\n const { value } = this\n const result = typeof value === 'string'\n\n if (!result || !regexp) {\n return result\n }\n\n return regexp.test(value)\n }\n\n isUrlDefinition() {\n return this.isString(/^url\\(/)\n }\n\n isPixels() {\n if (!this.hasValue()) {\n return false\n }\n\n const asString = this.getString()\n\n switch (true) {\n case asString.endsWith('px'):\n case /^[0-9]+$/.test(asString):\n return true\n\n default:\n return false\n }\n }\n\n setValue(value: T) {\n this.value = value\n return this\n }\n\n getValue(def?: T) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value\n }\n\n return def\n }\n\n getNumber(def?: T) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0\n }\n\n // @ts-expect-error Parse unknown value.\n return parseFloat(def)\n }\n\n const { value } = this\n // @ts-expect-error Parse unknown value.\n let n = parseFloat(value)\n\n if (this.isString(/%$/)) {\n n /= 100.0\n }\n\n return n\n }\n\n getString(def?: T) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined'\n ? ''\n : String(this.value)\n }\n\n return String(def)\n }\n\n getColor(def?: T) {\n let color = this.getString(def)\n\n if (this.isNormalizedColor) {\n return color\n }\n\n this.isNormalizedColor = true\n color = normalizeColor(color)\n this.value = color as unknown as T\n\n return color\n }\n\n getDpi() {\n return 96.0 // TODO: compute?\n }\n\n getRem() {\n return this.document.rootEmSize\n }\n\n getEm() {\n return this.document.emSize\n }\n\n getUnits() {\n return this.getString().replace(/[0-9.-]/g, '')\n }\n\n getPixels(axis?: Axis, processPercent?: boolean): number\n getPixels(isFontSize?: boolean): number\n getPixels(axisOrIsFontSize?: Axis | boolean, processPercent = false): number {\n if (!this.hasValue()) {\n return 0\n }\n\n const [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean'\n ? [undefined, axisOrIsFontSize]\n : [axisOrIsFontSize]\n const { viewPort } = this.document.screen\n\n switch (true) {\n case this.isString(/vmin$/):\n return this.getNumber()\n / 100.0\n * Math.min(\n viewPort.computeSize('x'),\n viewPort.computeSize('y')\n )\n\n case this.isString(/vmax$/):\n return this.getNumber()\n / 100.0\n * Math.max(\n viewPort.computeSize('x'),\n viewPort.computeSize('y')\n )\n\n case this.isString(/vw$/):\n return this.getNumber()\n / 100.0\n * viewPort.computeSize('x')\n\n case this.isString(/vh$/):\n return this.getNumber()\n / 100.0\n * viewPort.computeSize('y')\n\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem(/* viewPort */)\n\n case this.isString(/em$/):\n return this.getNumber() * this.getEm(/* viewPort */)\n\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm(/* viewPort */) / 2.0\n\n case this.isString(/px$/):\n return this.getNumber()\n\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi(/* viewPort */) * (1.0 / 72.0)\n\n case this.isString(/pc$/):\n return this.getNumber() * 15\n\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi(/* viewPort */) / 2.54\n\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi(/* viewPort */) / 25.4\n\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi(/* viewPort */)\n\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm(/* viewPort */)\n\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis)\n\n default: {\n const n = this.getNumber()\n\n if (processPercent && n < 1.0) {\n return n * viewPort.computeSize(axis)\n }\n\n return n\n }\n }\n }\n\n getMilliseconds() {\n if (!this.hasValue()) {\n return 0\n }\n\n if (this.isString(/ms$/)) {\n return this.getNumber()\n }\n\n return this.getNumber() * 1000\n }\n\n getRadians() {\n if (!this.hasValue()) {\n return 0\n }\n\n switch (true) {\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180.0)\n\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200.0)\n\n case this.isString(/rad$/):\n return this.getNumber()\n\n default:\n return this.getNumber() * (Math.PI / 180.0)\n }\n }\n\n getDefinition<T extends Element>() {\n const asString = this.getString()\n const match = /#([^)'\"]+)/.exec(asString)\n const name = match?.[1] || asString\n\n return this.document.definitions[name] as T | undefined\n }\n\n getFillStyleDefinition(element: Element | PathElement, opacity: Property) {\n let def = this.getDefinition<PatternElement & GradientElement>()\n\n if (!def) {\n return null\n }\n\n // gradient\n if (typeof def.createGradient === 'function' && 'getBoundingBox' in element) {\n return def.createGradient(\n this.document.ctx,\n element,\n opacity\n )\n }\n\n // pattern\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n const patternTransform = def.getAttribute('patternTransform')\n\n def = def.getHrefAttribute().getDefinition()\n\n if (def && patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value)\n }\n }\n\n if (def) {\n return def.createPattern(this.document.ctx, element, opacity)\n }\n }\n\n return null\n }\n\n getTextBaseline() {\n if (!this.hasValue()) {\n return null\n }\n\n const key = this.getString()\n\n return Property.textBaselineMapping[key] || null\n }\n\n addOpacity(opacity: Property) {\n let value = this.getColor()\n const len = value.length\n let commas = 0\n\n // Simulate old RGBColor version, which can't parse rgba.\n for (let i = 0; i < len; i++) {\n if (value[i] === ',') {\n commas++\n }\n\n if (commas === 3) {\n break\n }\n }\n\n if (opacity.hasValue() && this.isString() && commas !== 3) {\n const color = new RGBColor(value)\n\n if (color.ok) {\n color.alpha = opacity.getNumber()\n value = color.toRGBA()\n }\n }\n\n return new Property<string>(this.document, this.name, value)\n }\n}\n","\nexport interface IViewPortSize {\n width: number\n height: number\n}\n\nexport type Axis = 'x' | 'y'\n\nexport class ViewPort {\n static DEFAULT_VIEWPORT_WIDTH = 800\n static DEFAULT_VIEWPORT_HEIGHT = 600\n\n viewPorts: IViewPortSize[] = []\n\n clear() {\n this.viewPorts = []\n }\n\n setCurrent(width: number, height: number) {\n this.viewPorts.push({\n width,\n height\n })\n }\n\n removeCurrent() {\n this.viewPorts.pop()\n }\n\n getRoot() {\n const [root] = this.viewPorts\n\n if (!root) {\n return getDefault()\n }\n\n return root\n }\n\n getCurrent() {\n const { viewPorts } = this\n const current = viewPorts[viewPorts.length - 1]\n\n if (!current) {\n return getDefault()\n }\n\n return current\n }\n\n get width() {\n return this.getCurrent().width\n }\n\n get height() {\n return this.getCurrent().height\n }\n\n computeSize(d?: number|Axis) {\n if (typeof d === 'number') {\n return d\n }\n\n if (d === 'x') {\n return this.width\n }\n\n if (d === 'y') {\n return this.height\n }\n\n return Math.sqrt(\n Math.pow(this.width, 2) + Math.pow(this.height, 2)\n ) / Math.sqrt(2)\n }\n}\n\nfunction getDefault() {\n return {\n width: ViewPort.DEFAULT_VIEWPORT_WIDTH,\n height: ViewPort.DEFAULT_VIEWPORT_HEIGHT\n }\n}\n","import { MatrixValue } from './types'\nimport { toNumbers } from './util'\n\nexport class Point {\n static parse(point: string, defaultValue = 0) {\n const [x = defaultValue, y = defaultValue] = toNumbers(point)\n\n return new Point(x, y)\n }\n\n static parseScale(scale: string, defaultValue = 1) {\n const [x = defaultValue, y = x] = toNumbers(scale)\n\n return new Point(x, y)\n }\n\n static parsePath(path: string) {\n const points = toNumbers(path)\n const len = points.length\n const pathPoints: Point[] = []\n\n for (let i = 0; i < len; i += 2) {\n pathPoints.push(new Point(points[i], points[i + 1]))\n }\n\n return pathPoints\n }\n\n constructor(\n public x: number,\n public y: number\n ) {}\n\n angleTo(point: Point) {\n return Math.atan2(point.y - this.y, point.x - this.x)\n }\n\n applyTransform(transform: MatrixValue) {\n const {\n x,\n y\n } = this\n const xp = x * transform[0] + y * transform[2] + transform[4]\n const yp = x * transform[1] + y * transform[3] + transform[5]\n\n this.x = xp\n this.y = yp\n }\n}\n","import { RenderingContext2D } from './types'\nimport { BoundingBox } from './BoundingBox'\nimport { Point } from './Point'\nimport { Screen } from './Screen'\nimport { Element } from './Document'\n\ninterface IEventTarget {\n onClick?(): void\n onMouseMove?(): void\n}\n\nexport interface IEvent {\n type: string\n x: number\n y: number\n run(eventTarget: IEventTarget): void\n}\n\nexport class Mouse {\n private working = false\n private events: IEvent[] = []\n private eventElements: Element[] = []\n\n constructor(\n private readonly screen: Screen\n ) {\n this.onClick = this.onClick.bind(this)\n this.onMouseMove = this.onMouseMove.bind(this)\n }\n\n isWorking() {\n return this.working\n }\n\n start() {\n if (this.working) {\n return\n }\n\n const {\n screen,\n onClick,\n onMouseMove\n } = this\n const canvas = screen.ctx.canvas as HTMLCanvasElement\n\n canvas.onclick = onClick\n canvas.onmousemove = onMouseMove\n this.working = true\n }\n\n stop() {\n if (!this.working) {\n return\n }\n\n const canvas = this.screen.ctx.canvas as HTMLCanvasElement\n\n this.working = false\n canvas.onclick = null\n canvas.onmousemove = null\n }\n\n hasEvents() {\n return this.working && this.events.length > 0\n }\n\n runEvents() {\n if (!this.working) {\n return\n }\n\n const {\n screen: document,\n events,\n eventElements\n } = this\n const { style } = document.ctx.canvas as HTMLCanvasElement\n let element: Element | null | undefined\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (style) {\n style.cursor = ''\n }\n\n events.forEach(({ run }, i) => {\n element = eventElements[i]\n\n while (element) {\n run(element as IEventTarget)\n element = element.parent\n }\n })\n\n // done running, clear\n this.events = []\n this.eventElements = []\n }\n\n checkPath(element: Element, ctx: RenderingContext2D | null) {\n if (!this.working || !ctx) {\n return\n }\n\n const {\n events,\n eventElements\n } = this\n\n events.forEach(({ x, y }, i) => {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!eventElements[i] && ctx.isPointInPath && ctx.isPointInPath(x, y)) {\n eventElements[i] = element\n }\n })\n }\n\n checkBoundingBox(element: Element, boundingBox: BoundingBox | null) {\n if (!this.working || !boundingBox) {\n return\n }\n\n const {\n events,\n eventElements\n } = this\n\n events.forEach(({ x, y }, i) => {\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element\n }\n })\n }\n\n private mapXY(x: number, y: number) {\n const {\n window,\n ctx\n } = this.screen\n const point = new Point(x, y)\n let element = ctx.canvas as HTMLElement | null\n\n while (element) {\n point.x -= element.offsetLeft\n point.y -= element.offsetTop\n element = element.offsetParent as HTMLElement | null\n }\n\n if (window?.scrollX) {\n point.x += window.scrollX\n }\n\n if (window?.scrollY) {\n point.y += window.scrollY\n }\n\n return point\n }\n\n private onClick(event: MouseEvent) {\n const {\n x,\n y\n } = this.mapXY(\n event.clientX,\n event.clientY\n )\n\n this.events.push({\n type: 'onclick',\n x,\n y,\n run(eventTarget) {\n if (eventTarget.onClick) {\n eventTarget.onClick()\n }\n }\n })\n }\n\n private onMouseMove(event: MouseEvent) {\n const {\n x,\n y\n } = this.mapXY(\n event.clientX,\n event.clientY\n )\n\n this.events.push({\n type: 'onmousemove',\n x,\n y,\n run(eventTarget) {\n if (eventTarget.onMouseMove) {\n eventTarget.onMouseMove()\n }\n }\n })\n }\n}\n","import requestAnimationFrame from 'raf'\nimport {\n RenderingContext2D,\n Fetch\n} from './types'\nimport {\n compressSpaces,\n toNumbers\n} from './util'\nimport { Property } from './Property'\nimport { ViewPort } from './ViewPort'\nimport { Mouse } from './Mouse'\nimport {\n Document,\n Element,\n AnimateElement\n} from './Document'\n\nexport interface IScreenOptions {\n /**\n * Window object.\n */\n window?: Window | null\n /**\n * WHATWG-compatible `fetch` function.\n */\n fetch?: Fetch\n}\n\nexport interface IScreenStartOptions {\n /**\n * Whether enable the redraw.\n */\n enableRedraw?: boolean\n /**\n * Ignore mouse events.\n */\n ignoreMouse?: boolean\n /**\n * Ignore animations.\n */\n ignoreAnimation?: boolean\n /**\n * Does not try to resize canvas.\n */\n ignoreDimensions?: boolean\n /**\n * Does not clear canvas.\n */\n ignoreClear?: boolean\n /**\n * Scales horizontally to width.\n */\n scaleWidth?: number\n /**\n * Scales vertically to height.\n */\n scaleHeight?: number\n /**\n * Draws at a x offset.\n */\n offsetX?: number\n /**\n * Draws at a y offset.\n */\n offsetY?: number\n /**\n * Will call the function on every frame, if it returns true, will redraw.\n */\n forceRedraw?(): boolean\n}\n\nexport interface IScreenViewBoxConfig {\n document: Document\n ctx: RenderingContext2D\n aspectRatio: string\n width: number\n desiredWidth: number\n height: number\n desiredHeight: number\n minX?: number\n minY?: number\n refX?: number\n refY?: number\n clip?: boolean\n clipX?: number\n clipY?: number\n}\n\nconst defaultWindow = typeof window !== 'undefined'\n ? window\n : null\nconst defaultFetch = typeof fetch !== 'undefined'\n ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n : undefined\n\nexport class Screen {\n static readonly defaultWindow = defaultWindow\n static readonly defaultFetch = defaultFetch\n static FRAMERATE = 30\n static MAX_VIRTUAL_PIXELS = 30000\n\n readonly window: Window | null\n readonly fetch: Fetch\n readonly viewPort = new ViewPort()\n readonly mouse = new Mouse(this)\n readonly animations: AnimateElement[] = []\n private readyPromise: Promise<void> | undefined\n private resolveReady: (() => void) | undefined\n private waits: (() => boolean)[] = []\n private frameDuration = 0\n private isReadyLock = false\n private isFirstRender = true\n private intervalId: number | null = null\n\n constructor(\n readonly ctx: RenderingContext2D,\n {\n fetch = defaultFetch,\n window = defaultWindow\n }: IScreenOptions = {}\n ) {\n this.window = window\n\n if (!fetch) {\n throw new Error(`Can't find 'fetch' in 'globalThis', please provide it via options`)\n }\n\n this.fetch = fetch\n }\n\n wait(checker: () => boolean) {\n this.waits.push(checker)\n }\n\n ready() {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.readyPromise) {\n return Promise.resolve()\n }\n\n return this.readyPromise\n }\n\n isReady() {\n if (this.isReadyLock) {\n return true\n }\n\n const isReadyLock = this.waits.every(_ => _())\n\n if (isReadyLock) {\n this.waits = []\n\n if (this.resolveReady) {\n this.resolveReady()\n }\n }\n\n this.isReadyLock = isReadyLock\n\n return isReadyLock\n }\n\n setDefaults(ctx: RenderingContext2D) {\n // initial values and defaults\n ctx.strokeStyle = 'rgba(0,0,0,0)'\n ctx.lineCap = 'butt'\n ctx.lineJoin = 'miter'\n ctx.miterLimit = 4\n }\n\n setViewBox({\n document,\n ctx,\n aspectRatio,\n width,\n desiredWidth,\n height,\n desiredHeight,\n minX = 0,\n minY = 0,\n refX,\n refY,\n clip = false,\n clipX = 0,\n clipY = 0\n }: IScreenViewBoxConfig) {\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n const cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, '') // ignore defer\n const [aspectRatioAlign, aspectRatioMeetOrSlice] = cleanAspectRatio.split(' ')\n const align = aspectRatioAlign || 'xMidYMid'\n const meetOrSlice = aspectRatioMeetOrSlice || 'meet'\n // calculate scale\n const scaleX = width / desiredWidth\n const scaleY = height / desiredHeight\n const scaleMin = Math.min(scaleX, scaleY)\n const scaleMax = Math.max(scaleX, scaleY)\n let finalDesiredWidth = desiredWidth\n let finalDesiredHeight = desiredHeight\n\n if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin\n finalDesiredHeight *= scaleMin\n }\n\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax\n finalDesiredHeight *= scaleMax\n }\n\n const refXProp = new Property(document, 'refX', refX)\n const refYProp = new Property(document, 'refY', refY)\n const hasRefs = refXProp.hasValue() && refYProp.hasValue()\n\n if (hasRefs) {\n ctx.translate(\n -scaleMin * refXProp.getPixels('x'),\n -scaleMin * refYProp.getPixels('y')\n )\n }\n\n if (clip) {\n const scaledClipX = scaleMin * clipX\n const scaledClipY = scaleMin * clipY\n\n ctx.beginPath()\n ctx.moveTo(scaledClipX, scaledClipY)\n ctx.lineTo(width, scaledClipY)\n ctx.lineTo(width, height)\n ctx.lineTo(scaledClipX, height)\n ctx.closePath()\n ctx.clip()\n }\n\n if (!hasRefs) {\n const isMeetMinY = meetOrSlice === 'meet' && scaleMin === scaleY\n const isSliceMaxY = meetOrSlice === 'slice' && scaleMax === scaleY\n const isMeetMinX = meetOrSlice === 'meet' && scaleMin === scaleX\n const isSliceMaxX = meetOrSlice === 'slice' && scaleMax === scaleX\n\n if (align.startsWith('xMid') && (\n isMeetMinY || isSliceMaxY\n )) {\n ctx.translate(width / 2.0 - finalDesiredWidth / 2.0, 0)\n }\n\n if (align.endsWith('YMid') && (\n isMeetMinX || isSliceMaxX\n )) {\n ctx.translate(0, height / 2.0 - finalDesiredHeight / 2.0)\n }\n\n if (align.startsWith('xMax') && (\n isMeetMinY || isSliceMaxY\n )) {\n ctx.translate(width - finalDesiredWidth, 0)\n }\n\n if (align.endsWith('YMax') && (\n isMeetMinX || isSliceMaxX\n )) {\n ctx.translate(0, height - finalDesiredHeight)\n }\n }\n\n // scale\n switch (true) {\n case align === 'none':\n ctx.scale(scaleX, scaleY)\n break\n\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin)\n break\n\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax)\n break\n }\n\n // translate\n ctx.translate(-minX, -minY)\n }\n\n start(\n element: Element,\n {\n enableRedraw = false,\n ignoreMouse = false,\n ignoreAnimation = false,\n ignoreDimensions = false,\n ignoreClear = false,\n forceRedraw,\n scaleWidth,\n scaleHeight,\n offsetX,\n offsetY\n }: IScreenStartOptions = {}\n ) {\n const { mouse } = this\n const frameDuration = 1000 / Screen.FRAMERATE\n\n this.isReadyLock = false\n this.frameDuration = frameDuration\n this.readyPromise = new Promise((resolve) => {\n this.resolveReady = resolve\n })\n\n if (this.isReady()) {\n this.render(\n element,\n ignoreDimensions,\n ignoreClear,\n scaleWidth,\n scaleHeight,\n offsetX,\n offsetY\n )\n }\n\n if (!enableRedraw) {\n return\n }\n\n let now = Date.now()\n let then = now\n let delta = 0\n const tick = () => {\n now = Date.now()\n delta = now - then\n\n if (delta >= frameDuration) {\n then = now - (delta % frameDuration)\n\n if (this.shouldUpdate(\n ignoreAnimation,\n forceRedraw\n )) {\n this.render(\n element,\n ignoreDimensions,\n ignoreClear,\n scaleWidth,\n scaleHeight,\n offsetX,\n offsetY\n )\n mouse.runEvents()\n }\n }\n\n this.intervalId = requestAnimationFrame(tick)\n }\n\n if (!ignoreMouse) {\n mouse.start()\n }\n\n this.intervalId = requestAnimationFrame(tick)\n }\n\n stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId)\n this.intervalId = null\n }\n\n this.mouse.stop()\n }\n\n private shouldUpdate(\n ignoreAnimation: boolean,\n forceRedraw: (() => boolean) | undefined\n ) {\n // need update from animations?\n if (!ignoreAnimation) {\n const { frameDuration } = this\n const shouldUpdate = this.animations.reduce(\n (shouldUpdate, animation) => animation.update(frameDuration) || shouldUpdate,\n false\n )\n\n if (shouldUpdate) {\n return true\n }\n }\n\n // need update from redraw?\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true\n }\n\n if (!this.isReadyLock && this.isReady()) {\n return true\n }\n\n // need update from mouse events?\n if (this.mouse.hasEvents()) {\n return true\n }\n\n return false\n }\n\n private render(\n element: Element,\n ignoreDimensions: boolean,\n ignoreClear: boolean,\n scaleWidth: number | undefined,\n scaleHeight: number | undefined,\n offsetX: number | undefined,\n offsetY: number | undefined\n ) {\n const {\n viewPort,\n ctx,\n isFirstRender\n } = this\n const canvas = ctx.canvas as HTMLCanvasElement\n\n viewPort.clear()\n\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height)\n }\n\n const widthStyle = element.getStyle('width')\n const heightStyle = element.getStyle('height')\n\n if (!ignoreDimensions && (\n isFirstRender\n || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number'\n )) {\n // set canvas size\n if (widthStyle.hasValue()) {\n canvas.width = widthStyle.getPixels('x')\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (canvas.style) {\n canvas.style.width = `${canvas.width}px`\n }\n }\n\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y')\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (canvas.style) {\n canvas.style.height = `${canvas.height}px`\n }\n }\n }\n\n let cWidth = canvas.clientWidth || canvas.width\n let cHeight = canvas.clientHeight || canvas.height\n\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x')\n cHeight = heightStyle.getPixels('y')\n }\n\n viewPort.setCurrent(cWidth, cHeight)\n\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX)\n }\n\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY)\n }\n\n if (typeof scaleWidth === 'number'\n || typeof scaleHeight === 'number'\n ) {\n const viewBox = toNumbers(element.getAttribute('viewBox').getString())\n let xRatio = 0\n let yRatio = 0\n\n if (typeof scaleWidth === 'number') {\n const widthStyle = element.getStyle('width')\n\n if (widthStyle.hasValue()) {\n xRatio = widthStyle.getPixels('x') / scaleWidth\n } else\n if (viewBox[2] && !isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth\n }\n }\n\n if (typeof scaleHeight === 'number') {\n const heightStyle = element.getStyle('height')\n\n if (heightStyle.hasValue()) {\n yRatio = heightStyle.getPixels('y') / scaleHeight\n } else\n if (viewBox[3] && !isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight\n }\n }\n\n if (!xRatio) {\n xRatio = yRatio\n }\n\n if (!yRatio) {\n yRatio = xRatio\n }\n\n element.getAttribute('width', true).setValue(scaleWidth)\n element.getAttribute('height', true).setValue(scaleHeight)\n\n const transformStyle = element.getStyle('transform', true, true)\n\n transformStyle.setValue(`${transformStyle.getString()} scale(${1.0 / xRatio}, ${1.0 / yRatio})`)\n }\n\n // clear and render\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight)\n }\n\n element.render(ctx)\n\n if (isFirstRender) {\n this.isFirstRender = false\n }\n }\n}\n","import { Fetch } from './types'\nimport { Screen } from './Screen'\n\ntype DOMParserConstructor = typeof DOMParser\n\nexport interface IParserOptions {\n /**\n * WHATWG-compatible `fetch` function.\n */\n fetch?: Fetch\n /**\n * XML/HTML parser from string into DOM Document.\n */\n DOMParser?: DOMParserConstructor\n}\n\nconst { defaultFetch } = Screen\nconst DefaultDOMParser = typeof DOMParser !== 'undefined'\n ? DOMParser\n : undefined\n\nexport class Parser {\n private readonly fetch: Fetch\n private readonly DOMParser: DOMParserConstructor\n\n constructor({\n fetch = defaultFetch,\n DOMParser = DefaultDOMParser\n }: IParserOptions = {}) {\n if (!fetch) {\n throw new Error(`Can't find 'fetch' in 'globalThis', please provide it via options`)\n }\n\n if (!DOMParser) {\n throw new Error(`Can't find 'DOMParser' in 'globalThis', please provide it via options`)\n }\n\n this.fetch = fetch\n this.DOMParser = DOMParser\n }\n\n async parse(resource: string) {\n if (resource.startsWith('<')) {\n return this.parseFromString(resource)\n }\n\n return this.load(resource)\n }\n\n parseFromString(xml: string) {\n const parser = new this.DOMParser()\n\n try {\n return this.checkDocument(\n parser.parseFromString(xml, 'image/svg+xml')\n )\n } catch (err) {\n return this.checkDocument(\n parser.parseFromString(xml, 'text/xml')\n )\n }\n }\n\n private checkDocument(document: Document) {\n const parserError = document.getElementsByTagName('parsererror')[0]\n\n if (parserError) {\n throw new Error(parserError.textContent || 'Unknown parse error')\n }\n\n return document\n }\n\n async load(url: string) {\n const response = await this.fetch(url)\n const xml = await response.text()\n\n return this.parseFromString(xml)\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Document } from '../Document'\nimport { Point } from '../Point'\n\nexport class Translate {\n type = 'translate'\n private readonly point: Point\n\n constructor(\n _: Document,\n point: string\n ) {\n this.point = Point.parse(point)\n }\n\n apply(ctx: RenderingContext2D) {\n const {\n x,\n y\n } = this.point\n\n ctx.translate(\n x || 0.0,\n y || 0.0\n )\n }\n\n unapply(ctx: RenderingContext2D) {\n const {\n x,\n y\n } = this.point\n\n ctx.translate(\n -1.0 * x || 0.0,\n -1.0 * y || 0.0\n )\n }\n\n applyToPoint(point: Point) {\n const {\n x,\n y\n } = this.point\n\n point.applyTransform([\n 1,\n 0,\n 0,\n 1,\n x || 0.0,\n y || 0.0\n ])\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { toNumbers } from '../util'\nimport { Document } from '../Document'\nimport { Property } from '../Property'\nimport { Point } from '../Point'\n\nexport class Rotate {\n type = 'rotate'\n private readonly angle: Property\n private readonly originX: Property\n private readonly originY: Property\n private readonly cx: number\n private readonly cy: number\n\n constructor(\n document: Document,\n rotate: string,\n transformOrigin: readonly [Property<string>, Property<string>]\n ) {\n const numbers = toNumbers(rotate)\n\n this.angle = new Property(document, 'angle', numbers[0])\n this.originX = transformOrigin[0]\n this.originY = transformOrigin[1]\n this.cx = numbers[1] || 0\n this.cy = numbers[2] || 0\n }\n\n apply(ctx: RenderingContext2D) {\n const {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this\n const tx = cx + originX.getPixels('x')\n const ty = cy + originY.getPixels('y')\n\n ctx.translate(tx, ty)\n ctx.rotate(angle.getRadians())\n ctx.translate(-tx, -ty)\n }\n\n unapply(ctx: RenderingContext2D) {\n const {\n cx,\n cy,\n originX,\n originY,\n angle\n } = this\n const tx = cx + originX.getPixels('x')\n const ty = cy + originY.getPixels('y')\n\n ctx.translate(tx, ty)\n ctx.rotate(-1.0 * angle.getRadians())\n ctx.translate(-tx, -ty)\n }\n\n applyToPoint(point: Point) {\n const {\n cx,\n cy,\n angle\n } = this\n const rad = angle.getRadians()\n\n point.applyTransform([\n 1,\n 0,\n 0,\n 1,\n cx || 0.0, // this.p.x\n cy || 0.0 // this.p.y\n ])\n point.applyTransform([\n Math.cos(rad),\n Math.sin(rad),\n -Math.sin(rad),\n Math.cos(rad),\n 0,\n 0\n ])\n point.applyTransform([\n 1,\n 0,\n 0,\n 1,\n -cx || 0.0, // -this.p.x\n -cy || 0.0 // -this.p.y\n ])\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { PSEUDO_ZERO } from '../util'\nimport { Document } from '../Document'\nimport { Point } from '../Point'\nimport { Property } from '../Property'\n\nexport class Scale {\n type = 'scale'\n private readonly scale: Point\n private readonly originX: Property\n private readonly originY: Property\n\n constructor(\n _: Document,\n scale: string,\n transformOrigin: readonly [Property<string>, Property<string>]\n ) {\n const scaleSize = Point.parseScale(scale)\n\n // Workaround for node-canvas\n if (scaleSize.x === 0\n || scaleSize.y === 0\n ) {\n scaleSize.x = PSEUDO_ZERO\n scaleSize.y = PSEUDO_ZERO\n }\n\n this.scale = scaleSize\n this.originX = transformOrigin[0]\n this.originY = transformOrigin[1]\n }\n\n apply(ctx: RenderingContext2D) {\n const {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this\n const tx = originX.getPixels('x')\n const ty = originY.getPixels('y')\n\n ctx.translate(tx, ty)\n ctx.scale(x, y || x)\n ctx.translate(-tx, -ty)\n }\n\n unapply(ctx: RenderingContext2D) {\n const {\n scale: {\n x,\n y\n },\n originX,\n originY\n } = this\n const tx = originX.getPixels('x')\n const ty = originY.getPixels('y')\n\n ctx.translate(tx, ty)\n ctx.scale(1.0 / x, 1.0 / y || x)\n ctx.translate(-tx, -ty)\n }\n\n applyToPoint(point: Point) {\n const {\n x,\n y\n } = this.scale\n\n point.applyTransform([\n x || 0.0,\n 0,\n 0,\n y || 0.0,\n 0,\n 0\n ])\n }\n}\n","import { MatrixValue, RenderingContext2D } from '../types'\nimport { toMatrixValue } from '../util'\nimport { Document } from '../Document'\nimport { Point } from '../Point'\nimport { Property } from '../Property'\nimport { ITransform } from './types'\n\nexport class Matrix implements ITransform {\n type = 'matrix'\n protected matrix: MatrixValue\n private readonly originX: Property\n private readonly originY: Property\n\n constructor(\n _: Document,\n matrix: string,\n transformOrigin: readonly [Property<string>, Property<string>]\n ) {\n this.matrix = toMatrixValue(matrix)\n this.originX = transformOrigin[0]\n this.originY = transformOrigin[1]\n }\n\n apply(ctx: RenderingContext2D) {\n const {\n originX,\n originY,\n matrix\n } = this\n const tx = originX.getPixels('x')\n const ty = originY.getPixels('y')\n\n ctx.translate(tx, ty)\n ctx.transform(\n matrix[0],\n matrix[1],\n matrix[2],\n matrix[3],\n matrix[4],\n matrix[5]\n )\n ctx.translate(-tx, -ty)\n }\n\n unapply(ctx: RenderingContext2D) {\n const {\n originX,\n originY,\n matrix\n } = this\n const a = matrix[0]\n const b = matrix[2]\n const c = matrix[4]\n const d = matrix[1]\n const e = matrix[3]\n const f = matrix[5]\n const g = 0.0\n const h = 0.0\n const i = 1.0\n const det = 1 / (a * (e * i - f * h) - b * (d * i - f * g) + c * (d * h - e * g))\n const tx = originX.getPixels('x')\n const ty = originY.getPixels('y')\n\n ctx.translate(tx, ty)\n ctx.transform(\n det * (e * i - f * h),\n det * (f * g - d * i),\n det * (c * h - b * i),\n det * (a * i - c * g),\n det * (b * f - c * e),\n det * (c * d - a * f)\n )\n ctx.translate(-tx, -ty)\n }\n\n applyToPoint(point: Point) {\n point.applyTransform(this.matrix)\n }\n}\n","import { Document } from '../Document'\nimport { Property } from '../Property'\nimport { Matrix } from './Matrix'\n\nexport class Skew extends Matrix {\n override type = 'skew'\n protected readonly angle: Property\n\n constructor(\n document: Document,\n skew: string,\n transformOrigin: readonly [Property<string>, Property<string>]\n ) {\n super(document, skew, transformOrigin)\n\n this.angle = new Property(document, 'angle', skew)\n }\n}\n","import { Document } from '../Document'\nimport { Property } from '../Property'\nimport { Skew } from './Skew'\n\nexport class SkewX extends Skew {\n override type = 'skewX'\n\n constructor(\n document: Document,\n skew: string,\n transformOrigin: readonly [Property<string>, Property<string>]\n ) {\n super(document, skew, transformOrigin)\n\n this.matrix = [\n 1,\n 0,\n Math.tan(this.angle.getRadians()),\n 1,\n 0,\n 0\n ]\n }\n}\n","import { Document } from '../Document'\nimport { Property } from '../Property'\nimport { Skew } from './Skew'\n\nexport class SkewY extends Skew {\n override type = 'skewY'\n\n constructor(\n document: Document,\n skew: string,\n transformOrigin: readonly [Property<string>, Property<string>]\n ) {\n super(document, skew, transformOrigin)\n\n this.matrix = [\n 1,\n Math.tan(this.angle.getRadians()),\n 0,\n 1,\n 0,\n 0\n ]\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { compressSpaces } from '../util'\nimport { Property } from '../Property'\nimport { Point } from '../Point'\nimport { Document, Element } from '../Document'\nimport { ITransform } from './types'\nimport { Translate } from './Translate'\nimport { Rotate } from './Rotate'\nimport { Scale } from './Scale'\nimport { Matrix } from './Matrix'\nimport { SkewX } from './SkewX'\nimport { SkewY } from './SkewY'\n\nfunction parseTransforms(transform: string) {\n return compressSpaces(transform)\n .trim()\n .replace(/\\)([a-zA-Z])/g, ') $1')\n .replace(/\\)(\\s?,\\s?)/g, ') ')\n .split(/\\s(?=[a-z])/)\n}\n\nfunction parseTransform(transform: string) {\n const [type = '', value = ''] = transform.split('(')\n\n return [type.trim(), value.trim().replace(')', '')] as const\n}\n\ninterface ITransformConstructor {\n prototype: ITransform\n new (\n document: Document,\n value: string,\n transformOrigin: readonly [Property<string>, Property<string>]\n ): ITransform\n}\n\nexport class Transform {\n static fromElement(document: Document, element: Element) {\n const transformStyle = element.getStyle('transform', false, true)\n\n if (transformStyle.hasValue()) {\n const [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split()\n\n if (transformOriginXProperty && transformOriginYProperty) {\n const transformOrigin = [transformOriginXProperty, transformOriginYProperty] as const\n\n return new Transform(\n document,\n transformStyle.getString(),\n transformOrigin\n )\n }\n }\n\n return null\n }\n\n static transformTypes: Record<string, ITransformConstructor> = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n }\n\n private readonly transforms: ITransform[] = []\n\n constructor(\n private readonly document: Document,\n transform: string,\n transformOrigin: readonly [Property<string>, Property<string>]\n ) {\n const data = parseTransforms(transform)\n\n data.forEach((transform) => {\n if (transform === 'none') {\n return\n }\n\n const [type, value] = parseTransform(transform)\n const TransformType = Transform.transformTypes[type]\n\n if (TransformType) {\n this.transforms.push(new TransformType(this.document, value, transformOrigin))\n }\n })\n }\n\n apply(ctx: RenderingContext2D) {\n this.transforms.forEach(transform => transform.apply(ctx))\n }\n\n unapply(ctx: RenderingContext2D) {\n this.transforms.forEach(transform => transform.unapply(ctx))\n }\n\n // TODO: applyToPoint unused ... remove?\n applyToPoint(point: Point) {\n this.transforms.forEach(transform => transform.applyToPoint(point))\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { normalizeAttributeName } from '../util'\nimport { Property } from '../Property'\nimport { Transform } from '../Transform'\nimport { Document } from './Document'\nimport { ClipPathElement } from './ClipPathElement'\nimport { MaskElement } from './MaskElement'\nimport { FilterElement } from './FilterElement'\n\nexport abstract class Element {\n static readonly ignoreChildTypes = ['title']\n\n readonly type: string = ''\n readonly attributes: Record<string, Property> = {}\n readonly styles: Record<string, Property> = {}\n readonly stylesSpecificity: Record<string, string> = {}\n animationFrozen = false\n animationFrozenValue = ''\n parent: Element | null = null\n children: Element[] = []\n\n constructor(\n protected readonly document: Document,\n protected readonly node?: HTMLElement,\n protected readonly captureTextNodes = false\n ) {\n if (!node || node.nodeType !== 1) { // ELEMENT_NODE\n return\n }\n\n // add attributes\n Array.from(node.attributes).forEach((attribute) => {\n const nodeName = normalizeAttributeName(attribute.nodeName)\n\n this.attributes[nodeName] = new Property(document, nodeName, attribute.value)\n })\n\n this.addStylesFromStyleDefinition()\n\n // add inline styles\n if (this.getAttribute('style').hasValue()) {\n const styles = this.getAttribute('style')\n .getString()\n .split(';')\n .map(_ => _.trim())\n\n styles.forEach((style) => {\n if (!style) {\n return\n }\n\n const [name, value] = style.split(':').map(_ => _.trim())\n\n if (name) {\n this.styles[name] = new Property(document, name, value)\n }\n })\n }\n\n const { definitions } = document\n const id = this.getAttribute('id')\n\n // add id\n if (id.hasValue()) {\n if (!definitions[id.getString()]) {\n definitions[id.getString()] = this\n }\n }\n\n Array.from(node.childNodes).forEach((childNode: HTMLElement) => {\n if (childNode.nodeType === 1) {\n this.addChild(childNode) // ELEMENT_NODE\n } else\n if (captureTextNodes && (\n childNode.nodeType === 3\n || childNode.nodeType === 4\n )) {\n const textNode = document.createTextNode(childNode)\n\n if (textNode.getText().length > 0) {\n this.addChild(textNode) // TEXT_NODE\n }\n }\n })\n }\n\n getAttribute(name: string, createIfNotExists = false): Property {\n const attr = this.attributes[name]\n\n if (!attr && createIfNotExists) {\n const attr = new Property(this.document, name, '')\n\n this.attributes[name] = attr\n\n return attr\n }\n\n return attr || Property.empty(this.document)\n }\n\n getHrefAttribute(): Property {\n let href: Property | undefined\n\n for (const key in this.attributes) {\n if (key === 'href' || key.endsWith(':href')) {\n href = this.attributes[key]\n break\n }\n }\n\n return href || Property.empty(this.document)\n }\n\n getStyle(name: string, createIfNotExists = false, skipAncestors = false): Property {\n const style = this.styles[name]\n\n if (style) {\n return style\n }\n\n const attr = this.getAttribute(name)\n\n if (attr.hasValue()) {\n this.styles[name] = attr // move up to me to cache\n return attr\n }\n\n if (!skipAncestors) {\n const { parent } = this\n\n if (parent) {\n const parentStyle = parent.getStyle(name)\n\n if (parentStyle.hasValue()) {\n return parentStyle\n }\n }\n }\n\n if (createIfNotExists) {\n const style = new Property(this.document, name, '')\n\n this.styles[name] = style\n\n return style\n }\n\n return Property.empty(this.document)\n }\n\n render(ctx: RenderingContext2D) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none'\n || this.getStyle('visibility').getString() === 'hidden'\n ) {\n return\n }\n\n ctx.save()\n\n if (this.getStyle('mask').hasValue()) { // mask\n const mask = this.getStyle('mask').getDefinition<MaskElement>()\n\n if (mask) {\n this.applyEffects(ctx)\n mask.apply(ctx, this)\n }\n } else\n if (this.getStyle('filter').getValue('none') !== 'none') { // filter\n const filter = this.getStyle('filter').getDefinition<FilterElement>()\n\n if (filter) {\n this.applyEffects(ctx)\n filter.apply(ctx, this)\n }\n } else {\n this.setContext(ctx)\n this.renderChildren(ctx)\n this.clearContext(ctx)\n }\n\n ctx.restore()\n }\n\n setContext(_: RenderingContext2D) {\n // NO RENDER\n }\n\n protected applyEffects(ctx: RenderingContext2D) {\n // transform\n const transform = Transform.fromElement(this.document, this)\n\n if (transform) {\n transform.apply(ctx)\n }\n\n // clip\n const clipPathStyleProp = this.getStyle('clip-path', false, true)\n\n if (clipPathStyleProp.hasValue()) {\n const clip = clipPathStyleProp.getDefinition<ClipPathElement>()\n\n if (clip) {\n clip.apply(ctx)\n }\n }\n }\n\n clearContext(_: RenderingContext2D) {\n // NO RENDER\n }\n\n renderChildren(ctx: RenderingContext2D) {\n this.children.forEach((child) => {\n child.render(ctx)\n })\n }\n\n protected addChild(childNode: Element|HTMLElement) {\n const child = childNode instanceof Element\n ? childNode\n : this.document.createElement(childNode)\n\n child.parent = this\n\n if (!Element.ignoreChildTypes.includes(child.type)) {\n this.children.push(child)\n }\n }\n\n protected matchesSelector(selector: string) {\n const { node } = this\n\n if (typeof node.matches === 'function') {\n return node.matches(selector)\n }\n\n const styleClasses = node.getAttribute?.('class')\n\n if (!styleClasses || styleClasses === '') {\n return false\n }\n\n return styleClasses.split(' ').some(styleClass => `.${styleClass}` === selector)\n }\n\n addStylesFromStyleDefinition() {\n const {\n styles,\n stylesSpecificity\n } = this.document\n let styleProp: Property | undefined\n\n for (const selector in styles) {\n if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n const style = styles[selector]\n const specificity = stylesSpecificity[selector]\n\n if (style) {\n for (const name in style) {\n let existingSpecificity = this.stylesSpecificity[name]\n\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000'\n }\n\n if (specificity && specificity >= existingSpecificity) {\n styleProp = style[name]\n\n if (styleProp) {\n this.styles[name] = styleProp\n }\n\n this.stylesSpecificity[name] = specificity\n }\n }\n }\n }\n }\n }\n\n protected removeStyles(element: Element, ignoreStyles: string[]) {\n const toRestore = ignoreStyles.reduce<[string, string][]>((toRestore, name) => {\n const styleProp = element.getStyle(name)\n\n if (!styleProp.hasValue()) {\n return toRestore\n }\n\n const value = styleProp.getString()\n\n styleProp.setValue('')\n\n return [...toRestore, [name, value]]\n }, [])\n\n return toRestore\n }\n\n protected restoreStyles(element: Element, styles: [string, string][]) {\n styles.forEach(([name, value]) => {\n element.getStyle(name, true).setValue(value)\n })\n }\n\n isFirstChild() {\n return this.parent?.children.indexOf(this) === 0\n }\n}\n","import { Document } from './Document'\nimport { Element } from './Element'\n\nexport class UnknownElement extends Element {\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Element ${node.nodeName} not yet implemented.`)\n }\n }\n}\n","import { compressSpaces } from './util'\n\nfunction wrapFontFamily(fontFamily: string) {\n const trimmed = fontFamily.trim()\n\n return /^('|\")/.test(trimmed)\n ? trimmed\n : `\"${trimmed}\"`\n}\n\nfunction prepareFontFamily(fontFamily: string) {\n return typeof process === 'undefined'\n ? fontFamily\n : fontFamily\n .trim()\n .split(',')\n .map(wrapFontFamily)\n .join(',')\n}\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\n * @param fontStyle\n * @returns CSS font style.\n */\nfunction prepareFontStyle(fontStyle: string) {\n if (!fontStyle) {\n return ''\n }\n\n const targetFontStyle = fontStyle.trim().toLowerCase()\n\n switch (targetFontStyle) {\n case 'normal':\n case 'italic':\n case 'oblique':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontStyle\n\n default:\n\n if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n return targetFontStyle\n }\n\n return ''\n }\n}\n\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n * @param fontWeight\n * @returns CSS font weight.\n */\nfunction prepareFontWeight(fontWeight: string) {\n if (!fontWeight) {\n return ''\n }\n\n const targetFontWeight = fontWeight.trim().toLowerCase()\n\n switch (targetFontWeight) {\n case 'normal':\n case 'bold':\n case 'lighter':\n case 'bolder':\n case 'inherit':\n case 'initial':\n case 'unset':\n return targetFontWeight\n\n default:\n\n if (/^[\\d.]+$/.test(targetFontWeight)) {\n return targetFontWeight\n }\n\n return ''\n }\n}\n\nexport class Font {\n static parse(\n font = '',\n inherit?: string | Font\n ) {\n let fontStyle = ''\n let fontVariant = ''\n let fontWeight = ''\n let fontSize = ''\n let fontFamily = ''\n const parts = compressSpaces(font).trim().split(' ')\n const set = {\n fontSize: false,\n fontStyle: false,\n fontWeight: false,\n fontVariant: false\n }\n\n parts.forEach((part) => {\n switch (true) {\n case !set.fontStyle && Font.styles.includes(part):\n\n if (part !== 'inherit') {\n fontStyle = part\n }\n\n set.fontStyle = true\n break\n\n case !set.fontVariant && Font.variants.includes(part):\n\n if (part !== 'inherit') {\n fontVariant = part\n }\n\n set.fontStyle = true\n set.fontVariant = true\n break\n\n case !set.fontWeight && Font.weights.includes(part):\n\n if (part !== 'inherit') {\n fontWeight = part\n }\n\n set.fontStyle = true\n set.fontVariant = true\n set.fontWeight = true\n break\n\n case !set.fontSize:\n\n if (part !== 'inherit') {\n fontSize = part.split('/')[0] || ''\n }\n\n set.fontStyle = true\n set.fontVariant = true\n set.fontWeight = true\n set.fontSize = true\n break\n\n default:\n\n if (part !== 'inherit') {\n fontFamily += part\n }\n }\n })\n\n return new Font(\n fontStyle,\n fontVariant,\n fontWeight,\n fontSize,\n fontFamily,\n inherit\n )\n }\n\n static readonly styles = 'normal|italic|oblique|inherit'\n static readonly variants = 'normal|small-caps|inherit'\n static readonly weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit'\n\n readonly fontFamily: string\n readonly fontSize: string\n readonly fontStyle: string\n readonly fontWeight: string\n readonly fontVariant: string\n\n constructor(\n fontStyle: string,\n fontVariant: string,\n fontWeight: string,\n fontSize: string,\n fontFamily: string,\n inherit?: string | Font\n ) {\n const inheritFont = inherit\n ? typeof inherit === 'string'\n ? Font.parse(inherit)\n : inherit\n : {} as Font\n\n this.fontFamily = fontFamily || inheritFont.fontFamily\n this.fontSize = fontSize || inheritFont.fontSize\n this.fontStyle = fontStyle || inheritFont.fontStyle\n this.fontWeight = fontWeight || inheritFont.fontWeight\n this.fontVariant = fontVariant || inheritFont.fontVariant\n }\n\n toString() {\n return [\n prepareFontStyle(this.fontStyle),\n this.fontVariant,\n prepareFontWeight(this.fontWeight),\n this.fontSize,\n // Wrap fontFamily only on nodejs and only for canvas.ctx\n prepareFontFamily(this.fontFamily)\n ].join(' ').trim()\n }\n}\n","\nexport class BoundingBox {\n constructor(\n public x1 = Number.NaN,\n public y1 = Number.NaN,\n public x2 = Number.NaN,\n public y2 = Number.NaN\n ) {\n this.addPoint(x1, y1)\n this.addPoint(x2, y2)\n }\n\n get x() {\n return this.x1\n }\n\n get y() {\n return this.y1\n }\n\n get width() {\n return this.x2 - this.x1\n }\n\n get height() {\n return this.y2 - this.y1\n }\n\n addPoint(x: number | undefined, y: number | undefined) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x\n this.x2 = x\n }\n\n if (x < this.x1) {\n this.x1 = x\n }\n\n if (x > this.x2) {\n this.x2 = x\n }\n }\n\n if (typeof y !== 'undefined') {\n if (isNaN(this.y1) || isNaN(this.y2)) {\n this.y1 = y\n this.y2 = y\n }\n\n if (y < this.y1) {\n this.y1 = y\n }\n\n if (y > this.y2) {\n this.y2 = y\n }\n }\n }\n\n addX(x: number) {\n this.addPoint(x, 0)\n }\n\n addY(y: number) {\n this.addPoint(0, y)\n }\n\n addBoundingBox(boundingBox: BoundingBox | null) {\n if (!boundingBox) {\n return\n }\n\n const {\n x1,\n y1,\n x2,\n y2\n } = boundingBox\n\n this.addPoint(x1, y1)\n this.addPoint(x2, y2)\n }\n\n private sumCubic(\n t: number,\n p0: number,\n p1: number,\n p2: number,\n p3: number\n ) {\n return (\n Math.pow(1 - t, 3) * p0\n + 3 * Math.pow(1 - t, 2) * t * p1\n + 3 * (1 - t) * Math.pow(t, 2) * p2\n + Math.pow(t, 3) * p3\n )\n }\n\n private bezierCurveAdd(\n forX: boolean,\n p0: number,\n p1: number,\n p2: number,\n p3: number\n ) {\n const b = 6 * p0 - 12 * p1 + 6 * p2\n const a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3\n const c = 3 * p1 - 3 * p0\n\n if (a === 0) {\n if (b === 0) {\n return\n }\n\n const t = -c / b\n\n if (0 < t && t < 1) {\n if (forX) {\n this.addX(this.sumCubic(t, p0, p1, p2, p3))\n } else {\n this.addY(this.sumCubic(t, p0, p1, p2, p3))\n }\n }\n\n return\n }\n\n const b2ac = Math.pow(b, 2) - 4 * c * a\n\n if (b2ac < 0) {\n return\n }\n\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a)\n\n if (0 < t1 && t1 < 1) {\n if (forX) {\n this.addX(\n this.sumCubic(t1, p0, p1, p2, p3)\n )\n } else {\n this.addY(\n this.sumCubic(t1, p0, p1, p2, p3)\n )\n }\n }\n\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a)\n\n if (0 < t2 && t2 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t2, p0, p1, p2, p3))\n } else {\n this.addY(this.sumCubic(t2, p0, p1, p2, p3))\n }\n }\n }\n\n // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n addBezierCurve(\n p0x: number,\n p0y: number,\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n p3x: number,\n p3y: number\n ) {\n this.addPoint(p0x, p0y)\n this.addPoint(p3x, p3y)\n this.bezierCurveAdd(true, p0x, p1x, p2x, p3x)\n this.bezierCurveAdd(false, p0y, p1y, p2y, p3y)\n }\n\n addQuadraticCurve(\n p0x: number,\n p0y: number,\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number\n ) {\n const cp1x = p0x + 2 / 3 * (p1x - p0x) // CP1 = QP0 + 2/3 *(QP1-QP0)\n const cp1y = p0y + 2 / 3 * (p1y - p0y) // CP1 = QP0 + 2/3 *(QP1-QP0)\n const cp2x = cp1x + 1 / 3 * (p2x - p0x) // CP2 = CP1 + 1/3 *(QP2-QP0)\n const cp2y = cp1y + 1 / 3 * (p2y - p0y) // CP2 = CP1 + 1/3 *(QP2-QP0)\n\n this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y)\n }\n\n isPointInBox(\n x: number,\n y: number\n ) {\n const {\n x1,\n y1,\n x2,\n y2\n } = this\n\n return (\n x1 <= x\n && x <= x2\n && y1 <= y\n && y <= y2\n )\n }\n}\n","import { RenderingContext2D } from '../types'\nimport {\n PSEUDO_ZERO,\n toNumbers\n} from '../util'\nimport { Font } from '../Font'\nimport { Property } from '../Property'\nimport { Element } from './Element'\n\nexport abstract class RenderedElement extends Element {\n private modifiedEmSizeStack = false\n\n protected calculateOpacity() {\n let opacity = 1.0\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n let element: Element | null = this\n\n while (element) {\n const opacityStyle = element.getStyle('opacity', false, true) // no ancestors on style call\n\n if (opacityStyle.hasValue(true)) {\n opacity *= opacityStyle.getNumber()\n }\n\n element = element.parent\n }\n\n return opacity\n }\n\n override setContext(ctx: RenderingContext2D, fromMeasure = false) {\n if (!fromMeasure) { // causes stack overflow when measuring text with gradients\n // fill\n const fillStyleProp = this.getStyle('fill')\n const fillOpacityStyleProp = this.getStyle('fill-opacity')\n const strokeStyleProp = this.getStyle('stroke')\n const strokeOpacityProp = this.getStyle('stroke-opacity')\n\n if (fillStyleProp.isUrlDefinition()) {\n const fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp)\n\n if (fillStyle) {\n ctx.fillStyle = fillStyle\n }\n } else\n if (fillStyleProp.hasValue()) {\n if (fillStyleProp.getString() === 'currentColor') {\n fillStyleProp.setValue(this.getStyle('color').getColor())\n }\n\n const fillStyle = fillStyleProp.getColor()\n\n if (fillStyle !== 'inherit') {\n ctx.fillStyle = fillStyle === 'none'\n ? 'rgba(0,0,0,0)'\n : fillStyle\n }\n }\n\n if (fillOpacityStyleProp.hasValue()) {\n const fillStyle = new Property(this.document, 'fill', ctx.fillStyle)\n .addOpacity(fillOpacityStyleProp)\n .getColor()\n\n ctx.fillStyle = fillStyle\n }\n\n // stroke\n if (strokeStyleProp.isUrlDefinition()) {\n const strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp)\n\n if (strokeStyle) {\n ctx.strokeStyle = strokeStyle\n }\n } else\n if (strokeStyleProp.hasValue()) {\n if (strokeStyleProp.getString() === 'currentColor') {\n strokeStyleProp.setValue(this.getStyle('color').getColor())\n }\n\n const strokeStyle = strokeStyleProp.getString()\n\n if (strokeStyle !== 'inherit') {\n ctx.strokeStyle = strokeStyle === 'none'\n ? 'rgba(0,0,0,0)'\n : strokeStyle\n }\n }\n\n if (strokeOpacityProp.hasValue()) {\n const strokeStyle = new Property(this.document, 'stroke', ctx.strokeStyle)\n .addOpacity(strokeOpacityProp)\n .getString()\n\n ctx.strokeStyle = strokeStyle\n }\n\n const strokeWidthStyleProp = this.getStyle('stroke-width')\n\n if (strokeWidthStyleProp.hasValue()) {\n const newLineWidth = strokeWidthStyleProp.getPixels()\n\n ctx.lineWidth = !newLineWidth\n ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth\n }\n\n const strokeLinecapStyleProp = this.getStyle('stroke-linecap')\n const strokeLinejoinStyleProp = this.getStyle('stroke-linejoin')\n const strokeMiterlimitProp = this.getStyle('stroke-miterlimit')\n // NEED TEST\n // const pointOrderStyleProp = this.getStyle('paint-order');\n const strokeDasharrayStyleProp = this.getStyle('stroke-dasharray')\n const strokeDashoffsetProp = this.getStyle('stroke-dashoffset')\n\n if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString() as CanvasLineCap\n }\n\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString() as CanvasLineJoin\n }\n\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber()\n }\n\n // NEED TEST\n // if (pointOrderStyleProp.hasValue()) {\n // // ?\n // ctx.paintOrder = pointOrderStyleProp.getValue();\n // }\n\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n const gaps = toNumbers(strokeDasharrayStyleProp.getString())\n\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps)\n } else\n // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDash !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDash = gaps\n } else\n // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDash !== 'undefined' && !(gaps.length === 1 && gaps[0] === 0)) {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDash = gaps\n }\n\n const offset = strokeDashoffsetProp.getPixels()\n\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset\n } else\n // @ts-expect-error Handle browser prefix.\n if (typeof ctx.webkitLineDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.webkitLineDashOffset = offset\n } else\n // @ts-expect-error Handle browser prefix.\n if (typeof ctx.mozDashOffset !== 'undefined') {\n // @ts-expect-error Handle browser prefix.\n ctx.mozDashOffset = offset\n }\n }\n }\n\n // font\n this.modifiedEmSizeStack = false\n\n if (typeof ctx.font !== 'undefined') {\n const fontStyleProp = this.getStyle('font')\n const fontStyleStyleProp = this.getStyle('font-style')\n const fontVariantStyleProp = this.getStyle('font-variant')\n const fontWeightStyleProp = this.getStyle('font-weight')\n const fontSizeStyleProp = this.getStyle('font-size')\n const fontFamilyStyleProp = this.getStyle('font-family')\n const font = new Font(\n fontStyleStyleProp.getString(),\n fontVariantStyleProp.getString(),\n fontWeightStyleProp.getString(),\n fontSizeStyleProp.hasValue()\n ? `${fontSizeStyleProp.getPixels(true)}px`\n : '',\n fontFamilyStyleProp.getString(),\n Font.parse(\n fontStyleProp.getString(),\n ctx.font\n )\n )\n\n fontStyleStyleProp.setValue(font.fontStyle)\n fontVariantStyleProp.setValue(font.fontVariant)\n fontWeightStyleProp.setValue(font.fontWeight)\n fontSizeStyleProp.setValue(font.fontSize)\n fontFamilyStyleProp.setValue(font.fontFamily)\n\n ctx.font = font.toString()\n\n if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels()\n this.modifiedEmSizeStack = true\n }\n }\n\n if (!fromMeasure) {\n // effects\n this.applyEffects(ctx)\n // opacity\n ctx.globalAlpha = this.calculateOpacity()\n }\n }\n\n override clearContext(ctx: RenderingContext2D) {\n super.clearContext(ctx)\n\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize()\n }\n }\n}\n","import { RenderingContext2D } from '../types'\nimport {\n toNumbers,\n compressSpaces,\n trimLeft,\n trimRight\n} from '../util'\nimport { Font } from '../Font'\nimport { BoundingBox } from '../BoundingBox'\nimport { Document } from './Document'\nimport { Element } from './Element'\nimport { FontElement } from './FontElement'\nimport { ArabicForm, GlyphElement } from './GlyphElement'\nimport { RenderedElement } from './RenderedElement'\n\nexport class TextElement extends RenderedElement {\n override type = 'text'\n protected x = 0\n protected y = 0\n private leafTexts: TextElement[] = []\n private textChunkStart = 0\n private minX = Number.POSITIVE_INFINITY\n private maxX = Number.NEGATIVE_INFINITY\n private measureCache = -1\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(\n document,\n node,\n new.target === TextElement\n ? true\n : captureTextNodes\n )\n }\n\n override setContext(ctx: RenderingContext2D, fromMeasure = false) {\n super.setContext(ctx, fromMeasure)\n\n const textBaseline = this.getStyle('dominant-baseline').getTextBaseline()\n || this.getStyle('alignment-baseline').getTextBaseline()\n\n if (textBaseline) {\n ctx.textBaseline = textBaseline as CanvasTextBaseline\n }\n }\n\n protected initializeCoordinates() {\n this.x = 0\n this.y = 0\n this.leafTexts = []\n this.textChunkStart = 0\n this.minX = Number.POSITIVE_INFINITY\n this.maxX = Number.NEGATIVE_INFINITY\n }\n\n getBoundingBox(ctx: RenderingContext2D) {\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx)\n }\n\n // first, calculate child positions\n this.initializeCoordinates()\n this.adjustChildCoordinatesRecursive(ctx)\n\n let boundingBox: BoundingBox | null = null\n\n // then calculate bounding box\n this.children.forEach((_, i) => {\n const childBoundingBox = this.getChildBoundingBox(ctx, this, this, i)\n\n if (!boundingBox) {\n boundingBox = childBoundingBox\n } else {\n boundingBox.addBoundingBox(childBoundingBox)\n }\n })\n\n return boundingBox\n }\n\n protected getFontSize() {\n const {\n document,\n parent\n } = this\n const inheritFontSize = Font.parse(document.ctx.font).fontSize\n const fontSize = parent.getStyle('font-size').getNumber(inheritFontSize)\n\n return fontSize\n }\n\n protected getTElementBoundingBox(ctx: RenderingContext2D) {\n const fontSize = this.getFontSize()\n\n return new BoundingBox(\n this.x,\n this.y - fontSize,\n this.x + this.measureText(ctx),\n this.y\n )\n }\n\n getGlyph(\n font: FontElement,\n text: string,\n i: number\n ) {\n const char = text[i]\n let glyph: GlyphElement | undefined\n\n if (font.isArabic) {\n const len = text.length\n const prevChar = text[i - 1]\n const nextChar = text[i + 1]\n let arabicForm: ArabicForm = 'isolated'\n\n if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'terminal'\n }\n\n if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'medial'\n }\n\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial'\n }\n\n glyph = font.arabicGlyphs[char]?.[arabicForm] || font.glyphs[char]\n } else {\n glyph = font.glyphs[char]\n }\n\n if (!glyph) {\n glyph = font.missingGlyph\n }\n\n return glyph\n }\n\n getText() {\n return ''\n }\n\n protected getTextFromNode(node?: ChildNode) {\n const textNode = node || this.node\n const childNodes = Array.from(textNode.parentNode.childNodes)\n const index = childNodes.indexOf(textNode)\n const lastIndex = childNodes.length - 1\n let text = compressSpaces(\n // textNode.value\n // || textNode.text\n textNode.textContent\n || ''\n )\n\n if (index === 0) {\n text = trimLeft(text)\n }\n\n if (index === lastIndex) {\n text = trimRight(text)\n }\n\n return text\n }\n\n override renderChildren(ctx: RenderingContext2D) {\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx)\n return\n }\n\n // first, calculate child positions\n this.initializeCoordinates()\n this.adjustChildCoordinatesRecursive(ctx)\n\n // then render\n this.children.forEach((_, i) => {\n this.renderChild(ctx, this, this, i)\n })\n\n const { mouse } = this.document.screen\n\n // Do not calc bounding box if mouse is not working.\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(\n this,\n this.getBoundingBox(ctx)\n )\n }\n }\n\n protected renderTElementChildren(ctx: RenderingContext2D) {\n const {\n document,\n parent\n } = this\n const renderText = this.getText()\n const customFont = parent.getStyle('font-family').getDefinition<FontElement>()\n\n if (customFont) {\n const { unitsPerEm } = customFont.fontFace\n const ctxFont = Font.parse(document.ctx.font)\n const fontSize = parent.getStyle('font-size').getNumber(ctxFont.fontSize)\n const fontStyle = parent.getStyle('font-style').getString(ctxFont.fontStyle)\n const scale = fontSize / unitsPerEm\n const text = customFont.isRTL\n ? renderText.split('').reverse().join('')\n : renderText\n const dx = toNumbers(parent.getAttribute('dx').getString())\n const len = text.length\n\n for (let i = 0; i < len; i++) {\n const glyph = this.getGlyph(customFont, text, i)\n\n ctx.translate(this.x, this.y)\n ctx.scale(scale, -scale)\n\n const lw = ctx.lineWidth\n\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, .4, 1, 0, 0)\n }\n\n glyph.render(ctx)\n\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -.4, 1, 0, 0)\n }\n\n ctx.lineWidth = lw\n ctx.scale(1 / scale, -1 / scale)\n ctx.translate(-this.x, -this.y)\n\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i]\n }\n }\n\n return\n }\n\n const {\n x,\n y\n } = this\n\n // NEED TEST\n // if (ctx.paintOrder === 'stroke') {\n // if (ctx.strokeStyle) {\n // ctx.strokeText(renderText, x, y);\n // }\n\n // if (ctx.fillStyle) {\n // ctx.fillText(renderText, x, y);\n // }\n // } else {\n if (ctx.fillStyle) {\n ctx.fillText(renderText, x, y)\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y)\n }\n // }\n }\n\n protected applyAnchoring() {\n if (this.textChunkStart >= this.leafTexts.length) {\n return\n }\n\n // This is basically the \"Apply anchoring\" part of https://www.w3.org/TR/SVG2/text.html#TextLayoutAlgorithm.\n // The difference is that we apply the anchoring as soon as a chunk is finished. This saves some extra looping.\n // Vertical text is not supported.\n\n const firstElement = this.leafTexts[this.textChunkStart]\n const textAnchor = firstElement.getStyle('text-anchor').getString('start')\n const isRTL = false // we treat RTL like LTR\n let shift = 0\n\n if (textAnchor === 'start' && !isRTL || textAnchor === 'end' && isRTL) {\n shift = firstElement.x - this.minX\n } else if (textAnchor === 'end' && !isRTL || textAnchor === 'start' && isRTL) {\n shift = firstElement.x - this.maxX\n } else {\n shift = firstElement.x - (this.minX + this.maxX) / 2\n }\n\n for (let i = this.textChunkStart; i < this.leafTexts.length; i++) {\n this.leafTexts[i].x += shift\n }\n\n // start new chunk\n this.minX = Number.POSITIVE_INFINITY\n this.maxX = Number.NEGATIVE_INFINITY\n this.textChunkStart = this.leafTexts.length\n }\n\n protected adjustChildCoordinatesRecursive(ctx: RenderingContext2D) {\n this.children.forEach((_, i) => {\n this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i)\n })\n this.applyAnchoring()\n }\n\n protected adjustChildCoordinatesRecursiveCore(\n ctx: RenderingContext2D,\n textParent: TextElement,\n parent: Element,\n i: number\n ): void {\n const child = parent.children[i] as TextElement\n\n if (child.children.length > 0) {\n child.children.forEach((_, i) => {\n textParent.adjustChildCoordinatesRecursiveCore(ctx, textParent, child, i)\n })\n } else {\n // only leafs are relevant\n this.adjustChildCoordinates(ctx, textParent, parent, i)\n }\n }\n\n protected adjustChildCoordinates(\n ctx: RenderingContext2D,\n textParent: TextElement,\n parent: Element,\n i: number\n ) {\n const child = parent.children[i] as TextElement\n\n if (typeof child.measureText !== 'function') {\n return child\n }\n\n ctx.save()\n child.setContext(ctx, true)\n\n const xAttr = child.getAttribute('x')\n const yAttr = child.getAttribute('y')\n const dxAttr = child.getAttribute('dx')\n const dyAttr = child.getAttribute('dy')\n const customFont = child.getStyle('font-family').getDefinition<FontElement>()\n const isRTL = Boolean(customFont?.isRTL)\n\n if (i === 0) {\n // First children inherit attributes from parent(s). Positional attributes\n // are only inherited from a parent to it's first child.\n if (!xAttr.hasValue()) {\n xAttr.setValue(child.getInheritedAttribute('x'))\n }\n\n if (!yAttr.hasValue()) {\n yAttr.setValue(child.getInheritedAttribute('y'))\n }\n\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(child.getInheritedAttribute('dx'))\n }\n\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(child.getInheritedAttribute('dy'))\n }\n }\n\n const width = child.measureText(ctx)\n\n if (isRTL) {\n textParent.x -= width\n }\n\n if (xAttr.hasValue()) {\n // an \"x\" attribute marks the start of a new chunk\n textParent.applyAnchoring()\n\n child.x = xAttr.getPixels('x')\n\n if (dxAttr.hasValue()) {\n child.x += dxAttr.getPixels('x')\n }\n } else {\n if (dxAttr.hasValue()) {\n textParent.x += dxAttr.getPixels('x')\n }\n\n child.x = textParent.x\n }\n\n textParent.x = child.x\n\n if (!isRTL) {\n textParent.x += width\n }\n\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y')\n\n if (dyAttr.hasValue()) {\n child.y += dyAttr.getPixels('y')\n }\n } else {\n if (dyAttr.hasValue()) {\n textParent.y += dyAttr.getPixels('y')\n }\n\n child.y = textParent.y\n }\n\n textParent.y = child.y\n\n // update the current chunk and it's bounds\n textParent.leafTexts.push(child)\n textParent.minX = Math.min(textParent.minX, child.x, child.x + width)\n textParent.maxX = Math.max(textParent.maxX, child.x, child.x + width)\n\n child.clearContext(ctx)\n ctx.restore()\n\n return child\n }\n\n protected getChildBoundingBox(\n ctx: RenderingContext2D,\n textParent: TextElement,\n parent: Element,\n i: number\n ) {\n const child = parent.children[i] as TextElement\n\n // not a text node?\n if (typeof child.getBoundingBox !== 'function') {\n return null\n }\n\n const boundingBox = child.getBoundingBox(ctx)\n\n if (boundingBox) {\n child.children.forEach((_, i) => {\n const childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i)\n\n boundingBox.addBoundingBox(childBoundingBox)\n })\n }\n\n return boundingBox\n }\n\n protected renderChild(\n ctx: RenderingContext2D,\n textParent: TextElement,\n parent: Element,\n i: number\n ) {\n const child = parent.children[i] as TextElement\n\n child.render(ctx)\n child.children.forEach((_, i) => {\n textParent.renderChild(ctx, textParent, child, i)\n })\n }\n\n protected measureText(ctx: RenderingContext2D) {\n const { measureCache } = this\n\n if (~measureCache) {\n return measureCache\n }\n\n const renderText = this.getText()\n const measure = this.measureTargetText(ctx, renderText)\n\n this.measureCache = measure\n\n return measure\n }\n\n protected measureTargetText(\n ctx: RenderingContext2D,\n targetText: string\n ) {\n if (!targetText.length) {\n return 0\n }\n\n const { parent } = this\n const customFont = parent.getStyle('font-family').getDefinition<FontElement>()\n\n if (customFont) {\n const fontSize = this.getFontSize()\n const text = customFont.isRTL\n ? targetText.split('').reverse().join('')\n : targetText\n const dx = toNumbers(parent.getAttribute('dx').getString())\n const len = text.length\n let measure = 0\n\n for (let i = 0; i < len; i++) {\n const glyph = this.getGlyph(customFont, text, i)\n\n measure += (glyph.horizAdvX || customFont.horizAdvX)\n * fontSize\n / customFont.fontFace.unitsPerEm\n\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n measure += dx[i]\n }\n }\n\n return measure\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!ctx.measureText) {\n return targetText.length * 10\n }\n\n ctx.save()\n this.setContext(ctx, true)\n\n const { width: measure } = ctx.measureText(targetText)\n\n this.clearContext(ctx)\n ctx.restore()\n\n return measure\n }\n\n /**\n * Inherits positional attributes from {@link TextElement} parent(s). Attributes\n * are only inherited from a parent to its first child.\n * @param name - The attribute name.\n * @returns The attribute value or null.\n */\n protected getInheritedAttribute(name: string): string | null {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n let current: Element | null = this\n\n while (current instanceof TextElement && current.isFirstChild() && current.parent) {\n const parentAttr = current.parent.getAttribute(name)\n\n if (parentAttr.hasValue(true)) {\n return parentAttr.getString('0')\n }\n\n current = current.parent\n }\n\n return null\n }\n}\n","import { Document } from './Document'\nimport { TextElement } from './TextElement'\n\nexport class TSpanElement extends TextElement {\n override type = 'tspan'\n protected readonly text: string\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(\n document,\n node,\n new.target === TSpanElement\n ? true\n : captureTextNodes\n )\n\n // if this node has children, then they own the text\n this.text = this.children.length > 0\n ? ''\n : this.getTextFromNode()\n }\n\n override getText() {\n return this.text\n }\n}\n","import { TSpanElement } from './TSpanElement'\n\nexport class TextNode extends TSpanElement {\n override type = 'textNode'\n}\n","/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar t=function(r,e){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(t[e]=r[e])})(r,e)};function r(r,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Class extends value \"+String(e)+\" is not a constructor or null\");function i(){this.constructor=r}t(r,e),r.prototype=null===e?Object.create(e):(i.prototype=e.prototype,new i)}function e(t){var r=\"\";Array.isArray(t)||(t=[t]);for(var e=0;e<t.length;e++){var i=t[e];if(i.type===_.CLOSE_PATH)r+=\"z\";else if(i.type===_.HORIZ_LINE_TO)r+=(i.relative?\"h\":\"H\")+i.x;else if(i.type===_.VERT_LINE_TO)r+=(i.relative?\"v\":\"V\")+i.y;else if(i.type===_.MOVE_TO)r+=(i.relative?\"m\":\"M\")+i.x+\" \"+i.y;else if(i.type===_.LINE_TO)r+=(i.relative?\"l\":\"L\")+i.x+\" \"+i.y;else if(i.type===_.CURVE_TO)r+=(i.relative?\"c\":\"C\")+i.x1+\" \"+i.y1+\" \"+i.x2+\" \"+i.y2+\" \"+i.x+\" \"+i.y;else if(i.type===_.SMOOTH_CURVE_TO)r+=(i.relative?\"s\":\"S\")+i.x2+\" \"+i.y2+\" \"+i.x+\" \"+i.y;else if(i.type===_.QUAD_TO)r+=(i.relative?\"q\":\"Q\")+i.x1+\" \"+i.y1+\" \"+i.x+\" \"+i.y;else if(i.type===_.SMOOTH_QUAD_TO)r+=(i.relative?\"t\":\"T\")+i.x+\" \"+i.y;else{if(i.type!==_.ARC)throw new Error('Unexpected command type \"'+i.type+'\" at index '+e+\".\");r+=(i.relative?\"a\":\"A\")+i.rX+\" \"+i.rY+\" \"+i.xRot+\" \"+ +i.lArcFlag+\" \"+ +i.sweepFlag+\" \"+i.x+\" \"+i.y}}return r}function i(t,r){var e=t[0],i=t[1];return[e*Math.cos(r)-i*Math.sin(r),e*Math.sin(r)+i*Math.cos(r)]}function a(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];for(var e=0;e<t.length;e++)if(\"number\"!=typeof t[e])throw new Error(\"assertNumbers arguments[\"+e+\"] is not a number. \"+typeof t[e]+\" == typeof \"+t[e]);return!0}var n=Math.PI;function o(t,r,e){t.lArcFlag=0===t.lArcFlag?0:1,t.sweepFlag=0===t.sweepFlag?0:1;var a=t.rX,o=t.rY,s=t.x,u=t.y;a=Math.abs(t.rX),o=Math.abs(t.rY);var h=i([(r-s)/2,(e-u)/2],-t.xRot/180*n),c=h[0],y=h[1],p=Math.pow(c,2)/Math.pow(a,2)+Math.pow(y,2)/Math.pow(o,2);1<p&&(a*=Math.sqrt(p),o*=Math.sqrt(p)),t.rX=a,t.rY=o;var m=Math.pow(a,2)*Math.pow(y,2)+Math.pow(o,2)*Math.pow(c,2),O=(t.lArcFlag!==t.sweepFlag?1:-1)*Math.sqrt(Math.max(0,(Math.pow(a,2)*Math.pow(o,2)-m)/m)),l=a*y/o*O,T=-o*c/a*O,v=i([l,T],t.xRot/180*n);t.cX=v[0]+(r+s)/2,t.cY=v[1]+(e+u)/2,t.phi1=Math.atan2((y-T)/o,(c-l)/a),t.phi2=Math.atan2((-y-T)/o,(-c-l)/a),0===t.sweepFlag&&t.phi2>t.phi1&&(t.phi2-=2*n),1===t.sweepFlag&&t.phi2<t.phi1&&(t.phi2+=2*n),t.phi1*=180/n,t.phi2*=180/n}function s(t,r,e){a(t,r,e);var i=t*t+r*r-e*e;if(0>i)return[];if(0===i)return[[t*e/(t*t+r*r),r*e/(t*t+r*r)]];var n=Math.sqrt(i);return[[(t*e+r*n)/(t*t+r*r),(r*e-t*n)/(t*t+r*r)],[(t*e-r*n)/(t*t+r*r),(r*e+t*n)/(t*t+r*r)]]}var u,h=Math.PI/180;function c(t,r,e){return(1-e)*t+e*r}function y(t,r,e,i){return t+Math.cos(i/180*n)*r+Math.sin(i/180*n)*e}function p(t,r,e,i){var a=1e-6,n=r-t,o=e-r,s=3*n+3*(i-e)-6*o,u=6*(o-n),h=3*n;return Math.abs(s)<a?[-h/u]:function(t,r,e){void 0===e&&(e=1e-6);var i=t*t/4-r;if(i<-e)return[];if(i<=e)return[-t/2];var a=Math.sqrt(i);return[-t/2-a,-t/2+a]}(u/s,h/s,a)}function m(t,r,e,i,a){var n=1-a;return t*(n*n*n)+r*(3*n*n*a)+e*(3*n*a*a)+i*(a*a*a)}!function(t){function r(){return u((function(t,r,e){return t.relative&&(void 0!==t.x1&&(t.x1+=r),void 0!==t.y1&&(t.y1+=e),void 0!==t.x2&&(t.x2+=r),void 0!==t.y2&&(t.y2+=e),void 0!==t.x&&(t.x+=r),void 0!==t.y&&(t.y+=e),t.relative=!1),t}))}function e(){var t=NaN,r=NaN,e=NaN,i=NaN;return u((function(a,n,o){return a.type&_.SMOOTH_CURVE_TO&&(a.type=_.CURVE_TO,t=isNaN(t)?n:t,r=isNaN(r)?o:r,a.x1=a.relative?n-t:2*n-t,a.y1=a.relative?o-r:2*o-r),a.type&_.CURVE_TO?(t=a.relative?n+a.x2:a.x2,r=a.relative?o+a.y2:a.y2):(t=NaN,r=NaN),a.type&_.SMOOTH_QUAD_TO&&(a.type=_.QUAD_TO,e=isNaN(e)?n:e,i=isNaN(i)?o:i,a.x1=a.relative?n-e:2*n-e,a.y1=a.relative?o-i:2*o-i),a.type&_.QUAD_TO?(e=a.relative?n+a.x1:a.x1,i=a.relative?o+a.y1:a.y1):(e=NaN,i=NaN),a}))}function n(){var t=NaN,r=NaN;return u((function(e,i,a){if(e.type&_.SMOOTH_QUAD_TO&&(e.type=_.QUAD_TO,t=isNaN(t)?i:t,r=isNaN(r)?a:r,e.x1=e.relative?i-t:2*i-t,e.y1=e.relative?a-r:2*a-r),e.type&_.QUAD_TO){t=e.relative?i+e.x1:e.x1,r=e.relative?a+e.y1:e.y1;var n=e.x1,o=e.y1;e.type=_.CURVE_TO,e.x1=((e.relative?0:i)+2*n)/3,e.y1=((e.relative?0:a)+2*o)/3,e.x2=(e.x+2*n)/3,e.y2=(e.y+2*o)/3}else t=NaN,r=NaN;return e}))}function u(t){var r=0,e=0,i=NaN,a=NaN;return function(n){if(isNaN(i)&&!(n.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");var o=t(n,r,e,i,a);return n.type&_.CLOSE_PATH&&(r=i,e=a),void 0!==n.x&&(r=n.relative?r+n.x:n.x),void 0!==n.y&&(e=n.relative?e+n.y:n.y),n.type&_.MOVE_TO&&(i=r,a=e),o}}function O(t,r,e,i,n,o){return a(t,r,e,i,n,o),u((function(a,s,u,h){var c=a.x1,y=a.x2,p=a.relative&&!isNaN(h),m=void 0!==a.x?a.x:p?0:s,O=void 0!==a.y?a.y:p?0:u;function l(t){return t*t}a.type&_.HORIZ_LINE_TO&&0!==r&&(a.type=_.LINE_TO,a.y=a.relative?0:u),a.type&_.VERT_LINE_TO&&0!==e&&(a.type=_.LINE_TO,a.x=a.relative?0:s),void 0!==a.x&&(a.x=a.x*t+O*e+(p?0:n)),void 0!==a.y&&(a.y=m*r+a.y*i+(p?0:o)),void 0!==a.x1&&(a.x1=a.x1*t+a.y1*e+(p?0:n)),void 0!==a.y1&&(a.y1=c*r+a.y1*i+(p?0:o)),void 0!==a.x2&&(a.x2=a.x2*t+a.y2*e+(p?0:n)),void 0!==a.y2&&(a.y2=y*r+a.y2*i+(p?0:o));var T=t*i-r*e;if(void 0!==a.xRot&&(1!==t||0!==r||0!==e||1!==i))if(0===T)delete a.rX,delete a.rY,delete a.xRot,delete a.lArcFlag,delete a.sweepFlag,a.type=_.LINE_TO;else{var v=a.xRot*Math.PI/180,f=Math.sin(v),N=Math.cos(v),x=1/l(a.rX),d=1/l(a.rY),E=l(N)*x+l(f)*d,A=2*f*N*(x-d),C=l(f)*x+l(N)*d,M=E*i*i-A*r*i+C*r*r,R=A*(t*i+r*e)-2*(E*e*i+C*t*r),g=E*e*e-A*t*e+C*t*t,I=(Math.atan2(R,M-g)+Math.PI)%Math.PI/2,S=Math.sin(I),L=Math.cos(I);a.rX=Math.abs(T)/Math.sqrt(M*l(L)+R*S*L+g*l(S)),a.rY=Math.abs(T)/Math.sqrt(M*l(S)-R*S*L+g*l(L)),a.xRot=180*I/Math.PI}return void 0!==a.sweepFlag&&0>T&&(a.sweepFlag=+!a.sweepFlag),a}))}function l(){return function(t){var r={};for(var e in t)r[e]=t[e];return r}}t.ROUND=function(t){function r(r){return Math.round(r*t)/t}return void 0===t&&(t=1e13),a(t),function(t){return void 0!==t.x1&&(t.x1=r(t.x1)),void 0!==t.y1&&(t.y1=r(t.y1)),void 0!==t.x2&&(t.x2=r(t.x2)),void 0!==t.y2&&(t.y2=r(t.y2)),void 0!==t.x&&(t.x=r(t.x)),void 0!==t.y&&(t.y=r(t.y)),void 0!==t.rX&&(t.rX=r(t.rX)),void 0!==t.rY&&(t.rY=r(t.rY)),t}},t.TO_ABS=r,t.TO_REL=function(){return u((function(t,r,e){return t.relative||(void 0!==t.x1&&(t.x1-=r),void 0!==t.y1&&(t.y1-=e),void 0!==t.x2&&(t.x2-=r),void 0!==t.y2&&(t.y2-=e),void 0!==t.x&&(t.x-=r),void 0!==t.y&&(t.y-=e),t.relative=!0),t}))},t.NORMALIZE_HVZ=function(t,r,e){return void 0===t&&(t=!0),void 0===r&&(r=!0),void 0===e&&(e=!0),u((function(i,a,n,o,s){if(isNaN(o)&&!(i.type&_.MOVE_TO))throw new Error(\"path must start with moveto\");return r&&i.type&_.HORIZ_LINE_TO&&(i.type=_.LINE_TO,i.y=i.relative?0:n),e&&i.type&_.VERT_LINE_TO&&(i.type=_.LINE_TO,i.x=i.relative?0:a),t&&i.type&_.CLOSE_PATH&&(i.type=_.LINE_TO,i.x=i.relative?o-a:o,i.y=i.relative?s-n:s),i.type&_.ARC&&(0===i.rX||0===i.rY)&&(i.type=_.LINE_TO,delete i.rX,delete i.rY,delete i.xRot,delete i.lArcFlag,delete i.sweepFlag),i}))},t.NORMALIZE_ST=e,t.QT_TO_C=n,t.INFO=u,t.SANITIZE=function(t){void 0===t&&(t=0),a(t);var r=NaN,e=NaN,i=NaN,n=NaN;return u((function(a,o,s,u,h){var c=Math.abs,y=!1,p=0,m=0;if(a.type&_.SMOOTH_CURVE_TO&&(p=isNaN(r)?0:o-r,m=isNaN(e)?0:s-e),a.type&(_.CURVE_TO|_.SMOOTH_CURVE_TO)?(r=a.relative?o+a.x2:a.x2,e=a.relative?s+a.y2:a.y2):(r=NaN,e=NaN),a.type&_.SMOOTH_QUAD_TO?(i=isNaN(i)?o:2*o-i,n=isNaN(n)?s:2*s-n):a.type&_.QUAD_TO?(i=a.relative?o+a.x1:a.x1,n=a.relative?s+a.y1:a.y2):(i=NaN,n=NaN),a.type&_.LINE_COMMANDS||a.type&_.ARC&&(0===a.rX||0===a.rY||!a.lArcFlag)||a.type&_.CURVE_TO||a.type&_.SMOOTH_CURVE_TO||a.type&_.QUAD_TO||a.type&_.SMOOTH_QUAD_TO){var O=void 0===a.x?0:a.relative?a.x:a.x-o,l=void 0===a.y?0:a.relative?a.y:a.y-s;p=isNaN(i)?void 0===a.x1?p:a.relative?a.x:a.x1-o:i-o,m=isNaN(n)?void 0===a.y1?m:a.relative?a.y:a.y1-s:n-s;var T=void 0===a.x2?0:a.relative?a.x:a.x2-o,v=void 0===a.y2?0:a.relative?a.y:a.y2-s;c(O)<=t&&c(l)<=t&&c(p)<=t&&c(m)<=t&&c(T)<=t&&c(v)<=t&&(y=!0)}return a.type&_.CLOSE_PATH&&c(o-u)<=t&&c(s-h)<=t&&(y=!0),y?[]:a}))},t.MATRIX=O,t.ROTATE=function(t,r,e){void 0===r&&(r=0),void 0===e&&(e=0),a(t,r,e);var i=Math.sin(t),n=Math.cos(t);return O(n,i,-i,n,r-r*n+e*i,e-r*i-e*n)},t.TRANSLATE=function(t,r){return void 0===r&&(r=0),a(t,r),O(1,0,0,1,t,r)},t.SCALE=function(t,r){return void 0===r&&(r=t),a(t,r),O(t,0,0,r,0,0)},t.SKEW_X=function(t){return a(t),O(1,0,Math.atan(t),1,0,0)},t.SKEW_Y=function(t){return a(t),O(1,Math.atan(t),0,1,0,0)},t.X_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(-1,0,0,1,t,0)},t.Y_AXIS_SYMMETRY=function(t){return void 0===t&&(t=0),a(t),O(1,0,0,-1,0,t)},t.A_TO_C=function(){return u((function(t,r,e){return _.ARC===t.type?function(t,r,e){var a,n,s,u;t.cX||o(t,r,e);for(var y=Math.min(t.phi1,t.phi2),p=Math.max(t.phi1,t.phi2)-y,m=Math.ceil(p/90),O=new Array(m),l=r,T=e,v=0;v<m;v++){var f=c(t.phi1,t.phi2,v/m),N=c(t.phi1,t.phi2,(v+1)/m),x=N-f,d=4/3*Math.tan(x*h/4),E=[Math.cos(f*h)-d*Math.sin(f*h),Math.sin(f*h)+d*Math.cos(f*h)],A=E[0],C=E[1],M=[Math.cos(N*h),Math.sin(N*h)],R=M[0],g=M[1],I=[R+d*Math.sin(N*h),g-d*Math.cos(N*h)],S=I[0],L=I[1];O[v]={relative:t.relative,type:_.CURVE_TO};var H=function(r,e){var a=i([r*t.rX,e*t.rY],t.xRot),n=a[0],o=a[1];return[t.cX+n,t.cY+o]};a=H(A,C),O[v].x1=a[0],O[v].y1=a[1],n=H(S,L),O[v].x2=n[0],O[v].y2=n[1],s=H(R,g),O[v].x=s[0],O[v].y=s[1],t.relative&&(O[v].x1-=l,O[v].y1-=T,O[v].x2-=l,O[v].y2-=T,O[v].x-=l,O[v].y-=T),l=(u=[O[v].x,O[v].y])[0],T=u[1]}return O}(t,t.relative?0:r,t.relative?0:e):t}))},t.ANNOTATE_ARCS=function(){return u((function(t,r,e){return t.relative&&(r=0,e=0),_.ARC===t.type&&o(t,r,e),t}))},t.CLONE=l,t.CALCULATE_BOUNDS=function(){var t=function(t){var r={};for(var e in t)r[e]=t[e];return r},i=r(),a=n(),h=e(),c=u((function(r,e,n){var u=h(a(i(t(r))));function O(t){t>c.maxX&&(c.maxX=t),t<c.minX&&(c.minX=t)}function l(t){t>c.maxY&&(c.maxY=t),t<c.minY&&(c.minY=t)}if(u.type&_.DRAWING_COMMANDS&&(O(e),l(n)),u.type&_.HORIZ_LINE_TO&&O(u.x),u.type&_.VERT_LINE_TO&&l(u.y),u.type&_.LINE_TO&&(O(u.x),l(u.y)),u.type&_.CURVE_TO){O(u.x),l(u.y);for(var T=0,v=p(e,u.x1,u.x2,u.x);T<v.length;T++){0<(w=v[T])&&1>w&&O(m(e,u.x1,u.x2,u.x,w))}for(var f=0,N=p(n,u.y1,u.y2,u.y);f<N.length;f++){0<(w=N[f])&&1>w&&l(m(n,u.y1,u.y2,u.y,w))}}if(u.type&_.ARC){O(u.x),l(u.y),o(u,e,n);for(var x=u.xRot/180*Math.PI,d=Math.cos(x)*u.rX,E=Math.sin(x)*u.rX,A=-Math.sin(x)*u.rY,C=Math.cos(x)*u.rY,M=u.phi1<u.phi2?[u.phi1,u.phi2]:-180>u.phi2?[u.phi2+360,u.phi1+360]:[u.phi2,u.phi1],R=M[0],g=M[1],I=function(t){var r=t[0],e=t[1],i=180*Math.atan2(e,r)/Math.PI;return i<R?i+360:i},S=0,L=s(A,-d,0).map(I);S<L.length;S++){(w=L[S])>R&&w<g&&O(y(u.cX,d,A,w))}for(var H=0,U=s(C,-E,0).map(I);H<U.length;H++){var w;(w=U[H])>R&&w<g&&l(y(u.cY,E,C,w))}}return r}));return c.minX=1/0,c.maxX=-1/0,c.minY=1/0,c.maxY=-1/0,c}}(u||(u={}));var O,l=function(){function t(){}return t.prototype.round=function(t){return this.transform(u.ROUND(t))},t.prototype.toAbs=function(){return this.transform(u.TO_ABS())},t.prototype.toRel=function(){return this.transform(u.TO_REL())},t.prototype.normalizeHVZ=function(t,r,e){return this.transform(u.NORMALIZE_HVZ(t,r,e))},t.prototype.normalizeST=function(){return this.transform(u.NORMALIZE_ST())},t.prototype.qtToC=function(){return this.transform(u.QT_TO_C())},t.prototype.aToC=function(){return this.transform(u.A_TO_C())},t.prototype.sanitize=function(t){return this.transform(u.SANITIZE(t))},t.prototype.translate=function(t,r){return this.transform(u.TRANSLATE(t,r))},t.prototype.scale=function(t,r){return this.transform(u.SCALE(t,r))},t.prototype.rotate=function(t,r,e){return this.transform(u.ROTATE(t,r,e))},t.prototype.matrix=function(t,r,e,i,a,n){return this.transform(u.MATRIX(t,r,e,i,a,n))},t.prototype.skewX=function(t){return this.transform(u.SKEW_X(t))},t.prototype.skewY=function(t){return this.transform(u.SKEW_Y(t))},t.prototype.xSymmetry=function(t){return this.transform(u.X_AXIS_SYMMETRY(t))},t.prototype.ySymmetry=function(t){return this.transform(u.Y_AXIS_SYMMETRY(t))},t.prototype.annotateArcs=function(){return this.transform(u.ANNOTATE_ARCS())},t}(),T=function(t){return\" \"===t||\"\\t\"===t||\"\\r\"===t||\"\\n\"===t},v=function(t){return\"0\".charCodeAt(0)<=t.charCodeAt(0)&&t.charCodeAt(0)<=\"9\".charCodeAt(0)},f=function(t){function e(){var r=t.call(this)||this;return r.curNumber=\"\",r.curCommandType=-1,r.curCommandRelative=!1,r.canParseCommandOrComma=!0,r.curNumberHasExp=!1,r.curNumberHasExpDigits=!1,r.curNumberHasDecimal=!1,r.curArgs=[],r}return r(e,t),e.prototype.finish=function(t){if(void 0===t&&(t=[]),this.parse(\" \",t),0!==this.curArgs.length||!this.canParseCommandOrComma)throw new SyntaxError(\"Unterminated command at the path end.\");return t},e.prototype.parse=function(t,r){var e=this;void 0===r&&(r=[]);for(var i=function(t){r.push(t),e.curArgs.length=0,e.canParseCommandOrComma=!0},a=0;a<t.length;a++){var n=t[a],o=!(this.curCommandType!==_.ARC||3!==this.curArgs.length&&4!==this.curArgs.length||1!==this.curNumber.length||\"0\"!==this.curNumber&&\"1\"!==this.curNumber),s=v(n)&&(\"0\"===this.curNumber&&\"0\"===n||o);if(!v(n)||s)if(\"e\"!==n&&\"E\"!==n)if(\"-\"!==n&&\"+\"!==n||!this.curNumberHasExp||this.curNumberHasExpDigits)if(\".\"!==n||this.curNumberHasExp||this.curNumberHasDecimal||o){if(this.curNumber&&-1!==this.curCommandType){var u=Number(this.curNumber);if(isNaN(u))throw new SyntaxError(\"Invalid number ending at \"+a);if(this.curCommandType===_.ARC)if(0===this.curArgs.length||1===this.curArgs.length){if(0>u)throw new SyntaxError('Expected positive number, got \"'+u+'\" at index \"'+a+'\"')}else if((3===this.curArgs.length||4===this.curArgs.length)&&\"0\"!==this.curNumber&&\"1\"!==this.curNumber)throw new SyntaxError('Expected a flag, got \"'+this.curNumber+'\" at index \"'+a+'\"');this.curArgs.push(u),this.curArgs.length===N[this.curCommandType]&&(_.HORIZ_LINE_TO===this.curCommandType?i({type:_.HORIZ_LINE_TO,relative:this.curCommandRelative,x:u}):_.VERT_LINE_TO===this.curCommandType?i({type:_.VERT_LINE_TO,relative:this.curCommandRelative,y:u}):this.curCommandType===_.MOVE_TO||this.curCommandType===_.LINE_TO||this.curCommandType===_.SMOOTH_QUAD_TO?(i({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),_.MOVE_TO===this.curCommandType&&(this.curCommandType=_.LINE_TO)):this.curCommandType===_.CURVE_TO?i({type:_.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===_.SMOOTH_CURVE_TO?i({type:_.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.QUAD_TO?i({type:_.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===_.ARC&&i({type:_.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber=\"\",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!T(n))if(\",\"===n&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if(\"+\"!==n&&\"-\"!==n&&\".\"!==n)if(s)this.curNumber=n,this.curNumberHasDecimal=!1;else{if(0!==this.curArgs.length)throw new SyntaxError(\"Unterminated command at index \"+a+\".\");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\". Command cannot follow comma\");if(this.canParseCommandOrComma=!1,\"z\"!==n&&\"Z\"!==n)if(\"h\"===n||\"H\"===n)this.curCommandType=_.HORIZ_LINE_TO,this.curCommandRelative=\"h\"===n;else if(\"v\"===n||\"V\"===n)this.curCommandType=_.VERT_LINE_TO,this.curCommandRelative=\"v\"===n;else if(\"m\"===n||\"M\"===n)this.curCommandType=_.MOVE_TO,this.curCommandRelative=\"m\"===n;else if(\"l\"===n||\"L\"===n)this.curCommandType=_.LINE_TO,this.curCommandRelative=\"l\"===n;else if(\"c\"===n||\"C\"===n)this.curCommandType=_.CURVE_TO,this.curCommandRelative=\"c\"===n;else if(\"s\"===n||\"S\"===n)this.curCommandType=_.SMOOTH_CURVE_TO,this.curCommandRelative=\"s\"===n;else if(\"q\"===n||\"Q\"===n)this.curCommandType=_.QUAD_TO,this.curCommandRelative=\"q\"===n;else if(\"t\"===n||\"T\"===n)this.curCommandType=_.SMOOTH_QUAD_TO,this.curCommandRelative=\"t\"===n;else{if(\"a\"!==n&&\"A\"!==n)throw new SyntaxError('Unexpected character \"'+n+'\" at index '+a+\".\");this.curCommandType=_.ARC,this.curCommandRelative=\"a\"===n}else r.push({type:_.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=n,this.curNumberHasDecimal=\".\"===n}else this.curNumber+=n,this.curNumberHasDecimal=!0;else this.curNumber+=n;else this.curNumber+=n,this.curNumberHasExp=!0;else this.curNumber+=n,this.curNumberHasExpDigits=this.curNumberHasExp}return r},e.prototype.transform=function(t){return Object.create(this,{parse:{value:function(r,e){void 0===e&&(e=[]);for(var i=0,a=Object.getPrototypeOf(this).parse.call(this,r);i<a.length;i++){var n=a[i],o=t(n);Array.isArray(o)?e.push.apply(e,o):e.push(o)}return e}}})},e}(l),_=function(t){function i(r){var e=t.call(this)||this;return e.commands=\"string\"==typeof r?i.parse(r):r,e}return r(i,t),i.prototype.encode=function(){return i.encode(this.commands)},i.prototype.getBounds=function(){var t=u.CALCULATE_BOUNDS();return this.transform(t),t},i.prototype.transform=function(t){for(var r=[],e=0,i=this.commands;e<i.length;e++){var a=t(i[e]);Array.isArray(a)?r.push.apply(r,a):r.push(a)}return this.commands=r,this},i.encode=function(t){return e(t)},i.parse=function(t){var r=new f,e=[];return r.parse(t,e),r.finish(e),e},i.CLOSE_PATH=1,i.MOVE_TO=2,i.HORIZ_LINE_TO=4,i.VERT_LINE_TO=8,i.LINE_TO=16,i.CURVE_TO=32,i.SMOOTH_CURVE_TO=64,i.QUAD_TO=128,i.SMOOTH_QUAD_TO=256,i.ARC=512,i.LINE_COMMANDS=i.LINE_TO|i.HORIZ_LINE_TO|i.VERT_LINE_TO,i.DRAWING_COMMANDS=i.HORIZ_LINE_TO|i.VERT_LINE_TO|i.LINE_TO|i.CURVE_TO|i.SMOOTH_CURVE_TO|i.QUAD_TO|i.SMOOTH_QUAD_TO|i.ARC,i}(l),N=((O={})[_.MOVE_TO]=2,O[_.LINE_TO]=2,O[_.HORIZ_LINE_TO]=1,O[_.VERT_LINE_TO]=1,O[_.CLOSE_PATH]=0,O[_.QUAD_TO]=4,O[_.SMOOTH_QUAD_TO]=2,O[_.CURVE_TO]=6,O[_.SMOOTH_CURVE_TO]=4,O[_.ARC]=7,O);export{N as COMMAND_ARG_COUNTS,_ as SVGPathData,f as SVGPathDataParser,u as SVGPathDataTransformer,e as encodeSVGPath};\n//# sourceMappingURL=SVGPathData.module.js.map\n","import {\n SVGCommand,\n CommandM,\n CommandL,\n CommandH,\n CommandV,\n CommandZ,\n CommandQ,\n CommandT,\n CommandC,\n CommandS,\n CommandA\n} from 'svg-pathdata/lib/types'\nimport { SVGPathData } from 'svg-pathdata'\nimport { Point } from './Point'\n\nexport type CommandType = SVGCommand['type']\nexport type Command = { type: CommandType }\n & Omit<CommandM, 'type'>\n & Omit<CommandL, 'type'>\n & Omit<CommandH, 'type'>\n & Omit<CommandV, 'type'>\n & Omit<CommandZ, 'type'>\n & Omit<CommandQ, 'type'>\n & Omit<CommandT, 'type'>\n & Omit<CommandC, 'type'>\n & Omit<CommandS, 'type'>\n & Omit<CommandA, 'type'>\n\nexport class PathParser extends SVGPathData {\n control: Point = new Point(0, 0)\n start: Point = new Point(0, 0)\n current: Point = new Point(0, 0)\n command: Command | null = null\n override readonly commands: Command[] /* Babel fix: */ = this.commands\n private i = -1\n private previousCommand: Command | null = null\n private points: Point[] = []\n private angles: (number | null)[] = []\n\n constructor(path: string) {\n super(\n path\n // Fix spaces after signs.\n .replace(/([+\\-.])\\s+/gm, '$1')\n // Remove invalid part.\n .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, '')\n )\n }\n\n reset() {\n this.i = -1\n this.command = null\n this.previousCommand = null\n this.start = new Point(0, 0)\n this.control = new Point(0, 0)\n this.current = new Point(0, 0)\n this.points = []\n this.angles = []\n }\n\n isEnd() {\n const {\n i,\n commands\n } = this\n\n return i >= commands.length - 1\n }\n\n next() {\n const command = this.commands[++this.i]\n\n this.previousCommand = this.command\n this.command = command\n\n return command\n }\n\n getPoint(xProp = 'x', yProp = 'y') {\n const point = new Point(\n this.command[xProp] as number,\n this.command[yProp] as number\n )\n\n return this.makeAbsolute(point)\n }\n\n getAsControlPoint(xProp?: string, yProp?: string) {\n const point = this.getPoint(xProp, yProp)\n\n this.control = point\n\n return point\n }\n\n getAsCurrentPoint(xProp?: string, yProp?: string) {\n const point = this.getPoint(xProp, yProp)\n\n this.current = point\n\n return point\n }\n\n getReflectedControlPoint() {\n const previousCommand = this.previousCommand.type\n\n if (previousCommand !== SVGPathData.CURVE_TO\n && previousCommand !== SVGPathData.SMOOTH_CURVE_TO\n && previousCommand !== SVGPathData.QUAD_TO\n && previousCommand !== SVGPathData.SMOOTH_QUAD_TO\n ) {\n return this.current\n }\n\n // reflect point\n const {\n current: {\n x: cx,\n y: cy\n },\n control: {\n x: ox,\n y: oy\n }\n } = this\n const point = new Point(2 * cx - ox, 2 * cy - oy)\n\n return point\n }\n\n makeAbsolute(point: Point) {\n if (this.command.relative) {\n const {\n x,\n y\n } = this.current\n\n point.x += x\n point.y += y\n }\n\n return point\n }\n\n addMarker(point: Point, from?: Point, priorTo?: Point) {\n const {\n points,\n angles\n } = this\n\n // if the last angle isn't filled in because we didn't have this point yet ...\n if (priorTo && angles.length > 0 && !angles[angles.length - 1]) {\n angles[angles.length - 1] = points[points.length - 1].angleTo(priorTo)\n }\n\n this.addMarkerAngle(point, from ? from.angleTo(point) : null)\n }\n\n addMarkerAngle(point: Point, angle: number) {\n this.points.push(point)\n this.angles.push(angle)\n }\n\n getMarkerPoints() {\n return this.points\n }\n\n getMarkerAngles() {\n const { angles } = this\n const len = angles.length\n\n for (let i = 0; i < len; i++) {\n if (!angles[i]) {\n for (let j = i + 1; j < len; j++) {\n if (angles[j]) {\n angles[i] = angles[j]\n break\n }\n }\n }\n }\n\n return angles\n }\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { RenderingContext2D } from '../types'\nimport {\n vectorsRatio,\n vectorsAngle\n} from '../util'\nimport { Point } from '../Point'\nimport { BoundingBox } from '../BoundingBox'\nimport { PathParser } from '../PathParser'\nimport { Document } from './Document'\nimport { RenderedElement } from './RenderedElement'\nimport { MarkerElement } from './MarkerElement'\n\nexport type Marker = [Point, number]\n\nexport class PathElement extends RenderedElement {\n override type = 'path'\n readonly pathParser: PathParser\n\n constructor(\n document: Document,\n node?: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n this.pathParser = new PathParser(this.getAttribute('d').getString())\n }\n\n path(ctx?: RenderingContext2D) {\n const { pathParser } = this\n const boundingBox = new BoundingBox()\n\n pathParser.reset()\n\n if (ctx) {\n ctx.beginPath()\n }\n\n while (!pathParser.isEnd()) {\n switch (pathParser.next().type) {\n case PathParser.MOVE_TO:\n this.pathM(ctx, boundingBox)\n break\n\n case PathParser.LINE_TO:\n this.pathL(ctx, boundingBox)\n break\n\n case PathParser.HORIZ_LINE_TO:\n this.pathH(ctx, boundingBox)\n break\n\n case PathParser.VERT_LINE_TO:\n this.pathV(ctx, boundingBox)\n break\n\n case PathParser.CURVE_TO:\n this.pathC(ctx, boundingBox)\n break\n\n case PathParser.SMOOTH_CURVE_TO:\n this.pathS(ctx, boundingBox)\n break\n\n case PathParser.QUAD_TO:\n this.pathQ(ctx, boundingBox)\n break\n\n case PathParser.SMOOTH_QUAD_TO:\n this.pathT(ctx, boundingBox)\n break\n\n case PathParser.ARC:\n this.pathA(ctx, boundingBox)\n break\n\n case PathParser.CLOSE_PATH:\n this.pathZ(ctx, boundingBox)\n break\n\n default:\n }\n }\n\n return boundingBox\n }\n\n getBoundingBox(_ctx: RenderingContext2D) {\n return this.path()\n }\n\n getMarkers(): Marker[] {\n const { pathParser } = this\n const points = pathParser.getMarkerPoints()\n const angles = pathParser.getMarkerAngles()\n const markers = points.map((point, i): Marker => [point, angles[i]])\n\n return markers\n }\n\n override renderChildren(ctx: RenderingContext2D) {\n this.path(ctx)\n this.document.screen.mouse.checkPath(this, ctx)\n\n const fillRuleStyleProp = this.getStyle('fill-rule')\n\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n ctx.fill(fillRuleStyleProp.getString() as CanvasFillRule)\n } else {\n ctx.fill()\n }\n }\n\n if (ctx.strokeStyle !== '') {\n if (this.getAttribute('vector-effect').getString() === 'non-scaling-stroke') {\n ctx.save()\n ctx.setTransform(1, 0, 0, 1, 0, 0)\n ctx.stroke()\n ctx.restore()\n } else {\n ctx.stroke()\n }\n }\n\n const markers = this.getMarkers()\n\n if (markers) {\n const markersLastIndex = markers.length - 1\n const markerStartStyleProp = this.getStyle('marker-start')\n const markerMidStyleProp = this.getStyle('marker-mid')\n const markerEndStyleProp = this.getStyle('marker-end')\n\n if (markerStartStyleProp.isUrlDefinition()) {\n const marker = markerStartStyleProp.getDefinition<MarkerElement>()\n const [point, angle] = markers[0]\n\n marker.render(ctx, point, angle)\n }\n\n if (markerMidStyleProp.isUrlDefinition()) {\n const marker = markerMidStyleProp.getDefinition<MarkerElement>()\n\n for (let i = 1; i < markersLastIndex; i++) {\n const [point, angle] = markers[i]\n\n marker.render(ctx, point, angle)\n }\n }\n\n if (markerEndStyleProp.isUrlDefinition()) {\n const marker = markerEndStyleProp.getDefinition<MarkerElement>()\n const [point, angle] = markers[markersLastIndex]\n\n marker.render(ctx, point, angle)\n }\n }\n }\n\n static pathM(pathParser: PathParser) {\n const point = pathParser.getAsCurrentPoint()\n\n pathParser.start = pathParser.current\n\n return {\n point\n }\n }\n\n protected pathM(\n ctx: RenderingContext2D | undefined,\n boundingBox: BoundingBox\n ) {\n const { pathParser } = this\n const { point } = PathElement.pathM(pathParser)\n const {\n x,\n y\n } = point\n\n pathParser.addMarker(point)\n boundingBox.addPoint(x, y)\n\n if (ctx) {\n ctx.moveTo(x, y)\n }\n }\n\n static pathL(pathParser: PathParser) {\n const { current } = pathParser\n const point = pathParser.getAsCurrentPoint()\n\n return {\n current,\n point\n }\n }\n\n protected pathL(\n ctx: RenderingContext2D | undefined,\n boundingBox: BoundingBox\n ) {\n const { pathParser } = this\n const {\n current,\n point\n } = PathElement.pathL(pathParser)\n const {\n x,\n y\n } = point\n\n pathParser.addMarker(point, current)\n boundingBox.addPoint(x, y)\n\n if (ctx) {\n ctx.lineTo(x, y)\n }\n }\n\n static pathH(pathParser: PathParser) {\n const {\n current,\n command\n } = pathParser\n const point = new Point(\n (command.relative ? current.x : 0) + command.x,\n current.y\n )\n\n pathParser.current = point\n\n return {\n current,\n point\n }\n }\n\n protected pathH(\n ctx: RenderingContext2D | undefined,\n boundingBox: BoundingBox\n ) {\n const { pathParser } = this\n const {\n current,\n point\n } = PathElement.pathH(pathParser)\n const {\n x,\n y\n } = point\n\n pathParser.addMarker(point, current)\n boundingBox.addPoint(x, y)\n\n if (ctx) {\n ctx.lineTo(x, y)\n }\n }\n\n static pathV(pathParser: PathParser) {\n const {\n current,\n command\n } = pathParser\n const point = new Point(\n current.x,\n (command.relative ? current.y : 0) + command.y\n )\n\n pathParser.current = point\n\n return {\n current,\n point\n }\n }\n\n protected pathV(\n ctx: RenderingContext2D | undefined,\n boundingBox: BoundingBox\n ) {\n const { pathParser } = this\n const {\n current,\n point\n } = PathElement.pathV(pathParser)\n const {\n x,\n y\n } = point\n\n pathParser.addMarker(point, current)\n boundingBox.addPoint(x, y)\n\n if (ctx) {\n ctx.lineTo(x, y)\n }\n }\n\n static pathC(pathParser: PathParser) {\n const { current } = pathParser\n const point = pathParser.getPoint('x1', 'y1')\n const controlPoint = pathParser.getAsControlPoint('x2', 'y2')\n const currentPoint = pathParser.getAsCurrentPoint()\n\n return {\n current,\n point,\n controlPoint,\n currentPoint\n }\n }\n\n protected pathC(\n ctx: RenderingContext2D | undefined,\n boundingBox: BoundingBox\n ) {\n const { pathParser } = this\n const {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser)\n\n pathParser.addMarker(currentPoint, controlPoint, point)\n boundingBox.addBezierCurve(\n current.x,\n current.y,\n point.x,\n point.y,\n controlPoint.x,\n controlPoint.y,\n currentPoint.x,\n currentPoint.y\n )\n\n if (ctx) {\n ctx.bezierCurveTo(\n point.x,\n point.y,\n controlPoint.x,\n controlPoint.y,\n currentPoint.x,\n currentPoint.y\n )\n }\n }\n\n static pathS(pathParser: PathParser) {\n const { current } = pathParser\n const point = pathParser.getReflectedControlPoint()\n const controlPoint = pathParser.getAsControlPoint('x2', 'y2')\n const currentPoint = pathParser.getAsCurrentPoint()\n\n return {\n current,\n point,\n controlPoint,\n currentPoint\n }\n }\n\n protected pathS(\n ctx: RenderingContext2D | undefined,\n boundingBox: BoundingBox\n ) {\n const { pathParser } = this\n const {\n current,\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser)\n\n pathParser.addMarker(currentPoint, controlPoint, point)\n boundingBox.addBezierCurve(\n current.x,\n current.y,\n point.x,\n point.y,\n controlPoint.x,\n controlPoint.y,\n currentPoint.x,\n currentPoint.y\n )\n\n if (ctx) {\n ctx.bezierCurveTo(\n point.x,\n point.y,\n controlPoint.x,\n controlPoint.y,\n currentPoint.x,\n currentPoint.y\n )\n }\n }\n\n static pathQ(pathParser: PathParser) {\n const { current } = pathParser\n const controlPoint = pathParser.getAsControlPoint('x1', 'y1')\n const currentPoint = pathParser.getAsCurrentPoint()\n\n return {\n current,\n controlPoint,\n currentPoint\n }\n }\n\n protected pathQ(\n ctx: RenderingContext2D | undefined,\n boundingBox: BoundingBox\n ) {\n const { pathParser } = this\n const {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser)\n\n pathParser.addMarker(currentPoint, controlPoint, controlPoint)\n boundingBox.addQuadraticCurve(\n current.x,\n current.y,\n controlPoint.x,\n controlPoint.y,\n currentPoint.x,\n currentPoint.y\n )\n\n if (ctx) {\n ctx.quadraticCurveTo(\n controlPoint.x,\n controlPoint.y,\n currentPoint.x,\n currentPoint.y\n )\n }\n }\n\n static pathT(pathParser: PathParser) {\n const { current } = pathParser\n const controlPoint = pathParser.getReflectedControlPoint()\n\n pathParser.control = controlPoint\n\n const currentPoint = pathParser.getAsCurrentPoint()\n\n return {\n current,\n controlPoint,\n currentPoint\n }\n }\n\n protected pathT(\n ctx: RenderingContext2D | undefined,\n boundingBox: BoundingBox\n ) {\n const { pathParser } = this\n const {\n current,\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser)\n\n pathParser.addMarker(currentPoint, controlPoint, controlPoint)\n boundingBox.addQuadraticCurve(\n current.x,\n current.y,\n controlPoint.x,\n controlPoint.y,\n currentPoint.x,\n currentPoint.y\n )\n\n if (ctx) {\n ctx.quadraticCurveTo(\n controlPoint.x,\n controlPoint.y,\n currentPoint.x,\n currentPoint.y\n )\n }\n }\n\n static pathA(pathParser: PathParser) {\n const {\n current,\n command\n } = pathParser\n let {\n rX,\n rY,\n xRot,\n lArcFlag,\n sweepFlag\n } = command\n const xAxisRotation = xRot * (Math.PI / 180.0)\n const currentPoint = pathParser.getAsCurrentPoint()\n // Conversion from endpoint to center parameterization\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n // x1', y1'\n const currp = new Point(\n Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2.0\n + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2.0,\n -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2.0\n + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2.0\n )\n // adjust radii\n const l =\n Math.pow(currp.x, 2) / Math.pow(rX, 2)\n + Math.pow(currp.y, 2) / Math.pow(rY, 2)\n\n if (l > 1) {\n rX *= Math.sqrt(l)\n rY *= Math.sqrt(l)\n }\n\n // cx', cy'\n let s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt(\n (\n (Math.pow(rX, 2) * Math.pow(rY, 2))\n - (Math.pow(rX, 2) * Math.pow(currp.y, 2))\n - (Math.pow(rY, 2) * Math.pow(currp.x, 2))\n ) / (\n Math.pow(rX, 2) * Math.pow(currp.y, 2)\n + Math.pow(rY, 2) * Math.pow(currp.x, 2)\n )\n )\n\n if (isNaN(s)) {\n s = 0\n }\n\n const cpp = new Point(\n s * rX * currp.y / rY,\n s * -rY * currp.x / rX\n )\n // cx, cy\n const centp = new Point(\n (current.x + currentPoint.x) / 2.0\n + Math.cos(xAxisRotation) * cpp.x\n - Math.sin(xAxisRotation) * cpp.y,\n (current.y + currentPoint.y) / 2.0\n + Math.sin(xAxisRotation) * cpp.x\n + Math.cos(xAxisRotation) * cpp.y\n )\n // initial angle\n const a1 = vectorsAngle([1, 0], [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY]) // θ1\n // angle delta\n const u = [(currp.x - cpp.x) / rX, (currp.y - cpp.y) / rY] as const\n const v = [(-currp.x - cpp.x) / rX, (-currp.y - cpp.y) / rY] as const\n let ad = vectorsAngle(u, v) // Δθ\n\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI\n }\n\n if (vectorsRatio(u, v) >= 1) {\n ad = 0\n }\n\n return {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n }\n }\n\n protected pathA(\n ctx: RenderingContext2D | undefined,\n boundingBox: BoundingBox\n ) {\n const { pathParser } = this\n const {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser)\n // for markers\n const dir = 1 - sweepFlag ? 1.0 : -1.0\n const ah = a1 + dir * (ad / 2.0)\n const halfWay = new Point(\n centp.x + rX * Math.cos(ah),\n centp.y + rY * Math.sin(ah)\n )\n\n pathParser.addMarkerAngle(halfWay, ah - dir * Math.PI / 2)\n pathParser.addMarkerAngle(currentPoint, ah - dir * Math.PI)\n boundingBox.addPoint(currentPoint.x, currentPoint.y) // TODO: this is too naive, make it better\n\n if (ctx && !isNaN(a1) && !isNaN(ad)) {\n const r = rX > rY ? rX : rY\n const sx = rX > rY ? 1 : rX / rY\n const sy = rX > rY ? rY / rX : 1\n\n ctx.translate(centp.x, centp.y)\n ctx.rotate(xAxisRotation)\n ctx.scale(sx, sy)\n ctx.arc(0, 0, r, a1, a1 + ad, Boolean(1 - sweepFlag))\n ctx.scale(1 / sx, 1 / sy)\n ctx.rotate(-xAxisRotation)\n ctx.translate(-centp.x, -centp.y)\n }\n }\n\n static pathZ(pathParser: PathParser) {\n pathParser.current = pathParser.start\n }\n\n protected pathZ(\n ctx: RenderingContext2D | undefined,\n boundingBox: BoundingBox\n ) {\n PathElement.pathZ(this.pathParser)\n\n if (ctx) {\n // only close path if it is not a straight line\n if (boundingBox.x1 !== boundingBox.x2\n && boundingBox.y1 !== boundingBox.y2\n ) {\n ctx.closePath()\n }\n }\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { toNumbers } from '../util'\nimport { Property } from '../Property'\nimport { Font } from '../Font'\nimport { RenderedElement } from './RenderedElement'\n\nexport class SVGElement extends RenderedElement {\n override type = 'svg'\n root = false\n\n override setContext(ctx: RenderingContext2D) {\n const { document } = this\n const {\n screen,\n window\n } = document\n const canvas = ctx.canvas\n\n screen.setDefaults(ctx)\n\n if ('style' in canvas\n && typeof ctx.font !== 'undefined'\n && window\n && typeof window.getComputedStyle !== 'undefined'\n ) {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font')\n\n const fontSizeProp = new Property(\n document,\n 'fontSize',\n Font.parse(ctx.font).fontSize\n )\n\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y')\n document.emSize = document.rootEmSize\n }\n }\n\n // create new view port\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0)\n }\n\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0)\n }\n\n let {\n width,\n height\n } = screen.viewPort\n\n if (!this.getStyle('width').hasValue()) {\n this.getStyle('width', true).setValue('100%')\n }\n\n if (!this.getStyle('height').hasValue()) {\n this.getStyle('height', true).setValue('100%')\n }\n\n if (!this.getStyle('color').hasValue()) {\n this.getStyle('color', true).setValue('black')\n }\n\n const refXAttr = this.getAttribute('refX')\n const refYAttr = this.getAttribute('refY')\n const viewBoxAttr = this.getAttribute('viewBox')\n const viewBox = viewBoxAttr.hasValue()\n ? toNumbers(viewBoxAttr.getString())\n : null\n const clip = !this.root\n && this.getStyle('overflow').getValue('hidden') !== 'visible'\n let minX = 0\n let minY = 0\n let clipX = 0\n let clipY = 0\n\n if (viewBox) {\n minX = viewBox[0]\n minY = viewBox[1]\n }\n\n if (!this.root) {\n width = this.getStyle('width').getPixels('x')\n height = this.getStyle('height').getPixels('y')\n\n if (this.type === 'marker') {\n clipX = minX\n clipY = minY\n minX = 0\n minY = 0\n }\n }\n\n screen.viewPort.setCurrent(width, height)\n\n // Default value of transform-origin is center only for root SVG elements\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform-origin\n if (this.node // is not temporary SVGElement\n && (!this.parent || this.node.parentNode?.nodeName === 'foreignObject')\n && this.getStyle('transform', false, true).hasValue()\n && !this.getStyle('transform-origin', false, true).hasValue()\n ) {\n this.getStyle('transform-origin', true, true).setValue('50% 50%')\n }\n\n super.setContext(ctx)\n\n ctx.translate(\n this.getAttribute('x').getPixels('x'),\n this.getAttribute('y').getPixels('y')\n )\n\n if (viewBox) {\n width = viewBox[2]\n height = viewBox[3]\n }\n\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width: screen.viewPort.width,\n desiredWidth: width,\n height: screen.viewPort.height,\n desiredHeight: height,\n minX,\n minY,\n refX: refXAttr.getValue() as number,\n refY: refYAttr.getValue() as number,\n clip,\n clipX,\n clipY\n })\n\n if (viewBox) {\n screen.viewPort.removeCurrent()\n screen.viewPort.setCurrent(width, height)\n }\n }\n\n override clearContext(ctx: RenderingContext2D) {\n super.clearContext(ctx)\n\n this.document.screen.viewPort.removeCurrent()\n }\n\n /**\n * Resize SVG to fit in given size.\n * @param width\n * @param height\n * @param preserveAspectRatio\n */\n resize(\n width: number,\n height = width,\n preserveAspectRatio: boolean | string = false\n ) {\n const widthAttr = this.getAttribute('width', true)\n const heightAttr = this.getAttribute('height', true)\n const viewBoxAttr = this.getAttribute('viewBox')\n const styleAttr = this.getAttribute('style')\n const originWidth = widthAttr.getNumber(0)\n const originHeight = heightAttr.getNumber(0)\n\n if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio)\n } else {\n const preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio')\n\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'))\n }\n }\n }\n\n widthAttr.setValue(width)\n heightAttr.setValue(height)\n\n if (!viewBoxAttr.hasValue()) {\n viewBoxAttr.setValue(`0 0 ${originWidth || width} ${originHeight || height}`)\n }\n\n if (styleAttr.hasValue()) {\n const widthStyle = this.getStyle('width')\n const heightStyle = this.getStyle('height')\n\n if (widthStyle.hasValue()) {\n widthStyle.setValue(`${width}px`)\n }\n\n if (heightStyle.hasValue()) {\n heightStyle.setValue(`${height}px`)\n }\n }\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { BoundingBox } from '../BoundingBox'\nimport { PathElement } from './PathElement'\n\nexport class RectElement extends PathElement {\n override type = 'rect'\n\n override path(ctx: RenderingContext2D) {\n const x = this.getAttribute('x').getPixels('x')\n const y = this.getAttribute('y').getPixels('y')\n const width = this.getStyle('width', false, true).getPixels('x')\n const height = this.getStyle('height', false, true).getPixels('y')\n const rxAttr = this.getAttribute('rx')\n const ryAttr = this.getAttribute('ry')\n let rx = rxAttr.getPixels('x')\n let ry = ryAttr.getPixels('y')\n\n if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx\n }\n\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry\n }\n\n rx = Math.min(rx, width / 2.0)\n ry = Math.min(ry, height / 2.0)\n\n if (ctx) {\n const KAPPA = 4 * ((Math.sqrt(2) - 1) / 3)\n\n ctx.beginPath() // always start the path so we don't fill prior paths\n\n if (height > 0 && width > 0) {\n ctx.moveTo(x + rx, y)\n ctx.lineTo(x + width - rx, y)\n ctx.bezierCurveTo(x + width - rx + (KAPPA * rx), y, x + width, y + ry - (KAPPA * ry), x + width, y + ry)\n ctx.lineTo(x + width, y + height - ry)\n ctx.bezierCurveTo(\n x + width,\n y + height - ry + (KAPPA * ry),\n x + width - rx + (KAPPA * rx),\n y + height,\n x + width - rx,\n y + height\n )\n ctx.lineTo(x + rx, y + height)\n ctx.bezierCurveTo(x + rx - (KAPPA * rx), y + height, x, y + height - ry + (KAPPA * ry), x, y + height - ry)\n ctx.lineTo(x, y + ry)\n ctx.bezierCurveTo(x, y + ry - (KAPPA * ry), x + rx - (KAPPA * rx), y, x + rx, y)\n ctx.closePath()\n }\n }\n\n return new BoundingBox(x, y, x + width, y + height)\n }\n\n override getMarkers() {\n return null\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { BoundingBox } from '../BoundingBox'\nimport { PathElement } from './PathElement'\n\nexport class CircleElement extends PathElement {\n override type = 'circle'\n\n override path(ctx: RenderingContext2D) {\n const cx = this.getAttribute('cx').getPixels('x')\n const cy = this.getAttribute('cy').getPixels('y')\n const r = this.getAttribute('r').getPixels()\n\n if (ctx && r > 0) {\n ctx.beginPath()\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false)\n ctx.closePath()\n }\n\n return new BoundingBox(\n cx - r,\n cy - r,\n cx + r,\n cy + r\n )\n }\n\n override getMarkers() {\n return null\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { BoundingBox } from '../BoundingBox'\nimport { PathElement } from './PathElement'\n\nexport class EllipseElement extends PathElement {\n override type = 'ellipse'\n\n override path(ctx: RenderingContext2D) {\n const KAPPA = 4 * ((Math.sqrt(2) - 1) / 3)\n const rx = this.getAttribute('rx').getPixels('x')\n const ry = this.getAttribute('ry').getPixels('y')\n const cx = this.getAttribute('cx').getPixels('x')\n const cy = this.getAttribute('cy').getPixels('y')\n\n if (ctx && rx > 0 && ry > 0) {\n ctx.beginPath()\n ctx.moveTo(cx + rx, cy)\n ctx.bezierCurveTo(\n cx + rx,\n cy + (KAPPA * ry),\n cx + (KAPPA * rx),\n cy + ry,\n cx,\n cy + ry\n )\n ctx.bezierCurveTo(\n cx - (KAPPA * rx),\n cy + ry,\n cx - rx,\n cy + (KAPPA * ry),\n cx - rx,\n cy\n )\n ctx.bezierCurveTo(\n cx - rx,\n cy - (KAPPA * ry),\n cx - (KAPPA * rx),\n cy - ry,\n cx,\n cy - ry\n )\n ctx.bezierCurveTo(\n cx + (KAPPA * rx),\n cy - ry,\n cx + rx,\n cy - (KAPPA * ry),\n cx + rx,\n cy\n )\n ctx.closePath()\n }\n\n return new BoundingBox(\n cx - rx,\n cy - ry,\n cx + rx,\n cy + ry\n )\n }\n\n override getMarkers() {\n return null\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Point } from '../Point'\nimport { BoundingBox } from '../BoundingBox'\nimport { PathElement, Marker } from './PathElement'\n\nexport class LineElement extends PathElement {\n override type = 'line'\n\n getPoints() {\n return [\n new Point(\n this.getAttribute('x1').getPixels('x'),\n this.getAttribute('y1').getPixels('y')\n ),\n new Point(\n this.getAttribute('x2').getPixels('x'),\n this.getAttribute('y2').getPixels('y')\n )\n ]\n }\n\n override path(ctx: RenderingContext2D) {\n const [\n {\n x: x0,\n y: y0\n },\n {\n x: x1,\n y: y1\n }\n ] = this.getPoints()\n\n if (ctx) {\n ctx.beginPath()\n ctx.moveTo(x0, y0)\n ctx.lineTo(x1, y1)\n }\n\n return new BoundingBox(\n x0,\n y0,\n x1,\n y1\n )\n }\n\n override getMarkers(): Marker[] {\n const [p0, p1] = this.getPoints()\n const a = p0.angleTo(p1)\n\n return [[p0, a], [p1, a]]\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Point } from '../Point'\nimport { BoundingBox } from '../BoundingBox'\nimport { Document } from './Document'\nimport { PathElement, Marker } from './PathElement'\n\nexport class PolylineElement extends PathElement {\n override type = 'polyline'\n protected readonly points: Point[] = []\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n this.points = Point.parsePath(\n this.getAttribute('points').getString()\n )\n }\n\n override path(ctx: RenderingContext2D) {\n const { points } = this\n const [\n {\n x: x0,\n y: y0\n }\n ] = points\n const boundingBox = new BoundingBox(x0, y0)\n\n if (ctx) {\n ctx.beginPath()\n ctx.moveTo(x0, y0)\n }\n\n points.forEach(({\n x,\n y\n }) => {\n boundingBox.addPoint(x, y)\n\n if (ctx) {\n ctx.lineTo(x, y)\n }\n })\n\n return boundingBox\n }\n\n override getMarkers() {\n const { points } = this\n const lastIndex = points.length - 1\n const markers: Marker[] = []\n\n points.forEach((point, i) => {\n if (i === lastIndex) {\n return\n }\n\n markers.push([point, point.angleTo(points[i + 1])])\n })\n\n if (markers.length > 0) {\n markers.push([points[points.length - 1], markers[markers.length - 1][1]])\n }\n\n return markers\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { PolylineElement } from './PolylineElement'\n\nexport class PolygonElement extends PolylineElement {\n override type = 'polygon'\n\n override path(ctx: RenderingContext2D) {\n const boundingBox = super.path(ctx)\n const [\n {\n x,\n y\n }\n ] = this.points\n\n if (ctx) {\n ctx.lineTo(x, y)\n ctx.closePath()\n }\n\n return boundingBox\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Property } from '../Property'\nimport { Element } from './Element'\nimport { SVGElement } from './SVGElement'\n\nexport class PatternElement extends Element {\n override type = 'pattern'\n\n createPattern(\n ctx: RenderingContext2D,\n _: Element,\n parentOpacityProp: Property\n ) {\n const width = this.getStyle('width').getPixels('x', true)\n const height = this.getStyle('height').getPixels('y', true)\n // render me using a temporary svg element\n const patternSvg = new SVGElement(\n this.document,\n null\n )\n\n patternSvg.attributes.viewBox = new Property(\n this.document,\n 'viewBox',\n this.getAttribute('viewBox').getValue()\n )\n patternSvg.attributes.width = new Property(\n this.document,\n 'width',\n `${width}px`\n )\n patternSvg.attributes.height = new Property(\n this.document,\n 'height',\n `${height}px`\n )\n patternSvg.attributes.transform = new Property(\n this.document,\n 'transform',\n this.getAttribute('patternTransform').getValue()\n )\n patternSvg.children = this.children\n\n const patternCanvas = this.document.createCanvas(width, height)\n const patternCtx = patternCanvas.getContext('2d')\n const xAttr = this.getAttribute('x')\n const yAttr = this.getAttribute('y')\n\n if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(\n xAttr.getPixels('x', true),\n yAttr.getPixels('y', true)\n )\n }\n\n if (parentOpacityProp.hasValue()) {\n this.styles['fill-opacity'] = parentOpacityProp\n } else {\n Reflect.deleteProperty(this.styles, 'fill-opacity')\n }\n\n // render 3x3 grid so when we transform there's no white space on edges\n for (let x = -1; x <= 1; x++) {\n for (let y = -1; y <= 1; y++) {\n patternCtx.save()\n patternSvg.attributes.x = new Property(\n this.document,\n 'x',\n x * patternCanvas.width\n )\n patternSvg.attributes.y = new Property(\n this.document,\n 'y',\n y * patternCanvas.height\n )\n patternSvg.render(patternCtx)\n patternCtx.restore()\n }\n }\n\n const pattern = ctx.createPattern(patternCanvas as CanvasImageSource, 'repeat')\n\n return pattern\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Point } from '../Point'\nimport { Property } from '../Property'\nimport { Element } from './Element'\nimport { SVGElement } from './SVGElement'\n\nexport class MarkerElement extends Element {\n override type = 'marker'\n\n override render(ctx: RenderingContext2D, point?: Point, angle?: number) {\n if (!point) {\n return\n }\n\n const {\n x,\n y\n } = point\n const orient = this.getAttribute('orient').getString('auto')\n const markerUnits = this.getAttribute('markerUnits').getString('strokeWidth')\n\n ctx.translate(x, y)\n\n if (orient === 'auto') {\n ctx.rotate(angle)\n }\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth)\n }\n\n ctx.save()\n\n // render me using a temporary svg element\n const markerSvg = new SVGElement(this.document)\n\n markerSvg.type = this.type\n markerSvg.attributes.viewBox = new Property(\n this.document,\n 'viewBox',\n this.getAttribute('viewBox').getValue()\n )\n markerSvg.attributes.refX = new Property(\n this.document,\n 'refX',\n this.getAttribute('refX').getValue()\n )\n markerSvg.attributes.refY = new Property(\n this.document,\n 'refY',\n this.getAttribute('refY').getValue()\n )\n markerSvg.attributes.width = new Property(\n this.document,\n 'width',\n this.getAttribute('markerWidth').getValue()\n )\n markerSvg.attributes.height = new Property(\n this.document,\n 'height',\n this.getAttribute('markerHeight').getValue()\n )\n markerSvg.attributes.overflow = new Property(\n this.document,\n 'overflow',\n this.getAttribute('overflow').getValue()\n )\n markerSvg.attributes.fill = new Property(\n this.document,\n 'fill',\n this.getAttribute('fill').getColor('black')\n )\n markerSvg.attributes.stroke = new Property(\n this.document,\n 'stroke',\n this.getAttribute('stroke').getValue('none')\n )\n markerSvg.children = this.children\n\n markerSvg.render(ctx)\n\n ctx.restore()\n\n if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth)\n }\n\n if (orient === 'auto') {\n ctx.rotate(-angle)\n }\n\n ctx.translate(-x, -y)\n }\n}\n","import { Element } from './Element'\n\nexport class DefsElement extends Element {\n override type = 'defs'\n\n override render() {\n // NOOP\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { BoundingBox } from '../BoundingBox'\nimport { PathElement } from './PathElement'\nimport { RenderedElement } from './RenderedElement'\n\nexport class GElement extends RenderedElement {\n override type = 'g'\n\n getBoundingBox(ctx: RenderingContext2D) {\n const boundingBox = new BoundingBox()\n\n this.children.forEach((child: PathElement) => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx))\n })\n\n return boundingBox\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Screen } from '../Screen'\nimport { Property } from '../Property'\nimport { Document } from './Document'\nimport { Element } from './Element'\nimport { PathElement } from './PathElement'\nimport { SVGElement } from './SVGElement'\nimport { RectElement } from './RectElement'\nimport { StopElement } from './StopElement'\nimport { GElement } from './GElement'\n\nexport abstract class GradientElement extends Element {\n readonly attributesToInherit = ['gradientUnits']\n\n protected readonly stops: StopElement[] = []\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n const {\n stops,\n children\n } = this\n\n children.forEach((child) => {\n if (child.type === 'stop') {\n stops.push(child as StopElement)\n }\n })\n }\n\n abstract getGradient(ctx: RenderingContext2D, element: PathElement): CanvasGradient | null\n\n getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox')\n }\n\n createGradient(\n ctx: RenderingContext2D,\n element: PathElement,\n parentOpacityProp: Property\n ) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n let stopsContainer = this\n\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition()\n this.inheritStopContainer(stopsContainer)\n }\n\n const { stops } = stopsContainer\n const gradient = this.getGradient(ctx, element)\n\n if (!gradient) {\n return this.addParentOpacity(\n parentOpacityProp,\n stops[stops.length - 1].color\n )\n }\n\n stops.forEach((stop: StopElement) => {\n gradient.addColorStop(\n stop.offset,\n this.addParentOpacity(\n parentOpacityProp,\n stop.color\n )\n )\n })\n\n if (this.getAttribute('gradientTransform').hasValue()) {\n // render as transformed pattern on temporary canvas\n const { document } = this\n const { MAX_VIRTUAL_PIXELS } = Screen\n const { viewPort } = document.screen\n const rootView = viewPort.getRoot()\n const rect = new RectElement(document)\n\n rect.attributes.x = new Property(\n document,\n 'x',\n -MAX_VIRTUAL_PIXELS / 3.0\n )\n rect.attributes.y = new Property(\n document,\n 'y',\n -MAX_VIRTUAL_PIXELS / 3.0\n )\n rect.attributes.width = new Property(\n document,\n 'width',\n MAX_VIRTUAL_PIXELS\n )\n rect.attributes.height = new Property(\n document,\n 'height',\n MAX_VIRTUAL_PIXELS\n )\n\n const group = new GElement(document)\n\n group.attributes.transform = new Property(\n document,\n 'transform',\n this.getAttribute('gradientTransform').getValue()\n )\n group.children = [rect]\n\n const patternSvg = new SVGElement(document)\n\n patternSvg.attributes.x = new Property(\n document,\n 'x',\n 0\n )\n patternSvg.attributes.y = new Property(\n document,\n 'y',\n 0\n )\n patternSvg.attributes.width = new Property(\n document,\n 'width',\n rootView.width\n )\n patternSvg.attributes.height = new Property(\n document,\n 'height',\n rootView.height\n )\n patternSvg.children = [group]\n\n const patternCanvas = document.createCanvas(rootView.width, rootView.height)\n const patternCtx = patternCanvas.getContext('2d')\n\n patternCtx.fillStyle = gradient\n patternSvg.render(patternCtx)\n\n return patternCtx.createPattern(patternCanvas as CanvasImageSource, 'no-repeat')\n }\n\n return gradient\n }\n\n protected inheritStopContainer(stopsContainer: Element) {\n this.attributesToInherit.forEach((attributeToInherit) => {\n if (!this.getAttribute(attributeToInherit).hasValue()\n && stopsContainer.getAttribute(attributeToInherit).hasValue()\n ) {\n this.getAttribute(attributeToInherit, true)\n .setValue(stopsContainer.getAttribute(attributeToInherit).getValue())\n }\n })\n }\n\n protected addParentOpacity(parentOpacityProp: Property, color: string) {\n if (parentOpacityProp.hasValue()) {\n const colorProp = new Property(\n this.document,\n 'color',\n color\n )\n\n return colorProp.addOpacity(parentOpacityProp).getColor()\n }\n\n return color\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Document } from './Document'\nimport { PathElement } from './PathElement'\nimport { GradientElement } from './GradientElement'\n\nexport class LinearGradientElement extends GradientElement {\n override type = 'linearGradient'\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n this.attributesToInherit.push(\n 'x1',\n 'y1',\n 'x2',\n 'y2'\n )\n }\n\n getGradient(ctx: RenderingContext2D, element: PathElement) {\n const isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox'\n const boundingBox = isBoundingBoxUnits\n ? element.getBoundingBox(ctx)\n : null\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null\n }\n\n if (!this.getAttribute('x1').hasValue()\n && !this.getAttribute('y1').hasValue()\n && !this.getAttribute('x2').hasValue()\n && !this.getAttribute('y2').hasValue()\n ) {\n this.getAttribute('x1', true).setValue(0)\n this.getAttribute('y1', true).setValue(0)\n this.getAttribute('x2', true).setValue(1)\n this.getAttribute('y2', true).setValue(0)\n }\n\n const x1 = isBoundingBoxUnits\n ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber()\n : this.getAttribute('x1').getPixels('x')\n const y1 = isBoundingBoxUnits\n ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber()\n : this.getAttribute('y1').getPixels('y')\n const x2 = isBoundingBoxUnits\n ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber()\n : this.getAttribute('x2').getPixels('x')\n const y2 = isBoundingBoxUnits\n ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber()\n : this.getAttribute('y2').getPixels('y')\n\n if (x1 === x2 && y1 === y2) {\n return null\n }\n\n return ctx.createLinearGradient(x1, y1, x2, y2)\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Document } from './Document'\nimport { PathElement } from './PathElement'\nimport { GradientElement } from './GradientElement'\n\nexport class RadialGradientElement extends GradientElement {\n override type = 'radialGradient'\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n this.attributesToInherit.push(\n 'cx',\n 'cy',\n 'r',\n 'fx',\n 'fy',\n 'fr'\n )\n }\n\n getGradient(ctx: RenderingContext2D, element: PathElement) {\n const isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox'\n const boundingBox = element.getBoundingBox(ctx)\n\n if (isBoundingBoxUnits && !boundingBox) {\n return null\n }\n\n if (!this.getAttribute('cx').hasValue()) {\n this.getAttribute('cx', true).setValue('50%')\n }\n\n if (!this.getAttribute('cy').hasValue()) {\n this.getAttribute('cy', true).setValue('50%')\n }\n\n if (!this.getAttribute('r').hasValue()) {\n this.getAttribute('r', true).setValue('50%')\n }\n\n const cx = isBoundingBoxUnits\n ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber()\n : this.getAttribute('cx').getPixels('x')\n const cy = isBoundingBoxUnits\n ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber()\n : this.getAttribute('cy').getPixels('y')\n let fx = cx\n let fy = cy\n\n if (this.getAttribute('fx').hasValue()) {\n fx = isBoundingBoxUnits\n ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber()\n : this.getAttribute('fx').getPixels('x')\n }\n\n if (this.getAttribute('fy').hasValue()) {\n fy = isBoundingBoxUnits\n ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber()\n : this.getAttribute('fy').getPixels('y')\n }\n\n const r = isBoundingBoxUnits\n ? (boundingBox.width + boundingBox.height) / 2.0 * this.getAttribute('r').getNumber()\n : this.getAttribute('r').getPixels()\n const fr = this.getAttribute('fr').getPixels()\n\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r)\n }\n}\n","import { Document } from './Document'\nimport { Element } from './Element'\n\nexport class StopElement extends Element {\n override type = 'stop'\n readonly offset: number\n readonly color: string\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n const offset = Math.max(0, Math.min(1, this.getAttribute('offset').getNumber()))\n const stopOpacity = this.getStyle('stop-opacity')\n let stopColor = this.getStyle('stop-color', true)\n\n if (stopColor.getString() === '') {\n stopColor.setValue('#000')\n }\n\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity)\n }\n\n this.offset = offset\n this.color = stopColor.getColor()\n }\n}\n","import { Property } from '../Property'\nimport { Document } from './Document'\nimport { Element } from './Element'\n\nexport interface IProgress {\n from: Property\n to: Property\n progress: number\n}\n\nexport class AnimateElement extends Element {\n override type = 'animate'\n protected readonly begin: number\n protected readonly maxDuration: number\n protected readonly from: Property\n protected readonly to: Property\n protected readonly values: Property<string[]>\n protected duration = 0\n protected initialValue: string | undefined\n protected initialUnits = ''\n protected removed = false\n protected frozen = false\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n document.screen.animations.push(this)\n\n this.begin = this.getAttribute('begin').getMilliseconds()\n this.maxDuration = this.begin + this.getAttribute('dur').getMilliseconds()\n this.from = this.getAttribute('from')\n this.to = this.getAttribute('to')\n this.values = new Property<string[] | null>(document, 'values', null)\n\n const valuesAttr = this.getAttribute('values')\n\n if (valuesAttr.hasValue()) {\n this.values.setValue(valuesAttr.getString().split(';'))\n }\n }\n\n protected getProperty() {\n const attributeType = this.getAttribute('attributeType').getString()\n const attributeName = this.getAttribute('attributeName').getString()\n\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true)\n }\n\n return this.parent.getAttribute(attributeName, true)\n }\n\n calcValue() {\n const { initialUnits } = this\n const {\n progress,\n from,\n to\n } = this.getProgress()\n // tween value linearly\n let newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress\n\n if (initialUnits === '%') {\n newValue *= 100.0 // numValue() returns 0-1 whereas properties are 0-100\n }\n\n return `${newValue}${initialUnits}`\n }\n\n update(delta: number) {\n const { parent } = this\n const prop = this.getProperty()\n\n // set initial value\n if (!this.initialValue) {\n this.initialValue = prop.getString()\n this.initialUnits = prop.getUnits()\n }\n\n // if we're past the end time\n if (this.duration > this.maxDuration) {\n const fill = this.getAttribute('fill').getString('remove')\n\n // loop for indefinitely repeating animations\n if (this.getAttribute('repeatCount').getString() === 'indefinite'\n || this.getAttribute('repeatDur').getString() === 'indefinite'\n ) {\n this.duration = 0\n } else\n if (fill === 'freeze' && !this.frozen) {\n this.frozen = true\n\n if (parent && prop) {\n parent.animationFrozen = true\n parent.animationFrozenValue = prop.getString()\n }\n } else\n if (fill === 'remove' && !this.removed) {\n this.removed = true\n\n if (parent && prop) {\n prop.setValue(\n parent.animationFrozen\n ? parent.animationFrozenValue\n : this.initialValue\n )\n }\n\n return true\n }\n\n return false\n }\n\n this.duration += delta\n\n // if we're past the begin time\n let updated = false\n\n if (this.begin < this.duration) {\n let newValue = this.calcValue() // tween\n const typeAttr = this.getAttribute('type')\n\n if (typeAttr.hasValue()) {\n // for transform, etc.\n const type = typeAttr.getString()\n\n newValue = `${type}(${newValue})`\n }\n\n prop.setValue(newValue)\n updated = true\n }\n\n return updated\n }\n\n getProgress(): IProgress {\n const {\n document,\n values\n } = this\n let progress = (this.duration - this.begin) / (this.maxDuration - this.begin)\n let from: Property\n let to: Property\n\n if (values.hasValue()) {\n const p = progress * (values.getValue().length - 1)\n const lb = Math.floor(p)\n const ub = Math.ceil(p)\n let value: string | undefined\n\n value = values.getValue()[lb]\n from = new Property(\n document,\n 'from',\n value ? parseFloat(value) : 0\n )\n\n value = values.getValue()[ub]\n to = new Property(\n document,\n 'to',\n value ? parseFloat(value) : 0\n )\n\n progress = (p - lb) / (ub - lb)\n } else {\n from = this.from\n to = this.to\n }\n\n return {\n progress,\n from,\n to\n }\n }\n}\n","import RGBColor from 'rgbcolor'\nimport { AnimateElement } from './AnimateElement'\n\nexport class AnimateColorElement extends AnimateElement {\n override type = 'animateColor'\n\n override calcValue() {\n const {\n progress,\n from,\n to\n } = this.getProgress()\n const colorFrom = new RGBColor(from.getColor())\n const colorTo = new RGBColor(to.getColor())\n\n if (colorFrom.ok && colorTo.ok) {\n // tween color linearly\n const r = colorFrom.r + (colorTo.r - colorFrom.r) * progress\n const g = colorFrom.g + (colorTo.g - colorFrom.g) * progress\n const b = colorFrom.b + (colorTo.b - colorFrom.b) * progress\n\n // ? alpha\n return `rgb(${\n Math.floor(r)\n }, ${\n Math.floor(g)\n }, ${\n Math.floor(b)\n })`\n }\n\n return this.getAttribute('from').getColor()\n }\n}\n","import { toNumbers } from '../util'\nimport { AnimateElement } from './AnimateElement'\n\nexport class AnimateTransformElement extends AnimateElement {\n override type = 'animateTransform'\n\n override calcValue() {\n const {\n progress,\n from,\n to\n } = this.getProgress()\n // tween value linearly\n const transformFrom = toNumbers(from.getString())\n const transformTo = toNumbers(to.getString())\n const newValue = transformFrom.map((from, i) => {\n const to = transformTo[i]\n\n return from + (to - from) * progress\n }).join(' ')\n\n return newValue\n }\n}\n","import { Document } from './Document'\nimport { Element } from './Element'\n\nexport class FontFaceElement extends Element {\n override type = 'font-face'\n readonly ascent: number\n readonly descent: number\n readonly unitsPerEm: number\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n this.ascent = this.getAttribute('ascent').getNumber()\n this.descent = this.getAttribute('descent').getNumber()\n this.unitsPerEm = this.getAttribute('units-per-em').getNumber()\n }\n}\n","import { Document } from './Document'\nimport { PathElement } from './PathElement'\n\nexport type ArabicForm = 'isolated' | 'terminal' | 'medial' | 'initial'\n\nexport class GlyphElement extends PathElement {\n override type = 'glyph'\n readonly horizAdvX: number\n readonly unicode: string\n readonly arabicForm: ArabicForm | undefined\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber()\n this.unicode = this.getAttribute('unicode').getString()\n this.arabicForm = this.getAttribute('arabic-form').getString() as ArabicForm\n }\n}\n","import { GlyphElement } from './GlyphElement'\n\nexport class MissingGlyphElement extends GlyphElement {\n override type = 'missing-glyph'\n override readonly horizAdvX = 0\n}\n","import { Document } from './Document'\nimport { Element } from './Element'\nimport { FontFaceElement } from './FontFaceElement'\nimport { MissingGlyphElement } from './MissingGlyphElement'\nimport { ArabicForm, GlyphElement } from './GlyphElement'\n\nexport class FontElement extends Element {\n override type = 'font'\n readonly isArabic: boolean = false\n readonly missingGlyph: MissingGlyphElement | undefined\n readonly glyphs: Record<string, GlyphElement> = {}\n readonly arabicGlyphs: Record<string, Partial<Record<ArabicForm, GlyphElement>>> = {}\n readonly horizAdvX: number\n readonly isRTL: boolean = false\n readonly fontFace: FontFaceElement | undefined\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber()\n\n const { definitions } = document\n const { children } = this\n\n for (const child of children) {\n if (child instanceof FontFaceElement) {\n this.fontFace = child\n\n const fontFamilyStyle = child.getStyle('font-family')\n\n if (fontFamilyStyle.hasValue()) {\n definitions[fontFamilyStyle.getString()] = this\n }\n } else\n if (child instanceof MissingGlyphElement) {\n this.missingGlyph = child\n } else\n if (child instanceof GlyphElement) {\n if (child.arabicForm) {\n this.isRTL = true\n this.isArabic = true\n\n const arabicGlyph = this.arabicGlyphs[child.unicode]\n\n if (typeof arabicGlyph === 'undefined') {\n this.arabicGlyphs[child.unicode] = {\n [child.arabicForm]: child\n }\n } else {\n arabicGlyph[child.arabicForm] = child\n }\n } else {\n this.glyphs[child.unicode] = child\n }\n }\n }\n }\n\n override render() {\n // NO RENDER\n }\n}\n","import { TextElement } from './TextElement'\n\nexport class TRefElement extends TextElement {\n override type = 'tref'\n\n override getText() {\n const element = this.getHrefAttribute().getDefinition()\n\n if (element) {\n const firstChild = element.children[0] as TextElement\n\n if (firstChild) {\n return firstChild.getText()\n }\n }\n\n return ''\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Property } from '../Property'\nimport { Font } from '../Font'\nimport { BoundingBox } from '../BoundingBox'\nimport { Document } from './Document'\nimport { TextElement } from './TextElement'\nimport { GElement } from './GElement'\n\nexport class AElement extends TextElement {\n override type = 'a'\n protected readonly hasText: boolean\n protected readonly text: string\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n const { childNodes } = node\n const firstChild = childNodes[0]\n const hasText = childNodes.length > 0\n && Array.from(childNodes).every(node => node.nodeType === 3)\n\n this.hasText = hasText\n this.text = hasText\n ? this.getTextFromNode(firstChild)\n : ''\n }\n\n override getText() {\n return this.text\n }\n\n override renderChildren(ctx: RenderingContext2D) {\n if (this.hasText) {\n // render as text element\n super.renderChildren(ctx)\n\n const {\n document,\n x,\n y\n } = this\n const { mouse } = document.screen\n const fontSize = new Property(\n document,\n 'fontSize',\n Font.parse(document.ctx.font).fontSize\n )\n\n // Do not calc bounding box if mouse is not working.\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(\n this,\n new BoundingBox(\n x,\n y - fontSize.getPixels('y'),\n x + this.measureText(ctx),\n y\n )\n )\n }\n } else\n if (this.children.length > 0) {\n // render as temporary group\n const g = new GElement(this.document)\n\n g.children = this.children\n g.parent = this\n g.render(ctx)\n }\n }\n\n onClick() {\n const { window } = this.document\n\n if (window) {\n window.open(this.getHrefAttribute().getString())\n }\n }\n\n onMouseMove() {\n const ctx = this.document.ctx as CanvasRenderingContext2D\n\n ctx.canvas.style.cursor = 'pointer'\n }\n}\n","import { RenderingContext2D } from '../types'\nimport {\n PSEUDO_ZERO,\n CB1,\n CB2,\n CB3,\n CB4,\n QB1,\n QB2,\n QB3\n} from '../util'\nimport { PathParser, CommandType } from '../PathParser'\nimport { Document } from './Document'\nimport { TextElement } from './TextElement'\nimport { PathElement } from './PathElement'\n\nexport interface IPoint {\n x: number\n y: number\n}\n\nexport interface IPathCommand {\n type: CommandType\n points: number[]\n start?: IPoint\n pathLength: number\n}\n\ninterface ICachedPoint extends IPoint {\n distance: number\n}\n\ninterface IEquidistantCache {\n step: number\n precision: number\n points: ICachedPoint[]\n}\n\ninterface IGlyphInfo {\n // transposeX: number;\n // transposeY: number;\n text: string\n rotation: number\n p0: ICachedPoint\n p1: ICachedPoint\n}\n\nexport class TextPathElement extends TextElement {\n override type = 'textPath'\n protected textWidth = 0\n protected textHeight = 0\n protected pathLength = -1\n protected glyphInfo: IGlyphInfo[] = null\n protected readonly text: string\n protected readonly dataArray: IPathCommand[]\n private letterSpacingCache: number[] = []\n private equidistantCache: IEquidistantCache\n private readonly measuresCache = new Map<string, number>([['', 0]])\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n const pathElement = this.getHrefAttribute().getDefinition<PathElement>()\n\n this.text = this.getTextFromNode()\n this.dataArray = this.parsePathData(pathElement)\n }\n\n override getText() {\n return this.text\n }\n\n path(ctx: RenderingContext2D) {\n const { dataArray } = this\n\n if (ctx) {\n ctx.beginPath()\n }\n\n dataArray.forEach(({\n type,\n points\n }) => {\n switch (type) {\n case PathParser.LINE_TO:\n\n if (ctx) {\n ctx.lineTo(points[0], points[1])\n }\n\n break\n\n case PathParser.MOVE_TO:\n\n if (ctx) {\n ctx.moveTo(points[0], points[1])\n }\n\n break\n\n case PathParser.CURVE_TO:\n\n if (ctx) {\n ctx.bezierCurveTo(\n points[0],\n points[1],\n points[2],\n points[3],\n points[4],\n points[5]\n )\n }\n\n break\n\n case PathParser.QUAD_TO:\n\n if (ctx) {\n ctx.quadraticCurveTo(\n points[0],\n points[1],\n points[2],\n points[3]\n )\n }\n\n break\n\n case PathParser.ARC: {\n const [\n cx,\n cy,\n rx,\n ry,\n theta,\n dTheta,\n psi,\n fs\n ] = points\n const r = rx > ry ? rx : ry\n const scaleX = rx > ry ? 1 : rx / ry\n const scaleY = rx > ry ? ry / rx : 1\n\n if (ctx) {\n ctx.translate(cx, cy)\n ctx.rotate(psi)\n ctx.scale(scaleX, scaleY)\n ctx.arc(0, 0, r, theta, theta + dTheta, Boolean(1 - fs))\n ctx.scale(1 / scaleX, 1 / scaleY)\n ctx.rotate(-psi)\n ctx.translate(-cx, -cy)\n }\n\n break\n }\n\n case PathParser.CLOSE_PATH:\n\n if (ctx) {\n ctx.closePath()\n }\n\n break\n\n default:\n }\n })\n }\n\n override renderChildren(ctx: RenderingContext2D) {\n this.setTextData(ctx)\n ctx.save()\n\n const textDecoration = this.parent.getStyle('text-decoration').getString()\n const fontSize = this.getFontSize()\n const { glyphInfo } = this\n const fill = ctx.fillStyle\n\n if (textDecoration === 'underline') {\n ctx.beginPath()\n }\n\n glyphInfo.forEach((glyph, i) => {\n const {\n p0,\n p1,\n rotation,\n text: partialText\n } = glyph\n\n ctx.save()\n ctx.translate(p0.x, p0.y)\n ctx.rotate(rotation)\n\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0)\n }\n\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0)\n }\n\n ctx.restore()\n\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8)\n }\n\n ctx.lineTo(p1.x, p1.y + fontSize / 5)\n }\n\n // // To assist with debugging visually, uncomment following\n //\n // ctx.beginPath();\n // if (i % 2)\n // ctx.strokeStyle = 'red';\n // else\n // ctx.strokeStyle = 'green';\n // ctx.moveTo(p0.x, p0.y);\n // ctx.lineTo(p1.x, p1.y);\n // ctx.stroke();\n // ctx.closePath();\n })\n\n if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20\n ctx.strokeStyle = fill\n ctx.stroke()\n ctx.closePath()\n }\n\n ctx.restore()\n }\n\n protected getLetterSpacingAt(idx = 0) {\n return this.letterSpacingCache[idx] || 0\n }\n\n protected findSegmentToFitChar(\n ctx: RenderingContext2D,\n anchor: string,\n textFullWidth: number,\n fullPathWidth: number,\n spacesNumber: number,\n inputOffset: number,\n dy: number,\n c: string,\n charI: number\n ) {\n let offset = inputOffset\n let glyphWidth = this.measureText(ctx, c)\n\n if (c === ' '\n && anchor === 'justify'\n && textFullWidth < fullPathWidth\n ) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber\n }\n\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI)\n }\n\n const splineStep = this.textHeight / 20\n const p0 = this.getEquidistantPointOnPath(offset, splineStep, 0)\n const p1 = this.getEquidistantPointOnPath(offset + glyphWidth, splineStep, 0)\n const segment = {\n p0,\n p1\n }\n const rotation = p0 && p1\n ? Math.atan2(\n p1.y - p0.y,\n p1.x - p0.x\n )\n : 0\n\n if (dy) {\n const dyX = Math.cos(Math.PI / 2 + rotation) * dy\n const dyY = Math.cos(-rotation) * dy\n\n segment.p0 = {\n ...p0,\n x: p0.x + dyX,\n y: p0.y + dyY\n }\n segment.p1 = {\n ...p1,\n x: p1.x + dyX,\n y: p1.y + dyY\n }\n }\n\n offset += glyphWidth\n\n return {\n offset,\n segment,\n rotation\n }\n }\n\n protected override measureText(\n ctx: RenderingContext2D,\n text?: string\n ) {\n const { measuresCache } = this\n const targetText = text || this.getText()\n\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText)\n }\n\n const measure = this.measureTargetText(ctx, targetText)\n\n measuresCache.set(targetText, measure)\n\n return measure\n }\n\n // This method supposes what all custom fonts already loaded.\n // If some font will be loaded after this method call, <textPath> will not be rendered correctly.\n // You need to call this method manually to update glyphs cache.\n protected setTextData(ctx: RenderingContext2D) {\n if (this.glyphInfo) {\n return\n }\n\n const renderText = this.getText()\n const chars = renderText.split('')\n const spacesNumber = renderText.split(' ').length - 1\n const dx = this.parent.getAttribute('dx').split().map(_ => _.getPixels('x'))\n const dy = this.parent.getAttribute('dy').getPixels('y')\n const anchor = this.parent.getStyle('text-anchor').getString('start')\n const thisSpacing = this.getStyle('letter-spacing')\n const parentSpacing = this.parent.getStyle('letter-spacing')\n let letterSpacing = 0\n\n if (!thisSpacing.hasValue()\n || thisSpacing.getValue() === 'inherit'\n ) {\n letterSpacing = parentSpacing.getPixels()\n } else\n if (thisSpacing.hasValue()) {\n if (thisSpacing.getValue() !== 'initial'\n && thisSpacing.getValue() !== 'unset'\n ) {\n letterSpacing = thisSpacing.getPixels()\n }\n }\n\n // fill letter-spacing cache\n const letterSpacingCache: number[] = []\n const textLen = renderText.length\n\n this.letterSpacingCache = letterSpacingCache\n\n for (let i = 0; i < textLen; i++) {\n letterSpacingCache.push(\n typeof dx[i] !== 'undefined'\n ? dx[i]\n : letterSpacing\n )\n }\n\n const dxSum = letterSpacingCache.reduce(\n (acc, cur, i) => (\n i === 0\n ? 0\n : acc + cur || 0\n ),\n 0\n )\n const textWidth = this.measureText(ctx)\n const textFullWidth = Math.max(textWidth + dxSum, 0)\n\n this.textWidth = textWidth\n this.textHeight = this.getFontSize()\n this.glyphInfo = []\n\n const fullPathWidth = this.getPathLength()\n const startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth\n let offset = 0\n\n if (anchor === 'middle'\n || anchor === 'center'\n ) {\n offset = -textFullWidth / 2\n }\n\n if (anchor === 'end'\n || anchor === 'right'\n ) {\n offset = -textFullWidth\n }\n\n offset += startOffset\n\n chars.forEach((char, i) => {\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n const {\n offset: nextOffset,\n segment,\n rotation\n } = this.findSegmentToFitChar(\n ctx,\n anchor,\n textFullWidth,\n fullPathWidth,\n spacesNumber,\n offset,\n dy,\n char,\n i\n )\n\n offset = nextOffset\n\n if (!segment.p0 || !segment.p1) {\n return\n }\n\n // const width = this.getLineLength(\n // segment.p0.x,\n // segment.p0.y,\n // segment.p1.x,\n // segment.p1.y\n // );\n // Note: Since glyphs are rendered one at a time, any kerning pair data built into the font will not be used.\n // Can foresee having a rough pair table built in that the developer can override as needed.\n // Or use \"dx\" attribute of the <text> node as a naive replacement\n // const kern = 0;\n // placeholder for future implementation\n // const midpoint = this.getPointOnLine(\n // kern + width / 2.0,\n // segment.p0.x, segment.p0.y, segment.p1.x, segment.p1.y\n // );\n\n this.glyphInfo.push({\n // transposeX: midpoint.x,\n // transposeY: midpoint.y,\n text: chars[i],\n p0: segment.p0,\n p1: segment.p1,\n rotation\n })\n })\n }\n\n protected parsePathData(path: PathElement) {\n this.pathLength = -1 // reset path length\n\n if (!path) {\n return []\n }\n\n const pathCommands: IPathCommand[] = []\n const { pathParser } = path\n\n pathParser.reset()\n\n // convert l, H, h, V, and v to L\n while (!pathParser.isEnd()) {\n const { current } = pathParser\n const startX = current ? current.x : 0\n const startY = current ? current.y : 0\n const command = pathParser.next()\n let nextCommandType: CommandType = command.type\n let points: number[] = []\n\n switch (command.type) {\n case PathParser.MOVE_TO:\n this.pathM(pathParser, points)\n break\n\n case PathParser.LINE_TO:\n nextCommandType = this.pathL(pathParser, points)\n break\n\n case PathParser.HORIZ_LINE_TO:\n nextCommandType = this.pathH(pathParser, points)\n break\n\n case PathParser.VERT_LINE_TO:\n nextCommandType = this.pathV(pathParser, points)\n break\n\n case PathParser.CURVE_TO:\n this.pathC(pathParser, points)\n break\n\n case PathParser.SMOOTH_CURVE_TO:\n nextCommandType = this.pathS(pathParser, points)\n break\n\n case PathParser.QUAD_TO:\n this.pathQ(pathParser, points)\n break\n\n case PathParser.SMOOTH_QUAD_TO:\n nextCommandType = this.pathT(pathParser, points)\n break\n\n case PathParser.ARC:\n points = this.pathA(pathParser)\n break\n\n case PathParser.CLOSE_PATH:\n PathElement.pathZ(pathParser)\n break\n\n default:\n }\n\n if (command.type !== PathParser.CLOSE_PATH) {\n pathCommands.push({\n type: nextCommandType,\n points,\n start: {\n x: startX,\n y: startY\n },\n pathLength: this.calcLength(startX, startY, nextCommandType, points)\n })\n } else {\n pathCommands.push({\n type: PathParser.CLOSE_PATH,\n points: [],\n pathLength: 0\n })\n }\n }\n\n return pathCommands\n }\n\n protected pathM(\n pathParser: PathParser,\n points: number[]\n ) {\n const {\n x,\n y\n } = PathElement.pathM(pathParser).point\n\n points.push(x, y)\n }\n\n protected pathL(\n pathParser: PathParser,\n points: number[]\n ) {\n const {\n x,\n y\n } = PathElement.pathL(pathParser).point\n\n points.push(x, y)\n\n return PathParser.LINE_TO\n }\n\n protected pathH(\n pathParser: PathParser,\n points: number[]\n ) {\n const {\n x,\n y\n } = PathElement.pathH(pathParser).point\n\n points.push(x, y)\n\n return PathParser.LINE_TO\n }\n\n protected pathV(\n pathParser: PathParser,\n points: number[]\n ) {\n const {\n x,\n y\n } = PathElement.pathV(pathParser).point\n\n points.push(x, y)\n\n return PathParser.LINE_TO\n }\n\n protected pathC(\n pathParser: PathParser,\n points: number[]\n ) {\n const {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathC(pathParser)\n\n points.push(\n point.x,\n point.y,\n controlPoint.x,\n controlPoint.y,\n currentPoint.x,\n currentPoint.y\n )\n }\n\n protected pathS(\n pathParser: PathParser,\n points: number[]\n ) {\n const {\n point,\n controlPoint,\n currentPoint\n } = PathElement.pathS(pathParser)\n\n points.push(\n point.x,\n point.y,\n controlPoint.x,\n controlPoint.y,\n currentPoint.x,\n currentPoint.y\n )\n\n return PathParser.CURVE_TO\n }\n\n protected pathQ(\n pathParser: PathParser,\n points: number[]\n ) {\n const {\n controlPoint,\n currentPoint\n } = PathElement.pathQ(pathParser)\n\n points.push(\n controlPoint.x,\n controlPoint.y,\n currentPoint.x,\n currentPoint.y\n )\n }\n\n protected pathT(\n pathParser: PathParser,\n points: number[]\n ) {\n const {\n controlPoint,\n currentPoint\n } = PathElement.pathT(pathParser)\n\n points.push(\n controlPoint.x,\n controlPoint.y,\n currentPoint.x,\n currentPoint.y\n )\n\n return PathParser.QUAD_TO\n }\n\n protected pathA(\n pathParser: PathParser\n ) {\n let {\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n } = PathElement.pathA(pathParser)\n\n if (sweepFlag === 0 && ad > 0) {\n ad -= 2 * Math.PI\n }\n\n if (sweepFlag === 1 && ad < 0) {\n ad += 2 * Math.PI\n }\n\n return [\n centp.x,\n centp.y,\n rX,\n rY,\n a1,\n ad,\n xAxisRotation,\n sweepFlag\n ]\n }\n\n protected calcLength(\n x: number,\n y: number,\n commandType: CommandType,\n points: number[]\n ) {\n let len = 0\n let p1: IPoint = null\n let p2: IPoint = null\n let t = 0\n\n switch (commandType) {\n case PathParser.LINE_TO:\n return this.getLineLength(x, y, points[0], points[1])\n\n case PathParser.CURVE_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0\n p1 = this.getPointOnCubicBezier(\n 0,\n x,\n y,\n points[0],\n points[1],\n points[2],\n points[3],\n points[4],\n points[5]\n )\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnCubicBezier(\n t,\n x,\n y,\n points[0],\n points[1],\n points[2],\n points[3],\n points[4],\n points[5]\n )\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y)\n p1 = p2\n }\n\n return len\n\n case PathParser.QUAD_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0.0\n p1 = this.getPointOnQuadraticBezier(\n 0,\n x,\n y,\n points[0],\n points[1],\n points[2],\n points[3]\n )\n\n for (t = 0.01; t <= 1; t += 0.01) {\n p2 = this.getPointOnQuadraticBezier(\n t,\n x,\n y,\n points[0],\n points[1],\n points[2],\n points[3]\n )\n len += this.getLineLength(\n p1.x,\n p1.y,\n p2.x,\n p2.y\n )\n p1 = p2\n }\n\n return len\n\n case PathParser.ARC: {\n // Approximates by breaking curve into line segments\n len = 0.0\n\n const start = points[4]\n // 4 = theta\n const dTheta = points[5]\n // 5 = dTheta\n const end = points[4] + dTheta\n let inc = Math.PI / 180.0\n\n // 1 degree resolution\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end)\n }\n\n // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n p1 = this.getPointOnEllipticalArc(\n points[0],\n points[1],\n points[2],\n points[3],\n start,\n 0\n )\n\n if (dTheta < 0) { // clockwise\n for (t = start - inc; t > end; t -= inc) {\n p2 = this.getPointOnEllipticalArc(\n points[0],\n points[1],\n points[2],\n points[3],\n t,\n 0\n )\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y)\n p1 = p2\n }\n } else { // counter-clockwise\n for (t = start + inc; t < end; t += inc) {\n p2 = this.getPointOnEllipticalArc(\n points[0],\n points[1],\n points[2],\n points[3],\n t,\n 0\n )\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y)\n p1 = p2\n }\n }\n\n p2 = this.getPointOnEllipticalArc(\n points[0],\n points[1],\n points[2],\n points[3],\n end,\n 0\n )\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y)\n\n return len\n }\n\n default:\n }\n\n return 0\n }\n\n protected getPointOnLine(\n dist: number,\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n fromX = p1x,\n fromY = p1y\n ) {\n const m = (p2y - p1y) / ((p2x - p1x) + PSEUDO_ZERO)\n let run = Math.sqrt(dist * dist / (1 + m * m))\n\n if (p2x < p1x) {\n run *= -1\n }\n\n let rise = m * run\n let pt: IPoint = null\n\n if (p2x === p1x) { // vertical line\n pt = {\n x: fromX,\n y: fromY + rise\n }\n } else\n if ((fromY - p1y) / ((fromX - p1x) + PSEUDO_ZERO) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise\n }\n } else {\n let ix = 0\n let iy = 0\n const len = this.getLineLength(p1x, p1y, p2x, p2y)\n\n if (len < PSEUDO_ZERO) {\n return null\n }\n\n let u =\n ((fromX - p1x) * (p2x - p1x))\n + ((fromY - p1y) * (p2y - p1y))\n\n u /= len * len\n ix = p1x + u * (p2x - p1x)\n iy = p1y + u * (p2y - p1y)\n\n const pRise = this.getLineLength(fromX, fromY, ix, iy)\n const pRun = Math.sqrt(dist * dist - pRise * pRise)\n\n run = Math.sqrt(pRun * pRun / (1 + m * m))\n\n if (p2x < p1x) {\n run *= -1\n }\n\n rise = m * run\n pt = {\n x: ix + run,\n y: iy + rise\n }\n }\n\n return pt\n }\n\n protected getPointOnPath(distance: number) {\n const fullLen = this.getPathLength()\n let cumulativePathLength = 0\n let p: IPoint = null\n\n if (distance < -0.00005\n || distance - 0.00005 > fullLen\n ) {\n return null\n }\n\n const { dataArray } = this\n\n for (const command of dataArray) {\n if (command\n && (\n command.pathLength < 0.00005\n || cumulativePathLength + command.pathLength + 0.00005 < distance\n )\n ) {\n cumulativePathLength += command.pathLength\n continue\n }\n\n const delta = distance - cumulativePathLength\n let currentT = 0\n\n switch (command.type) {\n case PathParser.LINE_TO:\n p = this.getPointOnLine(\n delta,\n command.start.x,\n command.start.y,\n command.points[0],\n command.points[1],\n command.start.x,\n command.start.y\n )\n break\n\n case PathParser.ARC: {\n const start = command.points[4]\n // 4 = theta\n const dTheta = command.points[5]\n // 5 = dTheta\n const end = command.points[4] + dTheta\n\n currentT = start + delta / command.pathLength * dTheta\n\n if (dTheta < 0 && currentT < end\n || dTheta >= 0 && currentT > end\n ) {\n break\n }\n\n p = this.getPointOnEllipticalArc(\n command.points[0],\n command.points[1],\n command.points[2],\n command.points[3],\n currentT,\n command.points[6]\n )\n break\n }\n\n case PathParser.CURVE_TO:\n\n currentT = delta / command.pathLength\n\n if (currentT > 1) {\n currentT = 1\n }\n\n p = this.getPointOnCubicBezier(\n currentT,\n command.start.x,\n command.start.y,\n command.points[0],\n command.points[1],\n command.points[2],\n command.points[3],\n command.points[4],\n command.points[5]\n )\n break\n\n case PathParser.QUAD_TO:\n\n currentT = delta / command.pathLength\n\n if (currentT > 1) {\n currentT = 1\n }\n\n p = this.getPointOnQuadraticBezier(\n currentT,\n command.start.x,\n command.start.y,\n command.points[0],\n command.points[1],\n command.points[2],\n command.points[3]\n )\n break\n\n default:\n }\n\n if (p) {\n return p\n }\n\n break\n }\n\n return null\n }\n\n protected getLineLength(\n x1: number,\n y1: number,\n x2: number,\n y2: number\n ) {\n return Math.sqrt(\n (x2 - x1) * (x2 - x1)\n + (y2 - y1) * (y2 - y1)\n )\n }\n\n protected getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce<number>(\n (length, command: IPathCommand) => (\n command.pathLength > 0\n ? length + command.pathLength\n : length\n ),\n 0\n )\n }\n\n return this.pathLength\n }\n\n protected getPointOnCubicBezier(\n pct: number,\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n p3x: number,\n p3y: number,\n p4x: number,\n p4y: number\n ): IPoint {\n const x = p4x * CB1(pct) + p3x * CB2(pct) + p2x * CB3(pct) + p1x * CB4(pct)\n const y = p4y * CB1(pct) + p3y * CB2(pct) + p2y * CB3(pct) + p1y * CB4(pct)\n\n return {\n x,\n y\n }\n }\n\n protected getPointOnQuadraticBezier(\n pct: number,\n p1x: number,\n p1y: number,\n p2x: number,\n p2y: number,\n p3x: number,\n p3y: number\n ): IPoint {\n const x = p3x * QB1(pct) + p2x * QB2(pct) + p1x * QB3(pct)\n const y = p3y * QB1(pct) + p2y * QB2(pct) + p1y * QB3(pct)\n\n return {\n x,\n y\n }\n }\n\n protected getPointOnEllipticalArc(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n theta: number,\n psi: number\n ): IPoint {\n const cosPsi = Math.cos(psi)\n const sinPsi = Math.sin(psi)\n const pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta)\n }\n\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n }\n }\n\n // TODO need some optimisations. possibly build cache only for curved segments?\n protected buildEquidistantCache(\n inputStep: number,\n inputPrecision: number\n ) {\n const fullLen = this.getPathLength()\n const precision = inputPrecision || 0.25 // accuracy vs performance\n const step = inputStep || fullLen / 100\n\n if (!this.equidistantCache\n || this.equidistantCache.step !== step\n || this.equidistantCache.precision !== precision\n ) {\n // Prepare cache\n this.equidistantCache = {\n step,\n precision,\n points: []\n }\n\n // Calculate points\n let s = 0\n\n for (let l = 0; l <= fullLen; l += precision) {\n const p0 = this.getPointOnPath(l)\n const p1 = this.getPointOnPath(l + precision)\n\n if (!p0 || !p1) {\n continue\n }\n\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y)\n\n if (s >= step) {\n this.equidistantCache.points.push({\n x: p0.x,\n y: p0.y,\n distance: l\n })\n s -= step\n }\n }\n }\n }\n\n protected getEquidistantPointOnPath(\n targetDistance: number,\n step?: number,\n precision?: number\n ) {\n this.buildEquidistantCache(step, precision)\n\n if (targetDistance < 0\n || targetDistance - this.getPathLength() > 0.00005\n ) {\n return null\n }\n\n const idx = Math.round(\n targetDistance\n / this.getPathLength()\n * (this.equidistantCache.points.length - 1)\n )\n\n return this.equidistantCache.points[idx] || null\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { BoundingBox } from '../BoundingBox'\nimport { Document } from './Document'\nimport { RenderedElement } from './RenderedElement'\n\n// groups: 1: mime-type (+ charset), 2: mime-type (w/o charset), 3: charset, 4: base64?, 5: body\nconst dataUriRegex = /^\\s*data:(([^/,;]+\\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i\n\nexport class ImageElement extends RenderedElement {\n override type = 'image'\n loaded = false\n protected image: CanvasImageSource | string | undefined\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n const href = this.getHrefAttribute().getString()\n\n if (!href) {\n return\n }\n\n const isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href)\n\n document.images.push(this)\n\n if (!isSvg) {\n void this.loadImage(href)\n } else {\n void this.loadSvg(href)\n }\n }\n\n protected async loadImage(href: string) {\n try {\n const image = await this.document.createImage(href)\n\n this.image = image\n } catch (err) {\n console.error(`Error while loading image \"${href}\":`, err)\n }\n\n this.loaded = true\n }\n\n protected async loadSvg(href: string) {\n const match = dataUriRegex.exec(href)\n\n if (match) {\n const data = match[5]\n\n if (data) {\n if (match[4] === 'base64') {\n this.image = atob(data)\n } else {\n this.image = decodeURIComponent(data)\n }\n }\n } else {\n try {\n const response = await this.document.fetch(href)\n const svg = await response.text()\n\n this.image = svg\n } catch (err) {\n console.error(`Error while loading image \"${href}\":`, err)\n }\n }\n\n this.loaded = true\n }\n\n override renderChildren(ctx: RenderingContext2D) {\n const {\n document,\n image,\n loaded\n } = this\n const x = this.getAttribute('x').getPixels('x')\n const y = this.getAttribute('y').getPixels('y')\n const width = this.getStyle('width').getPixels('x')\n const height = this.getStyle('height').getPixels('y')\n\n if (!loaded || !image\n || !width || !height\n ) {\n return\n }\n\n ctx.save()\n ctx.translate(x, y)\n\n if (typeof image === 'string') {\n const subDocument = document.canvg.forkString(\n ctx,\n image,\n {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true,\n ignoreClear: true,\n offsetX: 0,\n offsetY: 0,\n scaleWidth: width,\n scaleHeight: height\n }\n )\n const { documentElement } = subDocument.document\n\n if (documentElement) {\n documentElement.parent = this\n }\n\n void subDocument.render()\n } else {\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width,\n desiredWidth: image.width as number,\n height,\n desiredHeight: image.height as number\n })\n\n if (this.loaded) {\n if (!('complete' in image) || image.complete) {\n ctx.drawImage(image, 0, 0)\n }\n }\n }\n\n ctx.restore()\n }\n\n getBoundingBox() {\n const x = this.getAttribute('x').getPixels('x')\n const y = this.getAttribute('y').getPixels('y')\n const width = this.getStyle('width').getPixels('x')\n const height = this.getStyle('height').getPixels('y')\n\n return new BoundingBox(x, y, x + width, y + height)\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { RenderedElement } from './RenderedElement'\n\nexport class SymbolElement extends RenderedElement {\n override type = 'symbol'\n\n override render(_: RenderingContext2D) {\n // NO RENDER\n }\n}\n","import { Document } from './Document'\n\nexport class SVGFontLoader {\n loaded = false\n\n constructor(\n private readonly document: Document\n ) {\n document.fonts.push(this)\n }\n\n async load(fontFamily: string, url: string) {\n try {\n const { document } = this\n const svgDocument = await document.canvg.parser.load(url)\n const fonts = svgDocument.getElementsByTagName('font')\n\n Array.from(fonts).forEach((fontNode) => {\n const font = document.createElement(fontNode)\n\n document.definitions[fontFamily] = font\n })\n } catch (err) {\n console.error(`Error while loading font \"${url}\":`, err)\n }\n\n this.loaded = true\n }\n}\n","import {\n compressSpaces,\n getSelectorSpecificity,\n parseExternalUrl\n} from '../util'\nimport { Property } from '../Property'\nimport { SVGFontLoader } from '../SVGFontLoader'\nimport { Document } from './Document'\nimport { Element } from './Element'\n\nexport class StyleElement extends Element {\n static readonly parseExternalUrl = parseExternalUrl\n\n override type = 'style'\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n const css = compressSpaces(\n Array.from(node.childNodes)\n // NEED TEST\n .map(_ => _.textContent)\n .join('')\n .replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n .replace(/@import.*;/g, '') // remove imports\n )\n const cssDefs = css.split('}')\n\n cssDefs.forEach((_) => {\n const def = _.trim()\n\n if (!def) {\n return\n }\n\n const cssParts = def.split('{')\n const cssClasses = cssParts[0].split(',')\n const cssProps = cssParts[1].split(';')\n\n cssClasses.forEach((_) => {\n const cssClass = _.trim()\n\n if (!cssClass) {\n return\n }\n\n const props = document.styles[cssClass] || {}\n\n cssProps.forEach((cssProp) => {\n const prop = cssProp.indexOf(':')\n const name = cssProp.substr(0, prop).trim()\n const value = cssProp.substr(prop + 1, cssProp.length - prop).trim()\n\n if (name && value) {\n props[name] = new Property(document, name, value)\n }\n })\n\n document.styles[cssClass] = props\n document.stylesSpecificity[cssClass] = getSelectorSpecificity(cssClass)\n\n if (cssClass === '@font-face') { // && !nodeEnv\n const fontFamily = props['font-family'].getString().replace(/\"|'/g, '')\n const srcs = props.src.getString().split(',')\n\n srcs.forEach((src) => {\n if (src.indexOf('format(\"svg\")') > 0) {\n const url = parseExternalUrl(src)\n\n if (url) {\n void new SVGFontLoader(document).load(fontFamily, url)\n }\n }\n })\n }\n })\n })\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Property } from '../Property'\nimport { Transform } from '../Transform'\nimport { RenderedElement } from './RenderedElement'\nimport { PathElement } from './PathElement'\nimport { SVGElement } from './SVGElement'\n\nexport class UseElement extends RenderedElement {\n override type = 'use'\n private cachedElement: PathElement | undefined\n\n override setContext(ctx: RenderingContext2D) {\n super.setContext(ctx)\n\n const xAttr = this.getAttribute('x')\n const yAttr = this.getAttribute('y')\n\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0)\n }\n\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'))\n }\n }\n\n path(ctx: RenderingContext2D) {\n const { element } = this\n\n if (element) {\n element.path(ctx)\n }\n }\n\n override renderChildren(ctx: RenderingContext2D) {\n const {\n document,\n element\n } = this\n\n if (element) {\n let tempSvg: RenderedElement = element\n\n if (element.type === 'symbol') {\n // render me using a temporary svg element in symbol cases (http://www.w3.org/TR/SVG/struct.html#UseElement)\n tempSvg = new SVGElement(document)\n tempSvg.attributes.viewBox = new Property(\n document,\n 'viewBox',\n element.getAttribute('viewBox').getString()\n )\n tempSvg.attributes.preserveAspectRatio = new Property(\n document,\n 'preserveAspectRatio',\n element.getAttribute('preserveAspectRatio').getString()\n )\n tempSvg.attributes.overflow = new Property(\n document,\n 'overflow',\n element.getAttribute('overflow').getString()\n )\n tempSvg.children = element.children\n\n // element is still the parent of the children\n element.styles.opacity = new Property(\n document,\n 'opacity',\n this.calculateOpacity()\n )\n }\n\n if (tempSvg.type === 'svg') {\n const widthStyle = this.getStyle('width', false, true)\n const heightStyle = this.getStyle('height', false, true)\n\n // if symbol or svg, inherit width/height from me\n if (widthStyle.hasValue()) {\n tempSvg.attributes.width = new Property(\n document,\n 'width',\n widthStyle.getString()\n )\n }\n\n if (heightStyle.hasValue()) {\n tempSvg.attributes.height = new Property(\n document,\n 'height',\n heightStyle.getString()\n )\n }\n }\n\n const oldParent = tempSvg.parent\n\n tempSvg.parent = this\n tempSvg.render(ctx)\n tempSvg.parent = oldParent\n }\n }\n\n getBoundingBox(ctx: CanvasRenderingContext2D) {\n const { element } = this\n\n if (element) {\n return element.getBoundingBox(ctx)\n }\n\n return null\n }\n\n elementTransform() {\n const {\n document,\n element\n } = this\n\n if (!element) {\n return null\n }\n\n return Transform.fromElement(document, element)\n }\n\n protected get element() {\n if (!this.cachedElement) {\n this.cachedElement = this.getHrefAttribute().getDefinition()\n }\n\n return this.cachedElement\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { toNumbers } from '../util'\nimport { Document } from './Document'\nimport { Element } from './Element'\n\nfunction imGet(\n img: Uint8ClampedArray,\n x: number,\n y: number,\n width: number,\n _height: number,\n rgba: number\n) {\n return img[y * width * 4 + x * 4 + rgba]\n}\n\nfunction imSet(\n img: Uint8ClampedArray,\n x: number,\n y: number,\n width: number,\n _height: number,\n rgba: number,\n val: number\n) {\n img[y * width * 4 + x * 4 + rgba] = val\n}\n\nfunction m(\n matrix: number[],\n i: number,\n v: number\n) {\n const mi = matrix[i]\n\n return mi * v\n}\n\nfunction c(\n a: number,\n m1: number,\n m2: number,\n m3: number\n) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3\n}\n\nexport class FeColorMatrixElement extends Element {\n override type = 'feColorMatrix'\n protected readonly matrix: number[]\n protected readonly includeOpacity: boolean\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n let matrix = toNumbers(this.getAttribute('values').getString())\n\n switch (this.getAttribute('type').getString('matrix')) { // http://www.w3.org/TR/SVG/filters.html#feColorMatrixElement\n case 'saturate': {\n const s = matrix[0]\n\n /* eslint-disable array-element-newline */\n matrix = [\n 0.213 + 0.787 * s, 0.715 - 0.715 * s, 0.072 - 0.072 * s, 0, 0,\n 0.213 - 0.213 * s, 0.715 + 0.285 * s, 0.072 - 0.072 * s, 0, 0,\n 0.213 - 0.213 * s, 0.715 - 0.715 * s, 0.072 + 0.928 * s, 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ]\n /* eslint-enable array-element-newline */\n break\n }\n\n case 'hueRotate': {\n const a = matrix[0] * Math.PI / 180.0\n\n /* eslint-disable array-element-newline */\n matrix = [\n c(a, 0.213, 0.787, -0.213), c(a, 0.715, -0.715, -0.715), c(a, 0.072, -0.072, 0.928), 0, 0,\n c(a, 0.213, -0.213, 0.143), c(a, 0.715, 0.285, 0.140), c(a, 0.072, -0.072, -0.283), 0, 0,\n c(a, 0.213, -0.213, -0.787), c(a, 0.715, -0.715, 0.715), c(a, 0.072, 0.928, 0.072), 0, 0,\n 0, 0, 0, 1, 0,\n 0, 0, 0, 0, 1\n ]\n /* eslint-enable array-element-newline */\n break\n }\n\n case 'luminanceToAlpha':\n /* eslint-disable array-element-newline */\n matrix = [\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0.2125, 0.7154, 0.0721, 0, 0,\n 0, 0, 0, 0, 1\n ]\n /* eslint-enable array-element-newline */\n break\n\n default:\n }\n\n this.matrix = matrix\n this.includeOpacity = this.getAttribute('includeOpacity').hasValue()\n }\n\n apply(\n ctx: RenderingContext2D,\n _x: number,\n _y: number,\n width: number,\n height: number\n ) {\n // assuming x==0 && y==0 for now\n const {\n includeOpacity,\n matrix\n } = this\n const srcData = ctx.getImageData(0, 0, width, height)\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const r = imGet(srcData.data, x, y, width, height, 0)\n const g = imGet(srcData.data, x, y, width, height, 1)\n const b = imGet(srcData.data, x, y, width, height, 2)\n const a = imGet(srcData.data, x, y, width, height, 3)\n let nr = m(matrix, 0, r) + m(matrix, 1, g) + m(matrix, 2, b) + m(matrix, 3, a) + m(matrix, 4, 1)\n let ng = m(matrix, 5, r) + m(matrix, 6, g) + m(matrix, 7, b) + m(matrix, 8, a) + m(matrix, 9, 1)\n let nb = m(matrix, 10, r) + m(matrix, 11, g) + m(matrix, 12, b) + m(matrix, 13, a) + m(matrix, 14, 1)\n let na = m(matrix, 15, r) + m(matrix, 16, g) + m(matrix, 17, b) + m(matrix, 18, a) + m(matrix, 19, 1)\n\n if (includeOpacity) {\n nr = 0\n ng = 0\n nb = 0\n na *= a / 255\n }\n\n imSet(srcData.data, x, y, width, height, 0, nr)\n imSet(srcData.data, x, y, width, height, 1, ng)\n imSet(srcData.data, x, y, width, height, 2, nb)\n imSet(srcData.data, x, y, width, height, 3, na)\n }\n }\n\n ctx.clearRect(0, 0, width, height)\n ctx.putImageData(srcData, 0, 0)\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { BoundingBox } from '../BoundingBox'\nimport { Element } from './Element'\nimport { PathElement } from './PathElement'\nimport { FeColorMatrixElement } from './FeColorMatrixElement'\n\nexport class MaskElement extends Element {\n static ignoreStyles = [\n 'mask',\n 'transform',\n 'clip-path'\n ]\n\n override type = 'mask'\n\n apply(ctx: RenderingContext2D, element: Element) {\n const { document } = this\n // render as temp svg\n let x = this.getAttribute('x').getPixels('x')\n let y = this.getAttribute('y').getPixels('y')\n let width = this.getStyle('width').getPixels('x')\n let height = this.getStyle('height').getPixels('y')\n\n if (!width && !height) {\n const boundingBox = new BoundingBox()\n\n this.children.forEach((child: PathElement) => {\n boundingBox.addBoundingBox(child.getBoundingBox(ctx))\n })\n\n x = Math.floor(boundingBox.x1)\n y = Math.floor(boundingBox.y1)\n width = Math.floor(boundingBox.width)\n height = Math.floor(boundingBox.height)\n }\n\n const ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles)\n const maskCanvas = document.createCanvas(x + width, y + height)\n const maskCtx = maskCanvas.getContext('2d')\n\n document.screen.setDefaults(maskCtx)\n this.renderChildren(maskCtx)\n\n // convert mask to alpha with a fake node\n // TODO: refactor out apply from feColorMatrix\n new FeColorMatrixElement(\n document,\n ({\n nodeType: 1,\n childNodes: [],\n attributes: [\n {\n nodeName: 'type',\n value: 'luminanceToAlpha'\n },\n {\n nodeName: 'includeOpacity',\n value: 'true'\n }\n ]\n }) as unknown as HTMLElement\n ).apply(maskCtx, 0, 0, x + width, y + height)\n\n const tmpCanvas = document.createCanvas(x + width, y + height)\n const tmpCtx = tmpCanvas.getContext('2d')\n\n document.screen.setDefaults(tmpCtx)\n element.render(tmpCtx)\n\n tmpCtx.globalCompositeOperation = 'destination-in'\n tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas as CanvasImageSource, 'no-repeat')\n tmpCtx.fillRect(0, 0, x + width, y + height)\n\n ctx.fillStyle = tmpCtx.createPattern(tmpCanvas as CanvasImageSource, 'no-repeat')\n ctx.fillRect(0, 0, x + width, y + height)\n\n // reassign mask\n this.restoreStyles(element, ignoredStyles)\n }\n\n override render(_: RenderingContext2D) {\n // NO RENDER\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Transform } from '../Transform'\nimport { Element } from './Element'\nimport { UseElement } from './UseElement'\n\nconst noop = () => {\n // NOOP\n}\n\nexport class ClipPathElement extends Element {\n override type = 'clipPath'\n\n apply(ctx: RenderingContext2D) {\n const { document } = this\n const contextProto = Reflect.getPrototypeOf(ctx) as RenderingContext2D | null\n const {\n beginPath,\n closePath\n } = ctx\n\n if (contextProto) {\n contextProto.beginPath = noop\n contextProto.closePath = noop\n }\n\n Reflect.apply(beginPath, ctx, [])\n\n this.children.forEach((child: Element | UseElement) => {\n if (!('path' in child)) {\n return\n }\n\n let transform = 'elementTransform' in child\n ? child.elementTransform()\n : null // handle <use />\n\n if (!transform) {\n transform = Transform.fromElement(document, child)\n }\n\n if (transform) {\n transform.apply(ctx)\n }\n\n child.path(ctx)\n\n if (contextProto) {\n contextProto.closePath = closePath\n }\n\n if (transform) {\n transform.unapply(ctx)\n }\n })\n\n Reflect.apply(closePath, ctx, [])\n ctx.clip()\n\n if (contextProto) {\n contextProto.beginPath = beginPath\n contextProto.closePath = closePath\n }\n }\n\n override render(_: RenderingContext2D) {\n // NO RENDER\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Element } from './Element'\nimport { PathElement } from './PathElement'\nimport { FeGaussianBlurElement } from './FeGaussianBlurElement'\n\nexport class FilterElement extends Element {\n static ignoreStyles = [\n 'filter',\n 'transform',\n 'clip-path'\n ]\n\n override type = 'filter'\n\n apply(ctx: RenderingContext2D, element: Element | PathElement) {\n // render as temp svg\n const {\n document,\n children\n } = this\n const boundingBox = 'getBoundingBox' in element\n ? element.getBoundingBox(ctx)\n : null\n\n if (!boundingBox) {\n return\n }\n\n let px = 0\n let py = 0\n\n children.forEach((child: FeGaussianBlurElement) => {\n const efd = child.extraFilterDistance || 0\n\n px = Math.max(px, efd)\n py = Math.max(py, efd)\n })\n\n const width = Math.floor(boundingBox.width)\n const height = Math.floor(boundingBox.height)\n const tmpCanvasWidth = width + 2 * px\n const tmpCanvasHeight = height + 2 * py\n\n if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n return\n }\n\n const x = Math.floor(boundingBox.x)\n const y = Math.floor(boundingBox.y)\n const ignoredStyles = this.removeStyles(element, FilterElement.ignoreStyles)\n const tmpCanvas = document.createCanvas(tmpCanvasWidth, tmpCanvasHeight)\n const tmpCtx = tmpCanvas.getContext('2d')\n\n document.screen.setDefaults(tmpCtx)\n tmpCtx.translate(-x + px, -y + py)\n element.render(tmpCtx)\n\n // apply filters\n children.forEach((child: FeGaussianBlurElement) => {\n if (typeof child.apply === 'function') {\n child.apply(\n tmpCtx,\n 0,\n 0,\n tmpCanvasWidth,\n tmpCanvasHeight\n )\n }\n })\n\n // render on me\n ctx.drawImage(\n tmpCanvas,\n 0,\n 0,\n tmpCanvasWidth,\n tmpCanvasHeight,\n x - px,\n y - py,\n tmpCanvasWidth,\n tmpCanvasHeight\n )\n\n this.restoreStyles(element, ignoredStyles)\n }\n\n override render(_: RenderingContext2D) {\n // NO RENDER\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Document } from './Document'\nimport { Element } from './Element'\n\nexport class FeDropShadowElement extends Element {\n override type = 'feDropShadow'\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n this.addStylesFromStyleDefinition()\n }\n\n apply(\n _: RenderingContext2D,\n _x: number,\n _y: number,\n _width: number,\n _height: number\n ) {\n // TODO: implement\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Element } from './Element'\n\nexport class FeMorphologyElement extends Element {\n override type = 'feMorphology'\n\n apply(\n _: RenderingContext2D,\n _x: number,\n _y: number,\n _width: number,\n _height: number\n ) {\n // TODO: implement\n }\n}\n","import { RenderingContext2D } from '../types'\nimport { Element } from './Element'\n\nexport class FeCompositeElement extends Element {\n override type = 'feComposite'\n\n apply(\n _: RenderingContext2D,\n _x: number,\n _y: number,\n _width: number,\n _height: number\n ) {\n // TODO: implement\n }\n}\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/* eslint-disable no-bitwise -- used for calculations */\n\n/* eslint-disable unicorn/prefer-query-selector -- aiming at\n backward-compatibility */\n\n/**\n* StackBlur - a fast almost Gaussian Blur For Canvas\n*\n* In case you find this class useful - especially in commercial projects -\n* I am not totally unhappy for a small donation to my PayPal account\n* mario@quasimondo.de\n*\n* Or support me on flattr:\n* {@link https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript}.\n*\n* @module StackBlur\n* @author Mario Klingemann\n* Contact: mario@quasimondo.com\n* Website: {@link http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html}\n* Twitter: @quasimondo\n*\n* @copyright (c) 2010 Mario Klingemann\n*\n* Permission is hereby granted, free of charge, to any person\n* obtaining a copy of this software and associated documentation\n* files (the \"Software\"), to deal in the Software without\n* restriction, including without limitation the rights to use,\n* copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the\n* Software is furnished to do so, subject to the following\n* conditions:\n*\n* The above copyright notice and this permission notice shall be\n* included in all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n* OTHER DEALINGS IN THE SOFTWARE.\n*/\nvar mulTable = [512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\nvar shgTable = [9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n/**\n * @param {string|HTMLImageElement} img\n * @param {string|HTMLCanvasElement} canvas\n * @param {Float} radius\n * @param {boolean} blurAlphaChannel\n * @param {boolean} useOffset\n * @param {boolean} skipStyles\n * @returns {undefined}\n */\n\nfunction processImage(img, canvas, radius, blurAlphaChannel, useOffset, skipStyles) {\n if (typeof img === 'string') {\n img = document.getElementById(img);\n }\n\n if (!img || Object.prototype.toString.call(img).slice(8, -1) === 'HTMLImageElement' && !('naturalWidth' in img)) {\n return;\n }\n\n var dimensionType = useOffset ? 'offset' : 'natural';\n var w = img[dimensionType + 'Width'];\n var h = img[dimensionType + 'Height']; // add ImageBitmap support,can blur texture source\n\n if (Object.prototype.toString.call(img).slice(8, -1) === 'ImageBitmap') {\n w = img.width;\n h = img.height;\n }\n\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n }\n\n if (!canvas || !('getContext' in canvas)) {\n return;\n }\n\n if (!skipStyles) {\n canvas.style.width = w + 'px';\n canvas.style.height = h + 'px';\n }\n\n canvas.width = w;\n canvas.height = h;\n var context = canvas.getContext('2d');\n context.clearRect(0, 0, w, h);\n context.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, w, h);\n\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n if (blurAlphaChannel) {\n processCanvasRGBA(canvas, 0, 0, w, h, radius);\n } else {\n processCanvasRGB(canvas, 0, 0, w, h, radius);\n }\n}\n/**\n * @param {string|HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @throws {Error|TypeError}\n * @returns {ImageData} See {@link https://html.spec.whatwg.org/multipage/canvas.html#imagedata}\n */\n\n\nfunction getImageDataFromCanvas(canvas, topX, topY, width, height) {\n if (typeof canvas === 'string') {\n canvas = document.getElementById(canvas);\n }\n\n if (!canvas || _typeof(canvas) !== 'object' || !('getContext' in canvas)) {\n throw new TypeError('Expecting canvas with `getContext` method ' + 'in processCanvasRGB(A) calls!');\n }\n\n var context = canvas.getContext('2d');\n\n try {\n return context.getImageData(topX, topY, width, height);\n } catch (e) {\n throw new Error('unable to access image data: ' + e);\n }\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGBA(canvas, topX, topY, width, height, radius) {\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n radius |= 0;\n var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n imageData = processImageDataRGBA(imageData, topX, topY, width, height, radius);\n canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGBA(imageData, topX, topY, width, height, radius) {\n var pixels = imageData.data;\n var div = 2 * radius + 1; // const w4 = width << 2;\n\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n var stackStart = new BlurStack();\n var stack = stackStart;\n var stackEnd;\n\n for (var i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n\n stack.next = stackStart;\n var stackIn = null,\n stackOut = null,\n yw = 0,\n yi = 0;\n var mulSum = mulTable[radius];\n var shgSum = shgTable[radius];\n\n for (var y = 0; y < height; y++) {\n stack = stackStart;\n var pr = pixels[yi],\n pg = pixels[yi + 1],\n pb = pixels[yi + 2],\n pa = pixels[yi + 3];\n\n for (var _i = 0; _i < radiusPlus1; _i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n\n var rInSum = 0,\n gInSum = 0,\n bInSum = 0,\n aInSum = 0,\n rOutSum = radiusPlus1 * pr,\n gOutSum = radiusPlus1 * pg,\n bOutSum = radiusPlus1 * pb,\n aOutSum = radiusPlus1 * pa,\n rSum = sumFactor * pr,\n gSum = sumFactor * pg,\n bSum = sumFactor * pb,\n aSum = sumFactor * pa;\n\n for (var _i2 = 1; _i2 < radiusPlus1; _i2++) {\n var p = yi + ((widthMinus1 < _i2 ? widthMinus1 : _i2) << 2);\n var r = pixels[p],\n g = pixels[p + 1],\n b = pixels[p + 2],\n a = pixels[p + 3];\n var rbs = radiusPlus1 - _i2;\n rSum += (stack.r = r) * rbs;\n gSum += (stack.g = g) * rbs;\n bSum += (stack.b = b) * rbs;\n aSum += (stack.a = a) * rbs;\n rInSum += r;\n gInSum += g;\n bInSum += b;\n aInSum += a;\n stack = stack.next;\n }\n\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var x = 0; x < width; x++) {\n var paInitial = aSum * mulSum >>> shgSum;\n pixels[yi + 3] = paInitial;\n\n if (paInitial !== 0) {\n var _a2 = 255 / paInitial;\n\n pixels[yi] = (rSum * mulSum >>> shgSum) * _a2;\n pixels[yi + 1] = (gSum * mulSum >>> shgSum) * _a2;\n pixels[yi + 2] = (bSum * mulSum >>> shgSum) * _a2;\n } else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n\n rSum -= rOutSum;\n gSum -= gOutSum;\n bSum -= bOutSum;\n aSum -= aOutSum;\n rOutSum -= stackIn.r;\n gOutSum -= stackIn.g;\n bOutSum -= stackIn.b;\n aOutSum -= stackIn.a;\n\n var _p = x + radius + 1;\n\n _p = yw + (_p < widthMinus1 ? _p : widthMinus1) << 2;\n rInSum += stackIn.r = pixels[_p];\n gInSum += stackIn.g = pixels[_p + 1];\n bInSum += stackIn.b = pixels[_p + 2];\n aInSum += stackIn.a = pixels[_p + 3];\n rSum += rInSum;\n gSum += gInSum;\n bSum += bInSum;\n aSum += aInSum;\n stackIn = stackIn.next;\n var _stackOut = stackOut,\n _r = _stackOut.r,\n _g = _stackOut.g,\n _b = _stackOut.b,\n _a = _stackOut.a;\n rOutSum += _r;\n gOutSum += _g;\n bOutSum += _b;\n aOutSum += _a;\n rInSum -= _r;\n gInSum -= _g;\n bInSum -= _b;\n aInSum -= _a;\n stackOut = stackOut.next;\n yi += 4;\n }\n\n yw += width;\n }\n\n for (var _x = 0; _x < width; _x++) {\n yi = _x << 2;\n\n var _pr = pixels[yi],\n _pg = pixels[yi + 1],\n _pb = pixels[yi + 2],\n _pa = pixels[yi + 3],\n _rOutSum = radiusPlus1 * _pr,\n _gOutSum = radiusPlus1 * _pg,\n _bOutSum = radiusPlus1 * _pb,\n _aOutSum = radiusPlus1 * _pa,\n _rSum = sumFactor * _pr,\n _gSum = sumFactor * _pg,\n _bSum = sumFactor * _pb,\n _aSum = sumFactor * _pa;\n\n stack = stackStart;\n\n for (var _i3 = 0; _i3 < radiusPlus1; _i3++) {\n stack.r = _pr;\n stack.g = _pg;\n stack.b = _pb;\n stack.a = _pa;\n stack = stack.next;\n }\n\n var yp = width;\n var _gInSum = 0,\n _bInSum = 0,\n _aInSum = 0,\n _rInSum = 0;\n\n for (var _i4 = 1; _i4 <= radius; _i4++) {\n yi = yp + _x << 2;\n\n var _rbs = radiusPlus1 - _i4;\n\n _rSum += (stack.r = _pr = pixels[yi]) * _rbs;\n _gSum += (stack.g = _pg = pixels[yi + 1]) * _rbs;\n _bSum += (stack.b = _pb = pixels[yi + 2]) * _rbs;\n _aSum += (stack.a = _pa = pixels[yi + 3]) * _rbs;\n _rInSum += _pr;\n _gInSum += _pg;\n _bInSum += _pb;\n _aInSum += _pa;\n stack = stack.next;\n\n if (_i4 < heightMinus1) {\n yp += width;\n }\n }\n\n yi = _x;\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var _y = 0; _y < height; _y++) {\n var _p2 = yi << 2;\n\n pixels[_p2 + 3] = _pa = _aSum * mulSum >>> shgSum;\n\n if (_pa > 0) {\n _pa = 255 / _pa;\n pixels[_p2] = (_rSum * mulSum >>> shgSum) * _pa;\n pixels[_p2 + 1] = (_gSum * mulSum >>> shgSum) * _pa;\n pixels[_p2 + 2] = (_bSum * mulSum >>> shgSum) * _pa;\n } else {\n pixels[_p2] = pixels[_p2 + 1] = pixels[_p2 + 2] = 0;\n }\n\n _rSum -= _rOutSum;\n _gSum -= _gOutSum;\n _bSum -= _bOutSum;\n _aSum -= _aOutSum;\n _rOutSum -= stackIn.r;\n _gOutSum -= stackIn.g;\n _bOutSum -= stackIn.b;\n _aOutSum -= stackIn.a;\n _p2 = _x + ((_p2 = _y + radiusPlus1) < heightMinus1 ? _p2 : heightMinus1) * width << 2;\n _rSum += _rInSum += stackIn.r = pixels[_p2];\n _gSum += _gInSum += stackIn.g = pixels[_p2 + 1];\n _bSum += _bInSum += stackIn.b = pixels[_p2 + 2];\n _aSum += _aInSum += stackIn.a = pixels[_p2 + 3];\n stackIn = stackIn.next;\n _rOutSum += _pr = stackOut.r;\n _gOutSum += _pg = stackOut.g;\n _bOutSum += _pb = stackOut.b;\n _aOutSum += _pa = stackOut.a;\n _rInSum -= _pr;\n _gInSum -= _pg;\n _bInSum -= _pb;\n _aInSum -= _pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n\n return imageData;\n}\n/**\n * @param {HTMLCanvasElement} canvas\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {undefined}\n */\n\n\nfunction processCanvasRGB(canvas, topX, topY, width, height, radius) {\n if (isNaN(radius) || radius < 1) {\n return;\n }\n\n radius |= 0;\n var imageData = getImageDataFromCanvas(canvas, topX, topY, width, height);\n imageData = processImageDataRGB(imageData, topX, topY, width, height, radius);\n canvas.getContext('2d').putImageData(imageData, topX, topY);\n}\n/**\n * @param {ImageData} imageData\n * @param {Integer} topX\n * @param {Integer} topY\n * @param {Integer} width\n * @param {Integer} height\n * @param {Float} radius\n * @returns {ImageData}\n */\n\n\nfunction processImageDataRGB(imageData, topX, topY, width, height, radius) {\n var pixels = imageData.data;\n var div = 2 * radius + 1; // const w4 = width << 2;\n\n var widthMinus1 = width - 1;\n var heightMinus1 = height - 1;\n var radiusPlus1 = radius + 1;\n var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n var stackStart = new BlurStack();\n var stack = stackStart;\n var stackEnd;\n\n for (var i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n\n stack.next = stackStart;\n var stackIn = null;\n var stackOut = null;\n var mulSum = mulTable[radius];\n var shgSum = shgTable[radius];\n var p, rbs;\n var yw = 0,\n yi = 0;\n\n for (var y = 0; y < height; y++) {\n var pr = pixels[yi],\n pg = pixels[yi + 1],\n pb = pixels[yi + 2],\n rOutSum = radiusPlus1 * pr,\n gOutSum = radiusPlus1 * pg,\n bOutSum = radiusPlus1 * pb,\n rSum = sumFactor * pr,\n gSum = sumFactor * pg,\n bSum = sumFactor * pb;\n stack = stackStart;\n\n for (var _i5 = 0; _i5 < radiusPlus1; _i5++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack = stack.next;\n }\n\n var rInSum = 0,\n gInSum = 0,\n bInSum = 0;\n\n for (var _i6 = 1; _i6 < radiusPlus1; _i6++) {\n p = yi + ((widthMinus1 < _i6 ? widthMinus1 : _i6) << 2);\n rSum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - _i6);\n gSum += (stack.g = pg = pixels[p + 1]) * rbs;\n bSum += (stack.b = pb = pixels[p + 2]) * rbs;\n rInSum += pr;\n gInSum += pg;\n bInSum += pb;\n stack = stack.next;\n }\n\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var x = 0; x < width; x++) {\n pixels[yi] = rSum * mulSum >>> shgSum;\n pixels[yi + 1] = gSum * mulSum >>> shgSum;\n pixels[yi + 2] = bSum * mulSum >>> shgSum;\n rSum -= rOutSum;\n gSum -= gOutSum;\n bSum -= bOutSum;\n rOutSum -= stackIn.r;\n gOutSum -= stackIn.g;\n bOutSum -= stackIn.b;\n p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2;\n rInSum += stackIn.r = pixels[p];\n gInSum += stackIn.g = pixels[p + 1];\n bInSum += stackIn.b = pixels[p + 2];\n rSum += rInSum;\n gSum += gInSum;\n bSum += bInSum;\n stackIn = stackIn.next;\n rOutSum += pr = stackOut.r;\n gOutSum += pg = stackOut.g;\n bOutSum += pb = stackOut.b;\n rInSum -= pr;\n gInSum -= pg;\n bInSum -= pb;\n stackOut = stackOut.next;\n yi += 4;\n }\n\n yw += width;\n }\n\n for (var _x2 = 0; _x2 < width; _x2++) {\n yi = _x2 << 2;\n\n var _pr2 = pixels[yi],\n _pg2 = pixels[yi + 1],\n _pb2 = pixels[yi + 2],\n _rOutSum2 = radiusPlus1 * _pr2,\n _gOutSum2 = radiusPlus1 * _pg2,\n _bOutSum2 = radiusPlus1 * _pb2,\n _rSum2 = sumFactor * _pr2,\n _gSum2 = sumFactor * _pg2,\n _bSum2 = sumFactor * _pb2;\n\n stack = stackStart;\n\n for (var _i7 = 0; _i7 < radiusPlus1; _i7++) {\n stack.r = _pr2;\n stack.g = _pg2;\n stack.b = _pb2;\n stack = stack.next;\n }\n\n var _rInSum2 = 0,\n _gInSum2 = 0,\n _bInSum2 = 0;\n\n for (var _i8 = 1, yp = width; _i8 <= radius; _i8++) {\n yi = yp + _x2 << 2;\n _rSum2 += (stack.r = _pr2 = pixels[yi]) * (rbs = radiusPlus1 - _i8);\n _gSum2 += (stack.g = _pg2 = pixels[yi + 1]) * rbs;\n _bSum2 += (stack.b = _pb2 = pixels[yi + 2]) * rbs;\n _rInSum2 += _pr2;\n _gInSum2 += _pg2;\n _bInSum2 += _pb2;\n stack = stack.next;\n\n if (_i8 < heightMinus1) {\n yp += width;\n }\n }\n\n yi = _x2;\n stackIn = stackStart;\n stackOut = stackEnd;\n\n for (var _y2 = 0; _y2 < height; _y2++) {\n p = yi << 2;\n pixels[p] = _rSum2 * mulSum >>> shgSum;\n pixels[p + 1] = _gSum2 * mulSum >>> shgSum;\n pixels[p + 2] = _bSum2 * mulSum >>> shgSum;\n _rSum2 -= _rOutSum2;\n _gSum2 -= _gOutSum2;\n _bSum2 -= _bOutSum2;\n _rOutSum2 -= stackIn.r;\n _gOutSum2 -= stackIn.g;\n _bOutSum2 -= stackIn.b;\n p = _x2 + ((p = _y2 + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2;\n _rSum2 += _rInSum2 += stackIn.r = pixels[p];\n _gSum2 += _gInSum2 += stackIn.g = pixels[p + 1];\n _bSum2 += _bInSum2 += stackIn.b = pixels[p + 2];\n stackIn = stackIn.next;\n _rOutSum2 += _pr2 = stackOut.r;\n _gOutSum2 += _pg2 = stackOut.g;\n _bOutSum2 += _pb2 = stackOut.b;\n _rInSum2 -= _pr2;\n _gInSum2 -= _pg2;\n _bInSum2 -= _pb2;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n\n return imageData;\n}\n/**\n *\n */\n\n\nvar BlurStack =\n/**\n * Set properties.\n */\nfunction BlurStack() {\n _classCallCheck(this, BlurStack);\n\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n};\n\nexport { BlurStack, processCanvasRGB as canvasRGB, processCanvasRGBA as canvasRGBA, processImage as image, processImageDataRGB as imageDataRGB, processImageDataRGBA as imageDataRGBA };\n","import { canvasRGBA } from 'stackblur-canvas'\nimport { RenderingContext2D } from '../types'\nimport { Document } from './Document'\nimport { Element } from './Element'\n\nexport class FeGaussianBlurElement extends Element {\n override type = 'feGaussianBlur'\n readonly extraFilterDistance: number\n protected readonly blurRadius: number\n\n constructor(\n document: Document,\n node: HTMLElement,\n captureTextNodes?: boolean\n ) {\n super(document, node, captureTextNodes)\n\n this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber())\n this.extraFilterDistance = this.blurRadius\n }\n\n apply(\n ctx: RenderingContext2D,\n x: number,\n y: number,\n width: number,\n height: number\n ) {\n const {\n document,\n blurRadius\n } = this\n const body = document.window\n ? document.window.document.body\n : null\n const canvas = ctx.canvas as HTMLCanvasElement\n\n // StackBlur requires canvas be on document\n canvas.id = document.getUniqueId()\n\n if (body) {\n canvas.style.display = 'none'\n body.appendChild(canvas)\n }\n\n canvasRGBA(canvas, x, y, width, height, blurRadius)\n\n if (body) {\n body.removeChild(canvas)\n }\n }\n}\n","import { Element } from './Element'\n\nexport class TitleElement extends Element {\n override type = 'title'\n}\n","import { Element } from './Element'\n\nexport class DescElement extends Element {\n override type = 'desc'\n}\n","import { Element } from './Element'\nimport { UnknownElement } from './UnknownElement'\nimport { RenderedElement } from './RenderedElement'\nimport { PathElement } from './PathElement'\nimport { SVGElement } from './SVGElement'\nimport { RectElement } from './RectElement'\nimport { CircleElement } from './CircleElement'\nimport { EllipseElement } from './EllipseElement'\nimport { LineElement } from './LineElement'\nimport { PolylineElement } from './PolylineElement'\nimport { PolygonElement } from './PolygonElement'\nimport { PatternElement } from './PatternElement'\nimport { MarkerElement } from './MarkerElement'\nimport { DefsElement } from './DefsElement'\nimport { GradientElement } from './GradientElement'\nimport { LinearGradientElement } from './LinearGradientElement'\nimport { RadialGradientElement } from './RadialGradientElement'\nimport { StopElement } from './StopElement'\nimport { AnimateElement } from './AnimateElement'\nimport { AnimateColorElement } from './AnimateColorElement'\nimport { AnimateTransformElement } from './AnimateTransformElement'\nimport { FontElement } from './FontElement'\nimport { FontFaceElement } from './FontFaceElement'\nimport { MissingGlyphElement } from './MissingGlyphElement'\nimport { GlyphElement } from './GlyphElement'\nimport { TextElement } from './TextElement'\nimport { TSpanElement } from './TSpanElement'\nimport { TRefElement } from './TRefElement'\nimport { AElement } from './AElement'\nimport { TextPathElement } from './TextPathElement'\nimport { ImageElement } from './ImageElement'\nimport { GElement } from './GElement'\nimport { SymbolElement } from './SymbolElement'\nimport { StyleElement } from './StyleElement'\nimport { UseElement } from './UseElement'\nimport { MaskElement } from './MaskElement'\nimport { ClipPathElement } from './ClipPathElement'\nimport { FilterElement } from './FilterElement'\nimport { FeDropShadowElement } from './FeDropShadowElement'\nimport { FeMorphologyElement } from './FeMorphologyElement'\nimport { FeCompositeElement } from './FeCompositeElement'\nimport { FeColorMatrixElement } from './FeColorMatrixElement'\nimport { FeGaussianBlurElement } from './FeGaussianBlurElement'\nimport { TitleElement } from './TitleElement'\nimport { DescElement } from './DescElement'\n\nexport const elements = {\n 'svg': SVGElement,\n 'rect': RectElement,\n 'circle': CircleElement,\n 'ellipse': EllipseElement,\n 'line': LineElement,\n 'polyline': PolylineElement,\n 'polygon': PolygonElement,\n 'path': PathElement,\n 'pattern': PatternElement,\n 'marker': MarkerElement,\n 'defs': DefsElement,\n 'linearGradient': LinearGradientElement,\n 'radialGradient': RadialGradientElement,\n 'stop': StopElement,\n 'animate': AnimateElement,\n 'animateColor': AnimateColorElement,\n 'animateTransform': AnimateTransformElement,\n 'font': FontElement,\n 'font-face': FontFaceElement,\n 'missing-glyph': MissingGlyphElement,\n 'glyph': GlyphElement,\n 'text': TextElement,\n 'tspan': TSpanElement,\n 'tref': TRefElement,\n 'a': AElement,\n 'textPath': TextPathElement,\n 'image': ImageElement,\n 'g': GElement,\n 'symbol': SymbolElement,\n 'style': StyleElement,\n 'use': UseElement,\n 'mask': MaskElement,\n 'clipPath': ClipPathElement,\n 'filter': FilterElement,\n 'feDropShadow': FeDropShadowElement,\n 'feMorphology': FeMorphologyElement,\n 'feComposite': FeCompositeElement,\n 'feColorMatrix': FeColorMatrixElement,\n 'feGaussianBlur': FeGaussianBlurElement,\n 'title': TitleElement,\n 'desc': DescElement\n}\n\ntype Elements = typeof elements\n\nexport type AnyElement = Elements[keyof Elements]\n\nexport {\n Element,\n UnknownElement,\n RenderedElement,\n PathElement,\n SVGElement,\n RectElement,\n CircleElement,\n EllipseElement,\n LineElement,\n PolylineElement,\n PolygonElement,\n PatternElement,\n MarkerElement,\n DefsElement,\n GradientElement,\n LinearGradientElement,\n RadialGradientElement,\n StopElement,\n AnimateElement,\n AnimateColorElement,\n AnimateTransformElement,\n FontElement,\n FontFaceElement,\n MissingGlyphElement,\n GlyphElement,\n TextElement,\n TSpanElement,\n TRefElement,\n AElement,\n TextPathElement,\n ImageElement,\n GElement,\n SymbolElement,\n StyleElement,\n UseElement,\n MaskElement,\n ClipPathElement,\n FilterElement,\n FeDropShadowElement,\n FeMorphologyElement,\n FeCompositeElement,\n FeColorMatrixElement,\n FeGaussianBlurElement,\n TitleElement,\n DescElement\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { Canvg } from '../Canvg'\nimport { IScreenViewBoxConfig, Screen } from '../Screen'\nimport { Property } from '../Property'\nimport { SVGFontLoader } from '../SVGFontLoader'\nimport { Element } from './Element'\nimport { UnknownElement } from './UnknownElement'\nimport { TextNode } from './TextNode'\nimport { ImageElement } from './ImageElement'\nimport { SVGElement } from './SVGElement'\nimport {\n AnyElement,\n elements as elementTypes\n} from './elements'\n\n/**\n * Function to create new canvas.\n */\nexport type CreateCanvas = (width: number, height: number) => HTMLCanvasElement | OffscreenCanvas\n\n/**\n * Function to create new image.\n */\nexport type CreateImage = (src: string, anonymousCrossOrigin?: boolean) => Promise<CanvasImageSource>\n\nexport interface IDocumentOptions {\n /**\n * Default `rem` size.\n */\n rootEmSize?: number\n /**\n * Default `em` size.\n */\n emSize?: number\n /**\n * Function to create new canvas.\n */\n createCanvas?: CreateCanvas\n /**\n * Function to create new image.\n */\n createImage?: CreateImage\n /**\n * Load images anonymously.\n */\n anonymousCrossOrigin?: boolean\n}\n\nexport type IViewBoxConfig = Omit<IScreenViewBoxConfig, 'document'>\n\ntype DOMDocument = typeof window.document\n\nfunction createCanvas(width: number, height: number) {\n const canvas = document.createElement('canvas')\n\n canvas.width = width\n canvas.height = height\n\n return canvas\n}\n\nasync function createImage(src: string, anonymousCrossOrigin = false) {\n const image = document.createElement('img')\n\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous'\n }\n\n return new Promise<HTMLImageElement>((resolve, reject) => {\n image.onload = () => {\n resolve(image)\n }\n\n image.onerror = (_event, _source, _lineno, _colno, error) => {\n reject(error)\n }\n\n image.src = src\n })\n}\n\nconst DEFAULT_EM_SIZE = 12\n\nexport class Document {\n static readonly createCanvas = createCanvas\n static readonly createImage = createImage\n static readonly elementTypes: Record<string, AnyElement> = elementTypes\n\n rootEmSize: number\n documentElement?: SVGElement\n readonly screen: Screen\n readonly createCanvas: CreateCanvas\n readonly createImage: CreateImage\n readonly definitions: Record<string, Element> = {}\n readonly styles: Record<string, Record<string, Property>> = {}\n readonly stylesSpecificity: Record<string, string> = {}\n readonly images: ImageElement[] = []\n readonly fonts: SVGFontLoader[] = []\n private readonly emSizeStack: number[] = []\n private uniqueId = 0\n\n constructor(\n readonly canvg: Canvg,\n {\n rootEmSize = DEFAULT_EM_SIZE,\n emSize = DEFAULT_EM_SIZE,\n createCanvas = Document.createCanvas,\n createImage = Document.createImage,\n anonymousCrossOrigin\n }: IDocumentOptions = {}\n ) {\n this.screen = canvg.screen\n this.rootEmSize = rootEmSize\n this.emSize = emSize\n this.createCanvas = createCanvas\n this.createImage = this.bindCreateImage(createImage, anonymousCrossOrigin)\n\n this.screen.wait(() => this.isImagesLoaded())\n this.screen.wait(() => this.isFontsLoaded())\n }\n\n private bindCreateImage(createImage: CreateImage, anonymousCrossOrigin?: boolean) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return (source: string, forceAnonymousCrossOrigin?: boolean) => createImage(\n source,\n typeof forceAnonymousCrossOrigin === 'boolean'\n ? forceAnonymousCrossOrigin\n : anonymousCrossOrigin\n )\n }\n\n return createImage\n }\n\n get window() {\n return this.screen.window\n }\n\n get fetch() {\n return this.screen.fetch\n }\n\n get ctx() {\n return this.screen.ctx\n }\n\n get emSize() {\n const { emSizeStack } = this\n\n return emSizeStack[emSizeStack.length - 1] || DEFAULT_EM_SIZE\n }\n\n set emSize(value: number) {\n const { emSizeStack } = this\n\n emSizeStack.push(value)\n }\n\n popEmSize() {\n const { emSizeStack } = this\n\n emSizeStack.pop()\n }\n\n getUniqueId() {\n return `canvg${++this.uniqueId}`\n }\n\n isImagesLoaded() {\n return this.images.every(_ => _.loaded)\n }\n\n isFontsLoaded() {\n return this.fonts.every(_ => _.loaded)\n }\n\n createDocumentElement(document: DOMDocument) {\n const documentElement = this.createElement<SVGElement>(document.documentElement)\n\n documentElement.root = true\n documentElement.addStylesFromStyleDefinition()\n\n this.documentElement = documentElement\n\n return documentElement\n }\n\n createElement<T extends Element>(node: HTMLElement) {\n const elementType = node.nodeName.replace(/^[^:]+:/, '')\n const ElementType = Document.elementTypes[elementType]\n\n if (ElementType) {\n return new ElementType(this, node) as T\n }\n\n return new UnknownElement(this, node) as T\n }\n\n createTextNode(node: HTMLElement) {\n return new TextNode(this, node)\n }\n\n setViewBox(config: IViewBoxConfig) {\n this.screen.setViewBox({\n document: this,\n ...config\n })\n }\n}\n","import { RenderingContext2D } from './types'\nimport { IParserOptions, Parser } from './Parser'\nimport {\n IScreenOptions,\n IScreenStartOptions,\n Screen\n} from './Screen'\nimport {\n IDocumentOptions,\n Document,\n SVGElement\n} from './Document'\n\ntype DOMDocument = typeof window.document\n\nexport interface IOptions extends IParserOptions,\n IScreenOptions,\n IScreenStartOptions,\n IDocumentOptions {}\n\n/**\n * SVG renderer on canvas.\n */\nexport class Canvg {\n /**\n * Create Canvg instance from SVG source string or URL.\n * @param ctx - Rendering context.\n * @param svg - SVG source string or URL.\n * @param options - Rendering options.\n * @returns Canvg instance.\n */\n static async from(\n ctx: RenderingContext2D,\n svg: string,\n options: IOptions = {}\n ) {\n const parser = new Parser(options)\n const svgDocument = await parser.parse(svg)\n\n return new Canvg(ctx, svgDocument, options)\n }\n\n /**\n * Create Canvg instance from SVG source string.\n * @param ctx - Rendering context.\n * @param svg - SVG source string.\n * @param options - Rendering options.\n * @returns Canvg instance.\n */\n static fromString(\n ctx: RenderingContext2D,\n svg: string,\n options: IOptions = {}\n ) {\n const parser = new Parser(options)\n const svgDocument = parser.parseFromString(svg)\n\n return new Canvg(ctx, svgDocument, options)\n }\n\n /**\n * XML/HTML parser instance.\n */\n readonly parser: Parser\n /**\n * Screen instance.\n */\n readonly screen: Screen\n /**\n * Canvg Document.\n */\n readonly document: Document\n private readonly documentElement: SVGElement\n private readonly options: IOptions\n\n /**\n * Main constructor.\n * @param ctx - Rendering context.\n * @param svg - SVG Document.\n * @param options - Rendering options.\n */\n constructor(\n ctx: RenderingContext2D,\n svg: DOMDocument,\n options: IOptions = {}\n ) {\n this.parser = new Parser(options)\n this.screen = new Screen(ctx, options)\n this.options = options\n\n const document = new Document(this, options)\n const documentElement = document.createDocumentElement(svg)\n\n this.document = document\n this.documentElement = documentElement\n }\n\n /**\n * Create new Canvg instance with inherited options.\n * @param ctx - Rendering context.\n * @param svg - SVG source string or URL.\n * @param options - Rendering options.\n * @returns Canvg instance.\n */\n fork(\n ctx: RenderingContext2D,\n svg: string,\n options: IOptions = {}\n ) {\n return Canvg.from(ctx, svg, {\n ...this.options,\n ...options\n })\n }\n\n /**\n * Create new Canvg instance with inherited options.\n * @param ctx - Rendering context.\n * @param svg - SVG source string.\n * @param options - Rendering options.\n * @returns Canvg instance.\n */\n forkString(\n ctx: RenderingContext2D,\n svg: string,\n options: IOptions = {}\n ) {\n return Canvg.fromString(ctx, svg, {\n ...this.options,\n ...options\n })\n }\n\n /**\n * Document is ready promise.\n * @returns Ready promise.\n */\n ready() {\n return this.screen.ready()\n }\n\n /**\n * Document is ready value.\n * @returns Is ready or not.\n */\n isReady() {\n return this.screen.isReady()\n }\n\n /**\n * Render only first frame, ignoring animations and mouse.\n * @param options - Rendering options.\n */\n async render(options: IScreenStartOptions = {}) {\n this.start({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true,\n ...options\n })\n\n await this.ready()\n\n this.stop()\n }\n\n /**\n * Start rendering.\n * @param options - Render options.\n */\n start(options: IScreenStartOptions = {}) {\n const {\n documentElement,\n screen,\n options: baseOptions\n } = this\n\n screen.start(documentElement, {\n enableRedraw: true,\n ...baseOptions,\n ...options\n })\n }\n\n /**\n * Stop rendering.\n */\n stop() {\n this.screen.stop()\n }\n\n /**\n * Resize SVG to fit in given size.\n * @param width\n * @param height\n * @param preserveAspectRatio\n */\n resize(\n width: number,\n height = width,\n preserveAspectRatio: boolean | string = false\n ) {\n this.documentElement.resize(width, height, preserveAspectRatio)\n }\n}\n"],"names":["offscreen","DOMParser","DOMParserFallback","preset","window","ignoreAnimation","ignoreMouse","createCanvas","width","height","OffscreenCanvas","createImage","url","response","fetch","blob","img","createImageBitmap","globalThis","Reflect","deleteProperty","node","canvas","loadImage","compressSpaces","str","replace","trimLeft","trimRight","toNumbers","matches","match","map","parseFloat","toMatrixValue","numbers","matrix","allUppercase","normalizeAttributeName","name","test","toLowerCase","parseExternalUrl","urlMatch","exec","normalizeColor","color","startsWith","rgbParts","normalizedColor","num","isFloat","String","Math","round","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","length","getSelectorSpecificity","specificity","currentSelector","delta","join","PSEUDO_ZERO","vectorMagnitude","v","sqrt","pow","vectorsRatio","u","vectorsAngle","acos","CB1","t","CB2","CB3","CB4","QB1","QB2","QB3","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performance","now","module","process","hr","uptime","Date","getTime","call","this","require","root","global","vendors","suffix","raf","caf","i","last","id","queue","frameDuration","callback","_now","next","max","setTimeout","cp","slice","cancelled","e","push","handle","fn","apply","arguments","raf_1","object","requestAnimationFrame","cancelAnimationFrame","color_string","ok","alpha","charAt","substr","simple_colors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","color_defs","re","example","bits","parseInt","processor","channels","r","g","b","isNaN","toRGB","toRGBA","toHex","toString","getHelpXML","examples","Array","j","sc","xml","document","createElement","setAttribute","list_item","list_color","RGBColor","example_div","style","cssText","appendChild","createTextNode","list_item_value","Property","empty","textBaselineMapping","isNormalizedColor","constructor","value","split","separator","getString","trim","hasValue","zeroIsValue","isString","regexp","result","isUrlDefinition","isPixels","asString","endsWith","setValue","getValue","def","getNumber","n","getColor","getDpi","getRem","rootEmSize","getEm","emSize","getUnits","getPixels","axisOrIsFontSize","processPercent","axis","isFontSize","undefined","viewPort","screen","min","computeSize","getMilliseconds","getRadians","PI","getDefinition","definitions","getFillStyleDefinition","element","opacity","createGradient","ctx","createPattern","getHrefAttribute","patternTransform","getAttribute","getTextBaseline","key","addOpacity","len","commas","ViewPort","DEFAULT_VIEWPORT_WIDTH","DEFAULT_VIEWPORT_HEIGHT","viewPorts","clear","setCurrent","removeCurrent","pop","getRoot","getDefault","getCurrent","current","d","Point","parse","point","defaultValue","x","y","parseScale","scale","parsePath","path","points","pathPoints","angleTo","atan2","applyTransform","transform","xp","yp","Mouse","working","events","eventElements","onClick","bind","onMouseMove","isWorking","start","onclick","onmousemove","stop","hasEvents","runEvents","cursor","forEach","run","parent","checkPath","isPointInPath","checkBoundingBox","boundingBox","isPointInBox","mapXY","offsetLeft","offsetTop","offsetParent","scrollX","scrollY","event","clientX","clientY","type","eventTarget","defaultWindow","defaultFetch","Screen","FRAMERATE","MAX_VIRTUAL_PIXELS","mouse","animations","readyPromise","resolveReady","waits","isReadyLock","isFirstRender","intervalId","Error","wait","checker","ready","Promise","resolve","isReady","every","_","setDefaults","strokeStyle","lineCap","lineJoin","miterLimit","setViewBox","aspectRatio","desiredWidth","desiredHeight","minX","minY","refX","refY","clip","clipX","clipY","cleanAspectRatio","aspectRatioAlign","aspectRatioMeetOrSlice","align","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","translate","scaledClipX","scaledClipY","beginPath","moveTo","lineTo","closePath","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","enableRedraw","ignoreDimensions","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","render","then","tick","shouldUpdate","cancel","reduce","animation","update","widthStyle","getStyle","heightStyle","cWidth","clientWidth","cHeight","clientHeight","viewBox","xRatio","yRatio","transformStyle","clearRect","DefaultDOMParser","Parser","resource","parseFromString","load","parser","checkDocument","err","parserError","getElementsByTagName","textContent","text","Translate","unapply","applyToPoint","Rotate","angle","originX","originY","cx","cy","rotate","transformOrigin","tx","ty","rad","cos","sin","Scale","scaleSize","Matrix","a","c","f","h","det","Skew","skew","SkewX","SkewY","parseTransforms","parseTransform","Transform","fromElement","transformOriginXProperty","transformOriginYProperty","transformTypes","skewX","skewY","transforms","data","TransformType","Element","ignoreChildTypes","attributes","styles","stylesSpecificity","animationFrozen","animationFrozenValue","children","captureTextNodes","nodeType","from","attribute","nodeName","addStylesFromStyleDefinition","childNodes","childNode","addChild","textNode","getText","createIfNotExists","attr","href","skipAncestors","parentStyle","save","mask","applyEffects","filter","setContext","renderChildren","clearContext","restore","clipPathStyleProp","child","includes","matchesSelector","styleClasses","some","styleClass","styleProp","existingSpecificity","removeStyles","ignoreStyles","toRestore","restoreStyles","isFirstChild","indexOf","UnknownElement","console","warn","wrapFontFamily","fontFamily","trimmed","prepareFontFamily","prepareFontStyle","fontStyle","targetFontStyle","prepareFontWeight","fontWeight","targetFontWeight","Font","font","inherit","fontVariant","fontSize","parts","set","part","variants","weights","inheritFont","BoundingBox","Number","NaN","y1","x2","x1","y2","addPoint","addX","addY","addBoundingBox","sumCubic","p0","p1","p2","p3","bezierCurveAdd","forX","b2ac","t1","t2","addBezierCurve","p0x","p0y","p1x","p1y","p2x","p2y","p3x","p3y","addQuadraticCurve","cp1x","cp1y","cp2x","cp2y","RenderedElement","modifiedEmSizeStack","calculateOpacity","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","fillStyle","strokeWidthStyleProp","newLineWidth","lineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","strokeDasharrayStyleProp","strokeDashoffsetProp","gaps","setLineDash","webkitLineDash","mozDash","offset","lineDashOffset","webkitLineDashOffset","mozDashOffset","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","globalAlpha","popEmSize","TextElement","leafTexts","textChunkStart","POSITIVE_INFINITY","maxX","NEGATIVE_INFINITY","measureCache","textBaseline","initializeCoordinates","getBoundingBox","getTElementBoundingBox","adjustChildCoordinatesRecursive","childBoundingBox","getChildBoundingBox","getFontSize","inheritFontSize","measureText","getGlyph","char","glyph","isArabic","prevChar","nextChar","arabicForm","arabicGlyphs","glyphs","missingGlyph","getTextFromNode","parentNode","index","lastIndex","renderTElementChildren","renderChild","renderText","customFont","unitsPerEm","fontFace","ctxFont","isRTL","reverse","dx","lw","horizAdvX","fillText","strokeText","applyAnchoring","firstElement","textAnchor","shift","adjustChildCoordinatesRecursiveCore","textParent","adjustChildCoordinates","xAttr","yAttr","dxAttr","dyAttr","Boolean","getInheritedAttribute","measure","measureTargetText","targetText","parentAttr","TSpanElement","TextNode","Object","setPrototypeOf","__proto__","prototype","hasOwnProperty","TypeError","create","isArray","CLOSE_PATH","HORIZ_LINE_TO","relative","VERT_LINE_TO","MOVE_TO","LINE_TO","CURVE_TO","SMOOTH_CURVE_TO","QUAD_TO","SMOOTH_QUAD_TO","ARC","rX","rY","xRot","lArcFlag","sweepFlag","o","s","abs","p","m","O","l","T","cX","cY","phi1","phi2","N","E","A","C","M","R","I","S","L","ROUND","TO_ABS","TO_REL","NORMALIZE_HVZ","NORMALIZE_ST","QT_TO_C","INFO","SANITIZE","LINE_COMMANDS","MATRIX","ROTATE","TRANSLATE","SCALE","SKEW_X","atan","SKEW_Y","X_AXIS_SYMMETRY","Y_AXIS_SYMMETRY","A_TO_C","ceil","H","ANNOTATE_ARCS","CLONE","CALCULATE_BOUNDS","maxY","DRAWING_COMMANDS","w","U","toAbs","toRel","normalizeHVZ","normalizeST","qtToC","aToC","sanitize","xSymmetry","ySymmetry","annotateArcs","charCodeAt","curNumber","curCommandType","curCommandRelative","canParseCommandOrComma","curNumberHasExp","curNumberHasExpDigits","curNumberHasDecimal","curArgs","finish","SyntaxError","getPrototypeOf","commands","encode","getBounds","PathParser","SVGPathData","control","command","previousCommand","angles","reset","isEnd","getPoint","xProp","yProp","makeAbsolute","getAsControlPoint","getAsCurrentPoint","getReflectedControlPoint","ox","oy","addMarker","priorTo","addMarkerAngle","getMarkerPoints","getMarkerAngles","PathElement","pathParser","pathM","pathL","pathH","pathV","pathC","pathS","pathQ","pathT","pathA","pathZ","_ctx","getMarkers","markers","fillRuleStyleProp","fill","setTransform","stroke","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","controlPoint","currentPoint","bezierCurveTo","quadraticCurveTo","xAxisRotation","currp","cpp","centp","a1","ad","dir","ah","halfWay","sx","sy","arc","SVGElement","getComputedStyle","getPropertyValue","fontSizeProp","refXAttr","refYAttr","viewBoxAttr","resize","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","rxAttr","ryAttr","rx","ry","KAPPA","CircleElement","EllipseElement","LineElement","getPoints","x0","y0","PolylineElement","PolygonElement","PatternElement","parentOpacityProp","patternSvg","patternCanvas","patternCtx","getContext","pattern","MarkerElement","orient","markerUnits","markerSvg","overflow","DefsElement","GElement","GradientElement","attributesToInherit","stops","getGradientUnits","stopsContainer","inheritStopContainer","gradient","getGradient","addParentOpacity","addColorStop","rootView","rect","group","attributeToInherit","colorProp","LinearGradientElement","isBoundingBoxUnits","createLinearGradient","RadialGradientElement","fx","fy","fr","createRadialGradient","StopElement","stopOpacity","stopColor","AnimateElement","begin","maxDuration","to","values","duration","initialValue","initialUnits","removed","frozen","valuesAttr","getProperty","attributeType","attributeName","calcValue","progress","getProgress","newValue","prop","updated","typeAttr","lb","floor","ub","AnimateColorElement","colorFrom","colorTo","AnimateTransformElement","transformFrom","transformTo","FontFaceElement","ascent","descent","GlyphElement","unicode","MissingGlyphElement","FontElement","fontFamilyStyle","arabicGlyph","TRefElement","firstChild","AElement","hasText","open","TextPathElement","textWidth","textHeight","pathLength","glyphInfo","dataArray","letterSpacingCache","equidistantCache","measuresCache","Map","pathElement","parsePathData","theta","dTheta","psi","fs","setTextData","textDecoration","rotation","partialText","getLetterSpacingAt","idx","findSegmentToFitChar","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","dy","charI","glyphWidth","splineStep","getEquidistantPointOnPath","segment","dyX","dyY","has","get","chars","thisSpacing","parentSpacing","letterSpacing","textLen","dxSum","acc","cur","getPathLength","startOffset","nextOffset","pathCommands","startX","startY","nextCommandType","calcLength","commandType","getLineLength","getPointOnCubicBezier","getPointOnQuadraticBezier","end","inc","getPointOnEllipticalArc","getPointOnLine","dist","fromX","fromY","rise","pt","ix","iy","pRise","pRun","getPointOnPath","distance","fullLen","cumulativePathLength","currentT","pct","p4x","p4y","cosPsi","sinPsi","buildEquidistantCache","inputStep","inputPrecision","precision","step","targetDistance","dataUriRegex","ImageElement","loaded","image","isSvg","images","loadSvg","error","atob","decodeURIComponent","svg","subDocument","canvg","forkString","documentElement","complete","drawImage","SymbolElement","SVGFontLoader","fonts","svgDocument","fontNode","StyleElement","css","cssDefs","cssParts","cssClasses","cssProps","cssClass","props","cssProp","srcs","src","UseElement","cachedElement","tempSvg","oldParent","elementTransform","imGet","_height","rgba","imSet","val","mi","m1","m2","m3","FeColorMatrixElement","includeOpacity","_x","_y","srcData","getImageData","nr","ng","nb","na","putImageData","MaskElement","ignoredStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","globalCompositeOperation","fillRect","noop","ClipPathElement","contextProto","FilterElement","px","py","efd","extraFilterDistance","tmpCanvasWidth","tmpCanvasHeight","FeDropShadowElement","_width","FeMorphologyElement","FeCompositeElement","_typeof","obj","Symbol","iterator","_classCallCheck","instance","Constructor","mulTable","shgTable","getImageDataFromCanvas","topX","topY","getElementById","context","processCanvasRGBA","radius","imageData","processImageDataRGBA","pixels","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","BlurStack","stack","stackEnd","stackIn","stackOut","yw","yi","mulSum","shgSum","pr","pg","pb","pa","_i","rInSum","gInSum","bInSum","aInSum","rOutSum","gOutSum","bOutSum","aOutSum","rSum","gSum","bSum","aSum","_i2","rbs","paInitial","_a2","_p","_stackOut","_r","_g","_b","_a","_pr","_pg","_pb","_pa","_rOutSum","_gOutSum","_bOutSum","_aOutSum","_rSum","_gSum","_bSum","_aSum","_i3","_gInSum","_bInSum","_aInSum","_rInSum","_i4","_rbs","_p2","FeGaussianBlurElement","blurRadius","body","getUniqueId","display","canvasRGBA","removeChild","TitleElement","DescElement","elements","anonymousCrossOrigin","crossOrigin","reject","onload","onerror","_event","_source","_lineno","_colno","DEFAULT_EM_SIZE","Document","elementTypes","emSizeStack","uniqueId","bindCreateImage","isImagesLoaded","isFontsLoaded","source","forceAnonymousCrossOrigin","createDocumentElement","elementType","ElementType","config","Canvg","options","fromString","fork","baseOptions"],"mappings":"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,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAK,IAAA,GAAA;EAAI,CAAA,CAAA;EAC1wC,IAAIC,QAAW,GAAA;EAAC,IAAA,CAAA;EAAG,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,EAAA;EAAI,IAAA,E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"} |