@coppsary/motionly 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +32 -84
  2. package/bin/motionly.js +77 -22
  3. package/dist/assets/index-bTggaIHQ.js +6 -0
  4. package/dist/assets/index-bTggaIHQ.js.map +1 -0
  5. package/dist/assets/index-uMHqBndL.js +16 -0
  6. package/dist/assets/index-uMHqBndL.js.map +1 -0
  7. package/dist/assets/main-BWhvHbtr.css +1 -0
  8. package/dist/assets/main-CrcFUwRU.js +2470 -0
  9. package/dist/assets/main-CrcFUwRU.js.map +1 -0
  10. package/dist/index.html +2 -2
  11. package/motionly-skills/AGENTS.md +20 -0
  12. package/motionly-skills/README.md +28 -0
  13. package/motionly-skills/llms.txt +16 -0
  14. package/motionly-skills/skills/animation/SKILL.md +73 -0
  15. package/motionly-skills/skills/animation/agents/openai.yaml +4 -0
  16. package/motionly-skills/skills/assets/SKILL.md +45 -0
  17. package/motionly-skills/skills/assets/agents/openai.yaml +4 -0
  18. package/motionly-skills/skills/camera/SKILL.md +57 -0
  19. package/motionly-skills/skills/camera/agents/openai.yaml +4 -0
  20. package/motionly-skills/skills/composition/SKILL.md +42 -0
  21. package/motionly-skills/skills/composition/agents/openai.yaml +4 -0
  22. package/motionly-skills/skills/easing/SKILL.md +44 -0
  23. package/motionly-skills/skills/easing/agents/openai.yaml +4 -0
  24. package/motionly-skills/skills/motion-dsl/SKILL.md +93 -0
  25. package/motionly-skills/skills/motion-dsl/agents/openai.yaml +4 -0
  26. package/motionly-skills/skills/rendering/SKILL.md +45 -0
  27. package/motionly-skills/skills/rendering/agents/openai.yaml +4 -0
  28. package/motionly-skills/skills/svg/SKILL.md +82 -0
  29. package/motionly-skills/skills/svg/agents/openai.yaml +4 -0
  30. package/motionly-skills/skills/templates/SKILL.md +51 -0
  31. package/motionly-skills/skills/templates/agents/openai.yaml +4 -0
  32. package/motionly-skills/skills/timeline/SKILL.md +57 -0
  33. package/motionly-skills/skills/timeline/agents/openai.yaml +4 -0
  34. package/motionly-skills/skills/transitions/SKILL.md +45 -0
  35. package/motionly-skills/skills/transitions/agents/openai.yaml +4 -0
  36. package/motionly-skills/skills/typography/SKILL.md +42 -0
  37. package/motionly-skills/skills/typography/agents/openai.yaml +4 -0
  38. package/package.json +6 -1
  39. package/templates/motionly-skill/SKILL.md +32 -1
  40. package/templates/project/AGENTS.md +22 -0
  41. package/dist/assets/main-C8oSjoH0.css +0 -1
  42. package/dist/assets/main-CQ2W0QKo.js +0 -2475
  43. package/dist/assets/main-CQ2W0QKo.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-uMHqBndL.js","sources":["../../node_modules/performance-now/lib/performance-now.js","../../node_modules/raf/index.js","../../node_modules/rgbcolor/index.js","../../node_modules/svg-pathdata/lib/SVGPathData.module.js","../../node_modules/stackblur-canvas/dist/stackblur-es.js","../../node_modules/canvg/dist/index.js"],"sourcesContent":["// 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","/*! *****************************************************************************\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","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 requestAnimationFrame from 'raf';\nimport RGBColor from 'rgbcolor';\nimport { SVGPathData } from 'svg-pathdata';\nimport { canvasRGBA } from 'stackblur-canvas';\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 */ function offscreen() {\n let { DOMParser: DOMParserFallback } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n const preset = {\n window: null,\n ignoreAnimation: true,\n ignoreMouse: true,\n DOMParser: DOMParserFallback,\n createCanvas (width, height) {\n return new OffscreenCanvas(width, height);\n },\n async createImage (url) {\n const response = await fetch(url);\n const blob = await response.blob();\n const img = await createImageBitmap(blob);\n return img;\n }\n };\n if (typeof globalThis.DOMParser !== 'undefined' || typeof DOMParserFallback === 'undefined') {\n Reflect.deleteProperty(preset, 'DOMParser');\n }\n return preset;\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 */ function node(param) {\n let { DOMParser , canvas , fetch } = param;\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\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null,\n offscreen: offscreen,\n node: node\n});\n\n/**\n * HTML-safe compress white-spaces.\n * @param str - String to compress.\n * @returns String.\n */ function compressSpaces(str) {\n return str.replace(/(?!\\u3000)\\s+/gm, ' ');\n}\n/**\n * HTML-safe left trim.\n * @param str - String to trim.\n * @returns String.\n */ function trimLeft(str) {\n return str.replace(/^[\\n \\t]+/, '');\n}\n/**\n * HTML-safe right trim.\n * @param str - String to trim.\n * @returns String.\n */ function trimRight(str) {\n return str.replace(/[\\n \\t]+$/, '');\n}\n/**\n * String to numbers array.\n * @param str - Numbers string.\n * @returns Numbers array.\n */ function toNumbers(str) {\n const matches = str.match(/-?(\\d+(?:\\.\\d*(?:[eE][+-]?\\d+)?)?|\\.\\d+)(?=\\D|$)/gm);\n return matches ? matches.map(parseFloat) : [];\n}\n/**\n * String to matrix value.\n * @param str - Numbers string.\n * @returns Matrix value.\n */ function toMatrixValue(str) {\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 ];\n return matrix;\n}\n// Microsoft Edge fix\nconst allUppercase = /^[A-Z-]+$/;\n/**\n * Normalize attribute name.\n * @param name - Attribute name.\n * @returns Normalized attribute name.\n */ function normalizeAttributeName(name) {\n if (allUppercase.test(name)) {\n return name.toLowerCase();\n }\n return name;\n}\n/**\n * Parse external URL.\n * @param url - CSS url string.\n * @returns Parsed URL.\n */ function parseExternalUrl(url) {\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 if (!urlMatch) {\n return '';\n }\n return urlMatch[2] || urlMatch[3] || urlMatch[4] || '';\n}\n/**\n * Transform floats to integers in rgb colors.\n * @param color - Color to normalize.\n * @returns Normalized color.\n */ function normalizeColor(color) {\n if (!color.startsWith('rgb')) {\n return color;\n }\n let rgbParts = 3;\n const normalizedColor = color.replace(/\\d+(\\.\\d+)?/g, (num, isFloat)=>(rgbParts--) && isFloat ? String(Math.round(parseFloat(num))) : num\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;\nfunction findSelectorMatch(selector, regex) {\n const matches = regex.exec(selector);\n if (!matches) {\n return [\n selector,\n 0\n ];\n }\n return [\n selector.replace(regex, ' '),\n matches.length\n ];\n}\n/**\n * Measure selector specificity.\n * @param selector - Selector to measure.\n * @returns Specificity.\n */ function getSelectorSpecificity(selector) {\n const specificity = [\n 0,\n 0,\n 0\n ];\n let currentSelector = selector.replace(/:not\\(([^)]*)\\)/g, ' $1 ').replace(/{[\\s\\S]*/gm, ' ');\n let delta = 0;\n [currentSelector, delta] = findSelectorMatch(currentSelector, attributeRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, idRegex);\n specificity[0] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, classRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoElementRegex);\n specificity[2] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassWithBracketsRegex);\n specificity[1] += delta;\n [currentSelector, delta] = findSelectorMatch(currentSelector, pseudoClassRegex);\n specificity[1] += delta;\n currentSelector = currentSelector.replace(/[*\\s+>~]/g, ' ').replace(/[#.]/g, ' ');\n [currentSelector, delta] = findSelectorMatch(currentSelector, elementRegex) // lgtm [js/useless-assignment-to-local]\n ;\n specificity[2] += delta;\n return specificity.join('');\n}\n\nconst PSEUDO_ZERO = 0.00000001;\n/**\n * Vector magnitude.\n * @param v\n * @returns Number result.\n */ function vectorMagnitude(v) {\n return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));\n}\n/**\n * Ratio between two vectors.\n * @param u\n * @param v\n * @returns Number result.\n */ function vectorsRatio(u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vectorMagnitude(u) * vectorMagnitude(v));\n}\n/**\n * Angle between two vectors.\n * @param u\n * @param v\n * @returns Number result.\n */ function vectorsAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vectorsRatio(u, v));\n}\nfunction CB1(t) {\n return t * t * t;\n}\nfunction CB2(t) {\n return 3 * t * t * (1 - t);\n}\nfunction CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n}\nfunction CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n}\nfunction QB1(t) {\n return t * t;\n}\nfunction QB2(t) {\n return 2 * t * (1 - t);\n}\nfunction QB3(t) {\n return (1 - t) * (1 - t);\n}\n\nclass Property {\n static empty(document) {\n return new Property(document, 'EMPTY', '');\n }\n split() {\n let separator = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : ' ';\n const { document , name } = this;\n return compressSpaces(this.getString()).trim().split(separator).map((value)=>new Property(document, name, value)\n );\n }\n hasValue(zeroIsValue) {\n const value = this.value;\n return value !== null && value !== '' && (zeroIsValue || value !== 0) && typeof value !== 'undefined';\n }\n isString(regexp) {\n const { value } = this;\n const result = typeof value === 'string';\n if (!result || !regexp) {\n return result;\n }\n return regexp.test(value);\n }\n isUrlDefinition() {\n return this.isString(/^url\\(/);\n }\n isPixels() {\n if (!this.hasValue()) {\n return false;\n }\n const asString = this.getString();\n switch(true){\n case asString.endsWith('px'):\n case /^[0-9]+$/.test(asString):\n return true;\n default:\n return false;\n }\n }\n setValue(value) {\n this.value = value;\n return this;\n }\n getValue(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return this.value;\n }\n return def;\n }\n getNumber(def) {\n if (!this.hasValue()) {\n if (typeof def === 'undefined') {\n return 0;\n }\n // @ts-expect-error Parse unknown value.\n return parseFloat(def);\n }\n const { value } = this;\n // @ts-expect-error Parse unknown value.\n let n = parseFloat(value);\n if (this.isString(/%$/)) {\n n /= 100;\n }\n return n;\n }\n getString(def) {\n if (typeof def === 'undefined' || this.hasValue()) {\n return typeof this.value === 'undefined' ? '' : String(this.value);\n }\n return String(def);\n }\n getColor(def) {\n let color = this.getString(def);\n if (this.isNormalizedColor) {\n return color;\n }\n this.isNormalizedColor = true;\n color = normalizeColor(color);\n this.value = color;\n return color;\n }\n getDpi() {\n return 96 // TODO: compute?\n ;\n }\n getRem() {\n return this.document.rootEmSize;\n }\n getEm() {\n return this.document.emSize;\n }\n getUnits() {\n return this.getString().replace(/[0-9.-]/g, '');\n }\n getPixels(axisOrIsFontSize) {\n let processPercent = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n if (!this.hasValue()) {\n return 0;\n }\n const [axis, isFontSize] = typeof axisOrIsFontSize === 'boolean' ? [\n undefined,\n axisOrIsFontSize\n ] : [\n axisOrIsFontSize\n ];\n const { viewPort } = this.document.screen;\n switch(true){\n case this.isString(/vmin$/):\n return this.getNumber() / 100 * Math.min(viewPort.computeSize('x'), viewPort.computeSize('y'));\n case this.isString(/vmax$/):\n return this.getNumber() / 100 * Math.max(viewPort.computeSize('x'), viewPort.computeSize('y'));\n case this.isString(/vw$/):\n return this.getNumber() / 100 * viewPort.computeSize('x');\n case this.isString(/vh$/):\n return this.getNumber() / 100 * viewPort.computeSize('y');\n case this.isString(/rem$/):\n return this.getNumber() * this.getRem();\n case this.isString(/em$/):\n return this.getNumber() * this.getEm();\n case this.isString(/ex$/):\n return this.getNumber() * this.getEm() / 2;\n case this.isString(/px$/):\n return this.getNumber();\n case this.isString(/pt$/):\n return this.getNumber() * this.getDpi() * (1 / 72);\n case this.isString(/pc$/):\n return this.getNumber() * 15;\n case this.isString(/cm$/):\n return this.getNumber() * this.getDpi() / 2.54;\n case this.isString(/mm$/):\n return this.getNumber() * this.getDpi() / 25.4;\n case this.isString(/in$/):\n return this.getNumber() * this.getDpi();\n case this.isString(/%$/) && isFontSize:\n return this.getNumber() * this.getEm();\n case this.isString(/%$/):\n return this.getNumber() * viewPort.computeSize(axis);\n default:\n {\n const n = this.getNumber();\n if (processPercent && n < 1) {\n return n * viewPort.computeSize(axis);\n }\n return n;\n }\n }\n }\n getMilliseconds() {\n if (!this.hasValue()) {\n return 0;\n }\n if (this.isString(/ms$/)) {\n return this.getNumber();\n }\n return this.getNumber() * 1000;\n }\n getRadians() {\n if (!this.hasValue()) {\n return 0;\n }\n switch(true){\n case this.isString(/deg$/):\n return this.getNumber() * (Math.PI / 180);\n case this.isString(/grad$/):\n return this.getNumber() * (Math.PI / 200);\n case this.isString(/rad$/):\n return this.getNumber();\n default:\n return this.getNumber() * (Math.PI / 180);\n }\n }\n getDefinition() {\n const asString = this.getString();\n const match = /#([^)'\"]+)/.exec(asString);\n const name = (match === null || match === void 0 ? void 0 : match[1]) || asString;\n return this.document.definitions.get(name);\n }\n getFillStyleDefinition(element, opacity) {\n let def = this.getDefinition();\n if (!def) {\n return null;\n }\n // gradient\n if (typeof def.createGradient === 'function' && 'getBoundingBox' in element) {\n return def.createGradient(this.document.ctx, element, opacity);\n }\n // pattern\n if (typeof def.createPattern === 'function') {\n if (def.getHrefAttribute().hasValue()) {\n const patternTransform = def.getAttribute('patternTransform');\n def = def.getHrefAttribute().getDefinition();\n if (def && patternTransform.hasValue()) {\n def.getAttribute('patternTransform', true).setValue(patternTransform.value);\n }\n }\n if (def) {\n return def.createPattern(this.document.ctx, element, opacity);\n }\n }\n return null;\n }\n getTextBaseline() {\n if (!this.hasValue()) {\n return null;\n }\n const key = this.getString();\n return Property.textBaselineMapping[key] || null;\n }\n addOpacity(opacity) {\n let value = this.getColor();\n const len = value.length;\n let commas = 0;\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 if (commas === 3) {\n break;\n }\n }\n if (opacity.hasValue() && this.isString() && commas !== 3) {\n const color = new RGBColor(value);\n if (color.ok) {\n color.alpha = opacity.getNumber();\n value = color.toRGBA();\n }\n }\n return new Property(this.document, this.name, value);\n }\n constructor(document, name, value){\n this.document = document;\n this.name = name;\n this.value = value;\n this.isNormalizedColor = false;\n }\n}\nProperty.textBaselineMapping = {\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\nclass ViewPort {\n clear() {\n this.viewPorts = [];\n }\n setCurrent(width, height) {\n this.viewPorts.push({\n width,\n height\n });\n }\n removeCurrent() {\n this.viewPorts.pop();\n }\n getRoot() {\n const [root] = this.viewPorts;\n if (!root) {\n return getDefault();\n }\n return root;\n }\n getCurrent() {\n const { viewPorts } = this;\n const current = viewPorts[viewPorts.length - 1];\n if (!current) {\n return getDefault();\n }\n return current;\n }\n get width() {\n return this.getCurrent().width;\n }\n get height() {\n return this.getCurrent().height;\n }\n computeSize(d) {\n if (typeof d === 'number') {\n return d;\n }\n if (d === 'x') {\n return this.width;\n }\n if (d === 'y') {\n return this.height;\n }\n return Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2)) / Math.sqrt(2);\n }\n constructor(){\n this.viewPorts = [];\n }\n}\nViewPort.DEFAULT_VIEWPORT_WIDTH = 800;\nViewPort.DEFAULT_VIEWPORT_HEIGHT = 600;\nfunction getDefault() {\n return {\n width: ViewPort.DEFAULT_VIEWPORT_WIDTH,\n height: ViewPort.DEFAULT_VIEWPORT_HEIGHT\n };\n}\n\nclass Point {\n static parse(point) {\n let defaultValue = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;\n const [x = defaultValue, y = defaultValue] = toNumbers(point);\n return new Point(x, y);\n }\n static parseScale(scale) {\n let defaultValue = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;\n const [x = defaultValue, y = x] = toNumbers(scale);\n return new Point(x, y);\n }\n static parsePath(path) {\n const points = toNumbers(path);\n const len = points.length;\n const pathPoints = [];\n for(let i = 0; i < len; i += 2){\n pathPoints.push(new Point(points[i], points[i + 1]));\n }\n return pathPoints;\n }\n angleTo(point) {\n return Math.atan2(point.y - this.y, point.x - this.x);\n }\n applyTransform(transform) {\n const { x , y } = this;\n const xp = x * transform[0] + y * transform[2] + transform[4];\n const yp = x * transform[1] + y * transform[3] + transform[5];\n this.x = xp;\n this.y = yp;\n }\n constructor(x, y){\n this.x = x;\n this.y = y;\n }\n}\n\nclass Mouse {\n isWorking() {\n return this.working;\n }\n start() {\n if (this.working) {\n return;\n }\n const { screen , onClick , onMouseMove } = this;\n const canvas = screen.ctx.canvas;\n canvas.onclick = onClick;\n canvas.onmousemove = onMouseMove;\n this.working = true;\n }\n stop() {\n if (!this.working) {\n return;\n }\n const canvas = this.screen.ctx.canvas;\n this.working = false;\n canvas.onclick = null;\n canvas.onmousemove = null;\n }\n hasEvents() {\n return this.working && this.events.length > 0;\n }\n runEvents() {\n if (!this.working) {\n return;\n }\n const { screen: document , events , eventElements } = this;\n const { style } = document.ctx.canvas;\n let element;\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (style) {\n style.cursor = '';\n }\n events.forEach((param, i)=>{\n let { run } = param;\n element = eventElements[i];\n while(element){\n run(element);\n element = element.parent;\n }\n });\n // done running, clear\n this.events = [];\n this.eventElements = [];\n }\n checkPath(element, ctx) {\n if (!this.working || !ctx) {\n return;\n }\n const { events , eventElements } = this;\n events.forEach((param, i)=>{\n let { x , y } = param;\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 checkBoundingBox(element, boundingBox) {\n if (!this.working || !boundingBox) {\n return;\n }\n const { events , eventElements } = this;\n events.forEach((param, i)=>{\n let { x , y } = param;\n if (!eventElements[i] && boundingBox.isPointInBox(x, y)) {\n eventElements[i] = element;\n }\n });\n }\n mapXY(x, y) {\n const { window , ctx } = this.screen;\n const point = new Point(x, y);\n let element = ctx.canvas;\n while(element){\n point.x -= element.offsetLeft;\n point.y -= element.offsetTop;\n element = element.offsetParent;\n }\n if (window === null || window === void 0 ? void 0 : window.scrollX) {\n point.x += window.scrollX;\n }\n if (window === null || window === void 0 ? void 0 : window.scrollY) {\n point.y += window.scrollY;\n }\n return point;\n }\n onClick(event) {\n const { x , y } = this.mapXY(event.clientX, event.clientY);\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 onMouseMove(event) {\n const { x , y } = this.mapXY(event.clientX, event.clientY);\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 constructor(screen){\n this.screen = screen;\n this.working = false;\n this.events = [];\n this.eventElements = [];\n this.onClick = this.onClick.bind(this);\n this.onMouseMove = this.onMouseMove.bind(this);\n }\n}\n\nconst defaultWindow = typeof window !== 'undefined' ? window : null;\nconst defaultFetch$1 = typeof fetch !== 'undefined' ? fetch.bind(undefined) // `fetch` depends on context: `someObject.fetch(...)` will throw error.\n : undefined;\nclass Screen {\n wait(checker) {\n this.waits.push(checker);\n }\n ready() {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n if (!this.readyPromise) {\n return Promise.resolve();\n }\n return this.readyPromise;\n }\n isReady() {\n if (this.isReadyLock) {\n return true;\n }\n const isReadyLock = this.waits.every((_)=>_()\n );\n if (isReadyLock) {\n this.waits = [];\n if (this.resolveReady) {\n this.resolveReady();\n }\n }\n this.isReadyLock = isReadyLock;\n return isReadyLock;\n }\n setDefaults(ctx) {\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 setViewBox(param) {\n let { document , ctx , aspectRatio , width , desiredWidth , height , desiredHeight , minX =0 , minY =0 , refX , refY , clip =false , clipX =0 , clipY =0 } = param;\n // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n const cleanAspectRatio = compressSpaces(aspectRatio).replace(/^defer\\s/, '') // ignore defer\n ;\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 if (meetOrSlice === 'meet') {\n finalDesiredWidth *= scaleMin;\n finalDesiredHeight *= scaleMin;\n }\n if (meetOrSlice === 'slice') {\n finalDesiredWidth *= scaleMax;\n finalDesiredHeight *= scaleMax;\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 if (hasRefs) {\n ctx.translate(-scaleMin * refXProp.getPixels('x'), -scaleMin * refYProp.getPixels('y'));\n }\n if (clip) {\n const scaledClipX = scaleMin * clipX;\n const scaledClipY = scaleMin * clipY;\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 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 if (align.startsWith('xMid') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width / 2 - finalDesiredWidth / 2, 0);\n }\n if (align.endsWith('YMid') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height / 2 - finalDesiredHeight / 2);\n }\n if (align.startsWith('xMax') && (isMeetMinY || isSliceMaxY)) {\n ctx.translate(width - finalDesiredWidth, 0);\n }\n if (align.endsWith('YMax') && (isMeetMinX || isSliceMaxX)) {\n ctx.translate(0, height - finalDesiredHeight);\n }\n }\n // scale\n switch(true){\n case align === 'none':\n ctx.scale(scaleX, scaleY);\n break;\n case meetOrSlice === 'meet':\n ctx.scale(scaleMin, scaleMin);\n break;\n case meetOrSlice === 'slice':\n ctx.scale(scaleMax, scaleMax);\n break;\n }\n // translate\n ctx.translate(-minX, -minY);\n }\n start(element) {\n let { enableRedraw =false , ignoreMouse =false , ignoreAnimation =false , ignoreDimensions =false , ignoreClear =false , forceRedraw , scaleWidth , scaleHeight , offsetX , offsetY } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n const { mouse } = this;\n const frameDuration = 1000 / Screen.FRAMERATE;\n this.isReadyLock = false;\n this.frameDuration = frameDuration;\n this.readyPromise = new Promise((resolve)=>{\n this.resolveReady = resolve;\n });\n if (this.isReady()) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n }\n if (!enableRedraw) {\n return;\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 if (delta >= frameDuration) {\n then = now - delta % frameDuration;\n if (this.shouldUpdate(ignoreAnimation, forceRedraw)) {\n this.render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY);\n mouse.runEvents();\n }\n }\n this.intervalId = requestAnimationFrame(tick);\n };\n if (!ignoreMouse) {\n mouse.start();\n }\n this.intervalId = requestAnimationFrame(tick);\n }\n stop() {\n if (this.intervalId) {\n requestAnimationFrame.cancel(this.intervalId);\n this.intervalId = null;\n }\n this.mouse.stop();\n }\n shouldUpdate(ignoreAnimation, forceRedraw) {\n // need update from animations?\n if (!ignoreAnimation) {\n const { frameDuration } = this;\n const shouldUpdate1 = this.animations.reduce((shouldUpdate, animation)=>animation.update(frameDuration) || shouldUpdate\n , false);\n if (shouldUpdate1) {\n return true;\n }\n }\n // need update from redraw?\n if (typeof forceRedraw === 'function' && forceRedraw()) {\n return true;\n }\n if (!this.isReadyLock && this.isReady()) {\n return true;\n }\n // need update from mouse events?\n if (this.mouse.hasEvents()) {\n return true;\n }\n return false;\n }\n render(element, ignoreDimensions, ignoreClear, scaleWidth, scaleHeight, offsetX, offsetY) {\n const { viewPort , ctx , isFirstRender } = this;\n const canvas = ctx.canvas;\n viewPort.clear();\n if (canvas.width && canvas.height) {\n viewPort.setCurrent(canvas.width, canvas.height);\n }\n const widthStyle = element.getStyle('width');\n const heightStyle = element.getStyle('height');\n if (!ignoreDimensions && (isFirstRender || typeof scaleWidth !== 'number' && typeof scaleHeight !== 'number')) {\n // set canvas size\n if (widthStyle.hasValue()) {\n canvas.width = widthStyle.getPixels('x');\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (canvas.style) {\n canvas.style.width = \"\".concat(canvas.width, \"px\");\n }\n }\n if (heightStyle.hasValue()) {\n canvas.height = heightStyle.getPixels('y');\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (canvas.style) {\n canvas.style.height = \"\".concat(canvas.height, \"px\");\n }\n }\n }\n let cWidth = canvas.clientWidth || canvas.width;\n let cHeight = canvas.clientHeight || canvas.height;\n if (ignoreDimensions && widthStyle.hasValue() && heightStyle.hasValue()) {\n cWidth = widthStyle.getPixels('x');\n cHeight = heightStyle.getPixels('y');\n }\n viewPort.setCurrent(cWidth, cHeight);\n if (typeof offsetX === 'number') {\n element.getAttribute('x', true).setValue(offsetX);\n }\n if (typeof offsetY === 'number') {\n element.getAttribute('y', true).setValue(offsetY);\n }\n if (typeof scaleWidth === 'number' || typeof scaleHeight === 'number') {\n const viewBox = toNumbers(element.getAttribute('viewBox').getString());\n let xRatio = 0;\n let yRatio = 0;\n if (typeof scaleWidth === 'number') {\n const widthStyle = element.getStyle('width');\n if (widthStyle.hasValue()) {\n xRatio = widthStyle.getPixels('x') / scaleWidth;\n } else if (viewBox[2] && !isNaN(viewBox[2])) {\n xRatio = viewBox[2] / scaleWidth;\n }\n }\n if (typeof scaleHeight === 'number') {\n const heightStyle = element.getStyle('height');\n if (heightStyle.hasValue()) {\n yRatio = heightStyle.getPixels('y') / scaleHeight;\n } else if (viewBox[3] && !isNaN(viewBox[3])) {\n yRatio = viewBox[3] / scaleHeight;\n }\n }\n if (!xRatio) {\n xRatio = yRatio;\n }\n if (!yRatio) {\n yRatio = xRatio;\n }\n element.getAttribute('width', true).setValue(scaleWidth);\n element.getAttribute('height', true).setValue(scaleHeight);\n const transformStyle = element.getStyle('transform', true, true);\n transformStyle.setValue(\"\".concat(transformStyle.getString(), \" scale(\").concat(1 / xRatio, \", \").concat(1 / yRatio, \")\"));\n }\n // clear and render\n if (!ignoreClear) {\n ctx.clearRect(0, 0, cWidth, cHeight);\n }\n element.render(ctx);\n if (isFirstRender) {\n this.isFirstRender = false;\n }\n }\n constructor(ctx, { fetch =defaultFetch$1 , window =defaultWindow } = {}){\n this.ctx = ctx;\n this.viewPort = new ViewPort();\n this.mouse = new Mouse(this);\n this.animations = [];\n this.waits = [];\n this.frameDuration = 0;\n this.isReadyLock = false;\n this.isFirstRender = true;\n this.intervalId = null;\n this.window = window;\n if (!fetch) {\n throw new Error(\"Can't find 'fetch' in 'globalThis', please provide it via options\");\n }\n this.fetch = fetch;\n }\n}\nScreen.defaultWindow = defaultWindow;\nScreen.defaultFetch = defaultFetch$1;\nScreen.FRAMERATE = 30;\nScreen.MAX_VIRTUAL_PIXELS = 30000;\n\nconst { defaultFetch } = Screen;\nconst DefaultDOMParser = typeof DOMParser !== 'undefined' ? DOMParser : undefined;\nclass Parser {\n async parse(resource) {\n if (resource.startsWith('<')) {\n return this.parseFromString(resource);\n }\n return this.load(resource);\n }\n parseFromString(xml) {\n const parser = new this.DOMParser();\n try {\n return this.checkDocument(parser.parseFromString(xml, 'image/svg+xml'));\n } catch (err) {\n return this.checkDocument(parser.parseFromString(xml, 'text/xml'));\n }\n }\n checkDocument(document) {\n const parserError = document.getElementsByTagName('parsererror')[0];\n if (parserError) {\n throw new Error(parserError.textContent || 'Unknown parse error');\n }\n return document;\n }\n async load(url) {\n const response = await this.fetch(url);\n const xml = await response.text();\n return this.parseFromString(xml);\n }\n constructor({ fetch =defaultFetch , DOMParser =DefaultDOMParser } = {}){\n if (!fetch) {\n throw new Error(\"Can't find 'fetch' in 'globalThis', please provide it via options\");\n }\n if (!DOMParser) {\n throw new Error(\"Can't find 'DOMParser' in 'globalThis', please provide it via options\");\n }\n this.fetch = fetch;\n this.DOMParser = DOMParser;\n }\n}\n\nclass Translate {\n apply(ctx) {\n const { x , y } = this.point;\n ctx.translate(x || 0, y || 0);\n }\n unapply(ctx) {\n const { x , y } = this.point;\n ctx.translate(-1 * x || 0, -1 * y || 0);\n }\n applyToPoint(point) {\n const { x , y } = this.point;\n point.applyTransform([\n 1,\n 0,\n 0,\n 1,\n x || 0,\n y || 0\n ]);\n }\n constructor(_, point){\n this.type = 'translate';\n this.point = Point.parse(point);\n }\n}\n\nclass Rotate {\n apply(ctx) {\n const { cx , cy , originX , originY , angle } = this;\n const tx = cx + originX.getPixels('x');\n const ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n unapply(ctx) {\n const { cx , cy , originX , originY , angle } = this;\n const tx = cx + originX.getPixels('x');\n const ty = cy + originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.rotate(-1 * angle.getRadians());\n ctx.translate(-tx, -ty);\n }\n applyToPoint(point) {\n const { cx , cy , angle } = this;\n const rad = angle.getRadians();\n point.applyTransform([\n 1,\n 0,\n 0,\n 1,\n cx || 0,\n cy || 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,\n -cy || 0 // -this.p.y\n ]);\n }\n constructor(document, rotate, transformOrigin){\n this.type = 'rotate';\n const numbers = toNumbers(rotate);\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\nclass Scale {\n apply(ctx) {\n const { scale: { x , y } , originX , originY } = this;\n const tx = originX.getPixels('x');\n const ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(x, y || x);\n ctx.translate(-tx, -ty);\n }\n unapply(ctx) {\n const { scale: { x , y } , originX , originY } = this;\n const tx = originX.getPixels('x');\n const ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.scale(1 / x, 1 / y || x);\n ctx.translate(-tx, -ty);\n }\n applyToPoint(point) {\n const { x , y } = this.scale;\n point.applyTransform([\n x || 0,\n 0,\n 0,\n y || 0,\n 0,\n 0\n ]);\n }\n constructor(_, scale, transformOrigin){\n this.type = 'scale';\n const scaleSize = Point.parseScale(scale);\n // Workaround for node-canvas\n if (scaleSize.x === 0 || scaleSize.y === 0) {\n scaleSize.x = PSEUDO_ZERO;\n scaleSize.y = PSEUDO_ZERO;\n }\n this.scale = scaleSize;\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n}\n\nclass Matrix {\n apply(ctx) {\n const { originX , originY , matrix } = this;\n const tx = originX.getPixels('x');\n const ty = originY.getPixels('y');\n ctx.translate(tx, ty);\n ctx.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n ctx.translate(-tx, -ty);\n }\n unapply(ctx) {\n const { originX , originY , matrix } = 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;\n const h = 0;\n const i = 1;\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 ctx.translate(tx, ty);\n ctx.transform(det * (e * i - f * h), det * (f * g - d * i), det * (c * h - b * i), det * (a * i - c * g), det * (b * f - c * e), det * (c * d - a * f));\n ctx.translate(-tx, -ty);\n }\n applyToPoint(point) {\n point.applyTransform(this.matrix);\n }\n constructor(_, matrix, transformOrigin){\n this.type = 'matrix';\n this.matrix = toMatrixValue(matrix);\n this.originX = transformOrigin[0];\n this.originY = transformOrigin[1];\n }\n}\n\nclass Skew extends Matrix {\n constructor(document, skew, transformOrigin){\n super(document, skew, transformOrigin);\n this.type = 'skew';\n this.angle = new Property(document, 'angle', skew);\n }\n}\n\nclass SkewX extends Skew {\n constructor(document, skew, transformOrigin){\n super(document, skew, transformOrigin);\n this.type = 'skewX';\n this.matrix = [\n 1,\n 0,\n Math.tan(this.angle.getRadians()),\n 1,\n 0,\n 0\n ];\n }\n}\n\nclass SkewY extends Skew {\n constructor(document, skew, transformOrigin){\n super(document, skew, transformOrigin);\n this.type = 'skewY';\n this.matrix = [\n 1,\n Math.tan(this.angle.getRadians()),\n 0,\n 1,\n 0,\n 0\n ];\n }\n}\n\nfunction parseTransforms(transform) {\n return compressSpaces(transform).trim().replace(/\\)([a-zA-Z])/g, ') $1').replace(/\\)(\\s?,\\s?)/g, ') ').split(/\\s(?=[a-z])/);\n}\nfunction parseTransform(transform) {\n const [type = '', value = ''] = transform.split('(');\n return [\n type.trim(),\n value.trim().replace(')', '')\n ];\n}\nclass Transform {\n static fromElement(document, element) {\n const transformStyle = element.getStyle('transform', false, true);\n if (transformStyle.hasValue()) {\n const [transformOriginXProperty, transformOriginYProperty = transformOriginXProperty] = element.getStyle('transform-origin', false, true).split();\n if (transformOriginXProperty && transformOriginYProperty) {\n const transformOrigin = [\n transformOriginXProperty,\n transformOriginYProperty\n ];\n return new Transform(document, transformStyle.getString(), transformOrigin);\n }\n }\n return null;\n }\n apply(ctx) {\n this.transforms.forEach((transform)=>transform.apply(ctx)\n );\n }\n unapply(ctx) {\n this.transforms.forEach((transform)=>transform.unapply(ctx)\n );\n }\n // TODO: applyToPoint unused ... remove?\n applyToPoint(point) {\n this.transforms.forEach((transform)=>transform.applyToPoint(point)\n );\n }\n constructor(document, transform1, transformOrigin){\n this.document = document;\n this.transforms = [];\n const data = parseTransforms(transform1);\n data.forEach((transform)=>{\n if (transform === 'none') {\n return;\n }\n const [type, value] = parseTransform(transform);\n const TransformType = Transform.transformTypes[type];\n if (TransformType) {\n this.transforms.push(new TransformType(this.document, value, transformOrigin));\n }\n });\n }\n}\nTransform.transformTypes = {\n translate: Translate,\n rotate: Rotate,\n scale: Scale,\n matrix: Matrix,\n skewX: SkewX,\n skewY: SkewY\n};\n\nclass Element {\n getAttribute(name) {\n let createIfNotExists = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n const attr = this.attributes.get(name);\n if (!attr && createIfNotExists) {\n const attr = new Property(this.document, name, '');\n this.attributes.set(name, attr);\n return attr;\n }\n return attr || Property.empty(this.document);\n }\n getHrefAttribute() {\n let href;\n for (const [key, value] of this.attributes){\n if (key === 'href' || key.endsWith(':href')) {\n href = value;\n break;\n }\n }\n return href || Property.empty(this.document);\n }\n getStyle(name) {\n let createIfNotExists = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false, skipAncestors = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n const style = this.styles.get(name);\n if (style) {\n return style;\n }\n const attr = this.getAttribute(name);\n if (attr.hasValue()) {\n this.styles.set(name, attr) // move up to me to cache\n ;\n return attr;\n }\n if (!skipAncestors) {\n const { parent } = this;\n if (parent) {\n const parentStyle = parent.getStyle(name);\n if (parentStyle.hasValue()) {\n return parentStyle;\n }\n }\n }\n if (createIfNotExists) {\n const style = new Property(this.document, name, '');\n this.styles.set(name, style);\n return style;\n }\n return Property.empty(this.document);\n }\n render(ctx) {\n // don't render display=none\n // don't render visibility=hidden\n if (this.getStyle('display').getString() === 'none' || this.getStyle('visibility').getString() === 'hidden') {\n return;\n }\n ctx.save();\n if (this.getStyle('mask').hasValue()) {\n const mask = this.getStyle('mask').getDefinition();\n if (mask) {\n this.applyEffects(ctx);\n mask.apply(ctx, this);\n }\n } else if (this.getStyle('filter').getValue('none') !== 'none') {\n const filter = this.getStyle('filter').getDefinition();\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 ctx.restore();\n }\n setContext(_) {\n // NO RENDER\n }\n applyEffects(ctx) {\n // transform\n const transform = Transform.fromElement(this.document, this);\n if (transform) {\n transform.apply(ctx);\n }\n // clip\n const clipPathStyleProp = this.getStyle('clip-path', false, true);\n if (clipPathStyleProp.hasValue()) {\n const clip = clipPathStyleProp.getDefinition();\n if (clip) {\n clip.apply(ctx);\n }\n }\n }\n clearContext(_) {\n // NO RENDER\n }\n renderChildren(ctx) {\n this.children.forEach((child)=>{\n child.render(ctx);\n });\n }\n addChild(childNode) {\n const child = childNode instanceof Element ? childNode : this.document.createElement(childNode);\n child.parent = this;\n if (!Element.ignoreChildTypes.includes(child.type)) {\n this.children.push(child);\n }\n }\n matchesSelector(selector) {\n var ref;\n const { node } = this;\n if (typeof node.matches === 'function') {\n return node.matches(selector);\n }\n const styleClasses = (ref = node.getAttribute) === null || ref === void 0 ? void 0 : ref.call(node, 'class');\n if (!styleClasses || styleClasses === '') {\n return false;\n }\n return styleClasses.split(' ').some((styleClass)=>\".\".concat(styleClass) === selector\n );\n }\n addStylesFromStyleDefinition() {\n const { styles , stylesSpecificity } = this.document;\n for (const [selector, style] of styles){\n if (!selector.startsWith('@') && this.matchesSelector(selector)) {\n const specificity = stylesSpecificity.get(selector);\n if (style) {\n for (const [name, styleProp] of style){\n let existingSpecificity = this.stylesSpecificity.get(name);\n if (typeof existingSpecificity === 'undefined') {\n existingSpecificity = '000';\n }\n if (specificity && specificity >= existingSpecificity) {\n if (styleProp) {\n this.styles.set(name, styleProp);\n }\n this.stylesSpecificity.set(name, specificity);\n }\n }\n }\n }\n }\n }\n removeStyles(element, ignoreStyles) {\n const toRestore1 = ignoreStyles.reduce((toRestore, name)=>{\n const styleProp = element.getStyle(name);\n if (!styleProp.hasValue()) {\n return toRestore;\n }\n const value = styleProp.getString();\n styleProp.setValue('');\n return [\n ...toRestore,\n [\n name,\n value\n ]\n ];\n }, []);\n return toRestore1;\n }\n restoreStyles(element, styles) {\n styles.forEach((param)=>{\n let [name, value] = param;\n element.getStyle(name, true).setValue(value);\n });\n }\n isFirstChild() {\n var ref;\n return ((ref = this.parent) === null || ref === void 0 ? void 0 : ref.children.indexOf(this)) === 0;\n }\n constructor(document, node, captureTextNodes = false){\n this.document = document;\n this.node = node;\n this.captureTextNodes = captureTextNodes;\n this.type = '';\n this.attributes = new Map();\n this.styles = new Map();\n this.stylesSpecificity = new Map();\n this.animationFrozen = false;\n this.animationFrozenValue = '';\n this.parent = null;\n this.children = [];\n if (!node || node.nodeType !== 1) {\n return;\n }\n // add attributes\n Array.from(node.attributes).forEach((attribute)=>{\n const nodeName = normalizeAttributeName(attribute.nodeName);\n this.attributes.set(nodeName, new Property(document, nodeName, attribute.value));\n });\n this.addStylesFromStyleDefinition();\n // add inline styles\n if (this.getAttribute('style').hasValue()) {\n const styles = this.getAttribute('style').getString().split(';').map((_)=>_.trim()\n );\n styles.forEach((style)=>{\n if (!style) {\n return;\n }\n const [name, value] = style.split(':').map((_)=>_.trim()\n );\n if (name) {\n this.styles.set(name, new Property(document, name, value));\n }\n });\n }\n const { definitions } = document;\n const id = this.getAttribute('id');\n // add id\n if (id.hasValue()) {\n if (!definitions.has(id.getString())) {\n definitions.set(id.getString(), this);\n }\n }\n Array.from(node.childNodes).forEach((childNode)=>{\n if (childNode.nodeType === 1) {\n this.addChild(childNode) // ELEMENT_NODE\n ;\n } else if (captureTextNodes && (childNode.nodeType === 3 || childNode.nodeType === 4)) {\n const textNode = document.createTextNode(childNode);\n if (textNode.getText().length > 0) {\n this.addChild(textNode) // TEXT_NODE\n ;\n }\n }\n });\n }\n}\nElement.ignoreChildTypes = [\n 'title'\n];\n\nclass UnknownElement extends Element {\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n }\n}\n\nfunction wrapFontFamily(fontFamily) {\n const trimmed = fontFamily.trim();\n return /^('|\")/.test(trimmed) ? trimmed : \"\\\"\".concat(trimmed, \"\\\"\");\n}\nfunction prepareFontFamily(fontFamily) {\n return typeof process === 'undefined' ? fontFamily : fontFamily.trim().split(',').map(wrapFontFamily).join(',');\n}\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-style\n * @param fontStyle\n * @returns CSS font style.\n */ function prepareFontStyle(fontStyle) {\n if (!fontStyle) {\n return '';\n }\n const targetFontStyle = fontStyle.trim().toLowerCase();\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 default:\n if (/^oblique\\s+(-|)\\d+deg$/.test(targetFontStyle)) {\n return targetFontStyle;\n }\n return '';\n }\n}\n/**\n * https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight\n * @param fontWeight\n * @returns CSS font weight.\n */ function prepareFontWeight(fontWeight) {\n if (!fontWeight) {\n return '';\n }\n const targetFontWeight = fontWeight.trim().toLowerCase();\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 default:\n if (/^[\\d.]+$/.test(targetFontWeight)) {\n return targetFontWeight;\n }\n return '';\n }\n}\nclass Font {\n static parse() {\n let font = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : '', inherit = arguments.length > 1 ? arguments[1] : void 0;\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 parts.forEach((part)=>{\n switch(true){\n case !set.fontStyle && Font.styles.includes(part):\n if (part !== 'inherit') {\n fontStyle = part;\n }\n set.fontStyle = true;\n break;\n case !set.fontVariant && Font.variants.includes(part):\n if (part !== 'inherit') {\n fontVariant = part;\n }\n set.fontStyle = true;\n set.fontVariant = true;\n break;\n case !set.fontWeight && Font.weights.includes(part):\n if (part !== 'inherit') {\n fontWeight = part;\n }\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n break;\n case !set.fontSize:\n if (part !== 'inherit') {\n fontSize = part.split('/')[0] || '';\n }\n set.fontStyle = true;\n set.fontVariant = true;\n set.fontWeight = true;\n set.fontSize = true;\n break;\n default:\n if (part !== 'inherit') {\n fontFamily += part;\n }\n }\n });\n return new Font(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit);\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 constructor(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit){\n const inheritFont = inherit ? typeof inherit === 'string' ? Font.parse(inherit) : inherit : {};\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}\nFont.styles = 'normal|italic|oblique|inherit';\nFont.variants = 'normal|small-caps|inherit';\nFont.weights = 'normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit';\n\nclass BoundingBox {\n get x() {\n return this.x1;\n }\n get y() {\n return this.y1;\n }\n get width() {\n return this.x2 - this.x1;\n }\n get height() {\n return this.y2 - this.y1;\n }\n addPoint(x, y) {\n if (typeof x !== 'undefined') {\n if (isNaN(this.x1) || isNaN(this.x2)) {\n this.x1 = x;\n this.x2 = x;\n }\n if (x < this.x1) {\n this.x1 = x;\n }\n if (x > this.x2) {\n this.x2 = x;\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 if (y < this.y1) {\n this.y1 = y;\n }\n if (y > this.y2) {\n this.y2 = y;\n }\n }\n }\n addX(x) {\n this.addPoint(x, 0);\n }\n addY(y) {\n this.addPoint(0, y);\n }\n addBoundingBox(boundingBox) {\n if (!boundingBox) {\n return;\n }\n const { x1 , y1 , x2 , y2 } = boundingBox;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n sumCubic(t, p0, p1, p2, p3) {\n return Math.pow(1 - t, 3) * p0 + 3 * Math.pow(1 - t, 2) * t * p1 + 3 * (1 - t) * Math.pow(t, 2) * p2 + Math.pow(t, 3) * p3;\n }\n bezierCurveAdd(forX, p0, p1, p2, p3) {\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 if (a === 0) {\n if (b === 0) {\n return;\n }\n const t = -c / b;\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 return;\n }\n const b2ac = Math.pow(b, 2) - 4 * c * a;\n if (b2ac < 0) {\n return;\n }\n const t1 = (-b + Math.sqrt(b2ac)) / (2 * a);\n if (0 < t1 && t1 < 1) {\n if (forX) {\n this.addX(this.sumCubic(t1, p0, p1, p2, p3));\n } else {\n this.addY(this.sumCubic(t1, p0, p1, p2, p3));\n }\n }\n const t2 = (-b - Math.sqrt(b2ac)) / (2 * a);\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 // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n addBezierCurve(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {\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 addQuadraticCurve(p0x, p0y, p1x, p1y, p2x, p2y) {\n const cp1x = p0x + 2 / 3 * (p1x - p0x) // CP1 = QP0 + 2/3 *(QP1-QP0)\n ;\n const cp1y = p0y + 2 / 3 * (p1y - p0y) // CP1 = QP0 + 2/3 *(QP1-QP0)\n ;\n const cp2x = cp1x + 1 / 3 * (p2x - p0x) // CP2 = CP1 + 1/3 *(QP2-QP0)\n ;\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 isPointInBox(x, y) {\n const { x1 , y1 , x2 , y2 } = this;\n return x1 <= x && x <= x2 && y1 <= y && y <= y2;\n }\n constructor(x1 = Number.NaN, y1 = Number.NaN, x2 = Number.NaN, y2 = Number.NaN){\n this.x1 = x1;\n this.y1 = y1;\n this.x2 = x2;\n this.y2 = y2;\n this.addPoint(x1, y1);\n this.addPoint(x2, y2);\n }\n}\n\nclass RenderedElement extends Element {\n calculateOpacity() {\n let opacity = 1;\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n let element = this;\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 element = element.parent;\n }\n return opacity;\n }\n setContext(ctx) {\n let fromMeasure = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n if (!fromMeasure) {\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 if (fillStyleProp.isUrlDefinition()) {\n const fillStyle = fillStyleProp.getFillStyleDefinition(this, fillOpacityStyleProp);\n if (fillStyle) {\n ctx.fillStyle = fillStyle;\n }\n } else if (fillStyleProp.hasValue()) {\n if (fillStyleProp.getString() === 'currentColor') {\n fillStyleProp.setValue(this.getStyle('color').getColor());\n }\n const fillStyle = fillStyleProp.getColor();\n if (fillStyle !== 'inherit') {\n ctx.fillStyle = fillStyle === 'none' ? 'rgba(0,0,0,0)' : fillStyle;\n }\n }\n if (fillOpacityStyleProp.hasValue()) {\n const fillStyle = new Property(this.document, 'fill', ctx.fillStyle).addOpacity(fillOpacityStyleProp).getColor();\n ctx.fillStyle = fillStyle;\n }\n // stroke\n if (strokeStyleProp.isUrlDefinition()) {\n const strokeStyle = strokeStyleProp.getFillStyleDefinition(this, strokeOpacityProp);\n if (strokeStyle) {\n ctx.strokeStyle = strokeStyle;\n }\n } else if (strokeStyleProp.hasValue()) {\n if (strokeStyleProp.getString() === 'currentColor') {\n strokeStyleProp.setValue(this.getStyle('color').getColor());\n }\n const strokeStyle = strokeStyleProp.getString();\n if (strokeStyle !== 'inherit') {\n ctx.strokeStyle = strokeStyle === 'none' ? 'rgba(0,0,0,0)' : strokeStyle;\n }\n }\n if (strokeOpacityProp.hasValue()) {\n const strokeStyle = new Property(this.document, 'stroke', ctx.strokeStyle).addOpacity(strokeOpacityProp).getString();\n ctx.strokeStyle = strokeStyle;\n }\n const strokeWidthStyleProp = this.getStyle('stroke-width');\n if (strokeWidthStyleProp.hasValue()) {\n const newLineWidth = strokeWidthStyleProp.getPixels();\n ctx.lineWidth = !newLineWidth ? PSEUDO_ZERO // browsers don't respect 0 (or node-canvas? :-)\n : newLineWidth;\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 if (strokeLinecapStyleProp.hasValue()) {\n ctx.lineCap = strokeLinecapStyleProp.getString();\n }\n if (strokeLinejoinStyleProp.hasValue()) {\n ctx.lineJoin = strokeLinejoinStyleProp.getString();\n }\n if (strokeMiterlimitProp.hasValue()) {\n ctx.miterLimit = strokeMiterlimitProp.getNumber();\n }\n // NEED TEST\n // if (pointOrderStyleProp.hasValue()) {\n // // ?\n // ctx.paintOrder = pointOrderStyleProp.getValue();\n // }\n if (strokeDasharrayStyleProp.hasValue() && strokeDasharrayStyleProp.getString() !== 'none') {\n const gaps = toNumbers(strokeDasharrayStyleProp.getString());\n if (typeof ctx.setLineDash !== 'undefined') {\n ctx.setLineDash(gaps);\n } else // @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 // @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 const offset = strokeDashoffsetProp.getPixels();\n if (typeof ctx.lineDashOffset !== 'undefined') {\n ctx.lineDashOffset = offset;\n } else // @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 // @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 // font\n this.modifiedEmSizeStack = false;\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(fontStyleStyleProp.getString(), fontVariantStyleProp.getString(), fontWeightStyleProp.getString(), fontSizeStyleProp.hasValue() ? \"\".concat(fontSizeStyleProp.getPixels(true), \"px\") : '', fontFamilyStyleProp.getString(), Font.parse(fontStyleProp.getString(), ctx.font));\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 ctx.font = font.toString();\n if (fontSizeStyleProp.isPixels()) {\n this.document.emSize = fontSizeStyleProp.getPixels();\n this.modifiedEmSizeStack = true;\n }\n }\n if (!fromMeasure) {\n // effects\n this.applyEffects(ctx);\n // opacity\n ctx.globalAlpha = this.calculateOpacity();\n }\n }\n clearContext(ctx) {\n super.clearContext(ctx);\n if (this.modifiedEmSizeStack) {\n this.document.popEmSize();\n }\n }\n constructor(...args){\n super(...args);\n this.modifiedEmSizeStack = false;\n }\n}\n\nclass TextElement extends RenderedElement {\n setContext(ctx) {\n let fromMeasure = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n super.setContext(ctx, fromMeasure);\n const textBaseline = this.getStyle('dominant-baseline').getTextBaseline() || this.getStyle('alignment-baseline').getTextBaseline();\n if (textBaseline) {\n ctx.textBaseline = textBaseline;\n }\n }\n 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 getBoundingBox(ctx) {\n if (this.type !== 'text') {\n return this.getTElementBoundingBox(ctx);\n }\n // first, calculate child positions\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx);\n let boundingBox = null;\n // then calculate bounding box\n this.children.forEach((_, i)=>{\n const childBoundingBox = this.getChildBoundingBox(ctx, this, this, i);\n if (!boundingBox) {\n boundingBox = childBoundingBox;\n } else {\n boundingBox.addBoundingBox(childBoundingBox);\n }\n });\n return boundingBox;\n }\n getFontSize() {\n const { document , parent } = this;\n const inheritFontSize = Font.parse(document.ctx.font).fontSize;\n const fontSize = parent.getStyle('font-size').getNumber(inheritFontSize);\n return fontSize;\n }\n getTElementBoundingBox(ctx) {\n const fontSize = this.getFontSize();\n return new BoundingBox(this.x, this.y - fontSize, this.x + this.measureText(ctx), this.y);\n }\n getGlyph(font, text, i) {\n const char = text[i];\n let glyph;\n if (font.isArabic) {\n var ref;\n const len = text.length;\n const prevChar = text[i - 1];\n const nextChar = text[i + 1];\n let arabicForm = 'isolated';\n if ((i === 0 || prevChar === ' ') && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'terminal';\n }\n if (i > 0 && prevChar !== ' ' && i < len - 1 && nextChar !== ' ') {\n arabicForm = 'medial';\n }\n if (i > 0 && prevChar !== ' ' && (i === len - 1 || nextChar === ' ')) {\n arabicForm = 'initial';\n }\n glyph = ((ref = font.arabicGlyphs.get(char)) === null || ref === void 0 ? void 0 : ref.get(arabicForm)) || font.glyphs.get(char);\n } else {\n glyph = font.glyphs.get(char);\n }\n if (!glyph) {\n glyph = font.missingGlyph;\n }\n return glyph;\n }\n getText() {\n return '';\n }\n getTextFromNode(node) {\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(// textNode.value\n // || textNode.text\n textNode.textContent || '');\n if (index === 0) {\n text = trimLeft(text);\n }\n if (index === lastIndex) {\n text = trimRight(text);\n }\n return text;\n }\n renderChildren(ctx) {\n if (this.type !== 'text') {\n this.renderTElementChildren(ctx);\n return;\n }\n // first, calculate child positions\n this.initializeCoordinates();\n this.adjustChildCoordinatesRecursive(ctx);\n // then render\n this.children.forEach((_, i)=>{\n this.renderChild(ctx, this, this, i);\n });\n const { mouse } = this.document.screen;\n // Do not calc bounding box if mouse is not working.\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, this.getBoundingBox(ctx));\n }\n }\n renderTElementChildren(ctx) {\n const { document , parent } = this;\n const renderText = this.getText();\n const customFont = parent.getStyle('font-family').getDefinition();\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 ? renderText.split('').reverse().join('') : renderText;\n const dx = toNumbers(parent.getAttribute('dx').getString());\n const len = text.length;\n for(let i = 0; i < len; i++){\n const glyph = this.getGlyph(customFont, text, i);\n ctx.translate(this.x, this.y);\n ctx.scale(scale, -scale);\n const lw = ctx.lineWidth;\n ctx.lineWidth = ctx.lineWidth * unitsPerEm / fontSize;\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, 0.4, 1, 0, 0);\n }\n glyph.render(ctx);\n if (fontStyle === 'italic') {\n ctx.transform(1, 0, -0.4, 1, 0, 0);\n }\n ctx.lineWidth = lw;\n ctx.scale(1 / scale, -1 / scale);\n ctx.translate(-this.x, -this.y);\n this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / unitsPerEm;\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n this.x += dx[i];\n }\n }\n return;\n }\n const { x , y } = this;\n // NEED TEST\n // if (ctx.paintOrder === 'stroke') {\n // if (ctx.strokeStyle) {\n // ctx.strokeText(renderText, x, y);\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 if (ctx.strokeStyle) {\n ctx.strokeText(renderText, x, y);\n }\n // }\n }\n applyAnchoring() {\n if (this.textChunkStart >= this.leafTexts.length) {\n return;\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 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 ;\n let shift = 0;\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 for(let i = this.textChunkStart; i < this.leafTexts.length; i++){\n this.leafTexts[i].x += shift;\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 adjustChildCoordinatesRecursive(ctx) {\n this.children.forEach((_, i)=>{\n this.adjustChildCoordinatesRecursiveCore(ctx, this, this, i);\n });\n this.applyAnchoring();\n }\n adjustChildCoordinatesRecursiveCore(ctx, textParent, parent, i1) {\n const child = parent.children[i1];\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, i1);\n }\n }\n adjustChildCoordinates(ctx, textParent, parent, i) {\n const child = parent.children[i];\n if (typeof child.measureText !== 'function') {\n return child;\n }\n ctx.save();\n child.setContext(ctx, true);\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();\n const isRTL = Boolean(customFont === null || customFont === void 0 ? void 0 : customFont.isRTL);\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 if (!yAttr.hasValue()) {\n yAttr.setValue(child.getInheritedAttribute('y'));\n }\n if (!dxAttr.hasValue()) {\n dxAttr.setValue(child.getInheritedAttribute('dx'));\n }\n if (!dyAttr.hasValue()) {\n dyAttr.setValue(child.getInheritedAttribute('dy'));\n }\n }\n const width = child.measureText(ctx);\n if (isRTL) {\n textParent.x -= width;\n }\n if (xAttr.hasValue()) {\n // an \"x\" attribute marks the start of a new chunk\n textParent.applyAnchoring();\n child.x = xAttr.getPixels('x');\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 child.x = textParent.x;\n }\n textParent.x = child.x;\n if (!isRTL) {\n textParent.x += width;\n }\n if (yAttr.hasValue()) {\n child.y = yAttr.getPixels('y');\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 child.y = textParent.y;\n }\n textParent.y = child.y;\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 child.clearContext(ctx);\n ctx.restore();\n return child;\n }\n getChildBoundingBox(ctx, textParent, parent, i2) {\n const child = parent.children[i2];\n // not a text node?\n if (typeof child.getBoundingBox !== 'function') {\n return null;\n }\n const boundingBox = child.getBoundingBox(ctx);\n if (boundingBox) {\n child.children.forEach((_, i)=>{\n const childBoundingBox = textParent.getChildBoundingBox(ctx, textParent, child, i);\n boundingBox.addBoundingBox(childBoundingBox);\n });\n }\n return boundingBox;\n }\n renderChild(ctx, textParent, parent, i3) {\n const child = parent.children[i3];\n child.render(ctx);\n child.children.forEach((_, i)=>{\n textParent.renderChild(ctx, textParent, child, i);\n });\n }\n measureText(ctx) {\n const { measureCache } = this;\n if (~measureCache) {\n return measureCache;\n }\n const renderText = this.getText();\n const measure = this.measureTargetText(ctx, renderText);\n this.measureCache = measure;\n return measure;\n }\n measureTargetText(ctx, targetText) {\n if (!targetText.length) {\n return 0;\n }\n const { parent } = this;\n const customFont = parent.getStyle('font-family').getDefinition();\n if (customFont) {\n const fontSize = this.getFontSize();\n const text = customFont.isRTL ? targetText.split('').reverse().join('') : targetText;\n const dx = toNumbers(parent.getAttribute('dx').getString());\n const len = text.length;\n let measure = 0;\n for(let i = 0; i < len; i++){\n const glyph = this.getGlyph(customFont, text, i);\n measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm;\n if (typeof dx[i] !== 'undefined' && !isNaN(dx[i])) {\n measure += dx[i];\n }\n }\n return measure;\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!ctx.measureText) {\n return targetText.length * 10;\n }\n ctx.save();\n this.setContext(ctx, true);\n const { width: measure } = ctx.measureText(targetText);\n this.clearContext(ctx);\n ctx.restore();\n return measure;\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 */ getInheritedAttribute(name) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias,consistent-this\n let current = this;\n while(current instanceof TextElement && current.isFirstChild() && current.parent){\n const parentAttr = current.parent.getAttribute(name);\n if (parentAttr.hasValue(true)) {\n return parentAttr.getString('0');\n }\n current = current.parent;\n }\n return null;\n }\n constructor(document, node, captureTextNodes){\n super(document, node, new.target === TextElement ? true : captureTextNodes);\n this.type = 'text';\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 this.measureCache = -1;\n }\n}\n\nclass TSpanElement extends TextElement {\n getText() {\n return this.text;\n }\n constructor(document, node, captureTextNodes){\n super(document, node, new.target === TSpanElement ? true : captureTextNodes);\n this.type = 'tspan';\n // if this node has children, then they own the text\n this.text = this.children.length > 0 ? '' : this.getTextFromNode();\n }\n}\n\nclass TextNode extends TSpanElement {\n constructor(...args){\n super(...args);\n this.type = 'textNode';\n }\n}\n\nclass PathParser extends SVGPathData {\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 isEnd() {\n const { i , commands } = this;\n return i >= commands.length - 1;\n }\n next() {\n const command = this.commands[++this.i];\n this.previousCommand = this.command;\n this.command = command;\n return command;\n }\n getPoint() {\n let xProp = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 'x', yProp = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'y';\n const point = new Point(this.command[xProp], this.command[yProp]);\n return this.makeAbsolute(point);\n }\n getAsControlPoint(xProp, yProp) {\n const point = this.getPoint(xProp, yProp);\n this.control = point;\n return point;\n }\n getAsCurrentPoint(xProp, yProp) {\n const point = this.getPoint(xProp, yProp);\n this.current = point;\n return point;\n }\n getReflectedControlPoint() {\n const previousCommand = this.previousCommand.type;\n if (previousCommand !== SVGPathData.CURVE_TO && previousCommand !== SVGPathData.SMOOTH_CURVE_TO && previousCommand !== SVGPathData.QUAD_TO && previousCommand !== SVGPathData.SMOOTH_QUAD_TO) {\n return this.current;\n }\n // reflect point\n const { current: { x: cx , y: cy } , control: { x: ox , y: oy } } = this;\n const point = new Point(2 * cx - ox, 2 * cy - oy);\n return point;\n }\n makeAbsolute(point) {\n if (this.command.relative) {\n const { x , y } = this.current;\n point.x += x;\n point.y += y;\n }\n return point;\n }\n addMarker(point, from, priorTo) {\n const { points , angles } = this;\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 this.addMarkerAngle(point, from ? from.angleTo(point) : null);\n }\n addMarkerAngle(point, angle) {\n this.points.push(point);\n this.angles.push(angle);\n }\n getMarkerPoints() {\n return this.points;\n }\n getMarkerAngles() {\n const { angles } = this;\n const len = angles.length;\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 return angles;\n }\n constructor(path){\n super(path// Fix spaces after signs.\n .replace(/([+\\-.])\\s+/gm, '$1')// Remove invalid part.\n .replace(/[^MmZzLlHhVvCcSsQqTtAae\\d\\s.,+-].*/g, ''));\n this.control = new Point(0, 0);\n this.start = new Point(0, 0);\n this.current = new Point(0, 0);\n this.command = null;\n this.commands = this.commands;\n this.i = -1;\n this.previousCommand = null;\n this.points = [];\n this.angles = [];\n }\n}\n\nclass PathElement extends RenderedElement {\n path(ctx) {\n const { pathParser } = this;\n const boundingBox = new BoundingBox();\n pathParser.reset();\n if (ctx) {\n ctx.beginPath();\n }\n while(!pathParser.isEnd()){\n switch(pathParser.next().type){\n case PathParser.MOVE_TO:\n this.pathM(ctx, boundingBox);\n break;\n case PathParser.LINE_TO:\n this.pathL(ctx, boundingBox);\n break;\n case PathParser.HORIZ_LINE_TO:\n this.pathH(ctx, boundingBox);\n break;\n case PathParser.VERT_LINE_TO:\n this.pathV(ctx, boundingBox);\n break;\n case PathParser.CURVE_TO:\n this.pathC(ctx, boundingBox);\n break;\n case PathParser.SMOOTH_CURVE_TO:\n this.pathS(ctx, boundingBox);\n break;\n case PathParser.QUAD_TO:\n this.pathQ(ctx, boundingBox);\n break;\n case PathParser.SMOOTH_QUAD_TO:\n this.pathT(ctx, boundingBox);\n break;\n case PathParser.ARC:\n this.pathA(ctx, boundingBox);\n break;\n case PathParser.CLOSE_PATH:\n this.pathZ(ctx, boundingBox);\n break;\n }\n }\n return boundingBox;\n }\n getBoundingBox(_ctx) {\n return this.path();\n }\n getMarkers() {\n const { pathParser } = this;\n const points = pathParser.getMarkerPoints();\n const angles = pathParser.getMarkerAngles();\n const markers = points.map((point, i)=>[\n point,\n angles[i]\n ]\n );\n return markers;\n }\n renderChildren(ctx) {\n this.path(ctx);\n this.document.screen.mouse.checkPath(this, ctx);\n const fillRuleStyleProp = this.getStyle('fill-rule');\n if (ctx.fillStyle !== '') {\n if (fillRuleStyleProp.getString('inherit') !== 'inherit') {\n ctx.fill(fillRuleStyleProp.getString());\n } else {\n ctx.fill();\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 const markers = this.getMarkers();\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 if (markerStartStyleProp.isUrlDefinition()) {\n const marker = markerStartStyleProp.getDefinition();\n const [point, angle] = markers[0];\n marker.render(ctx, point, angle);\n }\n if (markerMidStyleProp.isUrlDefinition()) {\n const marker = markerMidStyleProp.getDefinition();\n for(let i = 1; i < markersLastIndex; i++){\n const [point, angle] = markers[i];\n marker.render(ctx, point, angle);\n }\n }\n if (markerEndStyleProp.isUrlDefinition()) {\n const marker = markerEndStyleProp.getDefinition();\n const [point, angle] = markers[markersLastIndex];\n marker.render(ctx, point, angle);\n }\n }\n }\n static pathM(pathParser) {\n const point = pathParser.getAsCurrentPoint();\n pathParser.start = pathParser.current;\n return {\n point\n };\n }\n pathM(ctx, boundingBox) {\n const { pathParser } = this;\n const { point } = PathElement.pathM(pathParser);\n const { x , y } = point;\n pathParser.addMarker(point);\n boundingBox.addPoint(x, y);\n if (ctx) {\n ctx.moveTo(x, y);\n }\n }\n static pathL(pathParser) {\n const { current } = pathParser;\n const point = pathParser.getAsCurrentPoint();\n return {\n current,\n point\n };\n }\n pathL(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , point } = PathElement.pathL(pathParser);\n const { x , y } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n static pathH(pathParser) {\n const { current , command } = pathParser;\n const point = new Point((command.relative ? current.x : 0) + command.x, current.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n pathH(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , point } = PathElement.pathH(pathParser);\n const { x , y } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n static pathV(pathParser) {\n const { current , command } = pathParser;\n const point = new Point(current.x, (command.relative ? current.y : 0) + command.y);\n pathParser.current = point;\n return {\n current,\n point\n };\n }\n pathV(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , point } = PathElement.pathV(pathParser);\n const { x , y } = point;\n pathParser.addMarker(point, current);\n boundingBox.addPoint(x, y);\n if (ctx) {\n ctx.lineTo(x, y);\n }\n }\n static pathC(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 return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n pathC(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , point , controlPoint , currentPoint } = PathElement.pathC(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n static pathS(pathParser) {\n const { current } = pathParser;\n const point = pathParser.getReflectedControlPoint();\n const controlPoint = pathParser.getAsControlPoint('x2', 'y2');\n const currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n point,\n controlPoint,\n currentPoint\n };\n }\n pathS(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , point , controlPoint , currentPoint } = PathElement.pathS(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, point);\n boundingBox.addBezierCurve(current.x, current.y, point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n if (ctx) {\n ctx.bezierCurveTo(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n static pathQ(pathParser) {\n const { current } = pathParser;\n const controlPoint = pathParser.getAsControlPoint('x1', 'y1');\n const currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n pathQ(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , controlPoint , currentPoint } = PathElement.pathQ(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n static pathT(pathParser) {\n const { current } = pathParser;\n const controlPoint = pathParser.getReflectedControlPoint();\n pathParser.control = controlPoint;\n const currentPoint = pathParser.getAsCurrentPoint();\n return {\n current,\n controlPoint,\n currentPoint\n };\n }\n pathT(ctx, boundingBox) {\n const { pathParser } = this;\n const { current , controlPoint , currentPoint } = PathElement.pathT(pathParser);\n pathParser.addMarker(currentPoint, controlPoint, controlPoint);\n boundingBox.addQuadraticCurve(current.x, current.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n if (ctx) {\n ctx.quadraticCurveTo(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n }\n static pathA(pathParser) {\n const { current , command } = pathParser;\n let { rX , rY , xRot , lArcFlag , sweepFlag } = command;\n const xAxisRotation = xRot * (Math.PI / 180);\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(Math.cos(xAxisRotation) * (current.x - currentPoint.x) / 2 + Math.sin(xAxisRotation) * (current.y - currentPoint.y) / 2, -Math.sin(xAxisRotation) * (current.x - currentPoint.x) / 2 + Math.cos(xAxisRotation) * (current.y - currentPoint.y) / 2);\n // adjust radii\n const l = Math.pow(currp.x, 2) / Math.pow(rX, 2) + Math.pow(currp.y, 2) / Math.pow(rY, 2);\n if (l > 1) {\n rX *= Math.sqrt(l);\n rY *= Math.sqrt(l);\n }\n // cx', cy'\n let s = (lArcFlag === sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rX, 2) * Math.pow(rY, 2) - Math.pow(rX, 2) * Math.pow(currp.y, 2) - Math.pow(rY, 2) * Math.pow(currp.x, 2)) / (Math.pow(rX, 2) * Math.pow(currp.y, 2) + Math.pow(rY, 2) * Math.pow(currp.x, 2)));\n if (isNaN(s)) {\n s = 0;\n }\n const cpp = new Point(s * rX * currp.y / rY, s * -rY * currp.x / rX);\n // cx, cy\n const centp = new Point((current.x + currentPoint.x) / 2 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (current.y + currentPoint.y) / 2 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y);\n // initial angle\n const a1 = vectorsAngle([\n 1,\n 0\n ], [\n (currp.x - cpp.x) / rX,\n (currp.y - cpp.y) / rY\n ]) // θ1\n ;\n // angle delta\n const u = [\n (currp.x - cpp.x) / rX,\n (currp.y - cpp.y) / rY\n ];\n const v = [\n (-currp.x - cpp.x) / rX,\n (-currp.y - cpp.y) / rY\n ];\n let ad = vectorsAngle(u, v) // Δθ\n ;\n if (vectorsRatio(u, v) <= -1) {\n ad = Math.PI;\n }\n if (vectorsRatio(u, v) >= 1) {\n ad = 0;\n }\n return {\n currentPoint,\n rX,\n rY,\n sweepFlag,\n xAxisRotation,\n centp,\n a1,\n ad\n };\n }\n pathA(ctx, boundingBox) {\n const { pathParser } = this;\n const { currentPoint , rX , rY , sweepFlag , xAxisRotation , centp , a1 , ad } = PathElement.pathA(pathParser);\n // for markers\n const dir = 1 - sweepFlag ? 1 : -1;\n const ah = a1 + dir * (ad / 2);\n const halfWay = new Point(centp.x + rX * Math.cos(ah), centp.y + rY * Math.sin(ah));\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 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 static pathZ(pathParser) {\n pathParser.current = pathParser.start;\n }\n pathZ(ctx, boundingBox) {\n PathElement.pathZ(this.pathParser);\n if (ctx) {\n // only close path if it is not a straight line\n if (boundingBox.x1 !== boundingBox.x2 && boundingBox.y1 !== boundingBox.y2) {\n ctx.closePath();\n }\n }\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'path';\n this.pathParser = new PathParser(this.getAttribute('d').getString());\n }\n}\n\nclass SVGElement extends RenderedElement {\n setContext(ctx) {\n var ref;\n const { document } = this;\n const { screen , window } = document;\n const canvas = ctx.canvas;\n screen.setDefaults(ctx);\n if ('style' in canvas && typeof ctx.font !== 'undefined' && window && typeof window.getComputedStyle !== 'undefined') {\n ctx.font = window.getComputedStyle(canvas).getPropertyValue('font');\n const fontSizeProp = new Property(document, 'fontSize', Font.parse(ctx.font).fontSize);\n if (fontSizeProp.hasValue()) {\n document.rootEmSize = fontSizeProp.getPixels('y');\n document.emSize = document.rootEmSize;\n }\n }\n // create new view port\n if (!this.getAttribute('x').hasValue()) {\n this.getAttribute('x', true).setValue(0);\n }\n if (!this.getAttribute('y').hasValue()) {\n this.getAttribute('y', true).setValue(0);\n }\n let { width , height } = screen.viewPort;\n if (!this.getStyle('width').hasValue()) {\n this.getStyle('width', true).setValue('100%');\n }\n if (!this.getStyle('height').hasValue()) {\n this.getStyle('height', true).setValue('100%');\n }\n if (!this.getStyle('color').hasValue()) {\n this.getStyle('color', true).setValue('black');\n }\n const refXAttr = this.getAttribute('refX');\n const refYAttr = this.getAttribute('refY');\n const viewBoxAttr = this.getAttribute('viewBox');\n const viewBox = viewBoxAttr.hasValue() ? toNumbers(viewBoxAttr.getString()) : null;\n const clip = !this.root && this.getStyle('overflow').getValue('hidden') !== 'visible';\n let minX = 0;\n let minY = 0;\n let clipX = 0;\n let clipY = 0;\n if (viewBox) {\n minX = viewBox[0];\n minY = viewBox[1];\n }\n if (!this.root) {\n width = this.getStyle('width').getPixels('x');\n height = this.getStyle('height').getPixels('y');\n if (this.type === 'marker') {\n clipX = minX;\n clipY = minY;\n minX = 0;\n minY = 0;\n }\n }\n screen.viewPort.setCurrent(width, height);\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 || ((ref = this.node.parentNode) === null || ref === void 0 ? void 0 : ref.nodeName) === 'foreignObject') && this.getStyle('transform', false, true).hasValue() && !this.getStyle('transform-origin', false, true).hasValue()) {\n this.getStyle('transform-origin', true, true).setValue('50% 50%');\n }\n super.setContext(ctx);\n ctx.translate(this.getAttribute('x').getPixels('x'), this.getAttribute('y').getPixels('y'));\n if (viewBox) {\n width = viewBox[2];\n height = viewBox[3];\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(),\n refY: refYAttr.getValue(),\n clip,\n clipX,\n clipY\n });\n if (viewBox) {\n screen.viewPort.removeCurrent();\n screen.viewPort.setCurrent(width, height);\n }\n }\n clearContext(ctx) {\n super.clearContext(ctx);\n this.document.screen.viewPort.removeCurrent();\n }\n /**\n * Resize SVG to fit in given size.\n * @param width\n * @param height\n * @param preserveAspectRatio\n */ resize(width) {\n let height = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : width, preserveAspectRatio = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\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 if (preserveAspectRatio) {\n if (typeof preserveAspectRatio === 'string') {\n this.getAttribute('preserveAspectRatio', true).setValue(preserveAspectRatio);\n } else {\n const preserveAspectRatioAttr = this.getAttribute('preserveAspectRatio');\n if (preserveAspectRatioAttr.hasValue()) {\n preserveAspectRatioAttr.setValue(preserveAspectRatioAttr.getString().replace(/^\\s*(\\S.*\\S)\\s*$/, '$1'));\n }\n }\n }\n widthAttr.setValue(width);\n heightAttr.setValue(height);\n if (!viewBoxAttr.hasValue()) {\n viewBoxAttr.setValue(\"0 0 \".concat(originWidth || width, \" \").concat(originHeight || height));\n }\n if (styleAttr.hasValue()) {\n const widthStyle = this.getStyle('width');\n const heightStyle = this.getStyle('height');\n if (widthStyle.hasValue()) {\n widthStyle.setValue(\"\".concat(width, \"px\"));\n }\n if (heightStyle.hasValue()) {\n heightStyle.setValue(\"\".concat(height, \"px\"));\n }\n }\n }\n constructor(...args){\n super(...args);\n this.type = 'svg';\n this.root = false;\n }\n}\n\nclass RectElement extends PathElement {\n path(ctx) {\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 if (rxAttr.hasValue() && !ryAttr.hasValue()) {\n ry = rx;\n }\n if (ryAttr.hasValue() && !rxAttr.hasValue()) {\n rx = ry;\n }\n rx = Math.min(rx, width / 2);\n ry = Math.min(ry, height / 2);\n if (ctx) {\n const KAPPA = 4 * ((Math.sqrt(2) - 1) / 3);\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(x + width, y + height - ry + KAPPA * ry, x + width - rx + KAPPA * rx, y + height, x + width - rx, y + height);\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 return new BoundingBox(x, y, x + width, y + height);\n }\n getMarkers() {\n return null;\n }\n constructor(...args){\n super(...args);\n this.type = 'rect';\n }\n}\n\nclass CircleElement extends PathElement {\n path(ctx) {\n const cx = this.getAttribute('cx').getPixels('x');\n const cy = this.getAttribute('cy').getPixels('y');\n const r = this.getAttribute('r').getPixels();\n if (ctx && r > 0) {\n ctx.beginPath();\n ctx.arc(cx, cy, r, 0, Math.PI * 2, false);\n ctx.closePath();\n }\n return new BoundingBox(cx - r, cy - r, cx + r, cy + r);\n }\n getMarkers() {\n return null;\n }\n constructor(...args){\n super(...args);\n this.type = 'circle';\n }\n}\n\nclass EllipseElement extends PathElement {\n path(ctx) {\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 if (ctx && rx > 0 && ry > 0) {\n ctx.beginPath();\n ctx.moveTo(cx + rx, cy);\n ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry);\n ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy);\n ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry);\n ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy);\n ctx.closePath();\n }\n return new BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry);\n }\n getMarkers() {\n return null;\n }\n constructor(...args){\n super(...args);\n this.type = 'ellipse';\n }\n}\n\nclass LineElement extends PathElement {\n getPoints() {\n return [\n new Point(this.getAttribute('x1').getPixels('x'), this.getAttribute('y1').getPixels('y')),\n new Point(this.getAttribute('x2').getPixels('x'), this.getAttribute('y2').getPixels('y'))\n ];\n }\n path(ctx) {\n const [{ x: x0 , y: y0 }, { x: x1 , y: y1 }] = this.getPoints();\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n ctx.lineTo(x1, y1);\n }\n return new BoundingBox(x0, y0, x1, y1);\n }\n getMarkers() {\n const [p0, p1] = this.getPoints();\n const a = p0.angleTo(p1);\n return [\n [\n p0,\n a\n ],\n [\n p1,\n a\n ]\n ];\n }\n constructor(...args){\n super(...args);\n this.type = 'line';\n }\n}\n\nclass PolylineElement extends PathElement {\n path(ctx) {\n const { points } = this;\n const [{ x: x0 , y: y0 }] = points;\n const boundingBox = new BoundingBox(x0, y0);\n if (ctx) {\n ctx.beginPath();\n ctx.moveTo(x0, y0);\n }\n points.forEach((param)=>{\n let { x , y } = param;\n boundingBox.addPoint(x, y);\n if (ctx) {\n ctx.lineTo(x, y);\n }\n });\n return boundingBox;\n }\n getMarkers() {\n const { points } = this;\n const lastIndex = points.length - 1;\n const markers = [];\n points.forEach((point, i)=>{\n if (i === lastIndex) {\n return;\n }\n markers.push([\n point,\n point.angleTo(points[i + 1])\n ]);\n });\n if (markers.length > 0) {\n markers.push([\n points[points.length - 1],\n markers[markers.length - 1][1]\n ]);\n }\n return markers;\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'polyline';\n this.points = [];\n this.points = Point.parsePath(this.getAttribute('points').getString());\n }\n}\n\nclass PolygonElement extends PolylineElement {\n path(ctx) {\n const boundingBox = super.path(ctx);\n const [{ x , y }] = this.points;\n if (ctx) {\n ctx.lineTo(x, y);\n ctx.closePath();\n }\n return boundingBox;\n }\n constructor(...args){\n super(...args);\n this.type = 'polygon';\n }\n}\n\nclass PatternElement extends Element {\n createPattern(ctx, _, parentOpacityProp) {\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(this.document, null);\n patternSvg.attributes.set('viewBox', new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue()));\n patternSvg.attributes.set('width', new Property(this.document, 'width', \"\".concat(width, \"px\")));\n patternSvg.attributes.set('height', new Property(this.document, 'height', \"\".concat(height, \"px\")));\n patternSvg.attributes.set('transform', new Property(this.document, 'transform', this.getAttribute('patternTransform').getValue()));\n patternSvg.children = this.children;\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 if (xAttr.hasValue() && yAttr.hasValue()) {\n patternCtx.translate(xAttr.getPixels('x', true), yAttr.getPixels('y', true));\n }\n if (parentOpacityProp.hasValue()) {\n this.styles.set('fill-opacity', parentOpacityProp);\n } else {\n this.styles.delete('fill-opacity');\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.set('x', new Property(this.document, 'x', x * patternCanvas.width));\n patternSvg.attributes.set('y', new Property(this.document, 'y', y * patternCanvas.height));\n patternSvg.render(patternCtx);\n patternCtx.restore();\n }\n }\n const pattern = ctx.createPattern(patternCanvas, 'repeat');\n return pattern;\n }\n constructor(...args){\n super(...args);\n this.type = 'pattern';\n }\n}\n\nclass MarkerElement extends Element {\n render(ctx, point, angle) {\n if (!point) {\n return;\n }\n const { x , y } = point;\n const orient = this.getAttribute('orient').getString('auto');\n const markerUnits = this.getAttribute('markerUnits').getString('strokeWidth');\n ctx.translate(x, y);\n if (orient === 'auto') {\n ctx.rotate(angle);\n }\n if (markerUnits === 'strokeWidth') {\n ctx.scale(ctx.lineWidth, ctx.lineWidth);\n }\n ctx.save();\n // render me using a temporary svg element\n const markerSvg = new SVGElement(this.document);\n markerSvg.type = this.type;\n markerSvg.attributes.set('viewBox', new Property(this.document, 'viewBox', this.getAttribute('viewBox').getValue()));\n markerSvg.attributes.set('refX', new Property(this.document, 'refX', this.getAttribute('refX').getValue()));\n markerSvg.attributes.set('refY', new Property(this.document, 'refY', this.getAttribute('refY').getValue()));\n markerSvg.attributes.set('width', new Property(this.document, 'width', this.getAttribute('markerWidth').getValue()));\n markerSvg.attributes.set('height', new Property(this.document, 'height', this.getAttribute('markerHeight').getValue()));\n markerSvg.attributes.set('overflow', new Property(this.document, 'overflow', this.getAttribute('overflow').getValue()));\n markerSvg.attributes.set('fill', new Property(this.document, 'fill', this.getAttribute('fill').getColor('black')));\n markerSvg.attributes.set('stroke', new Property(this.document, 'stroke', this.getAttribute('stroke').getValue('none')));\n markerSvg.children = this.children;\n markerSvg.render(ctx);\n ctx.restore();\n if (markerUnits === 'strokeWidth') {\n ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth);\n }\n if (orient === 'auto') {\n ctx.rotate(-angle);\n }\n ctx.translate(-x, -y);\n }\n constructor(...args){\n super(...args);\n this.type = 'marker';\n }\n}\n\nclass DefsElement extends Element {\n render() {\n // NOOP\n }\n constructor(...args){\n super(...args);\n this.type = 'defs';\n }\n}\n\nclass GElement extends RenderedElement {\n getBoundingBox(ctx) {\n const boundingBox = new BoundingBox();\n this.children.forEach((child)=>{\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\n });\n return boundingBox;\n }\n constructor(...args){\n super(...args);\n this.type = 'g';\n }\n}\n\nclass GradientElement extends Element {\n getGradientUnits() {\n return this.getAttribute('gradientUnits').getString('objectBoundingBox');\n }\n createGradient(ctx, element, parentOpacityProp) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias, consistent-this\n let stopsContainer = this;\n if (this.getHrefAttribute().hasValue()) {\n stopsContainer = this.getHrefAttribute().getDefinition();\n this.inheritStopContainer(stopsContainer);\n }\n const { stops } = stopsContainer;\n const gradient = this.getGradient(ctx, element);\n if (!gradient) {\n return this.addParentOpacity(parentOpacityProp, stops[stops.length - 1].color);\n }\n stops.forEach((stop)=>{\n gradient.addColorStop(stop.offset, this.addParentOpacity(parentOpacityProp, stop.color));\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 rect.attributes.set('x', new Property(document, 'x', -MAX_VIRTUAL_PIXELS / 3));\n rect.attributes.set('y', new Property(document, 'y', -MAX_VIRTUAL_PIXELS / 3));\n rect.attributes.set('width', new Property(document, 'width', MAX_VIRTUAL_PIXELS));\n rect.attributes.set('height', new Property(document, 'height', MAX_VIRTUAL_PIXELS));\n const group = new GElement(document);\n group.attributes.set('transform', new Property(document, 'transform', this.getAttribute('gradientTransform').getValue()));\n group.children = [\n rect\n ];\n const patternSvg = new SVGElement(document);\n patternSvg.attributes.set('x', new Property(document, 'x', 0));\n patternSvg.attributes.set('y', new Property(document, 'y', 0));\n patternSvg.attributes.set('width', new Property(document, 'width', rootView.width));\n patternSvg.attributes.set('height', new Property(document, 'height', rootView.height));\n patternSvg.children = [\n group\n ];\n const patternCanvas = document.createCanvas(rootView.width, rootView.height);\n const patternCtx = patternCanvas.getContext('2d');\n patternCtx.fillStyle = gradient;\n patternSvg.render(patternCtx);\n return patternCtx.createPattern(patternCanvas, 'no-repeat');\n }\n return gradient;\n }\n inheritStopContainer(stopsContainer) {\n this.attributesToInherit.forEach((attributeToInherit)=>{\n if (!this.getAttribute(attributeToInherit).hasValue() && stopsContainer.getAttribute(attributeToInherit).hasValue()) {\n this.getAttribute(attributeToInherit, true).setValue(stopsContainer.getAttribute(attributeToInherit).getValue());\n }\n });\n }\n addParentOpacity(parentOpacityProp, color) {\n if (parentOpacityProp.hasValue()) {\n const colorProp = new Property(this.document, 'color', color);\n return colorProp.addOpacity(parentOpacityProp).getColor();\n }\n return color;\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.attributesToInherit = [\n 'gradientUnits'\n ];\n this.stops = [];\n const { stops , children } = this;\n children.forEach((child)=>{\n if (child.type === 'stop') {\n stops.push(child);\n }\n });\n }\n}\n\nclass LinearGradientElement extends GradientElement {\n getGradient(ctx, element) {\n const isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n const boundingBox = isBoundingBoxUnits ? element.getBoundingBox(ctx) : null;\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n if (!this.getAttribute('x1').hasValue() && !this.getAttribute('y1').hasValue() && !this.getAttribute('x2').hasValue() && !this.getAttribute('y2').hasValue()) {\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 const x1 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x1').getNumber() : this.getAttribute('x1').getPixels('x');\n const y1 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y1').getNumber() : this.getAttribute('y1').getPixels('y');\n const x2 = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('x2').getNumber() : this.getAttribute('x2').getPixels('x');\n const y2 = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('y2').getNumber() : this.getAttribute('y2').getPixels('y');\n if (x1 === x2 && y1 === y2) {\n return null;\n }\n return ctx.createLinearGradient(x1, y1, x2, y2);\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'linearGradient';\n this.attributesToInherit.push('x1', 'y1', 'x2', 'y2');\n }\n}\n\nclass RadialGradientElement extends GradientElement {\n getGradient(ctx, element) {\n const isBoundingBoxUnits = this.getGradientUnits() === 'objectBoundingBox';\n const boundingBox = element.getBoundingBox(ctx);\n if (isBoundingBoxUnits && !boundingBox) {\n return null;\n }\n if (!this.getAttribute('cx').hasValue()) {\n this.getAttribute('cx', true).setValue('50%');\n }\n if (!this.getAttribute('cy').hasValue()) {\n this.getAttribute('cy', true).setValue('50%');\n }\n if (!this.getAttribute('r').hasValue()) {\n this.getAttribute('r', true).setValue('50%');\n }\n const cx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('cx').getNumber() : this.getAttribute('cx').getPixels('x');\n const cy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('cy').getNumber() : this.getAttribute('cy').getPixels('y');\n let fx = cx;\n let fy = cy;\n if (this.getAttribute('fx').hasValue()) {\n fx = isBoundingBoxUnits ? boundingBox.x + boundingBox.width * this.getAttribute('fx').getNumber() : this.getAttribute('fx').getPixels('x');\n }\n if (this.getAttribute('fy').hasValue()) {\n fy = isBoundingBoxUnits ? boundingBox.y + boundingBox.height * this.getAttribute('fy').getNumber() : this.getAttribute('fy').getPixels('y');\n }\n const r = isBoundingBoxUnits ? (boundingBox.width + boundingBox.height) / 2 * this.getAttribute('r').getNumber() : this.getAttribute('r').getPixels();\n const fr = this.getAttribute('fr').getPixels();\n return ctx.createRadialGradient(fx, fy, fr, cx, cy, r);\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'radialGradient';\n this.attributesToInherit.push('cx', 'cy', 'r', 'fx', 'fy', 'fr');\n }\n}\n\nclass StopElement extends Element {\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'stop';\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 if (stopColor.getString() === '') {\n stopColor.setValue('#000');\n }\n if (stopOpacity.hasValue()) {\n stopColor = stopColor.addOpacity(stopOpacity);\n }\n this.offset = offset;\n this.color = stopColor.getColor();\n }\n}\n\nclass AnimateElement extends Element {\n getProperty() {\n const attributeType = this.getAttribute('attributeType').getString();\n const attributeName = this.getAttribute('attributeName').getString();\n if (attributeType === 'CSS') {\n return this.parent.getStyle(attributeName, true);\n }\n return this.parent.getAttribute(attributeName, true);\n }\n calcValue() {\n const { initialUnits } = this;\n const { progress , from , to } = this.getProgress();\n // tween value linearly\n let newValue = from.getNumber() + (to.getNumber() - from.getNumber()) * progress;\n if (initialUnits === '%') {\n newValue *= 100 // numValue() returns 0-1 whereas properties are 0-100\n ;\n }\n return \"\".concat(newValue).concat(initialUnits);\n }\n update(delta) {\n const { parent } = this;\n const prop = this.getProperty();\n // set initial value\n if (!this.initialValue) {\n this.initialValue = prop.getString();\n this.initialUnits = prop.getUnits();\n }\n // if we're past the end time\n if (this.duration > this.maxDuration) {\n const fill = this.getAttribute('fill').getString('remove');\n // loop for indefinitely repeating animations\n if (this.getAttribute('repeatCount').getString() === 'indefinite' || this.getAttribute('repeatDur').getString() === 'indefinite') {\n this.duration = 0;\n } else if (fill === 'freeze' && !this.frozen) {\n this.frozen = true;\n if (parent && prop) {\n parent.animationFrozen = true;\n parent.animationFrozenValue = prop.getString();\n }\n } else if (fill === 'remove' && !this.removed) {\n this.removed = true;\n if (parent && prop) {\n prop.setValue(parent.animationFrozen ? parent.animationFrozenValue : this.initialValue);\n }\n return true;\n }\n return false;\n }\n this.duration += delta;\n // if we're past the begin time\n let updated = false;\n if (this.begin < this.duration) {\n let newValue = this.calcValue() // tween\n ;\n const typeAttr = this.getAttribute('type');\n if (typeAttr.hasValue()) {\n // for transform, etc.\n const type = typeAttr.getString();\n newValue = \"\".concat(type, \"(\").concat(newValue, \")\");\n }\n prop.setValue(newValue);\n updated = true;\n }\n return updated;\n }\n getProgress() {\n const { document , values } = this;\n let progress = (this.duration - this.begin) / (this.maxDuration - this.begin);\n let from;\n let to;\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;\n value = values.getValue()[lb];\n from = new Property(document, 'from', value ? parseFloat(value) : 0);\n value = values.getValue()[ub];\n to = new Property(document, 'to', value ? parseFloat(value) : 0);\n progress = (p - lb) / (ub - lb);\n } else {\n from = this.from;\n to = this.to;\n }\n return {\n progress,\n from,\n to\n };\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'animate';\n this.duration = 0;\n this.initialUnits = '';\n this.removed = false;\n this.frozen = false;\n document.screen.animations.push(this);\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(document, 'values', null);\n const valuesAttr = this.getAttribute('values');\n if (valuesAttr.hasValue()) {\n this.values.setValue(valuesAttr.getString().split(';'));\n }\n }\n}\n\nclass AnimateColorElement extends AnimateElement {\n calcValue() {\n const { progress , from , to } = this.getProgress();\n const colorFrom = new RGBColor(from.getColor());\n const colorTo = new RGBColor(to.getColor());\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 // ? alpha\n return \"rgb(\".concat(Math.floor(r), \", \").concat(Math.floor(g), \", \").concat(Math.floor(b), \")\");\n }\n return this.getAttribute('from').getColor();\n }\n constructor(...args){\n super(...args);\n this.type = 'animateColor';\n }\n}\n\nclass AnimateTransformElement extends AnimateElement {\n calcValue() {\n const { progress , from: from1 , to: to1 } = this.getProgress();\n // tween value linearly\n const transformFrom = toNumbers(from1.getString());\n const transformTo = toNumbers(to1.getString());\n const newValue = transformFrom.map((from, i)=>{\n const to = transformTo[i];\n return from + (to - from) * progress;\n }).join(' ');\n return newValue;\n }\n constructor(...args){\n super(...args);\n this.type = 'animateTransform';\n }\n}\n\nclass FontFaceElement extends Element {\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'font-face';\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\nclass GlyphElement extends PathElement {\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'glyph';\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n this.unicode = this.getAttribute('unicode').getString();\n this.arabicForm = this.getAttribute('arabic-form').getString();\n }\n}\n\nclass MissingGlyphElement extends GlyphElement {\n constructor(...args){\n super(...args);\n this.type = 'missing-glyph';\n this.horizAdvX = 0;\n }\n}\n\nclass FontElement extends Element {\n render() {\n // NO RENDER\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'font';\n this.isArabic = false;\n this.glyphs = new Map();\n this.arabicGlyphs = new Map();\n this.isRTL = false;\n this.horizAdvX = this.getAttribute('horiz-adv-x').getNumber();\n const { definitions } = document;\n const { children } = this;\n for (const child of children){\n if (child instanceof FontFaceElement) {\n this.fontFace = child;\n const fontFamilyStyle = child.getStyle('font-family');\n if (fontFamilyStyle.hasValue()) {\n definitions.set(fontFamilyStyle.getString(), this);\n }\n } else if (child instanceof MissingGlyphElement) {\n this.missingGlyph = child;\n } else if (child instanceof GlyphElement) {\n if (child.arabicForm) {\n this.isRTL = true;\n this.isArabic = true;\n let arabicGlyph = this.arabicGlyphs.get(child.unicode);\n if (typeof arabicGlyph === 'undefined') {\n arabicGlyph = new Map();\n this.arabicGlyphs.set(child.unicode, arabicGlyph);\n }\n arabicGlyph.set(child.arabicForm, child);\n } else {\n this.glyphs.set(child.unicode, child);\n }\n }\n }\n }\n}\n\nclass TRefElement extends TextElement {\n getText() {\n const element = this.getHrefAttribute().getDefinition();\n if (element) {\n const firstChild = element.children[0];\n if (firstChild) {\n return firstChild.getText();\n }\n }\n return '';\n }\n constructor(...args){\n super(...args);\n this.type = 'tref';\n }\n}\n\nclass AElement extends TextElement {\n getText() {\n return this.text;\n }\n renderChildren(ctx) {\n if (this.hasText) {\n // render as text element\n super.renderChildren(ctx);\n const { document , x , y } = this;\n const { mouse } = document.screen;\n const fontSize = new Property(document, 'fontSize', Font.parse(document.ctx.font).fontSize);\n // Do not calc bounding box if mouse is not working.\n if (mouse.isWorking()) {\n mouse.checkBoundingBox(this, new BoundingBox(x, y - fontSize.getPixels('y'), x + this.measureText(ctx), y));\n }\n } else if (this.children.length > 0) {\n // render as temporary group\n const g = new GElement(this.document);\n g.children = this.children;\n g.parent = this;\n g.render(ctx);\n }\n }\n onClick() {\n const { window } = this.document;\n if (window) {\n window.open(this.getHrefAttribute().getString());\n }\n }\n onMouseMove() {\n const ctx = this.document.ctx;\n ctx.canvas.style.cursor = 'pointer';\n }\n constructor(document, node1, captureTextNodes){\n super(document, node1, captureTextNodes);\n this.type = 'a';\n const { childNodes } = node1;\n const firstChild = childNodes[0];\n const hasText = childNodes.length > 0 && Array.from(childNodes).every((node)=>node.nodeType === 3\n );\n this.hasText = hasText;\n this.text = hasText ? this.getTextFromNode(firstChild) : '';\n }\n}\n\nclass TextPathElement extends TextElement {\n getText() {\n return this.text;\n }\n path(ctx) {\n const { dataArray } = this;\n if (ctx) {\n ctx.beginPath();\n }\n dataArray.forEach((param)=>{\n let { type , points } = param;\n switch(type){\n case PathParser.LINE_TO:\n if (ctx) {\n ctx.lineTo(points[0], points[1]);\n }\n break;\n case PathParser.MOVE_TO:\n if (ctx) {\n ctx.moveTo(points[0], points[1]);\n }\n break;\n case PathParser.CURVE_TO:\n if (ctx) {\n ctx.bezierCurveTo(points[0], points[1], points[2], points[3], points[4], points[5]);\n }\n break;\n case PathParser.QUAD_TO:\n if (ctx) {\n ctx.quadraticCurveTo(points[0], points[1], points[2], points[3]);\n }\n break;\n case PathParser.ARC:\n {\n const [cx, cy, rx, ry, theta, dTheta, psi, fs] = 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 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 break;\n }\n case PathParser.CLOSE_PATH:\n if (ctx) {\n ctx.closePath();\n }\n break;\n }\n });\n }\n renderChildren(ctx) {\n this.setTextData(ctx);\n ctx.save();\n const textDecoration = this.parent.getStyle('text-decoration').getString();\n const fontSize = this.getFontSize();\n const { glyphInfo } = this;\n const fill = ctx.fillStyle;\n if (textDecoration === 'underline') {\n ctx.beginPath();\n }\n glyphInfo.forEach((glyph, i)=>{\n const { p0 , p1 , rotation , text: partialText } = glyph;\n ctx.save();\n ctx.translate(p0.x, p0.y);\n ctx.rotate(rotation);\n if (ctx.fillStyle) {\n ctx.fillText(partialText, 0, 0);\n }\n if (ctx.strokeStyle) {\n ctx.strokeText(partialText, 0, 0);\n }\n ctx.restore();\n if (textDecoration === 'underline') {\n if (i === 0) {\n ctx.moveTo(p0.x, p0.y + fontSize / 8);\n }\n ctx.lineTo(p1.x, p1.y + fontSize / 5);\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 if (textDecoration === 'underline') {\n ctx.lineWidth = fontSize / 20;\n ctx.strokeStyle = fill;\n ctx.stroke();\n ctx.closePath();\n }\n ctx.restore();\n }\n getLetterSpacingAt() {\n let idx = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;\n return this.letterSpacingCache[idx] || 0;\n }\n findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, inputOffset, dy, c, charI) {\n let offset = inputOffset;\n let glyphWidth = this.measureText(ctx, c);\n if (c === ' ' && anchor === 'justify' && textFullWidth < fullPathWidth) {\n glyphWidth += (fullPathWidth - textFullWidth) / spacesNumber;\n }\n if (charI > -1) {\n offset += this.getLetterSpacingAt(charI);\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 ? Math.atan2(p1.y - p0.y, p1.x - p0.x) : 0;\n if (dy) {\n const dyX = Math.cos(Math.PI / 2 + rotation) * dy;\n const dyY = Math.cos(-rotation) * dy;\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 offset += glyphWidth;\n return {\n offset,\n segment,\n rotation\n };\n }\n measureText(ctx, text) {\n const { measuresCache } = this;\n const targetText = text || this.getText();\n if (measuresCache.has(targetText)) {\n return measuresCache.get(targetText);\n }\n const measure = this.measureTargetText(ctx, targetText);\n measuresCache.set(targetText, measure);\n return measure;\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 setTextData(ctx) {\n if (this.glyphInfo) {\n return;\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 );\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 if (!thisSpacing.hasValue() || thisSpacing.getValue() === 'inherit') {\n letterSpacing = parentSpacing.getPixels();\n } else if (thisSpacing.hasValue()) {\n if (thisSpacing.getValue() !== 'initial' && thisSpacing.getValue() !== 'unset') {\n letterSpacing = thisSpacing.getPixels();\n }\n }\n // fill letter-spacing cache\n const letterSpacingCache = [];\n const textLen = renderText.length;\n this.letterSpacingCache = letterSpacingCache;\n for(let i1 = 0; i1 < textLen; i1++){\n letterSpacingCache.push(typeof dx[i1] !== 'undefined' ? dx[i1] : letterSpacing);\n }\n const dxSum = letterSpacingCache.reduce((acc, cur, i)=>i === 0 ? 0 : acc + cur || 0\n , 0);\n const textWidth = this.measureText(ctx);\n const textFullWidth = Math.max(textWidth + dxSum, 0);\n this.textWidth = textWidth;\n this.textHeight = this.getFontSize();\n this.glyphInfo = [];\n const fullPathWidth = this.getPathLength();\n const startOffset = this.getStyle('startOffset').getNumber(0) * fullPathWidth;\n let offset = 0;\n if (anchor === 'middle' || anchor === 'center') {\n offset = -textFullWidth / 2;\n }\n if (anchor === 'end' || anchor === 'right') {\n offset = -textFullWidth;\n }\n offset += startOffset;\n chars.forEach((char, i)=>{\n // Find such segment what distance between p0 and p1 is approx. width of glyph\n const { offset: nextOffset , segment , rotation } = this.findSegmentToFitChar(ctx, anchor, textFullWidth, fullPathWidth, spacesNumber, offset, dy, char, i);\n offset = nextOffset;\n if (!segment.p0 || !segment.p1) {\n return;\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 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 parsePathData(path) {\n this.pathLength = -1 // reset path length\n ;\n if (!path) {\n return [];\n }\n const pathCommands = [];\n const { pathParser } = path;\n pathParser.reset();\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 = command.type;\n let points = [];\n switch(command.type){\n case PathParser.MOVE_TO:\n this.pathM(pathParser, points);\n break;\n case PathParser.LINE_TO:\n nextCommandType = this.pathL(pathParser, points);\n break;\n case PathParser.HORIZ_LINE_TO:\n nextCommandType = this.pathH(pathParser, points);\n break;\n case PathParser.VERT_LINE_TO:\n nextCommandType = this.pathV(pathParser, points);\n break;\n case PathParser.CURVE_TO:\n this.pathC(pathParser, points);\n break;\n case PathParser.SMOOTH_CURVE_TO:\n nextCommandType = this.pathS(pathParser, points);\n break;\n case PathParser.QUAD_TO:\n this.pathQ(pathParser, points);\n break;\n case PathParser.SMOOTH_QUAD_TO:\n nextCommandType = this.pathT(pathParser, points);\n break;\n case PathParser.ARC:\n points = this.pathA(pathParser);\n break;\n case PathParser.CLOSE_PATH:\n PathElement.pathZ(pathParser);\n break;\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 return pathCommands;\n }\n pathM(pathParser, points) {\n const { x , y } = PathElement.pathM(pathParser).point;\n points.push(x, y);\n }\n pathL(pathParser, points) {\n const { x , y } = PathElement.pathL(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n pathH(pathParser, points) {\n const { x , y } = PathElement.pathH(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n pathV(pathParser, points) {\n const { x , y } = PathElement.pathV(pathParser).point;\n points.push(x, y);\n return PathParser.LINE_TO;\n }\n pathC(pathParser, points) {\n const { point , controlPoint , currentPoint } = PathElement.pathC(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n pathS(pathParser, points) {\n const { point , controlPoint , currentPoint } = PathElement.pathS(pathParser);\n points.push(point.x, point.y, controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.CURVE_TO;\n }\n pathQ(pathParser, points) {\n const { controlPoint , currentPoint } = PathElement.pathQ(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n }\n pathT(pathParser, points) {\n const { controlPoint , currentPoint } = PathElement.pathT(pathParser);\n points.push(controlPoint.x, controlPoint.y, currentPoint.x, currentPoint.y);\n return PathParser.QUAD_TO;\n }\n pathA(pathParser) {\n let { rX , rY , sweepFlag , xAxisRotation , centp , a1 , ad } = PathElement.pathA(pathParser);\n if (sweepFlag === 0 && ad > 0) {\n ad -= 2 * Math.PI;\n }\n if (sweepFlag === 1 && ad < 0) {\n ad += 2 * Math.PI;\n }\n return [\n centp.x,\n centp.y,\n rX,\n rY,\n a1,\n ad,\n xAxisRotation,\n sweepFlag\n ];\n }\n calcLength(x, y, commandType, points) {\n let len = 0;\n let p1 = null;\n let p2 = null;\n let t = 0;\n switch(commandType){\n case PathParser.LINE_TO:\n return this.getLineLength(x, y, points[0], points[1]);\n case PathParser.CURVE_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0;\n p1 = this.getPointOnCubicBezier(0, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n for(t = 0.01; t <= 1; t += 0.01){\n p2 = this.getPointOnCubicBezier(t, x, y, points[0], points[1], points[2], points[3], points[4], points[5]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n return len;\n case PathParser.QUAD_TO:\n // Approximates by breaking curve into 100 line segments\n len = 0;\n p1 = this.getPointOnQuadraticBezier(0, x, y, points[0], points[1], points[2], points[3]);\n for(t = 0.01; t <= 1; t += 0.01){\n p2 = this.getPointOnQuadraticBezier(t, x, y, points[0], points[1], points[2], points[3]);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n return len;\n case PathParser.ARC:\n {\n // Approximates by breaking curve into line segments\n len = 0;\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;\n // 1 degree resolution\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n // Note: for purpose of calculating arc length, not going to worry about rotating X-axis by angle psi\n p1 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n if (dTheta < 0) {\n for(t = start - inc; t > end; t -= inc){\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n } else {\n for(t = start + inc; t < end; t += inc){\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n p2 = this.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += this.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n }\n return 0;\n }\n getPointOnLine(dist, p1x, p1y, p2x, p2y) {\n let fromX = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : p1x, fromY = arguments.length > 6 && arguments[6] !== void 0 ? arguments[6] : p1y;\n const m = (p2y - p1y) / (p2x - p1x + PSEUDO_ZERO);\n let run = Math.sqrt(dist * dist / (1 + m * m));\n if (p2x < p1x) {\n run *= -1;\n }\n let rise = m * run;\n let pt = null;\n if (p2x === p1x) {\n pt = {\n x: fromX,\n y: fromY + rise\n };\n } else 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 if (len < PSEUDO_ZERO) {\n return null;\n }\n let u = (fromX - p1x) * (p2x - p1x) + (fromY - p1y) * (p2y - p1y);\n u /= len * len;\n ix = p1x + u * (p2x - p1x);\n iy = p1y + u * (p2y - p1y);\n const pRise = this.getLineLength(fromX, fromY, ix, iy);\n const pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt(pRun * pRun / (1 + m * m));\n if (p2x < p1x) {\n run *= -1;\n }\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise\n };\n }\n return pt;\n }\n getPointOnPath(distance) {\n const fullLen = this.getPathLength();\n let cumulativePathLength = 0;\n let p = null;\n if (distance < -0.00005 || distance - 0.00005 > fullLen) {\n return null;\n }\n const { dataArray } = this;\n for (const command of dataArray){\n if (command && (command.pathLength < 0.00005 || cumulativePathLength + command.pathLength + 0.00005 < distance)) {\n cumulativePathLength += command.pathLength;\n continue;\n }\n const delta = distance - cumulativePathLength;\n let currentT = 0;\n switch(command.type){\n case PathParser.LINE_TO:\n p = this.getPointOnLine(delta, command.start.x, command.start.y, command.points[0], command.points[1], command.start.x, command.start.y);\n break;\n case PathParser.ARC:\n {\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 currentT = start + delta / command.pathLength * dTheta;\n if (dTheta < 0 && currentT < end || dTheta >= 0 && currentT > end) {\n break;\n }\n p = this.getPointOnEllipticalArc(command.points[0], command.points[1], command.points[2], command.points[3], currentT, command.points[6]);\n break;\n }\n case PathParser.CURVE_TO:\n currentT = delta / command.pathLength;\n if (currentT > 1) {\n currentT = 1;\n }\n p = this.getPointOnCubicBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3], command.points[4], command.points[5]);\n break;\n case PathParser.QUAD_TO:\n currentT = delta / command.pathLength;\n if (currentT > 1) {\n currentT = 1;\n }\n p = this.getPointOnQuadraticBezier(currentT, command.start.x, command.start.y, command.points[0], command.points[1], command.points[2], command.points[3]);\n break;\n }\n if (p) {\n return p;\n }\n break;\n }\n return null;\n }\n getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n getPathLength() {\n if (this.pathLength === -1) {\n this.pathLength = this.dataArray.reduce((length, command)=>command.pathLength > 0 ? length + command.pathLength : length\n , 0);\n }\n return this.pathLength;\n }\n getPointOnCubicBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\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 return {\n x,\n y\n };\n }\n getPointOnQuadraticBezier(pct, p1x, p1y, p2x, p2y, p3x, p3y) {\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 return {\n x,\n y\n };\n }\n getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\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 return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi)\n };\n }\n // TODO need some optimisations. possibly build cache only for curved segments?\n buildEquidistantCache(inputStep, inputPrecision) {\n const fullLen = this.getPathLength();\n const precision = inputPrecision || 0.25 // accuracy vs performance\n ;\n const step = inputStep || fullLen / 100;\n if (!this.equidistantCache || this.equidistantCache.step !== step || this.equidistantCache.precision !== precision) {\n // Prepare cache\n this.equidistantCache = {\n step,\n precision,\n points: []\n };\n // Calculate points\n let s = 0;\n for(let l = 0; l <= fullLen; l += precision){\n const p0 = this.getPointOnPath(l);\n const p1 = this.getPointOnPath(l + precision);\n if (!p0 || !p1) {\n continue;\n }\n s += this.getLineLength(p0.x, p0.y, p1.x, p1.y);\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 getEquidistantPointOnPath(targetDistance, step, precision) {\n this.buildEquidistantCache(step, precision);\n if (targetDistance < 0 || targetDistance - this.getPathLength() > 0.00005) {\n return null;\n }\n const idx = Math.round(targetDistance / this.getPathLength() * (this.equidistantCache.points.length - 1));\n return this.equidistantCache.points[idx] || null;\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'textPath';\n this.textWidth = 0;\n this.textHeight = 0;\n this.pathLength = -1;\n this.glyphInfo = null;\n this.letterSpacingCache = [];\n this.measuresCache = new Map([\n [\n '',\n 0\n ]\n ]);\n const pathElement = this.getHrefAttribute().getDefinition();\n this.text = this.getTextFromNode();\n this.dataArray = this.parsePathData(pathElement);\n }\n}\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;\nclass ImageElement extends RenderedElement {\n async loadImage(href) {\n try {\n const image = await this.document.createImage(href);\n this.image = image;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n this.loaded = true;\n }\n async loadSvg(href) {\n const match = dataUriRegex.exec(href);\n if (match) {\n const data = match[5];\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 this.image = svg;\n } catch (err) {\n console.error(\"Error while loading image \\\"\".concat(href, \"\\\":\"), err);\n }\n }\n this.loaded = true;\n }\n renderChildren(ctx) {\n const { document , image , loaded } = 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 if (!loaded || !image || !width || !height) {\n return;\n }\n ctx.save();\n ctx.translate(x, y);\n if (typeof image === 'string') {\n const subDocument = document.canvg.forkString(ctx, image, {\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 const { documentElement } = subDocument.document;\n if (documentElement) {\n documentElement.parent = this;\n }\n void subDocument.render();\n } else {\n document.setViewBox({\n ctx,\n aspectRatio: this.getAttribute('preserveAspectRatio').getString(),\n width,\n desiredWidth: image.width,\n height,\n desiredHeight: image.height\n });\n if (this.loaded) {\n if (!('complete' in image) || image.complete) {\n ctx.drawImage(image, 0, 0);\n }\n }\n }\n ctx.restore();\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 return new BoundingBox(x, y, x + width, y + height);\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'image';\n this.loaded = false;\n const href = this.getHrefAttribute().getString();\n if (!href) {\n return;\n }\n const isSvg = href.endsWith('.svg') || /^\\s*data:image\\/svg\\+xml/i.test(href);\n document.images.push(this);\n if (!isSvg) {\n void this.loadImage(href);\n } else {\n void this.loadSvg(href);\n }\n }\n}\n\nclass SymbolElement extends RenderedElement {\n render(_) {\n // NO RENDER\n }\n constructor(...args){\n super(...args);\n this.type = 'symbol';\n }\n}\n\nclass SVGFontLoader {\n async load(fontFamily, url) {\n try {\n const { document } = this;\n const svgDocument = await document.canvg.parser.load(url);\n const fonts = svgDocument.getElementsByTagName('font');\n Array.from(fonts).forEach((fontNode)=>{\n const font = document.createElement(fontNode);\n document.definitions.set(fontFamily, font);\n });\n } catch (err) {\n console.error(\"Error while loading font \\\"\".concat(url, \"\\\":\"), err);\n }\n this.loaded = true;\n }\n constructor(document){\n this.document = document;\n this.loaded = false;\n document.fonts.push(this);\n }\n}\n\nclass StyleElement extends Element {\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'style';\n const css = compressSpaces(Array.from(node.childNodes)// NEED TEST\n .map((_)=>_.textContent\n ).join('').replace(/(\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*+\\/)|(^[\\s]*\\/\\/.*)/gm, '') // remove comments\n .replace(/@import.*;/g, '') // remove imports\n );\n const cssDefs = css.split('}');\n cssDefs.forEach((_1)=>{\n const def = _1.trim();\n if (!def) {\n return;\n }\n const cssParts = def.split('{');\n const cssClasses = cssParts[0].split(',');\n const cssProps = cssParts[1].split(';');\n cssClasses.forEach((_)=>{\n const cssClass = _.trim();\n if (!cssClass) {\n return;\n }\n const props = document.styles.get(cssClass) || new Map();\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 if (name && value) {\n props.set(name, new Property(document, name, value));\n }\n });\n document.styles.set(cssClass, props);\n document.stylesSpecificity.set(cssClass, getSelectorSpecificity(cssClass));\n if (cssClass === '@font-face') {\n const fontFamily = props.get('font-family').getString().replace(/\"|'/g, '');\n const srcs = props.get('src').getString().split(',');\n srcs.forEach((src)=>{\n if (src.indexOf('format(\"svg\")') > 0) {\n const url = parseExternalUrl(src);\n if (url) {\n void new SVGFontLoader(document).load(fontFamily, url);\n }\n }\n });\n }\n });\n });\n }\n}\nStyleElement.parseExternalUrl = parseExternalUrl;\n\nclass UseElement extends RenderedElement {\n setContext(ctx) {\n super.setContext(ctx);\n const xAttr = this.getAttribute('x');\n const yAttr = this.getAttribute('y');\n if (xAttr.hasValue()) {\n ctx.translate(xAttr.getPixels('x'), 0);\n }\n if (yAttr.hasValue()) {\n ctx.translate(0, yAttr.getPixels('y'));\n }\n }\n path(ctx) {\n const { element } = this;\n if (element) {\n element.path(ctx);\n }\n }\n renderChildren(ctx) {\n const { document , element } = this;\n if (element) {\n let tempSvg = element;\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.set('viewBox', new Property(document, 'viewBox', element.getAttribute('viewBox').getString()));\n tempSvg.attributes.set('preserveAspectRatio', new Property(document, 'preserveAspectRatio', element.getAttribute('preserveAspectRatio').getString()));\n tempSvg.attributes.set('overflow', new Property(document, 'overflow', element.getAttribute('overflow').getString()));\n tempSvg.children = element.children;\n // element is still the parent of the children\n element.styles.set('opacity', new Property(document, 'opacity', this.calculateOpacity()));\n }\n if (tempSvg.type === 'svg') {\n const widthStyle = this.getStyle('width', false, true);\n const heightStyle = this.getStyle('height', false, true);\n // if symbol or svg, inherit width/height from me\n if (widthStyle.hasValue()) {\n tempSvg.attributes.set('width', new Property(document, 'width', widthStyle.getString()));\n }\n if (heightStyle.hasValue()) {\n tempSvg.attributes.set('height', new Property(document, 'height', heightStyle.getString()));\n }\n }\n const oldParent = tempSvg.parent;\n tempSvg.parent = this;\n tempSvg.render(ctx);\n tempSvg.parent = oldParent;\n }\n }\n getBoundingBox(ctx) {\n const { element } = this;\n if (element) {\n return element.getBoundingBox(ctx);\n }\n return null;\n }\n elementTransform() {\n const { document , element } = this;\n if (!element) {\n return null;\n }\n return Transform.fromElement(document, element);\n }\n get element() {\n if (!this.cachedElement) {\n this.cachedElement = this.getHrefAttribute().getDefinition();\n }\n return this.cachedElement;\n }\n constructor(...args){\n super(...args);\n this.type = 'use';\n }\n}\n\nfunction imGet(img, x, y, width, _height, rgba) {\n return img[y * width * 4 + x * 4 + rgba];\n}\nfunction imSet(img, x, y, width, _height, rgba, val) {\n img[y * width * 4 + x * 4 + rgba] = val;\n}\nfunction m(matrix, i, v) {\n const mi = matrix[i];\n return mi * v;\n}\nfunction c(a, m1, m2, m3) {\n return m1 + Math.cos(a) * m2 + Math.sin(a) * m3;\n}\nclass FeColorMatrixElement extends Element {\n apply(ctx, _x, _y, width, height) {\n // assuming x==0 && y==0 for now\n const { includeOpacity , matrix } = this;\n const srcData = ctx.getImageData(0, 0, width, height);\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 if (includeOpacity) {\n nr = 0;\n ng = 0;\n nb = 0;\n na *= a / 255;\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 ctx.clearRect(0, 0, width, height);\n ctx.putImageData(srcData, 0, 0);\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'feColorMatrix';\n let matrix = toNumbers(this.getAttribute('values').getString());\n switch(this.getAttribute('type').getString('matrix')){\n case 'saturate':\n {\n const s = matrix[0];\n /* eslint-disable array-element-newline */ matrix = [\n 0.213 + 0.787 * s,\n 0.715 - 0.715 * s,\n 0.072 - 0.072 * s,\n 0,\n 0,\n 0.213 - 0.213 * s,\n 0.715 + 0.285 * s,\n 0.072 - 0.072 * s,\n 0,\n 0,\n 0.213 - 0.213 * s,\n 0.715 - 0.715 * s,\n 0.072 + 0.928 * s,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n break;\n }\n case 'hueRotate':\n {\n const a = matrix[0] * Math.PI / 180;\n /* eslint-disable array-element-newline */ matrix = [\n c(a, 0.213, 0.787, -0.213),\n c(a, 0.715, -0.715, -0.715),\n c(a, 0.072, -0.072, 0.928),\n 0,\n 0,\n c(a, 0.213, -0.213, 0.143),\n c(a, 0.715, 0.285, 0.14),\n c(a, 0.072, -0.072, -0.283),\n 0,\n 0,\n c(a, 0.213, -0.213, -0.787),\n c(a, 0.715, -0.715, 0.715),\n c(a, 0.072, 0.928, 0.072),\n 0,\n 0,\n 0,\n 0,\n 0,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n break;\n }\n case 'luminanceToAlpha':\n /* eslint-disable array-element-newline */ matrix = [\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0.2125,\n 0.7154,\n 0.0721,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 1\n ];\n break;\n }\n this.matrix = matrix;\n this.includeOpacity = this.getAttribute('includeOpacity').hasValue();\n }\n}\n\nclass MaskElement extends Element {\n apply(ctx, 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 if (!width && !height) {\n const boundingBox = new BoundingBox();\n this.children.forEach((child)=>{\n boundingBox.addBoundingBox(child.getBoundingBox(ctx));\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 const ignoredStyles = this.removeStyles(element, MaskElement.ignoreStyles);\n const maskCanvas = document.createCanvas(x + width, y + height);\n const maskCtx = maskCanvas.getContext('2d');\n document.screen.setDefaults(maskCtx);\n this.renderChildren(maskCtx);\n // convert mask to alpha with a fake node\n // TODO: refactor out apply from feColorMatrix\n new FeColorMatrixElement(document, {\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 }).apply(maskCtx, 0, 0, x + width, y + height);\n const tmpCanvas = document.createCanvas(x + width, y + height);\n const tmpCtx = tmpCanvas.getContext('2d');\n document.screen.setDefaults(tmpCtx);\n element.render(tmpCtx);\n tmpCtx.globalCompositeOperation = 'destination-in';\n tmpCtx.fillStyle = maskCtx.createPattern(maskCanvas, 'no-repeat');\n tmpCtx.fillRect(0, 0, x + width, y + height);\n ctx.fillStyle = tmpCtx.createPattern(tmpCanvas, 'no-repeat');\n ctx.fillRect(0, 0, x + width, y + height);\n // reassign mask\n this.restoreStyles(element, ignoredStyles);\n }\n render(_) {\n // NO RENDER\n }\n constructor(...args){\n super(...args);\n this.type = 'mask';\n }\n}\nMaskElement.ignoreStyles = [\n 'mask',\n 'transform',\n 'clip-path'\n];\n\nconst noop = ()=>{\n// NOOP\n};\nclass ClipPathElement extends Element {\n apply(ctx) {\n const { document } = this;\n const contextProto = Reflect.getPrototypeOf(ctx);\n const { beginPath , closePath } = ctx;\n if (contextProto) {\n contextProto.beginPath = noop;\n contextProto.closePath = noop;\n }\n Reflect.apply(beginPath, ctx, []);\n this.children.forEach((child)=>{\n if (!('path' in child)) {\n return;\n }\n let transform = 'elementTransform' in child ? child.elementTransform() : null // handle <use />\n ;\n if (!transform) {\n transform = Transform.fromElement(document, child);\n }\n if (transform) {\n transform.apply(ctx);\n }\n child.path(ctx);\n if (contextProto) {\n contextProto.closePath = closePath;\n }\n if (transform) {\n transform.unapply(ctx);\n }\n });\n Reflect.apply(closePath, ctx, []);\n ctx.clip();\n if (contextProto) {\n contextProto.beginPath = beginPath;\n contextProto.closePath = closePath;\n }\n }\n render(_) {\n // NO RENDER\n }\n constructor(...args){\n super(...args);\n this.type = 'clipPath';\n }\n}\n\nclass FilterElement extends Element {\n apply(ctx, element) {\n // render as temp svg\n const { document , children } = this;\n const boundingBox = 'getBoundingBox' in element ? element.getBoundingBox(ctx) : null;\n if (!boundingBox) {\n return;\n }\n let px = 0;\n let py = 0;\n children.forEach((child)=>{\n const efd = child.extraFilterDistance || 0;\n px = Math.max(px, efd);\n py = Math.max(py, efd);\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 if (tmpCanvasWidth < 1 || tmpCanvasHeight < 1) {\n return;\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 document.screen.setDefaults(tmpCtx);\n tmpCtx.translate(-x + px, -y + py);\n element.render(tmpCtx);\n // apply filters\n children.forEach((child)=>{\n if (typeof child.apply === 'function') {\n child.apply(tmpCtx, 0, 0, tmpCanvasWidth, tmpCanvasHeight);\n }\n });\n // render on me\n ctx.drawImage(tmpCanvas, 0, 0, tmpCanvasWidth, tmpCanvasHeight, x - px, y - py, tmpCanvasWidth, tmpCanvasHeight);\n this.restoreStyles(element, ignoredStyles);\n }\n render(_) {\n // NO RENDER\n }\n constructor(...args){\n super(...args);\n this.type = 'filter';\n }\n}\nFilterElement.ignoreStyles = [\n 'filter',\n 'transform',\n 'clip-path'\n];\n\nclass FeDropShadowElement extends Element {\n apply(_, _x, _y, _width, _height) {\n // TODO: implement\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'feDropShadow';\n this.addStylesFromStyleDefinition();\n }\n}\n\nclass FeMorphologyElement extends Element {\n apply(_, _x, _y, _width, _height) {\n // TODO: implement\n }\n constructor(...args){\n super(...args);\n this.type = 'feMorphology';\n }\n}\n\nclass FeCompositeElement extends Element {\n apply(_, _x, _y, _width, _height) {\n // TODO: implement\n }\n constructor(...args){\n super(...args);\n this.type = 'feComposite';\n }\n}\n\nclass FeGaussianBlurElement extends Element {\n apply(ctx, x, y, width, height) {\n const { document , blurRadius } = this;\n const body = document.window ? document.window.document.body : null;\n const canvas = ctx.canvas;\n // StackBlur requires canvas be on document\n canvas.id = document.getUniqueId();\n if (body) {\n canvas.style.display = 'none';\n body.appendChild(canvas);\n }\n canvasRGBA(canvas, x, y, width, height, blurRadius);\n if (body) {\n body.removeChild(canvas);\n }\n }\n constructor(document, node, captureTextNodes){\n super(document, node, captureTextNodes);\n this.type = 'feGaussianBlur';\n this.blurRadius = Math.floor(this.getAttribute('stdDeviation').getNumber());\n this.extraFilterDistance = this.blurRadius;\n }\n}\n\nclass TitleElement extends Element {\n constructor(...args){\n super(...args);\n this.type = 'title';\n }\n}\n\nclass DescElement extends Element {\n constructor(...args){\n super(...args);\n this.type = 'desc';\n }\n}\n\nconst 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\nfunction createCanvas(width, height) {\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\nasync function createImage(src) {\n let anonymousCrossOrigin = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n const image = document.createElement('img');\n if (anonymousCrossOrigin) {\n image.crossOrigin = 'Anonymous';\n }\n return new Promise((resolve, reject)=>{\n image.onload = ()=>{\n resolve(image);\n };\n image.onerror = (_event, _source, _lineno, _colno, error)=>{\n reject(error);\n };\n image.src = src;\n });\n}\nconst DEFAULT_EM_SIZE = 12;\nclass Document {\n bindCreateImage(createImage1, anonymousCrossOrigin) {\n if (typeof anonymousCrossOrigin === 'boolean') {\n return (source, forceAnonymousCrossOrigin)=>createImage1(source, typeof forceAnonymousCrossOrigin === 'boolean' ? forceAnonymousCrossOrigin : anonymousCrossOrigin)\n ;\n }\n return createImage1;\n }\n get window() {\n return this.screen.window;\n }\n get fetch() {\n return this.screen.fetch;\n }\n get ctx() {\n return this.screen.ctx;\n }\n get emSize() {\n const { emSizeStack } = this;\n return emSizeStack[emSizeStack.length - 1] || DEFAULT_EM_SIZE;\n }\n set emSize(value) {\n const { emSizeStack } = this;\n emSizeStack.push(value);\n }\n popEmSize() {\n const { emSizeStack } = this;\n emSizeStack.pop();\n }\n getUniqueId() {\n return \"canvg\".concat(++this.uniqueId);\n }\n isImagesLoaded() {\n return this.images.every((_)=>_.loaded\n );\n }\n isFontsLoaded() {\n return this.fonts.every((_)=>_.loaded\n );\n }\n createDocumentElement(document) {\n const documentElement = this.createElement(document.documentElement);\n documentElement.root = true;\n documentElement.addStylesFromStyleDefinition();\n this.documentElement = documentElement;\n return documentElement;\n }\n createElement(node) {\n const elementType = node.nodeName.replace(/^[^:]+:/, '');\n const ElementType = Document.elementTypes[elementType];\n if (ElementType) {\n return new ElementType(this, node);\n }\n return new UnknownElement(this, node);\n }\n createTextNode(node) {\n return new TextNode(this, node);\n }\n setViewBox(config) {\n this.screen.setViewBox({\n document: this,\n ...config\n });\n }\n constructor(canvg, { rootEmSize =DEFAULT_EM_SIZE , emSize =DEFAULT_EM_SIZE , createCanvas: createCanvas1 = Document.createCanvas , createImage: createImage2 = Document.createImage , anonymousCrossOrigin } = {}){\n this.canvg = canvg;\n this.definitions = new Map();\n this.styles = new Map();\n this.stylesSpecificity = new Map();\n this.images = [];\n this.fonts = [];\n this.emSizeStack = [];\n this.uniqueId = 0;\n this.screen = canvg.screen;\n this.rootEmSize = rootEmSize;\n this.emSize = emSize;\n this.createCanvas = createCanvas1;\n this.createImage = this.bindCreateImage(createImage2, anonymousCrossOrigin);\n this.screen.wait(()=>this.isImagesLoaded()\n );\n this.screen.wait(()=>this.isFontsLoaded()\n );\n }\n}\nDocument.createCanvas = createCanvas;\nDocument.createImage = createImage;\nDocument.elementTypes = elements;\n\n/**\n * SVG renderer on canvas.\n */ 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 */ static async from(ctx, svg) {\n let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n const parser = new Parser(options);\n const svgDocument = await parser.parse(svg);\n return new Canvg(ctx, svgDocument, options);\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 */ static fromString(ctx, svg) {\n let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n const parser = new Parser(options);\n const svgDocument = parser.parseFromString(svg);\n return new Canvg(ctx, svgDocument, options);\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 */ fork(ctx, svg) {\n let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return Canvg.from(ctx, svg, {\n ...this.options,\n ...options\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 */ forkString(ctx, svg) {\n let options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n return Canvg.fromString(ctx, svg, {\n ...this.options,\n ...options\n });\n }\n /**\n * Document is ready promise.\n * @returns Ready promise.\n */ ready() {\n return this.screen.ready();\n }\n /**\n * Document is ready value.\n * @returns Is ready or not.\n */ isReady() {\n return this.screen.isReady();\n }\n /**\n * Render only first frame, ignoring animations and mouse.\n * @param options - Rendering options.\n */ async render() {\n let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n this.start({\n enableRedraw: true,\n ignoreAnimation: true,\n ignoreMouse: true,\n ...options\n });\n await this.ready();\n this.stop();\n }\n /**\n * Start rendering.\n * @param options - Render options.\n */ start() {\n let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n const { documentElement , screen , options: baseOptions } = this;\n screen.start(documentElement, {\n enableRedraw: true,\n ...baseOptions,\n ...options\n });\n }\n /**\n * Stop rendering.\n */ stop() {\n this.screen.stop();\n }\n /**\n * Resize SVG to fit in given size.\n * @param width\n * @param height\n * @param preserveAspectRatio\n */ resize(width) {\n let height = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : width, preserveAspectRatio = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n this.documentElement.resize(width, height, preserveAspectRatio);\n }\n /**\n * Main constructor.\n * @param ctx - Rendering context.\n * @param svg - SVG Document.\n * @param options - Rendering options.\n */ constructor(ctx, svg, options = {}){\n this.parser = new Parser(options);\n this.screen = new Screen(ctx, options);\n this.options = options;\n const document = new Document(this, options);\n const documentElement = document.createDocumentElement(svg);\n this.document = document;\n this.documentElement = documentElement;\n }\n}\n\nexport { AElement, AnimateColorElement, AnimateElement, AnimateTransformElement, BoundingBox, CB1, CB2, CB3, CB4, Canvg, CircleElement, ClipPathElement, DefsElement, DescElement, Document, Element, EllipseElement, FeColorMatrixElement, FeCompositeElement, FeDropShadowElement, FeGaussianBlurElement, FeMorphologyElement, FilterElement, Font, FontElement, FontFaceElement, GElement, GlyphElement, GradientElement, ImageElement, LineElement, LinearGradientElement, MarkerElement, MaskElement, Matrix, MissingGlyphElement, Mouse, PSEUDO_ZERO, Parser, PathElement, PathParser, PatternElement, Point, PolygonElement, PolylineElement, Property, QB1, QB2, QB3, RadialGradientElement, RectElement, RenderedElement, Rotate, SVGElement, SVGFontLoader, Scale, Screen, Skew, SkewX, SkewY, StopElement, StyleElement, SymbolElement, TRefElement, TSpanElement, TextElement, TextPathElement, TitleElement, Transform, Translate, UnknownElement, UseElement, ViewPort, compressSpaces, elements, getSelectorSpecificity, normalizeAttributeName, normalizeColor, parseExternalUrl, index as presets, toMatrixValue, toNumbers, trimLeft, trimRight, vectorMagnitude, vectorsAngle, vectorsRatio };\n//# sourceMappingURL=index.js.map\n"],"names":["getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","performanceNowModule","hr","this","now","require$$0","root","global","vendors","suffix","raf","caf","i","last","id","queue","frameDuration","callback","_now","next","cp","e","handle","rafModule","fn","object","rgbcolor","color_string","simple_colors","color_defs","bits","re","processor","channels","r","g","b","examples","example","j","sc","xml","list_item","list_color","example_div","list_item_value","t","_","a","n","o","s","u","h","c","y","p","m","O","l","T","v","f","N","x","d","E","A","C","M","R","I","S","L","H","w","U","_typeof","obj","_classCallCheck","instance","Constructor","mulTable","shgTable","getImageDataFromCanvas","canvas","topX","topY","width","height","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","_x","_pr","_pg","_pb","_pa","_rOutSum","_gOutSum","_bOutSum","_aOutSum","_rSum","_gSum","_bSum","_aSum","_i3","yp","_gInSum","_bInSum","_aInSum","_rInSum","_i4","_rbs","_y","_p2","compressSpaces","str","trimLeft","trimRight","toNumbers","matches","toMatrixValue","numbers","allUppercase","normalizeAttributeName","name","parseExternalUrl","url","urlMatch","normalizeColor","color","rgbParts","num","isFloat","attributeRegex","idRegex","classRegex","pseudoElementRegex","pseudoClassWithBracketsRegex","pseudoClassRegex","elementRegex","findSelectorMatch","selector","regex","getSelectorSpecificity","specificity","currentSelector","delta","PSEUDO_ZERO","vectorMagnitude","vectorsRatio","vectorsAngle","CB1","CB2","CB3","CB4","QB1","QB2","QB3","Property","document","separator","value","zeroIsValue","regexp","result","asString","def","axisOrIsFontSize","processPercent","axis","isFontSize","viewPort","match","element","opacity","patternTransform","key","len","commas","RGBColor","ViewPort","getDefault","viewPorts","current","Point","point","defaultValue","scale","path","points","pathPoints","transform","xp","Mouse","screen","onClick","onMouseMove","events","eventElements","style","param","run","ctx","boundingBox","window","event","eventTarget","defaultWindow","defaultFetch$1","Screen","checker","isReadyLock","aspectRatio","desiredWidth","desiredHeight","minX","minY","refX","refY","clip","clipX","clipY","cleanAspectRatio","aspectRatioAlign","aspectRatioMeetOrSlice","align","meetOrSlice","scaleX","scaleY","scaleMin","scaleMax","finalDesiredWidth","finalDesiredHeight","refXProp","refYProp","hasRefs","scaledClipX","scaledClipY","isMeetMinY","isSliceMaxY","isMeetMinX","isSliceMaxX","enableRedraw","ignoreMouse","ignoreAnimation","ignoreDimensions","ignoreClear","forceRedraw","scaleWidth","scaleHeight","offsetX","offsetY","mouse","resolve","then","tick","requestAnimationFrame","shouldUpdate","animation","isFirstRender","widthStyle","heightStyle","cWidth","cHeight","viewBox","xRatio","yRatio","transformStyle","fetch","defaultFetch","DefaultDOMParser","Parser","resource","parser","parserError","DOMParser","Translate","Rotate","cx","cy","originX","originY","angle","tx","ty","rad","rotate","transformOrigin","Scale","scaleSize","Matrix","matrix","det","Skew","skew","SkewX","SkewY","parseTransforms","parseTransform","type","Transform","transformOriginXProperty","transformOriginYProperty","transform1","TransformType","Element","createIfNotExists","attr","href","skipAncestors","parent","parentStyle","mask","filter","clipPathStyleProp","child","childNode","ref","node","styleClasses","styleClass","styles","stylesSpecificity","styleProp","existingSpecificity","ignoreStyles","toRestore","captureTextNodes","attribute","nodeName","definitions","textNode","UnknownElement","wrapFontFamily","fontFamily","trimmed","prepareFontFamily","prepareFontStyle","fontStyle","targetFontStyle","prepareFontWeight","fontWeight","targetFontWeight","Font","font","inherit","fontVariant","fontSize","parts","set","part","inheritFont","BoundingBox","x1","y1","x2","y2","p0","p1","p2","p3","forX","b2ac","t1","t2","p0x","p0y","p1x","p1y","p2x","p2y","p3x","p3y","cp1x","cp1y","cp2x","cp2y","RenderedElement","opacityStyle","fromMeasure","fillStyleProp","fillOpacityStyleProp","strokeStyleProp","strokeOpacityProp","fillStyle","strokeStyle","strokeWidthStyleProp","newLineWidth","strokeLinecapStyleProp","strokeLinejoinStyleProp","strokeMiterlimitProp","strokeDasharrayStyleProp","strokeDashoffsetProp","gaps","offset","fontStyleProp","fontStyleStyleProp","fontVariantStyleProp","fontWeightStyleProp","fontSizeStyleProp","fontFamilyStyleProp","args","TextElement","textBaseline","childBoundingBox","inheritFontSize","text","char","glyph","prevChar","nextChar","arabicForm","childNodes","index","lastIndex","renderText","customFont","unitsPerEm","ctxFont","dx","lw","firstElement","textAnchor","isRTL","shift","textParent","i1","xAttr","yAttr","dxAttr","dyAttr","i2","i3","measureCache","measure","targetText","parentAttr","TSpanElement","TextNode","PathParser","SVGPathData","commands","command","xProp","yProp","previousCommand","ox","oy","from","priorTo","angles","PathElement","pathParser","_ctx","fillRuleStyleProp","markers","markersLastIndex","markerStartStyleProp","markerMidStyleProp","markerEndStyleProp","marker","controlPoint","currentPoint","rX","rY","xRot","lArcFlag","sweepFlag","xAxisRotation","currp","cpp","centp","a1","ad","dir","ah","halfWay","sx","sy","SVGElement","fontSizeProp","refXAttr","refYAttr","viewBoxAttr","preserveAspectRatio","widthAttr","heightAttr","styleAttr","originWidth","originHeight","preserveAspectRatioAttr","RectElement","rxAttr","ryAttr","rx","ry","KAPPA","CircleElement","EllipseElement","LineElement","x0","y0","PolylineElement","PolygonElement","PatternElement","parentOpacityProp","patternSvg","patternCanvas","patternCtx","MarkerElement","orient","markerUnits","markerSvg","DefsElement","GElement","GradientElement","stopsContainer","stops","gradient","stop","MAX_VIRTUAL_PIXELS","rootView","rect","group","attributeToInherit","children","LinearGradientElement","isBoundingBoxUnits","RadialGradientElement","fx","fy","fr","StopElement","stopOpacity","stopColor","AnimateElement","attributeType","attributeName","initialUnits","progress","to","newValue","prop","fill","updated","typeAttr","values","lb","ub","valuesAttr","AnimateColorElement","colorFrom","colorTo","AnimateTransformElement","from1","to1","transformFrom","transformTo","FontFaceElement","GlyphElement","MissingGlyphElement","FontElement","fontFamilyStyle","arabicGlyph","TRefElement","firstChild","AElement","node1","hasText","TextPathElement","dataArray","theta","dTheta","psi","fs","textDecoration","glyphInfo","rotation","partialText","idx","anchor","textFullWidth","fullPathWidth","spacesNumber","inputOffset","dy","charI","glyphWidth","splineStep","segment","dyX","dyY","measuresCache","chars","thisSpacing","parentSpacing","letterSpacing","letterSpacingCache","textLen","dxSum","acc","cur","textWidth","startOffset","nextOffset","pathCommands","startX","startY","nextCommandType","commandType","start","end","inc","dist","fromX","fromY","rise","pt","ix","iy","pRise","pRun","distance","fullLen","cumulativePathLength","currentT","length","pct","p4x","p4y","cosPsi","sinPsi","inputStep","inputPrecision","precision","step","targetDistance","pathElement","dataUriRegex","ImageElement","image","err","data","svg","loaded","subDocument","documentElement","isSvg","SymbolElement","SVGFontLoader","fonts","fontNode","StyleElement","_1","cssParts","cssClasses","cssProps","cssClass","props","cssProp","src","UseElement","tempSvg","oldParent","imGet","img","_height","rgba","imSet","val","m1","m2","m3","FeColorMatrixElement","includeOpacity","srcData","nr","ng","nb","na","MaskElement","ignoredStyles","maskCanvas","maskCtx","tmpCanvas","tmpCtx","noop","ClipPathElement","contextProto","beginPath","closePath","FilterElement","px","py","efd","tmpCanvasWidth","tmpCanvasHeight","FeDropShadowElement","_width","FeMorphologyElement","FeCompositeElement","FeGaussianBlurElement","blurRadius","body","canvasRGBA","TitleElement","DescElement","elements","createCanvas","createImage","anonymousCrossOrigin","reject","_event","_source","_lineno","_colno","error","DEFAULT_EM_SIZE","Document","createImage1","source","forceAnonymousCrossOrigin","emSizeStack","elementType","ElementType","config","canvg","rootEmSize","emSize","createCanvas1","createImage2","Canvg","options","svgDocument","baseOptions"],"mappings":"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IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EACrwCC,GAAW,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GA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","x_google_ignoreList":[0,1,2,3,4,5]}