mudlet-map-browser-script 0.1.0 → 0.2.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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DN84wJBG.js","sources":["C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Global.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Util.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Context.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Canvas.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/DragAndDrop.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Validators.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Factory.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Node.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Container.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/PointerEvents.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Stage.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Shape.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Layer.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/FastLayer.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Group.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Animation.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/Tween.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/_CoreInternals.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Arc.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Line.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/BezierFunctions.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Path.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Arrow.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Circle.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Ellipse.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Image.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Label.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Rect.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/RegularPolygon.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Ring.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Sprite.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Star.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Text.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/TextPath.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Transformer.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/shapes/Wedge.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Blur.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Brighten.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Contrast.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Enhance.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Emboss.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/HSL.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/HSV.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Mask.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Kaleidoscope.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Noise.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Pixelate.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Posterize.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/RGB.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/RGBA.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Threshold.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/_FullInternals.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Brightness.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Grayscale.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Invert.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Sepia.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/node_modules/konva/lib/filters/Solarize.js","C:/Users/delwi/WebstormProjects/mudlet-map-renderer/dist/index.mjs"],"sourcesContent":["const PI_OVER_180 = Math.PI / 180;\nfunction detectBrowser() {\n return (typeof window !== 'undefined' &&\n ({}.toString.call(window) === '[object Window]' ||\n {}.toString.call(window) === '[object global]'));\n}\nexport const glob = typeof global !== 'undefined'\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof WorkerGlobalScope !== 'undefined'\n ? self\n : {};\nexport const Konva = {\n _global: glob,\n version: '10.0.2',\n isBrowser: detectBrowser(),\n isUnminified: /param/.test(function (param) { }.toString()),\n dblClickWindow: 400,\n getAngle(angle) {\n return Konva.angleDeg ? angle * PI_OVER_180 : angle;\n },\n enableTrace: false,\n pointerEventsEnabled: true,\n autoDrawEnabled: true,\n hitOnDragEnabled: false,\n capturePointerEventsEnabled: false,\n _mouseListenClick: false,\n _touchListenClick: false,\n _pointerListenClick: false,\n _mouseInDblClickWindow: false,\n _touchInDblClickWindow: false,\n _pointerInDblClickWindow: false,\n _mouseDblClickPointerId: null,\n _touchDblClickPointerId: null,\n _pointerDblClickPointerId: null,\n _renderBackend: 'web',\n legacyTextRendering: false,\n pixelRatio: (typeof window !== 'undefined' && window.devicePixelRatio) || 1,\n dragDistance: 3,\n angleDeg: true,\n showWarnings: true,\n dragButtons: [0, 1],\n isDragging() {\n return Konva['DD'].isDragging;\n },\n isTransforming() {\n var _a, _b;\n return (_b = (_a = Konva['Transformer']) === null || _a === void 0 ? void 0 : _a.isTransforming()) !== null && _b !== void 0 ? _b : false;\n },\n isDragReady() {\n return !!Konva['DD'].node;\n },\n releaseCanvasOnDestroy: true,\n document: glob.document,\n _injectGlobal(Konva) {\n if (typeof glob.Konva !== 'undefined') {\n console.error('Severa Konva instances detected. It is not recommended to use multiple Konva instances in the same environment.');\n }\n glob.Konva = Konva;\n },\n};\nexport const _registerNode = (NodeClass) => {\n Konva[NodeClass.prototype.getClassName()] = NodeClass;\n};\nKonva._injectGlobal(Konva);\n","import { Konva } from \"./Global.js\";\nconst NODE_ERROR = `Konva.js unsupported environment.\n\nLooks like you are trying to use Konva.js in Node.js environment. because \"document\" object is undefined.\n\nTo use Konva.js in Node.js environment, you need to use the \"canvas-backend\" or \"skia-backend\" module.\n\nbash: npm install canvas\njs: import \"konva/canvas-backend\";\n\nor\n\nbash: npm install skia-canvas\njs: import \"konva/skia-backend\";\n`;\nconst ensureBrowser = () => {\n if (typeof document === 'undefined') {\n throw new Error(NODE_ERROR);\n }\n};\nexport class Transform {\n constructor(m = [1, 0, 0, 1, 0, 0]) {\n this.dirty = false;\n this.m = (m && m.slice()) || [1, 0, 0, 1, 0, 0];\n }\n reset() {\n this.m[0] = 1;\n this.m[1] = 0;\n this.m[2] = 0;\n this.m[3] = 1;\n this.m[4] = 0;\n this.m[5] = 0;\n }\n copy() {\n return new Transform(this.m);\n }\n copyInto(tr) {\n tr.m[0] = this.m[0];\n tr.m[1] = this.m[1];\n tr.m[2] = this.m[2];\n tr.m[3] = this.m[3];\n tr.m[4] = this.m[4];\n tr.m[5] = this.m[5];\n }\n point(point) {\n const m = this.m;\n return {\n x: m[0] * point.x + m[2] * point.y + m[4],\n y: m[1] * point.x + m[3] * point.y + m[5],\n };\n }\n translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n return this;\n }\n scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n return this;\n }\n rotate(rad) {\n const c = Math.cos(rad);\n const s = Math.sin(rad);\n const m11 = this.m[0] * c + this.m[2] * s;\n const m12 = this.m[1] * c + this.m[3] * s;\n const m21 = this.m[0] * -s + this.m[2] * c;\n const m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n getTranslation() {\n return {\n x: this.m[4],\n y: this.m[5],\n };\n }\n skew(sx, sy) {\n const m11 = this.m[0] + this.m[2] * sy;\n const m12 = this.m[1] + this.m[3] * sy;\n const m21 = this.m[2] + this.m[0] * sx;\n const m22 = this.m[3] + this.m[1] * sx;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n multiply(matrix) {\n const m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n const m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n const m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n const m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n const dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n const dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n return this;\n }\n invert() {\n const d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n const m0 = this.m[3] * d;\n const m1 = -this.m[1] * d;\n const m2 = -this.m[2] * d;\n const m3 = this.m[0] * d;\n const m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n const m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n return this;\n }\n getMatrix() {\n return this.m;\n }\n decompose() {\n const a = this.m[0];\n const b = this.m[1];\n const c = this.m[2];\n const d = this.m[3];\n const e = this.m[4];\n const f = this.m[5];\n const delta = a * d - b * c;\n const result = {\n x: e,\n y: f,\n rotation: 0,\n scaleX: 0,\n scaleY: 0,\n skewX: 0,\n skewY: 0,\n };\n if (a != 0 || b != 0) {\n const r = Math.sqrt(a * a + b * b);\n result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);\n result.scaleX = r;\n result.scaleY = delta / r;\n result.skewX = (a * c + b * d) / delta;\n result.skewY = 0;\n }\n else if (c != 0 || d != 0) {\n const s = Math.sqrt(c * c + d * d);\n result.rotation =\n Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));\n result.scaleX = delta / s;\n result.scaleY = s;\n result.skewX = 0;\n result.skewY = (a * c + b * d) / delta;\n }\n else {\n }\n result.rotation = Util._getRotation(result.rotation);\n return result;\n }\n}\nconst OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', RGB_PAREN = 'rgb(', COLORS = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 132, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 255, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 203],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [119, 128, 144],\n slategrey: [119, 128, 144],\n snow: [255, 255, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n transparent: [255, 255, 255, 0],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 5],\n}, RGB_REGEX = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/;\nlet animQueue = [];\nconst req = (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame) ||\n function (f) {\n setTimeout(f, 60);\n };\nexport const Util = {\n _isElement(obj) {\n return !!(obj && obj.nodeType == 1);\n },\n _isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n },\n _isPlainObject(obj) {\n return !!obj && obj.constructor === Object;\n },\n _isArray(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\n },\n _isNumber(obj) {\n return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\n !isNaN(obj) &&\n isFinite(obj));\n },\n _isString(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_STRING;\n },\n _isBoolean(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\n },\n isObject(val) {\n return val instanceof Object;\n },\n isValidSelector(selector) {\n if (typeof selector !== 'string') {\n return false;\n }\n const firstChar = selector[0];\n return (firstChar === '#' ||\n firstChar === '.' ||\n firstChar === firstChar.toUpperCase());\n },\n _sign(number) {\n if (number === 0) {\n return 1;\n }\n if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n },\n requestAnimFrame(callback) {\n animQueue.push(callback);\n if (animQueue.length === 1) {\n req(function () {\n const queue = animQueue;\n animQueue = [];\n queue.forEach(function (cb) {\n cb();\n });\n });\n }\n },\n createCanvasElement() {\n ensureBrowser();\n const canvas = document.createElement('canvas');\n try {\n canvas.style = canvas.style || {};\n }\n catch (e) { }\n return canvas;\n },\n createImageElement() {\n ensureBrowser();\n return document.createElement('img');\n },\n _isInDocument(el) {\n while ((el = el.parentNode)) {\n if (el == document) {\n return true;\n }\n }\n return false;\n },\n _urlToImage(url, callback) {\n const imageObj = Util.createImageElement();\n imageObj.onload = function () {\n callback(imageObj);\n };\n imageObj.src = url;\n },\n _rgbToHex(r, g, b) {\n return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n },\n _hexToRgb(hex) {\n hex = hex.replace(HASH, EMPTY_STRING);\n const bigint = parseInt(hex, 16);\n return {\n r: (bigint >> 16) & 255,\n g: (bigint >> 8) & 255,\n b: bigint & 255,\n };\n },\n getRandomColor() {\n let randColor = ((Math.random() * 0xffffff) << 0).toString(16);\n while (randColor.length < 6) {\n randColor = ZERO + randColor;\n }\n return HASH + randColor;\n },\n getRGB(color) {\n let rgb;\n if (color in COLORS) {\n rgb = COLORS[color];\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n }\n else if (color[0] === HASH) {\n return this._hexToRgb(color.substring(1));\n }\n else if (color.substr(0, 4) === RGB_PAREN) {\n rgb = RGB_REGEX.exec(color.replace(/ /g, ''));\n return {\n r: parseInt(rgb[1], 10),\n g: parseInt(rgb[2], 10),\n b: parseInt(rgb[3], 10),\n };\n }\n else {\n return {\n r: 0,\n g: 0,\n b: 0,\n };\n }\n },\n colorToRGBA(str) {\n str = str || 'black';\n return (Util._namedColorToRBA(str) ||\n Util._hex3ColorToRGBA(str) ||\n Util._hex4ColorToRGBA(str) ||\n Util._hex6ColorToRGBA(str) ||\n Util._hex8ColorToRGBA(str) ||\n Util._rgbColorToRGBA(str) ||\n Util._rgbaColorToRGBA(str) ||\n Util._hslColorToRGBA(str));\n },\n _namedColorToRBA(str) {\n const c = COLORS[str.toLowerCase()];\n if (!c) {\n return null;\n }\n return {\n r: c[0],\n g: c[1],\n b: c[2],\n a: 1,\n };\n },\n _rgbColorToRGBA(str) {\n if (str.indexOf('rgb(') === 0) {\n str = str.match(/rgb\\(([^)]+)\\)/)[1];\n const parts = str.split(/ *, */).map(Number);\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: 1,\n };\n }\n },\n _rgbaColorToRGBA(str) {\n if (str.indexOf('rgba(') === 0) {\n str = str.match(/rgba\\(([^)]+)\\)/)[1];\n const parts = str.split(/ *, */).map((n, index) => {\n if (n.slice(-1) === '%') {\n return index === 3 ? parseInt(n) / 100 : (parseInt(n) / 100) * 255;\n }\n return Number(n);\n });\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: parts[3],\n };\n }\n },\n _hex8ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 9) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: parseInt(str.slice(7, 9), 16) / 0xff,\n };\n }\n },\n _hex6ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 7) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: 1,\n };\n }\n },\n _hex4ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 5) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: parseInt(str[4] + str[4], 16) / 0xff,\n };\n }\n },\n _hex3ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 4) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: 1,\n };\n }\n },\n _hslColorToRGBA(str) {\n if (/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.test(str)) {\n const [_, ...hsl] = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(str);\n const h = Number(hsl[0]) / 360;\n const s = Number(hsl[1]) / 100;\n const l = Number(hsl[2]) / 100;\n let t2;\n let t3;\n let val;\n if (s === 0) {\n val = l * 255;\n return {\n r: Math.round(val),\n g: Math.round(val),\n b: Math.round(val),\n a: 1,\n };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n }\n else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + (1 / 3) * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n }\n else if (2 * t3 < 1) {\n val = t2;\n }\n else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n }\n else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: Math.round(rgb[0]),\n g: Math.round(rgb[1]),\n b: Math.round(rgb[2]),\n a: 1,\n };\n }\n },\n haveIntersection(r1, r2) {\n return !(r2.x > r1.x + r1.width ||\n r2.x + r2.width < r1.x ||\n r2.y > r1.y + r1.height ||\n r2.y + r2.height < r1.y);\n },\n cloneObject(obj) {\n const retObj = {};\n for (const key in obj) {\n if (this._isPlainObject(obj[key])) {\n retObj[key] = this.cloneObject(obj[key]);\n }\n else if (this._isArray(obj[key])) {\n retObj[key] = this.cloneArray(obj[key]);\n }\n else {\n retObj[key] = obj[key];\n }\n }\n return retObj;\n },\n cloneArray(arr) {\n return arr.slice(0);\n },\n degToRad(deg) {\n return deg * PI_OVER_DEG180;\n },\n radToDeg(rad) {\n return rad * DEG180_OVER_PI;\n },\n _degToRad(deg) {\n Util.warn('Util._degToRad is removed. Please use public Util.degToRad instead.');\n return Util.degToRad(deg);\n },\n _radToDeg(rad) {\n Util.warn('Util._radToDeg is removed. Please use public Util.radToDeg instead.');\n return Util.radToDeg(rad);\n },\n _getRotation(radians) {\n return Konva.angleDeg ? Util.radToDeg(radians) : radians;\n },\n _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n throw(str) {\n throw new Error(KONVA_ERROR + str);\n },\n error(str) {\n console.error(KONVA_ERROR + str);\n },\n warn(str) {\n if (!Konva.showWarnings) {\n return;\n }\n console.warn(KONVA_WARNING + str);\n },\n each(obj, func) {\n for (const key in obj) {\n func(key, obj[key]);\n }\n },\n _inRange(val, left, right) {\n return left <= val && val < right;\n },\n _getProjectionToSegment(x1, y1, x2, y2, x3, y3) {\n let x, y, dist;\n const pd2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n if (pd2 == 0) {\n x = x1;\n y = y1;\n dist = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);\n }\n else {\n const u = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / pd2;\n if (u < 0) {\n x = x1;\n y = y1;\n dist = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);\n }\n else if (u > 1.0) {\n x = x2;\n y = y2;\n dist = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);\n }\n else {\n x = x1 + u * (x2 - x1);\n y = y1 + u * (y2 - y1);\n dist = (x - x3) * (x - x3) + (y - y3) * (y - y3);\n }\n }\n return [x, y, dist];\n },\n _getProjectionToLine(pt, line, isClosed) {\n const pc = Util.cloneObject(pt);\n let dist = Number.MAX_VALUE;\n line.forEach(function (p1, i) {\n if (!isClosed && i === line.length - 1) {\n return;\n }\n const p2 = line[(i + 1) % line.length];\n const proj = Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\n const px = proj[0], py = proj[1], pdist = proj[2];\n if (pdist < dist) {\n pc.x = px;\n pc.y = py;\n dist = pdist;\n }\n });\n return pc;\n },\n _prepareArrayForTween(startArray, endArray, isClosed) {\n const start = [], end = [];\n if (startArray.length > endArray.length) {\n const temp = endArray;\n endArray = startArray;\n startArray = temp;\n }\n for (let n = 0; n < startArray.length; n += 2) {\n start.push({\n x: startArray[n],\n y: startArray[n + 1],\n });\n }\n for (let n = 0; n < endArray.length; n += 2) {\n end.push({\n x: endArray[n],\n y: endArray[n + 1],\n });\n }\n const newStart = [];\n end.forEach(function (point) {\n const pr = Util._getProjectionToLine(point, start, isClosed);\n newStart.push(pr.x);\n newStart.push(pr.y);\n });\n return newStart;\n },\n _prepareToStringify(obj) {\n let desc;\n obj.visitedByCircularReferenceRemoval = true;\n for (const key in obj) {\n if (!(obj.hasOwnProperty(key) && obj[key] && typeof obj[key] == 'object')) {\n continue;\n }\n desc = Object.getOwnPropertyDescriptor(obj, key);\n if (obj[key].visitedByCircularReferenceRemoval ||\n Util._isElement(obj[key])) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n else if (Util._prepareToStringify(obj[key]) === null) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n }\n delete obj.visitedByCircularReferenceRemoval;\n return obj;\n },\n _assign(target, source) {\n for (const key in source) {\n target[key] = source[key];\n }\n return target;\n },\n _getFirstPointerId(evt) {\n if (!evt.touches) {\n return evt.pointerId || 999;\n }\n else {\n return evt.changedTouches[0].identifier;\n }\n },\n releaseCanvas(...canvases) {\n if (!Konva.releaseCanvasOnDestroy)\n return;\n canvases.forEach((c) => {\n c.width = 0;\n c.height = 0;\n });\n },\n drawRoundedRectPath(context, width, height, cornerRadius) {\n let xOrigin = width < 0 ? width : 0;\n let yOrigin = height < 0 ? height : 0;\n width = Math.abs(width);\n height = Math.abs(height);\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.moveTo(xOrigin + topLeft, yOrigin);\n context.lineTo(xOrigin + width - topRight, yOrigin);\n context.arc(xOrigin + width - topRight, yOrigin + topRight, topRight, (Math.PI * 3) / 2, 0, false);\n context.lineTo(xOrigin + width, yOrigin + height - bottomRight);\n context.arc(xOrigin + width - bottomRight, yOrigin + height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n context.lineTo(xOrigin + bottomLeft, yOrigin + height);\n context.arc(xOrigin + bottomLeft, yOrigin + height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n context.lineTo(xOrigin, yOrigin + topLeft);\n context.arc(xOrigin + topLeft, yOrigin + topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n },\n drawRoundedPolygonPath(context, points, sides, radius, cornerRadius) {\n radius = Math.abs(radius);\n for (let i = 0; i < sides; i++) {\n const prev = points[(i - 1 + sides) % sides];\n const curr = points[i];\n const next = points[(i + 1) % sides];\n const vec1 = { x: curr.x - prev.x, y: curr.y - prev.y };\n const vec2 = { x: next.x - curr.x, y: next.y - curr.y };\n const len1 = Math.hypot(vec1.x, vec1.y);\n const len2 = Math.hypot(vec2.x, vec2.y);\n let currCornerRadius;\n if (typeof cornerRadius === 'number') {\n currCornerRadius = cornerRadius;\n }\n else {\n currCornerRadius = i < cornerRadius.length ? cornerRadius[i] : 0;\n }\n const maxCornerRadius = radius * Math.cos(Math.PI / sides);\n currCornerRadius =\n maxCornerRadius * Math.min(1, (currCornerRadius / radius) * 2);\n const normalVec1 = { x: vec1.x / len1, y: vec1.y / len1 };\n const normalVec2 = { x: vec2.x / len2, y: vec2.y / len2 };\n const p1 = {\n x: curr.x - normalVec1.x * currCornerRadius,\n y: curr.y - normalVec1.y * currCornerRadius,\n };\n const p2 = {\n x: curr.x + normalVec2.x * currCornerRadius,\n y: curr.y + normalVec2.y * currCornerRadius,\n };\n if (i === 0) {\n context.moveTo(p1.x, p1.y);\n }\n else {\n context.lineTo(p1.x, p1.y);\n }\n context.arcTo(curr.x, curr.y, p2.x, p2.y, currCornerRadius);\n }\n },\n};\n","import { Util } from \"./Util.js\";\nimport { Konva } from \"./Global.js\";\nfunction simplifyArray(arr) {\n const retArr = [], len = arr.length, util = Util;\n for (let n = 0; n < len; n++) {\n let val = arr[n];\n if (util._isNumber(val)) {\n val = Math.round(val * 1000) / 1000;\n }\n else if (!util._isString(val)) {\n val = val + '';\n }\n retArr.push(val);\n }\n return retArr;\n}\nconst COMMA = ',', OPEN_PAREN = '(', CLOSE_PAREN = ')', OPEN_PAREN_BRACKET = '([', CLOSE_BRACKET_PAREN = '])', SEMICOLON = ';', DOUBLE_PAREN = '()', EQUALS = '=', CONTEXT_METHODS = [\n 'arc',\n 'arcTo',\n 'beginPath',\n 'bezierCurveTo',\n 'clearRect',\n 'clip',\n 'closePath',\n 'createLinearGradient',\n 'createPattern',\n 'createRadialGradient',\n 'drawImage',\n 'ellipse',\n 'fill',\n 'fillText',\n 'getImageData',\n 'createImageData',\n 'lineTo',\n 'moveTo',\n 'putImageData',\n 'quadraticCurveTo',\n 'rect',\n 'roundRect',\n 'restore',\n 'rotate',\n 'save',\n 'scale',\n 'setLineDash',\n 'setTransform',\n 'stroke',\n 'strokeText',\n 'transform',\n 'translate',\n];\nconst CONTEXT_PROPERTIES = [\n 'fillStyle',\n 'strokeStyle',\n 'shadowColor',\n 'shadowBlur',\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'letterSpacing',\n 'lineCap',\n 'lineDashOffset',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit',\n 'direction',\n 'font',\n 'textAlign',\n 'textBaseline',\n 'globalAlpha',\n 'globalCompositeOperation',\n 'imageSmoothingEnabled',\n 'filter',\n];\nconst traceArrMax = 100;\nlet _cssFiltersSupported = null;\nexport function isCSSFiltersSupported() {\n if (_cssFiltersSupported !== null) {\n return _cssFiltersSupported;\n }\n try {\n const canvas = Util.createCanvasElement();\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n _cssFiltersSupported = false;\n return false;\n }\n return !!ctx && 'filter' in ctx;\n }\n catch (e) {\n _cssFiltersSupported = false;\n return false;\n }\n}\nexport class Context {\n constructor(canvas) {\n this.canvas = canvas;\n if (Konva.enableTrace) {\n this.traceArr = [];\n this._enableTrace();\n }\n }\n fillShape(shape) {\n if (shape.fillEnabled()) {\n this._fill(shape);\n }\n }\n _fill(shape) {\n }\n strokeShape(shape) {\n if (shape.hasStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n }\n fillStrokeShape(shape) {\n if (shape.attrs.fillAfterStrokeEnabled) {\n this.strokeShape(shape);\n this.fillShape(shape);\n }\n else {\n this.fillShape(shape);\n this.strokeShape(shape);\n }\n }\n getTrace(relaxed, rounded) {\n let traceArr = this.traceArr, len = traceArr.length, str = '', n, trace, method, args;\n for (n = 0; n < len; n++) {\n trace = traceArr[n];\n method = trace.method;\n if (method) {\n args = trace.args;\n str += method;\n if (relaxed) {\n str += DOUBLE_PAREN;\n }\n else {\n if (Util._isArray(args[0])) {\n str += OPEN_PAREN_BRACKET + args.join(COMMA) + CLOSE_BRACKET_PAREN;\n }\n else {\n if (rounded) {\n args = args.map((a) => typeof a === 'number' ? Math.floor(a) : a);\n }\n str += OPEN_PAREN + args.join(COMMA) + CLOSE_PAREN;\n }\n }\n }\n else {\n str += trace.property;\n if (!relaxed) {\n str += EQUALS + trace.val;\n }\n }\n str += SEMICOLON;\n }\n return str;\n }\n clearTrace() {\n this.traceArr = [];\n }\n _trace(str) {\n let traceArr = this.traceArr, len;\n traceArr.push(str);\n len = traceArr.length;\n if (len >= traceArrMax) {\n traceArr.shift();\n }\n }\n reset() {\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(1 * pixelRatio, 0, 0, 1 * pixelRatio, 0, 0);\n }\n getCanvas() {\n return this.canvas;\n }\n clear(bounds) {\n const canvas = this.getCanvas();\n if (bounds) {\n this.clearRect(bounds.x || 0, bounds.y || 0, bounds.width || 0, bounds.height || 0);\n }\n else {\n this.clearRect(0, 0, canvas.getWidth() / canvas.pixelRatio, canvas.getHeight() / canvas.pixelRatio);\n }\n }\n _applyLineCap(shape) {\n const lineCap = shape.attrs.lineCap;\n if (lineCap) {\n this.setAttr('lineCap', lineCap);\n }\n }\n _applyOpacity(shape) {\n const absOpacity = shape.getAbsoluteOpacity();\n if (absOpacity !== 1) {\n this.setAttr('globalAlpha', absOpacity);\n }\n }\n _applyLineJoin(shape) {\n const lineJoin = shape.attrs.lineJoin;\n if (lineJoin) {\n this.setAttr('lineJoin', lineJoin);\n }\n }\n _applyMiterLimit(shape) {\n const miterLimit = shape.attrs.miterLimit;\n if (miterLimit != null) {\n this.setAttr('miterLimit', miterLimit);\n }\n }\n setAttr(attr, val) {\n this._context[attr] = val;\n }\n arc(x, y, radius, startAngle, endAngle, counterClockwise) {\n this._context.arc(x, y, radius, startAngle, endAngle, counterClockwise);\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._context.arcTo(x1, y1, x2, y2, radius);\n }\n beginPath() {\n this._context.beginPath();\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this._context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n }\n clearRect(x, y, width, height) {\n this._context.clearRect(x, y, width, height);\n }\n clip(...args) {\n this._context.clip.apply(this._context, args);\n }\n closePath() {\n this._context.closePath();\n }\n createImageData(width, height) {\n const a = arguments;\n if (a.length === 2) {\n return this._context.createImageData(width, height);\n }\n else if (a.length === 1) {\n return this._context.createImageData(width);\n }\n }\n createLinearGradient(x0, y0, x1, y1) {\n return this._context.createLinearGradient(x0, y0, x1, y1);\n }\n createPattern(image, repetition) {\n return this._context.createPattern(image, repetition);\n }\n createRadialGradient(x0, y0, r0, x1, y1, r1) {\n return this._context.createRadialGradient(x0, y0, r0, x1, y1, r1);\n }\n drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) {\n const a = arguments, _context = this._context;\n if (a.length === 3) {\n _context.drawImage(image, sx, sy);\n }\n else if (a.length === 5) {\n _context.drawImage(image, sx, sy, sWidth, sHeight);\n }\n else if (a.length === 9) {\n _context.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\n }\n }\n ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise) {\n this._context.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise);\n }\n isPointInPath(x, y, path, fillRule) {\n if (path) {\n return this._context.isPointInPath(path, x, y, fillRule);\n }\n return this._context.isPointInPath(x, y, fillRule);\n }\n fill(...args) {\n this._context.fill.apply(this._context, args);\n }\n fillRect(x, y, width, height) {\n this._context.fillRect(x, y, width, height);\n }\n strokeRect(x, y, width, height) {\n this._context.strokeRect(x, y, width, height);\n }\n fillText(text, x, y, maxWidth) {\n if (maxWidth) {\n this._context.fillText(text, x, y, maxWidth);\n }\n else {\n this._context.fillText(text, x, y);\n }\n }\n measureText(text) {\n return this._context.measureText(text);\n }\n getImageData(sx, sy, sw, sh) {\n return this._context.getImageData(sx, sy, sw, sh);\n }\n lineTo(x, y) {\n this._context.lineTo(x, y);\n }\n moveTo(x, y) {\n this._context.moveTo(x, y);\n }\n rect(x, y, width, height) {\n this._context.rect(x, y, width, height);\n }\n roundRect(x, y, width, height, radii) {\n this._context.roundRect(x, y, width, height, radii);\n }\n putImageData(imageData, dx, dy) {\n this._context.putImageData(imageData, dx, dy);\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this._context.quadraticCurveTo(cpx, cpy, x, y);\n }\n restore() {\n this._context.restore();\n }\n rotate(angle) {\n this._context.rotate(angle);\n }\n save() {\n this._context.save();\n }\n scale(x, y) {\n this._context.scale(x, y);\n }\n setLineDash(segments) {\n if (this._context.setLineDash) {\n this._context.setLineDash(segments);\n }\n else if ('mozDash' in this._context) {\n this._context['mozDash'] = segments;\n }\n else if ('webkitLineDash' in this._context) {\n this._context['webkitLineDash'] = segments;\n }\n }\n getLineDash() {\n return this._context.getLineDash();\n }\n setTransform(a, b, c, d, e, f) {\n this._context.setTransform(a, b, c, d, e, f);\n }\n stroke(path2d) {\n if (path2d) {\n this._context.stroke(path2d);\n }\n else {\n this._context.stroke();\n }\n }\n strokeText(text, x, y, maxWidth) {\n this._context.strokeText(text, x, y, maxWidth);\n }\n transform(a, b, c, d, e, f) {\n this._context.transform(a, b, c, d, e, f);\n }\n translate(x, y) {\n this._context.translate(x, y);\n }\n _enableTrace() {\n let that = this, len = CONTEXT_METHODS.length, origSetter = this.setAttr, n, args;\n const func = function (methodName) {\n let origMethod = that[methodName], ret;\n that[methodName] = function () {\n args = simplifyArray(Array.prototype.slice.call(arguments, 0));\n ret = origMethod.apply(that, arguments);\n that._trace({\n method: methodName,\n args: args,\n });\n return ret;\n };\n };\n for (n = 0; n < len; n++) {\n func(CONTEXT_METHODS[n]);\n }\n that.setAttr = function () {\n origSetter.apply(that, arguments);\n const prop = arguments[0];\n let val = arguments[1];\n if (prop === 'shadowOffsetX' ||\n prop === 'shadowOffsetY' ||\n prop === 'shadowBlur') {\n val = val / this.canvas.getPixelRatio();\n }\n that._trace({\n property: prop,\n val: val,\n });\n };\n }\n _applyGlobalCompositeOperation(node) {\n const op = node.attrs.globalCompositeOperation;\n const def = !op || op === 'source-over';\n if (!def) {\n this.setAttr('globalCompositeOperation', op);\n }\n }\n}\nCONTEXT_PROPERTIES.forEach(function (prop) {\n Object.defineProperty(Context.prototype, prop, {\n get() {\n return this._context[prop];\n },\n set(val) {\n this._context[prop] = val;\n },\n });\n});\nexport class SceneContext extends Context {\n constructor(canvas, { willReadFrequently = false } = {}) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently,\n });\n }\n _fillColor(shape) {\n const fill = shape.fill();\n this.setAttr('fillStyle', fill);\n shape._fillFunc(this);\n }\n _fillPattern(shape) {\n this.setAttr('fillStyle', shape._getFillPattern());\n shape._fillFunc(this);\n }\n _fillLinearGradient(shape) {\n const grd = shape._getLinearGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fillRadialGradient(shape) {\n const grd = shape._getRadialGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fill(shape) {\n const hasColor = shape.fill(), fillPriority = shape.getFillPriority();\n if (hasColor && fillPriority === 'color') {\n this._fillColor(shape);\n return;\n }\n const hasPattern = shape.getFillPatternImage();\n if (hasPattern && fillPriority === 'pattern') {\n this._fillPattern(shape);\n return;\n }\n const hasLinearGradient = shape.getFillLinearGradientColorStops();\n if (hasLinearGradient && fillPriority === 'linear-gradient') {\n this._fillLinearGradient(shape);\n return;\n }\n const hasRadialGradient = shape.getFillRadialGradientColorStops();\n if (hasRadialGradient && fillPriority === 'radial-gradient') {\n this._fillRadialGradient(shape);\n return;\n }\n if (hasColor) {\n this._fillColor(shape);\n }\n else if (hasPattern) {\n this._fillPattern(shape);\n }\n else if (hasLinearGradient) {\n this._fillLinearGradient(shape);\n }\n else if (hasRadialGradient) {\n this._fillRadialGradient(shape);\n }\n }\n _strokeLinearGradient(shape) {\n const start = shape.getStrokeLinearGradientStartPoint(), end = shape.getStrokeLinearGradientEndPoint(), colorStops = shape.getStrokeLinearGradientColorStops(), grd = this.createLinearGradient(start.x, start.y, end.x, end.y);\n if (colorStops) {\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n this.setAttr('strokeStyle', grd);\n }\n }\n _stroke(shape) {\n const dash = shape.dash(), strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (shape.hasStroke()) {\n if (!strokeScaleEnabled) {\n this.save();\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n if (dash && shape.dashEnabled()) {\n this.setLineDash(dash);\n this.setAttr('lineDashOffset', shape.dashOffset());\n }\n this.setAttr('lineWidth', shape.strokeWidth());\n if (!shape.getShadowForStrokeEnabled()) {\n this.setAttr('shadowColor', 'rgba(0,0,0,0)');\n }\n const hasLinearGradient = shape.getStrokeLinearGradientColorStops();\n if (hasLinearGradient) {\n this._strokeLinearGradient(shape);\n }\n else {\n this.setAttr('strokeStyle', shape.stroke());\n }\n shape._strokeFunc(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n _applyShadow(shape) {\n var _a, _b, _c;\n const color = (_a = shape.getShadowRGBA()) !== null && _a !== void 0 ? _a : 'black', blur = (_b = shape.getShadowBlur()) !== null && _b !== void 0 ? _b : 5, offset = (_c = shape.getShadowOffset()) !== null && _c !== void 0 ? _c : {\n x: 0,\n y: 0,\n }, scale = shape.getAbsoluteScale(), ratio = this.canvas.getPixelRatio(), scaleX = scale.x * ratio, scaleY = scale.y * ratio;\n this.setAttr('shadowColor', color);\n this.setAttr('shadowBlur', blur * Math.min(Math.abs(scaleX), Math.abs(scaleY)));\n this.setAttr('shadowOffsetX', offset.x * scaleX);\n this.setAttr('shadowOffsetY', offset.y * scaleY);\n }\n}\nexport class HitContext extends Context {\n constructor(canvas) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently: true,\n });\n }\n _fill(shape) {\n this.save();\n this.setAttr('fillStyle', shape.colorKey);\n shape._fillFuncHit(this);\n this.restore();\n }\n strokeShape(shape) {\n if (shape.hasHitStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n if (shape.hasHitStroke()) {\n const strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (!strokeScaleEnabled) {\n this.save();\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n const hitStrokeWidth = shape.hitStrokeWidth();\n const strokeWidth = hitStrokeWidth === 'auto' ? shape.strokeWidth() : hitStrokeWidth;\n this.setAttr('lineWidth', strokeWidth);\n this.setAttr('strokeStyle', shape.colorKey);\n shape._strokeFuncHit(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n}\n","import { Util } from \"./Util.js\";\nimport { SceneContext, HitContext } from \"./Context.js\";\nimport { Konva } from \"./Global.js\";\nlet _pixelRatio;\nfunction getDevicePixelRatio() {\n if (_pixelRatio) {\n return _pixelRatio;\n }\n const canvas = Util.createCanvasElement();\n const context = canvas.getContext('2d');\n _pixelRatio = (function () {\n const devicePixelRatio = Konva._global.devicePixelRatio || 1, backingStoreRatio = context.webkitBackingStorePixelRatio ||\n context.mozBackingStorePixelRatio ||\n context.msBackingStorePixelRatio ||\n context.oBackingStorePixelRatio ||\n context.backingStorePixelRatio ||\n 1;\n return devicePixelRatio / backingStoreRatio;\n })();\n Util.releaseCanvas(canvas);\n return _pixelRatio;\n}\nexport class Canvas {\n constructor(config) {\n this.pixelRatio = 1;\n this.width = 0;\n this.height = 0;\n this.isCache = false;\n const conf = config || {};\n const pixelRatio = conf.pixelRatio || Konva.pixelRatio || getDevicePixelRatio();\n this.pixelRatio = pixelRatio;\n this._canvas = Util.createCanvasElement();\n this._canvas.style.padding = '0';\n this._canvas.style.margin = '0';\n this._canvas.style.border = '0';\n this._canvas.style.background = 'transparent';\n this._canvas.style.position = 'absolute';\n this._canvas.style.top = '0';\n this._canvas.style.left = '0';\n }\n getContext() {\n return this.context;\n }\n getPixelRatio() {\n return this.pixelRatio;\n }\n setPixelRatio(pixelRatio) {\n const previousRatio = this.pixelRatio;\n this.pixelRatio = pixelRatio;\n this.setSize(this.getWidth() / previousRatio, this.getHeight() / previousRatio);\n }\n setWidth(width) {\n this.width = this._canvas.width = width * this.pixelRatio;\n this._canvas.style.width = width + 'px';\n const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n setHeight(height) {\n this.height = this._canvas.height = height * this.pixelRatio;\n this._canvas.style.height = height + 'px';\n const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n getWidth() {\n return this.width;\n }\n getHeight() {\n return this.height;\n }\n setSize(width, height) {\n this.setWidth(width || 0);\n this.setHeight(height || 0);\n }\n toDataURL(mimeType, quality) {\n try {\n return this._canvas.toDataURL(mimeType, quality);\n }\n catch (e) {\n try {\n return this._canvas.toDataURL();\n }\n catch (err) {\n Util.error('Unable to get data URL. ' +\n err.message +\n ' For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n return '';\n }\n }\n }\n}\nexport class SceneCanvas extends Canvas {\n constructor(config = { width: 0, height: 0, willReadFrequently: false }) {\n super(config);\n this.context = new SceneContext(this, {\n willReadFrequently: config.willReadFrequently,\n });\n this.setSize(config.width, config.height);\n }\n}\nfunction isCanvasFarblingActive() {\n const c = Util.createCanvasElement();\n c.width = 1;\n c.height = 1;\n const ctx = c.getContext('2d', {\n willReadFrequently: true,\n });\n ctx.clearRect(0, 0, 1, 1);\n ctx.fillStyle = 'rgba(255,0,255,1)';\n ctx.fillRect(0, 0, 1, 1);\n const d = ctx.getImageData(0, 0, 1, 1).data;\n const exact = d[0] === 255 && d[1] === 0 && d[2] === 255 && d[3] === 255;\n return !exact;\n}\nfunction isBraveBrowser() {\n var _a, _b;\n if (typeof navigator === 'undefined') {\n return false;\n }\n return (_b = (_a = navigator.brave) === null || _a === void 0 ? void 0 : _a.isBrave()) !== null && _b !== void 0 ? _b : false;\n}\nlet warned = false;\nfunction checkHitCanvasSupport() {\n if (isBraveBrowser() && isCanvasFarblingActive() && !warned) {\n warned = true;\n Util.error('Looks like you have \"Brave shield\" enabled in your browser. It breaks KonvaJS internals. Please disable it. You may need to ask your users to do the same.');\n }\n return isBraveBrowser() && isCanvasFarblingActive();\n}\nexport class HitCanvas extends Canvas {\n constructor(config = { width: 0, height: 0 }) {\n super(config);\n this.hitCanvas = true;\n this.context = new HitContext(this);\n this.setSize(config.width, config.height);\n checkHitCanvasSupport();\n }\n}\n","import { Konva } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nexport const DD = {\n get isDragging() {\n let flag = false;\n DD._dragElements.forEach((elem) => {\n if (elem.dragStatus === 'dragging') {\n flag = true;\n }\n });\n return flag;\n },\n justDragged: false,\n get node() {\n let node;\n DD._dragElements.forEach((elem) => {\n node = elem.node;\n });\n return node;\n },\n _dragElements: new Map(),\n _drag(evt) {\n const nodesToFireEvents = [];\n DD._dragElements.forEach((elem, key) => {\n const { node } = elem;\n const stage = node.getStage();\n stage.setPointersPositions(evt);\n if (elem.pointerId === undefined) {\n elem.pointerId = Util._getFirstPointerId(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus !== 'dragging') {\n const dragDistance = node.dragDistance();\n const distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y));\n if (distance < dragDistance) {\n return;\n }\n node.startDrag({ evt });\n if (!node.isDragging()) {\n return;\n }\n }\n node._setDragPosition(evt, elem);\n nodesToFireEvents.push(node);\n });\n nodesToFireEvents.forEach((node) => {\n node.fire('dragmove', {\n type: 'dragmove',\n target: node,\n evt: evt,\n }, true);\n });\n },\n _endDragBefore(evt) {\n const drawNodes = [];\n DD._dragElements.forEach((elem) => {\n const { node } = elem;\n const stage = node.getStage();\n if (evt) {\n stage.setPointersPositions(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus === 'dragging' || elem.dragStatus === 'stopped') {\n DD.justDragged = true;\n Konva._mouseListenClick = false;\n Konva._touchListenClick = false;\n Konva._pointerListenClick = false;\n elem.dragStatus = 'stopped';\n }\n const drawNode = elem.node.getLayer() ||\n (elem.node instanceof Konva['Stage'] && elem.node);\n if (drawNode && drawNodes.indexOf(drawNode) === -1) {\n drawNodes.push(drawNode);\n }\n });\n drawNodes.forEach((drawNode) => {\n drawNode.draw();\n });\n },\n _endDragAfter(evt) {\n DD._dragElements.forEach((elem, key) => {\n if (elem.dragStatus === 'stopped') {\n elem.node.fire('dragend', {\n type: 'dragend',\n target: elem.node,\n evt: evt,\n }, true);\n }\n if (elem.dragStatus !== 'dragging') {\n DD._dragElements.delete(key);\n }\n });\n },\n};\nif (Konva.isBrowser) {\n window.addEventListener('mouseup', DD._endDragBefore, true);\n window.addEventListener('touchend', DD._endDragBefore, true);\n window.addEventListener('touchcancel', DD._endDragBefore, true);\n window.addEventListener('mousemove', DD._drag);\n window.addEventListener('touchmove', DD._drag);\n window.addEventListener('mouseup', DD._endDragAfter, false);\n window.addEventListener('touchend', DD._endDragAfter, false);\n window.addEventListener('touchcancel', DD._endDragAfter, false);\n}\n","import { Konva } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nfunction _formatValue(val) {\n if (Util._isString(val)) {\n return '\"' + val + '\"';\n }\n if (Object.prototype.toString.call(val) === '[object Number]') {\n return val;\n }\n if (Util._isBoolean(val)) {\n return val;\n }\n return Object.prototype.toString.call(val);\n}\nexport function RGBComponent(val) {\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n return Math.round(val);\n}\nexport function alphaComponent(val) {\n if (val > 1) {\n return 1;\n }\n else if (val < 0.0001) {\n return 0.0001;\n }\n return val;\n}\nexport function getNumberValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (!Util._isNumber(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number.');\n }\n return val;\n };\n }\n}\nexport function getNumberOrArrayOfNumbersValidator(noOfElements) {\n if (Konva.isUnminified) {\n return function (val, attr) {\n let isNumber = Util._isNumber(val);\n let isValidArray = Util._isArray(val) && val.length == noOfElements;\n if (!isNumber && !isValidArray) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or Array<number>(' +\n noOfElements +\n ')');\n }\n return val;\n };\n }\n}\nexport function getNumberOrAutoValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const isNumber = Util._isNumber(val);\n const isAuto = val === 'auto';\n if (!(isNumber || isAuto)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or \"auto\".');\n }\n return val;\n };\n }\n}\nexport function getStringValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (!Util._isString(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string.');\n }\n return val;\n };\n }\n}\nexport function getStringOrGradientValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const isString = Util._isString(val);\n const isGradient = Object.prototype.toString.call(val) === '[object CanvasGradient]' ||\n (val && val['addColorStop']);\n if (!(isString || isGradient)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string or a native gradient.');\n }\n return val;\n };\n }\n}\nexport function getFunctionValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (!Util._isFunction(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a function.');\n }\n return val;\n };\n }\n}\nexport function getNumberArrayValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const TypedArray = Int8Array ? Object.getPrototypeOf(Int8Array) : null;\n if (TypedArray && val instanceof TypedArray) {\n return val;\n }\n if (!Util._isArray(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a array of numbers.');\n }\n else {\n val.forEach(function (item) {\n if (!Util._isNumber(item)) {\n Util.warn('\"' +\n attr +\n '\" attribute has non numeric element ' +\n item +\n '. Make sure that all elements are numbers.');\n }\n });\n }\n return val;\n };\n }\n}\nexport function getBooleanValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const isBool = val === true || val === false;\n if (!isBool) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a boolean.');\n }\n return val;\n };\n }\n}\nexport function getComponentValidator(components) {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (val === undefined || val === null) {\n return val;\n }\n if (!Util.isObject(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be an object with properties ' +\n components);\n }\n return val;\n };\n }\n}\n","import { Util } from \"./Util.js\";\nimport { getComponentValidator } from \"./Validators.js\";\nconst GET = 'get';\nconst SET = 'set';\nexport const Factory = {\n addGetterSetter(constructor, attr, def, validator, after) {\n Factory.addGetter(constructor, attr, def);\n Factory.addSetter(constructor, attr, validator, after);\n Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addGetter(constructor, attr, def) {\n const method = GET + Util._capitalize(attr);\n constructor.prototype[method] =\n constructor.prototype[method] ||\n function () {\n const val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n },\n addSetter(constructor, attr, validator, after) {\n const method = SET + Util._capitalize(attr);\n if (!constructor.prototype[method]) {\n Factory.overWriteSetter(constructor, attr, validator, after);\n }\n },\n overWriteSetter(constructor, attr, validator, after) {\n const method = SET + Util._capitalize(attr);\n constructor.prototype[method] = function (val) {\n if (validator && val !== undefined && val !== null) {\n val = validator.call(this, val, attr);\n }\n this._setAttr(attr, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n },\n addComponentsGetterSetter(constructor, attr, components, validator, after) {\n const len = components.length, capitalize = Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr);\n constructor.prototype[getter] = function () {\n const ret = {};\n for (let n = 0; n < len; n++) {\n const component = components[n];\n ret[component] = this.getAttr(attr + capitalize(component));\n }\n return ret;\n };\n const basicValidator = getComponentValidator(components);\n constructor.prototype[setter] = function (val) {\n const oldVal = this.attrs[attr];\n if (validator) {\n val = validator.call(this, val, attr);\n }\n if (basicValidator) {\n basicValidator.call(this, val, attr);\n }\n for (const key in val) {\n if (!val.hasOwnProperty(key)) {\n continue;\n }\n this._setAttr(attr + capitalize(key), val[key]);\n }\n if (!val) {\n components.forEach((component) => {\n this._setAttr(attr + capitalize(component), undefined);\n });\n }\n this._fireChangeEvent(attr, oldVal, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addOverloadedGetterSetter(constructor, attr) {\n const capitalizedAttr = Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr;\n constructor.prototype[attr] = function () {\n if (arguments.length) {\n this[setter](arguments[0]);\n return this;\n }\n return this[getter]();\n };\n },\n addDeprecatedGetterSetter(constructor, attr, def, validator) {\n Util.error('Adding deprecated ' + attr);\n const method = GET + Util._capitalize(attr);\n const message = attr +\n ' property is deprecated and will be removed soon. Look at Konva change log for more information.';\n constructor.prototype[method] = function () {\n Util.error(message);\n const val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n Factory.addSetter(constructor, attr, validator, function () {\n Util.error(message);\n });\n Factory.addOverloadedGetterSetter(constructor, attr);\n },\n backCompat(constructor, methods) {\n Util.each(methods, function (oldMethodName, newMethodName) {\n const method = constructor.prototype[newMethodName];\n const oldGetter = GET + Util._capitalize(oldMethodName);\n const oldSetter = SET + Util._capitalize(oldMethodName);\n function deprecated() {\n method.apply(this, arguments);\n Util.error('\"' +\n oldMethodName +\n '\" method is deprecated and will be removed soon. Use \"\"' +\n newMethodName +\n '\" instead.');\n }\n constructor.prototype[oldMethodName] = deprecated;\n constructor.prototype[oldGetter] = deprecated;\n constructor.prototype[oldSetter] = deprecated;\n });\n },\n afterSetFilter() {\n this._filterUpToDate = false;\n },\n};\n","import { HitCanvas, SceneCanvas } from \"./Canvas.js\";\nimport { isCSSFiltersSupported } from \"./Context.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Konva } from \"./Global.js\";\nimport { Transform, Util } from \"./Util.js\";\nimport { getBooleanValidator, getNumberValidator, getStringValidator, } from \"./Validators.js\";\nfunction parseCSSFilters(cssFilter) {\n const filterRegex = /(\\w+)\\(([^)]+)\\)/g;\n let match;\n while ((match = filterRegex.exec(cssFilter)) !== null) {\n const [, filterName, filterValue] = match;\n switch (filterName) {\n case 'blur': {\n const blurRadius = parseFloat(filterValue.replace('px', ''));\n return function (imageData) {\n this.blurRadius(blurRadius * 0.5);\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Blur) {\n KonvaFilters.Blur.call(this, imageData);\n }\n };\n }\n case 'brightness': {\n const brightness = filterValue.includes('%')\n ? parseFloat(filterValue) / 100\n : parseFloat(filterValue);\n return function (imageData) {\n this.brightness(brightness);\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Brightness) {\n KonvaFilters.Brightness.call(this, imageData);\n }\n };\n }\n case 'contrast': {\n const contrast = parseFloat(filterValue);\n return function (imageData) {\n const konvaContrast = 100 * (Math.sqrt(contrast) - 1);\n this.contrast(konvaContrast);\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Contrast) {\n KonvaFilters.Contrast.call(this, imageData);\n }\n };\n }\n case 'grayscale': {\n return function (imageData) {\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Grayscale) {\n KonvaFilters.Grayscale.call(this, imageData);\n }\n };\n }\n case 'sepia': {\n return function (imageData) {\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Sepia) {\n KonvaFilters.Sepia.call(this, imageData);\n }\n };\n }\n case 'invert': {\n return function (imageData) {\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Invert) {\n KonvaFilters.Invert.call(this, imageData);\n }\n };\n }\n default:\n Util.warn(`CSS filter \"${filterName}\" is not supported in fallback mode. Consider using function filters for better compatibility.`);\n break;\n }\n }\n return () => { };\n}\nconst ABSOLUTE_OPACITY = 'absoluteOpacity', ALL_LISTENERS = 'allEventListeners', ABSOLUTE_TRANSFORM = 'absoluteTransform', ABSOLUTE_SCALE = 'absoluteScale', CANVAS = 'canvas', CHANGE = 'Change', CHILDREN = 'children', KONVA = 'konva', LISTENING = 'listening', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', POINTERENTER = 'pointerenter', POINTERLEAVE = 'pointerleave', TOUCHENTER = 'touchenter', TOUCHLEAVE = 'touchleave', NAME = 'name', SET = 'set', SHAPE = 'Shape', SPACE = ' ', STAGE = 'stage', TRANSFORM = 'transform', UPPER_STAGE = 'Stage', VISIBLE = 'visible', TRANSFORM_CHANGE_STR = [\n 'xChange.konva',\n 'yChange.konva',\n 'scaleXChange.konva',\n 'scaleYChange.konva',\n 'skewXChange.konva',\n 'skewYChange.konva',\n 'rotationChange.konva',\n 'offsetXChange.konva',\n 'offsetYChange.konva',\n 'transformsEnabledChange.konva',\n].join(SPACE);\nlet idCounter = 1;\nexport class Node {\n constructor(config) {\n this._id = idCounter++;\n this.eventListeners = {};\n this.attrs = {};\n this.index = 0;\n this._allEventListeners = null;\n this.parent = null;\n this._cache = new Map();\n this._attachedDepsListeners = new Map();\n this._lastPos = null;\n this._batchingTransformChange = false;\n this._needClearTransformCache = false;\n this._filterUpToDate = false;\n this._isUnderCache = false;\n this._dragEventId = null;\n this._shouldFireChangeEvents = false;\n this.setAttrs(config);\n this._shouldFireChangeEvents = true;\n }\n hasChildren() {\n return false;\n }\n _clearCache(attr) {\n if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\n this._cache.get(attr)) {\n this._cache.get(attr).dirty = true;\n }\n else if (attr) {\n this._cache.delete(attr);\n }\n else {\n this._cache.clear();\n }\n }\n _getCache(attr, privateGetter) {\n let cache = this._cache.get(attr);\n const isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n const invalid = cache === undefined || (isTransform && cache.dirty === true);\n if (invalid) {\n cache = privateGetter.call(this);\n this._cache.set(attr, cache);\n }\n return cache;\n }\n _calculate(name, deps, getter) {\n if (!this._attachedDepsListeners.get(name)) {\n const depsString = deps.map((dep) => dep + 'Change.konva').join(SPACE);\n this.on(depsString, () => {\n this._clearCache(name);\n });\n this._attachedDepsListeners.set(name, true);\n }\n return this._getCache(name, getter);\n }\n _getCanvasCache() {\n return this._cache.get(CANVAS);\n }\n _clearSelfAndDescendantCache(attr) {\n this._clearCache(attr);\n if (attr === ABSOLUTE_TRANSFORM) {\n this.fire('absoluteTransformChange');\n }\n }\n clearCache() {\n if (this._cache.has(CANVAS)) {\n const { scene, filter, hit, buffer } = this._cache.get(CANVAS);\n Util.releaseCanvas(scene, filter, hit, buffer);\n this._cache.delete(CANVAS);\n }\n this._clearSelfAndDescendantCache();\n this._requestDraw();\n return this;\n }\n cache(config) {\n const conf = config || {};\n let rect = {};\n if (conf.x === undefined ||\n conf.y === undefined ||\n conf.width === undefined ||\n conf.height === undefined) {\n rect = this.getClientRect({\n skipTransform: true,\n relativeTo: this.getParent() || undefined,\n });\n }\n let width = Math.ceil(conf.width || rect.width), height = Math.ceil(conf.height || rect.height), pixelRatio = conf.pixelRatio, x = conf.x === undefined ? Math.floor(rect.x) : conf.x, y = conf.y === undefined ? Math.floor(rect.y) : conf.y, offset = conf.offset || 0, drawBorder = conf.drawBorder || false, hitCanvasPixelRatio = conf.hitCanvasPixelRatio || 1;\n if (!width || !height) {\n Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.');\n return;\n }\n const extraPaddingX = Math.abs(Math.round(rect.x) - x) > 0.5 ? 1 : 0;\n const extraPaddingY = Math.abs(Math.round(rect.y) - y) > 0.5 ? 1 : 0;\n width += offset * 2 + extraPaddingX;\n height += offset * 2 + extraPaddingY;\n x -= offset;\n y -= offset;\n const cachedSceneCanvas = new SceneCanvas({\n pixelRatio: pixelRatio,\n width: width,\n height: height,\n }), cachedFilterCanvas = new SceneCanvas({\n pixelRatio: pixelRatio,\n width: 0,\n height: 0,\n willReadFrequently: true,\n }), cachedHitCanvas = new HitCanvas({\n pixelRatio: hitCanvasPixelRatio,\n width: width,\n height: height,\n }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.getContext();\n const bufferCanvas = new SceneCanvas({\n width: cachedSceneCanvas.width / cachedSceneCanvas.pixelRatio + Math.abs(x),\n height: cachedSceneCanvas.height / cachedSceneCanvas.pixelRatio + Math.abs(y),\n pixelRatio: cachedSceneCanvas.pixelRatio,\n }), bufferContext = bufferCanvas.getContext();\n cachedHitCanvas.isCache = true;\n cachedSceneCanvas.isCache = true;\n this._cache.delete(CANVAS);\n this._filterUpToDate = false;\n if (conf.imageSmoothingEnabled === false) {\n cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\n cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\n }\n sceneContext.save();\n hitContext.save();\n bufferContext.save();\n sceneContext.translate(-x, -y);\n hitContext.translate(-x, -y);\n bufferContext.translate(-x, -y);\n bufferCanvas.x = x;\n bufferCanvas.y = y;\n this._isUnderCache = true;\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this.drawScene(cachedSceneCanvas, this, bufferCanvas);\n this.drawHit(cachedHitCanvas, this);\n this._isUnderCache = false;\n sceneContext.restore();\n hitContext.restore();\n if (drawBorder) {\n sceneContext.save();\n sceneContext.beginPath();\n sceneContext.rect(0, 0, width, height);\n sceneContext.closePath();\n sceneContext.setAttr('strokeStyle', 'red');\n sceneContext.setAttr('lineWidth', 5);\n sceneContext.stroke();\n sceneContext.restore();\n }\n this._cache.set(CANVAS, {\n scene: cachedSceneCanvas,\n filter: cachedFilterCanvas,\n hit: cachedHitCanvas,\n buffer: bufferCanvas,\n x: x,\n y: y,\n });\n this._requestDraw();\n return this;\n }\n isCached() {\n return this._cache.has(CANVAS);\n }\n getClientRect(config) {\n throw new Error('abstract \"getClientRect\" method call');\n }\n _transformedRect(rect, top) {\n const points = [\n { x: rect.x, y: rect.y },\n { x: rect.x + rect.width, y: rect.y },\n { x: rect.x + rect.width, y: rect.y + rect.height },\n { x: rect.x, y: rect.y + rect.height },\n ];\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n const trans = this.getAbsoluteTransform(top);\n points.forEach(function (point) {\n const transformed = trans.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n _drawCachedSceneCanvas(context) {\n context.save();\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n const canvasCache = this._getCanvasCache();\n context.translate(canvasCache.x, canvasCache.y);\n const cacheCanvas = this._getCachedSceneCanvas();\n const ratio = cacheCanvas.pixelRatio;\n context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n context.restore();\n }\n _drawCachedHitCanvas(context) {\n const canvasCache = this._getCanvasCache(), hitCanvas = canvasCache.hit;\n context.save();\n context.translate(canvasCache.x, canvasCache.y);\n context.drawImage(hitCanvas._canvas, 0, 0, hitCanvas.width / hitCanvas.pixelRatio, hitCanvas.height / hitCanvas.pixelRatio);\n context.restore();\n }\n _getCachedSceneCanvas() {\n let filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n if (!filters || filters.length === 0) {\n return sceneCanvas;\n }\n if (this._filterUpToDate) {\n return filterCanvas;\n }\n let useNativeOnly = true;\n for (let i = 0; i < filters.length; i++) {\n const fallbackRequired = typeof filters[i] === 'string' && !isCSSFiltersSupported();\n if (fallbackRequired) {\n }\n if (typeof filters[i] !== 'string' || !isCSSFiltersSupported()) {\n useNativeOnly = false;\n break;\n }\n }\n const ratio = sceneCanvas.pixelRatio;\n filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\n if (useNativeOnly) {\n const finalFilter = filters.join(' ');\n filterContext.save();\n filterContext.setAttr('filter', finalFilter);\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n filterContext.restore();\n this._filterUpToDate = true;\n return filterCanvas;\n }\n try {\n len = filters.length;\n filterContext.clear();\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n imageData = filterContext.getImageData(0, 0, filterCanvas.getWidth(), filterCanvas.getHeight());\n for (n = 0; n < len; n++) {\n filter = filters[n];\n if (typeof filter === 'string') {\n filter = parseCSSFilters(filter);\n }\n filter.call(this, imageData);\n filterContext.putImageData(imageData, 0, 0);\n }\n }\n catch (e) {\n Util.error('Unable to apply filter. ' +\n e.message +\n ' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n }\n this._filterUpToDate = true;\n return filterCanvas;\n }\n on(evtStr, handler) {\n if (this._cache) {\n this._cache.delete(ALL_LISTENERS);\n }\n if (arguments.length === 3) {\n return this._delegate.apply(this, arguments);\n }\n const events = evtStr.split(SPACE);\n for (let n = 0; n < events.length; n++) {\n const event = events[n];\n const parts = event.split('.');\n const baseEvent = parts[0];\n const name = parts[1] || '';\n if (!this.eventListeners[baseEvent]) {\n this.eventListeners[baseEvent] = [];\n }\n this.eventListeners[baseEvent].push({ name, handler });\n }\n return this;\n }\n off(evtStr, callback) {\n let events = (evtStr || '').split(SPACE), len = events.length, n, t, event, parts, baseEvent, name;\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (!evtStr) {\n for (t in this.eventListeners) {\n this._off(t);\n }\n }\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1];\n if (baseEvent) {\n if (this.eventListeners[baseEvent]) {\n this._off(baseEvent, name, callback);\n }\n }\n else {\n for (t in this.eventListeners) {\n this._off(t, name, callback);\n }\n }\n }\n return this;\n }\n dispatchEvent(evt) {\n const e = {\n target: this,\n type: evt.type,\n evt: evt,\n };\n this.fire(evt.type, e);\n return this;\n }\n addEventListener(type, handler) {\n this.on(type, function (evt) {\n handler.call(this, evt.evt);\n });\n return this;\n }\n removeEventListener(type) {\n this.off(type);\n return this;\n }\n _delegate(event, selector, handler) {\n const stopNode = this;\n this.on(event, function (evt) {\n const targets = evt.target.findAncestors(selector, true, stopNode);\n for (let i = 0; i < targets.length; i++) {\n evt = Util.cloneObject(evt);\n evt.currentTarget = targets[i];\n handler.call(targets[i], evt);\n }\n });\n }\n remove() {\n if (this.isDragging()) {\n this.stopDrag();\n }\n DD._dragElements.delete(this._id);\n this._remove();\n return this;\n }\n _clearCaches() {\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this._clearSelfAndDescendantCache(STAGE);\n this._clearSelfAndDescendantCache(VISIBLE);\n this._clearSelfAndDescendantCache(LISTENING);\n }\n _remove() {\n this._clearCaches();\n const parent = this.getParent();\n if (parent && parent.children) {\n parent.children.splice(this.index, 1);\n parent._setChildrenIndices();\n this.parent = null;\n }\n }\n destroy() {\n this.remove();\n this.clearCache();\n return this;\n }\n getAttr(attr) {\n const method = 'get' + Util._capitalize(attr);\n if (Util._isFunction(this[method])) {\n return this[method]();\n }\n return this.attrs[attr];\n }\n getAncestors() {\n let parent = this.getParent(), ancestors = [];\n while (parent) {\n ancestors.push(parent);\n parent = parent.getParent();\n }\n return ancestors;\n }\n getAttrs() {\n return (this.attrs || {});\n }\n setAttrs(config) {\n this._batchTransformChanges(() => {\n let key, method;\n if (!config) {\n return this;\n }\n for (key in config) {\n if (key === CHILDREN) {\n continue;\n }\n method = SET + Util._capitalize(key);\n if (Util._isFunction(this[method])) {\n this[method](config[key]);\n }\n else {\n this._setAttr(key, config[key]);\n }\n }\n });\n return this;\n }\n isListening() {\n return this._getCache(LISTENING, this._isListening);\n }\n _isListening(relativeTo) {\n const listening = this.listening();\n if (!listening) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isListening(relativeTo);\n }\n else {\n return true;\n }\n }\n isVisible() {\n return this._getCache(VISIBLE, this._isVisible);\n }\n _isVisible(relativeTo) {\n const visible = this.visible();\n if (!visible) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isVisible(relativeTo);\n }\n else {\n return true;\n }\n }\n shouldDrawHit(top, skipDragCheck = false) {\n if (top) {\n return this._isVisible(top) && this._isListening(top);\n }\n const layer = this.getLayer();\n let layerUnderDrag = false;\n DD._dragElements.forEach((elem) => {\n if (elem.dragStatus !== 'dragging') {\n return;\n }\n else if (elem.node.nodeType === 'Stage') {\n layerUnderDrag = true;\n }\n else if (elem.node.getLayer() === layer) {\n layerUnderDrag = true;\n }\n });\n const dragSkip = !skipDragCheck &&\n !Konva.hitOnDragEnabled &&\n (layerUnderDrag || Konva.isTransforming());\n return this.isListening() && this.isVisible() && !dragSkip;\n }\n show() {\n this.visible(true);\n return this;\n }\n hide() {\n this.visible(false);\n return this;\n }\n getZIndex() {\n return this.index || 0;\n }\n getAbsoluteZIndex() {\n let depth = this.getDepth(), that = this, index = 0, nodes, len, n, child;\n function addChildren(children) {\n nodes = [];\n len = children.length;\n for (n = 0; n < len; n++) {\n child = children[n];\n index++;\n if (child.nodeType !== SHAPE) {\n nodes = nodes.concat(child.getChildren().slice());\n }\n if (child._id === that._id) {\n n = len;\n }\n }\n if (nodes.length > 0 && nodes[0].getDepth() <= depth) {\n addChildren(nodes);\n }\n }\n const stage = this.getStage();\n if (that.nodeType !== UPPER_STAGE && stage) {\n addChildren(stage.getChildren());\n }\n return index;\n }\n getDepth() {\n let depth = 0, parent = this.parent;\n while (parent) {\n depth++;\n parent = parent.parent;\n }\n return depth;\n }\n _batchTransformChanges(func) {\n this._batchingTransformChange = true;\n func();\n this._batchingTransformChange = false;\n if (this._needClearTransformCache) {\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n }\n this._needClearTransformCache = false;\n }\n setPosition(pos) {\n this._batchTransformChanges(() => {\n this.x(pos.x);\n this.y(pos.y);\n });\n return this;\n }\n getPosition() {\n return {\n x: this.x(),\n y: this.y(),\n };\n }\n getRelativePointerPosition() {\n const stage = this.getStage();\n if (!stage) {\n return null;\n }\n const pos = stage.getPointerPosition();\n if (!pos) {\n return null;\n }\n const transform = this.getAbsoluteTransform().copy();\n transform.invert();\n return transform.point(pos);\n }\n getAbsolutePosition(top) {\n let haveCachedParent = false;\n let parent = this.parent;\n while (parent) {\n if (parent.isCached()) {\n haveCachedParent = true;\n break;\n }\n parent = parent.parent;\n }\n if (haveCachedParent && !top) {\n top = true;\n }\n const absoluteMatrix = this.getAbsoluteTransform(top).getMatrix(), absoluteTransform = new Transform(), offset = this.offset();\n absoluteTransform.m = absoluteMatrix.slice();\n absoluteTransform.translate(offset.x, offset.y);\n return absoluteTransform.getTranslation();\n }\n setAbsolutePosition(pos) {\n const { x, y, ...origTrans } = this._clearTransform();\n this.attrs.x = x;\n this.attrs.y = y;\n this._clearCache(TRANSFORM);\n const it = this._getAbsoluteTransform().copy();\n it.invert();\n it.translate(pos.x, pos.y);\n pos = {\n x: this.attrs.x + it.getTranslation().x,\n y: this.attrs.y + it.getTranslation().y,\n };\n this._setTransform(origTrans);\n this.setPosition({ x: pos.x, y: pos.y });\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n return this;\n }\n _setTransform(trans) {\n let key;\n for (key in trans) {\n this.attrs[key] = trans[key];\n }\n }\n _clearTransform() {\n const trans = {\n x: this.x(),\n y: this.y(),\n rotation: this.rotation(),\n scaleX: this.scaleX(),\n scaleY: this.scaleY(),\n offsetX: this.offsetX(),\n offsetY: this.offsetY(),\n skewX: this.skewX(),\n skewY: this.skewY(),\n };\n this.attrs.x = 0;\n this.attrs.y = 0;\n this.attrs.rotation = 0;\n this.attrs.scaleX = 1;\n this.attrs.scaleY = 1;\n this.attrs.offsetX = 0;\n this.attrs.offsetY = 0;\n this.attrs.skewX = 0;\n this.attrs.skewY = 0;\n return trans;\n }\n move(change) {\n let changeX = change.x, changeY = change.y, x = this.x(), y = this.y();\n if (changeX !== undefined) {\n x += changeX;\n }\n if (changeY !== undefined) {\n y += changeY;\n }\n this.setPosition({ x: x, y: y });\n return this;\n }\n _eachAncestorReverse(func, top) {\n let family = [], parent = this.getParent(), len, n;\n if (top && top._id === this._id) {\n return;\n }\n family.unshift(this);\n while (parent && (!top || parent._id !== top._id)) {\n family.unshift(parent);\n parent = parent.parent;\n }\n len = family.length;\n for (n = 0; n < len; n++) {\n func(family[n]);\n }\n }\n rotate(theta) {\n this.rotation(this.rotation() + theta);\n return this;\n }\n moveToTop() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveToTop function is ignored.');\n return false;\n }\n const index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.push(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveUp() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveUp function is ignored.');\n return false;\n }\n const index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index + 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveDown() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveDown function is ignored.');\n return false;\n }\n const index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index - 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveToBottom function is ignored.');\n return false;\n }\n const index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.unshift(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n setZIndex(zIndex) {\n if (!this.parent) {\n Util.warn('Node has no parent. zIndex parameter is ignored.');\n return this;\n }\n if (zIndex < 0 || zIndex >= this.parent.children.length) {\n Util.warn('Unexpected value ' +\n zIndex +\n ' for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to ' +\n (this.parent.children.length - 1) +\n '.');\n }\n const index = this.index;\n this.parent.children.splice(index, 1);\n this.parent.children.splice(zIndex, 0, this);\n this.parent._setChildrenIndices();\n return this;\n }\n getAbsoluteOpacity() {\n return this._getCache(ABSOLUTE_OPACITY, this._getAbsoluteOpacity);\n }\n _getAbsoluteOpacity() {\n let absOpacity = this.opacity();\n const parent = this.getParent();\n if (parent && !parent._isUnderCache) {\n absOpacity *= parent.getAbsoluteOpacity();\n }\n return absOpacity;\n }\n moveTo(newContainer) {\n if (this.getParent() !== newContainer) {\n this._remove();\n newContainer.add(this);\n }\n return this;\n }\n toObject() {\n let attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\n const obj = {\n attrs: {},\n className: this.getClassName(),\n };\n for (key in attrs) {\n val = attrs[key];\n nonPlainObject =\n Util.isObject(val) && !Util._isPlainObject(val) && !Util._isArray(val);\n if (nonPlainObject) {\n continue;\n }\n getter = typeof this[key] === 'function' && this[key];\n delete attrs[key];\n defaultValue = getter ? getter.call(this) : null;\n attrs[key] = val;\n if (defaultValue !== val) {\n obj.attrs[key] = val;\n }\n }\n return Util._prepareToStringify(obj);\n }\n toJSON() {\n return JSON.stringify(this.toObject());\n }\n getParent() {\n return this.parent;\n }\n findAncestors(selector, includeSelf, stopNode) {\n const res = [];\n if (includeSelf && this._isMatch(selector)) {\n res.push(this);\n }\n let ancestor = this.parent;\n while (ancestor) {\n if (ancestor === stopNode) {\n return res;\n }\n if (ancestor._isMatch(selector)) {\n res.push(ancestor);\n }\n ancestor = ancestor.parent;\n }\n return res;\n }\n isAncestorOf(node) {\n return false;\n }\n findAncestor(selector, includeSelf, stopNode) {\n return this.findAncestors(selector, includeSelf, stopNode)[0];\n }\n _isMatch(selector) {\n if (!selector) {\n return false;\n }\n if (typeof selector === 'function') {\n return selector(this);\n }\n let selectorArr = selector.replace(/ /g, '').split(','), len = selectorArr.length, n, sel;\n for (n = 0; n < len; n++) {\n sel = selectorArr[n];\n if (!Util.isValidSelector(sel)) {\n Util.warn('Selector \"' +\n sel +\n '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\n Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\n Util.warn('Konva is awesome, right?');\n }\n if (sel.charAt(0) === '#') {\n if (this.id() === sel.slice(1)) {\n return true;\n }\n }\n else if (sel.charAt(0) === '.') {\n if (this.hasName(sel.slice(1))) {\n return true;\n }\n }\n else if (this.className === sel || this.nodeType === sel) {\n return true;\n }\n }\n return false;\n }\n getLayer() {\n const parent = this.getParent();\n return parent ? parent.getLayer() : null;\n }\n getStage() {\n return this._getCache(STAGE, this._getStage);\n }\n _getStage() {\n const parent = this.getParent();\n if (parent) {\n return parent.getStage();\n }\n else {\n return null;\n }\n }\n fire(eventType, evt = {}, bubble) {\n evt.target = evt.target || this;\n if (bubble) {\n this._fireAndBubble(eventType, evt);\n }\n else {\n this._fire(eventType, evt);\n }\n return this;\n }\n getAbsoluteTransform(top) {\n if (top) {\n return this._getAbsoluteTransform(top);\n }\n else {\n return this._getCache(ABSOLUTE_TRANSFORM, this._getAbsoluteTransform);\n }\n }\n _getAbsoluteTransform(top) {\n let at;\n if (top) {\n at = new Transform();\n this._eachAncestorReverse(function (node) {\n const transformsEnabled = node.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(node.getTransform());\n }\n else if (transformsEnabled === 'position') {\n at.translate(node.x() - node.offsetX(), node.y() - node.offsetY());\n }\n }, top);\n return at;\n }\n else {\n at = this._cache.get(ABSOLUTE_TRANSFORM) || new Transform();\n if (this.parent) {\n this.parent.getAbsoluteTransform().copyInto(at);\n }\n else {\n at.reset();\n }\n const transformsEnabled = this.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(this.getTransform());\n }\n else if (transformsEnabled === 'position') {\n const x = this.attrs.x || 0;\n const y = this.attrs.y || 0;\n const offsetX = this.attrs.offsetX || 0;\n const offsetY = this.attrs.offsetY || 0;\n at.translate(x - offsetX, y - offsetY);\n }\n at.dirty = false;\n return at;\n }\n }\n getAbsoluteScale(top) {\n let parent = this;\n while (parent) {\n if (parent._isUnderCache) {\n top = parent;\n }\n parent = parent.getParent();\n }\n const transform = this.getAbsoluteTransform(top);\n const attrs = transform.decompose();\n return {\n x: attrs.scaleX,\n y: attrs.scaleY,\n };\n }\n getAbsoluteRotation() {\n return this.getAbsoluteTransform().decompose().rotation;\n }\n getTransform() {\n return this._getCache(TRANSFORM, this._getTransform);\n }\n _getTransform() {\n var _a, _b;\n const m = this._cache.get(TRANSFORM) || new Transform();\n m.reset();\n const x = this.x(), y = this.y(), rotation = Konva.getAngle(this.rotation()), scaleX = (_a = this.attrs.scaleX) !== null && _a !== void 0 ? _a : 1, scaleY = (_b = this.attrs.scaleY) !== null && _b !== void 0 ? _b : 1, skewX = this.attrs.skewX || 0, skewY = this.attrs.skewY || 0, offsetX = this.attrs.offsetX || 0, offsetY = this.attrs.offsetY || 0;\n if (x !== 0 || y !== 0) {\n m.translate(x, y);\n }\n if (rotation !== 0) {\n m.rotate(rotation);\n }\n if (skewX !== 0 || skewY !== 0) {\n m.skew(skewX, skewY);\n }\n if (scaleX !== 1 || scaleY !== 1) {\n m.scale(scaleX, scaleY);\n }\n if (offsetX !== 0 || offsetY !== 0) {\n m.translate(-1 * offsetX, -1 * offsetY);\n }\n m.dirty = false;\n return m;\n }\n clone(obj) {\n let attrs = Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\n for (key in obj) {\n attrs[key] = obj[key];\n }\n const node = new this.constructor(attrs);\n for (key in this.eventListeners) {\n allListeners = this.eventListeners[key];\n len = allListeners.length;\n for (n = 0; n < len; n++) {\n listener = allListeners[n];\n if (listener.name.indexOf(KONVA) < 0) {\n if (!node.eventListeners[key]) {\n node.eventListeners[key] = [];\n }\n node.eventListeners[key].push(listener);\n }\n }\n }\n return node;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n const box = this.getClientRect();\n const stage = this.getStage(), x = config.x !== undefined ? config.x : Math.floor(box.x), y = config.y !== undefined ? config.y : Math.floor(box.y), pixelRatio = config.pixelRatio || 1, canvas = new SceneCanvas({\n width: config.width || Math.ceil(box.width) || (stage ? stage.width() : 0),\n height: config.height ||\n Math.ceil(box.height) ||\n (stage ? stage.height() : 0),\n pixelRatio: pixelRatio,\n }), context = canvas.getContext();\n const bufferCanvas = new SceneCanvas({\n width: canvas.width / canvas.pixelRatio + Math.abs(x),\n height: canvas.height / canvas.pixelRatio + Math.abs(y),\n pixelRatio: canvas.pixelRatio,\n });\n if (config.imageSmoothingEnabled === false) {\n context._context.imageSmoothingEnabled = false;\n }\n context.save();\n if (x || y) {\n context.translate(-1 * x, -1 * y);\n }\n this.drawScene(canvas, undefined, bufferCanvas);\n context.restore();\n return canvas;\n }\n toCanvas(config) {\n return this._toKonvaCanvas(config)._canvas;\n }\n toDataURL(config) {\n config = config || {};\n const mimeType = config.mimeType || null, quality = config.quality || null;\n const url = this._toKonvaCanvas(config).toDataURL(mimeType, quality);\n if (config.callback) {\n config.callback(url);\n }\n return url;\n }\n toImage(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n Util._urlToImage(this.toDataURL(config), function (img) {\n resolve(img);\n callback === null || callback === void 0 ? void 0 : callback(img);\n });\n }\n catch (err) {\n reject(err);\n }\n });\n }\n toBlob(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n this.toCanvas(config).toBlob((blob) => {\n resolve(blob);\n callback === null || callback === void 0 ? void 0 : callback(blob);\n }, config === null || config === void 0 ? void 0 : config.mimeType, config === null || config === void 0 ? void 0 : config.quality);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n setSize(size) {\n this.width(size.width);\n this.height(size.height);\n return this;\n }\n getSize() {\n return {\n width: this.width(),\n height: this.height(),\n };\n }\n getClassName() {\n return this.className || this.nodeType;\n }\n getType() {\n return this.nodeType;\n }\n getDragDistance() {\n if (this.attrs.dragDistance !== undefined) {\n return this.attrs.dragDistance;\n }\n else if (this.parent) {\n return this.parent.getDragDistance();\n }\n else {\n return Konva.dragDistance;\n }\n }\n _off(type, name, callback) {\n let evtListeners = this.eventListeners[type], i, evtName, handler;\n for (i = 0; i < evtListeners.length; i++) {\n evtName = evtListeners[i].name;\n handler = evtListeners[i].handler;\n if ((evtName !== 'konva' || name === 'konva') &&\n (!name || evtName === name) &&\n (!callback || callback === handler)) {\n evtListeners.splice(i, 1);\n if (evtListeners.length === 0) {\n delete this.eventListeners[type];\n break;\n }\n i--;\n }\n }\n }\n _fireChangeEvent(attr, oldVal, newVal) {\n this._fire(attr + CHANGE, {\n oldVal: oldVal,\n newVal: newVal,\n });\n }\n addName(name) {\n if (!this.hasName(name)) {\n const oldName = this.name();\n const newName = oldName ? oldName + ' ' + name : name;\n this.name(newName);\n }\n return this;\n }\n hasName(name) {\n if (!name) {\n return false;\n }\n const fullName = this.name();\n if (!fullName) {\n return false;\n }\n const names = (fullName || '').split(/\\s/g);\n return names.indexOf(name) !== -1;\n }\n removeName(name) {\n const names = (this.name() || '').split(/\\s/g);\n const index = names.indexOf(name);\n if (index !== -1) {\n names.splice(index, 1);\n this.name(names.join(' '));\n }\n return this;\n }\n setAttr(attr, val) {\n const func = this[SET + Util._capitalize(attr)];\n if (Util._isFunction(func)) {\n func.call(this, val);\n }\n else {\n this._setAttr(attr, val);\n }\n return this;\n }\n _requestDraw() {\n if (Konva.autoDrawEnabled) {\n const drawNode = this.getLayer() || this.getStage();\n drawNode === null || drawNode === void 0 ? void 0 : drawNode.batchDraw();\n }\n }\n _setAttr(key, val) {\n const oldVal = this.attrs[key];\n if (oldVal === val && !Util.isObject(val)) {\n return;\n }\n if (val === undefined || val === null) {\n delete this.attrs[key];\n }\n else {\n this.attrs[key] = val;\n }\n if (this._shouldFireChangeEvents) {\n this._fireChangeEvent(key, oldVal, val);\n }\n this._requestDraw();\n }\n _setComponentAttr(key, component, val) {\n let oldVal;\n if (val !== undefined) {\n oldVal = this.attrs[key];\n if (!oldVal) {\n this.attrs[key] = this.getAttr(key);\n }\n this.attrs[key][component] = val;\n this._fireChangeEvent(key, oldVal, val);\n }\n }\n _fireAndBubble(eventType, evt, compareShape) {\n if (evt && this.nodeType === SHAPE) {\n evt.target = this;\n }\n const nonBubbling = [\n MOUSEENTER,\n MOUSELEAVE,\n POINTERENTER,\n POINTERLEAVE,\n TOUCHENTER,\n TOUCHLEAVE,\n ];\n const shouldStop = nonBubbling.indexOf(eventType) !== -1 &&\n ((compareShape &&\n (this === compareShape ||\n (this.isAncestorOf && this.isAncestorOf(compareShape)))) ||\n (this.nodeType === 'Stage' && !compareShape));\n if (!shouldStop) {\n this._fire(eventType, evt);\n const stopBubble = nonBubbling.indexOf(eventType) !== -1 &&\n compareShape &&\n compareShape.isAncestorOf &&\n compareShape.isAncestorOf(this) &&\n !compareShape.isAncestorOf(this.parent);\n if (((evt && !evt.cancelBubble) || !evt) &&\n this.parent &&\n this.parent.isListening() &&\n !stopBubble) {\n if (compareShape && compareShape.parent) {\n this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\n }\n else {\n this._fireAndBubble.call(this.parent, eventType, evt);\n }\n }\n }\n }\n _getProtoListeners(eventType) {\n var _a, _b, _c;\n const allListeners = (_a = this._cache.get(ALL_LISTENERS)) !== null && _a !== void 0 ? _a : {};\n let events = allListeners === null || allListeners === void 0 ? void 0 : allListeners[eventType];\n if (events === undefined) {\n events = [];\n let obj = Object.getPrototypeOf(this);\n while (obj) {\n const hierarchyEvents = (_c = (_b = obj.eventListeners) === null || _b === void 0 ? void 0 : _b[eventType]) !== null && _c !== void 0 ? _c : [];\n events.push(...hierarchyEvents);\n obj = Object.getPrototypeOf(obj);\n }\n allListeners[eventType] = events;\n this._cache.set(ALL_LISTENERS, allListeners);\n }\n return events;\n }\n _fire(eventType, evt) {\n evt = evt || {};\n evt.currentTarget = this;\n evt.type = eventType;\n const topListeners = this._getProtoListeners(eventType);\n if (topListeners) {\n for (let i = 0; i < topListeners.length; i++) {\n topListeners[i].handler.call(this, evt);\n }\n }\n const selfListeners = this.eventListeners[eventType];\n if (selfListeners) {\n for (let i = 0; i < selfListeners.length; i++) {\n selfListeners[i].handler.call(this, evt);\n }\n }\n }\n draw() {\n this.drawScene();\n this.drawHit();\n return this;\n }\n _createDragElement(evt) {\n const pointerId = evt ? evt.pointerId : undefined;\n const stage = this.getStage();\n const ap = this.getAbsolutePosition();\n if (!stage) {\n return;\n }\n const pos = stage._getPointerById(pointerId) ||\n stage._changedPointerPositions[0] ||\n ap;\n DD._dragElements.set(this._id, {\n node: this,\n startPointerPos: pos,\n offset: {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n },\n dragStatus: 'ready',\n pointerId,\n });\n }\n startDrag(evt, bubbleEvent = true) {\n if (!DD._dragElements.has(this._id)) {\n this._createDragElement(evt);\n }\n const elem = DD._dragElements.get(this._id);\n elem.dragStatus = 'dragging';\n this.fire('dragstart', {\n type: 'dragstart',\n target: this,\n evt: evt && evt.evt,\n }, bubbleEvent);\n }\n _setDragPosition(evt, elem) {\n const pos = this.getStage()._getPointerById(elem.pointerId);\n if (!pos) {\n return;\n }\n let newNodePos = {\n x: pos.x - elem.offset.x,\n y: pos.y - elem.offset.y,\n };\n const dbf = this.dragBoundFunc();\n if (dbf !== undefined) {\n const bounded = dbf.call(this, newNodePos, evt);\n if (!bounded) {\n Util.warn('dragBoundFunc did not return any value. That is unexpected behavior. You must return new absolute position from dragBoundFunc.');\n }\n else {\n newNodePos = bounded;\n }\n }\n if (!this._lastPos ||\n this._lastPos.x !== newNodePos.x ||\n this._lastPos.y !== newNodePos.y) {\n this.setAbsolutePosition(newNodePos);\n this._requestDraw();\n }\n this._lastPos = newNodePos;\n }\n stopDrag(evt) {\n const elem = DD._dragElements.get(this._id);\n if (elem) {\n elem.dragStatus = 'stopped';\n }\n DD._endDragBefore(evt);\n DD._endDragAfter(evt);\n }\n setDraggable(draggable) {\n this._setAttr('draggable', draggable);\n this._dragChange();\n }\n isDragging() {\n const elem = DD._dragElements.get(this._id);\n return elem ? elem.dragStatus === 'dragging' : false;\n }\n _listenDrag() {\n this._dragCleanup();\n this.on('mousedown.konva touchstart.konva', function (evt) {\n const shouldCheckButton = evt.evt['button'] !== undefined;\n const canDrag = !shouldCheckButton || Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\n if (!canDrag) {\n return;\n }\n if (this.isDragging()) {\n return;\n }\n let hasDraggingChild = false;\n DD._dragElements.forEach((elem) => {\n if (this.isAncestorOf(elem.node)) {\n hasDraggingChild = true;\n }\n });\n if (!hasDraggingChild) {\n this._createDragElement(evt);\n }\n });\n }\n _dragChange() {\n if (this.attrs.draggable) {\n this._listenDrag();\n }\n else {\n this._dragCleanup();\n const stage = this.getStage();\n if (!stage) {\n return;\n }\n const dragElement = DD._dragElements.get(this._id);\n const isDragging = dragElement && dragElement.dragStatus === 'dragging';\n const isReady = dragElement && dragElement.dragStatus === 'ready';\n if (isDragging) {\n this.stopDrag();\n }\n else if (isReady) {\n DD._dragElements.delete(this._id);\n }\n }\n }\n _dragCleanup() {\n this.off('mousedown.konva');\n this.off('touchstart.konva');\n }\n isClientRectOnScreen(margin = { x: 0, y: 0 }) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const screenRect = {\n x: -margin.x,\n y: -margin.y,\n width: stage.width() + 2 * margin.x,\n height: stage.height() + 2 * margin.y,\n };\n return Util.haveIntersection(screenRect, this.getClientRect());\n }\n static create(data, container) {\n if (Util._isString(data)) {\n data = JSON.parse(data);\n }\n return this._createNode(data, container);\n }\n static _createNode(obj, container) {\n let className = Node.prototype.getClassName.call(obj), children = obj.children, no, len, n;\n if (container) {\n obj.attrs.container = container;\n }\n if (!Konva[className]) {\n Util.warn('Can not find a node with class name \"' +\n className +\n '\". Fallback to \"Shape\".');\n className = 'Shape';\n }\n const Class = Konva[className];\n no = new Class(obj.attrs);\n if (children) {\n len = children.length;\n for (n = 0; n < len; n++) {\n no.add(Node._createNode(children[n]));\n }\n }\n return no;\n }\n}\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on.call(Node.prototype, TRANSFORM_CHANGE_STR, function () {\n if (this._batchingTransformChange) {\n this._needClearTransformCache = true;\n return;\n }\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n});\nNode.prototype.on.call(Node.prototype, 'visibleChange.konva', function () {\n this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on.call(Node.prototype, 'listeningChange.konva', function () {\n this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on.call(Node.prototype, 'opacityChange.konva', function () {\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n});\nconst addGetterSetter = Factory.addGetterSetter;\naddGetterSetter(Node, 'zIndex');\naddGetterSetter(Node, 'absolutePosition');\naddGetterSetter(Node, 'position');\naddGetterSetter(Node, 'x', 0, getNumberValidator());\naddGetterSetter(Node, 'y', 0, getNumberValidator());\naddGetterSetter(Node, 'globalCompositeOperation', 'source-over', getStringValidator());\naddGetterSetter(Node, 'opacity', 1, getNumberValidator());\naddGetterSetter(Node, 'name', '', getStringValidator());\naddGetterSetter(Node, 'id', '', getStringValidator());\naddGetterSetter(Node, 'rotation', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\naddGetterSetter(Node, 'scaleX', 1, getNumberValidator());\naddGetterSetter(Node, 'scaleY', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\naddGetterSetter(Node, 'skewX', 0, getNumberValidator());\naddGetterSetter(Node, 'skewY', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\naddGetterSetter(Node, 'offsetX', 0, getNumberValidator());\naddGetterSetter(Node, 'offsetY', 0, getNumberValidator());\naddGetterSetter(Node, 'dragDistance', undefined, getNumberValidator());\naddGetterSetter(Node, 'width', 0, getNumberValidator());\naddGetterSetter(Node, 'height', 0, getNumberValidator());\naddGetterSetter(Node, 'listening', true, getBooleanValidator());\naddGetterSetter(Node, 'preventDefault', true, getBooleanValidator());\naddGetterSetter(Node, 'filters', undefined, function (val) {\n this._filterUpToDate = false;\n return val;\n});\naddGetterSetter(Node, 'visible', true, getBooleanValidator());\naddGetterSetter(Node, 'transformsEnabled', 'all', getStringValidator());\naddGetterSetter(Node, 'size');\naddGetterSetter(Node, 'dragBoundFunc');\naddGetterSetter(Node, 'draggable', false, getBooleanValidator());\nFactory.backCompat(Node, {\n rotateDeg: 'rotate',\n setRotationDeg: 'setRotation',\n getRotationDeg: 'getRotation',\n});\n","import { Factory } from \"./Factory.js\";\nimport { Node } from \"./Node.js\";\nimport { getNumberValidator } from \"./Validators.js\";\nexport class Container extends Node {\n constructor() {\n super(...arguments);\n this.children = [];\n }\n getChildren(filterFunc) {\n const children = this.children || [];\n if (filterFunc) {\n return children.filter(filterFunc);\n }\n return children;\n }\n hasChildren() {\n return this.getChildren().length > 0;\n }\n removeChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.remove();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n destroyChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.destroy();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n add(...children) {\n if (children.length === 0) {\n return this;\n }\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.add(children[i]);\n }\n return this;\n }\n const child = children[0];\n if (child.getParent()) {\n child.moveTo(this);\n return this;\n }\n this._validateAdd(child);\n child.index = this.getChildren().length;\n child.parent = this;\n child._clearCaches();\n this.getChildren().push(child);\n this._fire('add', {\n child: child,\n });\n this._requestDraw();\n return this;\n }\n destroy() {\n if (this.hasChildren()) {\n this.destroyChildren();\n }\n super.destroy();\n return this;\n }\n find(selector) {\n return this._generalFind(selector, false);\n }\n findOne(selector) {\n const result = this._generalFind(selector, true);\n return result.length > 0 ? result[0] : undefined;\n }\n _generalFind(selector, findOne) {\n const retArr = [];\n this._descendants((node) => {\n const valid = node._isMatch(selector);\n if (valid) {\n retArr.push(node);\n }\n if (valid && findOne) {\n return true;\n }\n return false;\n });\n return retArr;\n }\n _descendants(fn) {\n let shouldStop = false;\n const children = this.getChildren();\n for (const child of children) {\n shouldStop = fn(child);\n if (shouldStop) {\n return true;\n }\n if (!child.hasChildren()) {\n continue;\n }\n shouldStop = child._descendants(fn);\n if (shouldStop) {\n return true;\n }\n }\n return false;\n }\n toObject() {\n const obj = Node.prototype.toObject.call(this);\n obj.children = [];\n this.getChildren().forEach((child) => {\n obj.children.push(child.toObject());\n });\n return obj;\n }\n isAncestorOf(node) {\n let parent = node.getParent();\n while (parent) {\n if (parent._id === this._id) {\n return true;\n }\n parent = parent.getParent();\n }\n return false;\n }\n clone(obj) {\n const node = Node.prototype.clone.call(this, obj);\n this.getChildren().forEach(function (no) {\n node.add(no.clone());\n });\n return node;\n }\n getAllIntersections(pos) {\n const arr = [];\n this.find('Shape').forEach((shape) => {\n if (shape.isVisible() && shape.intersects(pos)) {\n arr.push(shape);\n }\n });\n return arr;\n }\n _clearSelfAndDescendantCache(attr) {\n var _a;\n super._clearSelfAndDescendantCache(attr);\n if (this.isCached()) {\n return;\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n node._clearSelfAndDescendantCache(attr);\n });\n }\n _setChildrenIndices() {\n var _a;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child, n) {\n child.index = n;\n });\n this._requestDraw();\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n const caching = canvas && canvas.isCache;\n if (!this.isVisible() && !caching) {\n return this;\n }\n if (cachedSceneCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawScene', canvas, top, bufferCanvas);\n }\n return this;\n }\n drawHit(can, top) {\n if (!this.shouldDrawHit(top)) {\n return this;\n }\n const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (cachedHitCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawHit', canvas, top);\n }\n return this;\n }\n _drawChildren(drawMethod, canvas, top, bufferCanvas) {\n var _a;\n const context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (typeof clipWidth === 'number' && typeof clipHeight === 'number') ||\n clipFunc;\n const selfCache = top === this;\n if (hasClip) {\n context.save();\n const transform = this.getAbsoluteTransform(top);\n let m = transform.getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n context.beginPath();\n let clipArgs;\n if (clipFunc) {\n clipArgs = clipFunc.call(this, context, this);\n }\n else {\n const clipX = this.clipX();\n const clipY = this.clipY();\n context.rect(clipX || 0, clipY || 0, clipWidth, clipHeight);\n }\n context.clip.apply(context, clipArgs);\n m = transform.copy().invert().getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n const hasComposition = !selfCache &&\n this.globalCompositeOperation() !== 'source-over' &&\n drawMethod === 'drawScene';\n if (hasComposition) {\n context.save();\n context._applyGlobalCompositeOperation(this);\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child[drawMethod](canvas, top, bufferCanvas);\n });\n if (hasComposition) {\n context.restore();\n }\n if (hasClip) {\n context.restore();\n }\n }\n getClientRect(config = {}) {\n var _a;\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo;\n let minX, minY, maxX, maxY;\n let selfRect = {\n x: Infinity,\n y: Infinity,\n width: 0,\n height: 0,\n };\n const that = this;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n if (!child.visible()) {\n return;\n }\n const rect = child.getClientRect({\n relativeTo: that,\n skipShadow: config.skipShadow,\n skipStroke: config.skipStroke,\n });\n if (rect.width === 0 && rect.height === 0) {\n return;\n }\n if (minX === undefined) {\n minX = rect.x;\n minY = rect.y;\n maxX = rect.x + rect.width;\n maxY = rect.y + rect.height;\n }\n else {\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n });\n const shapes = this.find('Shape');\n let hasVisible = false;\n for (let i = 0; i < shapes.length; i++) {\n const shape = shapes[i];\n if (shape._isVisible(this)) {\n hasVisible = true;\n break;\n }\n }\n if (hasVisible && minX !== undefined) {\n selfRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n else {\n selfRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n if (!skipTransform) {\n return this._transformedRect(selfRect, relativeTo);\n }\n return selfRect;\n }\n}\nFactory.addComponentsGetterSetter(Container, 'clip', [\n 'x',\n 'y',\n 'width',\n 'height',\n]);\nFactory.addGetterSetter(Container, 'clipX', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipY', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipWidth', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipHeight', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipFunc');\n","import { Konva } from \"./Global.js\";\nconst Captures = new Map();\nconst SUPPORT_POINTER_EVENTS = Konva._global['PointerEvent'] !== undefined;\nexport function getCapturedShape(pointerId) {\n return Captures.get(pointerId);\n}\nexport function createEvent(evt) {\n return {\n evt,\n pointerId: evt.pointerId,\n };\n}\nexport function hasPointerCapture(pointerId, shape) {\n return Captures.get(pointerId) === shape;\n}\nexport function setPointerCapture(pointerId, shape) {\n releaseCapture(pointerId);\n const stage = shape.getStage();\n if (!stage)\n return;\n Captures.set(pointerId, shape);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n }\n}\nexport function releaseCapture(pointerId, target) {\n const shape = Captures.get(pointerId);\n if (!shape)\n return;\n const stage = shape.getStage();\n if (stage && stage.content) {\n }\n Captures.delete(pointerId);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\n }\n}\n","import { Util } from \"./Util.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Container } from \"./Container.js\";\nimport { Konva } from \"./Global.js\";\nimport { SceneCanvas, HitCanvas } from \"./Canvas.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { _registerNode } from \"./Global.js\";\nimport * as PointerEvents from \"./PointerEvents.js\";\nconst STAGE = 'Stage', STRING = 'string', PX = 'px', MOUSEOUT = 'mouseout', MOUSELEAVE = 'mouseleave', MOUSEOVER = 'mouseover', MOUSEENTER = 'mouseenter', MOUSEMOVE = 'mousemove', MOUSEDOWN = 'mousedown', MOUSEUP = 'mouseup', POINTERMOVE = 'pointermove', POINTERDOWN = 'pointerdown', POINTERUP = 'pointerup', POINTERCANCEL = 'pointercancel', LOSTPOINTERCAPTURE = 'lostpointercapture', POINTEROUT = 'pointerout', POINTERLEAVE = 'pointerleave', POINTEROVER = 'pointerover', POINTERENTER = 'pointerenter', CONTEXTMENU = 'contextmenu', TOUCHSTART = 'touchstart', TOUCHEND = 'touchend', TOUCHMOVE = 'touchmove', TOUCHCANCEL = 'touchcancel', WHEEL = 'wheel', MAX_LAYERS_NUMBER = 5, EVENTS = [\n [MOUSEENTER, '_pointerenter'],\n [MOUSEDOWN, '_pointerdown'],\n [MOUSEMOVE, '_pointermove'],\n [MOUSEUP, '_pointerup'],\n [MOUSELEAVE, '_pointerleave'],\n [TOUCHSTART, '_pointerdown'],\n [TOUCHMOVE, '_pointermove'],\n [TOUCHEND, '_pointerup'],\n [TOUCHCANCEL, '_pointercancel'],\n [MOUSEOVER, '_pointerover'],\n [WHEEL, '_wheel'],\n [CONTEXTMENU, '_contextmenu'],\n [POINTERDOWN, '_pointerdown'],\n [POINTERMOVE, '_pointermove'],\n [POINTERUP, '_pointerup'],\n [POINTERCANCEL, '_pointercancel'],\n [POINTERLEAVE, '_pointerleave'],\n [LOSTPOINTERCAPTURE, '_lostpointercapture'],\n];\nconst EVENTS_MAP = {\n mouse: {\n [POINTEROUT]: MOUSEOUT,\n [POINTERLEAVE]: MOUSELEAVE,\n [POINTEROVER]: MOUSEOVER,\n [POINTERENTER]: MOUSEENTER,\n [POINTERMOVE]: MOUSEMOVE,\n [POINTERDOWN]: MOUSEDOWN,\n [POINTERUP]: MOUSEUP,\n [POINTERCANCEL]: 'mousecancel',\n pointerclick: 'click',\n pointerdblclick: 'dblclick',\n },\n touch: {\n [POINTEROUT]: 'touchout',\n [POINTERLEAVE]: 'touchleave',\n [POINTEROVER]: 'touchover',\n [POINTERENTER]: 'touchenter',\n [POINTERMOVE]: TOUCHMOVE,\n [POINTERDOWN]: TOUCHSTART,\n [POINTERUP]: TOUCHEND,\n [POINTERCANCEL]: TOUCHCANCEL,\n pointerclick: 'tap',\n pointerdblclick: 'dbltap',\n },\n pointer: {\n [POINTEROUT]: POINTEROUT,\n [POINTERLEAVE]: POINTERLEAVE,\n [POINTEROVER]: POINTEROVER,\n [POINTERENTER]: POINTERENTER,\n [POINTERMOVE]: POINTERMOVE,\n [POINTERDOWN]: POINTERDOWN,\n [POINTERUP]: POINTERUP,\n [POINTERCANCEL]: POINTERCANCEL,\n pointerclick: 'pointerclick',\n pointerdblclick: 'pointerdblclick',\n },\n};\nconst getEventType = (type) => {\n if (type.indexOf('pointer') >= 0) {\n return 'pointer';\n }\n if (type.indexOf('touch') >= 0) {\n return 'touch';\n }\n return 'mouse';\n};\nconst getEventsMap = (eventType) => {\n const type = getEventType(eventType);\n if (type === 'pointer') {\n return Konva.pointerEventsEnabled && EVENTS_MAP.pointer;\n }\n if (type === 'touch') {\n return EVENTS_MAP.touch;\n }\n if (type === 'mouse') {\n return EVENTS_MAP.mouse;\n }\n};\nfunction checkNoClip(attrs = {}) {\n if (attrs.clipFunc || attrs.clipWidth || attrs.clipHeight) {\n Util.warn('Stage does not support clipping. Please use clip for Layers or Groups.');\n }\n return attrs;\n}\nconst NO_POINTERS_MESSAGE = `Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);`;\nexport const stages = [];\nexport class Stage extends Container {\n constructor(config) {\n super(checkNoClip(config));\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n this._buildDOM();\n this._bindContentEvents();\n stages.push(this);\n this.on('widthChange.konva heightChange.konva', this._resizeDOM);\n this.on('visibleChange.konva', this._checkVisibility);\n this.on('clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva', () => {\n checkNoClip(this.attrs);\n });\n this._checkVisibility();\n }\n _validateAdd(child) {\n const isLayer = child.getType() === 'Layer';\n const isFastLayer = child.getType() === 'FastLayer';\n const valid = isLayer || isFastLayer;\n if (!valid) {\n Util.throw('You may only add layers to the stage.');\n }\n }\n _checkVisibility() {\n if (!this.content) {\n return;\n }\n const style = this.visible() ? '' : 'none';\n this.content.style.display = style;\n }\n setContainer(container) {\n if (typeof container === STRING) {\n let id;\n if (container.charAt(0) === '.') {\n const className = container.slice(1);\n container = document.getElementsByClassName(className)[0];\n }\n else {\n if (container.charAt(0) !== '#') {\n id = container;\n }\n else {\n id = container.slice(1);\n }\n container = document.getElementById(id);\n }\n if (!container) {\n throw 'Can not find container in document with id ' + id;\n }\n }\n this._setAttr('container', container);\n if (this.content) {\n if (this.content.parentElement) {\n this.content.parentElement.removeChild(this.content);\n }\n container.appendChild(this.content);\n }\n return this;\n }\n shouldDrawHit() {\n return true;\n }\n clear() {\n const layers = this.children, len = layers.length;\n for (let n = 0; n < len; n++) {\n layers[n].clear();\n }\n return this;\n }\n clone(obj) {\n if (!obj) {\n obj = {};\n }\n obj.container =\n typeof document !== 'undefined' && document.createElement('div');\n return Container.prototype.clone.call(this, obj);\n }\n destroy() {\n super.destroy();\n const content = this.content;\n if (content && Util._isInDocument(content)) {\n this.container().removeChild(content);\n }\n const index = stages.indexOf(this);\n if (index > -1) {\n stages.splice(index, 1);\n }\n Util.releaseCanvas(this.bufferCanvas._canvas, this.bufferHitCanvas._canvas);\n return this;\n }\n getPointerPosition() {\n const pos = this._pointerPositions[0] || this._changedPointerPositions[0];\n if (!pos) {\n Util.warn(NO_POINTERS_MESSAGE);\n return null;\n }\n return {\n x: pos.x,\n y: pos.y,\n };\n }\n _getPointerById(id) {\n return this._pointerPositions.find((p) => p.id === id);\n }\n getPointersPositions() {\n return this._pointerPositions;\n }\n getStage() {\n return this;\n }\n getContent() {\n return this.content;\n }\n _toKonvaCanvas(config) {\n config = { ...config };\n config.x = config.x || 0;\n config.y = config.y || 0;\n config.width = config.width || this.width();\n config.height = config.height || this.height();\n const canvas = new SceneCanvas({\n width: config.width,\n height: config.height,\n pixelRatio: config.pixelRatio || 1,\n });\n const _context = canvas.getContext()._context;\n const layers = this.children;\n if (config.x || config.y) {\n _context.translate(-1 * config.x, -1 * config.y);\n }\n layers.forEach(function (layer) {\n if (!layer.isVisible()) {\n return;\n }\n const layerCanvas = layer._toKonvaCanvas(config);\n _context.drawImage(layerCanvas._canvas, config.x, config.y, layerCanvas.getWidth() / layerCanvas.getPixelRatio(), layerCanvas.getHeight() / layerCanvas.getPixelRatio());\n });\n return canvas;\n }\n getIntersection(pos) {\n if (!pos) {\n return null;\n }\n const layers = this.children, len = layers.length, end = len - 1;\n for (let n = end; n >= 0; n--) {\n const shape = layers[n].getIntersection(pos);\n if (shape) {\n return shape;\n }\n }\n return null;\n }\n _resizeDOM() {\n const width = this.width();\n const height = this.height();\n if (this.content) {\n this.content.style.width = width + PX;\n this.content.style.height = height + PX;\n }\n this.bufferCanvas.setSize(width, height);\n this.bufferHitCanvas.setSize(width, height);\n this.children.forEach((layer) => {\n layer.setSize({ width, height });\n layer.draw();\n });\n }\n add(layer, ...rest) {\n if (arguments.length > 1) {\n for (let i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n super.add(layer);\n const length = this.children.length;\n if (length > MAX_LAYERS_NUMBER) {\n Util.warn('The stage has ' +\n length +\n ' layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group.');\n }\n layer.setSize({ width: this.width(), height: this.height() });\n layer.draw();\n if (Konva.isBrowser) {\n this.content.appendChild(layer.canvas._canvas);\n }\n return this;\n }\n getParent() {\n return null;\n }\n getLayer() {\n return null;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n getLayers() {\n return this.children;\n }\n _bindContentEvents() {\n if (!Konva.isBrowser) {\n return;\n }\n EVENTS.forEach(([event, methodName]) => {\n this.content.addEventListener(event, (evt) => {\n this[methodName](evt);\n }, { passive: false });\n });\n }\n _pointerenter(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerenter, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointerover(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _getTargetShape(evenType) {\n let shape = this[evenType + 'targetShape'];\n if (shape && !shape.getStage()) {\n shape = null;\n }\n return shape;\n }\n _pointerleave(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const targetShape = this._getTargetShape(eventType);\n const eventsEnabled = !(Konva.isDragging() || Konva.isTransforming()) || Konva.hitOnDragEnabled;\n if (targetShape && eventsEnabled) {\n targetShape._fireAndBubble(events.pointerout, { evt: evt });\n targetShape._fireAndBubble(events.pointerleave, { evt: evt });\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this[eventType + 'targetShape'] = null;\n }\n else if (eventsEnabled) {\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this._fire(events.pointerout, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n this.pointerPos = null;\n this._pointerPositions = [];\n }\n _pointerdown(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n let triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = this.getIntersection(pos);\n DD.justDragged = false;\n Konva['_' + eventType + 'ListenClick'] = true;\n if (!shape || !shape.isListening()) {\n this[eventType + 'ClickStartShape'] = undefined;\n return;\n }\n if (Konva.capturePointerEventsEnabled) {\n shape.setPointerCapture(pos.id);\n }\n this[eventType + 'ClickStartShape'] = shape;\n shape._fireAndBubble(events.pointerdown, {\n evt: evt,\n pointerId: pos.id,\n });\n triggeredOnShape = true;\n const isTouch = evt.type.indexOf('touch') >= 0;\n if (shape.preventDefault() && evt.cancelable && isTouch) {\n evt.preventDefault();\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerdown, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._pointerPositions[0].id,\n });\n }\n }\n _pointermove(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n const isTouchPointer = evt.type.indexOf('touch') >= 0 ||\n evt.pointerType === 'touch';\n if (Konva.isDragging() &&\n DD.node.preventDefault() &&\n evt.cancelable &&\n isTouchPointer) {\n evt.preventDefault();\n }\n this.setPointersPositions(evt);\n const eventsEnabled = !(Konva.isDragging() || Konva.isTransforming()) || Konva.hitOnDragEnabled;\n if (!eventsEnabled) {\n return;\n }\n const processedShapesIds = {};\n let triggeredOnShape = false;\n const targetShape = this._getTargetShape(eventType);\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n const differentTarget = targetShape !== shape;\n if (differentTarget && targetShape) {\n targetShape._fireAndBubble(events.pointerout, { ...event }, shape);\n targetShape._fireAndBubble(events.pointerleave, { ...event }, shape);\n }\n if (shape) {\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n if (differentTarget) {\n shape._fireAndBubble(events.pointerover, { ...event }, targetShape);\n shape._fireAndBubble(events.pointerenter, { ...event }, targetShape);\n this[eventType + 'targetShape'] = shape;\n }\n shape._fireAndBubble(events.pointermove, { ...event });\n }\n else {\n if (targetShape) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n this[eventType + 'targetShape'] = null;\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointermove, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n }\n _pointerup(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const clickStartShape = this[eventType + 'ClickStartShape'];\n const clickEndShape = this[eventType + 'ClickEndShape'];\n const processedShapesIds = {};\n let skipPointerUpTrigger = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n if (shape) {\n shape.releaseCapture(pos.id);\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n let fireDblClick = false;\n if (Konva['_' + eventType + 'InDblClickWindow']) {\n fireDblClick = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n else if (!DD.justDragged) {\n Konva['_' + eventType + 'InDblClickWindow'] = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n this[eventType + 'DblTimeout'] = setTimeout(function () {\n Konva['_' + eventType + 'InDblClickWindow'] = false;\n }, Konva.dblClickWindow);\n if (shape && shape.isListening()) {\n skipPointerUpTrigger = true;\n this[eventType + 'ClickEndShape'] = shape;\n shape._fireAndBubble(events.pointerup, { ...event });\n if (Konva['_' + eventType + 'ListenClick'] &&\n clickStartShape &&\n clickStartShape === shape) {\n shape._fireAndBubble(events.pointerclick, { ...event });\n if (fireDblClick && clickEndShape && clickEndShape === shape) {\n shape._fireAndBubble(events.pointerdblclick, { ...event });\n }\n }\n }\n else {\n this[eventType + 'ClickEndShape'] = null;\n if (!skipPointerUpTrigger) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n skipPointerUpTrigger = true;\n }\n if (Konva['_' + eventType + 'ListenClick']) {\n this._fire(events.pointerclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n if (fireDblClick) {\n this._fire(events.pointerdblclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n }\n });\n if (!skipPointerUpTrigger) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n Konva['_' + eventType + 'ListenClick'] = false;\n if (evt.cancelable && eventType !== 'touch' && eventType !== 'pointer') {\n evt.preventDefault();\n }\n }\n _contextmenu(evt) {\n this.setPointersPositions(evt);\n const shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(CONTEXTMENU, { evt: evt });\n }\n else {\n this._fire(CONTEXTMENU, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _wheel(evt) {\n this.setPointersPositions(evt);\n const shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(WHEEL, { evt: evt });\n }\n else {\n this._fire(WHEEL, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointercancel(evt) {\n this.setPointersPositions(evt);\n const shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERUP, PointerEvents.createEvent(evt));\n }\n PointerEvents.releaseCapture(evt.pointerId);\n }\n _lostpointercapture(evt) {\n PointerEvents.releaseCapture(evt.pointerId);\n }\n setPointersPositions(evt) {\n const contentPosition = this._getContentPosition();\n let x = null, y = null;\n evt = evt ? evt : window.event;\n if (evt.touches !== undefined) {\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n Array.prototype.forEach.call(evt.touches, (touch) => {\n this._pointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n Array.prototype.forEach.call(evt.changedTouches || evt.touches, (touch) => {\n this._changedPointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n }\n else {\n x = (evt.clientX - contentPosition.left) / contentPosition.scaleX;\n y = (evt.clientY - contentPosition.top) / contentPosition.scaleY;\n this.pointerPos = {\n x: x,\n y: y,\n };\n this._pointerPositions = [{ x, y, id: Util._getFirstPointerId(evt) }];\n this._changedPointerPositions = [\n { x, y, id: Util._getFirstPointerId(evt) },\n ];\n }\n }\n _setPointerPosition(evt) {\n Util.warn('Method _setPointerPosition is deprecated. Use \"stage.setPointersPositions(event)\" instead.');\n this.setPointersPositions(evt);\n }\n _getContentPosition() {\n if (!this.content || !this.content.getBoundingClientRect) {\n return {\n top: 0,\n left: 0,\n scaleX: 1,\n scaleY: 1,\n };\n }\n const rect = this.content.getBoundingClientRect();\n return {\n top: rect.top,\n left: rect.left,\n scaleX: rect.width / this.content.clientWidth || 1,\n scaleY: rect.height / this.content.clientHeight || 1,\n };\n }\n _buildDOM() {\n this.bufferCanvas = new SceneCanvas({\n width: this.width(),\n height: this.height(),\n });\n this.bufferHitCanvas = new HitCanvas({\n pixelRatio: 1,\n width: this.width(),\n height: this.height(),\n });\n if (!Konva.isBrowser) {\n return;\n }\n const container = this.container();\n if (!container) {\n throw 'Stage has no container. A container is required.';\n }\n container.innerHTML = '';\n this.content = document.createElement('div');\n this.content.style.position = 'relative';\n this.content.style.userSelect = 'none';\n this.content.className = 'konvajs-content';\n this.content.setAttribute('role', 'presentation');\n container.appendChild(this.content);\n this._resizeDOM();\n }\n cache() {\n Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.');\n return this;\n }\n clearCache() {\n return this;\n }\n batchDraw() {\n this.getChildren().forEach(function (layer) {\n layer.batchDraw();\n });\n return this;\n }\n}\nStage.prototype.nodeType = STAGE;\n_registerNode(Stage);\nFactory.addGetterSetter(Stage, 'container');\nif (Konva.isBrowser) {\n document.addEventListener('visibilitychange', () => {\n stages.forEach((stage) => {\n stage.batchDraw();\n });\n });\n}\n","import { Konva } from \"./Global.js\";\nimport { Transform, Util } from \"./Util.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Node } from \"./Node.js\";\nimport { getNumberValidator, getNumberOrAutoValidator, getStringValidator, getBooleanValidator, getStringOrGradientValidator, } from \"./Validators.js\";\nimport { _registerNode } from \"./Global.js\";\nimport * as PointerEvents from \"./PointerEvents.js\";\nconst HAS_SHADOW = 'hasShadow';\nconst SHADOW_RGBA = 'shadowRGBA';\nconst patternImage = 'patternImage';\nconst linearGradient = 'linearGradient';\nconst radialGradient = 'radialGradient';\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util.createCanvasElement().getContext('2d');\n return dummyContext;\n}\nexport const shapes = {};\nfunction _fillFunc(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFunc(context) {\n context.stroke();\n}\nfunction _fillFuncHit(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFuncHit(context) {\n context.stroke();\n}\nfunction _clearHasShadowCache() {\n this._clearCache(HAS_SHADOW);\n}\nfunction _clearGetShadowRGBACache() {\n this._clearCache(SHADOW_RGBA);\n}\nfunction _clearFillPatternCache() {\n this._clearCache(patternImage);\n}\nfunction _clearLinearGradientCache() {\n this._clearCache(linearGradient);\n}\nfunction _clearRadialGradientCache() {\n this._clearCache(radialGradient);\n}\nexport class Shape extends Node {\n constructor(config) {\n super(config);\n let key;\n while (true) {\n key = Util.getRandomColor();\n if (key && !(key in shapes)) {\n break;\n }\n }\n this.colorKey = key;\n shapes[key] = this;\n }\n getContext() {\n Util.warn('shape.getContext() method is deprecated. Please do not use it.');\n return this.getLayer().getContext();\n }\n getCanvas() {\n Util.warn('shape.getCanvas() method is deprecated. Please do not use it.');\n return this.getLayer().getCanvas();\n }\n getSceneFunc() {\n return this.attrs.sceneFunc || this['_sceneFunc'];\n }\n getHitFunc() {\n return this.attrs.hitFunc || this['_hitFunc'];\n }\n hasShadow() {\n return this._getCache(HAS_SHADOW, this._hasShadow);\n }\n _hasShadow() {\n return (this.shadowEnabled() &&\n this.shadowOpacity() !== 0 &&\n !!(this.shadowColor() ||\n this.shadowBlur() ||\n this.shadowOffsetX() ||\n this.shadowOffsetY()));\n }\n _getFillPattern() {\n return this._getCache(patternImage, this.__getFillPattern);\n }\n __getFillPattern() {\n if (this.fillPatternImage()) {\n const ctx = getDummyContext();\n const pattern = ctx.createPattern(this.fillPatternImage(), this.fillPatternRepeat() || 'repeat');\n if (pattern && pattern.setTransform) {\n const tr = new Transform();\n tr.translate(this.fillPatternX(), this.fillPatternY());\n tr.rotate(Konva.getAngle(this.fillPatternRotation()));\n tr.scale(this.fillPatternScaleX(), this.fillPatternScaleY());\n tr.translate(-1 * this.fillPatternOffsetX(), -1 * this.fillPatternOffsetY());\n const m = tr.getMatrix();\n const matrix = typeof DOMMatrix === 'undefined'\n ? {\n a: m[0],\n b: m[1],\n c: m[2],\n d: m[3],\n e: m[4],\n f: m[5],\n }\n : new DOMMatrix(m);\n pattern.setTransform(matrix);\n }\n return pattern;\n }\n }\n _getLinearGradient() {\n return this._getCache(linearGradient, this.__getLinearGradient);\n }\n __getLinearGradient() {\n const colorStops = this.fillLinearGradientColorStops();\n if (colorStops) {\n const ctx = getDummyContext();\n const start = this.fillLinearGradientStartPoint();\n const end = this.fillLinearGradientEndPoint();\n const grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n _getRadialGradient() {\n return this._getCache(radialGradient, this.__getRadialGradient);\n }\n __getRadialGradient() {\n const colorStops = this.fillRadialGradientColorStops();\n if (colorStops) {\n const ctx = getDummyContext();\n const start = this.fillRadialGradientStartPoint();\n const end = this.fillRadialGradientEndPoint();\n const grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n getShadowRGBA() {\n return this._getCache(SHADOW_RGBA, this._getShadowRGBA);\n }\n _getShadowRGBA() {\n if (!this.hasShadow()) {\n return;\n }\n const rgba = Util.colorToRGBA(this.shadowColor());\n if (rgba) {\n return ('rgba(' +\n rgba.r +\n ',' +\n rgba.g +\n ',' +\n rgba.b +\n ',' +\n rgba.a * (this.shadowOpacity() || 1) +\n ')');\n }\n }\n hasFill() {\n return this._calculate('hasFill', [\n 'fillEnabled',\n 'fill',\n 'fillPatternImage',\n 'fillLinearGradientColorStops',\n 'fillRadialGradientColorStops',\n ], () => {\n return (this.fillEnabled() &&\n !!(this.fill() ||\n this.fillPatternImage() ||\n this.fillLinearGradientColorStops() ||\n this.fillRadialGradientColorStops()));\n });\n }\n hasStroke() {\n return this._calculate('hasStroke', [\n 'strokeEnabled',\n 'strokeWidth',\n 'stroke',\n 'strokeLinearGradientColorStops',\n ], () => {\n return (this.strokeEnabled() &&\n this.strokeWidth() &&\n !!(this.stroke() || this.strokeLinearGradientColorStops()));\n });\n }\n hasHitStroke() {\n const width = this.hitStrokeWidth();\n if (width === 'auto') {\n return this.hasStroke();\n }\n return this.strokeEnabled() && !!width;\n }\n intersects(point) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const bufferHitCanvas = stage.bufferHitCanvas;\n bufferHitCanvas.getContext().clear();\n this.drawHit(bufferHitCanvas, undefined, true);\n const p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\n return p[3] > 0;\n }\n destroy() {\n Node.prototype.destroy.call(this);\n delete shapes[this.colorKey];\n delete this.colorKey;\n return this;\n }\n _useBufferCanvas(forceFill) {\n var _a;\n const perfectDrawEnabled = (_a = this.attrs.perfectDrawEnabled) !== null && _a !== void 0 ? _a : true;\n if (!perfectDrawEnabled) {\n return false;\n }\n const hasFill = forceFill || this.hasFill();\n const hasStroke = this.hasStroke();\n const isTransparent = this.getAbsoluteOpacity() !== 1;\n if (hasFill && hasStroke && isTransparent) {\n return true;\n }\n const hasShadow = this.hasShadow();\n const strokeForShadow = this.shadowForStrokeEnabled();\n if (hasFill && hasStroke && hasShadow && strokeForShadow) {\n return true;\n }\n return false;\n }\n setStrokeHitEnabled(val) {\n Util.warn('strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead.');\n if (val) {\n this.hitStrokeWidth('auto');\n }\n else {\n this.hitStrokeWidth(0);\n }\n }\n getStrokeHitEnabled() {\n if (this.hitStrokeWidth() === 0) {\n return false;\n }\n else {\n return true;\n }\n }\n getSelfRect() {\n const size = this.size();\n return {\n x: this._centroid ? -size.width / 2 : 0,\n y: this._centroid ? -size.height / 2 : 0,\n width: size.width,\n height: size.height,\n };\n }\n getClientRect(config = {}) {\n let hasCachedParent = false;\n let parent = this.getParent();\n while (parent) {\n if (parent.isCached()) {\n hasCachedParent = true;\n break;\n }\n parent = parent.getParent();\n }\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo || (hasCachedParent && this.getStage()) || undefined;\n const fillRect = this.getSelfRect();\n const applyStroke = !config.skipStroke && this.hasStroke();\n const strokeWidth = (applyStroke && this.strokeWidth()) || 0;\n const fillAndStrokeWidth = fillRect.width + strokeWidth;\n const fillAndStrokeHeight = fillRect.height + strokeWidth;\n const applyShadow = !config.skipShadow && this.hasShadow();\n const shadowOffsetX = applyShadow ? this.shadowOffsetX() : 0;\n const shadowOffsetY = applyShadow ? this.shadowOffsetY() : 0;\n const preWidth = fillAndStrokeWidth + Math.abs(shadowOffsetX);\n const preHeight = fillAndStrokeHeight + Math.abs(shadowOffsetY);\n const blurRadius = (applyShadow && this.shadowBlur()) || 0;\n const width = preWidth + blurRadius * 2;\n const height = preHeight + blurRadius * 2;\n const rect = {\n width: width,\n height: height,\n x: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetX, 0) +\n fillRect.x,\n y: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetY, 0) +\n fillRect.y,\n };\n if (!skipTransform) {\n return this._transformedRect(rect, relativeTo);\n }\n return rect;\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer();\n const canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow();\n let stage;\n const skipBuffer = false;\n const cachingSelf = top === this;\n if (!this.isVisible() && !cachingSelf) {\n return this;\n }\n if (cachedCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n if (this._useBufferCanvas() && !skipBuffer) {\n stage = this.getStage();\n const bc = bufferCanvas || stage.bufferCanvas;\n const bufferContext = bc.getContext();\n bufferContext.clear();\n bufferContext.save();\n bufferContext._applyLineJoin(this);\n bufferContext._applyMiterLimit(this);\n const o = this.getAbsoluteTransform(top).getMatrix();\n bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n drawFunc.call(this, bufferContext, this);\n bufferContext.restore();\n const ratio = bc.pixelRatio;\n if (hasShadow) {\n context._applyShadow(this);\n }\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n context.drawImage(bc._canvas, bc.x || 0, bc.y || 0, bc.width / ratio, bc.height / ratio);\n }\n else {\n context._applyLineJoin(this);\n context._applyMiterLimit(this);\n if (!cachingSelf) {\n const o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\n if (hasShadow) {\n context._applyShadow(this);\n }\n drawFunc.call(this, context, this);\n }\n context.restore();\n return this;\n }\n drawHit(can, top, skipDragCheck = false) {\n if (!this.shouldDrawHit(top, skipDragCheck)) {\n return this;\n }\n const layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (!this.colorKey) {\n Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()');\n }\n if (cachedHitCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n context._applyLineJoin(this);\n context._applyMiterLimit(this);\n const selfCache = this === top;\n if (!selfCache) {\n const o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n }\n drawFunc.call(this, context, this);\n context.restore();\n return this;\n }\n drawHitFromCache(alphaThreshold = 0) {\n const cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight();\n hitContext.clear();\n hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n try {\n const hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n const hitData = hitImageData.data;\n const len = hitData.length;\n const rgbColorKey = Util._hexToRgb(this.colorKey);\n for (let i = 0; i < len; i += 4) {\n const alpha = hitData[i + 3];\n if (alpha > alphaThreshold) {\n hitData[i] = rgbColorKey.r;\n hitData[i + 1] = rgbColorKey.g;\n hitData[i + 2] = rgbColorKey.b;\n hitData[i + 3] = 255;\n }\n else {\n hitData[i + 3] = 0;\n }\n }\n hitContext.putImageData(hitImageData, 0, 0);\n }\n catch (e) {\n Util.error('Unable to draw hit graph from cached scene canvas. ' + e.message);\n }\n return this;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n}\nShape.prototype._fillFunc = _fillFunc;\nShape.prototype._strokeFunc = _strokeFunc;\nShape.prototype._fillFuncHit = _fillFuncHit;\nShape.prototype._strokeFuncHit = _strokeFuncHit;\nShape.prototype._centroid = false;\nShape.prototype.nodeType = 'Shape';\n_registerNode(Shape);\nShape.prototype.eventListeners = {};\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva', _clearFillPatternCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\nFactory.addGetterSetter(Shape, 'stroke', undefined, getStringOrGradientValidator());\nFactory.addGetterSetter(Shape, 'strokeWidth', 2, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillAfterStrokeEnabled', false);\nFactory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', getNumberOrAutoValidator());\nFactory.addGetterSetter(Shape, 'strokeHitEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'perfectDrawEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'lineJoin');\nFactory.addGetterSetter(Shape, 'lineCap');\nFactory.addGetterSetter(Shape, 'miterLimit');\nFactory.addGetterSetter(Shape, 'sceneFunc');\nFactory.addGetterSetter(Shape, 'hitFunc');\nFactory.addGetterSetter(Shape, 'dash');\nFactory.addGetterSetter(Shape, 'dashOffset', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowColor', undefined, getStringValidator());\nFactory.addGetterSetter(Shape, 'shadowBlur', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowOpacity', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'shadowOffsetX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowOffsetY', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternImage');\nFactory.addGetterSetter(Shape, 'fill', undefined, getStringOrGradientValidator());\nFactory.addGetterSetter(Shape, 'fillPatternX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternY', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\nFactory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\nFactory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\nFactory.addGetterSetter(Shape, 'fillEnabled', true);\nFactory.addGetterSetter(Shape, 'strokeEnabled', true);\nFactory.addGetterSetter(Shape, 'shadowEnabled', true);\nFactory.addGetterSetter(Shape, 'dashEnabled', true);\nFactory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\nFactory.addGetterSetter(Shape, 'fillPriority', 'color');\nFactory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'fillPatternScaleX', 1, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternScaleY', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\nFactory.addGetterSetter(Shape, 'fillPatternRotation', 0);\nFactory.addGetterSetter(Shape, 'fillRule', undefined, getStringValidator());\nFactory.backCompat(Shape, {\n dashArray: 'dash',\n getDashArray: 'getDash',\n setDashArray: 'getDash',\n drawFunc: 'sceneFunc',\n getDrawFunc: 'getSceneFunc',\n setDrawFunc: 'setSceneFunc',\n drawHitFunc: 'hitFunc',\n getDrawHitFunc: 'getHitFunc',\n setDrawHitFunc: 'setHitFunc',\n});\n","import { Util } from \"./Util.js\";\nimport { Container } from \"./Container.js\";\nimport { Node } from \"./Node.js\";\nimport { Factory } from \"./Factory.js\";\nimport { SceneCanvas, HitCanvas } from \"./Canvas.js\";\nimport { getBooleanValidator } from \"./Validators.js\";\nimport { shapes } from \"./Shape.js\";\nimport { _registerNode } from \"./Global.js\";\nconst HASH = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n { x: 0, y: 0 },\n { x: -1, y: -1 },\n { x: 1, y: -1 },\n { x: 1, y: 1 },\n { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nexport class Layer extends Container {\n constructor(config) {\n super(config);\n this.canvas = new SceneCanvas();\n this.hitCanvas = new HitCanvas({\n pixelRatio: 1,\n });\n this._waitingForDraw = false;\n this.on('visibleChange.konva', this._checkVisibility);\n this._checkVisibility();\n this.on('imageSmoothingEnabledChange.konva', this._setSmoothEnabled);\n this._setSmoothEnabled();\n }\n createPNGStream() {\n const c = this.canvas._canvas;\n return c.createPNGStream();\n }\n getCanvas() {\n return this.canvas;\n }\n getNativeCanvasElement() {\n return this.canvas._canvas;\n }\n getHitCanvas() {\n return this.hitCanvas;\n }\n getContext() {\n return this.getCanvas().getContext();\n }\n clear(bounds) {\n this.getContext().clear(bounds);\n this.getHitCanvas().getContext().clear(bounds);\n return this;\n }\n setZIndex(index) {\n super.setZIndex(index);\n const stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n if (index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n }\n return this;\n }\n moveToTop() {\n Node.prototype.moveToTop.call(this);\n const stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveUp() {\n const moved = Node.prototype.moveUp.call(this);\n if (!moved) {\n return false;\n }\n const stage = this.getStage();\n if (!stage || !stage.content) {\n return false;\n }\n stage.content.removeChild(this.getNativeCanvasElement());\n if (this.index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[this.index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveDown() {\n if (Node.prototype.moveDown.call(this)) {\n const stage = this.getStage();\n if (stage) {\n const children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[this.index + 1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (Node.prototype.moveToBottom.call(this)) {\n const stage = this.getStage();\n if (stage) {\n const children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n getLayer() {\n return this;\n }\n remove() {\n const _canvas = this.getNativeCanvasElement();\n Node.prototype.remove.call(this);\n if (_canvas && _canvas.parentNode && Util._isInDocument(_canvas)) {\n _canvas.parentNode.removeChild(_canvas);\n }\n return this;\n }\n getStage() {\n return this.parent;\n }\n setSize({ width, height }) {\n this.canvas.setSize(width, height);\n this.hitCanvas.setSize(width, height);\n this._setSmoothEnabled();\n return this;\n }\n _validateAdd(child) {\n const type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util.throw('You may only add groups and shapes to a layer.');\n }\n }\n _toKonvaCanvas(config) {\n config = { ...config };\n config.width = config.width || this.getWidth();\n config.height = config.height || this.getHeight();\n config.x = config.x !== undefined ? config.x : this.x();\n config.y = config.y !== undefined ? config.y : this.y();\n return Node.prototype._toKonvaCanvas.call(this, config);\n }\n _checkVisibility() {\n const visible = this.visible();\n if (visible) {\n this.canvas._canvas.style.display = 'block';\n }\n else {\n this.canvas._canvas.style.display = 'none';\n }\n }\n _setSmoothEnabled() {\n this.getContext()._context.imageSmoothingEnabled =\n this.imageSmoothingEnabled();\n }\n getWidth() {\n if (this.parent) {\n return this.parent.width();\n }\n }\n setWidth() {\n Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.');\n }\n getHeight() {\n if (this.parent) {\n return this.parent.height();\n }\n }\n setHeight() {\n Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n }\n batchDraw() {\n if (!this._waitingForDraw) {\n this._waitingForDraw = true;\n Util.requestAnimFrame(() => {\n this.draw();\n this._waitingForDraw = false;\n });\n }\n return this;\n }\n getIntersection(pos) {\n if (!this.isListening() || !this.isVisible()) {\n return null;\n }\n let spiralSearchDistance = 1;\n let continueSearch = false;\n while (true) {\n for (let i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n const intersectionOffset = INTERSECTION_OFFSETS[i];\n const obj = this._getIntersection({\n x: pos.x + intersectionOffset.x * spiralSearchDistance,\n y: pos.y + intersectionOffset.y * spiralSearchDistance,\n });\n const shape = obj.shape;\n if (shape) {\n return shape;\n }\n continueSearch = !!obj.antialiased;\n if (!obj.antialiased) {\n break;\n }\n }\n if (continueSearch) {\n spiralSearchDistance += 1;\n }\n else {\n return null;\n }\n }\n }\n _getIntersection(pos) {\n const ratio = this.hitCanvas.pixelRatio;\n const p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n const p3 = p[3];\n if (p3 === 255) {\n const colorKey = Util._rgbToHex(p[0], p[1], p[2]);\n const shape = shapes[HASH + colorKey];\n if (shape) {\n return {\n shape: shape,\n };\n }\n return {\n antialiased: true,\n };\n }\n else if (p3 > 0) {\n return {\n antialiased: true,\n };\n }\n return {};\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas());\n this._fire(BEFORE_DRAW, {\n node: this,\n });\n if (this.clearBeforeDraw()) {\n canvas.getContext().clear();\n }\n Container.prototype.drawScene.call(this, canvas, top, bufferCanvas);\n this._fire(DRAW, {\n node: this,\n });\n return this;\n }\n drawHit(can, top) {\n const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n if (layer && layer.clearBeforeDraw()) {\n layer.getHitCanvas().getContext().clear();\n }\n Container.prototype.drawHit.call(this, canvas, top);\n return this;\n }\n enableHitGraph() {\n this.hitGraphEnabled(true);\n return this;\n }\n disableHitGraph() {\n this.hitGraphEnabled(false);\n return this;\n }\n setHitGraphEnabled(val) {\n Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n this.listening(val);\n }\n getHitGraphEnabled(val) {\n Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n return this.listening();\n }\n toggleHitCanvas() {\n if (!this.parent || !this.parent['content']) {\n return;\n }\n const parent = this.parent;\n const added = !!this.hitCanvas._canvas.parentNode;\n if (added) {\n parent.content.removeChild(this.hitCanvas._canvas);\n }\n else {\n parent.content.appendChild(this.hitCanvas._canvas);\n }\n }\n destroy() {\n Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);\n return super.destroy();\n }\n}\nLayer.prototype.nodeType = 'Layer';\n_registerNode(Layer);\nFactory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory.addGetterSetter(Layer, 'hitGraphEnabled', true, getBooleanValidator());\n","import { Util } from \"./Util.js\";\nimport { Layer } from \"./Layer.js\";\nimport { _registerNode } from \"./Global.js\";\nexport class FastLayer extends Layer {\n constructor(attrs) {\n super(attrs);\n this.listening(false);\n Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n }\n}\nFastLayer.prototype.nodeType = 'FastLayer';\n_registerNode(FastLayer);\n","import { Util } from \"./Util.js\";\nimport { Container } from \"./Container.js\";\nimport { _registerNode } from \"./Global.js\";\nexport class Group extends Container {\n _validateAdd(child) {\n const type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util.throw('You may only add groups and shapes to groups.');\n }\n }\n}\nGroup.prototype.nodeType = 'Group';\n_registerNode(Group);\n","import { glob } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nconst now = (function () {\n if (glob.performance && glob.performance.now) {\n return function () {\n return glob.performance.now();\n };\n }\n return function () {\n return new Date().getTime();\n };\n})();\nexport class Animation {\n constructor(func, layers) {\n this.id = Animation.animIdCounter++;\n this.frame = {\n time: 0,\n timeDiff: 0,\n lastTime: now(),\n frameRate: 0,\n };\n this.func = func;\n this.setLayers(layers);\n }\n setLayers(layers) {\n let lays = [];\n if (layers) {\n lays = Array.isArray(layers) ? layers : [layers];\n }\n this.layers = lays;\n return this;\n }\n getLayers() {\n return this.layers;\n }\n addLayer(layer) {\n const layers = this.layers;\n const len = layers.length;\n for (let n = 0; n < len; n++) {\n if (layers[n]._id === layer._id) {\n return false;\n }\n }\n this.layers.push(layer);\n return true;\n }\n isRunning() {\n const a = Animation;\n const animations = a.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === this.id) {\n return true;\n }\n }\n return false;\n }\n start() {\n this.stop();\n this.frame.timeDiff = 0;\n this.frame.lastTime = now();\n Animation._addAnimation(this);\n return this;\n }\n stop() {\n Animation._removeAnimation(this);\n return this;\n }\n _updateFrameObject(time) {\n this.frame.timeDiff = time - this.frame.lastTime;\n this.frame.lastTime = time;\n this.frame.time += this.frame.timeDiff;\n this.frame.frameRate = 1000 / this.frame.timeDiff;\n }\n static _addAnimation(anim) {\n this.animations.push(anim);\n this._handleAnimation();\n }\n static _removeAnimation(anim) {\n const id = anim.id;\n const animations = this.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === id) {\n this.animations.splice(n, 1);\n break;\n }\n }\n }\n static _runFrames() {\n const layerHash = {};\n const animations = this.animations;\n for (let n = 0; n < animations.length; n++) {\n const anim = animations[n];\n const layers = anim.layers;\n const func = anim.func;\n anim._updateFrameObject(now());\n const layersLen = layers.length;\n let needRedraw;\n if (func) {\n needRedraw = func.call(anim, anim.frame) !== false;\n }\n else {\n needRedraw = true;\n }\n if (!needRedraw) {\n continue;\n }\n for (let i = 0; i < layersLen; i++) {\n const layer = layers[i];\n if (layer._id !== undefined) {\n layerHash[layer._id] = layer;\n }\n }\n }\n for (const key in layerHash) {\n if (!layerHash.hasOwnProperty(key)) {\n continue;\n }\n layerHash[key].batchDraw();\n }\n }\n static _animationLoop() {\n const Anim = Animation;\n if (Anim.animations.length) {\n Anim._runFrames();\n Util.requestAnimFrame(Anim._animationLoop);\n }\n else {\n Anim.animRunning = false;\n }\n }\n static _handleAnimation() {\n if (!this.animRunning) {\n this.animRunning = true;\n Util.requestAnimFrame(this._animationLoop);\n }\n }\n}\nAnimation.animations = [];\nAnimation.animIdCounter = 0;\nAnimation.animRunning = false;\n","import { Util } from \"./Util.js\";\nimport { Animation } from \"./Animation.js\";\nimport { Node } from \"./Node.js\";\nimport { Konva } from \"./Global.js\";\nconst blacklist = {\n node: 1,\n duration: 1,\n easing: 1,\n onFinish: 1,\n yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, colorAttrs = ['fill', 'stroke', 'shadowColor'];\nlet idCounter = 0;\nclass TweenEngine {\n constructor(prop, propFunc, func, begin, finish, duration, yoyo) {\n this.prop = prop;\n this.propFunc = propFunc;\n this.begin = begin;\n this._pos = begin;\n this.duration = duration;\n this._change = 0;\n this.prevPos = 0;\n this.yoyo = yoyo;\n this._time = 0;\n this._position = 0;\n this._startTime = 0;\n this._finish = 0;\n this.func = func;\n this._change = finish - this.begin;\n this.pause();\n }\n fire(str) {\n const handler = this[str];\n if (handler) {\n handler();\n }\n }\n setTime(t) {\n if (t > this.duration) {\n if (this.yoyo) {\n this._time = this.duration;\n this.reverse();\n }\n else {\n this.finish();\n }\n }\n else if (t < 0) {\n if (this.yoyo) {\n this._time = 0;\n this.play();\n }\n else {\n this.reset();\n }\n }\n else {\n this._time = t;\n this.update();\n }\n }\n getTime() {\n return this._time;\n }\n setPosition(p) {\n this.prevPos = this._pos;\n this.propFunc(p);\n this._pos = p;\n }\n getPosition(t) {\n if (t === undefined) {\n t = this._time;\n }\n return this.func(t, this.begin, this._change, this.duration);\n }\n play() {\n this.state = PLAYING;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onPlay');\n }\n reverse() {\n this.state = REVERSING;\n this._time = this.duration - this._time;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onReverse');\n }\n seek(t) {\n this.pause();\n this._time = t;\n this.update();\n this.fire('onSeek');\n }\n reset() {\n this.pause();\n this._time = 0;\n this.update();\n this.fire('onReset');\n }\n finish() {\n this.pause();\n this._time = this.duration;\n this.update();\n this.fire('onFinish');\n }\n update() {\n this.setPosition(this.getPosition(this._time));\n this.fire('onUpdate');\n }\n onEnterFrame() {\n const t = this.getTimer() - this._startTime;\n if (this.state === PLAYING) {\n this.setTime(t);\n }\n else if (this.state === REVERSING) {\n this.setTime(this.duration - t);\n }\n }\n pause() {\n this.state = PAUSED;\n this.fire('onPause');\n }\n getTimer() {\n return new Date().getTime();\n }\n}\nexport class Tween {\n constructor(config) {\n const that = this, node = config.node, nodeId = node._id, easing = config.easing || Easings.Linear, yoyo = !!config.yoyo;\n let duration, key;\n if (typeof config.duration === 'undefined') {\n duration = 0.3;\n }\n else if (config.duration === 0) {\n duration = 0.001;\n }\n else {\n duration = config.duration;\n }\n this.node = node;\n this._id = idCounter++;\n const layers = node.getLayer() ||\n (node instanceof Konva['Stage'] ? node.getLayers() : null);\n if (!layers) {\n Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n }\n this.anim = new Animation(function () {\n that.tween.onEnterFrame();\n }, layers);\n this.tween = new TweenEngine(key, function (i) {\n that._tweenFunc(i);\n }, easing, 0, 1, duration * 1000, yoyo);\n this._addListeners();\n if (!Tween.attrs[nodeId]) {\n Tween.attrs[nodeId] = {};\n }\n if (!Tween.attrs[nodeId][this._id]) {\n Tween.attrs[nodeId][this._id] = {};\n }\n if (!Tween.tweens[nodeId]) {\n Tween.tweens[nodeId] = {};\n }\n for (key in config) {\n if (blacklist[key] === undefined) {\n this._addAttr(key, config[key]);\n }\n }\n this.reset();\n this.onFinish = config.onFinish;\n this.onReset = config.onReset;\n this.onUpdate = config.onUpdate;\n }\n _addAttr(key, end) {\n const node = this.node, nodeId = node._id;\n let diff, len, trueEnd, trueStart, endRGBA;\n const tweenId = Tween.tweens[nodeId][key];\n if (tweenId) {\n delete Tween.attrs[nodeId][tweenId][key];\n }\n let start = node.getAttr(key);\n if (Util._isArray(end)) {\n diff = [];\n len = Math.max(end.length, start.length);\n if (key === 'points' && end.length !== start.length) {\n if (end.length > start.length) {\n trueStart = start;\n start = Util._prepareArrayForTween(start, end, node.closed());\n }\n else {\n trueEnd = end;\n end = Util._prepareArrayForTween(end, start, node.closed());\n }\n }\n if (key.indexOf('fill') === 0) {\n for (let n = 0; n < len; n++) {\n if (n % 2 === 0) {\n diff.push(end[n] - start[n]);\n }\n else {\n const startRGBA = Util.colorToRGBA(start[n]);\n endRGBA = Util.colorToRGBA(end[n]);\n start[n] = startRGBA;\n diff.push({\n r: endRGBA.r - startRGBA.r,\n g: endRGBA.g - startRGBA.g,\n b: endRGBA.b - startRGBA.b,\n a: endRGBA.a - startRGBA.a,\n });\n }\n }\n }\n else {\n for (let n = 0; n < len; n++) {\n diff.push(end[n] - start[n]);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n start = Util.colorToRGBA(start);\n endRGBA = Util.colorToRGBA(end);\n diff = {\n r: endRGBA.r - start.r,\n g: endRGBA.g - start.g,\n b: endRGBA.b - start.b,\n a: endRGBA.a - start.a,\n };\n }\n else {\n diff = end - start;\n }\n Tween.attrs[nodeId][this._id][key] = {\n start: start,\n diff: diff,\n end: end,\n trueEnd: trueEnd,\n trueStart: trueStart,\n };\n Tween.tweens[nodeId][key] = this._id;\n }\n _tweenFunc(i) {\n const node = this.node, attrs = Tween.attrs[node._id][this._id];\n let key, attr, start, diff, newVal, n, len, end;\n for (key in attrs) {\n attr = attrs[key];\n start = attr.start;\n diff = attr.diff;\n end = attr.end;\n if (Util._isArray(start)) {\n newVal = [];\n len = Math.max(start.length, end.length);\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n else {\n newVal.push('rgba(' +\n Math.round(start[n].r + diff[n].r * i) +\n ',' +\n Math.round(start[n].g + diff[n].g * i) +\n ',' +\n Math.round(start[n].b + diff[n].b * i) +\n ',' +\n (start[n].a + diff[n].a * i) +\n ')');\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n newVal =\n 'rgba(' +\n Math.round(start.r + diff.r * i) +\n ',' +\n Math.round(start.g + diff.g * i) +\n ',' +\n Math.round(start.b + diff.b * i) +\n ',' +\n (start.a + diff.a * i) +\n ')';\n }\n else {\n newVal = start + diff * i;\n }\n node.setAttr(key, newVal);\n }\n }\n _addListeners() {\n this.tween.onPlay = () => {\n this.anim.start();\n };\n this.tween.onReverse = () => {\n this.anim.start();\n };\n this.tween.onPause = () => {\n this.anim.stop();\n };\n this.tween.onFinish = () => {\n const node = this.node;\n const attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueEnd) {\n node.setAttr('points', attrs.points.trueEnd);\n }\n if (this.onFinish) {\n this.onFinish.call(this);\n }\n };\n this.tween.onReset = () => {\n const node = this.node;\n const attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueStart) {\n node.points(attrs.points.trueStart);\n }\n if (this.onReset) {\n this.onReset();\n }\n };\n this.tween.onUpdate = () => {\n if (this.onUpdate) {\n this.onUpdate.call(this);\n }\n };\n }\n play() {\n this.tween.play();\n return this;\n }\n reverse() {\n this.tween.reverse();\n return this;\n }\n reset() {\n this.tween.reset();\n return this;\n }\n seek(t) {\n this.tween.seek(t * 1000);\n return this;\n }\n pause() {\n this.tween.pause();\n return this;\n }\n finish() {\n this.tween.finish();\n return this;\n }\n destroy() {\n const nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId];\n this.pause();\n if (this.anim) {\n this.anim.stop();\n }\n for (const key in attrs) {\n delete Tween.tweens[nodeId][key];\n }\n delete Tween.attrs[nodeId][thisId];\n if (Tween.tweens[nodeId]) {\n if (Object.keys(Tween.tweens[nodeId]).length === 0) {\n delete Tween.tweens[nodeId];\n }\n if (Object.keys(Tween.attrs[nodeId]).length === 0) {\n delete Tween.attrs[nodeId];\n }\n }\n }\n}\nTween.attrs = {};\nTween.tweens = {};\nNode.prototype.to = function (params) {\n const onFinish = params.onFinish;\n params.node = this;\n params.onFinish = function () {\n this.destroy();\n if (onFinish) {\n onFinish();\n }\n };\n const tween = new Tween(params);\n tween.play();\n};\nexport const Easings = {\n BackEaseIn(t, b, c, d) {\n const s = 1.70158;\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n BackEaseOut(t, b, c, d) {\n const s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n BackEaseInOut(t, b, c, d) {\n let s = 1.70158;\n if ((t /= d / 2) < 1) {\n return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n }\n return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n },\n ElasticEaseIn(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (-(a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b);\n },\n ElasticEaseOut(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) +\n c +\n b);\n },\n ElasticEaseInOut(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n if (t < 1) {\n return (-0.5 *\n (a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +\n b);\n }\n return (a *\n Math.pow(2, -10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p) *\n 0.5 +\n c +\n b);\n },\n BounceEaseOut(t, b, c, d) {\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n }\n else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n BounceEaseIn(t, b, c, d) {\n return c - Easings.BounceEaseOut(d - t, 0, c, d) + b;\n },\n BounceEaseInOut(t, b, c, d) {\n if (t < d / 2) {\n return Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n }\n else {\n return Easings.BounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n },\n EaseIn(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n EaseOut(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n EaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t + b;\n }\n return (-c / 2) * (--t * (t - 2) - 1) + b;\n },\n StrongEaseIn(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n },\n StrongEaseOut(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n StrongEaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t * t * t * t + b;\n }\n return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;\n },\n Linear(t, b, c, d) {\n return (c * t) / d + b;\n },\n};\n","import { Konva as Global } from \"./Global.js\";\nimport { Util, Transform } from \"./Util.js\";\nimport { Node } from \"./Node.js\";\nimport { Container } from \"./Container.js\";\nimport { Stage, stages } from \"./Stage.js\";\nimport { Layer } from \"./Layer.js\";\nimport { FastLayer } from \"./FastLayer.js\";\nimport { Group } from \"./Group.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { Shape, shapes } from \"./Shape.js\";\nimport { Animation } from \"./Animation.js\";\nimport { Tween, Easings } from \"./Tween.js\";\nimport { Context } from \"./Context.js\";\nimport { Canvas } from \"./Canvas.js\";\nexport const Konva = Util._assign(Global, {\n Util,\n Transform,\n Node,\n Container,\n Stage,\n stages,\n Layer,\n FastLayer,\n Group,\n DD,\n Shape,\n shapes,\n Animation,\n Tween,\n Easings,\n Context,\n Canvas,\n});\nexport default Konva;\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator, getBooleanValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Arc extends Shape {\n _sceneFunc(context) {\n const angle = Konva.getAngle(this.angle()), clockwise = this.clockwise();\n context.beginPath();\n context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n getSelfRect() {\n const innerRadius = this.innerRadius();\n const outerRadius = this.outerRadius();\n const clockwise = this.clockwise();\n const angle = Konva.getAngle(clockwise ? 360 - this.angle() : this.angle());\n const boundLeftRatio = Math.cos(Math.min(angle, Math.PI));\n const boundRightRatio = 1;\n const boundTopRatio = Math.sin(Math.min(Math.max(Math.PI, angle), (3 * Math.PI) / 2));\n const boundBottomRatio = Math.sin(Math.min(angle, Math.PI / 2));\n const boundLeft = boundLeftRatio * (boundLeftRatio > 0 ? innerRadius : outerRadius);\n const boundRight = boundRightRatio * (boundRightRatio > 0 ? outerRadius : innerRadius);\n const boundTop = boundTopRatio * (boundTopRatio > 0 ? innerRadius : outerRadius);\n const boundBottom = boundBottomRatio * (boundBottomRatio > 0 ? outerRadius : innerRadius);\n return {\n x: boundLeft,\n y: clockwise ? -1 * boundBottom : boundTop,\n width: boundRight - boundLeft,\n height: boundBottom - boundTop,\n };\n }\n}\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = [\n 'innerRadius',\n 'outerRadius',\n 'angle',\n 'clockwise',\n];\n_registerNode(Arc);\nFactory.addGetterSetter(Arc, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'outerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'angle', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'clockwise', false, getBooleanValidator());\n","import { Factory } from \"../Factory.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberArrayValidator, getNumberValidator } from \"../Validators.js\";\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n const d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n return [p1x, p1y, p2x, p2y];\n}\nfunction expandPoints(p, tension) {\n const len = p.length, allPoints = [];\n for (let n = 2; n < len - 2; n += 2) {\n const cp = getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\n if (isNaN(cp[0])) {\n continue;\n }\n allPoints.push(cp[0]);\n allPoints.push(cp[1]);\n allPoints.push(p[n]);\n allPoints.push(p[n + 1]);\n allPoints.push(cp[2]);\n allPoints.push(cp[3]);\n }\n return allPoints;\n}\nexport class Line extends Shape {\n constructor(config) {\n super(config);\n this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n this._clearCache('tensionPoints');\n });\n }\n _sceneFunc(context) {\n const points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier();\n if (!length) {\n return;\n }\n let n = 0;\n context.beginPath();\n context.moveTo(points[0], points[1]);\n if (tension !== 0 && length > 4) {\n const tp = this.getTensionPoints();\n const len = tp.length;\n n = closed ? 0 : 4;\n if (!closed) {\n context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\n }\n while (n < len - 2) {\n context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\n }\n if (!closed) {\n context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n }\n }\n else if (bezier) {\n n = 2;\n while (n < length) {\n context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n }\n }\n else {\n for (n = 2; n < length; n += 2) {\n context.lineTo(points[n], points[n + 1]);\n }\n }\n if (closed) {\n context.closePath();\n context.fillStrokeShape(this);\n }\n else {\n context.strokeShape(this);\n }\n }\n getTensionPoints() {\n return this._getCache('tensionPoints', this._getTensionPoints);\n }\n _getTensionPoints() {\n if (this.closed()) {\n return this._getTensionPointsClosed();\n }\n else {\n return expandPoints(this.points(), this.tension());\n }\n }\n _getTensionPointsClosed() {\n const p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\n .concat(middle)\n .concat([\n lastControlPoints[0],\n lastControlPoints[1],\n p[len - 2],\n p[len - 1],\n lastControlPoints[2],\n lastControlPoints[3],\n firstControlPoints[0],\n firstControlPoints[1],\n p[0],\n p[1],\n ]);\n return tp;\n }\n getWidth() {\n return this.getSelfRect().width;\n }\n getHeight() {\n return this.getSelfRect().height;\n }\n getSelfRect() {\n let points = this.points();\n if (points.length < 4) {\n return {\n x: points[0] || 0,\n y: points[1] || 0,\n width: 0,\n height: 0,\n };\n }\n if (this.tension() !== 0) {\n points = [\n points[0],\n points[1],\n ...this._getTensionPoints(),\n points[points.length - 2],\n points[points.length - 1],\n ];\n }\n else {\n points = this.points();\n }\n let minX = points[0];\n let maxX = points[0];\n let minY = points[1];\n let maxY = points[1];\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n}\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\n_registerNode(Line);\nFactory.addGetterSetter(Line, 'closed', false);\nFactory.addGetterSetter(Line, 'bezier', false);\nFactory.addGetterSetter(Line, 'tension', 0, getNumberValidator());\nFactory.addGetterSetter(Line, 'points', [], getNumberArrayValidator());\n","export const tValues = [\n [],\n [],\n [\n -0.5773502691896257645091487805019574556476,\n 0.5773502691896257645091487805019574556476,\n ],\n [\n 0, -0.7745966692414833770358530799564799221665,\n 0.7745966692414833770358530799564799221665,\n ],\n [\n -0.3399810435848562648026657591032446872005,\n 0.3399810435848562648026657591032446872005,\n -0.8611363115940525752239464888928095050957,\n 0.8611363115940525752239464888928095050957,\n ],\n [\n 0, -0.5384693101056830910363144207002088049672,\n 0.5384693101056830910363144207002088049672,\n -0.9061798459386639927976268782993929651256,\n 0.9061798459386639927976268782993929651256,\n ],\n [\n 0.6612093864662645136613995950199053470064,\n -0.6612093864662645136613995950199053470064,\n -0.2386191860831969086305017216807119354186,\n 0.2386191860831969086305017216807119354186,\n -0.9324695142031520278123015544939946091347,\n 0.9324695142031520278123015544939946091347,\n ],\n [\n 0, 0.4058451513773971669066064120769614633473,\n -0.4058451513773971669066064120769614633473,\n -0.7415311855993944398638647732807884070741,\n 0.7415311855993944398638647732807884070741,\n -0.9491079123427585245261896840478512624007,\n 0.9491079123427585245261896840478512624007,\n ],\n [\n -0.1834346424956498049394761423601839806667,\n 0.1834346424956498049394761423601839806667,\n -0.5255324099163289858177390491892463490419,\n 0.5255324099163289858177390491892463490419,\n -0.7966664774136267395915539364758304368371,\n 0.7966664774136267395915539364758304368371,\n -0.9602898564975362316835608685694729904282,\n 0.9602898564975362316835608685694729904282,\n ],\n [\n 0, -0.8360311073266357942994297880697348765441,\n 0.8360311073266357942994297880697348765441,\n -0.9681602395076260898355762029036728700494,\n 0.9681602395076260898355762029036728700494,\n -0.3242534234038089290385380146433366085719,\n 0.3242534234038089290385380146433366085719,\n -0.6133714327005903973087020393414741847857,\n 0.6133714327005903973087020393414741847857,\n ],\n [\n -0.1488743389816312108848260011297199846175,\n 0.1488743389816312108848260011297199846175,\n -0.4333953941292471907992659431657841622,\n 0.4333953941292471907992659431657841622,\n -0.6794095682990244062343273651148735757692,\n 0.6794095682990244062343273651148735757692,\n -0.8650633666889845107320966884234930485275,\n 0.8650633666889845107320966884234930485275,\n -0.9739065285171717200779640120844520534282,\n 0.9739065285171717200779640120844520534282,\n ],\n [\n 0, -0.2695431559523449723315319854008615246796,\n 0.2695431559523449723315319854008615246796,\n -0.5190961292068118159257256694586095544802,\n 0.5190961292068118159257256694586095544802,\n -0.7301520055740493240934162520311534580496,\n 0.7301520055740493240934162520311534580496,\n -0.8870625997680952990751577693039272666316,\n 0.8870625997680952990751577693039272666316,\n -0.9782286581460569928039380011228573907714,\n 0.9782286581460569928039380011228573907714,\n ],\n [\n -0.1252334085114689154724413694638531299833,\n 0.1252334085114689154724413694638531299833,\n -0.3678314989981801937526915366437175612563,\n 0.3678314989981801937526915366437175612563,\n -0.587317954286617447296702418940534280369,\n 0.587317954286617447296702418940534280369,\n -0.7699026741943046870368938332128180759849,\n 0.7699026741943046870368938332128180759849,\n -0.9041172563704748566784658661190961925375,\n 0.9041172563704748566784658661190961925375,\n -0.9815606342467192506905490901492808229601,\n 0.9815606342467192506905490901492808229601,\n ],\n [\n 0, -0.2304583159551347940655281210979888352115,\n 0.2304583159551347940655281210979888352115,\n -0.4484927510364468528779128521276398678019,\n 0.4484927510364468528779128521276398678019,\n -0.6423493394403402206439846069955156500716,\n 0.6423493394403402206439846069955156500716,\n -0.8015780907333099127942064895828598903056,\n 0.8015780907333099127942064895828598903056,\n -0.9175983992229779652065478365007195123904,\n 0.9175983992229779652065478365007195123904,\n -0.9841830547185881494728294488071096110649,\n 0.9841830547185881494728294488071096110649,\n ],\n [\n -0.1080549487073436620662446502198347476119,\n 0.1080549487073436620662446502198347476119,\n -0.3191123689278897604356718241684754668342,\n 0.3191123689278897604356718241684754668342,\n -0.5152486363581540919652907185511886623088,\n 0.5152486363581540919652907185511886623088,\n -0.6872929048116854701480198030193341375384,\n 0.6872929048116854701480198030193341375384,\n -0.8272013150697649931897947426503949610397,\n 0.8272013150697649931897947426503949610397,\n -0.928434883663573517336391139377874264477,\n 0.928434883663573517336391139377874264477,\n -0.986283808696812338841597266704052801676,\n 0.986283808696812338841597266704052801676,\n ],\n [\n 0, -0.2011940939974345223006283033945962078128,\n 0.2011940939974345223006283033945962078128,\n -0.3941513470775633698972073709810454683627,\n 0.3941513470775633698972073709810454683627,\n -0.5709721726085388475372267372539106412383,\n 0.5709721726085388475372267372539106412383,\n -0.7244177313601700474161860546139380096308,\n 0.7244177313601700474161860546139380096308,\n -0.8482065834104272162006483207742168513662,\n 0.8482065834104272162006483207742168513662,\n -0.9372733924007059043077589477102094712439,\n 0.9372733924007059043077589477102094712439,\n -0.9879925180204854284895657185866125811469,\n 0.9879925180204854284895657185866125811469,\n ],\n [\n -0.0950125098376374401853193354249580631303,\n 0.0950125098376374401853193354249580631303,\n -0.281603550779258913230460501460496106486,\n 0.281603550779258913230460501460496106486,\n -0.45801677765722738634241944298357757354,\n 0.45801677765722738634241944298357757354,\n -0.6178762444026437484466717640487910189918,\n 0.6178762444026437484466717640487910189918,\n -0.7554044083550030338951011948474422683538,\n 0.7554044083550030338951011948474422683538,\n -0.8656312023878317438804678977123931323873,\n 0.8656312023878317438804678977123931323873,\n -0.9445750230732325760779884155346083450911,\n 0.9445750230732325760779884155346083450911,\n -0.9894009349916499325961541734503326274262,\n 0.9894009349916499325961541734503326274262,\n ],\n [\n 0, -0.1784841814958478558506774936540655574754,\n 0.1784841814958478558506774936540655574754,\n -0.3512317634538763152971855170953460050405,\n 0.3512317634538763152971855170953460050405,\n -0.5126905370864769678862465686295518745829,\n 0.5126905370864769678862465686295518745829,\n -0.6576711592166907658503022166430023351478,\n 0.6576711592166907658503022166430023351478,\n -0.7815140038968014069252300555204760502239,\n 0.7815140038968014069252300555204760502239,\n -0.8802391537269859021229556944881556926234,\n 0.8802391537269859021229556944881556926234,\n -0.9506755217687677612227169578958030214433,\n 0.9506755217687677612227169578958030214433,\n -0.9905754753144173356754340199406652765077,\n 0.9905754753144173356754340199406652765077,\n ],\n [\n -0.0847750130417353012422618529357838117333,\n 0.0847750130417353012422618529357838117333,\n -0.2518862256915055095889728548779112301628,\n 0.2518862256915055095889728548779112301628,\n -0.4117511614628426460359317938330516370789,\n 0.4117511614628426460359317938330516370789,\n -0.5597708310739475346078715485253291369276,\n 0.5597708310739475346078715485253291369276,\n -0.6916870430603532078748910812888483894522,\n 0.6916870430603532078748910812888483894522,\n -0.8037049589725231156824174550145907971032,\n 0.8037049589725231156824174550145907971032,\n -0.8926024664975557392060605911271455154078,\n 0.8926024664975557392060605911271455154078,\n -0.9558239495713977551811958929297763099728,\n 0.9558239495713977551811958929297763099728,\n -0.9915651684209309467300160047061507702525,\n 0.9915651684209309467300160047061507702525,\n ],\n [\n 0, -0.1603586456402253758680961157407435495048,\n 0.1603586456402253758680961157407435495048,\n -0.3165640999636298319901173288498449178922,\n 0.3165640999636298319901173288498449178922,\n -0.4645707413759609457172671481041023679762,\n 0.4645707413759609457172671481041023679762,\n -0.6005453046616810234696381649462392798683,\n 0.6005453046616810234696381649462392798683,\n -0.7209661773352293786170958608237816296571,\n 0.7209661773352293786170958608237816296571,\n -0.8227146565371428249789224867127139017745,\n 0.8227146565371428249789224867127139017745,\n -0.9031559036148179016426609285323124878093,\n 0.9031559036148179016426609285323124878093,\n -0.960208152134830030852778840687651526615,\n 0.960208152134830030852778840687651526615,\n -0.9924068438435844031890176702532604935893,\n 0.9924068438435844031890176702532604935893,\n ],\n [\n -0.0765265211334973337546404093988382110047,\n 0.0765265211334973337546404093988382110047,\n -0.227785851141645078080496195368574624743,\n 0.227785851141645078080496195368574624743,\n -0.3737060887154195606725481770249272373957,\n 0.3737060887154195606725481770249272373957,\n -0.5108670019508270980043640509552509984254,\n 0.5108670019508270980043640509552509984254,\n -0.6360536807265150254528366962262859367433,\n 0.6360536807265150254528366962262859367433,\n -0.7463319064601507926143050703556415903107,\n 0.7463319064601507926143050703556415903107,\n -0.8391169718222188233945290617015206853296,\n 0.8391169718222188233945290617015206853296,\n -0.9122344282513259058677524412032981130491,\n 0.9122344282513259058677524412032981130491,\n -0.963971927277913791267666131197277221912,\n 0.963971927277913791267666131197277221912,\n -0.9931285991850949247861223884713202782226,\n 0.9931285991850949247861223884713202782226,\n ],\n [\n 0, -0.1455618541608950909370309823386863301163,\n 0.1455618541608950909370309823386863301163,\n -0.288021316802401096600792516064600319909,\n 0.288021316802401096600792516064600319909,\n -0.4243421202074387835736688885437880520964,\n 0.4243421202074387835736688885437880520964,\n -0.551618835887219807059018796724313286622,\n 0.551618835887219807059018796724313286622,\n -0.667138804197412319305966669990339162597,\n 0.667138804197412319305966669990339162597,\n -0.7684399634756779086158778513062280348209,\n 0.7684399634756779086158778513062280348209,\n -0.8533633645833172836472506385875676702761,\n 0.8533633645833172836472506385875676702761,\n -0.9200993341504008287901871337149688941591,\n 0.9200993341504008287901871337149688941591,\n -0.9672268385663062943166222149076951614246,\n 0.9672268385663062943166222149076951614246,\n -0.9937521706203895002602420359379409291933,\n 0.9937521706203895002602420359379409291933,\n ],\n [\n -0.0697392733197222212138417961186280818222,\n 0.0697392733197222212138417961186280818222,\n -0.2078604266882212854788465339195457342156,\n 0.2078604266882212854788465339195457342156,\n -0.3419358208920842251581474204273796195591,\n 0.3419358208920842251581474204273796195591,\n -0.4693558379867570264063307109664063460953,\n 0.4693558379867570264063307109664063460953,\n -0.5876404035069115929588769276386473488776,\n 0.5876404035069115929588769276386473488776,\n -0.6944872631866827800506898357622567712673,\n 0.6944872631866827800506898357622567712673,\n -0.7878168059792081620042779554083515213881,\n 0.7878168059792081620042779554083515213881,\n -0.8658125777203001365364256370193787290847,\n 0.8658125777203001365364256370193787290847,\n -0.9269567721871740005206929392590531966353,\n 0.9269567721871740005206929392590531966353,\n -0.9700604978354287271239509867652687108059,\n 0.9700604978354287271239509867652687108059,\n -0.994294585482399292073031421161298980393,\n 0.994294585482399292073031421161298980393,\n ],\n [\n 0, -0.1332568242984661109317426822417661370104,\n 0.1332568242984661109317426822417661370104,\n -0.264135680970344930533869538283309602979,\n 0.264135680970344930533869538283309602979,\n -0.390301038030290831421488872880605458578,\n 0.390301038030290831421488872880605458578,\n -0.5095014778460075496897930478668464305448,\n 0.5095014778460075496897930478668464305448,\n -0.6196098757636461563850973116495956533871,\n 0.6196098757636461563850973116495956533871,\n -0.7186613631319501944616244837486188483299,\n 0.7186613631319501944616244837486188483299,\n -0.8048884016188398921511184069967785579414,\n 0.8048884016188398921511184069967785579414,\n -0.8767523582704416673781568859341456716389,\n 0.8767523582704416673781568859341456716389,\n -0.9329710868260161023491969890384229782357,\n 0.9329710868260161023491969890384229782357,\n -0.9725424712181152319560240768207773751816,\n 0.9725424712181152319560240768207773751816,\n -0.9947693349975521235239257154455743605736,\n 0.9947693349975521235239257154455743605736,\n ],\n [\n -0.0640568928626056260850430826247450385909,\n 0.0640568928626056260850430826247450385909,\n -0.1911188674736163091586398207570696318404,\n 0.1911188674736163091586398207570696318404,\n -0.3150426796961633743867932913198102407864,\n 0.3150426796961633743867932913198102407864,\n -0.4337935076260451384870842319133497124524,\n 0.4337935076260451384870842319133497124524,\n -0.5454214713888395356583756172183723700107,\n 0.5454214713888395356583756172183723700107,\n -0.6480936519369755692524957869107476266696,\n 0.6480936519369755692524957869107476266696,\n -0.7401241915785543642438281030999784255232,\n 0.7401241915785543642438281030999784255232,\n -0.8200019859739029219539498726697452080761,\n 0.8200019859739029219539498726697452080761,\n -0.8864155270044010342131543419821967550873,\n 0.8864155270044010342131543419821967550873,\n -0.9382745520027327585236490017087214496548,\n 0.9382745520027327585236490017087214496548,\n -0.9747285559713094981983919930081690617411,\n 0.9747285559713094981983919930081690617411,\n -0.9951872199970213601799974097007368118745,\n 0.9951872199970213601799974097007368118745,\n ],\n];\nexport const cValues = [\n [],\n [],\n [1.0, 1.0],\n [\n 0.8888888888888888888888888888888888888888,\n 0.5555555555555555555555555555555555555555,\n 0.5555555555555555555555555555555555555555,\n ],\n [\n 0.6521451548625461426269360507780005927646,\n 0.6521451548625461426269360507780005927646,\n 0.3478548451374538573730639492219994072353,\n 0.3478548451374538573730639492219994072353,\n ],\n [\n 0.5688888888888888888888888888888888888888,\n 0.4786286704993664680412915148356381929122,\n 0.4786286704993664680412915148356381929122,\n 0.2369268850561890875142640407199173626432,\n 0.2369268850561890875142640407199173626432,\n ],\n [\n 0.3607615730481386075698335138377161116615,\n 0.3607615730481386075698335138377161116615,\n 0.4679139345726910473898703439895509948116,\n 0.4679139345726910473898703439895509948116,\n 0.1713244923791703450402961421727328935268,\n 0.1713244923791703450402961421727328935268,\n ],\n [\n 0.4179591836734693877551020408163265306122,\n 0.3818300505051189449503697754889751338783,\n 0.3818300505051189449503697754889751338783,\n 0.2797053914892766679014677714237795824869,\n 0.2797053914892766679014677714237795824869,\n 0.1294849661688696932706114326790820183285,\n 0.1294849661688696932706114326790820183285,\n ],\n [\n 0.3626837833783619829651504492771956121941,\n 0.3626837833783619829651504492771956121941,\n 0.3137066458778872873379622019866013132603,\n 0.3137066458778872873379622019866013132603,\n 0.2223810344533744705443559944262408844301,\n 0.2223810344533744705443559944262408844301,\n 0.1012285362903762591525313543099621901153,\n 0.1012285362903762591525313543099621901153,\n ],\n [\n 0.3302393550012597631645250692869740488788,\n 0.1806481606948574040584720312429128095143,\n 0.1806481606948574040584720312429128095143,\n 0.0812743883615744119718921581105236506756,\n 0.0812743883615744119718921581105236506756,\n 0.3123470770400028400686304065844436655987,\n 0.3123470770400028400686304065844436655987,\n 0.2606106964029354623187428694186328497718,\n 0.2606106964029354623187428694186328497718,\n ],\n [\n 0.295524224714752870173892994651338329421,\n 0.295524224714752870173892994651338329421,\n 0.2692667193099963550912269215694693528597,\n 0.2692667193099963550912269215694693528597,\n 0.2190863625159820439955349342281631924587,\n 0.2190863625159820439955349342281631924587,\n 0.1494513491505805931457763396576973324025,\n 0.1494513491505805931457763396576973324025,\n 0.0666713443086881375935688098933317928578,\n 0.0666713443086881375935688098933317928578,\n ],\n [\n 0.272925086777900630714483528336342189156,\n 0.2628045445102466621806888698905091953727,\n 0.2628045445102466621806888698905091953727,\n 0.2331937645919904799185237048431751394317,\n 0.2331937645919904799185237048431751394317,\n 0.1862902109277342514260976414316558916912,\n 0.1862902109277342514260976414316558916912,\n 0.1255803694649046246346942992239401001976,\n 0.1255803694649046246346942992239401001976,\n 0.0556685671161736664827537204425485787285,\n 0.0556685671161736664827537204425485787285,\n ],\n [\n 0.2491470458134027850005624360429512108304,\n 0.2491470458134027850005624360429512108304,\n 0.2334925365383548087608498989248780562594,\n 0.2334925365383548087608498989248780562594,\n 0.2031674267230659217490644558097983765065,\n 0.2031674267230659217490644558097983765065,\n 0.160078328543346226334652529543359071872,\n 0.160078328543346226334652529543359071872,\n 0.1069393259953184309602547181939962242145,\n 0.1069393259953184309602547181939962242145,\n 0.047175336386511827194615961485017060317,\n 0.047175336386511827194615961485017060317,\n ],\n [\n 0.2325515532308739101945895152688359481566,\n 0.2262831802628972384120901860397766184347,\n 0.2262831802628972384120901860397766184347,\n 0.2078160475368885023125232193060527633865,\n 0.2078160475368885023125232193060527633865,\n 0.1781459807619457382800466919960979955128,\n 0.1781459807619457382800466919960979955128,\n 0.1388735102197872384636017768688714676218,\n 0.1388735102197872384636017768688714676218,\n 0.0921214998377284479144217759537971209236,\n 0.0921214998377284479144217759537971209236,\n 0.0404840047653158795200215922009860600419,\n 0.0404840047653158795200215922009860600419,\n ],\n [\n 0.2152638534631577901958764433162600352749,\n 0.2152638534631577901958764433162600352749,\n 0.2051984637212956039659240656612180557103,\n 0.2051984637212956039659240656612180557103,\n 0.1855383974779378137417165901251570362489,\n 0.1855383974779378137417165901251570362489,\n 0.1572031671581935345696019386238421566056,\n 0.1572031671581935345696019386238421566056,\n 0.1215185706879031846894148090724766259566,\n 0.1215185706879031846894148090724766259566,\n 0.0801580871597602098056332770628543095836,\n 0.0801580871597602098056332770628543095836,\n 0.0351194603317518630318328761381917806197,\n 0.0351194603317518630318328761381917806197,\n ],\n [\n 0.2025782419255612728806201999675193148386,\n 0.1984314853271115764561183264438393248186,\n 0.1984314853271115764561183264438393248186,\n 0.1861610000155622110268005618664228245062,\n 0.1861610000155622110268005618664228245062,\n 0.1662692058169939335532008604812088111309,\n 0.1662692058169939335532008604812088111309,\n 0.1395706779261543144478047945110283225208,\n 0.1395706779261543144478047945110283225208,\n 0.1071592204671719350118695466858693034155,\n 0.1071592204671719350118695466858693034155,\n 0.0703660474881081247092674164506673384667,\n 0.0703660474881081247092674164506673384667,\n 0.0307532419961172683546283935772044177217,\n 0.0307532419961172683546283935772044177217,\n ],\n [\n 0.1894506104550684962853967232082831051469,\n 0.1894506104550684962853967232082831051469,\n 0.1826034150449235888667636679692199393835,\n 0.1826034150449235888667636679692199393835,\n 0.1691565193950025381893120790303599622116,\n 0.1691565193950025381893120790303599622116,\n 0.1495959888165767320815017305474785489704,\n 0.1495959888165767320815017305474785489704,\n 0.1246289712555338720524762821920164201448,\n 0.1246289712555338720524762821920164201448,\n 0.0951585116824927848099251076022462263552,\n 0.0951585116824927848099251076022462263552,\n 0.0622535239386478928628438369943776942749,\n 0.0622535239386478928628438369943776942749,\n 0.0271524594117540948517805724560181035122,\n 0.0271524594117540948517805724560181035122,\n ],\n [\n 0.1794464703562065254582656442618856214487,\n 0.1765627053669926463252709901131972391509,\n 0.1765627053669926463252709901131972391509,\n 0.1680041021564500445099706637883231550211,\n 0.1680041021564500445099706637883231550211,\n 0.1540457610768102880814315948019586119404,\n 0.1540457610768102880814315948019586119404,\n 0.1351363684685254732863199817023501973721,\n 0.1351363684685254732863199817023501973721,\n 0.1118838471934039710947883856263559267358,\n 0.1118838471934039710947883856263559267358,\n 0.0850361483171791808835353701910620738504,\n 0.0850361483171791808835353701910620738504,\n 0.0554595293739872011294401653582446605128,\n 0.0554595293739872011294401653582446605128,\n 0.0241483028685479319601100262875653246916,\n 0.0241483028685479319601100262875653246916,\n ],\n [\n 0.1691423829631435918406564701349866103341,\n 0.1691423829631435918406564701349866103341,\n 0.1642764837458327229860537764659275904123,\n 0.1642764837458327229860537764659275904123,\n 0.1546846751262652449254180038363747721932,\n 0.1546846751262652449254180038363747721932,\n 0.1406429146706506512047313037519472280955,\n 0.1406429146706506512047313037519472280955,\n 0.1225552067114784601845191268002015552281,\n 0.1225552067114784601845191268002015552281,\n 0.1009420441062871655628139849248346070628,\n 0.1009420441062871655628139849248346070628,\n 0.0764257302548890565291296776166365256053,\n 0.0764257302548890565291296776166365256053,\n 0.0497145488949697964533349462026386416808,\n 0.0497145488949697964533349462026386416808,\n 0.0216160135264833103133427102664524693876,\n 0.0216160135264833103133427102664524693876,\n ],\n [\n 0.1610544498487836959791636253209167350399,\n 0.1589688433939543476499564394650472016787,\n 0.1589688433939543476499564394650472016787,\n 0.152766042065859666778855400897662998461,\n 0.152766042065859666778855400897662998461,\n 0.1426067021736066117757461094419029724756,\n 0.1426067021736066117757461094419029724756,\n 0.1287539625393362276755157848568771170558,\n 0.1287539625393362276755157848568771170558,\n 0.1115666455473339947160239016817659974813,\n 0.1115666455473339947160239016817659974813,\n 0.0914900216224499994644620941238396526609,\n 0.0914900216224499994644620941238396526609,\n 0.0690445427376412265807082580060130449618,\n 0.0690445427376412265807082580060130449618,\n 0.0448142267656996003328381574019942119517,\n 0.0448142267656996003328381574019942119517,\n 0.0194617882297264770363120414644384357529,\n 0.0194617882297264770363120414644384357529,\n ],\n [\n 0.1527533871307258506980843319550975934919,\n 0.1527533871307258506980843319550975934919,\n 0.1491729864726037467878287370019694366926,\n 0.1491729864726037467878287370019694366926,\n 0.1420961093183820513292983250671649330345,\n 0.1420961093183820513292983250671649330345,\n 0.1316886384491766268984944997481631349161,\n 0.1316886384491766268984944997481631349161,\n 0.118194531961518417312377377711382287005,\n 0.118194531961518417312377377711382287005,\n 0.1019301198172404350367501354803498761666,\n 0.1019301198172404350367501354803498761666,\n 0.0832767415767047487247581432220462061001,\n 0.0832767415767047487247581432220462061001,\n 0.0626720483341090635695065351870416063516,\n 0.0626720483341090635695065351870416063516,\n 0.040601429800386941331039952274932109879,\n 0.040601429800386941331039952274932109879,\n 0.0176140071391521183118619623518528163621,\n 0.0176140071391521183118619623518528163621,\n ],\n [\n 0.1460811336496904271919851476833711882448,\n 0.1445244039899700590638271665537525436099,\n 0.1445244039899700590638271665537525436099,\n 0.1398873947910731547221334238675831108927,\n 0.1398873947910731547221334238675831108927,\n 0.132268938633337461781052574496775604329,\n 0.132268938633337461781052574496775604329,\n 0.1218314160537285341953671771257335983563,\n 0.1218314160537285341953671771257335983563,\n 0.1087972991671483776634745780701056420336,\n 0.1087972991671483776634745780701056420336,\n 0.0934444234560338615532897411139320884835,\n 0.0934444234560338615532897411139320884835,\n 0.0761001136283793020170516533001831792261,\n 0.0761001136283793020170516533001831792261,\n 0.0571344254268572082836358264724479574912,\n 0.0571344254268572082836358264724479574912,\n 0.0369537897708524937999506682993296661889,\n 0.0369537897708524937999506682993296661889,\n 0.0160172282577743333242246168584710152658,\n 0.0160172282577743333242246168584710152658,\n ],\n [\n 0.1392518728556319933754102483418099578739,\n 0.1392518728556319933754102483418099578739,\n 0.1365414983460151713525738312315173965863,\n 0.1365414983460151713525738312315173965863,\n 0.1311735047870623707329649925303074458757,\n 0.1311735047870623707329649925303074458757,\n 0.1232523768105124242855609861548144719594,\n 0.1232523768105124242855609861548144719594,\n 0.1129322960805392183934006074217843191142,\n 0.1129322960805392183934006074217843191142,\n 0.1004141444428809649320788378305362823508,\n 0.1004141444428809649320788378305362823508,\n 0.0859416062170677274144436813727028661891,\n 0.0859416062170677274144436813727028661891,\n 0.0697964684245204880949614189302176573987,\n 0.0697964684245204880949614189302176573987,\n 0.0522933351526832859403120512732112561121,\n 0.0522933351526832859403120512732112561121,\n 0.0337749015848141547933022468659129013491,\n 0.0337749015848141547933022468659129013491,\n 0.0146279952982722006849910980471854451902,\n 0.0146279952982722006849910980471854451902,\n ],\n [\n 0.1336545721861061753514571105458443385831,\n 0.132462039404696617371642464703316925805,\n 0.132462039404696617371642464703316925805,\n 0.1289057221880821499785953393997936532597,\n 0.1289057221880821499785953393997936532597,\n 0.1230490843067295304675784006720096548158,\n 0.1230490843067295304675784006720096548158,\n 0.1149966402224113649416435129339613014914,\n 0.1149966402224113649416435129339613014914,\n 0.1048920914645414100740861850147438548584,\n 0.1048920914645414100740861850147438548584,\n 0.0929157660600351474770186173697646486034,\n 0.0929157660600351474770186173697646486034,\n 0.0792814117767189549228925247420432269137,\n 0.0792814117767189549228925247420432269137,\n 0.0642324214085258521271696151589109980391,\n 0.0642324214085258521271696151589109980391,\n 0.0480376717310846685716410716320339965612,\n 0.0480376717310846685716410716320339965612,\n 0.0309880058569794443106942196418845053837,\n 0.0309880058569794443106942196418845053837,\n 0.0134118594871417720813094934586150649766,\n 0.0134118594871417720813094934586150649766,\n ],\n [\n 0.1279381953467521569740561652246953718517,\n 0.1279381953467521569740561652246953718517,\n 0.1258374563468282961213753825111836887264,\n 0.1258374563468282961213753825111836887264,\n 0.121670472927803391204463153476262425607,\n 0.121670472927803391204463153476262425607,\n 0.1155056680537256013533444839067835598622,\n 0.1155056680537256013533444839067835598622,\n 0.1074442701159656347825773424466062227946,\n 0.1074442701159656347825773424466062227946,\n 0.0976186521041138882698806644642471544279,\n 0.0976186521041138882698806644642471544279,\n 0.086190161531953275917185202983742667185,\n 0.086190161531953275917185202983742667185,\n 0.0733464814110803057340336152531165181193,\n 0.0733464814110803057340336152531165181193,\n 0.0592985849154367807463677585001085845412,\n 0.0592985849154367807463677585001085845412,\n 0.0442774388174198061686027482113382288593,\n 0.0442774388174198061686027482113382288593,\n 0.0285313886289336631813078159518782864491,\n 0.0285313886289336631813078159518782864491,\n 0.0123412297999871995468056670700372915759,\n 0.0123412297999871995468056670700372915759,\n ],\n];\nexport const binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\nexport const getCubicArcLength = (xs, ys, t) => {\n let sum;\n let correctedT;\n const n = 20;\n const z = t / 2;\n sum = 0;\n for (let i = 0; i < n; i++) {\n correctedT = z * tValues[n][i] + z;\n sum += cValues[n][i] * BFunc(xs, ys, correctedT);\n }\n return z * sum;\n};\nexport const getQuadraticArcLength = (xs, ys, t) => {\n if (t === undefined) {\n t = 1;\n }\n const ax = xs[0] - 2 * xs[1] + xs[2];\n const ay = ys[0] - 2 * ys[1] + ys[2];\n const bx = 2 * xs[1] - 2 * xs[0];\n const by = 2 * ys[1] - 2 * ys[0];\n const A = 4 * (ax * ax + ay * ay);\n const B = 4 * (ax * bx + ay * by);\n const C = bx * bx + by * by;\n if (A === 0) {\n return (t * Math.sqrt(Math.pow(xs[2] - xs[0], 2) + Math.pow(ys[2] - ys[0], 2)));\n }\n const b = B / (2 * A);\n const c = C / A;\n const u = t + b;\n const k = c - b * b;\n const uuk = u * u + k > 0 ? Math.sqrt(u * u + k) : 0;\n const bbk = b * b + k > 0 ? Math.sqrt(b * b + k) : 0;\n const term = b + Math.sqrt(b * b + k) !== 0\n ? k * Math.log(Math.abs((u + uuk) / (b + bbk)))\n : 0;\n return (Math.sqrt(A) / 2) * (u * uuk - b * bbk + term);\n};\nfunction BFunc(xs, ys, t) {\n const xbase = getDerivative(1, t, xs);\n const ybase = getDerivative(1, t, ys);\n const combined = xbase * xbase + ybase * ybase;\n return Math.sqrt(combined);\n}\nconst getDerivative = (derivative, t, vs) => {\n const n = vs.length - 1;\n let _vs;\n let value;\n if (n === 0) {\n return 0;\n }\n if (derivative === 0) {\n value = 0;\n for (let k = 0; k <= n; k++) {\n value +=\n binomialCoefficients[n][k] *\n Math.pow(1 - t, n - k) *\n Math.pow(t, k) *\n vs[k];\n }\n return value;\n }\n else {\n _vs = new Array(n);\n for (let k = 0; k < n; k++) {\n _vs[k] = n * (vs[k + 1] - vs[k]);\n }\n return getDerivative(derivative - 1, t, _vs);\n }\n};\nexport const t2length = (length, totalLength, func) => {\n let error = 1;\n let t = length / totalLength;\n let step = (length - func(t)) / totalLength;\n let numIterations = 0;\n while (error > 0.001) {\n const increasedTLength = func(t + step);\n const increasedTError = Math.abs(length - increasedTLength) / totalLength;\n if (increasedTError < error) {\n error = increasedTError;\n t += step;\n }\n else {\n const decreasedTLength = func(t - step);\n const decreasedTError = Math.abs(length - decreasedTLength) / totalLength;\n if (decreasedTError < error) {\n error = decreasedTError;\n t -= step;\n }\n else {\n step /= 2;\n }\n }\n numIterations++;\n if (numIterations > 500) {\n break;\n }\n }\n return t;\n};\n","import { Factory } from \"../Factory.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getCubicArcLength, getQuadraticArcLength, t2length, } from \"../BezierFunctions.js\";\nexport class Path extends Shape {\n constructor(config) {\n super(config);\n this.dataArray = [];\n this.pathLength = 0;\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n });\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.data());\n this.pathLength = Path.getPathLength(this.dataArray);\n }\n _sceneFunc(context) {\n const ca = this.dataArray;\n context.beginPath();\n let isClosed = false;\n for (let n = 0; n < ca.length; n++) {\n const c = ca[n].command;\n const p = ca[n].points;\n switch (c) {\n case 'L':\n context.lineTo(p[0], p[1]);\n break;\n case 'M':\n context.moveTo(p[0], p[1]);\n break;\n case 'C':\n context.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);\n break;\n case 'Q':\n context.quadraticCurveTo(p[0], p[1], p[2], p[3]);\n break;\n case 'A':\n const cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6], fs = p[7];\n const r = rx > ry ? rx : ry;\n const scaleX = rx > ry ? 1 : rx / ry;\n const scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(psi);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-psi);\n context.translate(-cx, -cy);\n break;\n case 'z':\n isClosed = true;\n context.closePath();\n break;\n }\n }\n if (!isClosed && !this.hasFill()) {\n context.strokeShape(this);\n }\n else {\n context.fillStrokeShape(this);\n }\n }\n getSelfRect() {\n let points = [];\n this.dataArray.forEach(function (data) {\n if (data.command === 'A') {\n const start = data.points[4];\n const dTheta = data.points[5];\n const end = data.points[4] + dTheta;\n let inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n if (dTheta < 0) {\n for (let t = start - inc; t > end; t -= inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n else {\n for (let t = start + inc; t < end; t += inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n }\n else if (data.command === 'C') {\n for (let t = 0.0; t <= 1; t += 0.01) {\n const point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\n points.push(point.x, point.y);\n }\n }\n else {\n points = points.concat(data.points);\n }\n });\n let minX = points[0];\n let maxX = points[0];\n let minY = points[1];\n let maxY = points[1];\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n if (!isNaN(x)) {\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n }\n if (!isNaN(y)) {\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getLength() {\n return this.pathLength;\n }\n getPointAtLength(length) {\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n static getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n static getPathLength(dataArray) {\n let pathLength = 0;\n for (let i = 0; i < dataArray.length; ++i) {\n pathLength += dataArray[i].pathLength;\n }\n return pathLength;\n }\n static getPointAtLengthOfDataArray(length, dataArray) {\n let points, i = 0, ii = dataArray.length;\n if (!ii) {\n return null;\n }\n while (i < ii && length > dataArray[i].pathLength) {\n length -= dataArray[i].pathLength;\n ++i;\n }\n if (i === ii) {\n points = dataArray[i - 1].points.slice(-2);\n return {\n x: points[0],\n y: points[1],\n };\n }\n if (length < 0.01) {\n const cmd = dataArray[i].command;\n if (cmd === 'M') {\n points = dataArray[i].points.slice(0, 2);\n return {\n x: points[0],\n y: points[1],\n };\n }\n else {\n return {\n x: dataArray[i].start.x,\n y: dataArray[i].start.y,\n };\n }\n }\n const cp = dataArray[i];\n const p = cp.points;\n switch (cp.command) {\n case 'L':\n return Path.getPointOnLine(length, cp.start.x, cp.start.y, p[0], p[1]);\n case 'C':\n return Path.getPointOnCubicBezier(t2length(length, Path.getPathLength(dataArray), (i) => {\n return getCubicArcLength([cp.start.x, p[0], p[2], p[4]], [cp.start.y, p[1], p[3], p[5]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3], p[4], p[5]);\n case 'Q':\n return Path.getPointOnQuadraticBezier(t2length(length, Path.getPathLength(dataArray), (i) => {\n return getQuadraticArcLength([cp.start.x, p[0], p[2]], [cp.start.y, p[1], p[3]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\n case 'A':\n const cx = p[0], cy = p[1], rx = p[2], ry = p[3], dTheta = p[5], psi = p[6];\n let theta = p[4];\n theta += (dTheta * length) / cp.pathLength;\n return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\n }\n return null;\n }\n static getPointOnLine(dist, P1x, P1y, P2x, P2y, fromX, fromY) {\n fromX = fromX !== null && fromX !== void 0 ? fromX : P1x;\n fromY = fromY !== null && fromY !== void 0 ? fromY : P1y;\n const len = this.getLineLength(P1x, P1y, P2x, P2y);\n if (len < 1e-10) {\n return { x: P1x, y: P1y };\n }\n if (P2x === P1x) {\n return { x: fromX, y: fromY + (P2y > P1y ? dist : -dist) };\n }\n const m = (P2y - P1y) / (P2x - P1x);\n const run = Math.sqrt((dist * dist) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n const rise = m * run;\n if (Math.abs(fromY - P1y - m * (fromX - P1x)) < 1e-10) {\n return { x: fromX + run, y: fromY + rise };\n }\n const u = ((fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y)) / (len * len);\n const ix = P1x + u * (P2x - P1x);\n const iy = P1y + u * (P2y - P1y);\n const pRise = this.getLineLength(fromX, fromY, ix, iy);\n const pRun = Math.sqrt(dist * dist - pRise * pRise);\n const adjustedRun = Math.sqrt((pRun * pRun) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n const adjustedRise = m * adjustedRun;\n return { x: ix + adjustedRun, y: iy + adjustedRise };\n }\n static getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n function CB1(t) {\n return t * t * t;\n }\n function CB2(t) {\n return 3 * t * t * (1 - t);\n }\n function CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n function CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\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 { x, y };\n }\n static getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n function QB1(t) {\n return t * t;\n }\n function QB2(t) {\n return 2 * t * (1 - t);\n }\n function QB3(t) {\n return (1 - t) * (1 - t);\n }\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 { x, y };\n }\n static getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n const cosPsi = Math.cos(psi), 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 static parsePathData(data) {\n if (!data) {\n return [];\n }\n let cs = data;\n const cc = [\n 'm',\n 'M',\n 'l',\n 'L',\n 'v',\n 'V',\n 'h',\n 'H',\n 'z',\n 'Z',\n 'c',\n 'C',\n 'q',\n 'Q',\n 't',\n 'T',\n 's',\n 'S',\n 'a',\n 'A',\n ];\n cs = cs.replace(new RegExp(' ', 'g'), ',');\n for (let n = 0; n < cc.length; n++) {\n cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n }\n const arr = cs.split('|');\n const ca = [];\n const coords = [];\n let cpx = 0;\n let cpy = 0;\n const re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n let match;\n for (let n = 1; n < arr.length; n++) {\n let str = arr[n];\n let c = str.charAt(0);\n str = str.slice(1);\n coords.length = 0;\n while ((match = re.exec(str))) {\n coords.push(match[0]);\n }\n let p = [];\n let arcParamIndex = c === 'A' || c === 'a' ? 0 : -1;\n for (let j = 0, jlen = coords.length; j < jlen; j++) {\n const token = coords[j];\n if (token === '00') {\n p.push(0, 0);\n if (arcParamIndex >= 0) {\n arcParamIndex += 2;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n }\n continue;\n }\n if (arcParamIndex >= 0) {\n if (arcParamIndex === 3) {\n if (/^[01]{2}\\d+(?:\\.\\d+)?$/.test(token)) {\n p.push(parseInt(token[0], 10));\n p.push(parseInt(token[1], 10));\n p.push(parseFloat(token.slice(2)));\n arcParamIndex += 3;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n if (token === '11' || token === '10' || token === '01') {\n p.push(parseInt(token[0], 10));\n p.push(parseInt(token[1], 10));\n arcParamIndex += 2;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n if (token === '0' || token === '1') {\n p.push(parseInt(token, 10));\n arcParamIndex += 1;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n }\n else if (arcParamIndex === 4) {\n if (/^[01]\\d+(?:\\.\\d+)?$/.test(token)) {\n p.push(parseInt(token[0], 10));\n p.push(parseFloat(token.slice(1)));\n arcParamIndex += 2;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n if (token === '0' || token === '1') {\n p.push(parseInt(token, 10));\n arcParamIndex += 1;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n }\n const parsedArc = parseFloat(token);\n if (!isNaN(parsedArc)) {\n p.push(parsedArc);\n }\n else {\n p.push(0);\n }\n arcParamIndex += 1;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n }\n else {\n const parsed = parseFloat(token);\n if (!isNaN(parsed)) {\n p.push(parsed);\n }\n else {\n p.push(0);\n }\n }\n }\n while (p.length > 0) {\n if (isNaN(p[0])) {\n break;\n }\n let cmd = '';\n let points = [];\n const startX = cpx, startY = cpy;\n let prevCmd, ctlPtx, ctlPty;\n let rx, ry, psi, fa, fs, x1, y1;\n switch (c) {\n case 'l':\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'L':\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'm':\n const dx = p.shift();\n const dy = p.shift();\n cpx += dx;\n cpy += dy;\n cmd = 'M';\n if (ca.length > 2 && ca[ca.length - 1].command === 'z') {\n for (let idx = ca.length - 2; idx >= 0; idx--) {\n if (ca[idx].command === 'M') {\n cpx = ca[idx].points[0] + dx;\n cpy = ca[idx].points[1] + dy;\n break;\n }\n }\n }\n points.push(cpx, cpy);\n c = 'l';\n break;\n case 'M':\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'M';\n points.push(cpx, cpy);\n c = 'L';\n break;\n case 'h':\n cpx += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'H':\n cpx = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'v':\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'V':\n cpy = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'C':\n points.push(p.shift(), p.shift(), p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'c':\n points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'Q':\n points.push(p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'q':\n points.push(cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(cpx, cpy);\n break;\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 'A':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n case 'a':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n }\n ca.push({\n command: cmd || c,\n points: points,\n start: {\n x: startX,\n y: startY,\n },\n pathLength: this.calcLength(startX, startY, cmd || c, points),\n });\n }\n if (c === 'z' || c === 'Z') {\n ca.push({\n command: 'z',\n points: [],\n start: undefined,\n pathLength: 0,\n });\n }\n }\n return ca;\n }\n static calcLength(x, y, cmd, points) {\n let len, p1, p2, t;\n const path = Path;\n switch (cmd) {\n case 'L':\n return path.getLineLength(x, y, points[0], points[1]);\n case 'C':\n return getCubicArcLength([x, points[0], points[2], points[4]], [y, points[1], points[3], points[5]], 1);\n case 'Q':\n return getQuadraticArcLength([x, points[0], points[2]], [y, points[1], points[3]], 1);\n case 'A':\n len = 0.0;\n const start = points[4];\n const dTheta = points[5];\n const end = points[4] + dTheta;\n let inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n p1 = path.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 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n else {\n for (t = start + inc; t < end; t += inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n return 0;\n }\n static convertEndpointToCenterParameterization(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {\n const psi = psiDeg * (Math.PI / 180.0);\n const xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n const yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n (Math.cos(psi) * (y1 - y2)) / 2.0;\n const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n let f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /\n (rx * rx * (yp * yp) + ry * ry * (xp * xp)));\n if (fa === fs) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n const cxp = (f * rx * yp) / ry;\n const cyp = (f * -ry * xp) / rx;\n const cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n const cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n const vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n };\n const vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n };\n const vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n };\n const theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n const u = [(xp - cxp) / rx, (yp - cyp) / ry];\n const v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n let dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return [cx, cy, rx, ry, theta, dTheta, psi, fs];\n }\n}\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\n_registerNode(Path);\nFactory.addGetterSetter(Path, 'data');\n","import { Factory } from \"../Factory.js\";\nimport { Line } from \"./Line.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Path } from \"./Path.js\";\nexport class Arrow extends Line {\n _sceneFunc(ctx) {\n super._sceneFunc(ctx);\n const PI2 = Math.PI * 2;\n const points = this.points();\n let tp = points;\n const fromTension = this.tension() !== 0 && points.length > 4;\n if (fromTension) {\n tp = this.getTensionPoints();\n }\n const length = this.pointerLength();\n const n = points.length;\n let dx, dy;\n if (fromTension) {\n const lp = [\n tp[tp.length - 4],\n tp[tp.length - 3],\n tp[tp.length - 2],\n tp[tp.length - 1],\n points[n - 2],\n points[n - 1],\n ];\n const lastLength = Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);\n const previous = Path.getPointOnQuadraticBezier(Math.min(1, 1 - length / lastLength), lp[0], lp[1], lp[2], lp[3], lp[4], lp[5]);\n dx = points[n - 2] - previous.x;\n dy = points[n - 1] - previous.y;\n }\n else {\n dx = points[n - 2] - points[n - 4];\n dy = points[n - 1] - points[n - 3];\n }\n const radians = (Math.atan2(dy, dx) + PI2) % PI2;\n const width = this.pointerWidth();\n if (this.pointerAtEnding()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[n - 2], points[n - 1]);\n ctx.rotate(radians);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n if (this.pointerAtBeginning()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[0], points[1]);\n if (fromTension) {\n dx = (tp[0] + tp[2]) / 2 - points[0];\n dy = (tp[1] + tp[3]) / 2 - points[1];\n }\n else {\n dx = points[2] - points[0];\n dy = points[3] - points[1];\n }\n ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n }\n __fillStroke(ctx) {\n const isDashEnabled = this.dashEnabled();\n if (isDashEnabled) {\n this.attrs.dashEnabled = false;\n ctx.setLineDash([]);\n }\n ctx.fillStrokeShape(this);\n if (isDashEnabled) {\n this.attrs.dashEnabled = true;\n }\n }\n getSelfRect() {\n const lineRect = super.getSelfRect();\n const offset = this.pointerWidth() / 2;\n return {\n x: lineRect.x,\n y: lineRect.y - offset,\n width: lineRect.width,\n height: lineRect.height + offset * 2,\n };\n }\n}\nArrow.prototype.className = 'Arrow';\n_registerNode(Arrow);\nFactory.addGetterSetter(Arrow, 'pointerLength', 10, getNumberValidator());\nFactory.addGetterSetter(Arrow, 'pointerWidth', 10, getNumberValidator());\nFactory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nFactory.addGetterSetter(Arrow, 'pointerAtEnding', true);\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Circle extends Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.attrs.radius || 0, 0, Math.PI * 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n if (this.radius() !== width / 2) {\n this.radius(width / 2);\n }\n }\n setHeight(height) {\n if (this.radius() !== height / 2) {\n this.radius(height / 2);\n }\n }\n}\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\n_registerNode(Circle);\nFactory.addGetterSetter(Circle, 'radius', 0, getNumberValidator());\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Ellipse extends Shape {\n _sceneFunc(context) {\n const rx = this.radiusX(), ry = this.radiusY();\n context.beginPath();\n context.save();\n if (rx !== ry) {\n context.scale(1, ry / rx);\n }\n context.arc(0, 0, rx, 0, Math.PI * 2, false);\n context.restore();\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radiusX() * 2;\n }\n getHeight() {\n return this.radiusY() * 2;\n }\n setWidth(width) {\n this.radiusX(width / 2);\n }\n setHeight(height) {\n this.radiusY(height / 2);\n }\n}\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\n_registerNode(Ellipse);\nFactory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory.addGetterSetter(Ellipse, 'radiusX', 0, getNumberValidator());\nFactory.addGetterSetter(Ellipse, 'radiusY', 0, getNumberValidator());\n","import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nexport class Image extends Shape {\n constructor(attrs) {\n super(attrs);\n this._loadListener = () => {\n this._requestDraw();\n };\n this.on('imageChange.konva', (props) => {\n this._removeImageLoad(props.oldVal);\n this._setImageLoad();\n });\n this._setImageLoad();\n }\n _setImageLoad() {\n const image = this.image();\n if (image && image.complete) {\n return;\n }\n if (image && image.readyState === 4) {\n return;\n }\n if (image && image['addEventListener']) {\n image['addEventListener']('load', this._loadListener);\n }\n }\n _removeImageLoad(image) {\n if (image && image['removeEventListener']) {\n image['removeEventListener']('load', this._loadListener);\n }\n }\n destroy() {\n this._removeImageLoad(this.image());\n super.destroy();\n return this;\n }\n _useBufferCanvas() {\n const hasCornerRadius = !!this.cornerRadius();\n const hasShadow = this.hasShadow();\n if (hasCornerRadius && hasShadow) {\n return true;\n }\n return super._useBufferCanvas(true);\n }\n _sceneFunc(context) {\n const width = this.getWidth();\n const height = this.getHeight();\n const cornerRadius = this.cornerRadius();\n const image = this.attrs.image;\n let params;\n if (image) {\n const cropWidth = this.attrs.cropWidth;\n const cropHeight = this.attrs.cropHeight;\n if (cropWidth && cropHeight) {\n params = [\n image,\n this.cropX(),\n this.cropY(),\n cropWidth,\n cropHeight,\n 0,\n 0,\n width,\n height,\n ];\n }\n else {\n params = [image, 0, 0, width, height];\n }\n }\n if (this.hasFill() || this.hasStroke() || cornerRadius) {\n context.beginPath();\n cornerRadius\n ? Util.drawRoundedRectPath(context, width, height, cornerRadius)\n : context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (cornerRadius) {\n context.clip();\n }\n context.drawImage.apply(context, params);\n }\n }\n _hitFunc(context) {\n const width = this.width(), height = this.height(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n var _a, _b;\n return (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width;\n }\n getHeight() {\n var _a, _b;\n return (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height;\n }\n static fromURL(url, callback, onError = null) {\n const img = Util.createImageElement();\n img.onload = function () {\n const image = new Image({\n image: img,\n });\n callback(image);\n };\n img.onerror = onError;\n img.crossOrigin = 'Anonymous';\n img.src = url;\n }\n}\nImage.prototype.className = 'Image';\n_registerNode(Image);\nFactory.addGetterSetter(Image, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\nFactory.addGetterSetter(Image, 'image');\nFactory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory.addGetterSetter(Image, 'cropX', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropY', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropWidth', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropHeight', 0, getNumberValidator());\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Group } from \"../Group.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst ATTR_CHANGE_LIST = [\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'padding',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'pointerDirection',\n 'pointerWidth',\n 'pointerHeight',\n], CHANGE_KONVA = 'Change.konva', NONE = 'none', UP = 'up', RIGHT = 'right', DOWN = 'down', LEFT = 'left', attrChangeListLen = ATTR_CHANGE_LIST.length;\nexport class Label extends Group {\n constructor(config) {\n super(config);\n this.on('add.konva', function (evt) {\n this._addListeners(evt.child);\n this._sync();\n });\n }\n getText() {\n return this.find('Text')[0];\n }\n getTag() {\n return this.find('Tag')[0];\n }\n _addListeners(text) {\n let that = this, n;\n const func = function () {\n that._sync();\n };\n for (n = 0; n < attrChangeListLen; n++) {\n text.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, func);\n }\n }\n getWidth() {\n return this.getText().width();\n }\n getHeight() {\n return this.getText().height();\n }\n _sync() {\n let text = this.getText(), tag = this.getTag(), width, height, pointerDirection, pointerWidth, x, y, pointerHeight;\n if (text && tag) {\n width = text.width();\n height = text.height();\n pointerDirection = tag.pointerDirection();\n pointerWidth = tag.pointerWidth();\n pointerHeight = tag.pointerHeight();\n x = 0;\n y = 0;\n switch (pointerDirection) {\n case UP:\n x = width / 2;\n y = -1 * pointerHeight;\n break;\n case RIGHT:\n x = width + pointerWidth;\n y = height / 2;\n break;\n case DOWN:\n x = width / 2;\n y = height + pointerHeight;\n break;\n case LEFT:\n x = -1 * pointerWidth;\n y = height / 2;\n break;\n }\n tag.setAttrs({\n x: -1 * x,\n y: -1 * y,\n width: width,\n height: height,\n });\n text.setAttrs({\n x: -1 * x,\n y: -1 * y,\n });\n }\n }\n}\nLabel.prototype.className = 'Label';\n_registerNode(Label);\nexport class Tag extends Shape {\n _sceneFunc(context) {\n const width = this.width(), height = this.height(), pointerDirection = this.pointerDirection(), pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), cornerRadius = this.cornerRadius();\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.beginPath();\n context.moveTo(topLeft, 0);\n if (pointerDirection === UP) {\n context.lineTo((width - pointerWidth) / 2, 0);\n context.lineTo(width / 2, -1 * pointerHeight);\n context.lineTo((width + pointerWidth) / 2, 0);\n }\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n if (pointerDirection === RIGHT) {\n context.lineTo(width, (height - pointerHeight) / 2);\n context.lineTo(width + pointerWidth, height / 2);\n context.lineTo(width, (height + pointerHeight) / 2);\n }\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n if (pointerDirection === DOWN) {\n context.lineTo((width + pointerWidth) / 2, height);\n context.lineTo(width / 2, height + pointerHeight);\n context.lineTo((width - pointerWidth) / 2, height);\n }\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n if (pointerDirection === LEFT) {\n context.lineTo(0, (height + pointerHeight) / 2);\n context.lineTo(-1 * pointerWidth, height / 2);\n context.lineTo(0, (height - pointerHeight) / 2);\n }\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getSelfRect() {\n let x = 0, y = 0, pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), direction = this.pointerDirection(), width = this.width(), height = this.height();\n if (direction === UP) {\n y -= pointerHeight;\n height += pointerHeight;\n }\n else if (direction === DOWN) {\n height += pointerHeight;\n }\n else if (direction === LEFT) {\n x -= pointerWidth * 1.5;\n width += pointerWidth;\n }\n else if (direction === RIGHT) {\n width += pointerWidth * 1.5;\n }\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n }\n}\nTag.prototype.className = 'Tag';\n_registerNode(Tag);\nFactory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory.addGetterSetter(Tag, 'pointerWidth', 0, getNumberValidator());\nFactory.addGetterSetter(Tag, 'pointerHeight', 0, getNumberValidator());\nFactory.addGetterSetter(Tag, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Util } from \"../Util.js\";\nimport { getNumberOrArrayOfNumbersValidator } from \"../Validators.js\";\nexport class Rect extends Shape {\n _sceneFunc(context) {\n const cornerRadius = this.cornerRadius(), width = this.width(), height = this.height();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n}\nRect.prototype.className = 'Rect';\n_registerNode(Rect);\nFactory.addGetterSetter(Rect, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Util } from \"../Util.js\";\nexport class RegularPolygon extends Shape {\n _sceneFunc(context) {\n const points = this._getPoints(), radius = this.radius(), sides = this.sides(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.moveTo(points[0].x, points[0].y);\n for (let n = 1; n < points.length; n++) {\n context.lineTo(points[n].x, points[n].y);\n }\n }\n else {\n Util.drawRoundedPolygonPath(context, points, sides, radius, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n _getPoints() {\n const sides = this.attrs.sides;\n const radius = this.attrs.radius || 0;\n const points = [];\n for (let n = 0; n < sides; n++) {\n points.push({\n x: radius * Math.sin((n * 2 * Math.PI) / sides),\n y: -1 * radius * Math.cos((n * 2 * Math.PI) / sides),\n });\n }\n return points;\n }\n getSelfRect() {\n const points = this._getPoints();\n let minX = points[0].x;\n let maxX = points[0].y;\n let minY = points[0].x;\n let maxY = points[0].y;\n points.forEach((point) => {\n minX = Math.min(minX, point.x);\n maxX = Math.max(maxX, point.x);\n minY = Math.min(minY, point.y);\n maxY = Math.max(maxY, point.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\n_registerNode(RegularPolygon);\nFactory.addGetterSetter(RegularPolygon, 'radius', 0, getNumberValidator());\nFactory.addGetterSetter(RegularPolygon, 'sides', 0, getNumberValidator());\nFactory.addGetterSetter(RegularPolygon, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst PIx2 = Math.PI * 2;\nexport class Ring extends Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.innerRadius(), 0, PIx2, false);\n context.moveTo(this.outerRadius(), 0);\n context.arc(0, 0, this.outerRadius(), PIx2, 0, true);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nRing.prototype.className = 'Ring';\nRing.prototype._centroid = true;\nRing.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n_registerNode(Ring);\nFactory.addGetterSetter(Ring, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Ring, 'outerRadius', 0, getNumberValidator());\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Animation } from \"../Animation.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Sprite extends Shape {\n constructor(config) {\n super(config);\n this._updated = true;\n this.anim = new Animation(() => {\n const updated = this._updated;\n this._updated = false;\n return updated;\n });\n this.on('animationChange.konva', function () {\n this.frameIndex(0);\n });\n this.on('frameIndexChange.konva', function () {\n this._updated = true;\n });\n this.on('frameRateChange.konva', function () {\n if (!this.anim.isRunning()) {\n return;\n }\n clearInterval(this.interval);\n this._setInterval();\n });\n }\n _sceneFunc(context) {\n const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), x = set[ix4 + 0], y = set[ix4 + 1], width = set[ix4 + 2], height = set[ix4 + 3], image = this.image();\n if (this.hasFill() || this.hasStroke()) {\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (offsets) {\n const offset = offsets[anim], ix2 = index * 2;\n context.drawImage(image, x, y, width, height, offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.drawImage(image, x, y, width, height, 0, 0, width, height);\n }\n }\n }\n _hitFunc(context) {\n const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), width = set[ix4 + 2], height = set[ix4 + 3];\n context.beginPath();\n if (offsets) {\n const offset = offsets[anim];\n const ix2 = index * 2;\n context.rect(offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.rect(0, 0, width, height);\n }\n context.closePath();\n context.fillShape(this);\n }\n _useBufferCanvas() {\n return super._useBufferCanvas(true);\n }\n _setInterval() {\n const that = this;\n this.interval = setInterval(function () {\n that._updateIndex();\n }, 1000 / this.frameRate());\n }\n start() {\n if (this.isRunning()) {\n return;\n }\n const layer = this.getLayer();\n this.anim.setLayers(layer);\n this._setInterval();\n this.anim.start();\n }\n stop() {\n this.anim.stop();\n clearInterval(this.interval);\n }\n isRunning() {\n return this.anim.isRunning();\n }\n _updateIndex() {\n const index = this.frameIndex(), animation = this.animation(), animations = this.animations(), anim = animations[animation], len = anim.length / 4;\n if (index < len - 1) {\n this.frameIndex(index + 1);\n }\n else {\n this.frameIndex(0);\n }\n }\n}\nSprite.prototype.className = 'Sprite';\n_registerNode(Sprite);\nFactory.addGetterSetter(Sprite, 'animation');\nFactory.addGetterSetter(Sprite, 'animations');\nFactory.addGetterSetter(Sprite, 'frameOffsets');\nFactory.addGetterSetter(Sprite, 'image');\nFactory.addGetterSetter(Sprite, 'frameIndex', 0, getNumberValidator());\nFactory.addGetterSetter(Sprite, 'frameRate', 17, getNumberValidator());\nFactory.backCompat(Sprite, {\n index: 'frameIndex',\n getIndex: 'getFrameIndex',\n setIndex: 'setFrameIndex',\n});\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Star extends Shape {\n _sceneFunc(context) {\n const innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n context.beginPath();\n context.moveTo(0, 0 - outerRadius);\n for (let n = 1; n < numPoints * 2; n++) {\n const radius = n % 2 === 0 ? outerRadius : innerRadius;\n const x = radius * Math.sin((n * Math.PI) / numPoints);\n const y = -1 * radius * Math.cos((n * Math.PI) / numPoints);\n context.lineTo(x, y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n_registerNode(Star);\nFactory.addGetterSetter(Star, 'numPoints', 5, getNumberValidator());\nFactory.addGetterSetter(Star, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Star, 'outerRadius', 0, getNumberValidator());\n","import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator, getStringValidator, getNumberOrAutoValidator, getBooleanValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport function stringToArray(string) {\n return [...string].reduce((acc, char, index, array) => {\n if (/\\p{Emoji}/u.test(char)) {\n const nextChar = array[index + 1];\n if (nextChar && /\\p{Emoji_Modifier}|\\u200D/u.test(nextChar)) {\n acc.push(char + nextChar);\n array[index + 1] = '';\n }\n else {\n acc.push(char);\n }\n }\n else if (/\\p{Regional_Indicator}{2}/u.test(char + (array[index + 1] || ''))) {\n acc.push(char + array[index + 1]);\n }\n else if (index > 0 && /\\p{Mn}|\\p{Me}|\\p{Mc}/u.test(char)) {\n acc[acc.length - 1] += char;\n }\n else if (char) {\n acc.push(char);\n }\n return acc;\n }, []);\n}\nconst AUTO = 'auto', CENTER = 'center', INHERIT = 'inherit', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', RTL = 'rtl', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST = [\n 'direction',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontVariant',\n 'padding',\n 'align',\n 'verticalAlign',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'wrap',\n 'ellipsis',\n 'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nfunction normalizeFontFamily(fontFamily) {\n return fontFamily\n .split(',')\n .map((family) => {\n family = family.trim();\n const hasSpace = family.indexOf(' ') >= 0;\n const hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n if (hasSpace && !hasQuotes) {\n family = `\"${family}\"`;\n }\n return family;\n })\n .join(', ');\n}\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util.createCanvasElement().getContext(CONTEXT_2D);\n return dummyContext;\n}\nfunction _fillFunc(context) {\n context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n context.setAttr('miterLimit', 2);\n context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n config = config || {};\n if (!config.fillLinearGradientColorStops &&\n !config.fillRadialGradientColorStops &&\n !config.fillPatternImage) {\n config.fill = config.fill || 'black';\n }\n return config;\n}\nexport class Text extends Shape {\n constructor(config) {\n super(checkDefaultFill(config));\n this._partialTextX = 0;\n this._partialTextY = 0;\n for (let n = 0; n < attrChangeListLen; n++) {\n this.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, this._setTextData);\n }\n this._setTextData();\n }\n _sceneFunc(context) {\n var _a, _b;\n const textArr = this.textArr, textArrLen = textArr.length;\n if (!this.text()) {\n return;\n }\n let padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, verticalAlign = this.verticalAlign(), direction = this.direction(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), charRenderFunc = this.charRenderFunc(), fill = this.fill(), textDecoration = this.textDecoration(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n direction = direction === INHERIT ? context.direction : direction;\n let translateY = lineHeightPx / 2;\n let baseline = MIDDLE;\n if (!Konva.legacyTextRendering) {\n const metrics = this.measureSize('M');\n baseline = 'alphabetic';\n const ascent = (_a = metrics.fontBoundingBoxAscent) !== null && _a !== void 0 ? _a : metrics.actualBoundingBoxAscent;\n const descent = (_b = metrics.fontBoundingBoxDescent) !== null && _b !== void 0 ? _b : metrics.actualBoundingBoxDescent;\n translateY = (ascent - descent) / 2 + lineHeightPx / 2;\n }\n if (direction === RTL) {\n context.setAttr('direction', direction);\n }\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', baseline);\n context.setAttr('textAlign', LEFT);\n if (verticalAlign === MIDDLE) {\n alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n }\n else if (verticalAlign === BOTTOM) {\n alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n }\n context.translate(padding, alignY + padding);\n for (n = 0; n < textArrLen; n++) {\n let lineTranslateX = 0;\n let lineTranslateY = 0;\n const obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph;\n context.save();\n if (align === RIGHT) {\n lineTranslateX += totalWidth - width - padding * 2;\n }\n else if (align === CENTER) {\n lineTranslateX += (totalWidth - width - padding * 2) / 2;\n }\n if (shouldUnderline) {\n context.save();\n context.beginPath();\n const yOffset = !Konva.legacyTextRendering\n ? Math.round(fontSize / 4)\n : Math.round(fontSize / 2);\n const x = lineTranslateX;\n const y = translateY + lineTranslateY + yOffset;\n context.moveTo(x, y);\n const lineWidth = align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(x + Math.round(lineWidth), y);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (direction !== RTL &&\n (letterSpacing !== 0 || align === JUSTIFY || charRenderFunc)) {\n const spacesNumber = text.split(' ').length - 1;\n const array = stringToArray(text);\n for (let li = 0; li < array.length; li++) {\n const letter = array[li];\n if (letter === ' ' && !lastLine && align === JUSTIFY) {\n lineTranslateX += (totalWidth - padding * 2 - width) / spacesNumber;\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = letter;\n if (charRenderFunc) {\n context.save();\n const previousLines = textArr.slice(0, n);\n const previousGraphemes = previousLines.reduce((acc, line) => acc + stringToArray(line.text).length, 0);\n const charIndex = li + previousGraphemes;\n charRenderFunc({\n char: letter,\n index: charIndex,\n x: lineTranslateX,\n y: translateY + lineTranslateY,\n lineIndex: n,\n column: li,\n isLastInLine: lastLine,\n width: this.measureSize(letter).width,\n context,\n });\n }\n context.fillStrokeShape(this);\n if (charRenderFunc) {\n context.restore();\n }\n lineTranslateX += this.measureSize(letter).width + letterSpacing;\n }\n }\n else {\n if (letterSpacing !== 0) {\n context.setAttr('letterSpacing', `${letterSpacing}px`);\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = text;\n context.fillStrokeShape(this);\n }\n if (shouldLineThrough) {\n context.save();\n context.beginPath();\n const yOffset = !Konva.legacyTextRendering\n ? -Math.round(fontSize / 4)\n : 0;\n const x = align === JUSTIFY ? 0 : lineTranslateX;\n context.moveTo(x, translateY + lineTranslateY + yOffset);\n const lineWidth = align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(x + Math.round(lineWidth), translateY + lineTranslateY + yOffset);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n context.restore();\n if (textArrLen > 1) {\n translateY += lineHeightPx;\n }\n }\n }\n _hitFunc(context) {\n const width = this.getWidth(), height = this.getHeight();\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n setText(text) {\n const str = Util._isString(text)\n ? text\n : text === null || text === undefined\n ? ''\n : text + '';\n this._setAttr(TEXT, str);\n return this;\n }\n getWidth() {\n const isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n }\n getHeight() {\n const isAuto = this.attrs.height === AUTO || this.attrs.height === undefined;\n return isAuto\n ? this.fontSize() * this.textArr.length * this.lineHeight() +\n this.padding() * 2\n : this.attrs.height;\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n measureSize(text) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n let _context = getDummyContext(), fontSize = this.fontSize(), metrics;\n _context.save();\n _context.font = this._getContextFont();\n metrics = _context.measureText(text);\n _context.restore();\n const scaleFactor = fontSize / 100;\n return {\n actualBoundingBoxAscent: (_a = metrics.actualBoundingBoxAscent) !== null && _a !== void 0 ? _a : 71.58203125 * scaleFactor,\n actualBoundingBoxDescent: (_b = metrics.actualBoundingBoxDescent) !== null && _b !== void 0 ? _b : 0,\n actualBoundingBoxLeft: (_c = metrics.actualBoundingBoxLeft) !== null && _c !== void 0 ? _c : -7.421875 * scaleFactor,\n actualBoundingBoxRight: (_d = metrics.actualBoundingBoxRight) !== null && _d !== void 0 ? _d : 75.732421875 * scaleFactor,\n alphabeticBaseline: (_e = metrics.alphabeticBaseline) !== null && _e !== void 0 ? _e : 0,\n emHeightAscent: (_f = metrics.emHeightAscent) !== null && _f !== void 0 ? _f : 100 * scaleFactor,\n emHeightDescent: (_g = metrics.emHeightDescent) !== null && _g !== void 0 ? _g : -20 * scaleFactor,\n fontBoundingBoxAscent: (_h = metrics.fontBoundingBoxAscent) !== null && _h !== void 0 ? _h : 91 * scaleFactor,\n fontBoundingBoxDescent: (_j = metrics.fontBoundingBoxDescent) !== null && _j !== void 0 ? _j : 21 * scaleFactor,\n hangingBaseline: (_k = metrics.hangingBaseline) !== null && _k !== void 0 ? _k : 72.80000305175781 * scaleFactor,\n ideographicBaseline: (_l = metrics.ideographicBaseline) !== null && _l !== void 0 ? _l : -21 * scaleFactor,\n width: metrics.width,\n height: fontSize,\n };\n }\n _getContextFont() {\n return (this.fontStyle() +\n SPACE +\n this.fontVariant() +\n SPACE +\n (this.fontSize() + PX_SPACE) +\n normalizeFontFamily(this.fontFamily()));\n }\n _addTextLine(line) {\n const align = this.align();\n if (align === JUSTIFY) {\n line = line.trim();\n }\n const width = this._getTextWidth(line);\n return this.textArr.push({\n text: line,\n width: width,\n lastInParagraph: false,\n });\n }\n _getTextWidth(text) {\n const letterSpacing = this.letterSpacing();\n const length = text.length;\n return getDummyContext().measureText(text).width + letterSpacing * length;\n }\n _setTextData() {\n let lines = this.text().split('\\n'), fontSize = +this.fontSize(), textWidth = 0, lineHeightPx = this.lineHeight() * fontSize, width = this.attrs.width, height = this.attrs.height, fixedWidth = width !== AUTO && width !== undefined, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxWidth = width - padding * 2, maxHeightPx = height - padding * 2, currentHeightPx = 0, wrap = this.wrap(), shouldWrap = wrap !== NONE, wrapAtWord = wrap !== CHAR && shouldWrap, shouldAddEllipsis = this.ellipsis();\n this.textArr = [];\n getDummyContext().font = this._getContextFont();\n const additionalWidth = shouldAddEllipsis\n ? this._getTextWidth(ELLIPSIS)\n : 0;\n for (let i = 0, max = lines.length; i < max; ++i) {\n let line = lines[i];\n let lineWidth = this._getTextWidth(line);\n if (fixedWidth && lineWidth > maxWidth) {\n while (line.length > 0) {\n let low = 0, high = stringToArray(line).length, match = '', matchWidth = 0;\n while (low < high) {\n const mid = (low + high) >>> 1, lineArray = stringToArray(line), substr = lineArray.slice(0, mid + 1).join(''), substrWidth = this._getTextWidth(substr);\n const shouldConsiderEllipsis = shouldAddEllipsis &&\n fixedHeight &&\n currentHeightPx + lineHeightPx > maxHeightPx;\n const effectiveWidth = shouldConsiderEllipsis\n ? substrWidth + additionalWidth\n : substrWidth;\n if (effectiveWidth <= maxWidth) {\n low = mid + 1;\n match = substr;\n matchWidth = substrWidth;\n }\n else {\n high = mid;\n }\n }\n if (match) {\n if (wrapAtWord) {\n const lineArray = stringToArray(line);\n const matchArray = stringToArray(match);\n const nextChar = lineArray[matchArray.length];\n const nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n let wrapIndex;\n if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n wrapIndex = matchArray.length;\n }\n else {\n const lastSpaceIndex = matchArray.lastIndexOf(SPACE);\n const lastDashIndex = matchArray.lastIndexOf(DASH);\n wrapIndex = Math.max(lastSpaceIndex, lastDashIndex) + 1;\n }\n if (wrapIndex > 0) {\n low = wrapIndex;\n match = lineArray.slice(0, low).join('');\n matchWidth = this._getTextWidth(match);\n }\n }\n match = match.trimRight();\n this._addTextLine(match);\n textWidth = Math.max(textWidth, matchWidth);\n currentHeightPx += lineHeightPx;\n const shouldHandleEllipsis = this._shouldHandleEllipsis(currentHeightPx);\n if (shouldHandleEllipsis) {\n this._tryToAddEllipsisToLastLine();\n break;\n }\n const lineArray = stringToArray(line);\n line = lineArray.slice(low).join('').trimLeft();\n if (line.length > 0) {\n lineWidth = this._getTextWidth(line);\n if (lineWidth <= maxWidth) {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n break;\n }\n }\n }\n else {\n break;\n }\n }\n }\n else {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n if (this._shouldHandleEllipsis(currentHeightPx) && i < max - 1) {\n this._tryToAddEllipsisToLastLine();\n }\n }\n if (this.textArr[this.textArr.length - 1]) {\n this.textArr[this.textArr.length - 1].lastInParagraph = true;\n }\n if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\n break;\n }\n }\n this.textHeight = fontSize;\n this.textWidth = textWidth;\n }\n _shouldHandleEllipsis(currentHeightPx) {\n const fontSize = +this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, height = this.attrs.height, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxHeightPx = height - padding * 2, wrap = this.wrap(), shouldWrap = wrap !== NONE;\n return (!shouldWrap ||\n (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx));\n }\n _tryToAddEllipsisToLastLine() {\n const width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n const lastLine = this.textArr[this.textArr.length - 1];\n if (!lastLine || !shouldAddEllipsis) {\n return;\n }\n if (fixedWidth) {\n const haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n if (!haveSpace) {\n lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n }\n }\n this.textArr.splice(this.textArr.length - 1, 1);\n this._addTextLine(lastLine.text + ELLIPSIS);\n }\n getStrokeScaleEnabled() {\n return true;\n }\n _useBufferCanvas() {\n const hasLine = this.textDecoration().indexOf('underline') !== -1 ||\n this.textDecoration().indexOf('line-through') !== -1;\n const hasShadow = this.hasShadow();\n if (hasLine && hasShadow) {\n return true;\n }\n return super._useBufferCanvas();\n }\n}\nText.prototype._fillFunc = _fillFunc;\nText.prototype._strokeFunc = _strokeFunc;\nText.prototype.className = TEXT_UPPER;\nText.prototype._attrsAffectingSize = [\n 'text',\n 'fontSize',\n 'padding',\n 'wrap',\n 'lineHeight',\n 'letterSpacing',\n];\n_registerNode(Text);\nFactory.overWriteSetter(Text, 'width', getNumberOrAutoValidator());\nFactory.overWriteSetter(Text, 'height', getNumberOrAutoValidator());\nFactory.addGetterSetter(Text, 'direction', INHERIT);\nFactory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory.addGetterSetter(Text, 'fontSize', 12, getNumberValidator());\nFactory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory.addGetterSetter(Text, 'padding', 0, getNumberValidator());\nFactory.addGetterSetter(Text, 'align', LEFT);\nFactory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory.addGetterSetter(Text, 'lineHeight', 1, getNumberValidator());\nFactory.addGetterSetter(Text, 'wrap', WORD);\nFactory.addGetterSetter(Text, 'ellipsis', false, getBooleanValidator());\nFactory.addGetterSetter(Text, 'letterSpacing', 0, getNumberValidator());\nFactory.addGetterSetter(Text, 'text', '', getStringValidator());\nFactory.addGetterSetter(Text, 'textDecoration', '');\nFactory.addGetterSetter(Text, 'charRenderFunc', undefined);\n","import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Path } from \"./Path.js\";\nimport { Text, stringToArray } from \"./Text.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst EMPTY_STRING = '', NORMAL = 'normal';\nfunction _fillFunc(context) {\n context.fillText(this.partialText, 0, 0);\n}\nfunction _strokeFunc(context) {\n context.strokeText(this.partialText, 0, 0);\n}\nexport class TextPath extends Shape {\n constructor(config) {\n super(config);\n this.dummyCanvas = Util.createCanvasElement();\n this.dataArray = [];\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n this._setTextData();\n });\n this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva', this._setTextData);\n this._setTextData();\n }\n _getTextPathLength() {\n return Path.getPathLength(this.dataArray);\n }\n _getPointAtLength(length) {\n if (!this.attrs.data) {\n return null;\n }\n const totalLength = this.pathLength;\n if (length > totalLength) {\n return null;\n }\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.attrs.data);\n this.pathLength = this._getTextPathLength();\n }\n _sceneFunc(context) {\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', this.textBaseline());\n context.setAttr('textAlign', 'left');\n context.save();\n const textDecoration = this.textDecoration();\n const fill = this.fill();\n const fontSize = this.fontSize();\n const glyphInfo = this.glyphInfo;\n if (textDecoration === 'underline') {\n context.beginPath();\n }\n for (let i = 0; i < glyphInfo.length; i++) {\n context.save();\n const p0 = glyphInfo[i].p0;\n context.translate(p0.x, p0.y);\n context.rotate(glyphInfo[i].rotation);\n this.partialText = glyphInfo[i].text;\n context.fillStrokeShape(this);\n if (textDecoration === 'underline') {\n if (i === 0) {\n context.moveTo(0, fontSize / 2 + 1);\n }\n context.lineTo(fontSize, fontSize / 2 + 1);\n }\n context.restore();\n }\n if (textDecoration === 'underline') {\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n context.restore();\n }\n _hitFunc(context) {\n context.beginPath();\n const glyphInfo = this.glyphInfo;\n if (glyphInfo.length >= 1) {\n const p0 = glyphInfo[0].p0;\n context.moveTo(p0.x, p0.y);\n }\n for (let i = 0; i < glyphInfo.length; i++) {\n const p1 = glyphInfo[i].p1;\n context.lineTo(p1.x, p1.y);\n }\n context.setAttr('lineWidth', this.fontSize());\n context.setAttr('strokeStyle', this.colorKey);\n context.stroke();\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n setText(text) {\n return Text.prototype.setText.call(this, text);\n }\n _getContextFont() {\n return Text.prototype._getContextFont.call(this);\n }\n _getTextSize(text) {\n const dummyCanvas = this.dummyCanvas;\n const _context = dummyCanvas.getContext('2d');\n _context.save();\n _context.font = this._getContextFont();\n const metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: parseInt(`${this.fontSize()}`, 10),\n };\n }\n _setTextData() {\n const charArr = stringToArray(this.text());\n const chars = [];\n let width = 0;\n for (let i = 0; i < charArr.length; i++) {\n chars.push({\n char: charArr[i],\n width: this._getTextSize(charArr[i]).width,\n });\n width += chars[i].width;\n }\n const { height } = this._getTextSize(this.attrs.text);\n this.textWidth = width;\n this.textHeight = height;\n this.glyphInfo = [];\n if (!this.attrs.data) {\n return null;\n }\n const letterSpacing = this.letterSpacing();\n const align = this.align();\n const kerningFunc = this.kerningFunc();\n const textWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n let offset = 0;\n if (align === 'center') {\n offset = Math.max(0, this.pathLength / 2 - textWidth / 2);\n }\n if (align === 'right') {\n offset = Math.max(0, this.pathLength - textWidth);\n }\n let offsetToGlyph = offset;\n for (let i = 0; i < chars.length; i++) {\n const charStartPoint = this._getPointAtLength(offsetToGlyph);\n if (!charStartPoint)\n return;\n const char = chars[i].char;\n let glyphWidth = chars[i].width + letterSpacing;\n if (char === ' ' && align === 'justify') {\n const numberOfSpaces = this.text().split(' ').length - 1;\n glyphWidth += (this.pathLength - textWidth) / numberOfSpaces;\n }\n const charEndPoint = this._getPointAtLength(offsetToGlyph + glyphWidth);\n if (!charEndPoint) {\n return;\n }\n const width = Path.getLineLength(charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n let kern = 0;\n if (kerningFunc) {\n try {\n kern = kerningFunc(chars[i - 1].char, char) * this.fontSize();\n }\n catch (e) {\n kern = 0;\n }\n }\n charStartPoint.x += kern;\n charEndPoint.x += kern;\n this.textWidth += kern;\n const midpoint = Path.getPointOnLine(kern + width / 2.0, charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n const rotation = Math.atan2(charEndPoint.y - charStartPoint.y, charEndPoint.x - charStartPoint.x);\n this.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: charArr[i],\n rotation: rotation,\n p0: charStartPoint,\n p1: charEndPoint,\n });\n offsetToGlyph += glyphWidth;\n }\n }\n getSelfRect() {\n if (!this.glyphInfo.length) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n const points = [];\n this.glyphInfo.forEach(function (info) {\n points.push(info.p0.x);\n points.push(info.p0.y);\n points.push(info.p1.x);\n points.push(info.p1.y);\n });\n let minX = points[0] || 0;\n let maxX = points[0] || 0;\n let minY = points[1] || 0;\n let maxY = points[1] || 0;\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n const fontSize = this.fontSize();\n return {\n x: minX - fontSize / 2,\n y: minY - fontSize / 2,\n width: maxX - minX + fontSize,\n height: maxY - minY + fontSize,\n };\n }\n destroy() {\n Util.releaseCanvas(this.dummyCanvas);\n return super.destroy();\n }\n}\nTextPath.prototype._fillFunc = _fillFunc;\nTextPath.prototype._strokeFunc = _strokeFunc;\nTextPath.prototype._fillFuncHit = _fillFunc;\nTextPath.prototype._strokeFuncHit = _strokeFunc;\nTextPath.prototype.className = 'TextPath';\nTextPath.prototype._attrsAffectingSize = ['text', 'fontSize', 'data'];\n_registerNode(TextPath);\nFactory.addGetterSetter(TextPath, 'data');\nFactory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory.addGetterSetter(TextPath, 'fontSize', 12, getNumberValidator());\nFactory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory.addGetterSetter(TextPath, 'align', 'left');\nFactory.addGetterSetter(TextPath, 'letterSpacing', 0, getNumberValidator());\nFactory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory.addGetterSetter(TextPath, 'textDecoration', '');\nFactory.addGetterSetter(TextPath, 'kerningFunc', undefined);\n","import { Util, Transform } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Rect } from \"./Rect.js\";\nimport { Group } from \"../Group.js\";\nimport { Konva } from \"../Global.js\";\nimport { getBooleanValidator, getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst EVENTS_NAME = 'tr-konva';\nconst ATTR_CHANGE_LIST = [\n 'resizeEnabledChange',\n 'rotateAnchorOffsetChange',\n 'rotateEnabledChange',\n 'enabledAnchorsChange',\n 'anchorSizeChange',\n 'borderEnabledChange',\n 'borderStrokeChange',\n 'borderStrokeWidthChange',\n 'borderDashChange',\n 'anchorStrokeChange',\n 'anchorStrokeWidthChange',\n 'anchorFillChange',\n 'anchorCornerRadiusChange',\n 'ignoreStrokeChange',\n 'anchorStyleFuncChange',\n]\n .map((e) => e + `.${EVENTS_NAME}`)\n .join(' ');\nconst NODES_RECT = 'nodesRect';\nconst TRANSFORM_CHANGE_STR = [\n 'widthChange',\n 'heightChange',\n 'scaleXChange',\n 'scaleYChange',\n 'skewXChange',\n 'skewYChange',\n 'rotationChange',\n 'offsetXChange',\n 'offsetYChange',\n 'transformsEnabledChange',\n 'strokeWidthChange',\n 'draggableChange',\n];\nconst ANGLES = {\n 'top-left': -45,\n 'top-center': 0,\n 'top-right': 45,\n 'middle-right': -90,\n 'middle-left': 90,\n 'bottom-left': -135,\n 'bottom-center': 180,\n 'bottom-right': 135,\n};\nconst TOUCH_DEVICE = 'ontouchstart' in Konva._global;\nfunction getCursor(anchorName, rad, rotateCursor) {\n if (anchorName === 'rotater') {\n return rotateCursor;\n }\n rad += Util.degToRad(ANGLES[anchorName] || 0);\n const angle = ((Util.radToDeg(rad) % 360) + 360) % 360;\n if (Util._inRange(angle, 315 + 22.5, 360) || Util._inRange(angle, 0, 22.5)) {\n return 'ns-resize';\n }\n else if (Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n return 'nwse-resize';\n }\n else if (Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n return 'ns-resize';\n }\n else if (Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n return 'nwse-resize';\n }\n else {\n Util.error('Transformer has unknown angle for cursor detection: ' + angle);\n return 'pointer';\n }\n}\nconst ANCHORS_NAMES = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-right',\n 'middle-left',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\nconst MAX_SAFE_INTEGER = 100000000;\nfunction getCenter(shape) {\n return {\n x: shape.x +\n (shape.width / 2) * Math.cos(shape.rotation) +\n (shape.height / 2) * Math.sin(-shape.rotation),\n y: shape.y +\n (shape.height / 2) * Math.cos(shape.rotation) +\n (shape.width / 2) * Math.sin(shape.rotation),\n };\n}\nfunction rotateAroundPoint(shape, angleRad, point) {\n const x = point.x +\n (shape.x - point.x) * Math.cos(angleRad) -\n (shape.y - point.y) * Math.sin(angleRad);\n const y = point.y +\n (shape.x - point.x) * Math.sin(angleRad) +\n (shape.y - point.y) * Math.cos(angleRad);\n return {\n ...shape,\n rotation: shape.rotation + angleRad,\n x,\n y,\n };\n}\nfunction rotateAroundCenter(shape, deltaRad) {\n const center = getCenter(shape);\n return rotateAroundPoint(shape, deltaRad, center);\n}\nfunction getSnap(snaps, newRotationRad, tol) {\n let snapped = newRotationRad;\n for (let i = 0; i < snaps.length; i++) {\n const angle = Konva.getAngle(snaps[i]);\n const absDiff = Math.abs(angle - newRotationRad) % (Math.PI * 2);\n const dif = Math.min(absDiff, Math.PI * 2 - absDiff);\n if (dif < tol) {\n snapped = angle;\n }\n }\n return snapped;\n}\nlet activeTransformersCount = 0;\nexport class Transformer extends Group {\n constructor(config) {\n super(config);\n this._movingAnchorName = null;\n this._transforming = false;\n this._createElements();\n this._handleMouseMove = this._handleMouseMove.bind(this);\n this._handleMouseUp = this._handleMouseUp.bind(this);\n this.update = this.update.bind(this);\n this.on(ATTR_CHANGE_LIST, this.update);\n if (this.getNode()) {\n this.update();\n }\n }\n attachTo(node) {\n this.setNode(node);\n return this;\n }\n setNode(node) {\n Util.warn('tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead.');\n return this.setNodes([node]);\n }\n getNode() {\n return this._nodes && this._nodes[0];\n }\n _getEventNamespace() {\n return EVENTS_NAME + this._id;\n }\n setNodes(nodes = []) {\n if (this._nodes && this._nodes.length) {\n this.detach();\n }\n const filteredNodes = nodes.filter((node) => {\n if (node.isAncestorOf(this)) {\n Util.error('Konva.Transformer cannot be an a child of the node you are trying to attach');\n return false;\n }\n return true;\n });\n this._nodes = nodes = filteredNodes;\n if (nodes.length === 1 && this.useSingleNodeRotation()) {\n this.rotation(nodes[0].getAbsoluteRotation());\n }\n else {\n this.rotation(0);\n }\n this._nodes.forEach((node) => {\n const onChange = () => {\n if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n this.rotation(this.nodes()[0].getAbsoluteRotation());\n }\n this._resetTransformCache();\n if (!this._transforming && !this.isDragging()) {\n this.update();\n }\n };\n if (node._attrsAffectingSize.length) {\n const additionalEvents = node._attrsAffectingSize\n .map((prop) => prop + 'Change.' + this._getEventNamespace())\n .join(' ');\n node.on(additionalEvents, onChange);\n }\n node.on(TRANSFORM_CHANGE_STR.map((e) => e + `.${this._getEventNamespace()}`).join(' '), onChange);\n node.on(`absoluteTransformChange.${this._getEventNamespace()}`, onChange);\n this._proxyDrag(node);\n });\n this._resetTransformCache();\n const elementsCreated = !!this.findOne('.top-left');\n if (elementsCreated) {\n this.update();\n }\n return this;\n }\n _proxyDrag(node) {\n let lastPos;\n node.on(`dragstart.${this._getEventNamespace()}`, (e) => {\n lastPos = node.getAbsolutePosition();\n if (!this.isDragging() && node !== this.findOne('.back')) {\n this.startDrag(e, false);\n }\n });\n node.on(`dragmove.${this._getEventNamespace()}`, (e) => {\n if (!lastPos) {\n return;\n }\n const abs = node.getAbsolutePosition();\n const dx = abs.x - lastPos.x;\n const dy = abs.y - lastPos.y;\n this.nodes().forEach((otherNode) => {\n if (otherNode === node) {\n return;\n }\n if (otherNode.isDragging()) {\n return;\n }\n const otherAbs = otherNode.getAbsolutePosition();\n otherNode.setAbsolutePosition({\n x: otherAbs.x + dx,\n y: otherAbs.y + dy,\n });\n otherNode.startDrag(e);\n });\n lastPos = null;\n });\n }\n getNodes() {\n return this._nodes || [];\n }\n getActiveAnchor() {\n return this._movingAnchorName;\n }\n detach() {\n if (this._nodes) {\n this._nodes.forEach((node) => {\n node.off('.' + this._getEventNamespace());\n });\n }\n this._nodes = [];\n this._resetTransformCache();\n }\n _resetTransformCache() {\n this._clearCache(NODES_RECT);\n this._clearCache('transform');\n this._clearSelfAndDescendantCache('absoluteTransform');\n }\n _getNodeRect() {\n return this._getCache(NODES_RECT, this.__getNodeRect);\n }\n __getNodeShape(node, rot = this.rotation(), relative) {\n const rect = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n const absScale = node.getAbsoluteScale(relative);\n const absPos = node.getAbsolutePosition(relative);\n const dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n const dy = rect.y * absScale.y - node.offsetY() * absScale.y;\n const rotation = (Konva.getAngle(node.getAbsoluteRotation()) + Math.PI * 2) %\n (Math.PI * 2);\n const box = {\n x: absPos.x + dx * Math.cos(rotation) + dy * Math.sin(-rotation),\n y: absPos.y + dy * Math.cos(rotation) + dx * Math.sin(rotation),\n width: rect.width * absScale.x,\n height: rect.height * absScale.y,\n rotation: rotation,\n };\n return rotateAroundPoint(box, -Konva.getAngle(rot), {\n x: 0,\n y: 0,\n });\n }\n __getNodeRect() {\n const node = this.getNode();\n if (!node) {\n return {\n x: -MAX_SAFE_INTEGER,\n y: -MAX_SAFE_INTEGER,\n width: 0,\n height: 0,\n rotation: 0,\n };\n }\n const totalPoints = [];\n this.nodes().map((node) => {\n const box = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n const points = [\n { x: box.x, y: box.y },\n { x: box.x + box.width, y: box.y },\n { x: box.x + box.width, y: box.y + box.height },\n { x: box.x, y: box.y + box.height },\n ];\n const trans = node.getAbsoluteTransform();\n points.forEach(function (point) {\n const transformed = trans.point(point);\n totalPoints.push(transformed);\n });\n });\n const tr = new Transform();\n tr.rotate(-Konva.getAngle(this.rotation()));\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n totalPoints.forEach(function (point) {\n const transformed = tr.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n tr.invert();\n const p = tr.point({ x: minX, y: minY });\n return {\n x: p.x,\n y: p.y,\n width: maxX - minX,\n height: maxY - minY,\n rotation: Konva.getAngle(this.rotation()),\n };\n }\n getX() {\n return this._getNodeRect().x;\n }\n getY() {\n return this._getNodeRect().y;\n }\n getWidth() {\n return this._getNodeRect().width;\n }\n getHeight() {\n return this._getNodeRect().height;\n }\n _createElements() {\n this._createBack();\n ANCHORS_NAMES.forEach((name) => {\n this._createAnchor(name);\n });\n this._createAnchor('rotater');\n }\n _createAnchor(name) {\n const anchor = new Rect({\n stroke: 'rgb(0, 161, 255)',\n fill: 'white',\n strokeWidth: 1,\n name: name + ' _anchor',\n dragDistance: 0,\n draggable: true,\n hitStrokeWidth: TOUCH_DEVICE ? 10 : 'auto',\n });\n const self = this;\n anchor.on('mousedown touchstart', function (e) {\n self._handleMouseDown(e);\n });\n anchor.on('dragstart', (e) => {\n anchor.stopDrag();\n e.cancelBubble = true;\n });\n anchor.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n anchor.on('mouseenter', () => {\n const rad = Konva.getAngle(this.rotation());\n const rotateCursor = this.rotateAnchorCursor();\n const cursor = getCursor(name, rad, rotateCursor);\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = cursor);\n this._cursorChange = true;\n });\n anchor.on('mouseout', () => {\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = '');\n this._cursorChange = false;\n });\n this.add(anchor);\n }\n _createBack() {\n const back = new Shape({\n name: 'back',\n width: 0,\n height: 0,\n sceneFunc(ctx, shape) {\n const tr = shape.getParent();\n const padding = tr.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.moveTo(shape.width() / 2, -padding);\n if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n ctx.lineTo(shape.width() / 2, -tr.rotateAnchorOffset() * Util._sign(shape.height()) - padding);\n }\n ctx.fillStrokeShape(shape);\n },\n hitFunc: (ctx, shape) => {\n if (!this.shouldOverdrawWholeArea()) {\n return;\n }\n const padding = this.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.fillStrokeShape(shape);\n },\n });\n this.add(back);\n this._proxyDrag(back);\n back.on('dragstart', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragmove', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n this.on('dragmove', (e) => {\n this.update();\n });\n }\n _handleMouseDown(e) {\n if (this._transforming) {\n return;\n }\n this._movingAnchorName = e.target.name().split(' ')[0];\n const attrs = this._getNodeRect();\n const width = attrs.width;\n const height = attrs.height;\n const hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n this.sin = Math.abs(height / hypotenuse);\n this.cos = Math.abs(width / hypotenuse);\n if (typeof window !== 'undefined') {\n window.addEventListener('mousemove', this._handleMouseMove);\n window.addEventListener('touchmove', this._handleMouseMove);\n window.addEventListener('mouseup', this._handleMouseUp, true);\n window.addEventListener('touchend', this._handleMouseUp, true);\n }\n this._transforming = true;\n const ap = e.target.getAbsolutePosition();\n const pos = e.target.getStage().getPointerPosition();\n this._anchorDragOffset = {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n };\n activeTransformersCount++;\n this._fire('transformstart', { evt: e.evt, target: this.getNode() });\n this._nodes.forEach((target) => {\n target._fire('transformstart', { evt: e.evt, target });\n });\n }\n _handleMouseMove(e) {\n let x, y, newHypotenuse;\n const anchorNode = this.findOne('.' + this._movingAnchorName);\n const stage = anchorNode.getStage();\n stage.setPointersPositions(e);\n const pp = stage.getPointerPosition();\n let newNodePos = {\n x: pp.x - this._anchorDragOffset.x,\n y: pp.y - this._anchorDragOffset.y,\n };\n const oldAbs = anchorNode.getAbsolutePosition();\n if (this.anchorDragBoundFunc()) {\n newNodePos = this.anchorDragBoundFunc()(oldAbs, newNodePos, e);\n }\n anchorNode.setAbsolutePosition(newNodePos);\n const newAbs = anchorNode.getAbsolutePosition();\n if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\n return;\n }\n if (this._movingAnchorName === 'rotater') {\n const attrs = this._getNodeRect();\n x = anchorNode.x() - attrs.width / 2;\n y = -anchorNode.y() + attrs.height / 2;\n let delta = Math.atan2(-y, x) + Math.PI / 2;\n if (attrs.height < 0) {\n delta -= Math.PI;\n }\n const oldRotation = Konva.getAngle(this.rotation());\n const newRotation = oldRotation + delta;\n const tol = Konva.getAngle(this.rotationSnapTolerance());\n const snappedRot = getSnap(this.rotationSnaps(), newRotation, tol);\n const diff = snappedRot - attrs.rotation;\n const shape = rotateAroundCenter(attrs, diff);\n this._fitNodesInto(shape, e);\n return;\n }\n const shiftBehavior = this.shiftBehavior();\n let keepProportion;\n if (shiftBehavior === 'inverted') {\n keepProportion = this.keepRatio() && !e.shiftKey;\n }\n else if (shiftBehavior === 'none') {\n keepProportion = this.keepRatio();\n }\n else {\n keepProportion = this.keepRatio() || e.shiftKey;\n }\n let centeredScaling = this.centeredScaling() || e.altKey;\n if (this._movingAnchorName === 'top-left') {\n if (keepProportion) {\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-right').x(),\n y: this.findOne('.bottom-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n const reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n const reverseY = this.findOne('.top-left').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-left').x(comparePoint.x - x);\n this.findOne('.top-left').y(comparePoint.y - y);\n }\n }\n else if (this._movingAnchorName === 'top-center') {\n this.findOne('.top-left').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'top-right') {\n if (keepProportion) {\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-left').x(),\n y: this.findOne('.bottom-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n const reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n const reverseY = this.findOne('.top-right').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-right').x(comparePoint.x + x);\n this.findOne('.top-right').y(comparePoint.y - y);\n }\n var pos = anchorNode.position();\n this.findOne('.top-left').y(pos.y);\n this.findOne('.bottom-right').x(pos.x);\n }\n else if (this._movingAnchorName === 'middle-left') {\n this.findOne('.top-left').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'middle-right') {\n this.findOne('.bottom-right').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'bottom-left') {\n if (keepProportion) {\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-right').x(),\n y: this.findOne('.top-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n const reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n const reverseY = anchorNode.y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n anchorNode.x(comparePoint.x - x);\n anchorNode.y(comparePoint.y + y);\n }\n pos = anchorNode.position();\n this.findOne('.top-left').x(pos.x);\n this.findOne('.bottom-right').y(pos.y);\n }\n else if (this._movingAnchorName === 'bottom-center') {\n this.findOne('.bottom-right').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'bottom-right') {\n if (keepProportion) {\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-left').x(),\n y: this.findOne('.top-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n const reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n const reverseY = this.findOne('.bottom-right').y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.bottom-right').x(comparePoint.x + x);\n this.findOne('.bottom-right').y(comparePoint.y + y);\n }\n }\n else {\n console.error(new Error('Wrong position argument of selection resizer: ' +\n this._movingAnchorName));\n }\n centeredScaling = this.centeredScaling() || e.altKey;\n if (centeredScaling) {\n const topLeft = this.findOne('.top-left');\n const bottomRight = this.findOne('.bottom-right');\n const topOffsetX = topLeft.x();\n const topOffsetY = topLeft.y();\n const bottomOffsetX = this.getWidth() - bottomRight.x();\n const bottomOffsetY = this.getHeight() - bottomRight.y();\n bottomRight.move({\n x: -topOffsetX,\n y: -topOffsetY,\n });\n topLeft.move({\n x: bottomOffsetX,\n y: bottomOffsetY,\n });\n }\n const absPos = this.findOne('.top-left').getAbsolutePosition();\n x = absPos.x;\n y = absPos.y;\n const width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n const height = this.findOne('.bottom-right').y() - this.findOne('.top-left').y();\n this._fitNodesInto({\n x: x,\n y: y,\n width: width,\n height: height,\n rotation: Konva.getAngle(this.rotation()),\n }, e);\n }\n _handleMouseUp(e) {\n this._removeEvents(e);\n }\n getAbsoluteTransform() {\n return this.getTransform();\n }\n _removeEvents(e) {\n var _a;\n if (this._transforming) {\n this._transforming = false;\n if (typeof window !== 'undefined') {\n window.removeEventListener('mousemove', this._handleMouseMove);\n window.removeEventListener('touchmove', this._handleMouseMove);\n window.removeEventListener('mouseup', this._handleMouseUp, true);\n window.removeEventListener('touchend', this._handleMouseUp, true);\n }\n const node = this.getNode();\n activeTransformersCount--;\n this._fire('transformend', { evt: e, target: node });\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n if (node) {\n this._nodes.forEach((target) => {\n var _a;\n target._fire('transformend', { evt: e, target });\n (_a = target.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n }\n this._movingAnchorName = null;\n }\n }\n _fitNodesInto(newAttrs, evt) {\n const oldAttrs = this._getNodeRect();\n const minSize = 1;\n if (Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n if (Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n const t = new Transform();\n t.rotate(Konva.getAngle(this.rotation()));\n if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('left') >= 0) {\n const offset = t.point({\n x: -this.padding() * 2,\n y: 0,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.width += this.padding() * 2;\n this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n }\n else if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('right') >= 0) {\n const offset = t.point({\n x: this.padding() * 2,\n y: 0,\n });\n this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.width += this.padding() * 2;\n }\n if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('top') >= 0) {\n const offset = t.point({\n x: 0,\n y: -this.padding() * 2,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n else if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('bottom') >= 0) {\n const offset = t.point({\n x: 0,\n y: this.padding() * 2,\n });\n this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n if (this.boundBoxFunc()) {\n const bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n if (bounded) {\n newAttrs = bounded;\n }\n else {\n Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n }\n }\n const baseSize = 10000000;\n const oldTr = new Transform();\n oldTr.translate(oldAttrs.x, oldAttrs.y);\n oldTr.rotate(oldAttrs.rotation);\n oldTr.scale(oldAttrs.width / baseSize, oldAttrs.height / baseSize);\n const newTr = new Transform();\n const newScaleX = newAttrs.width / baseSize;\n const newScaleY = newAttrs.height / baseSize;\n if (this.flipEnabled() === false) {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.translate(newAttrs.width < 0 ? newAttrs.width : 0, newAttrs.height < 0 ? newAttrs.height : 0);\n newTr.scale(Math.abs(newScaleX), Math.abs(newScaleY));\n }\n else {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.scale(newScaleX, newScaleY);\n }\n const delta = newTr.multiply(oldTr.invert());\n this._nodes.forEach((node) => {\n var _a;\n if (!node.getStage()) {\n return;\n }\n const parentTransform = node.getParent().getAbsoluteTransform();\n const localTransform = node.getTransform().copy();\n localTransform.translate(node.offsetX(), node.offsetY());\n const newLocalTransform = new Transform();\n newLocalTransform\n .multiply(parentTransform.copy().invert())\n .multiply(delta)\n .multiply(parentTransform)\n .multiply(localTransform);\n const attrs = newLocalTransform.decompose();\n node.setAttrs(attrs);\n (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n this.rotation(Util._getRotation(newAttrs.rotation));\n this._nodes.forEach((node) => {\n this._fire('transform', { evt: evt, target: node });\n node._fire('transform', { evt: evt, target: node });\n });\n this._resetTransformCache();\n this.update();\n this.getLayer().batchDraw();\n }\n forceUpdate() {\n this._resetTransformCache();\n this.update();\n }\n _batchChangeChild(selector, attrs) {\n const anchor = this.findOne(selector);\n anchor.setAttrs(attrs);\n }\n update() {\n var _a;\n const attrs = this._getNodeRect();\n this.rotation(Util._getRotation(attrs.rotation));\n const width = attrs.width;\n const height = attrs.height;\n const enabledAnchors = this.enabledAnchors();\n const resizeEnabled = this.resizeEnabled();\n const padding = this.padding();\n const anchorSize = this.anchorSize();\n const anchors = this.find('._anchor');\n anchors.forEach((node) => {\n node.setAttrs({\n width: anchorSize,\n height: anchorSize,\n offsetX: anchorSize / 2,\n offsetY: anchorSize / 2,\n stroke: this.anchorStroke(),\n strokeWidth: this.anchorStrokeWidth(),\n fill: this.anchorFill(),\n cornerRadius: this.anchorCornerRadius(),\n });\n });\n this._batchChangeChild('.top-left', {\n x: 0,\n y: 0,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n });\n this._batchChangeChild('.top-center', {\n x: width / 2,\n y: 0,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n });\n this._batchChangeChild('.top-right', {\n x: width,\n y: 0,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n });\n this._batchChangeChild('.middle-left', {\n x: 0,\n y: height / 2,\n offsetX: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n });\n this._batchChangeChild('.middle-right', {\n x: width,\n y: height / 2,\n offsetX: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n });\n this._batchChangeChild('.bottom-left', {\n x: 0,\n y: height,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n });\n this._batchChangeChild('.bottom-center', {\n x: width / 2,\n y: height,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n });\n this._batchChangeChild('.bottom-right', {\n x: width,\n y: height,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n });\n this._batchChangeChild('.rotater', {\n x: width / 2,\n y: -this.rotateAnchorOffset() * Util._sign(height) - padding,\n visible: this.rotateEnabled(),\n });\n this._batchChangeChild('.back', {\n width: width,\n height: height,\n visible: this.borderEnabled(),\n stroke: this.borderStroke(),\n strokeWidth: this.borderStrokeWidth(),\n dash: this.borderDash(),\n draggable: this.nodes().some((node) => node.draggable()),\n x: 0,\n y: 0,\n });\n const styleFunc = this.anchorStyleFunc();\n if (styleFunc) {\n anchors.forEach((node) => {\n styleFunc(node);\n });\n }\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n }\n isTransforming() {\n return this._transforming;\n }\n stopTransform() {\n if (this._transforming) {\n this._removeEvents();\n const anchorNode = this.findOne('.' + this._movingAnchorName);\n if (anchorNode) {\n anchorNode.stopDrag();\n }\n }\n }\n destroy() {\n if (this.getStage() && this._cursorChange) {\n this.getStage().content && (this.getStage().content.style.cursor = '');\n }\n Group.prototype.destroy.call(this);\n this.detach();\n this._removeEvents();\n return this;\n }\n toObject() {\n return Node.prototype.toObject.call(this);\n }\n clone(obj) {\n const node = Node.prototype.clone.call(this, obj);\n return node;\n }\n getClientRect() {\n if (this.nodes().length > 0) {\n return super.getClientRect();\n }\n else {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n }\n}\nTransformer.isTransforming = () => {\n return activeTransformersCount > 0;\n};\nfunction validateAnchors(val) {\n if (!(val instanceof Array)) {\n Util.warn('enabledAnchors value should be an array');\n }\n if (val instanceof Array) {\n val.forEach(function (name) {\n if (ANCHORS_NAMES.indexOf(name) === -1) {\n Util.warn('Unknown anchor name: ' +\n name +\n '. Available names are: ' +\n ANCHORS_NAMES.join(', '));\n }\n });\n }\n return val || [];\n}\nTransformer.prototype.className = 'Transformer';\n_registerNode(Transformer);\nFactory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory.addGetterSetter(Transformer, 'flipEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory.addGetterSetter(Transformer, 'anchorSize', 10, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory.addGetterSetter(Transformer, 'rotateLineVisible', true);\nFactory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateAnchorCursor', 'crosshair');\nFactory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderDash');\nFactory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory.addGetterSetter(Transformer, 'shiftBehavior', 'default');\nFactory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory.addGetterSetter(Transformer, 'padding', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'nodes');\nFactory.addGetterSetter(Transformer, 'node');\nFactory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\nFactory.addGetterSetter(Transformer, 'anchorStyleFunc');\nFactory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory.addGetterSetter(Transformer, 'useSingleNodeRotation', true);\nFactory.backCompat(Transformer, {\n lineEnabled: 'borderEnabled',\n rotateHandlerOffset: 'rotateAnchorOffset',\n enabledHandlers: 'enabledAnchors',\n});\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Wedge extends Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.radius(), 0, Konva.getAngle(this.angle()), this.clockwise());\n context.lineTo(0, 0);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\n_registerNode(Wedge);\nFactory.addGetterSetter(Wedge, 'radius', 0, getNumberValidator());\nFactory.addGetterSetter(Wedge, 'angle', 0, getNumberValidator());\nFactory.addGetterSetter(Wedge, 'clockwise', false);\nFactory.backCompat(Wedge, {\n angleDeg: 'angle',\n getAngleDeg: 'getAngle',\n setAngleDeg: 'setAngle',\n});\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction BlurStack() {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n}\nconst mul_table = [\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292,\n 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292,\n 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259,\n 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292,\n 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373,\n 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259,\n 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381,\n 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292,\n 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461,\n 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373,\n 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309,\n 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259,\n 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442,\n 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381,\n 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332,\n 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259,\n];\nconst shg_table = [\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17,\n 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,\n 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,\n 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24,\n];\nfunction filterGaussBlurRGBA(imageData, radius) {\n const pixels = imageData.data, width = imageData.width, height = imageData.height;\n let p, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\n const div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n let stackEnd = null, stack = stackStart, stackIn = null, stackOut = null;\n for (let i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n stack.next = stackStart;\n yw = yi = 0;\n for (let y = 0; y < height; y++) {\n r_in_sum =\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_sum =\n g_sum =\n b_sum =\n a_sum =\n 0;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (let 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 for (let i = 1; i < radiusPlus1; i++) {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n }\n stackIn = stackStart;\n stackOut = stackEnd;\n for (let x = 0; x < width; x++) {\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa !== 0) {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n r_in_sum += stackIn.r = pixels[p];\n g_in_sum += stackIn.g = pixels[p + 1];\n b_in_sum += stackIn.b = pixels[p + 2];\n a_in_sum += stackIn.a = pixels[p + 3];\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += 4;\n }\n yw += width;\n }\n for (let x = 0; x < width; x++) {\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_in_sum =\n g_sum =\n b_sum =\n a_sum =\n r_sum =\n 0;\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (let 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 let yp = width;\n for (let i = 1; i <= radius; i++) {\n yi = (yp + x) << 2;\n r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n if (i < heightMinus1) {\n yp += width;\n }\n }\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (let y = 0; y < height; y++) {\n p = yi << 2;\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0) {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p =\n (x +\n ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width) <<\n 2;\n r_sum += r_in_sum += stackIn.r = pixels[p];\n g_sum += g_in_sum += stackIn.g = pixels[p + 1];\n b_sum += b_in_sum += stackIn.b = pixels[p + 2];\n a_sum += a_in_sum += stackIn.a = pixels[p + 3];\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n}\nexport const Blur = function Blur(imageData) {\n const radius = Math.round(this.blurRadius());\n if (radius > 0) {\n filterGaussBlurRGBA(imageData, radius);\n }\n};\nFactory.addGetterSetter(Node, 'blurRadius', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Brighten = function (imageData) {\n const brightness = this.brightness() * 255, data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] += brightness;\n data[i + 1] += brightness;\n data[i + 2] += brightness;\n }\n};\nFactory.addGetterSetter(Node, 'brightness', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Contrast = function (imageData) {\n const adjust = Math.pow((this.contrast() + 100) / 100, 2);\n const data = imageData.data, nPixels = data.length;\n let red = 150, green = 150, blue = 150;\n for (let i = 0; i < nPixels; i += 4) {\n red = data[i];\n green = data[i + 1];\n blue = data[i + 2];\n red /= 255;\n red -= 0.5;\n red *= adjust;\n red += 0.5;\n red *= 255;\n green /= 255;\n green -= 0.5;\n green *= adjust;\n green += 0.5;\n green *= 255;\n blue /= 255;\n blue -= 0.5;\n blue *= adjust;\n blue += 0.5;\n blue *= 255;\n red = red < 0 ? 0 : red > 255 ? 255 : red;\n green = green < 0 ? 0 : green > 255 ? 255 : green;\n blue = blue < 0 ? 0 : blue > 255 ? 255 : blue;\n data[i] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n }\n};\nFactory.addGetterSetter(Node, 'contrast', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n const fromRange = fromMax - fromMin, toRange = toMax - toMin;\n if (fromRange === 0) {\n return toMin + toRange / 2;\n }\n if (toRange === 0) {\n return toMin;\n }\n let toValue = (fromValue - fromMin) / fromRange;\n toValue = toRange * toValue + toMin;\n return toValue;\n}\nexport const Enhance = function (imageData) {\n const data = imageData.data, nSubPixels = data.length;\n let rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b;\n const enhanceAmount = this.enhance();\n if (enhanceAmount === 0) {\n return;\n }\n for (let i = 0; i < nSubPixels; i += 4) {\n r = data[i + 0];\n if (r < rMin) {\n rMin = r;\n }\n else if (r > rMax) {\n rMax = r;\n }\n g = data[i + 1];\n if (g < gMin) {\n gMin = g;\n }\n else if (g > gMax) {\n gMax = g;\n }\n b = data[i + 2];\n if (b < bMin) {\n bMin = b;\n }\n else if (b > bMax) {\n bMax = b;\n }\n }\n if (rMax === rMin) {\n rMax = 255;\n rMin = 0;\n }\n if (gMax === gMin) {\n gMax = 255;\n gMin = 0;\n }\n if (bMax === bMin) {\n bMax = 255;\n bMin = 0;\n }\n let rGoalMax, rGoalMin, gGoalMax, gGoalMin, bGoalMax, bGoalMin;\n if (enhanceAmount > 0) {\n rGoalMax = rMax + enhanceAmount * (255 - rMax);\n rGoalMin = rMin - enhanceAmount * (rMin - 0);\n gGoalMax = gMax + enhanceAmount * (255 - gMax);\n gGoalMin = gMin - enhanceAmount * (gMin - 0);\n bGoalMax = bMax + enhanceAmount * (255 - bMax);\n bGoalMin = bMin - enhanceAmount * (bMin - 0);\n }\n else {\n const rMid = (rMax + rMin) * 0.5;\n rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n const gMid = (gMax + gMin) * 0.5;\n gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n const bMid = (bMax + bMin) * 0.5;\n bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n }\n for (let i = 0; i < nSubPixels; i += 4) {\n data[i + 0] = remap(data[i + 0], rMin, rMax, rGoalMin, rGoalMax);\n data[i + 1] = remap(data[i + 1], gMin, gMax, gGoalMin, gGoalMax);\n data[i + 2] = remap(data[i + 2], bMin, bMax, bGoalMin, bGoalMax);\n }\n};\nFactory.addGetterSetter(Node, 'enhance', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Emboss = function (imageData) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n const data = imageData.data;\n const w = imageData.width;\n const h = imageData.height;\n const strength01 = Math.min(1, Math.max(0, (_b = (_a = this.embossStrength) === null || _a === void 0 ? void 0 : _a.call(this)) !== null && _b !== void 0 ? _b : 0.5));\n const whiteLevel01 = Math.min(1, Math.max(0, (_d = (_c = this.embossWhiteLevel) === null || _c === void 0 ? void 0 : _c.call(this)) !== null && _d !== void 0 ? _d : 0.5));\n const directionMap = {\n 'top-left': 315,\n top: 270,\n 'top-right': 225,\n right: 180,\n 'bottom-right': 135,\n bottom: 90,\n 'bottom-left': 45,\n left: 0,\n };\n const directionDeg = (_g = directionMap[(_f = (_e = this.embossDirection) === null || _e === void 0 ? void 0 : _e.call(this)) !== null && _f !== void 0 ? _f : 'top-left']) !== null && _g !== void 0 ? _g : 315;\n const blend = !!((_j = (_h = this.embossBlend) === null || _h === void 0 ? void 0 : _h.call(this)) !== null && _j !== void 0 ? _j : false);\n const strength = strength01 * 10;\n const bias = whiteLevel01 * 255;\n const dirRad = (directionDeg * Math.PI) / 180;\n const cx = Math.cos(dirRad);\n const cy = Math.sin(dirRad);\n const SCALE = (128 / 1020) * strength;\n const src = new Uint8ClampedArray(data);\n const lum = new Float32Array(w * h);\n for (let p = 0, i = 0; i < data.length; i += 4, p++) {\n lum[p] = 0.2126 * src[i] + 0.7152 * src[i + 1] + 0.0722 * src[i + 2];\n }\n const Gx = [-1, 0, 1, -2, 0, 2, -1, 0, 1];\n const Gy = [-1, -2, -1, 0, 0, 0, 1, 2, 1];\n const OFF = [-w - 1, -w, -w + 1, -1, 0, 1, w - 1, w, w + 1];\n const clamp8 = (v) => (v < 0 ? 0 : v > 255 ? 255 : v);\n for (let y = 1; y < h - 1; y++) {\n for (let x = 1; x < w - 1; x++) {\n const p = y * w + x;\n let sx = 0, sy = 0;\n sx += lum[p + OFF[0]] * Gx[0];\n sy += lum[p + OFF[0]] * Gy[0];\n sx += lum[p + OFF[1]] * Gx[1];\n sy += lum[p + OFF[1]] * Gy[1];\n sx += lum[p + OFF[2]] * Gx[2];\n sy += lum[p + OFF[2]] * Gy[2];\n sx += lum[p + OFF[3]] * Gx[3];\n sy += lum[p + OFF[3]] * Gy[3];\n sx += lum[p + OFF[5]] * Gx[5];\n sy += lum[p + OFF[5]] * Gy[5];\n sx += lum[p + OFF[6]] * Gx[6];\n sy += lum[p + OFF[6]] * Gy[6];\n sx += lum[p + OFF[7]] * Gx[7];\n sy += lum[p + OFF[7]] * Gy[7];\n sx += lum[p + OFF[8]] * Gx[8];\n sy += lum[p + OFF[8]] * Gy[8];\n const r = cx * sx + cy * sy;\n const outGray = clamp8(bias + r * SCALE);\n const o = p * 4;\n if (blend) {\n const delta = outGray - bias;\n data[o] = clamp8(src[o] + delta);\n data[o + 1] = clamp8(src[o + 1] + delta);\n data[o + 2] = clamp8(src[o + 2] + delta);\n data[o + 3] = src[o + 3];\n }\n else {\n data[o] = data[o + 1] = data[o + 2] = outGray;\n data[o + 3] = src[o + 3];\n }\n }\n }\n for (let x = 0; x < w; x++) {\n let oTop = x * 4, oBot = ((h - 1) * w + x) * 4;\n data[oTop] = src[oTop];\n data[oTop + 1] = src[oTop + 1];\n data[oTop + 2] = src[oTop + 2];\n data[oTop + 3] = src[oTop + 3];\n data[oBot] = src[oBot];\n data[oBot + 1] = src[oBot + 1];\n data[oBot + 2] = src[oBot + 2];\n data[oBot + 3] = src[oBot + 3];\n }\n for (let y = 1; y < h - 1; y++) {\n let oL = y * w * 4, oR = (y * w + (w - 1)) * 4;\n data[oL] = src[oL];\n data[oL + 1] = src[oL + 1];\n data[oL + 2] = src[oL + 2];\n data[oL + 3] = src[oL + 3];\n data[oR] = src[oR];\n data[oR + 1] = src[oR + 1];\n data[oR + 2] = src[oR + 2];\n data[oR + 3] = src[oR + 3];\n }\n return imageData;\n};\nFactory.addGetterSetter(Node, 'embossStrength', 0.5, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossWhiteLevel', 0.5, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossDirection', 'top-left', undefined, Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossBlend', false, undefined, Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nFactory.addGetterSetter(Node, 'hue', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'saturation', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'luminance', 0, getNumberValidator(), Factory.afterSetFilter);\nexport const HSL = function (imageData) {\n const data = imageData.data, nPixels = data.length, v = 1, s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, l = this.luminance() * 127;\n const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n let r, g, b, a;\n for (let i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b + l;\n data[i + 1] = gr * r + gg * g + gb * b + l;\n data[i + 2] = br * r + bg * g + bb * b + l;\n data[i + 3] = a;\n }\n};\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const HSV = function (imageData) {\n const data = imageData.data, nPixels = data.length, v = Math.pow(2, this.value()), s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360;\n const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n for (let i = 0; i < nPixels; i += 4) {\n const r = data[i + 0];\n const g = data[i + 1];\n const b = data[i + 2];\n const a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b;\n data[i + 1] = gr * r + gg * g + gb * b;\n data[i + 2] = br * r + bg * g + bb * b;\n data[i + 3] = a;\n }\n};\nFactory.addGetterSetter(Node, 'hue', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'saturation', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'value', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction pixelAt(idata, x, y) {\n let idx = (y * idata.width + x) * 4;\n const d = [];\n d.push(idata.data[idx++], idata.data[idx++], idata.data[idx++], idata.data[idx++]);\n return d;\n}\nfunction rgbDistance(p1, p2) {\n return Math.sqrt(Math.pow(p1[0] - p2[0], 2) +\n Math.pow(p1[1] - p2[1], 2) +\n Math.pow(p1[2] - p2[2], 2));\n}\nfunction rgbMean(pTab) {\n const m = [0, 0, 0];\n for (let i = 0; i < pTab.length; i++) {\n m[0] += pTab[i][0];\n m[1] += pTab[i][1];\n m[2] += pTab[i][2];\n }\n m[0] /= pTab.length;\n m[1] /= pTab.length;\n m[2] /= pTab.length;\n return m;\n}\nfunction backgroundMask(idata, threshold) {\n const rgbv_no = pixelAt(idata, 0, 0);\n const rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n const rgbv_so = pixelAt(idata, 0, idata.height - 1);\n const rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n const thres = threshold || 10;\n if (rgbDistance(rgbv_no, rgbv_ne) < thres &&\n rgbDistance(rgbv_ne, rgbv_se) < thres &&\n rgbDistance(rgbv_se, rgbv_so) < thres &&\n rgbDistance(rgbv_so, rgbv_no) < thres) {\n const mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n const mask = [];\n for (let i = 0; i < idata.width * idata.height; i++) {\n const d = rgbDistance(mean, [\n idata.data[i * 4],\n idata.data[i * 4 + 1],\n idata.data[i * 4 + 2],\n ]);\n mask[i] = d < thres ? 0 : 255;\n }\n return mask;\n }\n}\nfunction applyMask(idata, mask) {\n for (let i = 0; i < idata.width * idata.height; i++) {\n idata.data[4 * i + 3] = mask[i];\n }\n}\nfunction erodeMask(mask, sw, sh) {\n const weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a === 255 * 8 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction dilateMask(mask, sw, sh) {\n const weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a >= 255 * 4 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction smoothEdgeMask(mask, sw, sh) {\n const weights = [\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n ];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a;\n }\n }\n return maskResult;\n}\nexport const Mask = function (imageData) {\n const threshold = this.threshold();\n let mask = backgroundMask(imageData, threshold);\n if (mask) {\n mask = erodeMask(mask, imageData.width, imageData.height);\n mask = dilateMask(mask, imageData.width, imageData.height);\n mask = smoothEdgeMask(mask, imageData.width, imageData.height);\n applyMask(imageData, mask);\n }\n return imageData;\n};\nFactory.addGetterSetter(Node, 'threshold', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { Util } from \"../Util.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nconst ToPolar = function (src, dst, opt) {\n const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n let x = xSize - xMid;\n let y = ySize - yMid;\n const rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n const rSize = ySize, tSize = xSize;\n const conversion = ((360 / tSize) * Math.PI) / 180;\n for (let theta = 0; theta < tSize; theta += 1) {\n const sin = Math.sin(theta * conversion);\n const cos = Math.cos(theta * conversion);\n for (let radius = 0; radius < rSize; radius += 1) {\n x = Math.floor(xMid + ((rMax * radius) / rSize) * cos);\n y = Math.floor(yMid + ((rMax * radius) / rSize) * sin);\n let i = (y * xSize + x) * 4;\n const r = srcPixels[i + 0];\n const g = srcPixels[i + 1];\n const b = srcPixels[i + 2];\n const a = srcPixels[i + 3];\n i = (theta + radius * xSize) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nconst FromPolar = function (src, dst, opt) {\n const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n let x = xSize - xMid;\n let y = ySize - yMid;\n const rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n const rSize = ySize, tSize = xSize, phaseShift = opt.polarRotation || 0;\n let x1, y1;\n for (x = 0; x < xSize; x += 1) {\n for (y = 0; y < ySize; y += 1) {\n const dx = x - xMid;\n const dy = y - yMid;\n const radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n let theta = ((Math.atan2(dy, dx) * 180) / Math.PI + 360 + phaseShift) % 360;\n theta = (theta * tSize) / 360;\n x1 = Math.floor(theta);\n y1 = Math.floor(radius);\n let i = (y1 * xSize + x1) * 4;\n const r = srcPixels[i + 0];\n const g = srcPixels[i + 1];\n const b = srcPixels[i + 2];\n const a = srcPixels[i + 3];\n i = (y * xSize + x) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nexport const Kaleidoscope = function (imageData) {\n const xSize = imageData.width, ySize = imageData.height;\n let x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n let power = Math.round(this.kaleidoscopePower());\n const angle = Math.round(this.kaleidoscopeAngle());\n const offset = Math.floor((xSize * (angle % 360)) / 360);\n if (power < 1) {\n return;\n }\n const tempCanvas = Util.createCanvasElement();\n tempCanvas.width = xSize;\n tempCanvas.height = ySize;\n const scratchData = tempCanvas\n .getContext('2d')\n .getImageData(0, 0, xSize, ySize);\n Util.releaseCanvas(tempCanvas);\n ToPolar(imageData, scratchData, {\n polarCenterX: xSize / 2,\n polarCenterY: ySize / 2,\n });\n let minSectionSize = xSize / Math.pow(2, power);\n while (minSectionSize <= 8) {\n minSectionSize = minSectionSize * 2;\n power -= 1;\n }\n minSectionSize = Math.ceil(minSectionSize);\n let sectionSize = minSectionSize;\n let xStart = 0, xEnd = sectionSize, xDelta = 1;\n if (offset + minSectionSize > xSize) {\n xStart = sectionSize;\n xEnd = 0;\n xDelta = -1;\n }\n for (y = 0; y < ySize; y += 1) {\n for (x = xStart; x !== xEnd; x += xDelta) {\n xoff = Math.round(x + offset) % xSize;\n srcPos = (xSize * y + xoff) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + x) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n }\n for (y = 0; y < ySize; y += 1) {\n sectionSize = Math.floor(minSectionSize);\n for (i = 0; i < power; i += 1) {\n for (x = 0; x < sectionSize + 1; x += 1) {\n srcPos = (xSize * y + x) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + sectionSize * 2 - x - 1) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n sectionSize *= 2;\n }\n }\n FromPolar(scratchData, imageData, { polarRotation: 0 });\n};\nFactory.addGetterSetter(Node, 'kaleidoscopePower', 2, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'kaleidoscopeAngle', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Noise = function (imageData) {\n const amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2;\n for (let i = 0; i < nPixels; i += 4) {\n data[i + 0] += half - 2 * half * Math.random();\n data[i + 1] += half - 2 * half * Math.random();\n data[i + 2] += half - 2 * half * Math.random();\n }\n};\nFactory.addGetterSetter(Node, 'noise', 0.2, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Util } from \"../Util.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Pixelate = function (imageData) {\n let pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), data = imageData.data;\n if (pixelSize <= 0) {\n Util.error('pixelSize value can not be <= 0');\n return;\n }\n for (let xBin = 0; xBin < nBinsX; xBin += 1) {\n for (let yBin = 0; yBin < nBinsY; yBin += 1) {\n let red = 0;\n let green = 0;\n let blue = 0;\n let alpha = 0;\n const xBinStart = xBin * pixelSize;\n const xBinEnd = xBinStart + pixelSize;\n const yBinStart = yBin * pixelSize;\n const yBinEnd = yBinStart + pixelSize;\n let pixelsInBin = 0;\n for (let x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (let y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n const i = (width * y + x) * 4;\n red += data[i + 0];\n green += data[i + 1];\n blue += data[i + 2];\n alpha += data[i + 3];\n pixelsInBin += 1;\n }\n }\n red = red / pixelsInBin;\n green = green / pixelsInBin;\n blue = blue / pixelsInBin;\n alpha = alpha / pixelsInBin;\n for (let x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (let y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n const i = (width * y + x) * 4;\n data[i + 0] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n data[i + 3] = alpha;\n }\n }\n }\n }\n};\nFactory.addGetterSetter(Node, 'pixelSize', 8, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Posterize = function (imageData) {\n const levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels;\n for (let i = 0; i < len; i += 1) {\n data[i] = Math.floor(data[i] / scale) * scale;\n }\n};\nFactory.addGetterSetter(Node, 'levels', 0.5, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { RGBComponent } from \"../Validators.js\";\nexport const RGB = function (imageData) {\n const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue();\n for (let i = 0; i < nPixels; i += 4) {\n const brightness = (0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]) / 255;\n data[i] = brightness * red;\n data[i + 1] = brightness * green;\n data[i + 2] = brightness * blue;\n data[i + 3] = data[i + 3];\n }\n};\nFactory.addGetterSetter(Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'blue', 0, RGBComponent, Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { RGBComponent } from \"../Validators.js\";\nexport const RGBA = function (imageData) {\n const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha();\n for (let i = 0; i < nPixels; i += 4) {\n const ia = 1 - alpha;\n data[i] = red * alpha + data[i] * ia;\n data[i + 1] = green * alpha + data[i + 1] * ia;\n data[i + 2] = blue * alpha + data[i + 2] * ia;\n }\n};\nFactory.addGetterSetter(Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'blue', 0, RGBComponent, Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'alpha', 1, function (val) {\n this._filterUpToDate = false;\n if (val > 1) {\n return 1;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return val;\n }\n});\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Threshold = function (imageData) {\n const level = this.threshold() * 255, data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 1) {\n data[i] = data[i] < level ? 0 : 255;\n }\n};\nFactory.addGetterSetter(Node, 'threshold', 0.5, getNumberValidator(), Factory.afterSetFilter);\n","import { Konva as Core } from \"./_CoreInternals.js\";\nimport { Arc } from \"./shapes/Arc.js\";\nimport { Arrow } from \"./shapes/Arrow.js\";\nimport { Circle } from \"./shapes/Circle.js\";\nimport { Ellipse } from \"./shapes/Ellipse.js\";\nimport { Image } from \"./shapes/Image.js\";\nimport { Label, Tag } from \"./shapes/Label.js\";\nimport { Line } from \"./shapes/Line.js\";\nimport { Path } from \"./shapes/Path.js\";\nimport { Rect } from \"./shapes/Rect.js\";\nimport { RegularPolygon } from \"./shapes/RegularPolygon.js\";\nimport { Ring } from \"./shapes/Ring.js\";\nimport { Sprite } from \"./shapes/Sprite.js\";\nimport { Star } from \"./shapes/Star.js\";\nimport { Text } from \"./shapes/Text.js\";\nimport { TextPath } from \"./shapes/TextPath.js\";\nimport { Transformer } from \"./shapes/Transformer.js\";\nimport { Wedge } from \"./shapes/Wedge.js\";\nimport { Blur } from \"./filters/Blur.js\";\nimport { Brighten } from \"./filters/Brighten.js\";\nimport { Brightness } from \"./filters/Brightness.js\";\nimport { Contrast } from \"./filters/Contrast.js\";\nimport { Emboss } from \"./filters/Emboss.js\";\nimport { Enhance } from \"./filters/Enhance.js\";\nimport { Grayscale } from \"./filters/Grayscale.js\";\nimport { HSL } from \"./filters/HSL.js\";\nimport { HSV } from \"./filters/HSV.js\";\nimport { Invert } from \"./filters/Invert.js\";\nimport { Kaleidoscope } from \"./filters/Kaleidoscope.js\";\nimport { Mask } from \"./filters/Mask.js\";\nimport { Noise } from \"./filters/Noise.js\";\nimport { Pixelate } from \"./filters/Pixelate.js\";\nimport { Posterize } from \"./filters/Posterize.js\";\nimport { RGB } from \"./filters/RGB.js\";\nimport { RGBA } from \"./filters/RGBA.js\";\nimport { Sepia } from \"./filters/Sepia.js\";\nimport { Solarize } from \"./filters/Solarize.js\";\nimport { Threshold } from \"./filters/Threshold.js\";\nexport const Konva = Core.Util._assign(Core, {\n Arc,\n Arrow,\n Circle,\n Ellipse,\n Image,\n Label,\n Tag,\n Line,\n Path,\n Rect,\n RegularPolygon,\n Ring,\n Sprite,\n Star,\n Text,\n TextPath,\n Transformer,\n Wedge,\n Filters: {\n Blur,\n Brightness,\n Brighten,\n Contrast,\n Emboss,\n Enhance,\n Grayscale,\n HSL,\n HSV,\n Invert,\n Kaleidoscope,\n Mask,\n Noise,\n Pixelate,\n Posterize,\n RGB,\n RGBA,\n Sepia,\n Solarize,\n Threshold,\n },\n});\n","export const Brightness = function (imageData) {\n const brightness = this.brightness(), data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] = Math.min(255, data[i] * brightness);\n data[i + 1] = Math.min(255, data[i + 1] * brightness);\n data[i + 2] = Math.min(255, data[i + 2] * brightness);\n }\n};\n","export const Grayscale = function (imageData) {\n const data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n const brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];\n data[i] = brightness;\n data[i + 1] = brightness;\n data[i + 2] = brightness;\n }\n};\n","export const Invert = function (imageData) {\n const data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n};\n","export const Sepia = function (imageData) {\n const data = imageData.data, nPixels = data.length;\n for (let i = 0; i < nPixels; i += 4) {\n const r = data[i + 0];\n const g = data[i + 1];\n const b = data[i + 2];\n data[i + 0] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);\n data[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);\n data[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);\n }\n};\n","export const Solarize = function (imageData) {\n const threshold = 128;\n const d = imageData.data;\n for (let i = 0; i < d.length; i += 4) {\n const r = d[i], g = d[i + 1], b = d[i + 2];\n const L = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n if (L >= threshold) {\n d[i] = 255 - r;\n d[i + 1] = 255 - g;\n d[i + 2] = 255 - b;\n }\n }\n return imageData;\n};\n","import b from \"konva\";\nconst Z = [\"north\", \"south\", \"east\", \"west\", \"northeast\", \"northwest\", \"southeast\", \"southwest\"], $t = {\n n: \"north\",\n s: \"south\",\n e: \"east\",\n w: \"west\",\n ne: \"northeast\",\n nw: \"northwest\",\n se: \"southeast\",\n sw: \"southwest\"\n}, N = {\n north: \"n\",\n south: \"s\",\n east: \"e\",\n west: \"w\",\n northeast: \"ne\",\n northwest: \"nw\",\n southeast: \"se\",\n southwest: \"sw\",\n up: \"u\",\n down: \"d\",\n in: \"i\",\n out: \"o\"\n}, et = {\n north: { x: 0, y: -1 },\n south: { x: 0, y: 1 },\n east: { x: 1, y: 0 },\n west: { x: -1, y: 0 },\n northeast: { x: 1, y: -1 },\n northwest: { x: -1, y: -1 },\n southeast: { x: 1, y: 1 },\n southwest: { x: -1, y: 1 }\n}, dt = [\n \"north\",\n \"south\",\n \"east\",\n \"west\",\n \"northeast\",\n \"northwest\",\n \"southeast\",\n \"southwest\"\n], Dt = {\n north: \"south\",\n south: \"north\",\n east: \"west\",\n west: \"east\",\n northeast: \"southwest\",\n northwest: \"southeast\",\n southeast: \"northwest\",\n southwest: \"northeast\"\n};\nfunction ut(m) {\n return m ? Object.prototype.hasOwnProperty.call(et, m) : !1;\n}\nfunction L(m, t, s, e = 1) {\n if (!ut(s))\n return { x: m, y: t };\n const i = et[s];\n return {\n x: m + i.x * e,\n y: t + i.y * e\n };\n}\nfunction st(m, t, s, e = 1, i = 0) {\n if (!ut(s))\n return { x: m, y: t };\n const o = et[s];\n if (!(o.x !== 0 && o.y !== 0) || i <= 0)\n return L(m, t, s, e);\n const r = e - i + i / Math.SQRT2;\n return {\n x: m + o.x * r,\n y: t + o.y * r\n };\n}\nfunction it(m, t, s, e = 1) {\n if (!ut(s))\n return { x: m, y: t };\n const i = et[s], o = Math.atan2(i.y, i.x);\n return {\n x: m + Math.cos(o) * e,\n y: t + Math.sin(o) * e\n };\n}\nconst H = {\n OPEN_DOOR: \"rgb(10, 155, 10)\",\n CLOSED_DOOR: \"rgb(226, 205, 59)\",\n LOCKED_DOOR: \"rgb(155, 10, 10)\",\n ONE_WAY_FILL: \"rgb(155, 10, 10)\"\n}, Pt = {\n 1: \"north\",\n 2: \"northeast\",\n 3: \"northwest\",\n 4: \"east\",\n 5: \"west\",\n 6: \"south\",\n 7: \"southeast\",\n 8: \"southwest\",\n 9: \"up\",\n 10: \"down\",\n 11: \"in\",\n 12: \"out\"\n}, At = [\"up\", \"down\", \"in\", \"out\"];\nfunction pt(m) {\n switch (m) {\n case 1:\n return H.OPEN_DOOR;\n case 2:\n return H.CLOSED_DOOR;\n default:\n return H.LOCKED_DOOR;\n }\n}\nclass ft {\n constructor(t, s, e) {\n this.mapReader = t, this.mapRenderer = s, this.settings = e;\n }\n /**\n * Get the edge point of a room based on its shape\n */\n getRoomEdgePoint(t, s, e, i) {\n return this.settings.roomShape === \"circle\" ? it(t, s, e, i) : this.settings.roomShape === \"roundedRectangle\" ? st(t, s, e, i, this.settings.roomSize * 0.2) : L(t, s, e, i);\n }\n renderData(t, s) {\n return this.renderDataWithColor(t, this.settings.lineColor, s);\n }\n renderDataWithColor(t, s, e) {\n const i = t.aDir && Z.includes(t.aDir), o = t.bDir && Z.includes(t.bDir);\n if (i && o)\n return this.renderTwoWayExitData(t, s, e);\n if (i || o) {\n const n = i ? \"a\" : \"b\";\n return this.renderOneWayExitData(t, s, n);\n }\n }\n renderTwoWayExitData(t, s, e) {\n const i = this.mapReader.getRoom(t.a), o = this.mapReader.getRoom(t.b);\n if (!i || !o || !t.aDir || !t.bDir || i.customLines[N[t.aDir]] && o.customLines[N[t.bDir]] || i.z !== o.z && (e !== o.z && i.customLines[N[t.aDir]] || e !== i.z && o.customLines[N[t.bDir]]))\n return;\n const n = this.getRoomEdgePoint(i.x, i.y, t.aDir, this.settings.roomSize / 2), r = this.getRoomEdgePoint(o.x, o.y, t.bDir, this.settings.roomSize / 2), h = [n.x, n.y, r.x, r.y], a = [{ points: h, stroke: s, strokeWidth: this.settings.lineWidth }], c = [], l = i.doors[N[t.aDir]] ?? o.doors[N[t.bDir]];\n if (l) {\n const p = h[0] + (h[2] - h[0]) / 2, x = h[1] + (h[3] - h[1]) / 2;\n c.push({\n x: p - this.settings.roomSize / 4,\n y: x - this.settings.roomSize / 4,\n width: this.settings.roomSize / 2,\n height: this.settings.roomSize / 2,\n stroke: pt(l),\n strokeWidth: this.settings.lineWidth\n });\n }\n const d = Math.min(h[0], h[2]), g = Math.max(h[0], h[2]), u = Math.min(h[1], h[3]), f = Math.max(h[1], h[3]), y = i.z !== o.z ? i.z === e ? o.id : i.id : void 0;\n return { lines: a, arrows: [], doors: c, bounds: { x: d, y: u, width: g - d, height: f - u }, targetRoomId: y };\n }\n renderOneWayExitData(t, s, e) {\n const i = e === \"a\" || !e && t.aDir, o = i ? this.mapReader.getRoom(t.a) : this.mapReader.getRoom(t.b), n = i ? this.mapReader.getRoom(t.b) : this.mapReader.getRoom(t.a), r = i ? t.aDir : t.bDir;\n if (!r || !o || !n || !Z.includes(r) || o.customLines[N[r] || r]) return;\n if (o.area != n.area && r) {\n const $ = this.mapReader.getColorValue(n.env), X = this.getRoomEdgePoint(o.x, o.y, r, this.settings.roomSize / 2), w = L(o.x, o.y, r, this.settings.roomSize * 1.5), R = $;\n return {\n lines: [],\n arrows: [{\n points: [X.x, X.y, w.x, w.y],\n pointerLength: 0.3,\n pointerWidth: 0.3,\n strokeWidth: this.settings.lineWidth * 1.4,\n stroke: R,\n fill: R\n }],\n doors: [],\n bounds: { x: Math.min(X.x, w.x), y: Math.min(X.y, w.y), width: Math.abs(w.x - X.x), height: Math.abs(w.y - X.y) },\n targetRoomId: n.id\n };\n }\n const h = n.area !== o.area || n.z !== o.z;\n let a = { x: n.x, y: n.y };\n h && (a = L(o.x, o.y, r, this.settings.roomSize / 2));\n const c = L(o.x, o.y, r, 0.3), l = c.x - (c.x - a.x) / 2, d = c.y - (c.y - a.y) / 2, g = this.getRoomEdgePoint(o.x, o.y, r, this.settings.roomSize / 2), u = [g.x, g.y, a.x, a.y], f = [g.x, a.x, l], y = [g.y, a.y, d], p = Math.min(...f), x = Math.max(...f), k = Math.min(...y), D = Math.max(...y);\n return {\n lines: [{ points: u, stroke: s, strokeWidth: this.settings.lineWidth, dash: [0.1, 0.05] }],\n arrows: [{\n points: [u[0], u[1], l, d],\n pointerLength: 0.5,\n pointerWidth: 0.35,\n strokeWidth: this.settings.lineWidth * 1.4,\n stroke: s,\n fill: H.ONE_WAY_FILL,\n dash: [0.1, 0.05]\n }],\n doors: [],\n bounds: { x: p, y: k, width: x - p, height: D - k },\n ...h ? { targetRoomId: n.id } : {}\n };\n }\n render(t, s) {\n return this.renderWithColor(t, this.settings.lineColor, s);\n }\n renderWithColor(t, s, e) {\n const i = t.aDir && Z.includes(t.aDir), o = t.bDir && Z.includes(t.bDir);\n if (i && o)\n return this.renderTwoWayExit(t, s, e);\n if (i || o) {\n const n = i ? \"a\" : \"b\";\n return this.renderOneWayExit(t, s, n);\n }\n }\n renderTwoWayExit(t, s, e) {\n const i = this.mapReader.getRoom(t.a), o = this.mapReader.getRoom(t.b);\n if (!i || !o || !t.aDir || !t.bDir || i.customLines[N[t.aDir]] && o.customLines[N[t.bDir]] || i.z !== o.z && (e !== o.z && i.customLines[N[t.aDir]] || e !== i.z && o.customLines[N[t.bDir]]))\n return;\n const n = new b.Group({ listening: !1 }), r = [];\n if (r.push(...Object.values(this.getRoomEdgePoint(i.x, i.y, t.aDir, this.settings.roomSize / 2))), r.push(...Object.values(this.getRoomEdgePoint(o.x, o.y, t.bDir, this.settings.roomSize / 2))), i.doors[N[t.aDir]] || o.doors[N[t.bDir]]) {\n const a = this.renderDoor(r, i.doors[N[t.aDir]] ?? o.doors[N[t.bDir]]);\n n.add(a);\n }\n const h = new b.Line({\n points: r,\n stroke: s,\n strokeWidth: this.settings.lineWidth,\n perfectDrawEnabled: !1,\n listening: !1\n });\n return n.add(h), n;\n }\n renderOneWayExit(t, s, e) {\n const i = e === \"a\" || !e && t.aDir, o = i ? this.mapReader.getRoom(t.a) : this.mapReader.getRoom(t.b), n = i ? this.mapReader.getRoom(t.b) : this.mapReader.getRoom(t.a), r = i ? t.aDir : t.bDir;\n if (!r || !o || !n || !Z.includes(r) || o.customLines[N[r] || r])\n return;\n if (o.area != n.area && r) {\n const y = this.mapReader.getColorValue(n.env);\n return this.renderAreaExit(o, r, y);\n }\n let h = { x: n.x, y: n.y };\n (n.area !== o.area || n.z !== o.z) && (h = L(o.x, o.y, r, this.settings.roomSize / 2));\n const a = L(o.x, o.y, r, 0.3), c = a.x - (a.x - h.x) / 2, l = a.y - (a.y - h.y) / 2, d = new b.Group({ listening: !1 }), g = [];\n g.push(...Object.values(this.getRoomEdgePoint(o.x, o.y, r, this.settings.roomSize / 2))), g.push(h.x, h.y);\n const u = new b.Line({\n points: g,\n stroke: s,\n strokeWidth: this.settings.lineWidth,\n dashEnabled: !0,\n dash: [0.1, 0.05],\n perfectDrawEnabled: !1,\n listening: !1\n });\n d.add(u);\n const f = new b.Arrow({\n points: [g[0], g[1], c, l],\n pointerLength: 0.5,\n pointerWidth: 0.35,\n strokeWidth: this.settings.lineWidth * 1.4,\n stroke: s,\n fill: H.ONE_WAY_FILL,\n dashEnabled: !0,\n dash: [0.1, 0.05],\n perfectDrawEnabled: !1,\n listening: !1\n });\n return d.add(f), d;\n }\n renderAreaExit(t, s, e) {\n const i = this.getRoomEdgePoint(t.x, t.y, s, this.settings.roomSize / 2), o = L(t.x, t.y, s, this.settings.roomSize * 1.5), n = e ?? this.mapReader.getColorValue(t.env);\n return new b.Arrow({\n points: [i.x, i.y, o.x, o.y],\n pointerLength: 0.3,\n pointerWidth: 0.3,\n strokeWidth: this.settings.lineWidth * 1.4,\n stroke: n,\n fill: n,\n perfectDrawEnabled: !1,\n listening: !1\n });\n }\n renderSpecialExits(t, s) {\n return Object.entries(t.customLines).flatMap(([e, i]) => {\n const o = [t.x, t.y];\n i.points.reduce((d, g) => (d.push(g.x, -g.y), d), o);\n const n = i.attributes.arrow ? b.Arrow : b.Line, r = s ?? `rgb(${i.attributes.color.r}, ${i.attributes.color.g}, ${i.attributes.color.b})`, h = new n({\n points: o,\n strokeWidth: this.settings.lineWidth,\n stroke: r,\n fill: s ?? `rgb(${i.attributes.color.r}, ${i.attributes.color.g} , ${i.attributes.color.b})`,\n pointerLength: 0.3,\n pointerWidth: 0.2,\n perfectDrawEnabled: !1,\n listening: !1\n });\n let a = i.attributes.style;\n a === \"dot line\" ? (h.dash([0.05, 0.05]), h.dashOffset(0.1)) : a === \"dash line\" ? h.dash([0.4, 0.2]) : a === \"solid line\" || a !== void 0 && console.log(\"Brak opisu stylu: \" + a);\n const c = [h], l = t.doors[e];\n return l && o.length >= 4 && c.push(this.renderDoor(o, l)), c;\n });\n }\n /**\n * Returns hit-zone bounds for special exits (custom lines) that lead to rooms in another area.\n */\n getSpecialExitAreaTargets(t) {\n const s = [];\n for (const [e, i] of Object.entries(t.customLines)) {\n let o = t.specialExits[e];\n if (o === void 0) {\n const d = $t[e];\n d && (o = t.exits[d] ?? t.specialExits[d]);\n }\n if (o === void 0) continue;\n const n = this.mapReader.getRoom(o);\n if (!n || n.area === t.area && n.z === t.z) continue;\n const r = [t.x, t.y];\n i.points.reduce((d, g) => (d.push(g.x, -g.y), d), r);\n let h = 1 / 0, a = 1 / 0, c = -1 / 0, l = -1 / 0;\n for (let d = 0; d < r.length; d += 2)\n h = Math.min(h, r[d]), c = Math.max(c, r[d]), a = Math.min(a, r[d + 1]), l = Math.max(l, r[d + 1]);\n s.push({ bounds: { x: h, y: a, width: c - h, height: l - a }, targetRoomId: o });\n }\n return s;\n }\n renderStubs(t, s = this.settings.lineColor) {\n return t.stubs.map((e) => {\n const i = Pt[e], o = this.getRoomEdgePoint(t.x, t.y, i, this.settings.roomSize / 2), n = L(t.x, t.y, i, this.settings.roomSize / 2 + 0.5), r = [o.x, o.y, n.x, n.y];\n return new b.Line({\n points: r,\n stroke: s,\n strokeWidth: this.settings.lineWidth,\n perfectDrawEnabled: !1,\n listening: !1\n });\n });\n }\n getSymbolColor(t, s) {\n return this.settings.frameMode ? this.mapReader.getColorValue(t) : this.mapReader.getSymbolColor(t, s);\n }\n renderInnerExits(t) {\n return At.map((s) => {\n if (t.exits[s]) {\n const e = new b.Group({ listening: !1 }), i = new b.RegularPolygon({\n x: t.x,\n y: t.y,\n sides: 3,\n fill: this.getSymbolColor(t.env, 0.6),\n stroke: this.getSymbolColor(t.env),\n strokeWidth: this.settings.lineWidth,\n radius: this.settings.roomSize / 5,\n scaleX: 1.4,\n scaleY: 0.8,\n perfectDrawEnabled: !1,\n listening: !1\n });\n e.add(i);\n let o = t.doors[s];\n if (o !== void 0)\n switch (o) {\n case 1:\n i.stroke(H.OPEN_DOOR);\n break;\n case 2:\n i.stroke(H.CLOSED_DOOR);\n break;\n default:\n i.stroke(H.LOCKED_DOOR);\n }\n const n = i.stroke();\n switch (s) {\n case \"up\":\n i.position(L(t.x, t.y, \"south\", this.settings.roomSize / 4));\n break;\n case \"down\":\n i.rotation(180), i.position(L(t.x, t.y, \"north\", this.settings.roomSize / 4));\n break;\n case \"in\": {\n i.rotation(90), i.position(L(t.x, t.y, \"west\", this.settings.roomSize / 4));\n const r = L(t.x, t.y, \"east\", this.settings.roomSize / 4);\n e.add(new b.RegularPolygon({\n x: r.x,\n y: r.y,\n sides: 3,\n fill: i.fill(),\n stroke: n,\n strokeWidth: this.settings.lineWidth,\n radius: this.settings.roomSize / 5,\n scaleX: 1.4,\n scaleY: 0.8,\n rotation: -90,\n perfectDrawEnabled: !1,\n listening: !1\n }));\n break;\n }\n case \"out\": {\n i.rotation(-90), i.position(L(t.x, t.y, \"west\", this.settings.roomSize / 4));\n const r = L(t.x, t.y, \"east\", this.settings.roomSize / 4);\n e.add(new b.RegularPolygon({\n x: r.x,\n y: r.y,\n sides: 3,\n fill: i.fill(),\n stroke: n,\n strokeWidth: this.settings.lineWidth,\n radius: this.settings.roomSize / 5,\n scaleX: 1.4,\n scaleY: 0.8,\n rotation: 90,\n perfectDrawEnabled: !1,\n listening: !1\n }));\n break;\n }\n }\n return e;\n }\n }).filter((s) => s !== void 0);\n }\n renderDoor(t, s) {\n const e = {\n x: t[0] + (t[2] - t[0]) / 2,\n y: t[1] + (t[3] - t[1]) / 2\n };\n return new b.Rect({\n x: e.x - this.settings.roomSize / 4,\n y: e.y - this.settings.roomSize / 4,\n width: this.settings.roomSize / 2,\n height: this.settings.roomSize / 2,\n stroke: pt(s),\n strokeWidth: this.settings.lineWidth,\n perfectDrawEnabled: !1,\n listening: !1\n });\n }\n}\nclass It {\n constructor(t, s) {\n this.rooms = [], this.labels = [], this.rooms = t, this.labels = s, this.bounds = this.createBounds();\n }\n getRooms() {\n return this.rooms;\n }\n getLabels() {\n return this.labels;\n }\n getBounds() {\n return this.bounds;\n }\n createBounds() {\n const t = this.rooms.reduce(\n (s, e) => ({\n minX: Math.min(s.minX, e.x),\n maxX: Math.max(s.maxX, e.x),\n minY: Math.min(s.minY, e.y),\n maxY: Math.max(s.maxY, e.y)\n }),\n {\n minX: Number.POSITIVE_INFINITY,\n maxX: Number.NEGATIVE_INFINITY,\n minY: Number.POSITIVE_INFINITY,\n maxY: Number.NEGATIVE_INFINITY\n }\n );\n for (const s of this.labels) {\n const e = s.X, i = -s.Y;\n t.minX = Math.min(t.minX, e), t.maxX = Math.max(t.maxX, e + s.Width), t.minY = Math.min(t.minY, i), t.maxY = Math.max(t.maxY, i + s.Height);\n }\n return t;\n }\n}\nconst tt = class tt {\n constructor(t) {\n this.planes = {}, this.exits = /* @__PURE__ */ new Map(), this.version = 0, this.area = t, this.planes = this.createPlanes(), this.createExits();\n }\n getAreaName() {\n return this.area.areaName;\n }\n getAreaId() {\n return parseInt(this.area.areaId);\n }\n getVersion() {\n return this.version;\n }\n markDirty() {\n this.version++;\n }\n getPlane(t) {\n return this.planes[t];\n }\n getPlanes() {\n return Object.values(this.planes);\n }\n getZLevels() {\n return Object.keys(this.planes).map(Number).sort((t, s) => t - s);\n }\n getRooms() {\n return this.area.rooms;\n }\n getFullBounds() {\n return this.getPlanes().reduce(\n (t, s) => {\n const e = s.getBounds();\n return {\n minX: Math.min(t.minX, e.minX),\n maxX: Math.max(t.maxX, e.maxX),\n minY: Math.min(t.minY, e.minY),\n maxY: Math.max(t.maxY, e.maxY)\n };\n },\n { minX: 1 / 0, maxX: -1 / 0, minY: 1 / 0, maxY: -1 / 0 }\n );\n }\n getLinkExits(t) {\n return Array.from(this.exits.values()).filter((s) => s.zIndex.includes(t));\n }\n createPlanes() {\n const t = this.area.rooms.reduce((s, e) => (s[e.z] || (s[e.z] = []), s[e.z].push(e), s), {});\n return Object.entries(t).reduce(\n (s, [e, i]) => (s[+e] = new It(i, this.area.labels.filter((o) => o.Z === +e)), s),\n {}\n );\n }\n createExits() {\n const t = /* @__PURE__ */ new Map();\n this.area.rooms.forEach((s) => {\n Object.entries(s.exits).forEach(([e, i]) => {\n if (s.id === i) return;\n const o = Math.min(s.id, i), n = Math.max(s.id, i), r = `${o}-${n}`;\n t.has(r) || t.set(r, []), t.get(r).push({\n origin: s.id,\n target: i,\n z: s.z,\n dir: e\n });\n });\n });\n for (const [s, e] of t) {\n const [i, o] = s.split(\"-\"), n = parseInt(i), r = parseInt(o), h = e.filter((l) => l.origin === n), a = e.filter((l) => l.origin === r), c = /* @__PURE__ */ new Set();\n for (const l of h) {\n let d = -1;\n for (let g = 0; g < a.length; g++)\n if (!c.has(g)) {\n if (a[g].dir === tt.oppositeDir[l.dir]) {\n d = g;\n break;\n }\n d === -1 && (d = g);\n }\n if (d !== -1) {\n c.add(d);\n const g = a[d];\n this.exits.set(`${s}-${l.dir}`, {\n a: n,\n b: r,\n aDir: l.dir,\n bDir: g.dir,\n zIndex: [l.z, g.z]\n });\n } else\n this.exits.set(`${s}-a:${l.dir}`, {\n a: n,\n b: r,\n aDir: l.dir,\n zIndex: [l.z]\n });\n }\n for (let l = 0; l < a.length; l++)\n if (!c.has(l)) {\n const d = a[l];\n this.exits.set(`${s}-b:${d.dir}`, {\n a: n,\n b: r,\n bDir: d.dir,\n zIndex: [d.z]\n });\n }\n }\n }\n};\ntt.oppositeDir = {\n north: \"south\",\n south: \"north\",\n east: \"west\",\n west: \"east\",\n northeast: \"southwest\",\n southwest: \"northeast\",\n northwest: \"southeast\",\n southeast: \"northwest\",\n up: \"down\",\n down: \"up\",\n in: \"out\",\n out: \"in\"\n};\nlet _ = tt;\nclass yt extends It {\n constructor(t, s) {\n super(t.getRooms(), t.getLabels()), this.basePlane = t, this.visitedRooms = s;\n }\n getRooms() {\n return this.basePlane.getRooms().filter((t) => this.visitedRooms.has(t.id));\n }\n getLabels() {\n return this.basePlane.getLabels();\n }\n getBounds() {\n const t = this.getRooms();\n return t.length ? t.reduce(\n (s, e) => ({\n minX: Math.min(s.minX, e.x),\n maxX: Math.max(s.maxX, e.x),\n minY: Math.min(s.minY, e.y),\n maxY: Math.max(s.maxY, e.y)\n }),\n {\n minX: Number.POSITIVE_INFINITY,\n maxX: Number.NEGATIVE_INFINITY,\n minY: Number.POSITIVE_INFINITY,\n maxY: Number.NEGATIVE_INFINITY\n }\n ) : this.basePlane.getBounds();\n }\n}\nclass gt extends _ {\n constructor(t, s) {\n super(t), this.planeCache = /* @__PURE__ */ new WeakMap(), this.visitedRooms = s instanceof Set ? s : new Set(s ?? []), this.areaRoomIds = new Set(t.rooms.map((e) => e.id));\n }\n getPlane(t) {\n const s = super.getPlane(t);\n if (!s)\n return s;\n let e = this.planeCache.get(s);\n return e || (e = new yt(s, this.visitedRooms), this.planeCache.set(s, e)), e;\n }\n getPlanes() {\n return super.getPlanes().map((t) => {\n let s = this.planeCache.get(t);\n return s || (s = new yt(t, this.visitedRooms), this.planeCache.set(t, s)), s;\n });\n }\n getLinkExits(t) {\n return super.getLinkExits(t).filter((s) => this.visitedRooms.has(s.a) || this.visitedRooms.has(s.b));\n }\n getVisitedRoomCount() {\n return super.getRooms().reduce((t, s) => t + (this.visitedRooms.has(s.id) ? 1 : 0), 0);\n }\n getTotalRoomCount() {\n return this.areaRoomIds.size;\n }\n hasVisitedRoom(t) {\n return this.areaRoomIds.has(t) && this.visitedRooms.has(t);\n }\n getVisitedRoomIds() {\n return super.getRooms().filter((t) => this.visitedRooms.has(t.id)).map((t) => t.id);\n }\n addVisitedRoom(t) {\n const s = this.visitedRooms.has(t);\n this.visitedRooms.add(t);\n const e = !s && this.areaRoomIds.has(t);\n return e && this.markDirty(), e;\n }\n addVisitedRooms(t) {\n let s = 0;\n for (const e of t) {\n const i = this.visitedRooms.has(e);\n this.visitedRooms.add(e), !i && this.areaRoomIds.has(e) && s++;\n }\n return s > 0 && this.markDirty(), s;\n }\n}\nconst G = [\"up\", \"down\", \"in\", \"out\"];\nfunction U(m, t, s, e, i) {\n return m.roomShape === \"circle\" ? it(t, s, e, i) : m.roomShape === \"roundedRectangle\" ? st(t, s, e, i, m.roomSize * 0.2) : L(t, s, e, i);\n}\nfunction Xt(m, t, s) {\n for (const [e, i] of Object.entries(t.exits))\n if (i === s.id) {\n const o = e;\n if (G.includes(o)) {\n const h = N[o], a = t.customLines[h] ? h : t.customLines[o] ? o : void 0;\n return { type: \"inner\", fromDir: o, customLineKey: a, fromRoom: t, toRoom: s };\n }\n const n = N[o];\n if (t.customLines[n])\n return { type: \"special\", fromDir: o, customLineKey: n, fromRoom: t, toRoom: s };\n if (t.customLines[o])\n return { type: \"special\", fromDir: o, customLineKey: o, fromRoom: t, toRoom: s };\n const r = Wt(s, t.id);\n return { type: \"regular\", fromDir: o, toDir: r, fromRoom: t, toRoom: s };\n }\n for (const [e, i] of Object.entries(t.specialExits))\n if (i === s.id)\n return t.customLines[e] ? { type: \"special\", customLineKey: e, fromRoom: t, toRoom: s } : { type: \"inner\", fromRoom: t, toRoom: s };\n for (const [e, i] of Object.entries(s.exits))\n if (i === t.id) {\n const o = e;\n if (G.includes(o)) {\n const r = N[o], h = s.customLines[r] ? r : s.customLines[o] ? o : void 0;\n return { type: \"inner\", toDir: o, customLineKey: h, fromRoom: t, toRoom: s };\n }\n const n = N[o];\n return s.customLines[n] ? { type: \"special\", toDir: o, customLineKey: n, fromRoom: t, toRoom: s } : s.customLines[o] ? { type: \"special\", toDir: o, customLineKey: o, fromRoom: t, toRoom: s } : { type: \"regular\", toDir: o, fromRoom: t, toRoom: s };\n }\n for (const [e, i] of Object.entries(s.specialExits))\n if (i === t.id)\n return s.customLines[e] ? { type: \"special\", customLineKey: e, fromRoom: t, toRoom: s } : { type: \"inner\", fromRoom: t, toRoom: s };\n return { type: \"none\", fromRoom: t, toRoom: s };\n}\nfunction Wt(m, t) {\n for (const [s, e] of Object.entries(m.exits))\n if (e === t)\n return s;\n}\nfunction xt(m, t, s) {\n return m ? m.area === t && m.z === s : !1;\n}\nfunction Yt(m, t) {\n for (const [s, e] of Object.entries(m.exits))\n if (e === t.id)\n return { direction: s };\n for (const [s, e] of Object.entries(m.specialExits))\n if (e === t.id)\n return;\n}\nfunction Nt(m, t) {\n for (const s of dt)\n if (m.exits[s] === t.id) return s;\n for (const s of dt)\n if (t.exits[s] === m.id) return Dt[s];\n}\nfunction Tt(m, t, s) {\n const { fromRoom: e, toRoom: i, fromDir: o, toDir: n } = t;\n if (s.length === 0 && s.push(e.x, e.y), o && Z.includes(o)) {\n const r = U(m, e.x, e.y, o, m.roomSize / 2);\n s.push(r.x, r.y);\n }\n if (n && Z.includes(n)) {\n const r = U(m, i.x, i.y, n, m.roomSize / 2);\n s.push(r.x, r.y);\n }\n s.push(i.x, i.y);\n}\nfunction Ot(m, t) {\n const { fromRoom: s, toRoom: e, customLineKey: i } = m;\n let o = s, n;\n i && (n = s.customLines[i], n || (n = e.customLines[i], o = e)), t.length === 0 && t.push(o.x, o.y), n && n.points.forEach((r) => {\n t.push(r.x, -r.y);\n }), t.push(e.x, e.y);\n}\nfunction mt(m, t, s, e, i) {\n const o = [], n = [], r = [], h = s.map((d) => m.getRoom(d)).filter((d) => d !== void 0);\n let a = [];\n const c = () => {\n a.length >= 4 && o.push({ points: [...a] }), a = [];\n }, l = (d) => {\n const { fromRoom: g, toRoom: u, fromDir: f, toDir: y, customLineKey: p } = d;\n if (p) {\n let x = g, k = g.customLines[p];\n if (k || (k = u.customLines[p], x = u), k) {\n const D = [x.x, x.y];\n k.points.forEach(($) => {\n D.push($.x, -$.y);\n }), r.push({ points: D });\n }\n }\n f && G.includes(f) && n.push({ room: g, direction: f }), y && G.includes(y) && n.push({ room: u, direction: y });\n };\n for (let d = 0; d < h.length - 1; d++) {\n const g = h[d], u = h[d + 1], f = xt(g, e, i), y = xt(u, e, i);\n if (!f && !y) {\n c();\n continue;\n }\n if (f && y) {\n const p = Xt(m, g, u);\n switch (p.type) {\n case \"regular\":\n Tt(t, p, a);\n break;\n case \"special\":\n Ot(p, a);\n break;\n case \"inner\":\n c(), l(p);\n break;\n case \"none\":\n a.length === 0 && a.push(g.x, g.y), a.push(u.x, u.y);\n break;\n }\n } else {\n const p = f ? g : u, x = f ? u : g, k = Yt(p, x);\n if (k) {\n if (G.includes(k.direction))\n c(), n.push({ room: p, direction: k.direction });\n else if (Z.includes(k.direction)) {\n a.length === 0 && a.push(p.x, p.y);\n const D = U(t, p.x, p.y, k.direction, t.roomSize / 2), $ = L(p.x, p.y, k.direction, t.roomSize);\n a.push(D.x, D.y, $.x, $.y), c();\n }\n } else {\n const D = Nt(p, x);\n if (D) {\n a.length === 0 && a.push(p.x, p.y);\n const $ = U(t, p.x, p.y, D, t.roomSize / 2), X = L(p.x, p.y, D, t.roomSize);\n a.push($.x, $.y, X.x, X.y), c();\n }\n }\n }\n }\n return c(), { segments: o, innerMarkers: n, customLines: r };\n}\nclass Bt {\n constructor(t, s, e) {\n this.paths = [], this.mapReader = t, this.overlayLayer = s, this.settings = e;\n }\n createStrokedLine(t, s) {\n const e = new b.Group();\n return e.opacity(0.8), e.add(new b.Line({\n points: t,\n stroke: \"black\",\n strokeWidth: this.settings.lineWidth * 8,\n lineCap: \"round\",\n lineJoin: \"round\"\n })), e.add(new b.Line({\n points: t,\n stroke: s,\n strokeWidth: this.settings.lineWidth * 4,\n lineCap: \"round\",\n lineJoin: \"round\"\n })), e;\n }\n renderInnerExitMarker(t, s, e) {\n const i = new b.Group();\n i.opacity(0.8);\n const o = new b.RegularPolygon({\n x: t.x,\n y: t.y,\n sides: 3,\n fill: e,\n stroke: \"black\",\n strokeWidth: this.settings.lineWidth * 2,\n radius: this.settings.roomSize / 5,\n scaleX: 1.4,\n scaleY: 0.8\n });\n switch (s) {\n case \"up\":\n o.position(L(t.x, t.y, \"south\", this.settings.roomSize / 4));\n break;\n case \"down\":\n o.rotation(180), o.position(L(t.x, t.y, \"north\", this.settings.roomSize / 4));\n break;\n case \"in\": {\n const n = o.clone();\n n.rotation(-90), n.position(L(t.x, t.y, \"east\", this.settings.roomSize / 4)), i.add(n), o.rotation(90), o.position(L(t.x, t.y, \"west\", this.settings.roomSize / 4));\n break;\n }\n case \"out\": {\n const n = o.clone();\n n.rotation(90), n.position(L(t.x, t.y, \"east\", this.settings.roomSize / 4)), i.add(n), o.rotation(-90), o.position(L(t.x, t.y, \"west\", this.settings.roomSize / 4));\n break;\n }\n }\n return i.add(o), i;\n }\n renderPath(t, s, e, i = \"#66E64D\") {\n if (s === void 0 || e === void 0)\n return;\n const o = mt(this.mapReader, this.settings, t, s, e);\n for (const n of o.segments) {\n const r = this.createStrokedLine(n.points, i);\n this.overlayLayer.add(r), this.paths.push(r);\n }\n for (const n of o.customLines) {\n const r = this.createStrokedLine(n.points, i);\n this.overlayLayer.add(r), this.paths.push(r);\n }\n for (const n of o.innerMarkers) {\n const r = this.renderInnerExitMarker(n.room, n.direction, i);\n this.overlayLayer.add(r), this.paths.push(r);\n }\n return this.paths[0];\n }\n clearPaths() {\n this.paths.forEach((t) => {\n t.destroy();\n }), this.paths = [];\n }\n}\nconst Ft = {\n 1: \"north\",\n 2: \"northeast\",\n 3: \"northwest\",\n 4: \"east\",\n 5: \"west\",\n 6: \"south\",\n 7: \"southeast\",\n 8: \"southwest\",\n 9: \"up\",\n 10: \"down\",\n 11: \"in\",\n 12: \"out\"\n}, Vt = [\"up\", \"down\", \"in\", \"out\"], nt = {\n OPEN: \"rgb(10, 155, 10)\",\n CLOSED: \"rgb(226, 205, 59)\",\n LOCKED: \"rgb(155, 10, 10)\"\n};\nfunction bt(m) {\n switch (m) {\n case 1:\n return nt.OPEN;\n case 2:\n return nt.CLOSED;\n default:\n return nt.LOCKED;\n }\n}\nfunction A(m) {\n return m.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#39;\");\n}\nclass Lt {\n constructor(t, s) {\n this.mapReader = t, this.settings = s, this.exitRenderer = new ft(t, null, s);\n }\n getSymbolColor(t, s) {\n return this.settings.frameMode ? this.mapReader.getColorValue(t) : this.mapReader.getSymbolColor(t, s);\n }\n export(t, s, e) {\n const i = this.mapReader.getArea(t);\n if (!i) throw new Error(`Area ${t} not found`);\n const o = i.getPlane(s);\n if (!o) throw new Error(`Plane z=${s} not found in area ${t}`);\n const n = e?.padding ?? 3, r = this.computeBounds(i, o, e?.roomId, n), h = [];\n h.push(`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${r.x} ${r.y} ${r.w} ${r.h}\">`), h.push(`<rect x=\"${r.x}\" y=\"${r.y}\" width=\"${r.w}\" height=\"${r.h}\" fill=\"${A(this.settings.backgroundColor)}\"/>`), this.settings.gridEnabled && this.renderGrid(h, r), this.renderLabels(h, o.getLabels()), this.renderLinkExits(h, i, s);\n const a = o.getRooms();\n this.renderSpecialExits(h, a), this.renderStubs(h, a), this.renderRooms(h, a), this.renderInnerExits(h, a);\n const c = e?.overlays;\n if (c) {\n if (c.paths)\n for (const l of c.paths)\n this.renderPathOverlay(h, l.locations, l.color, t, s);\n if (c.highlights)\n for (const l of c.highlights)\n this.renderHighlightOverlay(h, l.roomId, l.color);\n c.position && this.renderPositionMarker(h, c.position.roomId);\n }\n if (this.settings.areaName) {\n const l = i.getAreaName();\n if (l) {\n const d = this.getEffectiveBounds(i, o);\n h.push(`<text x=\"${d.minX - 3.5}\" y=\"${d.minY - 2}\" font-size=\"2.5\" font-family=\"${A(this.settings.fontFamily)}\" fill=\"white\">${A(l)}</text>`);\n }\n }\n return h.push(\"</svg>\"), h.join(`\n`);\n }\n computeBounds(t, s, e, i) {\n if (e !== void 0) {\n const g = this.mapReader.getRoom(e);\n if (!g) throw new Error(`Room ${e} not found`);\n return {\n x: g.x - i,\n y: g.y - i,\n w: i * 2,\n h: i * 2\n };\n }\n const o = this.getEffectiveBounds(t, s), n = this.settings.areaName ? t.getAreaName() : void 0, r = n ? 7 : 0, h = n ? 3.5 : 0, a = o.minX - h, c = o.minY - r, l = n ? o.minX - 3.5 + n.length * 2.5 * 0.6 : -1 / 0, d = Math.max(o.maxX, l);\n return {\n x: a - i,\n y: c - i,\n w: d - a + i * 2,\n h: o.maxY - c + i * 2\n };\n }\n getEffectiveBounds(t, s) {\n return this.settings.uniformLevelSize ? t.getFullBounds() : s.getBounds();\n }\n getRoomEdgePoint(t, s, e, i) {\n return this.settings.roomShape === \"circle\" ? it(t, s, e, i) : this.settings.roomShape === \"roundedRectangle\" ? st(t, s, e, i, this.settings.roomSize * 0.2) : L(t, s, e, i);\n }\n // --- Grid ---\n renderGrid(t, s) {\n const e = this.settings.gridSize, i = Math.floor(s.x / e) * e, o = Math.ceil((s.x + s.w) / e) * e, n = Math.floor(s.y / e) * e, r = Math.ceil((s.y + s.h) / e) * e, h = A(this.settings.gridColor), a = this.settings.gridLineWidth;\n for (let c = i; c <= o; c += e)\n t.push(`<line x1=\"${c}\" y1=\"${n}\" x2=\"${c}\" y2=\"${r}\" stroke=\"${h}\" stroke-width=\"${a}\"/>`);\n for (let c = n; c <= r; c += e)\n t.push(`<line x1=\"${i}\" y1=\"${c}\" x2=\"${o}\" y2=\"${c}\" stroke=\"${h}\" stroke-width=\"${a}\"/>`);\n }\n // --- Labels ---\n renderLabels(t, s) {\n for (const e of s) {\n const i = e.X, o = -e.Y;\n if (this.settings.labelRenderMode === \"image\" && e.pixMap) {\n t.push(`<image x=\"${i}\" y=\"${o}\" width=\"${e.Width}\" height=\"${e.Height}\" href=\"data:image/png;base64,${e.pixMap}\"/>`);\n continue;\n }\n if ((e.BgColor?.alpha ?? 0) > 0 && !this.settings.transparentLabels) {\n const n = this.labelColor(e.BgColor);\n t.push(`<rect x=\"${i}\" y=\"${o}\" width=\"${e.Width}\" height=\"${e.Height}\" fill=\"${n}\"/>`);\n }\n if (e.Text) {\n const n = this.labelColor(e.FgColor), r = Math.min(0.75, e.Width / Math.max(e.Text.length / 2, 1)), h = Math.max(0.1, Math.min(r, Math.max(e.Height * 0.9, 0.1)));\n t.push(`<text x=\"${i + e.Width / 2}\" y=\"${o + e.Height / 2}\" font-size=\"${h}\" font-family=\"${A(this.settings.fontFamily)}\" fill=\"${n}\" text-anchor=\"middle\" dominant-baseline=\"central\">${A(e.Text)}</text>`);\n }\n }\n }\n labelColor(t) {\n const s = (t?.alpha ?? 255) / 255, e = (i) => Math.min(255, Math.max(0, i ?? 0));\n return `rgba(${e(t?.r)}, ${e(t?.g)}, ${e(t?.b)}, ${s})`;\n }\n // --- Link Exits ---\n renderLinkExits(t, s, e) {\n const i = s.getLinkExits(e);\n for (const o of i) {\n const n = this.exitRenderer.renderData(o, e);\n n && this.renderExitData(t, n);\n }\n }\n renderExitData(t, s) {\n for (const e of s.lines)\n this.renderSvgLine(t, e);\n for (const e of s.arrows)\n this.renderSvgArrow(t, e);\n for (const e of s.doors)\n this.renderSvgDoor(t, e);\n }\n renderSvgLine(t, s) {\n if (s.points.length < 4) return;\n const e = s.points.map((o) => o.toString()).join(\" \"), i = s.dash ? ` stroke-dasharray=\"${s.dash.join(\" \")}\"` : \"\";\n t.push(`<polyline points=\"${e}\" stroke=\"${A(s.stroke)}\" stroke-width=\"${s.strokeWidth}\" fill=\"none\"${i}/>`);\n }\n renderSvgArrow(t, s) {\n if (s.points.length < 4) return;\n const e = s.points.map((p) => p.toString()).join(\" \"), i = s.dash ? ` stroke-dasharray=\"${s.dash.join(\" \")}\"` : \"\";\n t.push(`<polyline points=\"${e}\" stroke=\"${A(s.stroke)}\" stroke-width=\"${s.strokeWidth}\" fill=\"none\"${i}/>`);\n const o = s.points.length - 2, n = s.points[o], r = s.points[o + 1], h = s.points[o - 2], a = s.points[o - 1], c = Math.atan2(r - a, n - h), l = s.pointerLength, d = s.pointerWidth / 2, g = n - l * Math.cos(c - Math.atan2(d, l)), u = r - l * Math.sin(c - Math.atan2(d, l)), f = n - l * Math.cos(c + Math.atan2(d, l)), y = r - l * Math.sin(c + Math.atan2(d, l));\n t.push(`<polygon points=\"${n},${r} ${g},${u} ${f},${y}\" fill=\"${A(s.fill)}\" stroke=\"${A(s.stroke)}\" stroke-width=\"${s.strokeWidth}\"/>`);\n }\n renderSvgDoor(t, s) {\n t.push(`<rect x=\"${s.x}\" y=\"${s.y}\" width=\"${s.width}\" height=\"${s.height}\" stroke=\"${A(s.stroke)}\" stroke-width=\"${s.strokeWidth}\" fill=\"none\"/>`);\n }\n // --- Stubs ---\n renderStubs(t, s) {\n const e = this.settings.lineColor;\n for (const i of s)\n for (const o of i.stubs) {\n const n = Ft[o];\n if (!n) continue;\n const r = this.getRoomEdgePoint(i.x, i.y, n, this.settings.roomSize / 2), h = L(i.x, i.y, n, this.settings.roomSize / 2 + 0.5);\n t.push(`<line x1=\"${r.x}\" y1=\"${r.y}\" x2=\"${h.x}\" y2=\"${h.y}\" stroke=\"${A(e)}\" stroke-width=\"${this.settings.lineWidth}\"/>`);\n }\n }\n // --- Special Exits (custom lines) ---\n renderSpecialExits(t, s) {\n for (const e of s)\n for (const [i, o] of Object.entries(e.customLines)) {\n const n = [e.x, e.y];\n for (const l of o.points)\n n.push(l.x, -l.y);\n const r = `rgb(${o.attributes.color.r}, ${o.attributes.color.g}, ${o.attributes.color.b})`;\n let h = \"\";\n o.attributes.style === \"dot line\" ? h = ' stroke-dasharray=\"0.05 0.05\"' : o.attributes.style === \"dash line\" && (h = ' stroke-dasharray=\"0.4 0.2\"');\n const a = n.map((l) => l.toString()).join(\" \");\n if (o.attributes.arrow && n.length >= 4) {\n t.push(`<polyline points=\"${a}\" stroke=\"${A(r)}\" stroke-width=\"${this.settings.lineWidth}\" fill=\"none\"${h}/>`);\n const l = n.length - 2, d = n[l], g = n[l + 1], u = n[l - 2], f = n[l - 1], y = Math.atan2(g - f, d - u), p = 0.3, x = 0.1, k = d - p * Math.cos(y - Math.atan2(x, p)), D = g - p * Math.sin(y - Math.atan2(x, p)), $ = d - p * Math.cos(y + Math.atan2(x, p)), X = g - p * Math.sin(y + Math.atan2(x, p));\n t.push(`<polygon points=\"${d},${g} ${k},${D} ${$},${X}\" fill=\"${A(r)}\" stroke=\"${A(r)}\" stroke-width=\"${this.settings.lineWidth}\"/>`);\n } else\n t.push(`<polyline points=\"${a}\" stroke=\"${A(r)}\" stroke-width=\"${this.settings.lineWidth}\" fill=\"none\"${h}/>`);\n const c = e.doors[i];\n if (c && n.length >= 4) {\n const l = n[0] + (n[2] - n[0]) / 2, d = n[1] + (n[3] - n[1]) / 2, g = this.settings.roomSize / 2;\n t.push(`<rect x=\"${l - g / 2}\" y=\"${d - g / 2}\" width=\"${g}\" height=\"${g}\" stroke=\"${bt(c)}\" stroke-width=\"${this.settings.lineWidth}\" fill=\"none\"/>`);\n }\n }\n }\n // --- Rooms ---\n renderRooms(t, s) {\n const e = this.settings.roomSize, i = e / 2;\n for (const o of s) {\n const n = this.mapReader.getColorValue(o.env), r = this.settings.frameMode ? this.settings.backgroundColor : n, h = this.settings.frameMode ? n : this.settings.lineColor;\n if (this.settings.roomShape === \"circle\")\n t.push(`<circle cx=\"${o.x}\" cy=\"${o.y}\" r=\"${i}\" fill=\"${A(r)}\" stroke=\"${A(h)}\" stroke-width=\"${this.settings.lineWidth}\"/>`);\n else {\n const a = o.x - i, c = o.y - i, l = this.settings.roomShape === \"roundedRectangle\" ? e * 0.2 : 0, d = l > 0 ? ` rx=\"${l}\" ry=\"${l}\"` : \"\";\n if (t.push(`<rect x=\"${a}\" y=\"${c}\" width=\"${e}\" height=\"${e}\" fill=\"${A(r)}\" stroke=\"${A(h)}\" stroke-width=\"${this.settings.lineWidth}\"${d}/>`), this.settings.emboss) {\n const g = J(this.settings.lineColor) > 0.41, u = g ? \"#000000\" : \"#ffffff\", f = g ? `${a},${c} ${a + e},${c} ${a + e},${c + e}` : `${a},${c} ${a},${c + e} ${a + e},${c + e}`;\n t.push(`<polyline points=\"${f}\" stroke=\"${u}\" stroke-width=\"${this.settings.lineWidth}\" fill=\"none\"/>`);\n }\n }\n if (o.roomChar) {\n const a = this.getSymbolColor(o.env), c = e * 0.75;\n t.push(`<text x=\"${o.x}\" y=\"${o.y}\" dy=\"0.35em\" font-size=\"${c}\" font-weight=\"bold\" font-family=\"${A(this.settings.fontFamily)}\" fill=\"${A(a)}\" text-anchor=\"middle\">${A(o.roomChar)}</text>`);\n }\n }\n }\n // --- Inner Exits (up/down/in/out triangles) ---\n renderInnerExits(t, s) {\n const e = this.settings.roomSize, i = e / 5;\n for (const o of s)\n for (const n of Vt) {\n if (!o.exits[n]) continue;\n const r = this.getSymbolColor(o.env), h = this.getSymbolColor(o.env, 0.6);\n let a;\n const c = o.doors[n];\n c !== void 0 && (a = bt(c));\n const l = a ?? r;\n switch (n) {\n case \"up\": {\n const d = L(o.x, o.y, \"south\", e / 4);\n t.push(this.svgTriangle(d.x, d.y, i, 0, h, l));\n break;\n }\n case \"down\": {\n const d = L(o.x, o.y, \"north\", e / 4);\n t.push(this.svgTriangle(d.x, d.y, i, 180, h, l));\n break;\n }\n case \"in\": {\n const d = L(o.x, o.y, \"west\", e / 4), g = L(o.x, o.y, \"east\", e / 4);\n t.push(this.svgTriangle(d.x, d.y, i, 90, h, l)), t.push(this.svgTriangle(g.x, g.y, i, -90, h, l));\n break;\n }\n case \"out\": {\n const d = L(o.x, o.y, \"west\", e / 4), g = L(o.x, o.y, \"east\", e / 4);\n t.push(this.svgTriangle(d.x, d.y, i, -90, h, l)), t.push(this.svgTriangle(g.x, g.y, i, 90, h, l));\n break;\n }\n }\n }\n }\n svgTriangle(t, s, e, i, o, n) {\n const a = i * Math.PI / 180, c = [];\n for (let l = 0; l < 3; l++) {\n const d = 2 * Math.PI * l / 3 - Math.PI / 2;\n let g = Math.cos(d) * e * 1.4, u = Math.sin(d) * e * 0.8;\n const f = g * Math.cos(a) - u * Math.sin(a), y = g * Math.sin(a) + u * Math.cos(a);\n c.push(`${t + f},${s + y}`);\n }\n return `<polygon points=\"${c.join(\" \")}\" fill=\"${A(o)}\" stroke=\"${A(n)}\" stroke-width=\"${this.settings.lineWidth}\"/>`;\n }\n // --- Overlay: Paths ---\n renderPathOverlay(t, s, e, i, o) {\n const n = mt(this.mapReader, this.settings, s, i, o), r = this.settings.lineWidth;\n for (const a of n.segments) {\n const c = a.points.map((l) => l.toString()).join(\" \");\n t.push(`<polyline points=\"${c}\" stroke=\"black\" stroke-width=\"${r * 8}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" opacity=\"0.8\"/>`), t.push(`<polyline points=\"${c}\" stroke=\"${A(e)}\" stroke-width=\"${r * 4}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" opacity=\"0.8\"/>`);\n }\n for (const a of n.customLines) {\n const c = a.points.map((l) => l.toString()).join(\" \");\n t.push(`<polyline points=\"${c}\" stroke=\"black\" stroke-width=\"${r * 8}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" opacity=\"0.8\"/>`), t.push(`<polyline points=\"${c}\" stroke=\"${A(e)}\" stroke-width=\"${r * 4}\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" opacity=\"0.8\"/>`);\n }\n const h = this.settings.roomSize / 5;\n for (const a of n.innerMarkers)\n t.push(this.svgTriangle(a.room.x, a.room.y, h, this.innerExitRotation(a.direction), e, \"black\"));\n }\n innerExitRotation(t) {\n switch (t) {\n case \"up\":\n return 0;\n case \"down\":\n return 180;\n case \"in\":\n return 90;\n case \"out\":\n return -90;\n default:\n return 0;\n }\n }\n // --- Overlay: Highlights ---\n renderHighlightOverlay(t, s, e) {\n const i = this.mapReader.getRoom(s);\n if (!i) return;\n const o = 1.5, n = this.settings.roomSize, r = \"0.05 0.05\";\n if (this.settings.roomShape === \"circle\")\n t.push(`<circle cx=\"${i.x}\" cy=\"${i.y}\" r=\"${n / 2 * o}\" stroke=\"${A(e)}\" stroke-width=\"0.1\" stroke-dasharray=\"${r}\" fill=\"none\"/>`);\n else {\n const h = n * o;\n t.push(`<rect x=\"${i.x - h / 2}\" y=\"${i.y - h / 2}\" width=\"${h}\" height=\"${h}\" stroke=\"${A(e)}\" stroke-width=\"0.1\" stroke-dasharray=\"${r}\" fill=\"none\"/>`);\n }\n }\n // --- Overlay: Position Marker ---\n renderPositionMarker(t, s) {\n const e = this.mapReader.getRoom(s);\n if (!e) return;\n const i = this.settings.playerMarker, n = this.settings.roomSize * i.sizeFactor, r = i.dashEnabled && i.dash ? ` stroke-dasharray=\"${i.dash.join(\" \")}\"` : \"\", h = i.fillAlpha > 0 ? ` fill=\"${i.fillColor}\" fill-opacity=\"${i.fillAlpha}\"` : ' fill=\"none\"';\n t.push(`<circle cx=\"${e.x}\" cy=\"${e.y}\" r=\"${n / 2}\" stroke=\"${i.strokeColor}\" stroke-width=\"${i.strokeWidth}\" stroke-opacity=\"${i.strokeAlpha}\"${r}${h}/>`);\n }\n}\nconst Zt = 0.6, j = 75, jt = 0.025, Ht = \"rgb(225, 255, 225)\", q = \"rgb(120, 72, 0)\";\nfunction J(m) {\n let t, s, e;\n const i = m.match(/(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/);\n if (i)\n t = parseInt(i[1]) / 255, s = parseInt(i[2]) / 255, e = parseInt(i[3]) / 255;\n else if (m.startsWith(\"#\") && m.length >= 7)\n t = parseInt(m.slice(1, 3), 16) / 255, s = parseInt(m.slice(3, 5), 16) / 255, e = parseInt(m.slice(5, 7), 16) / 255;\n else\n return 0.5;\n return (Math.max(t, s, e) + Math.min(t, s, e)) / 2;\n}\nclass Gt {\n constructor(t = 60) {\n this.samples = [], this.lastCullingTime = 0, this.callback = null, this.windowSize = t;\n }\n setCallback(t) {\n t !== this.callback && (this.callback = t, this.samples = []);\n }\n record(t) {\n this.callback && (this.samples.push(t), this.samples.length >= this.windowSize && this.flush());\n }\n computeFps() {\n const t = performance.now(), s = t - this.lastCullingTime;\n return this.lastCullingTime = t, s > 0 ? 1e3 / s : 0;\n }\n flush() {\n const t = this.samples.length;\n if (t === 0) return;\n const s = {\n cullingMs: 0,\n gridMs: 0,\n visibleRooms: 0,\n totalRooms: 0,\n visibleExits: 0,\n fps: 0\n };\n for (const e of this.samples)\n s.cullingMs += e.cullingMs, s.gridMs += e.gridMs, s.visibleRooms += e.visibleRooms, s.totalRooms += e.totalRooms, s.visibleExits += e.visibleExits, s.fps += e.fps;\n s.cullingMs /= t, s.gridMs /= t, s.visibleRooms = Math.round(s.visibleRooms / t), s.totalRooms = Math.round(s.totalRooms / t), s.visibleExits = Math.round(s.visibleExits / t), s.fps = Math.round(s.fps), this.callback(s), this.samples = [];\n }\n}\nfunction K(m, t) {\n const s = parseInt(m.slice(1, 3), 16), e = parseInt(m.slice(3, 5), 16), i = parseInt(m.slice(5, 7), 16);\n return `rgba(${s}, ${e}, ${i}, ${t})`;\n}\nfunction zt() {\n return {\n roomSize: Zt,\n lineWidth: jt,\n lineColor: Ht,\n backgroundColor: \"#000000\",\n instantMapMove: !1,\n highlightCurrentRoom: !0,\n cullingEnabled: !0,\n cullingMode: \"indexed\",\n cullingBounds: null,\n labelRenderMode: \"image\",\n transparentLabels: !1,\n roomShape: \"rectangle\",\n playerMarker: {\n strokeColor: \"#00e5b2\",\n strokeAlpha: 1,\n fillColor: \"#00e5b2\",\n fillAlpha: 0,\n strokeWidth: 0.1,\n sizeFactor: 1.7,\n dash: [0.05, 0.05],\n dashEnabled: !0\n },\n gridEnabled: !1,\n gridSize: 1,\n gridColor: \"rgba(200, 200, 200, 0.15)\",\n gridLineWidth: 0.03,\n perfCallback: null,\n borders: !0,\n frameMode: !1,\n emboss: !1,\n areaName: !0,\n fontFamily: \"sans-serif\",\n uniformLevelSize: !1\n };\n}\nclass fe {\n constructor(t, s, e) {\n this.highlights = /* @__PURE__ */ new Map(), this.currentZoom = 1, this.currentRoomOverlay = [], this.roomNodes = /* @__PURE__ */ new Map(), this.centerOnResize = !0, this.minZoom = 0.05, this.standaloneExitNodes = [], this.spatialBucketSize = 5, this.roomSpatialIndex = /* @__PURE__ */ new Map(), this.exitSpatialIndex = /* @__PURE__ */ new Map(), this.visibleRooms = /* @__PURE__ */ new Set(), this.visibleStandaloneExitNodes = /* @__PURE__ */ new Set(), this.bufferRoomSet = /* @__PURE__ */ new Set(), this.bufferExitSet = /* @__PURE__ */ new Set(), this.bufferRoomCandidates = /* @__PURE__ */ new Set(), this.bufferExitCandidates = /* @__PURE__ */ new Set(), this.cullingScheduled = !1, this.perfMonitor = new Gt(), this.areaExitHitZones = [], this.visibleExitDrawData = [], this.cachedGridBounds = null, this.settings = e ?? zt(), this.stage = new b.Stage({\n container: t,\n width: t.clientWidth,\n height: t.clientHeight,\n draggable: !0\n }), t.style.backgroundColor = this.settings.backgroundColor, window.addEventListener(\"resize\", () => {\n this.onResize(t);\n }), t.addEventListener(\"resize\", () => {\n this.onResize(t);\n }), this.gridLayer = new b.Layer({ listening: !1, hitGraphEnabled: !1 }), this.stage.add(this.gridLayer), this.linkLayer = new b.Layer({\n listening: !1,\n hitGraphEnabled: !1\n }), this.stage.add(this.linkLayer), this.roomLayer = new b.Layer({ hitGraphEnabled: !1 }), this.stage.add(this.roomLayer), this.positionLayer = new b.Layer({\n listening: !1,\n hitGraphEnabled: !1\n }), this.stage.add(this.positionLayer), this.overlayLayer = new b.Layer({\n listening: !1,\n hitGraphEnabled: !1\n }), this.stage.add(this.overlayLayer), this.mapReader = s, this.exitRenderer = new ft(s, this, this.settings), this.pathRenderer = new Bt(s, this.overlayLayer, this.settings), this.initScaling(1.1), this.stage.on(\"dragmove\", () => {\n this.scheduleRoomCulling(), this.emitPanEvent();\n }), this.stage.on(\"dragend\", () => {\n this.scheduleRoomCulling(), this.emitPanEvent();\n }), this.initRoomHitDetection();\n }\n clientToMapPoint(t, s) {\n const i = this.stage.container().getBoundingClientRect(), o = t - i.left, n = s - i.top, r = this.stage.scaleX();\n if (!r) return null;\n const h = this.stage.position();\n return {\n x: (o - h.x) / r,\n y: (n - h.y) / r\n };\n }\n findRoomAtClientPoint(t, s) {\n const e = this.clientToMapPoint(t, s);\n if (!e) return null;\n const i = this.settings.roomSize / 2, o = this.getBucketKey(\n Math.floor(e.x / this.spatialBucketSize),\n Math.floor(e.y / this.spatialBucketSize)\n ), n = this.roomSpatialIndex.get(o);\n if (!n) return null;\n for (const r of n) {\n const h = e.x - r.room.x, a = e.y - r.room.y;\n if (h >= -i && h <= i && a >= -i && a <= i)\n return r.room;\n }\n return null;\n }\n initRoomHitDetection() {\n const t = this.stage.container();\n let s = null;\n t.addEventListener(\"mousemove\", (a) => {\n const c = this.findRoomAtClientPoint(a.clientX, a.clientY);\n if (c !== s && (s = c, c)) {\n t.style.cursor = \"pointer\";\n return;\n }\n if (!s) {\n const d = this.findAreaExitAtClientPoint(a.clientX, a.clientY) !== null;\n t.style.cursor = d ? \"pointer\" : \"auto\";\n }\n }), t.addEventListener(\"mouseleave\", () => {\n s = null, t.style.cursor = \"auto\";\n });\n let e = null;\n t.addEventListener(\"mousedown\", (a) => {\n a.button === 0 && (e = { x: a.clientX, y: a.clientY });\n }), t.addEventListener(\"mouseup\", (a) => {\n if (a.button !== 0 || !e) return;\n const c = a.clientX - e.x, l = a.clientY - e.y;\n if (e = null, c * c + l * l > 25) return;\n const d = this.findRoomAtClientPoint(a.clientX, a.clientY);\n if (d) {\n this.emitRoomClickEvent(d.id, a.clientX, a.clientY);\n return;\n }\n const g = this.findAreaExitAtClientPoint(a.clientX, a.clientY);\n if (g) {\n this.emitAreaExitClickEvent(g.targetRoomId, a.clientX, a.clientY);\n return;\n }\n this.emitMapClickEvent();\n }), t.addEventListener(\"contextmenu\", (a) => {\n const c = this.findRoomAtClientPoint(a.clientX, a.clientY);\n c && (a.preventDefault(), this.emitRoomContextEvent(c.id, a.clientX, a.clientY));\n });\n let i, o, n;\n const r = () => {\n n !== void 0 && (this.stage.draggable(n), n = void 0);\n }, h = () => {\n i !== void 0 && (window.clearTimeout(i), i = void 0), o = void 0, r();\n };\n t.addEventListener(\"touchstart\", (a) => {\n if (h(), a.touches.length > 1) return;\n const c = a.touches[0];\n !c || !this.findRoomAtClientPoint(c.clientX, c.clientY) || (o = { clientX: c.clientX, clientY: c.clientY }, n = this.stage.draggable(), this.stage.draggable(!1), i = window.setTimeout(() => {\n if (o) {\n const d = this.findRoomAtClientPoint(o.clientX, o.clientY);\n d && this.emitRoomContextEvent(d.id, o.clientX, o.clientY);\n }\n h();\n }, 500));\n }, { passive: !0 }), t.addEventListener(\"touchend\", () => h(), { passive: !0 }), t.addEventListener(\"touchcancel\", () => h(), { passive: !0 }), t.addEventListener(\"touchmove\", (a) => {\n if (!o) return;\n const c = a.touches[0];\n if (!c) {\n h();\n return;\n }\n const l = c.clientX - o.clientX, d = c.clientY - o.clientY;\n if (l * l + d * d > 100) {\n const g = n;\n h(), g && this.stage.startDrag();\n }\n }, { passive: !0 });\n }\n onResize(t) {\n this.stage.width(t.clientWidth), this.stage.height(t.clientHeight), this.centerOnResize && this.currentRoomId && this.centerOnRoom(this.mapReader.getRoom(this.currentRoomId), !1), this.stage.batchDraw(), this.scheduleRoomCulling();\n }\n initScaling(t) {\n let s, e = !1, i = !1;\n this.stage.on(\"touchstart\", (o) => {\n const n = o.evt.touches;\n n && n.length > 1 ? (i = !0, this.stage.isDragging() && (this.stage.stopDrag(), e = !0), this.stage.draggable(!1)) : (i = !1, this.stage.draggable(!0));\n }), this.stage.on(\"touchend touchcancel\", (o) => {\n s = void 0;\n const n = o.evt.touches;\n (!n || n.length <= 1) && (i = !1, this.stage.draggable(!0));\n }), this.stage.on(\"wheel\", (o) => {\n o.evt.preventDefault();\n const n = this.stage.scaleX(), r = this.stage.getPointerPosition();\n if (!r)\n return;\n const h = {\n x: (r.x - this.stage.x()) / n,\n y: (r.y - this.stage.y()) / n\n };\n let a = o.evt.deltaY > 0 ? -1 : 1;\n o.evt.ctrlKey && (a = -a);\n const c = a > 0 ? this.currentZoom * t : this.currentZoom / t;\n if (this.setZoom(c)) {\n const d = this.stage.scaleX(), g = {\n x: r.x - h.x * d,\n y: r.y - h.y * d\n };\n this.stage.position(g), this.scheduleRoomCulling(), this.emitZoomChangeEvent();\n }\n }), this.stage.on(\"touchmove\", (o) => {\n const n = o.evt.touches, r = n?.[0], h = n?.[1];\n if (h || i && (i = !1, this.stage.draggable(!0)), r && !h && e && !this.stage.isDragging() && (this.stage.startDrag(), e = !1), !r || !h) {\n s = void 0;\n return;\n }\n o.evt.preventDefault(), this.stage.isDragging() && (this.stage.stopDrag(), e = !0), i || (i = !0, this.stage.draggable(!1));\n const a = this.stage.container().getBoundingClientRect(), c = {\n x: r.clientX - a.left,\n y: r.clientY - a.top\n }, l = {\n x: h.clientX - a.left,\n y: h.clientY - a.top\n }, d = Math.hypot(c.x - l.x, c.y - l.y);\n if (s === void 0) {\n s = d;\n return;\n }\n if (s === 0 || d === 0) {\n s = d;\n return;\n }\n const g = this.stage.scaleX(), u = this.stage.x(), f = this.stage.y(), y = {\n x: this.stage.width() / 2,\n y: this.stage.height() / 2\n }, p = {\n x: (y.x - u) / g,\n y: (y.y - f) / g\n }, x = this.currentZoom * (d / s);\n if (this.setZoom(x)) {\n const D = this.stage.scaleX(), $ = {\n x: y.x - p.x * D,\n y: y.y - p.y * D\n };\n this.stage.position($), this.stage.batchDraw(), this.scheduleRoomCulling(), this.emitZoomChangeEvent();\n }\n s = d;\n });\n }\n drawArea(t, s) {\n const e = this.mapReader.getArea(t);\n if (!e)\n return;\n const i = e.getPlane(s);\n i && (this.currentArea = t, this.currentAreaInstance = e, this.currentZIndex = s, this.currentAreaVersion = e.getVersion(), this.clearCurrentRoomOverlay(), this.positionRender && (this.positionRender.destroy(), this.positionRender = void 0), this.positionLayer.destroyChildren(), this.gridLayer.destroyChildren(), this.invalidateGridCache(), this.roomLayer.destroyChildren(), this.linkLayer.destroyChildren(), this.roomNodes.clear(), this.standaloneExitNodes = [], this.areaExitHitZones = [], this.standaloneExitBoundsRoomSize = void 0, this.roomSpatialIndex.clear(), this.exitSpatialIndex.clear(), this.visibleRooms.clear(), this.visibleStandaloneExitNodes.clear(), this.visibleExitDrawData.length = 0, this.exitBatchShape = void 0, this.spatialBucketSize = this.computeSpatialBucketSize(), this.stage.scale({ x: j * this.currentZoom, y: j * this.currentZoom }), this.renderGrid(), this.renderLabels(i.getLabels()), this.renderExits(e.getLinkExits(s)), this.renderRooms(i.getRooms() ?? []), this.renderAreaName(e, i), this.refreshHighlights(), this.updateRoomCulling(), this.stage.batchDraw());\n }\n /**\n * Export the currently displayed area as an SVG string.\n * @param options - Optional room focus and padding\n * @returns SVG string, or undefined if no area is displayed\n */\n exportSvg(t) {\n return this.currentArea === void 0 || this.currentZIndex === void 0 ? void 0 : new Lt(this.mapReader, this.settings).export(this.currentArea, this.currentZIndex, t);\n }\n /**\n * Export the currently displayed canvas as a PNG data URL.\n * @param options - pixelRatio for resolution (default 1), mimeType override\n * @returns data URL string, or undefined if no area is displayed\n */\n exportPng(t) {\n if (this.currentArea === void 0 || this.currentZIndex === void 0) return;\n const s = t?.pixelRatio ?? 1, e = this.stage.toCanvas({ pixelRatio: s }), i = document.createElement(\"canvas\");\n i.width = e.width, i.height = e.height;\n const o = i.getContext(\"2d\");\n return o.fillStyle = this.settings.backgroundColor, o.fillRect(0, 0, i.width, i.height), o.drawImage(e, 0, 0), i.toDataURL(\"image/png\");\n }\n /**\n * Export the currently displayed canvas as a PNG Blob.\n * @param options - pixelRatio for resolution (default 1)\n * @returns Promise resolving to a Blob, or undefined if no area is displayed\n */\n exportPngBlob(t) {\n if (this.currentArea === void 0 || this.currentZIndex === void 0) return;\n const s = t?.pixelRatio ?? 1, e = this.stage.toCanvas({ pixelRatio: s }), i = document.createElement(\"canvas\");\n i.width = e.width, i.height = e.height;\n const o = i.getContext(\"2d\");\n return o.fillStyle = this.settings.backgroundColor, o.fillRect(0, 0, i.width, i.height), o.drawImage(e, 0, 0), new Promise((n) => {\n i.toBlob((r) => {\n r && n(r);\n }, \"image/png\");\n });\n }\n computeSpatialBucketSize() {\n return Math.max(this.settings.roomSize * 10, 5);\n }\n getBucketKey(t, s) {\n return t * 1000003 + s;\n }\n forEachBucket(t, s, e, i, o) {\n const n = this.spatialBucketSize, r = Math.min(t, e), h = Math.max(t, e), a = Math.min(s, i), c = Math.max(s, i), l = Math.floor(r / n), d = Math.floor(h / n), g = Math.floor(a / n), u = Math.floor(c / n);\n for (let f = l; f <= d; f++)\n for (let y = g; y <= u; y++)\n o(this.getBucketKey(f, y));\n }\n addRoomToSpatialIndex(t) {\n const s = this.settings.roomSize / 2, e = t.room.x - s, i = t.room.x + s, o = t.room.y - s, n = t.room.y + s;\n this.forEachBucket(e, o, i, n, (r) => {\n let h = this.roomSpatialIndex.get(r);\n h || (h = /* @__PURE__ */ new Set(), this.roomSpatialIndex.set(r, h)), h.add(t);\n });\n }\n addStandaloneExitToSpatialIndex(t) {\n const { bounds: s } = t, e = s.x, i = s.x + s.width, o = s.y, n = s.y + s.height;\n this.forEachBucket(e, o, i, n, (r) => {\n let h = this.exitSpatialIndex.get(r);\n h || (h = /* @__PURE__ */ new Set(), this.exitSpatialIndex.set(r, h)), h.add(t);\n });\n }\n collectRoomCandidates(t, s, e, i) {\n const o = this.bufferRoomCandidates;\n return o.clear(), this.forEachBucket(t, s, e, i, (n) => {\n this.roomSpatialIndex.get(n)?.forEach((h) => o.add(h));\n }), o;\n }\n collectStandaloneExitCandidates(t, s, e, i) {\n const o = this.bufferExitCandidates;\n return o.clear(), this.forEachBucket(t, s, e, i, (n) => {\n this.exitSpatialIndex.get(n)?.forEach((h) => o.add(h));\n }), o;\n }\n refreshStandaloneExitBoundsIfNeeded() {\n this.standaloneExitBoundsRoomSize !== this.settings.roomSize && (this.exitSpatialIndex.clear(), this.standaloneExitNodes.forEach((t) => {\n this.addStandaloneExitToSpatialIndex(t);\n }), this.standaloneExitBoundsRoomSize = this.settings.roomSize);\n }\n emitRoomContextEvent(t, s, e) {\n const i = this.stage.container(), o = i.getBoundingClientRect(), n = {\n roomId: t,\n position: {\n x: s - o.left,\n y: e - o.top\n }\n }, r = new CustomEvent(\"roomcontextmenu\", { detail: n });\n i.dispatchEvent(r);\n }\n emitRoomClickEvent(t, s, e) {\n const i = this.stage.container(), o = i.getBoundingClientRect(), n = {\n roomId: t,\n position: {\n x: s - o.left,\n y: e - o.top\n }\n }, r = new CustomEvent(\"roomclick\", { detail: n });\n i.dispatchEvent(r);\n }\n findAreaExitAtClientPoint(t, s) {\n const e = this.clientToMapPoint(t, s);\n if (!e) return null;\n for (const i of this.areaExitHitZones) {\n const o = i.bounds, n = this.settings.roomSize * 0.5;\n if (e.x >= o.x - n && e.x <= o.x + o.width + n && e.y >= o.y - n && e.y <= o.y + o.height + n)\n return i;\n }\n return null;\n }\n emitAreaExitClickEvent(t, s, e) {\n const i = this.stage.container(), o = i.getBoundingClientRect(), n = {\n targetRoomId: t,\n position: {\n x: s - o.left,\n y: e - o.top\n }\n }, r = new CustomEvent(\"areaexitclick\", { detail: n });\n i.dispatchEvent(r);\n }\n emitZoomChangeEvent() {\n const t = new CustomEvent(\"zoom\", {\n detail: { zoom: this.currentZoom }\n });\n this.stage.container().dispatchEvent(t);\n }\n emitPanEvent() {\n const t = new CustomEvent(\"pan\", {\n detail: this.getViewportBounds()\n });\n this.stage.container().dispatchEvent(t);\n }\n emitMapClickEvent() {\n const t = new CustomEvent(\"mapclick\");\n this.stage.container().dispatchEvent(t);\n }\n setZoom(t) {\n const s = Math.max(this.minZoom, Math.min(5, t));\n return this.currentZoom === s ? !1 : (this.currentZoom = s, this.stage.scale({ x: j * this.currentZoom, y: j * this.currentZoom }), this.scheduleRoomCulling(), this.emitPanEvent(), !0);\n }\n /**\n * Zooms relative to the center of the viewport.\n * Use this for UI controls (buttons, menus) where there's no mouse position.\n */\n zoomToCenter(t) {\n const s = Math.max(this.minZoom, Math.min(5, t));\n if (this.currentZoom === s)\n return !1;\n const e = this.stage.scaleX(), i = this.stage.width(), o = this.stage.height(), n = i / 2, r = o / 2, h = {\n x: (n - this.stage.x()) / e,\n y: (r - this.stage.y()) / e\n };\n this.currentZoom = s;\n const a = j * s;\n this.stage.scale({ x: a, y: a });\n const c = {\n x: n - h.x * a,\n y: r - h.y * a\n };\n return this.stage.position(c), this.stage.batchDraw(), this.scheduleRoomCulling(), !0;\n }\n getZoom() {\n return this.currentZoom;\n }\n /**\n * Returns the current viewport bounds in map coordinates.\n */\n getViewportBounds() {\n const t = this.stage.scaleX(), s = this.stage.position();\n return {\n minX: (0 - s.x) / t,\n maxX: (this.stage.width() - s.x) / t,\n minY: (0 - s.y) / t,\n maxY: (this.stage.height() - s.y) / t\n };\n }\n /**\n * Returns the bounds of the current area in map coordinates.\n * Accounts for area name overhead if enabled.\n */\n getAreaBounds() {\n if (!this.currentAreaInstance || this.currentZIndex === void 0) return null;\n const t = this.currentAreaInstance.getPlane(this.currentZIndex);\n if (!t) return null;\n const s = this.getEffectiveBounds(this.currentAreaInstance, t), e = this.settings.areaName && this.currentAreaInstance.getAreaName();\n return {\n minX: e ? s.minX - 4 : s.minX,\n maxX: s.maxX,\n minY: e ? s.minY - 7 : s.minY,\n maxY: s.maxY\n };\n }\n /**\n * Fit the entire current area into the viewport.\n * Calculates the zoom level needed to show all rooms (and labels) and centers the view.\n * Call after drawArea() to show the whole area without needing a position room.\n */\n fitArea() {\n if (this.currentArea === void 0 || this.currentZIndex === void 0 || !this.currentAreaInstance) return;\n const t = this.currentAreaInstance.getPlane(this.currentZIndex);\n if (!t) return;\n const s = this.getEffectiveBounds(this.currentAreaInstance, t), e = this.settings.areaName && this.currentAreaInstance.getAreaName(), i = e ? s.minY - 7 : s.minY, o = e ? s.minX - 4 : s.minX, n = s.maxX - o, r = s.maxY - i;\n if (n <= 0 || r <= 0) return;\n const h = this.stage.width(), a = this.stage.height(), c = 2, l = h / ((n + c * 2) * j), d = a / ((r + c * 2) * j), g = Math.min(l, d);\n this.currentZoom = Math.max(0.05, Math.min(5, g)), this.minZoom = this.currentZoom;\n const u = j * this.currentZoom;\n this.stage.scale({ x: u, y: u });\n const f = (o + s.maxX) / 2, y = (i + s.maxY) / 2;\n this.stage.position({\n x: h / 2 - f * u,\n y: a / 2 - y * u\n }), this.stage.batchDraw(), this.scheduleRoomCulling();\n }\n setCullingMode(t) {\n this.settings.cullingMode = t, this.settings.cullingEnabled = t !== \"none\", this.scheduleRoomCulling();\n }\n getCullingMode() {\n return this.settings.cullingMode;\n }\n getCurrentArea() {\n return this.currentArea ? this.mapReader.getArea(this.currentArea) : void 0;\n }\n /**\n * Refreshes the current room overlay to reflect any changes to settings.\n * Call this after modifying Settings properties (like roomSize, roomShape, lineWidth, etc.)\n * to update the visual appearance of the current room and its exits without changing position.\n */\n refreshCurrentRoomOverlay() {\n if (this.currentRoomId !== void 0) {\n const t = this.mapReader.getRoom(this.currentRoomId);\n t && this.updateCurrentRoomOverlay(t);\n }\n }\n /**\n * Completely refreshes the map to reflect changes to settings.\n * This re-renders the entire current area and updates the player position marker.\n * Call this after changing Settings properties like roomSize, roomShape, lineWidth, etc.\n *\n * Note: This is more expensive than refreshCurrentRoomOverlay() but ensures everything is updated.\n */\n updateBackground() {\n this.stage.container().style.backgroundColor = this.settings.backgroundColor;\n }\n refresh() {\n this.updateBackground(), this.currentArea !== void 0 && this.currentZIndex !== void 0 && (this.drawArea(this.currentArea, this.currentZIndex), this.currentRoomId !== void 0 && this.setPosition(this.currentRoomId));\n }\n /**\n * Updates the player position marker without centering the view.\n * Use this when you want to show where the player is without moving the viewport.\n */\n updatePositionMarker(t) {\n const s = this.mapReader.getRoom(t);\n if (!s) return;\n if (s.area !== this.currentArea || s.z !== this.currentZIndex) {\n this.positionRender && (this.positionRender.hide(), this.positionLayer.batchDraw());\n return;\n }\n this.currentRoomId = t, this.updateCurrentRoomOverlay(s);\n const e = K(this.settings.playerMarker.strokeColor, this.settings.playerMarker.strokeAlpha), i = K(this.settings.playerMarker.fillColor, this.settings.playerMarker.fillAlpha), o = this.settings.roomSize / 2 * this.settings.playerMarker.sizeFactor;\n this.positionRender ? (this.positionRender.position({ x: s.x, y: s.y }), this.positionRender.radius(o), this.positionRender.stroke(e), this.positionRender.fill(i), this.positionRender.strokeWidth(this.settings.playerMarker.strokeWidth), this.positionRender.dash(this.settings.playerMarker.dash ?? []), this.positionRender.dashEnabled(this.settings.playerMarker.dashEnabled), this.positionRender.show()) : (this.positionRender = new b.Circle({\n x: s.x,\n y: s.y,\n radius: o,\n stroke: e,\n fill: i,\n strokeWidth: this.settings.playerMarker.strokeWidth,\n dash: this.settings.playerMarker.dash,\n dashEnabled: this.settings.playerMarker.dashEnabled\n }), this.positionLayer.add(this.positionRender)), this.positionLayer.batchDraw();\n }\n setPosition(t, s = !0) {\n const e = this.mapReader.getRoom(t);\n if (!e) return;\n const i = this.mapReader.getArea(e.area), o = i?.getVersion();\n let n = this.currentArea !== e.area || this.currentZIndex !== e.z;\n (this.currentArea !== e.area || this.currentZIndex !== e.z || o !== void 0 && this.currentAreaVersion !== o || i !== void 0 && this.currentAreaInstance !== i) && this.drawArea(e.area, e.z), s ? this.centerOnRoom(e, n) : this.currentRoomId = t, this.updateCurrentRoomOverlay(e);\n const r = K(this.settings.playerMarker.strokeColor, this.settings.playerMarker.strokeAlpha), h = K(this.settings.playerMarker.fillColor, this.settings.playerMarker.fillAlpha), a = this.settings.roomSize / 2 * this.settings.playerMarker.sizeFactor;\n this.positionRender ? (this.positionRender.radius(a), this.positionRender.stroke(r), this.positionRender.fill(h), this.positionRender.strokeWidth(this.settings.playerMarker.strokeWidth), this.positionRender.dash(this.settings.playerMarker.dash ?? []), this.positionRender.dashEnabled(this.settings.playerMarker.dashEnabled)) : (this.positionRender = new b.Circle({\n x: e.x,\n y: e.y,\n radius: a,\n stroke: r,\n fill: h,\n strokeWidth: this.settings.playerMarker.strokeWidth,\n dash: this.settings.playerMarker.dash,\n dashEnabled: this.settings.playerMarker.dashEnabled\n }), this.positionLayer.add(this.positionRender));\n }\n clearPosition() {\n this.currentRoomId = void 0, this.positionRender && (this.positionRender.destroy(), this.positionRender = void 0), this.positionLayer.batchDraw(), this.currentRoomOverlay.forEach((t) => t.destroy()), this.currentRoomOverlay = [], this.overlayLayer.batchDraw();\n }\n centerOn(t, s) {\n const e = this.mapReader.getRoom(t);\n if (!e) return;\n const i = this.mapReader.getArea(e.area), o = i?.getVersion(), n = this.currentArea !== e.area || this.currentZIndex !== e.z;\n (n || o !== void 0 && this.currentAreaVersion !== o || i !== void 0 && this.currentAreaInstance !== i) && this.drawArea(e.area, e.z), this.centerOnRoomView(e, s ?? n);\n }\n renderPath(t, s) {\n return this.pathRenderer.renderPath(t, this.currentArea, this.currentZIndex, s);\n }\n clearPaths() {\n this.pathRenderer.clearPaths();\n }\n renderHighlight(t, s) {\n const e = this.mapReader.getRoom(t);\n if (!e)\n return;\n const i = this.highlights.get(t);\n i?.shape && (i.shape.destroy(), delete i.shape);\n const o = { color: s, area: e.area, z: e.z };\n if (this.highlights.set(t, o), e.area === this.currentArea && e.z === this.currentZIndex) {\n const n = this.createHighlightShape(e, s);\n return this.overlayLayer.add(n), o.shape = n, this.overlayLayer.batchDraw(), n;\n }\n return o.shape;\n }\n removeHighlight(t) {\n const s = this.highlights.get(t);\n s && (s.shape?.destroy(), this.highlights.delete(t), this.overlayLayer.batchDraw());\n }\n hasHighlight(t) {\n return this.highlights.has(t);\n }\n clearHighlights() {\n this.highlights.forEach(({ shape: t }) => t?.destroy()), this.highlights.clear(), this.overlayLayer.batchDraw();\n }\n refreshHighlights() {\n this.highlights.forEach((t, s) => {\n if (t.shape?.destroy(), delete t.shape, t.area !== this.currentArea || t.z !== this.currentZIndex)\n return;\n const e = this.mapReader.getRoom(s);\n if (!e)\n return;\n const i = this.createHighlightShape(e, t.color);\n this.overlayLayer.add(i), t.shape = i;\n }), this.overlayLayer.batchDraw();\n }\n createHighlightShape(t, s) {\n return this.settings.roomShape === \"circle\" ? new b.Circle({\n x: t.x,\n y: t.y,\n radius: this.settings.roomSize / 2 * 1.5,\n stroke: s,\n strokeWidth: 0.1,\n dash: [0.05, 0.05],\n dashEnabled: !0,\n listening: !1\n }) : new b.Rect({\n x: t.x - this.settings.roomSize / 2 * 1.5,\n y: t.y - this.settings.roomSize / 2 * 1.5,\n width: this.settings.roomSize * 1.5,\n height: this.settings.roomSize * 1.5,\n stroke: s,\n strokeWidth: 0.1,\n dash: [0.05, 0.05],\n dashEnabled: !0,\n cornerRadius: this.settings.roomShape === \"roundedRectangle\" ? this.settings.roomSize * 1.5 * 0.2 : 0,\n listening: !1\n });\n }\n centerOnRoom(t, s = !1) {\n this.currentRoomId = t.id;\n const e = { x: t.x, y: t.y };\n this.positionRender?.position(t);\n const o = this.stage.getAbsoluteTransform().point(e), n = {\n x: this.stage.width() / 2,\n y: this.stage.height() / 2\n }, r = n.x - o.x, h = n.y - o.y;\n this.currentTransition && (this.currentTransition.pause(), this.currentTransition.destroy(), delete this.currentTransition), s || this.settings.instantMapMove ? (this.stage.position({\n x: this.stage.x() + r,\n y: this.stage.y() + h\n }), this.scheduleRoomCulling()) : (this.currentTransition = new b.Tween({\n node: this.stage,\n x: this.stage.x() + r,\n y: this.stage.y() + h,\n duration: 0.2,\n easing: b.Easings.EaseInOut,\n onUpdate: () => this.scheduleRoomCulling(),\n onFinish: () => this.scheduleRoomCulling()\n }), this.currentTransition.play());\n }\n centerOnRoomView(t, s = !1) {\n const e = { x: t.x, y: t.y }, o = this.stage.getAbsoluteTransform().point(e), n = {\n x: this.stage.width() / 2,\n y: this.stage.height() / 2\n }, r = n.x - o.x, h = n.y - o.y;\n this.currentTransition && (this.currentTransition.pause(), this.currentTransition.destroy(), delete this.currentTransition), s || this.settings.instantMapMove ? (this.stage.position({\n x: this.stage.x() + r,\n y: this.stage.y() + h\n }), this.scheduleRoomCulling(), this.emitPanEvent()) : (this.currentTransition = new b.Tween({\n node: this.stage,\n x: this.stage.x() + r,\n y: this.stage.y() + h,\n duration: 0.2,\n easing: b.Easings.EaseInOut,\n onUpdate: () => this.scheduleRoomCulling(),\n onFinish: () => {\n this.scheduleRoomCulling(), this.emitPanEvent();\n }\n }), this.currentTransition.play());\n }\n getEffectiveBounds(t, s) {\n return this.settings.uniformLevelSize ? t.getFullBounds() : s.getBounds();\n }\n renderAreaName(t, s) {\n if (!this.settings.areaName) return;\n const e = t.getAreaName();\n if (!e) return;\n const i = this.getEffectiveBounds(t, s);\n this.roomLayer.add(new b.Text({\n x: i.minX - 3.5,\n y: i.minY - 4.5,\n text: e,\n fontSize: 2.5,\n fontFamily: this.settings.fontFamily,\n fill: \"white\",\n listening: !1,\n perfectDrawEnabled: !1\n }));\n }\n renderRooms(t) {\n t.forEach((s) => {\n const e = new b.Group({\n x: s.x - this.settings.roomSize / 2,\n y: s.y - this.settings.roomSize / 2,\n listening: !1\n }), i = this.mapReader.getColorValue(s.env), o = this.settings.frameMode ? this.settings.backgroundColor : i, n = this.settings.frameMode ? i : this.settings.lineColor, r = this.settings.borders ? this.settings.lineWidth : 0, h = this.settings.roomShape === \"circle\" ? new b.Circle({\n x: this.settings.roomSize / 2,\n y: this.settings.roomSize / 2,\n radius: this.settings.roomSize / 2,\n fill: o,\n strokeWidth: r,\n stroke: n,\n perfectDrawEnabled: !1,\n listening: !1\n }) : new b.Rect({\n x: 0,\n y: 0,\n width: this.settings.roomSize,\n height: this.settings.roomSize,\n fill: o,\n strokeWidth: r,\n stroke: n,\n cornerRadius: this.settings.roomShape === \"roundedRectangle\" ? this.settings.roomSize * 0.2 : 0,\n perfectDrawEnabled: !1,\n listening: !1\n });\n if (e.add(h), this.settings.emboss && this.settings.roomShape !== \"circle\") {\n const d = this.settings.roomSize, g = J(this.settings.lineColor) > 0.41;\n e.add(new b.Line({\n points: g ? [0, 0, d, 0, d, d] : [0, 0, 0, d, d, d],\n stroke: g ? \"#000000\" : \"#ffffff\",\n strokeWidth: this.settings.lineWidth,\n perfectDrawEnabled: !1,\n listening: !1\n }));\n }\n this.renderSymbol(s, e), this.roomLayer.add(e), this.exitRenderer.renderSpecialExits(s).forEach((d) => {\n this.linkLayer.add(d);\n }), this.exitRenderer.getSpecialExitAreaTargets(s).forEach((d) => {\n this.areaExitHitZones.push(d);\n });\n const a = s.x - this.settings.roomSize / 2, c = s.y - this.settings.roomSize / 2;\n this.exitRenderer.renderStubs(s).forEach((d) => {\n const g = d.points();\n for (let u = 0; u < g.length; u += 2)\n g[u] -= a, g[u + 1] -= c;\n d.points(g), e.add(d);\n }), this.exitRenderer.renderInnerExits(s).forEach((d) => {\n d.position({ x: -a, y: -c }), e.add(d);\n });\n const l = { room: s, group: e };\n this.roomNodes.set(s.id, l), this.addRoomToSpatialIndex(l);\n });\n }\n scheduleRoomCulling() {\n this.cullingScheduled || (this.cullingScheduled = !0, window.requestAnimationFrame(() => {\n this.cullingScheduled = !1, this.updateRoomCulling();\n }));\n }\n updateRoomCulling() {\n if (this.roomNodes.size === 0 && this.standaloneExitNodes.length === 0)\n return;\n const t = this.stage.scaleX();\n if (!t)\n return;\n this.syncPerfMonitor();\n const s = this.settings.perfCallback ? performance.now() : 0, e = this.stage.position(), i = this.settings.roomSize / 2, o = this.settings.cullingBounds, n = o ? o.x : 0, r = o ? o.x + o.width : this.stage.width(), h = o ? o.y : 0, a = o ? o.y + o.height : this.stage.height(), c = Math.min(n, r), l = Math.max(n, r), d = Math.min(h, a), g = Math.max(h, a), u = (c - e.x) / t, f = (l - e.x) / t, y = (d - e.y) / t, p = (g - e.y) / t;\n let x = !1, k = !1;\n const D = this.settings.cullingEnabled ? this.settings.cullingMode ?? \"indexed\" : \"none\", $ = u - i, X = f + i, w = y - i, R = p + i;\n if (this.refreshStandaloneExitBoundsIfNeeded(), D === \"none\") {\n if (this.roomNodes.forEach((v) => {\n v.group.visible() || (v.group.visible(!0), x = !0);\n }), this.visibleExitDrawData.length !== this.standaloneExitNodes.length) {\n this.visibleExitDrawData.length = 0;\n for (const v of this.standaloneExitNodes)\n this.visibleExitDrawData.push(v.data);\n k = !0;\n }\n x && this.roomLayer.batchDraw(), k && this.linkLayer.batchDraw(), this.visibleRooms.clear(), this.roomNodes.forEach((v) => this.visibleRooms.add(v)), this.visibleStandaloneExitNodes.clear(), this.standaloneExitNodes.forEach((v) => this.visibleStandaloneExitNodes.add(v));\n return;\n }\n if (D === \"basic\") {\n const v = this.bufferRoomSet;\n v.clear(), this.roomNodes.forEach((P) => {\n const O = P.room.x - i, T = P.room.x + i, F = P.room.y - i, V = P.room.y + i, B = T >= u && O <= f && V >= y && F <= p;\n P.group.visible() !== B && (P.group.visible(B), x = !0), B && v.add(P);\n });\n const z = this.bufferExitSet;\n z.clear();\n let Y = !1;\n this.standaloneExitNodes.forEach((P) => {\n const { bounds: O } = P, T = O.x, F = O.x + O.width, V = O.y, B = O.y + O.height;\n F >= u && T <= f && B >= y && V <= p && (z.add(P), this.visibleStandaloneExitNodes.has(P) || (Y = !0));\n }), !Y && z.size !== this.visibleStandaloneExitNodes.size && (Y = !0), this.bufferRoomSet = this.visibleRooms, this.visibleRooms = v, this.bufferExitSet = this.visibleStandaloneExitNodes, this.visibleStandaloneExitNodes = z, Y && (this.visibleExitDrawData.length = 0, this.visibleStandaloneExitNodes.forEach((P) => this.visibleExitDrawData.push(P.data)), k = !0), x && this.roomLayer.batchDraw(), k && this.linkLayer.batchDraw();\n return;\n }\n const E = this.collectRoomCandidates($, w, X, R), C = this.bufferRoomSet;\n C.clear(), E.forEach((v) => {\n const z = v.room.x - i, Y = v.room.x + i, P = v.room.y - i, O = v.room.y + i, T = Y >= u && z <= f && O >= y && P <= p;\n v.group.visible() !== T && (v.group.visible(T), x = !0), T && C.add(v);\n }), this.visibleRooms.forEach((v) => {\n E.has(v) || v.group.visible() && (v.group.visible(!1), x = !0);\n }), this.bufferRoomSet = this.visibleRooms, this.visibleRooms = C;\n const S = this.collectStandaloneExitCandidates($, w, X, R), M = this.bufferExitSet;\n M.clear();\n let I = !1;\n S.forEach((v) => {\n const { bounds: z } = v, Y = z.x, P = z.x + z.width, O = z.y, T = z.y + z.height;\n P >= u && Y <= f && T >= y && O <= p && (M.add(v), this.visibleStandaloneExitNodes.has(v) || (I = !0));\n }), !I && M.size !== this.visibleStandaloneExitNodes.size && (I = !0), this.bufferExitSet = this.visibleStandaloneExitNodes, this.visibleStandaloneExitNodes = M, I && (this.visibleExitDrawData.length = 0, this.visibleStandaloneExitNodes.forEach((v) => this.visibleExitDrawData.push(v.data)), k = !0), x && this.roomLayer.batchDraw(), k && this.linkLayer.batchDraw();\n const W = this.settings.perfCallback ? performance.now() : 0;\n if (this.renderGrid(), this.settings.perfCallback) {\n const v = performance.now() - W, z = performance.now() - s;\n this.perfMonitor.record({\n cullingMs: z,\n gridMs: v,\n visibleRooms: this.visibleRooms.size,\n totalRooms: this.roomNodes.size,\n visibleExits: this.visibleStandaloneExitNodes.size,\n fps: this.perfMonitor.computeFps()\n });\n }\n }\n syncPerfMonitor() {\n this.perfMonitor.setCallback(this.settings.perfCallback);\n }\n invalidateGridCache() {\n this.cachedGridBounds = null;\n }\n renderGrid() {\n if (!this.settings.gridEnabled) {\n this.cachedGridBounds !== null && (this.gridLayer.destroyChildren(), this.gridLayer.batchDraw(), this.cachedGridBounds = null);\n return;\n }\n const t = this.stage.scaleX();\n if (!t)\n return;\n const s = this.stage.position(), e = this.stage.width(), i = this.stage.height(), o = (0 - s.x) / t, n = (e - s.x) / t, r = (0 - s.y) / t, h = (i - s.y) / t, a = this.settings.gridSize * 2, c = Math.floor((Math.min(o, n) - a) / this.settings.gridSize) * this.settings.gridSize, l = Math.ceil((Math.max(o, n) + a) / this.settings.gridSize) * this.settings.gridSize, d = Math.floor((Math.min(r, h) - a) / this.settings.gridSize) * this.settings.gridSize, g = Math.ceil((Math.max(r, h) + a) / this.settings.gridSize) * this.settings.gridSize, u = this.cachedGridBounds;\n if (!(u && u.left === c && u.right === l && u.top === d && u.bottom === g)) {\n this.gridLayer.destroyChildren();\n for (let f = c; f <= l; f += this.settings.gridSize)\n this.gridLayer.add(new b.Line({\n points: [f, d, f, g],\n stroke: this.settings.gridColor,\n strokeWidth: this.settings.gridLineWidth,\n listening: !1,\n perfectDrawEnabled: !1\n }));\n for (let f = d; f <= g; f += this.settings.gridSize)\n this.gridLayer.add(new b.Line({\n points: [c, f, l, f],\n stroke: this.settings.gridColor,\n strokeWidth: this.settings.gridLineWidth,\n listening: !1,\n perfectDrawEnabled: !1\n }));\n this.cachedGridBounds = { left: c, right: l, top: d, bottom: g }, this.gridLayer.batchDraw();\n }\n }\n clearCurrentRoomOverlay() {\n this.currentRoomOverlay.forEach((t) => t.destroy()), this.currentRoomOverlay = [], this.positionLayer.batchDraw();\n }\n updateCurrentRoomOverlay(t) {\n if (this.clearCurrentRoomOverlay(), t.area !== this.currentArea || t.z !== this.currentZIndex) {\n this.positionLayer.batchDraw();\n return;\n }\n const s = /* @__PURE__ */ new Map();\n s.set(t.id, t);\n const e = [], i = this.currentAreaInstance instanceof gt ? this.currentAreaInstance : void 0;\n this.currentAreaInstance && this.currentZIndex !== void 0 && this.currentAreaInstance.getLinkExits(this.currentZIndex).filter((h) => h.a === t.id || h.b === t.id).forEach((h) => {\n const a = this.settings.highlightCurrentRoom ? this.exitRenderer.renderWithColor(h, q, this.currentZIndex) : this.exitRenderer.render(h, this.currentZIndex);\n a && e.push(a);\n });\n const o = this.settings.highlightCurrentRoom ? q : void 0;\n this.exitRenderer.renderSpecialExits(t, o).forEach((r) => {\n e.push(r);\n }), (this.settings.highlightCurrentRoom ? this.exitRenderer.renderStubs(t, q) : this.exitRenderer.renderStubs(t)).forEach((r) => {\n e.push(r);\n }), [...Object.values(t.exits), ...Object.values(t.specialExits)].forEach((r) => {\n const h = this.mapReader.getRoom(r), a = !i || i.hasVisitedRoom(r);\n h && h.area === this.currentArea && h.z === this.currentZIndex && a && s.set(r, h);\n }), e.forEach((r) => {\n this.positionLayer.add(r), this.currentRoomOverlay.push(r);\n }), s.forEach((r, h) => {\n const a = h === t.id, c = this.createOverlayRoomGroup(\n r,\n {\n stroke: a && this.settings.highlightCurrentRoom ? q : this.settings.lineColor\n }\n );\n this.positionLayer.add(c), this.currentRoomOverlay.push(c), this.exitRenderer.renderInnerExits(r).forEach((l) => {\n this.positionLayer.add(l), this.currentRoomOverlay.push(l);\n });\n }), this.positionRender && this.positionRender.moveToTop(), this.positionLayer.batchDraw();\n }\n createOverlayRoomGroup(t, s) {\n const e = new b.Group({\n x: t.x - this.settings.roomSize / 2,\n y: t.y - this.settings.roomSize / 2,\n listening: !1\n }), i = this.mapReader.getColorValue(t.env), o = this.settings.frameMode ? this.settings.backgroundColor : i, n = this.settings.frameMode ? i : s.stroke, r = this.settings.borders ? this.settings.lineWidth : 0, h = this.settings.roomShape === \"circle\" ? new b.Circle({\n x: this.settings.roomSize / 2,\n y: this.settings.roomSize / 2,\n radius: this.settings.roomSize / 2,\n fill: o,\n stroke: n,\n strokeWidth: r\n }) : new b.Rect({\n x: 0,\n y: 0,\n width: this.settings.roomSize,\n height: this.settings.roomSize,\n fill: o,\n stroke: n,\n strokeWidth: r,\n cornerRadius: this.settings.roomShape === \"roundedRectangle\" ? this.settings.roomSize * 0.2 : 0\n });\n if (e.add(h), this.settings.emboss && this.settings.roomShape !== \"circle\") {\n const a = this.settings.roomSize, c = J(this.settings.lineColor) > 0.41;\n e.add(new b.Line({\n points: c ? [0, 0, a, 0, a, a] : [0, 0, 0, a, a, a],\n stroke: c ? \"#000000\" : \"#ffffff\",\n strokeWidth: this.settings.lineWidth,\n perfectDrawEnabled: !1,\n listening: !1\n }));\n }\n return this.renderSymbol(t, e), e;\n }\n getSymbolColor(t, s) {\n return this.settings.frameMode ? this.mapReader.getColorValue(t) : this.mapReader.getSymbolColor(t, s);\n }\n renderSymbol(t, s) {\n if (t.roomChar !== void 0) {\n const e = this.settings.roomSize * 0.75, i = new b.Text({\n x: 0,\n y: 0,\n text: t.roomChar,\n fontSize: e,\n fontStyle: \"bold\",\n fill: this.getSymbolColor(t.env),\n align: \"center\",\n verticalAlign: \"middle\",\n width: this.settings.roomSize,\n height: this.settings.roomSize,\n perfectDrawEnabled: !1,\n listening: !1\n });\n s.add(i);\n }\n }\n renderExits(t) {\n t.forEach((s) => {\n const e = this.exitRenderer.renderData(s, this.currentZIndex);\n if (!e)\n return;\n const i = { data: e, bounds: e.bounds, targetRoomId: e.targetRoomId };\n this.standaloneExitNodes.push(i), this.addStandaloneExitToSpatialIndex(i), e.targetRoomId !== void 0 && this.areaExitHitZones.push({ bounds: e.bounds, targetRoomId: e.targetRoomId });\n }), this.standaloneExitBoundsRoomSize = this.settings.roomSize, this.exitBatchShape = new b.Shape({\n listening: !1,\n perfectDrawEnabled: !1,\n sceneFunc: (s) => {\n const e = s._context;\n for (const i of this.visibleExitDrawData)\n this.drawExitData(e, i);\n }\n }), this.linkLayer.add(this.exitBatchShape);\n }\n drawExitData(t, s) {\n for (const e of s.lines) {\n t.beginPath(), t.moveTo(e.points[0], e.points[1]);\n for (let i = 2; i < e.points.length; i += 2)\n t.lineTo(e.points[i], e.points[i + 1]);\n t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, e.dash ? t.setLineDash(e.dash) : t.setLineDash([]), t.stroke();\n }\n for (const e of s.arrows) {\n t.beginPath(), t.moveTo(e.points[0], e.points[1]);\n for (let d = 2; d < e.points.length; d += 2)\n t.lineTo(e.points[d], e.points[d + 1]);\n t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, e.dash ? t.setLineDash(e.dash) : t.setLineDash([]), t.stroke();\n const i = e.points.length - 2, o = e.points[i], n = e.points[i + 1], r = e.points[i - 2], h = e.points[i - 1], a = Math.atan2(n - h, o - r), c = e.pointerLength, l = e.pointerWidth / 2;\n t.beginPath(), t.setLineDash([]), t.moveTo(o, n), t.lineTo(o - c * Math.cos(a - Math.atan2(l, c)), n - c * Math.sin(a - Math.atan2(l, c))), t.lineTo(o - c * Math.cos(a + Math.atan2(l, c)), n - c * Math.sin(a + Math.atan2(l, c))), t.closePath(), t.fillStyle = e.fill, t.fill(), t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, t.stroke();\n }\n for (const e of s.doors)\n t.beginPath(), t.rect(e.x, e.y, e.width, e.height), t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, t.setLineDash([]), t.stroke();\n }\n renderLabels(t) {\n this.settings.labelRenderMode !== \"none\" && t.forEach((s) => {\n if (this.settings.labelRenderMode === \"image\") {\n if (!s.pixMap)\n return;\n const e = new Image();\n e.src = `data:image/png;base64,${s.pixMap}`;\n const i = new b.Image({\n x: s.X,\n y: -s.Y,\n width: s.Width,\n height: s.Height,\n image: e,\n listening: !1\n });\n this.linkLayer.add(i);\n return;\n }\n this.renderLabelAsData(s);\n });\n }\n renderLabelAsData(t) {\n const s = new b.Group({\n listening: !1\n }), e = new b.Rect({\n x: t.X,\n y: -t.Y,\n width: t.Width,\n height: t.Height,\n listening: !1\n });\n (t.BgColor?.alpha ?? 0) > 0 && !this.settings.transparentLabels ? e.fill(this.getLabelColor(t.BgColor)) : e.fillEnabled(!1), s.add(e);\n const i = Math.min(0.75, t.Width / Math.max(t.Text.length / 2, 1)), o = Math.max(0.1, Math.min(i, Math.max(t.Height * 0.9, 0.1))), n = new b.Text({\n x: t.X,\n y: -t.Y,\n width: t.Width,\n height: t.Height,\n text: t.Text,\n fontSize: o,\n fillEnabled: !0,\n fill: this.getLabelColor(t.FgColor),\n align: \"center\",\n verticalAlign: \"middle\",\n listening: !1\n });\n s.add(n), this.linkLayer.add(s);\n }\n getLabelColor(t) {\n const s = (t?.alpha ?? 255) / 255, e = (i) => Math.min(255, Math.max(0, i ?? 0));\n return `rgba(${e(t?.r)}, ${e(t?.g)}, ${e(t?.b)}, ${s})`;\n }\n}\nconst wt = {\n rgbValue: \"rgb(114, 1, 0)\",\n symbolColor: [225, 225, 225]\n};\nfunction vt(m) {\n const t = m[0] / 255, s = m[1] / 255, e = m[2] / 255, i = Math.max(t, s, e), o = Math.min(t, s, e);\n return (i + o) / 2;\n}\nclass me {\n constructor(t, s) {\n this.rooms = {}, this.areas = {}, this.areaSources = {}, this.explorationEnabled = !1, this.colors = {}, t.forEach((e) => {\n e.rooms.forEach((o) => {\n o.y = -o.y, this.rooms[o.id] = o;\n });\n const i = parseInt(e.areaId);\n this.areas[i] = new _(e), this.areaSources[i] = e;\n }), this.colors = s.reduce((e, i) => ({\n ...e,\n [i.envId]: {\n rgb: i.colors,\n rgbValue: `rgb(${i.colors.join(\",\")})`,\n symbolColor: vt(i.colors) > 0.41 ? [25, 25, 25] : [225, 255, 255],\n symbolColorValue: vt(i.colors) > 0.41 ? \"rgb(25,25,25)\" : \"rgb(225,255,255)\"\n }\n }), {});\n }\n getArea(t) {\n return this.areas[t];\n }\n getExplorationArea(t) {\n const s = this.areas[t];\n if (s instanceof gt)\n return s;\n }\n getAreas() {\n return Object.values(this.areas);\n }\n getRooms() {\n return Object.values(this.rooms);\n }\n getRoom(t) {\n return this.rooms[t];\n }\n ensureVisitedRooms() {\n return this.visitedRooms || (this.visitedRooms = /* @__PURE__ */ new Set()), this.visitedRooms;\n }\n applyExplorationDecoration() {\n this.visitedRooms && Object.entries(this.areaSources).forEach(([t, s]) => {\n const e = parseInt(t, 10);\n this.areas[e] = new gt(s, this.visitedRooms);\n });\n }\n decorateWithExploration(t) {\n return t !== void 0 ? this.setVisitedRooms(t) : this.ensureVisitedRooms(), this.applyExplorationDecoration(), this.explorationEnabled = !0, this.visitedRooms;\n }\n getVisitedRooms() {\n return this.visitedRooms;\n }\n clearExplorationDecoration() {\n Object.entries(this.areaSources).forEach(([t, s]) => {\n const e = parseInt(t, 10);\n this.areas[e] = new _(s);\n }), this.explorationEnabled = !1;\n }\n isExplorationEnabled() {\n return this.explorationEnabled;\n }\n setVisitedRooms(t) {\n return this.visitedRooms = t instanceof Set ? t : new Set(t), this.explorationEnabled && this.applyExplorationDecoration(), this.visitedRooms;\n }\n addVisitedRoom(t) {\n if (this.explorationEnabled) {\n const i = this.getRoom(t);\n if (i) {\n const o = this.getExplorationArea(i.area);\n if (o)\n return o.addVisitedRoom(t);\n }\n }\n const s = this.ensureVisitedRooms(), e = s.has(t);\n return s.add(t), !e;\n }\n addVisitedRooms(t) {\n const s = this.ensureVisitedRooms();\n let e = 0;\n for (const i of t) {\n if (this.explorationEnabled) {\n const n = this.getRoom(i);\n if (n) {\n const r = this.getExplorationArea(n.area);\n if (r) {\n r.addVisitedRoom(i) && e++;\n continue;\n }\n }\n }\n const o = s.has(i);\n s.add(i), o || e++;\n }\n return e;\n }\n hasVisitedRoom(t) {\n return this.visitedRooms?.has(t) ?? !1;\n }\n getColorValue(t) {\n return this.colors[t]?.rgbValue ?? wt.rgbValue;\n }\n getSymbolColor(t, s) {\n const e = this.colors[t]?.symbolColor ?? wt.symbolColor, i = Math.min(Math.max(s ?? 1, 0), 1), o = e.join(\",\");\n return i != 1 ? `rgba(${o}, ${i})` : `rgba(${o})`;\n }\n}\nfunction _t(m) {\n return m && m.__esModule && Object.prototype.hasOwnProperty.call(m, \"default\") ? m.default : m;\n}\nvar rt, kt;\nfunction qt() {\n if (kt) return rt;\n kt = 1;\n class m {\n /**\n * Creates a new empty priority queue\n */\n constructor() {\n this.keys = /* @__PURE__ */ new Set(), this.queue = [];\n }\n /**\n * Sort the queue to have the least expensive node to visit on top\n *\n * @private\n */\n sort() {\n this.queue.sort((s, e) => s.priority - e.priority);\n }\n /**\n * Sets a priority for a key in the queue.\n * Inserts it in the queue if it does not already exists.\n *\n * @param {any} key Key to update or insert\n * @param {number} value Priority of the key\n * @return {number} Size of the queue\n */\n set(s, e) {\n const i = Number(e);\n if (isNaN(i)) throw new TypeError('\"priority\" must be a number');\n return this.keys.has(s) ? this.queue.map((o) => (o.key === s && Object.assign(o, { priority: i }), o)) : (this.keys.add(s), this.queue.push({ key: s, priority: i })), this.sort(), this.queue.length;\n }\n /**\n * The next method is used to dequeue a key:\n * It removes the first element from the queue and returns it\n *\n * @return {object} First priority queue entry\n */\n next() {\n const s = this.queue.shift();\n return this.keys.delete(s.key), s;\n }\n /**\n * @return {boolean} `true` when the queue is empty\n */\n isEmpty() {\n return this.queue.length === 0;\n }\n /**\n * Check if the queue has a key in it\n *\n * @param {any} key Key to lookup\n * @return {boolean}\n */\n has(s) {\n return this.keys.has(s);\n }\n /**\n * Get the element in the queue with the specified key\n *\n * @param {any} key Key to lookup\n * @return {object}\n */\n get(s) {\n return this.queue.find((e) => e.key === s);\n }\n }\n return rt = m, rt;\n}\nvar at, Rt;\nfunction Kt() {\n if (Rt) return at;\n Rt = 1;\n function m(t, s) {\n const e = /* @__PURE__ */ new Map();\n for (const [i, o] of t)\n i !== s && o instanceof Map ? e.set(i, m(o, s)) : i !== s && e.set(i, o);\n return e;\n }\n return at = m, at;\n}\nvar ht, St;\nfunction Qt() {\n if (St) return ht;\n St = 1;\n function m(s) {\n const e = Number(s);\n return !(isNaN(e) || e <= 0);\n }\n function t(s) {\n const e = /* @__PURE__ */ new Map();\n return Object.keys(s).forEach((o) => {\n const n = s[o];\n if (n !== null && typeof n == \"object\" && !Array.isArray(n))\n return e.set(o, t(n));\n if (!m(n))\n throw new Error(\n `Could not add node at key \"${o}\", make sure it's a valid node`,\n n\n );\n return e.set(o, Number(n));\n }), e;\n }\n return ht = t, ht;\n}\nvar ct, Et;\nfunction Ut() {\n if (Et) return ct;\n Et = 1;\n function m(t) {\n if (!(t instanceof Map))\n throw new Error(`Invalid graph: Expected Map instead found ${typeof t}`);\n t.forEach((s, e) => {\n if (typeof s == \"object\" && s instanceof Map) {\n m(s);\n return;\n }\n if (typeof s != \"number\" || s <= 0)\n throw new Error(\n `Values must be numbers greater than 0. Found value ${s} at ${e}`\n );\n });\n }\n return ct = m, ct;\n}\nvar lt, Mt;\nfunction Jt() {\n if (Mt) return lt;\n Mt = 1;\n const m = qt(), t = Kt(), s = Qt(), e = Ut();\n class i {\n /**\n * Creates a new Graph, optionally initializing it a nodes graph representation.\n *\n * A graph representation is an object that has as keys the name of the point and as values\n * the points reacheable from that node, with the cost to get there:\n *\n * {\n * node (Number|String): {\n * neighbor (Number|String): cost (Number),\n * ...,\n * },\n * }\n *\n * In alternative to an object, you can pass a `Map` of `Map`. This will\n * allow you to specify numbers as keys.\n *\n * @param {Objec|Map} [graph] - Initial graph definition\n * @example\n *\n * const route = new Graph();\n *\n * // Pre-populated graph\n * const route = new Graph({\n * A: { B: 1 },\n * B: { A: 1, C: 2, D: 4 },\n * });\n *\n * // Passing a Map\n * const g = new Map()\n *\n * const a = new Map()\n * a.set('B', 1)\n *\n * const b = new Map()\n * b.set('A', 1)\n * b.set('C', 2)\n * b.set('D', 4)\n *\n * g.set('A', a)\n * g.set('B', b)\n *\n * const route = new Graph(g)\n */\n constructor(n) {\n n instanceof Map ? (e(n), this.graph = n) : n ? this.graph = s(n) : this.graph = /* @__PURE__ */ new Map();\n }\n /**\n * Adds a node to the graph\n *\n * @param {string} name - Name of the node\n * @param {Object|Map} neighbors - Neighbouring nodes and cost to reach them\n * @return {this}\n * @example\n *\n * const route = new Graph();\n *\n * route.addNode('A', { B: 1 });\n *\n * // It's possible to chain the calls\n * route\n * .addNode('B', { A: 1 })\n * .addNode('C', { A: 3 });\n *\n * // The neighbors can be expressed in a Map\n * const d = new Map()\n * d.set('A', 2)\n * d.set('B', 8)\n *\n * route.addNode('D', d)\n */\n addNode(n, r) {\n let h;\n return r instanceof Map ? (e(r), h = r) : h = s(r), this.graph.set(n, h), this;\n }\n /**\n * @deprecated since version 2.0, use `Graph#addNode` instead\n */\n addVertex(n, r) {\n return this.addNode(n, r);\n }\n /**\n * Removes a node and all of its references from the graph\n *\n * @param {string|number} key - Key of the node to remove from the graph\n * @return {this}\n * @example\n *\n * const route = new Graph({\n * A: { B: 1, C: 5 },\n * B: { A: 3 },\n * C: { B: 2, A: 2 },\n * });\n *\n * route.removeNode('C');\n * // The graph now is:\n * // { A: { B: 1 }, B: { A: 3 } }\n */\n removeNode(n) {\n return this.graph = t(this.graph, n), this;\n }\n /**\n * Compute the shortest path between the specified nodes\n *\n * @param {string} start - Starting node\n * @param {string} goal - Node we want to reach\n * @param {object} [options] - Options\n *\n * @param {boolean} [options.trim] - Exclude the origin and destination nodes from the result\n * @param {boolean} [options.reverse] - Return the path in reversed order\n * @param {boolean} [options.cost] - Also return the cost of the path when set to true\n *\n * @return {array|object} Computed path between the nodes.\n *\n * When `option.cost` is set to true, the returned value will be an object with shape:\n * - `path` *(Array)*: Computed path between the nodes\n * - `cost` *(Number)*: Cost of the path\n *\n * @example\n *\n * const route = new Graph()\n *\n * route.addNode('A', { B: 1 })\n * route.addNode('B', { A: 1, C: 2, D: 4 })\n * route.addNode('C', { B: 2, D: 1 })\n * route.addNode('D', { C: 1, B: 4 })\n *\n * route.path('A', 'D') // => ['A', 'B', 'C', 'D']\n *\n * // trimmed\n * route.path('A', 'D', { trim: true }) // => [B', 'C']\n *\n * // reversed\n * route.path('A', 'D', { reverse: true }) // => ['D', 'C', 'B', 'A']\n *\n * // include the cost\n * route.path('A', 'D', { cost: true })\n * // => {\n * // path: [ 'A', 'B', 'C', 'D' ],\n * // cost: 4\n * // }\n */\n path(n, r, h = {}) {\n if (!this.graph.size)\n return h.cost ? { path: null, cost: 0 } : null;\n const a = /* @__PURE__ */ new Set(), c = new m(), l = /* @__PURE__ */ new Map();\n let d = [], g = 0, u = [];\n if (h.avoid && (u = [].concat(h.avoid)), u.includes(n))\n throw new Error(`Starting node (${n}) cannot be avoided`);\n if (u.includes(r))\n throw new Error(`Ending node (${r}) cannot be avoided`);\n for (c.set(n, 0); !c.isEmpty(); ) {\n const f = c.next();\n if (f.key === r) {\n g = f.priority;\n let p = f.key;\n for (; l.has(p); )\n d.push(p), p = l.get(p);\n break;\n }\n a.add(f.key), (this.graph.get(f.key) || /* @__PURE__ */ new Map()).forEach((p, x) => {\n if (a.has(x) || u.includes(x)) return null;\n if (!c.has(x))\n return l.set(x, f.key), c.set(x, f.priority + p);\n const k = c.get(x).priority, D = f.priority + p;\n return D < k ? (l.set(x, f.key), c.set(x, D)) : null;\n });\n }\n return d.length ? (h.trim ? d.shift() : d = d.concat([n]), h.reverse || (d = d.reverse()), h.cost ? {\n path: d,\n cost: g\n } : d) : h.cost ? { path: null, cost: 0 } : null;\n }\n /**\n * @deprecated since version 2.0, use `Graph#path` instead\n */\n shortestPath(...n) {\n return this.path(...n);\n }\n }\n return lt = i, lt;\n}\nvar te = Jt();\nconst ee = /* @__PURE__ */ _t(te), se = {\n 1: \"north\",\n 2: \"northeast\",\n 3: \"northwest\",\n 4: \"east\",\n 5: \"west\",\n 6: \"south\",\n 7: \"southeast\",\n 8: \"southwest\",\n 9: \"up\",\n 10: \"down\",\n 11: \"in\",\n 12: \"out\"\n}, ie = {\n north: \"n\",\n northeast: \"ne\",\n northwest: \"nw\",\n east: \"e\",\n west: \"w\",\n south: \"s\",\n southeast: \"se\",\n southwest: \"sw\",\n up: \"up\",\n down: \"down\",\n in: \"in\",\n out: \"out\"\n};\nfunction Ct(m, t) {\n m.push(t);\n let s = m.length - 1;\n for (; s > 0; ) {\n const e = s - 1 >> 1;\n if (m[e].priority <= m[s].priority) break;\n [m[e], m[s]] = [m[s], m[e]], s = e;\n }\n}\nfunction oe(m) {\n if (m.length === 0) return;\n const t = m[0], s = m.pop();\n if (m.length > 0) {\n m[0] = s;\n let e = 0;\n const i = m.length;\n for (; ; ) {\n let o = e;\n const n = 2 * e + 1, r = 2 * e + 2;\n if (n < i && m[n].priority < m[o].priority && (o = n), r < i && m[r].priority < m[o].priority && (o = r), o === e) break;\n [m[e], m[o]] = [m[o], m[e]], e = o;\n }\n }\n return t;\n}\nfunction ne(m, t, s) {\n const e = [s];\n let i = s;\n for (; i !== t; )\n i = m.get(i), e.push(i);\n return e.reverse(), e;\n}\nfunction re(m, t, s) {\n const e = m.path(t.toString(), s.toString()), i = Array.isArray(e) ? e : e?.path;\n return i ? i.map((o) => Number(o)) : null;\n}\nfunction ae(m, t, s, e, i, o) {\n const n = e.getRoom(s);\n if (!n) return null;\n const r = n.x, h = n.y, a = n.z, c = (u) => {\n const f = e.getRoom(u);\n if (!f) return 0;\n const y = f.x - r, p = f.y - h, x = f.z - a;\n return Math.sqrt(y * y + p * p + x * x) / i * o;\n }, l = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), g = [];\n for (l.set(t, 0), Ct(g, { id: t, priority: c(t) }); g.length > 0; ) {\n const { id: u } = oe(g);\n if (u === s) return ne(d, t, s);\n const f = l.get(u) ?? 1 / 0, y = m.get(u);\n if (y)\n for (const p of y) {\n const x = f + p.weight;\n x < (l.get(p.id) ?? 1 / 0) && (l.set(p.id, x), d.set(p.id, u), Ct(g, { id: p.id, priority: x + c(p.id) }));\n }\n }\n return null;\n}\nclass pe {\n constructor(t, s = \"dijkstra\") {\n this.cache = /* @__PURE__ */ new Map(), this.mapReader = t, this._algorithm = s;\n const { adj: e, maxEdgeDistance: i, minEdgeWeight: o, graphDefinition: n } = this.buildGraph();\n this.adj = e, this.graph = new ee(n), this.maxEdgeDistance = i, this.minEdgeWeight = o;\n }\n get algorithm() {\n return this._algorithm;\n }\n setAlgorithm(t) {\n t !== this._algorithm && (this._algorithm = t, this.cache.clear());\n }\n findPath(t, s) {\n const e = `${t}->${s}`;\n if (this.cache.has(e))\n return this.cache.get(e);\n if (t === s) {\n const o = this.mapReader.getRoom(t) ? [t] : null;\n return this.cache.set(e, o), o;\n }\n if (!this.mapReader.getRoom(t) || !this.mapReader.getRoom(s))\n return this.cache.set(e, null), null;\n let i;\n switch (this._algorithm) {\n case \"dijkstra\":\n i = re(this.graph, t, s);\n break;\n case \"astar\":\n i = ae(this.adj, t, s, this.mapReader, this.maxEdgeDistance, this.minEdgeWeight);\n break;\n }\n return this.cache.set(e, i), i;\n }\n resolveEdgeWeight(t, s, e) {\n const i = t.exitWeights?.[s];\n return i !== void 0 && i > 0 ? i : Math.max(e.weight, 1);\n }\n buildGraph() {\n const t = /* @__PURE__ */ new Map(), s = {};\n let e = 1, i = 1 / 0;\n return this.mapReader.getRooms().forEach((o) => {\n const n = [], r = {}, h = new Set(\n (o.exitLocks ?? []).map((c) => se[c]).filter((c) => !!c)\n ), a = new Set(o.mSpecialExitLocks ?? []);\n Object.entries(o.exits ?? {}).forEach(([c, l]) => {\n if (h.has(c)) return;\n const d = this.mapReader.getRoom(l);\n if (d) {\n const g = ie[c] ?? c, u = this.resolveEdgeWeight(o, g, d);\n n.push({ id: l, weight: u }), r[l.toString()] = u, u < i && (i = u);\n const f = d.x - o.x, y = d.y - o.y, p = d.z - o.z, x = Math.sqrt(f * f + y * y + p * p);\n x > e && (e = x);\n }\n }), Object.entries(o.specialExits ?? {}).forEach(([c, l]) => {\n if (a.has(l)) return;\n const d = this.mapReader.getRoom(l);\n if (d) {\n const g = this.resolveEdgeWeight(o, c, d);\n n.push({ id: l, weight: g }), r[l.toString()] = g, g < i && (i = g);\n const u = d.x - o.x, f = d.y - o.y, y = d.z - o.z, p = Math.sqrt(u * u + f * f + y * y);\n p > e && (e = p);\n }\n }), t.set(o.id, n), s[o.id.toString()] = r;\n }), isFinite(i) || (i = 1), { adj: t, maxEdgeDistance: e, minEdgeWeight: i, graphDefinition: s };\n }\n}\nconst he = {\n 1: \"north\",\n 2: \"northeast\",\n 3: \"northwest\",\n 4: \"east\",\n 5: \"west\",\n 6: \"south\",\n 7: \"southeast\",\n 8: \"southwest\",\n 9: \"up\",\n 10: \"down\",\n 11: \"in\",\n 12: \"out\"\n};\nfunction ce() {\n return {\n areaWidth: 150,\n areaHeight: 80,\n areaSpacing: 50,\n fontSize: 14,\n connectionLineWidth: 2,\n areaFillColor: \"#2a2a3e\",\n areaStrokeColor: \"#4a4a6e\",\n textColor: \"#e0e0e0\",\n connectionColor: \"#6a6a8e\",\n highlightColor: \"#ff9900\"\n };\n}\nclass ye {\n constructor(t, s, e) {\n this.areaNodes = /* @__PURE__ */ new Map(), this.connectionGroups = [], this.currentZoom = 1, this.domainInfo = /* @__PURE__ */ new Map(), this.domainFilter = \"all\", this.dotsMode = !1, this.settings = e ?? ce(), this.stage = new b.Stage({\n container: t,\n width: t.clientWidth,\n height: t.clientHeight,\n draggable: !0\n }), this.backgroundLayer = new b.Layer({ listening: !1 }), this.stage.add(this.backgroundLayer), this.connectionLayer = new b.Layer({ listening: !1 }), this.stage.add(this.connectionLayer), this.areaLayer = new b.Layer(), this.stage.add(this.areaLayer), this.mapReader = s, this.initScaling(), this.initResize(t);\n }\n initResize(t) {\n new ResizeObserver(() => {\n this.stage.width(t.clientWidth), this.stage.height(t.clientHeight), this.stage.batchDraw();\n }).observe(t);\n }\n initScaling() {\n this.stage.on(\"wheel\", (s) => {\n s.evt.preventDefault();\n const e = this.stage.scaleX(), i = this.stage.getPointerPosition();\n if (!i) return;\n const o = {\n x: (i.x - this.stage.x()) / e,\n y: (i.y - this.stage.y()) / e\n }, r = (s.evt.deltaY > 0 ? -1 : 1) > 0 ? this.currentZoom * 1.1 : this.currentZoom / 1.1;\n if (this.setZoom(r)) {\n const h = this.stage.scaleX(), a = {\n x: i.x - o.x * h,\n y: i.y - o.y * h\n };\n this.stage.position(a), this.stage.batchDraw();\n }\n });\n }\n setZoom(t) {\n const s = Math.max(0.1, Math.min(5, t));\n return this.currentZoom === s ? !1 : (this.currentZoom = s, this.stage.scale({ x: this.currentZoom, y: this.currentZoom }), !0);\n }\n getZoom() {\n return this.currentZoom;\n }\n setDomainInfo(t) {\n this.domainInfo.clear();\n for (const [s, e] of Object.entries(t))\n this.domainInfo.set(Number(s), e);\n }\n setDomainFilter(t) {\n this.domainFilter = t;\n }\n getDomainFilter() {\n return this.domainFilter;\n }\n setBackgroundImage(t) {\n this.backgroundConfig = {\n url: t.url,\n x: t.x,\n y: t.y,\n width: t.width,\n height: t.height,\n opacity: t.opacity ?? 0.3\n };\n }\n clearBackgroundImage() {\n this.backgroundConfig = void 0, this.backgroundImage = void 0, this.backgroundLayer.destroyChildren(), this.backgroundLayer.batchDraw();\n }\n redrawBackground() {\n this.drawBackground();\n }\n setDotsMode(t) {\n this.dotsMode = t;\n }\n getDotsMode() {\n return this.dotsMode;\n }\n redraw() {\n this.drawBackground(), this.drawConnections(), this.drawAreas(), this.stage.batchDraw();\n }\n isAreaInDomain(t) {\n const s = this.domainInfo.get(t);\n if (!s)\n return this.domainFilter === \"interdomain\" || this.domainFilter === \"all\";\n switch (this.domainFilter) {\n case \"ishtar\":\n return s.isIshtar;\n case \"empire\":\n return s.isEmpire;\n case \"interdomain\":\n return !s.isIshtar && !s.isEmpire;\n case \"all\":\n return !0;\n }\n }\n areAreasInSameDomain(t, s) {\n const e = this.domainInfo.get(t), i = this.domainInfo.get(s);\n return !e || !i ? !1 : e.isIshtar && i.isIshtar || e.isEmpire && i.isEmpire ? !0 : !e.isIshtar && !e.isEmpire && !i.isIshtar && !i.isEmpire;\n }\n render() {\n this.analyzeConnections(), this.layoutAreas(), this.drawBackground(), this.drawConnections(), this.drawAreas(), this.centerView(), this.stage.batchDraw();\n }\n drawBackground() {\n if (this.backgroundLayer.destroyChildren(), !this.backgroundConfig) return;\n const t = new Image();\n t.crossOrigin = \"anonymous\", t.onload = () => {\n this.backgroundImage = new b.Image({\n x: this.backgroundConfig.x,\n y: this.backgroundConfig.y,\n image: t,\n width: this.backgroundConfig.width,\n height: this.backgroundConfig.height,\n opacity: this.backgroundConfig.opacity,\n listening: !1\n }), this.backgroundLayer.add(this.backgroundImage), this.backgroundLayer.batchDraw();\n }, t.onerror = () => {\n console.error(\"Failed to load background image:\", this.backgroundConfig?.url);\n }, t.src = this.backgroundConfig.url;\n }\n analyzeConnections() {\n this.areaNodes.clear(), this.connectionGroups = [];\n const t = this.mapReader.getRooms(), s = this.mapReader.getAreas(), e = /* @__PURE__ */ new Map();\n for (const a of s) {\n const c = a.getAreaId(), l = a.getRooms();\n if (l.length === 0) continue;\n let d = 1 / 0, g = -1 / 0, u = 1 / 0, f = -1 / 0, y = 0;\n for (const k of l)\n k.z === 0 && (y++, d = Math.min(d, k.x), g = Math.max(g, k.x), u = Math.min(u, k.y), f = Math.max(f, k.y));\n if (y === 0)\n for (const k of l)\n d = Math.min(d, k.x), g = Math.max(g, k.x), u = Math.min(u, k.y), f = Math.max(f, k.y);\n const p = (d + g) / 2, x = (u + f) / 2;\n e.set(c, { minX: d, maxX: g, minY: u, maxY: f, centerX: p, centerY: x, roomCount: l.length });\n }\n let i = 1;\n for (const a of e.values()) {\n const c = a.maxX - a.minX, l = a.maxY - a.minY;\n i = Math.max(i, c, l);\n }\n const o = 200, n = 100, r = o / i;\n for (const a of s) {\n const c = a.getAreaId(), l = e.get(c);\n if (!l || !this.isAreaInDomain(c))\n continue;\n const d = l.maxX - l.minX, g = l.maxY - l.minY;\n let u = Math.max(n, d * r), f = Math.max(n, g * r);\n const y = u / f;\n y > 3 ? f = u / 3 : y < 1 / 3 && (u = f / 3), this.areaNodes.set(c, {\n areaId: c,\n name: a.getAreaName(),\n x: 0,\n y: 0,\n width: u,\n height: f,\n connections: [],\n roomCount: l.roomCount,\n realCenterX: l.centerX,\n realCenterY: l.centerY\n });\n }\n const h = /* @__PURE__ */ new Map();\n for (const a of t) {\n const c = a.area;\n if (!this.areaNodes.has(c)) continue;\n const l = this.getLockedDirections(a), d = new Set(a.mSpecialExitLocks ?? []);\n for (const [g, u] of Object.entries(a.exits ?? {})) {\n if (l.has(g)) continue;\n const f = this.mapReader.getRoom(u);\n if (!f || f.area === c || !this.areaNodes.has(f.area) || !this.areAreasInSameDomain(c, f.area)) continue;\n const y = this.createConnection(\n a,\n f,\n g\n );\n y && this.addConnection(h, y);\n }\n for (const [g, u] of Object.entries(a.specialExits ?? {})) {\n if (d.has(u)) continue;\n const f = this.mapReader.getRoom(u);\n if (!f || f.area === c || !this.areaNodes.has(f.area) || !this.areAreasInSameDomain(c, f.area)) continue;\n const y = this.parseDirection(g), p = this.createConnection(a, f, y);\n p && this.addConnection(h, p);\n }\n }\n for (const [a, c] of h) {\n const [l, d] = a.split(\"-\").map(Number), g = this.createConnectionGroup(l, d, c);\n this.connectionGroups.push(g);\n const u = this.areaNodes.get(l), f = this.areaNodes.get(d);\n if (u && u.connections.push(...c), f)\n for (const y of c)\n f.connections.push({\n ...y,\n fromAreaId: y.toAreaId,\n toAreaId: y.fromAreaId,\n fromRoomId: y.toRoomId,\n toRoomId: y.fromRoomId,\n direction: y.direction ? Dt[y.direction] : null,\n fromRoomPosition: y.toRoomPosition,\n toRoomPosition: y.fromRoomPosition\n });\n }\n }\n getLockedDirections(t) {\n return new Set(\n (t.exitLocks ?? []).map((s) => he[s]).filter((s) => !!s)\n );\n }\n createConnection(t, s, e) {\n const i = this.toPlanarDirection(e);\n return {\n fromAreaId: t.area,\n toAreaId: s.area,\n fromRoomId: t.id,\n toRoomId: s.id,\n direction: i,\n fromRoomPosition: { x: t.x, y: t.y },\n toRoomPosition: { x: s.x, y: s.y }\n };\n }\n addConnection(t, s) {\n const e = s.fromAreaId < s.toAreaId ? `${s.fromAreaId}-${s.toAreaId}` : `${s.toAreaId}-${s.fromAreaId}`;\n t.has(e) || t.set(e, []), t.get(e).push(s);\n }\n createConnectionGroup(t, s, e) {\n const i = /* @__PURE__ */ new Map();\n let o = 0, n = 0;\n for (const a of e)\n a.direction && i.set(\n a.direction,\n (i.get(a.direction) ?? 0) + 1\n ), o += a.toRoomPosition.x - a.fromRoomPosition.x, n += a.toRoomPosition.y - a.fromRoomPosition.y;\n let r = null, h = 0;\n for (const [a, c] of i)\n c > h && (h = c, r = a);\n return {\n fromAreaId: t,\n toAreaId: s,\n connections: e,\n primaryDirection: r,\n averageOffset: {\n x: o / e.length,\n y: n / e.length\n }\n };\n }\n parseDirection(t) {\n const s = t.toLowerCase().trim();\n return {\n n: \"north\",\n north: \"north\",\n s: \"south\",\n south: \"south\",\n e: \"east\",\n east: \"east\",\n w: \"west\",\n west: \"west\",\n ne: \"northeast\",\n northeast: \"northeast\",\n nw: \"northwest\",\n northwest: \"northwest\",\n se: \"southeast\",\n southeast: \"southeast\",\n sw: \"southwest\",\n southwest: \"southwest\",\n u: \"up\",\n up: \"up\",\n d: \"down\",\n down: \"down\",\n i: \"in\",\n in: \"in\",\n o: \"out\",\n out: \"out\"\n }[s] ?? null;\n }\n toPlanarDirection(t) {\n return t && dt.includes(t) ? t : null;\n }\n layoutAreas() {\n if (Array.from(this.areaNodes.values()).length === 0) return;\n const s = this.findConnectedComponents();\n let e = 0;\n const i = this.settings.areaWidth * 3;\n for (const o of s)\n if (o.length === 1) {\n const n = this.areaNodes.get(o[0]);\n n && (n.x = e, n.y = 0), e += this.settings.areaWidth + i;\n } else {\n const n = this.forceDirectedLayout(o);\n for (const h of o) {\n const a = this.areaNodes.get(h);\n a && isFinite(n.minX) && isFinite(n.minY) && (a.x -= n.minX, a.x += e, a.y -= n.minY);\n }\n const r = isFinite(n.maxX - n.minX) ? n.maxX - n.minX : this.settings.areaWidth;\n e += r + i;\n }\n }\n findConnectedComponents() {\n const t = /* @__PURE__ */ new Set(), s = [];\n for (const [e] of this.areaNodes) {\n if (t.has(e)) continue;\n const i = [], o = [e];\n for (; o.length > 0; ) {\n const n = o.shift();\n if (t.has(n)) continue;\n t.add(n), i.push(n);\n const r = this.areaNodes.get(n);\n if (r)\n for (const h of r.connections)\n t.has(h.toAreaId) || o.push(h.toAreaId);\n }\n s.push(i);\n }\n return s;\n }\n forceDirectedLayout(t) {\n const s = /* @__PURE__ */ new Map();\n for (const w of t) {\n const R = this.areaNodes.get(w);\n if (!R) continue;\n const E = new Set(R.connections.map((C) => C.toAreaId));\n s.set(w, E);\n }\n const e = /* @__PURE__ */ new Set(), i = /* @__PURE__ */ new Set();\n for (const [w, R] of s)\n R.size >= 3 && e.add(w);\n for (const [w, R] of s) {\n if (e.has(w) || i.has(w) || R.size > 2) continue;\n const E = [w];\n i.add(w);\n const C = Array.from(R);\n for (const M of C) {\n let I = M, W = w;\n for (; I && !i.has(I) && !e.has(I); ) {\n const v = s.get(I);\n if (!v) break;\n if (v.size >= 3) {\n e.add(I);\n break;\n }\n E.push(I), i.add(I);\n let z = !1;\n for (const Y of v)\n if (Y !== W && !i.has(Y)) {\n W = I, I = Y, z = !0;\n break;\n }\n if (!z) break;\n }\n }\n let S = !1;\n for (const M of E) {\n const I = s.get(M);\n if (I) {\n for (const W of I)\n if (e.has(W)) {\n S = !0;\n break;\n }\n }\n if (S) break;\n }\n if (!S && E.length > 0) {\n let M = E[0], I = s.get(E[0])?.size ?? 0;\n for (const W of E) {\n const v = s.get(W)?.size ?? 0;\n v > I && (I = v, M = W);\n }\n e.add(M), i.delete(M);\n }\n }\n for (const w of t) {\n const R = s.get(w);\n (!R || R.size === 0) && e.add(w);\n }\n const o = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();\n for (const w of e)\n o.set(w, w), n.set(w, []);\n const r = new Set(e);\n for (const w of e) {\n const R = s.get(w) ?? /* @__PURE__ */ new Set();\n for (const E of R) {\n if (r.has(E)) continue;\n const C = [];\n let S = E, M = w;\n for (; S && !r.has(S); ) {\n C.push(S), o.set(S, w), r.add(S);\n const I = s.get(S) ?? /* @__PURE__ */ new Set();\n let W;\n for (const v of I)\n if (v !== M && !r.has(v)) {\n W = v;\n break;\n }\n M = S, S = W;\n }\n C.length > 0 && n.get(w).push(C);\n }\n }\n const h = /* @__PURE__ */ new Set(), a = [], c = e.values().next().value, l = c !== void 0 ? c : t[0];\n if (l !== void 0) {\n const w = this.areaNodes.get(l);\n w && (w.x = 0, w.y = 0, h.add(l), a.push(l));\n }\n for (; a.length > 0; ) {\n const w = a.shift(), R = this.areaNodes.get(w), E = /* @__PURE__ */ new Map();\n for (const C of R.connections) {\n const S = C.toAreaId;\n if (h.has(S) || !e.has(S)) continue;\n const M = this.areaNodes.get(S);\n if (!M) continue;\n const I = C.direction ?? \"none\";\n E.has(I) || E.set(I, []), E.get(I).push({ id: S, node: M, conn: C });\n }\n for (const [C, S] of E) {\n const M = this.getDirectionOffset(C === \"none\" ? null : C);\n S.sort((v, z) => Math.abs(M.x) > Math.abs(M.y) ? z.node.realCenterY - v.node.realCenterY : v.node.realCenterX - z.node.realCenterX);\n const I = this.settings.areaWidth + this.settings.areaSpacing, W = this.settings.areaHeight + this.settings.areaSpacing;\n S.forEach((v, z) => {\n if (v.node.x = R.x + M.x * I, v.node.y = R.y + M.y * W, S.length > 1) {\n const Y = (z - (S.length - 1) / 2) * 0.5;\n Math.abs(M.x) > Math.abs(M.y) ? v.node.y += Y * W : v.node.x += Y * I;\n }\n h.add(v.id), a.push(v.id);\n });\n }\n }\n const d = Array.from(e);\n d.length > 1 && this.applyForces(d, 80);\n const g = this.settings.areaWidth + this.settings.areaSpacing + 30, u = this.settings.areaHeight + this.settings.areaSpacing + 30, f = /* @__PURE__ */ new Map(), y = [\n \"east\",\n \"west\",\n \"north\",\n \"south\",\n \"northeast\",\n \"northwest\",\n \"southeast\",\n \"southwest\"\n ];\n for (const [w, R] of n) {\n const E = this.areaNodes.get(w);\n if (!E) continue;\n let C = 0;\n const S = /* @__PURE__ */ new Map();\n for (const M of R) {\n let I = w, W = E.x, v = E.y, z = null;\n for (const Y of M) {\n const P = this.areaNodes.get(Y);\n if (!P) continue;\n const O = this.areaNodes.get(I);\n let T = null;\n if (O) {\n for (const B of O.connections)\n if (B.toAreaId === Y) {\n T = B.direction;\n break;\n }\n }\n !T && I === w ? (z = y[C % y.length], C++, T = z) : !T && z && (T = z);\n const F = this.getDirectionOffset(T);\n let V = 0;\n if (I === w && T) {\n const B = T, ot = S.get(B) ?? 0;\n S.set(B, ot + 1), V = ot;\n }\n P.x = W + F.x * g, P.y = v + F.y * u, V > 0 && (F.x !== 0 && F.y === 0 ? P.y += V * u * 1.2 : F.y !== 0 && F.x === 0 ? P.x += V * g * 1.2 : (P.x += V * g * 1.2, P.y -= V * u * 1.2)), f.set(Y, {\n dx: P.x - E.x,\n dy: P.y - E.y,\n hubId: w\n }), I = Y, W = P.x, v = P.y;\n }\n }\n }\n const p = /* @__PURE__ */ new Map(), x = /* @__PURE__ */ new Map();\n for (const w of e) {\n const R = this.areaNodes.get(w);\n if (!R) continue;\n let E = R.x, C = R.y, S = R.x + R.width, M = R.y + R.height;\n const I = n.get(w) ?? [];\n for (const W of I)\n for (const v of W) {\n const z = this.areaNodes.get(v);\n z && (E = Math.min(E, z.x), C = Math.min(C, z.y), S = Math.max(S, z.x + z.width), M = Math.max(M, z.y + z.height));\n }\n p.set(w, { minX: E, minY: C, maxX: S, maxY: M }), x.set(w, { dx: E - R.x, dy: C - R.y });\n }\n this.applyClusterForces(d, p, x, 60);\n for (const [w, R] of f) {\n const E = this.areaNodes.get(w), C = this.areaNodes.get(R.hubId);\n !E || !C || (E.x = C.x + R.dx, E.y = C.y + R.dy);\n }\n let k = 1 / 0, D = 1 / 0, $ = -1 / 0, X = -1 / 0;\n for (const w of t) {\n const R = this.areaNodes.get(w);\n k = Math.min(k, R.x), D = Math.min(D, R.y), $ = Math.max($, R.x + R.width), X = Math.max(X, R.y + R.height);\n }\n return { minX: k, minY: D, maxX: $, maxY: X };\n }\n getDirectionOffset(t) {\n const s = {\n north: { x: 0, y: -1 },\n south: { x: 0, y: 1 },\n east: { x: 1, y: 0 },\n west: { x: -1, y: 0 },\n northeast: { x: 0.75, y: -0.75 },\n northwest: { x: -0.75, y: -0.75 },\n southeast: { x: 0.75, y: 0.75 },\n southwest: { x: -0.75, y: 0.75 }\n };\n return t && s[t] ? s[t] : { x: 1, y: 0 };\n }\n applyClusterForces(t, s, e, i) {\n const r = /* @__PURE__ */ new Map();\n for (const h of t)\n r.set(h, { vx: 0, vy: 0 });\n for (let h = 0; h < i; h++) {\n for (const a of t) {\n const c = this.areaNodes.get(a), l = s.get(a), d = e.get(a);\n if (!c || !l || !d) continue;\n const g = l.maxX - l.minX, u = l.maxY - l.minY;\n l.minX = c.x + d.dx, l.minY = c.y + d.dy, l.maxX = l.minX + g, l.maxY = l.minY + u;\n }\n for (const a of t) {\n const c = this.areaNodes.get(a), l = r.get(a), d = s.get(a);\n if (!(!c || !l || !d)) {\n for (const g of t) {\n if (a === g) continue;\n const u = s.get(g);\n if (!u) continue;\n const f = (d.minX + d.maxX) / 2, y = (d.minY + d.maxY) / 2, p = (u.minX + u.maxX) / 2, x = (u.minY + u.maxY) / 2, k = f - p, D = y - x, $ = (d.maxX - d.minX) / 2, X = (d.maxY - d.minY) / 2, w = (u.maxX - u.minX) / 2, R = (u.maxY - u.minY) / 2, E = $ + w + 50, C = X + R + 50, S = E - Math.abs(k), M = C - Math.abs(D);\n if (S > 0 && M > 0)\n if (S < M) {\n const I = S * (k >= 0 ? 1 : -1) * 0.5;\n l.vx += I;\n } else {\n const I = M * (D >= 0 ? 1 : -1) * 0.5;\n l.vy += I;\n }\n }\n for (const g of c.connections) {\n const u = this.areaNodes.get(g.toAreaId);\n if (!u || !t.includes(g.toAreaId)) continue;\n const f = u.x - c.x, y = u.y - c.y, p = Math.sqrt(f * f + y * y) || 1, x = this.settings.areaWidth + this.settings.areaSpacing + 50, D = (p - x) * 0.015;\n l.vx += f / p * D, l.vy += y / p * D;\n }\n }\n }\n for (const a of t) {\n const c = this.areaNodes.get(a), l = r.get(a);\n !c || !l || (c.x += l.vx, c.y += l.vy, l.vx *= 0.8, l.vy *= 0.8);\n }\n }\n }\n applyForces(t, s) {\n const o = this.settings.areaWidth + this.settings.areaSpacing, n = this.settings.areaWidth / 2 + 60, r = new Set(t), h = [], a = /* @__PURE__ */ new Set();\n for (const l of t) {\n const d = this.areaNodes.get(l);\n if (d)\n for (const g of d.connections) {\n if (!r.has(g.toAreaId)) continue;\n const u = Math.min(l, g.toAreaId) + \"-\" + Math.max(l, g.toAreaId);\n a.has(u) || (a.add(u), h.push({ from: l, to: g.toAreaId }));\n }\n }\n const c = /* @__PURE__ */ new Map();\n for (const l of t)\n c.set(l, { vx: 0, vy: 0 });\n for (let l = 0; l < s; l++) {\n for (const d of t) {\n const g = this.areaNodes.get(d), u = c.get(d);\n if (!g || !u) continue;\n const f = g.x + g.width / 2, y = g.y + g.height / 2;\n for (const p of t) {\n if (d === p) continue;\n const x = this.areaNodes.get(p);\n if (!x) continue;\n const k = (g.width + x.width) / 2 + 20, D = (g.height + x.height) / 2 + 20, $ = g.x + g.width / 2, X = g.y + g.height / 2, w = x.x + x.width / 2, R = x.y + x.height / 2, E = $ - w, C = X - R, S = k - Math.abs(E), M = D - Math.abs(C);\n S > 0 && M > 0 && (S < M ? u.vx += (E >= 0 ? 1 : -1) * S * 0.5 : u.vy += (C >= 0 ? 1 : -1) * M * 0.5);\n }\n for (const p of h) {\n if (p.from === d || p.to === d) continue;\n const x = this.areaNodes.get(p.from), k = this.areaNodes.get(p.to);\n if (!x || !k) continue;\n const D = x.x + x.width / 2, $ = x.y + x.height / 2, X = k.x + k.width / 2, w = k.y + k.height / 2, R = this.closestPointOnSegment(\n f,\n y,\n D,\n $,\n X,\n w\n ), E = f - R.x, C = y - R.y, S = Math.sqrt(E * E + C * C) || 1;\n if (S < n) {\n const M = (n - S) * 0.6;\n u.vx += E / S * M, u.vy += C / S * M;\n }\n }\n for (const p of g.connections) {\n if (!r.has(p.toAreaId)) continue;\n const x = this.areaNodes.get(p.toAreaId);\n if (!x) continue;\n const k = x.x - g.x, D = x.y - g.y, $ = Math.sqrt(k * k + D * D) || 1, w = ($ - o) * 0.03;\n u.vx += k / $ * w, u.vy += D / $ * w;\n const R = this.getDirectionOffset(p.direction), E = g.x + R.x * o, C = g.y + R.y * o, S = c.get(p.toAreaId);\n S && (S.vx += (E - x.x) * 0.01, S.vy += (C - x.y) * 0.01);\n }\n }\n for (const d of t) {\n const g = this.areaNodes.get(d), u = c.get(d);\n !g || !u || (g.x += u.vx, g.y += u.vy, u.vx *= 0.8, u.vy *= 0.8);\n }\n }\n }\n closestPointOnSegment(t, s, e, i, o, n) {\n const r = o - e, h = n - i, a = t - e, c = s - i, l = r * r + h * h;\n if (l === 0)\n return { x: e, y: i };\n let d = (a * r + c * h) / l;\n return d = Math.max(0, Math.min(1, d)), {\n x: e + d * r,\n y: i + d * h\n };\n }\n edgesIntersect(t, s, e, i, o, n, r, h) {\n const a = (c, l, d, g, u, f) => (f - l) * (d - c) > (g - l) * (u - c);\n return a(t, s, o, n, r, h) !== a(e, i, o, n, r, h) && a(t, s, e, i, o, n) !== a(t, s, e, i, r, h);\n }\n drawConnections() {\n this.connectionLayer.destroyChildren();\n for (const t of this.connectionGroups) {\n const s = this.areaNodes.get(t.fromAreaId), e = this.areaNodes.get(t.toAreaId);\n if (!s || !e || !isFinite(s.x) || !isFinite(s.y) || !isFinite(e.x) || !isFinite(e.y))\n continue;\n const i = {\n x: s.x + s.width / 2,\n y: s.y + s.height / 2\n }, o = {\n x: e.x + e.width / 2,\n y: e.y + e.height / 2\n };\n let n, r;\n if (this.dotsMode ? (n = i, r = o) : (n = this.getEdgePoint(s, o), r = this.getEdgePoint(e, i)), !isFinite(n.x) || !isFinite(n.y) || !isFinite(r.x) || !isFinite(r.y))\n continue;\n const h = this.dotsMode ? \"#ffffff\" : this.settings.connectionColor, a = this.dotsMode ? 1 : Math.min(this.settings.connectionLineWidth, 1 + t.connections.length * 0.5), c = new b.Line({\n points: [n.x, n.y, r.x, r.y],\n stroke: h,\n strokeWidth: a,\n lineCap: \"round\",\n listening: !1\n });\n this.connectionLayer.add(c);\n }\n }\n getEdgePoint(t, s) {\n const e = t.x + t.width / 2, i = t.y + t.height / 2, o = s.x - e, n = s.y - i, r = t.width / 2, h = t.height / 2;\n if (o === 0 && n === 0)\n return { x: e, y: i };\n const a = Math.abs(o), c = Math.abs(n);\n let l;\n return a / r > c / h ? l = r / a : l = h / c, {\n x: e + o * l,\n y: i + n * l\n };\n }\n drawAreas() {\n this.areaLayer.destroyChildren();\n for (const [, t] of this.areaNodes) {\n if (!isFinite(t.x) || !isFinite(t.y))\n continue;\n const s = t.areaId === this.highlightedArea;\n if (this.dotsMode) {\n const i = t.x + t.width / 2, o = t.y + t.height / 2, n = new b.Group({\n x: i,\n y: o,\n draggable: !0\n }), r = new b.Circle({\n radius: 6,\n fill: s ? this.settings.highlightColor : \"#ffffff\",\n stroke: s ? this.settings.highlightColor : \"#ffffff\",\n strokeWidth: 1\n }), h = new b.Text({\n text: t.name,\n fontSize: 10,\n fill: \"#ffffff\",\n x: 10,\n y: -5\n });\n n.add(r), n.add(h), n.on(\"click tap\", () => {\n this.emitAreaClickEvent(t.areaId);\n }), n.on(\"mouseenter\", () => {\n this.stage.container().style.cursor = \"pointer\", r.fill(this.settings.highlightColor), r.stroke(this.settings.highlightColor), this.areaLayer.batchDraw();\n }), n.on(\"mouseleave\", () => {\n this.stage.container().style.cursor = \"auto\", r.fill(s ? this.settings.highlightColor : \"#ffffff\"), r.stroke(s ? this.settings.highlightColor : \"#ffffff\"), this.areaLayer.batchDraw();\n }), n.on(\"dragmove\", () => {\n t.x = n.x() - t.width / 2, t.y = n.y() - t.height / 2, this.drawConnections(), this.connectionLayer.batchDraw();\n }), n.on(\"dragstart\", () => {\n this.stage.container().style.cursor = \"grabbing\";\n }), n.on(\"dragend\", () => {\n this.stage.container().style.cursor = \"pointer\";\n }), this.areaLayer.add(n);\n } else {\n const e = new b.Group({\n x: t.x,\n y: t.y,\n draggable: !0\n }), i = new b.Rect({\n width: t.width,\n height: t.height,\n fill: this.settings.areaFillColor,\n stroke: s ? this.settings.highlightColor : this.settings.areaStrokeColor,\n strokeWidth: s ? 3 : 2,\n cornerRadius: 8\n }), o = new b.Text({\n text: t.name,\n fontSize: this.settings.fontSize,\n fill: this.settings.textColor,\n width: t.width - 10,\n height: t.height - 20,\n x: 5,\n y: 10,\n align: \"center\",\n verticalAlign: \"middle\",\n ellipsis: !0,\n wrap: \"word\"\n }), n = new b.Text({\n text: `${t.roomCount} rooms`,\n fontSize: 10,\n fill: this.settings.connectionColor,\n width: t.width - 10,\n x: 5,\n y: t.height - 18,\n align: \"center\"\n });\n e.add(i), e.add(o), e.add(n), e.on(\"click tap\", () => {\n this.emitAreaClickEvent(t.areaId);\n }), e.on(\"mouseenter\", () => {\n this.stage.container().style.cursor = \"pointer\", i.stroke(this.settings.highlightColor), this.areaLayer.batchDraw();\n }), e.on(\"mouseleave\", () => {\n this.stage.container().style.cursor = \"auto\", i.stroke(s ? this.settings.highlightColor : this.settings.areaStrokeColor), this.areaLayer.batchDraw();\n }), e.on(\"dragmove\", () => {\n t.x = e.x(), t.y = e.y(), this.drawConnections(), this.connectionLayer.batchDraw();\n }), e.on(\"dragstart\", () => {\n this.stage.container().style.cursor = \"grabbing\";\n }), e.on(\"dragend\", () => {\n this.stage.container().style.cursor = \"pointer\";\n }), this.areaLayer.add(e);\n }\n }\n }\n centerView() {\n let t = 1 / 0, s = 1 / 0, e = -1 / 0, i = -1 / 0;\n for (const [, u] of this.areaNodes)\n t = Math.min(t, u.x), s = Math.min(s, u.y), e = Math.max(e, u.x + u.width), i = Math.max(i, u.y + u.height);\n if (!isFinite(t)) return;\n const o = e - t, n = i - s, r = t + o / 2, h = s + n / 2, a = 50, c = (this.stage.width() - a * 2) / o, l = (this.stage.height() - a * 2) / n, d = Math.min(c, l, 1.5);\n this.setZoom(d);\n const g = this.stage.scaleX();\n this.stage.position({\n x: this.stage.width() / 2 - r * g,\n y: this.stage.height() / 2 - h * g\n });\n }\n highlightArea(t) {\n this.highlightedArea = t, this.drawAreas(), this.stage.batchDraw();\n }\n centerOnArea(t) {\n const s = this.areaNodes.get(t);\n if (!s) return;\n const e = this.stage.scaleX(), i = s.x + s.width / 2, o = s.y + s.height / 2;\n this.stage.position({\n x: this.stage.width() / 2 - i * e,\n y: this.stage.height() / 2 - o * e\n }), this.stage.batchDraw();\n }\n emitAreaClickEvent(t) {\n const s = new CustomEvent(\"areaclick\", {\n detail: { areaId: t }\n });\n this.stage.container().dispatchEvent(s);\n }\n getAreaNode(t) {\n return this.areaNodes.get(t);\n }\n getConnectionGroups() {\n return this.connectionGroups;\n }\n destroy() {\n this.stage.destroy();\n }\n}\nconst le = {\n 1: \"north\",\n 2: \"northeast\",\n 3: \"northwest\",\n 4: \"east\",\n 5: \"west\",\n 6: \"south\",\n 7: \"southeast\",\n 8: \"southwest\",\n 9: \"up\",\n 10: \"down\",\n 11: \"in\",\n 12: \"out\"\n}, de = [\"up\", \"down\", \"in\", \"out\"], Q = {\n 1: \"rgb(10, 155, 10)\",\n 2: \"rgb(226, 205, 59)\",\n 3: \"rgb(155, 10, 10)\"\n};\nclass ge {\n constructor(t, s) {\n this.mapReader = t, this.settings = s, this.exitRenderer = new ft(t, null, s);\n }\n getSymbolColor(t, s) {\n return this.settings.frameMode ? this.mapReader.getColorValue(t) : this.mapReader.getSymbolColor(t, s);\n }\n /**\n * Render the map area to a Canvas2D context.\n * The caller creates the canvas and context; this method draws to it.\n */\n render(t, s, e, i) {\n const o = this.mapReader.getArea(s);\n if (!o) throw new Error(`Area ${s} not found`);\n const n = o.getPlane(e);\n if (!n) throw new Error(`Plane z=${e} not found in area ${s}`);\n const r = i.padding ?? 3, h = this.computeBounds(o, n, i.roomId, r), a = i.width / h.w, c = i.height / h.h, l = Math.min(a, c);\n t.save(), t.fillStyle = this.settings.backgroundColor, t.fillRect(0, 0, i.width, i.height);\n const d = h.w * l, g = h.h * l;\n if (t.translate((i.width - d) / 2, (i.height - g) / 2), t.scale(l, l), t.translate(-h.x, -h.y), this.settings.gridEnabled) {\n const f = (i.width - d) / 2, y = (i.height - g) / 2, p = {\n x: h.x - f / l,\n y: h.y - y / l,\n w: i.width / l,\n h: i.height / l\n };\n this.renderGrid(t, p);\n }\n this.renderLabels(t, n.getLabels()), this.renderLinkExits(t, o, e), this.renderSpecialExits(t, n.getRooms()), this.renderStubs(t, n.getRooms()), this.renderRooms(t, n.getRooms()), this.renderInnerExits(t, n.getRooms());\n const u = i.overlays;\n if (u) {\n if (u.paths)\n for (const f of u.paths)\n this.renderPathOverlay(t, f.locations, f.color, s, e);\n if (u.highlights)\n for (const f of u.highlights)\n this.renderHighlightOverlay(t, f.roomId, f.color);\n u.position && this.renderPositionMarker(t, u.position.roomId);\n }\n if (this.settings.areaName) {\n const f = o.getAreaName();\n if (f) {\n const y = this.getEffectiveBounds(o, n);\n t.fillStyle = \"white\", t.font = `2.5px ${this.settings.fontFamily}`, t.textAlign = \"left\", t.textBaseline = \"bottom\", t.fillText(f, y.minX - 3.5, y.minY - 2);\n }\n }\n t.restore();\n }\n computeBounds(t, s, e, i) {\n if (e !== void 0) {\n const g = this.mapReader.getRoom(e);\n if (!g) throw new Error(`Room ${e} not found`);\n return { x: g.x - i, y: g.y - i, w: i * 2, h: i * 2 };\n }\n const o = this.getEffectiveBounds(t, s), n = this.settings.areaName ? t.getAreaName() : void 0, r = n ? 7 : 0, h = n ? 3.5 : 0, a = o.minX - h, c = o.minY - r, l = n ? o.minX - 3.5 + n.length * 2.5 * 0.6 : -1 / 0, d = Math.max(o.maxX, l);\n return { x: a - i, y: c - i, w: d - a + i * 2, h: o.maxY - c + i * 2 };\n }\n getEffectiveBounds(t, s) {\n return this.settings.uniformLevelSize ? t.getFullBounds() : s.getBounds();\n }\n getRoomEdgePoint(t, s, e, i) {\n return this.settings.roomShape === \"circle\" ? it(t, s, e, i) : this.settings.roomShape === \"roundedRectangle\" ? st(t, s, e, i, this.settings.roomSize * 0.2) : L(t, s, e, i);\n }\n // --- Grid ---\n renderGrid(t, s) {\n const e = this.settings.gridSize, i = Math.floor(s.x / e) * e, o = Math.ceil((s.x + s.w) / e) * e, n = Math.floor(s.y / e) * e, r = Math.ceil((s.y + s.h) / e) * e;\n t.strokeStyle = this.settings.gridColor, t.lineWidth = this.settings.gridLineWidth, t.setLineDash([]);\n for (let h = i; h <= o; h += e)\n t.beginPath(), t.moveTo(h, n), t.lineTo(h, r), t.stroke();\n for (let h = n; h <= r; h += e)\n t.beginPath(), t.moveTo(i, h), t.lineTo(o, h), t.stroke();\n }\n // --- Labels ---\n renderLabels(t, s) {\n for (const e of s) {\n const i = e.X, o = -e.Y;\n if ((e.BgColor?.alpha ?? 0) > 0 && !this.settings.transparentLabels) {\n const n = (e.BgColor.alpha ?? 255) / 255;\n t.fillStyle = `rgba(${e.BgColor.r},${e.BgColor.g},${e.BgColor.b},${n})`, t.fillRect(i, o, e.Width, e.Height);\n }\n if (e.Text) {\n const n = (e.FgColor?.alpha ?? 255) / 255;\n t.fillStyle = `rgba(${e.FgColor?.r ?? 0},${e.FgColor?.g ?? 0},${e.FgColor?.b ?? 0},${n})`;\n const r = Math.min(0.75, e.Width / Math.max(e.Text.length / 2, 1)), h = Math.max(0.1, Math.min(r, Math.max(e.Height * 0.9, 0.1)));\n t.font = `${h}px ${this.settings.fontFamily}`, t.textAlign = \"center\", t.textBaseline = \"middle\", t.fillText(e.Text, i + e.Width / 2, o + e.Height / 2);\n }\n }\n }\n // --- Link Exits ---\n renderLinkExits(t, s, e) {\n const i = s.getLinkExits(e);\n for (const o of i) {\n const n = this.exitRenderer.renderData(o, e);\n n && this.drawExitData(t, n);\n }\n }\n drawExitData(t, s) {\n for (const e of s.lines) {\n t.beginPath(), t.moveTo(e.points[0], e.points[1]);\n for (let i = 2; i < e.points.length; i += 2)\n t.lineTo(e.points[i], e.points[i + 1]);\n t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, t.setLineDash(e.dash ?? []), t.stroke();\n }\n for (const e of s.arrows) {\n t.beginPath(), t.moveTo(e.points[0], e.points[1]);\n for (let d = 2; d < e.points.length; d += 2)\n t.lineTo(e.points[d], e.points[d + 1]);\n t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, t.setLineDash(e.dash ?? []), t.stroke();\n const i = e.points.length - 2, o = e.points[i], n = e.points[i + 1], r = e.points[i - 2], h = e.points[i - 1], a = Math.atan2(n - h, o - r), c = e.pointerLength, l = e.pointerWidth / 2;\n t.beginPath(), t.setLineDash([]), t.moveTo(o, n), t.lineTo(o - c * Math.cos(a - Math.atan2(l, c)), n - c * Math.sin(a - Math.atan2(l, c))), t.lineTo(o - c * Math.cos(a + Math.atan2(l, c)), n - c * Math.sin(a + Math.atan2(l, c))), t.closePath(), t.fillStyle = e.fill, t.fill(), t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, t.stroke();\n }\n for (const e of s.doors)\n t.beginPath(), t.rect(e.x, e.y, e.width, e.height), t.strokeStyle = e.stroke, t.lineWidth = e.strokeWidth, t.setLineDash([]), t.stroke();\n }\n // --- Stubs ---\n renderStubs(t, s) {\n t.strokeStyle = this.settings.lineColor, t.lineWidth = this.settings.lineWidth, t.setLineDash([]);\n for (const e of s)\n for (const i of e.stubs) {\n const o = le[i];\n if (!o) continue;\n const n = this.getRoomEdgePoint(e.x, e.y, o, this.settings.roomSize / 2), r = L(e.x, e.y, o, this.settings.roomSize / 2 + 0.5);\n t.beginPath(), t.moveTo(n.x, n.y), t.lineTo(r.x, r.y), t.stroke();\n }\n }\n // --- Special Exits ---\n renderSpecialExits(t, s) {\n for (const e of s)\n for (const [i, o] of Object.entries(e.customLines)) {\n const n = [e.x, e.y];\n for (const a of o.points)\n n.push(a.x, -a.y);\n const r = `rgb(${o.attributes.color.r}, ${o.attributes.color.g}, ${o.attributes.color.b})`;\n t.strokeStyle = r, t.lineWidth = this.settings.lineWidth, o.attributes.style === \"dot line\" ? t.setLineDash([0.05, 0.05]) : o.attributes.style === \"dash line\" ? t.setLineDash([0.4, 0.2]) : t.setLineDash([]), t.beginPath(), t.moveTo(n[0], n[1]);\n for (let a = 2; a < n.length; a += 2)\n t.lineTo(n[a], n[a + 1]);\n if (t.stroke(), o.attributes.arrow && n.length >= 4) {\n const a = n.length - 2, c = n[a], l = n[a + 1], d = n[a - 2], g = n[a - 1], u = Math.atan2(l - g, c - d), f = 0.3, y = 0.1;\n t.beginPath(), t.setLineDash([]), t.moveTo(c, l), t.lineTo(c - f * Math.cos(u - Math.atan2(y, f)), l - f * Math.sin(u - Math.atan2(y, f))), t.lineTo(c - f * Math.cos(u + Math.atan2(y, f)), l - f * Math.sin(u + Math.atan2(y, f))), t.closePath(), t.fillStyle = r, t.fill();\n }\n const h = e.doors[i];\n if (h && n.length >= 4) {\n const a = n[0] + (n[2] - n[0]) / 2, c = n[1] + (n[3] - n[1]) / 2, l = this.settings.roomSize / 2;\n t.beginPath(), t.rect(a - l / 2, c - l / 2, l, l), t.strokeStyle = Q[h] ?? Q[3], t.lineWidth = this.settings.lineWidth, t.setLineDash([]), t.stroke();\n }\n }\n }\n // --- Rooms ---\n renderRooms(t, s) {\n const e = this.settings.roomSize, i = e / 2;\n for (const o of s) {\n const n = this.mapReader.getColorValue(o.env), r = this.settings.frameMode ? this.settings.backgroundColor : n, h = this.settings.frameMode ? n : this.settings.lineColor;\n if (t.fillStyle = r, t.strokeStyle = h, t.lineWidth = this.settings.lineWidth, t.setLineDash([]), this.settings.roomShape === \"circle\")\n t.beginPath(), t.arc(o.x, o.y, i, 0, Math.PI * 2), t.fill(), t.stroke();\n else {\n const a = o.x - i, c = o.y - i, l = this.settings.roomShape === \"roundedRectangle\" ? e * 0.2 : 0;\n if (l > 0 ? (this.roundRect(t, a, c, e, e, l), t.fill(), t.stroke()) : (t.fillRect(a, c, e, e), t.strokeRect(a, c, e, e)), this.settings.emboss) {\n const d = J(this.settings.lineColor) > 0.41;\n t.beginPath(), d ? (t.moveTo(a, c), t.lineTo(a + e, c), t.lineTo(a + e, c + e)) : (t.moveTo(a, c), t.lineTo(a, c + e), t.lineTo(a + e, c + e)), t.strokeStyle = d ? \"#000000\" : \"#ffffff\", t.lineWidth = this.settings.lineWidth, t.stroke();\n }\n }\n if (o.roomChar) {\n const a = this.getSymbolColor(o.env), c = e * 0.75;\n t.fillStyle = a, t.font = `bold ${c}px ${this.settings.fontFamily}`, t.textAlign = \"left\", t.textBaseline = \"alphabetic\";\n const l = t.measureText(o.roomChar);\n t.fillText(o.roomChar, o.x - l.width / 2, o.y + c * 0.35);\n }\n }\n }\n roundRect(t, s, e, i, o, n) {\n t.beginPath(), t.moveTo(s + n, e), t.lineTo(s + i - n, e), t.arcTo(s + i, e, s + i, e + n, n), t.lineTo(s + i, e + o - n), t.arcTo(s + i, e + o, s + i - n, e + o, n), t.lineTo(s + n, e + o), t.arcTo(s, e + o, s, e + o - n, n), t.lineTo(s, e + n), t.arcTo(s, e, s + n, e, n), t.closePath();\n }\n // --- Inner Exits ---\n renderInnerExits(t, s) {\n const e = this.settings.roomSize, i = e / 5;\n for (const o of s)\n for (const n of de) {\n if (!o.exits[n]) continue;\n const r = this.getSymbolColor(o.env), h = this.getSymbolColor(o.env, 0.6), a = o.doors[n], c = a !== void 0 ? Q[a] ?? Q[3] : r;\n switch (n) {\n case \"up\": {\n const l = L(o.x, o.y, \"south\", e / 4);\n this.drawTriangle(t, l.x, l.y, i, 0, h, c);\n break;\n }\n case \"down\": {\n const l = L(o.x, o.y, \"north\", e / 4);\n this.drawTriangle(t, l.x, l.y, i, 180, h, c);\n break;\n }\n case \"in\": {\n const l = L(o.x, o.y, \"west\", e / 4), d = L(o.x, o.y, \"east\", e / 4);\n this.drawTriangle(t, l.x, l.y, i, 90, h, c), this.drawTriangle(t, d.x, d.y, i, -90, h, c);\n break;\n }\n case \"out\": {\n const l = L(o.x, o.y, \"west\", e / 4), d = L(o.x, o.y, \"east\", e / 4);\n this.drawTriangle(t, l.x, l.y, i, -90, h, c), this.drawTriangle(t, d.x, d.y, i, 90, h, c);\n break;\n }\n }\n }\n }\n drawTriangle(t, s, e, i, o, n, r) {\n const c = o * Math.PI / 180;\n t.beginPath();\n for (let l = 0; l < 3; l++) {\n const d = 2 * Math.PI * l / 3 - Math.PI / 2;\n let g = Math.cos(d) * i * 1.4, u = Math.sin(d) * i * 0.8;\n const f = g * Math.cos(c) - u * Math.sin(c), y = g * Math.sin(c) + u * Math.cos(c);\n l === 0 ? t.moveTo(s + f, e + y) : t.lineTo(s + f, e + y);\n }\n t.closePath(), t.fillStyle = n, t.fill(), t.strokeStyle = r, t.lineWidth = this.settings.lineWidth, t.stroke();\n }\n // --- Overlay: Paths ---\n renderPathOverlay(t, s, e, i, o) {\n const n = mt(this.mapReader, this.settings, s, i, o), r = this.settings.lineWidth;\n t.save(), t.globalAlpha = 0.8, t.lineCap = \"round\", t.lineJoin = \"round\", t.setLineDash([]);\n const h = (c) => {\n if (!(c.length < 4)) {\n t.beginPath(), t.moveTo(c[0], c[1]);\n for (let l = 2; l < c.length; l += 2) t.lineTo(c[l], c[l + 1]);\n t.strokeStyle = \"black\", t.lineWidth = r * 8, t.stroke(), t.beginPath(), t.moveTo(c[0], c[1]);\n for (let l = 2; l < c.length; l += 2) t.lineTo(c[l], c[l + 1]);\n t.strokeStyle = e, t.lineWidth = r * 4, t.stroke();\n }\n };\n for (const c of n.segments) h(c.points);\n for (const c of n.customLines) h(c.points);\n const a = this.settings.roomSize / 5;\n for (const c of n.innerMarkers) {\n const l = c.direction === \"up\" ? 0 : c.direction === \"down\" ? 180 : c.direction === \"in\" ? 90 : -90;\n this.drawTriangle(t, c.room.x, c.room.y, a, l, e, \"black\");\n }\n t.restore();\n }\n // --- Overlay: Highlights ---\n renderHighlightOverlay(t, s, e) {\n const i = this.mapReader.getRoom(s);\n if (!i) return;\n const o = 1.5, n = this.settings.roomSize;\n if (t.strokeStyle = e, t.lineWidth = 0.1, t.setLineDash([0.05, 0.05]), this.settings.roomShape === \"circle\")\n t.beginPath(), t.arc(i.x, i.y, n / 2 * o, 0, Math.PI * 2), t.stroke();\n else {\n const r = n * o;\n t.strokeRect(i.x - r / 2, i.y - r / 2, r, r);\n }\n t.setLineDash([]);\n }\n // --- Overlay: Position Marker ---\n renderPositionMarker(t, s) {\n const e = this.mapReader.getRoom(s);\n if (!e) return;\n const i = this.settings.playerMarker, o = this.settings.roomSize * i.sizeFactor;\n t.save(), t.globalAlpha = i.strokeAlpha, t.strokeStyle = i.strokeColor, t.lineWidth = i.strokeWidth, t.setLineDash(i.dashEnabled && i.dash ? i.dash : []), t.beginPath(), t.arc(e.x, e.y, o / 2, 0, Math.PI * 2), t.stroke(), i.fillAlpha > 0 && (t.globalAlpha = i.fillAlpha, t.fillStyle = i.fillColor, t.fill()), t.restore();\n }\n}\nclass xe {\n constructor(t, s) {\n this.highlights = /* @__PURE__ */ new Map(), this.paths = [], this.mapReader = t, this.settings = s ?? zt();\n }\n drawArea(t, s) {\n const e = this.mapReader.getArea(t);\n !e || !e.getPlane(s) || (this.currentArea = t, this.currentAreaInstance = e, this.currentZIndex = s);\n }\n getCurrentArea() {\n return this.currentAreaInstance;\n }\n setPosition(t) {\n this.positionRoomId = t;\n }\n clearPosition() {\n this.positionRoomId = void 0;\n }\n renderPath(t, s = \"#66E64D\") {\n this.paths.push({ locations: t, color: s });\n }\n clearPaths() {\n this.paths = [];\n }\n renderHighlight(t, s) {\n const e = this.mapReader.getRoom(t);\n e && this.highlights.set(t, { color: s, area: e.area, z: e.z });\n }\n removeHighlight(t) {\n this.highlights.delete(t);\n }\n hasHighlight(t) {\n return this.highlights.has(t);\n }\n clearHighlights() {\n this.highlights.clear();\n }\n /**\n * Export the current area as an SVG string.\n */\n exportSvg(t) {\n if (this.currentArea === void 0 || this.currentZIndex === void 0) return;\n const s = {\n ...t,\n overlays: this.buildOverlays(t?.overlays)\n };\n return new Lt(this.mapReader, this.settings).export(this.currentArea, this.currentZIndex, s);\n }\n /**\n * Render the current area to a Canvas2D context (for PNG export).\n * The caller provides the canvas and context — works with `canvas` npm package (Node.js)\n * or OffscreenCanvas (browser).\n */\n renderToCanvas(t, s) {\n if (this.currentArea === void 0 || this.currentZIndex === void 0) return;\n const e = {\n ...s,\n overlays: this.buildOverlays(s?.overlays)\n };\n new ge(this.mapReader, this.settings).render(t, this.currentArea, this.currentZIndex, e);\n }\n buildOverlays(t) {\n const s = { ...t };\n if (this.positionRoomId !== void 0) {\n const o = this.mapReader.getRoom(this.positionRoomId);\n o && o.area === this.currentArea && o.z === this.currentZIndex && (s.position = { roomId: this.positionRoomId });\n }\n const e = [...t?.highlights ?? []];\n for (const [o, n] of this.highlights)\n n.area === this.currentArea && n.z === this.currentZIndex && e.push({ roomId: o, color: n.color });\n e.length > 0 && (s.highlights = e);\n const i = [...t?.paths ?? []];\n return i.push(...this.paths), i.length > 0 && (s.paths = i), s;\n }\n}\nexport {\n ye as AreaMapRenderer,\n ge as CanvasExporter,\n gt as ExplorationArea,\n xe as HeadlessRenderer,\n me as MapReader,\n pe as PathFinder,\n fe as Renderer,\n Lt as SvgExporter,\n J as colorLightness,\n mt as computePathData,\n ce as createAreaMapSettings,\n zt as createSettings\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["PI_OVER_180","Math","PI","glob","global","window","WorkerGlobalScope","self","Konva","_global","version","isBrowser","toString","call","isUnminified","test","param","dblClickWindow","getAngle","angle","angleDeg","enableTrace","pointerEventsEnabled","autoDrawEnabled","hitOnDragEnabled","capturePointerEventsEnabled","_mouseListenClick","_touchListenClick","_pointerListenClick","_mouseInDblClickWindow","_touchInDblClickWindow","_pointerInDblClickWindow","_mouseDblClickPointerId","_touchDblClickPointerId","_pointerDblClickPointerId","_renderBackend","legacyTextRendering","pixelRatio","devicePixelRatio","dragDistance","showWarnings","dragButtons","isDragging","isTransforming","_a","_b","isDragReady","node","releaseCanvasOnDestroy","document","_injectGlobal","console","error","_registerNode","NodeClass","prototype","getClassName","ensureBrowser","Error","Transform","constructor","m","this","dirty","slice","reset","copy","copyInto","tr","point","x","y","translate","scale","sx","sy","rotate","rad","c","cos","s","sin","m11","m12","m21","m22","getTranslation","skew","multiply","matrix","dx","dy","invert","d","m0","m1","m2","m3","m4","m5","getMatrix","decompose","a","b","delta","result","rotation","scaleX","scaleY","skewX","skewY","r","sqrt","acos","Util","_getRotation","PI_OVER_DEG180","DEG180_OVER_PI","KONVA_ERROR","COLORS","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","transparent","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","RGB_REGEX","animQueue","req","requestAnimationFrame","f","setTimeout","_isElement","obj","nodeType","_isFunction","apply","_isPlainObject","Object","_isArray","_isNumber","isNaN","isFinite","_isString","_isBoolean","isObject","val","isValidSelector","selector","firstChar","toUpperCase","_sign","number","requestAnimFrame","callback","push","length","queue","forEach","cb","createCanvasElement","canvas","createElement","style","e","createImageElement","_isInDocument","el","parentNode","_urlToImage","url","imageObj","onload","src","_rgbToHex","g","_hexToRgb","hex","replace","bigint","parseInt","getRandomColor","randColor","random","getRGB","color","rgb","substring","substr","exec","colorToRGBA","str","_namedColorToRBA","_hex3ColorToRGBA","_hex4ColorToRGBA","_hex6ColorToRGBA","_hex8ColorToRGBA","_rgbColorToRGBA","_rgbaColorToRGBA","_hslColorToRGBA","toLowerCase","indexOf","parts","match","split","map","Number","n","index","_","hsl","h","l","t2","t3","round","t1","i","haveIntersection","r1","r2","width","height","cloneObject","retObj","key","cloneArray","arr","degToRad","deg","radToDeg","_degToRad","warn","_radToDeg","radians","_capitalize","charAt","each","func","_inRange","left","right","_getProjectionToSegment","x1","y1","x2","y2","x3","y3","dist","pd2","u","_getProjectionToLine","pt","line","isClosed","pc","MAX_VALUE","p1","p2","proj","px","py","pdist","_prepareArrayForTween","startArray","endArray","start","end","temp","newStart","pr","_prepareToStringify","desc","visitedByCircularReferenceRemoval","hasOwnProperty","getOwnPropertyDescriptor","configurable","_assign","target","source","_getFirstPointerId","evt","touches","changedTouches","identifier","pointerId","releaseCanvas","canvases","drawRoundedRectPath","context","cornerRadius","xOrigin","yOrigin","abs","topLeft","topRight","bottomLeft","bottomRight","min","moveTo","lineTo","arc","drawRoundedPolygonPath","points","sides","radius","prev","curr","next","vec1","vec2","len1","hypot","len2","currCornerRadius","normalVec1","normalVec2","arcTo","CONTEXT_METHODS","_pixelRatio","_cssFiltersSupported","isCSSFiltersSupported","ctx","getContext","Context","traceArr","_enableTrace","fillShape","shape","fillEnabled","_fill","strokeShape","hasStroke","_stroke","fillStrokeShape","attrs","fillAfterStrokeEnabled","getTrace","relaxed","rounded","trace","method","args","len","join","floor","property","clearTrace","_trace","shift","getCanvas","getPixelRatio","setTransform","clear","bounds","clearRect","getWidth","getHeight","_applyLineCap","lineCap","setAttr","_applyOpacity","absOpacity","getAbsoluteOpacity","_applyLineJoin","lineJoin","_applyMiterLimit","miterLimit","attr","_context","startAngle","endAngle","counterClockwise","beginPath","bezierCurveTo","cp1x","cp1y","cp2x","cp2y","clip","closePath","createImageData","arguments","createLinearGradient","x0","y0","createPattern","image","repetition","createRadialGradient","r0","drawImage","sWidth","sHeight","dWidth","dHeight","ellipse","radiusX","radiusY","counterclockwise","isPointInPath","path","fillRule","fill","fillRect","strokeRect","fillText","text","maxWidth","measureText","getImageData","sw","sh","rect","roundRect","radii","putImageData","imageData","quadraticCurveTo","cpx","cpy","restore","save","setLineDash","segments","getLineDash","stroke","path2d","strokeText","transform","that","origSetter","methodName","ret","origMethod","retArr","util","simplifyArray","Array","prop","_applyGlobalCompositeOperation","op","globalCompositeOperation","defineProperty","get","set","SceneContext","willReadFrequently","super","_canvas","_fillColor","_fillFunc","_fillPattern","_getFillPattern","_fillLinearGradient","grd","_getLinearGradient","_fillRadialGradient","_getRadialGradient","hasColor","fillPriority","getFillPriority","hasPattern","getFillPatternImage","hasLinearGradient","getFillLinearGradientColorStops","hasRadialGradient","getFillRadialGradientColorStops","_strokeLinearGradient","getStrokeLinearGradientStartPoint","getStrokeLinearGradientEndPoint","colorStops","getStrokeLinearGradientColorStops","addColorStop","dash","strokeScaleEnabled","getStrokeScaleEnabled","dashEnabled","dashOffset","strokeWidth","getShadowForStrokeEnabled","_strokeFunc","_applyShadow","_c","getShadowRGBA","blur","getShadowBlur","offset","getShadowOffset","getAbsoluteScale","ratio","HitContext","colorKey","_fillFuncHit","hasHitStroke","hitStrokeWidth","_strokeFuncHit","Canvas","config","isCache","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","getDevicePixelRatio","padding","margin","border","background","position","top","setPixelRatio","previousRatio","setSize","setWidth","setHeight","toDataURL","mimeType","quality","err","message","SceneCanvas","isCanvasFarblingActive","fillStyle","data","isBraveBrowser","navigator","brave","isBrave","warned","HitCanvas","hitCanvas","DD","flag","_dragElements","elem","dragStatus","justDragged","Map","_drag","nodesToFireEvents","stage","getStage","setPointersPositions","pos","_changedPointerPositions","find","id","max","startPointerPos","startDrag","_setDragPosition","fire","type","_endDragBefore","drawNodes","drawNode","getLayer","draw","_endDragAfter","delete","_formatValue","RGBComponent","getNumberValidator","getNumberOrArrayOfNumbersValidator","noOfElements","isNumber","isValidArray","getNumberOrAutoValidator","getStringValidator","getStringOrGradientValidator","isString","isGradient","getBooleanValidator","addEventListener","GET","SET","Factory","addGetterSetter","def","validator","after","addGetter","addSetter","addOverloadedGetterSetter","overWriteSetter","_setAttr","addComponentsGetterSetter","components","capitalize","getter","setter","component","getAttr","basicValidator","getComponentValidator","oldVal","_fireChangeEvent","capitalizedAttr","addDeprecatedGetterSetter","backCompat","methods","oldMethodName","newMethodName","oldGetter","oldSetter","deprecated","afterSetFilter","_filterUpToDate","parseCSSFilters","cssFilter","filterRegex","filterName","filterValue","blurRadius","parseFloat","KonvaFilters","Filters","Blur","brightness","includes","Brightness","contrast","konvaContrast","Contrast","Grayscale","Sepia","Invert","ABSOLUTE_OPACITY","ALL_LISTENERS","ABSOLUTE_TRANSFORM","ABSOLUTE_SCALE","CANVAS","LISTENING","SHAPE","SPACE","STAGE","TRANSFORM","VISIBLE","TRANSFORM_CHANGE_STR","idCounter","Node","_id","eventListeners","_allEventListeners","parent","_cache","_attachedDepsListeners","_lastPos","_batchingTransformChange","_needClearTransformCache","_isUnderCache","_dragEventId","_shouldFireChangeEvents","setAttrs","hasChildren","_clearCache","_getCache","privateGetter","cache","_calculate","name","deps","depsString","dep","on","_getCanvasCache","_clearSelfAndDescendantCache","clearCache","has","scene","filter","hit","buffer","_requestDraw","conf","getClientRect","skipTransform","relativeTo","getParent","ceil","drawBorder","hitCanvasPixelRatio","cachedSceneCanvas","cachedFilterCanvas","cachedHitCanvas","sceneContext","hitContext","bufferCanvas","bufferContext","imageSmoothingEnabled","drawScene","drawHit","isCached","_transformedRect","minX","Infinity","minY","maxX","maxY","trans","getAbsoluteTransform","transformed","_drawCachedSceneCanvas","canvasCache","cacheCanvas","_getCachedSceneCanvas","_drawCachedHitCanvas","filters","cachedCanvas","sceneCanvas","filterCanvas","filterContext","useNativeOnly","finalFilter","evtStr","handler","_delegate","events","baseEvent","off","t","event","_off","dispatchEvent","removeEventListener","stopNode","targets","findAncestors","currentTarget","remove","stopDrag","_remove","_clearCaches","children","splice","_setChildrenIndices","destroy","getAncestors","ancestors","getAttrs","_batchTransformChanges","isListening","_isListening","listening","isVisible","_isVisible","visible","shouldDrawHit","skipDragCheck","layer","layerUnderDrag","dragSkip","show","hide","getZIndex","getAbsoluteZIndex","nodes","child","depth","getDepth","addChildren","concat","getChildren","setPosition","getPosition","getRelativePointerPosition","getPointerPosition","getAbsolutePosition","haveCachedParent","absoluteMatrix","absoluteTransform","setAbsolutePosition","origTrans","_clearTransform","it","_getAbsoluteTransform","_setTransform","offsetX","offsetY","move","change","changeX","changeY","_eachAncestorReverse","family","unshift","theta","moveToTop","moveUp","moveDown","moveToBottom","setZIndex","zIndex","_getAbsoluteOpacity","opacity","newContainer","add","toObject","defaultValue","nonPlainObject","className","toJSON","JSON","stringify","includeSelf","res","_isMatch","ancestor","isAncestorOf","findAncestor","sel","selectorArr","hasName","_getStage","eventType","bubble","_fireAndBubble","_fire","at","transformsEnabled","getTransform","getAbsoluteRotation","_getTransform","clone","allListeners","listener","_toKonvaCanvas","box","toCanvas","toImage","Promise","resolve","reject","img","toBlob","blob","size","getSize","getType","getDragDistance","evtName","evtListeners","newVal","addName","oldName","newName","fullName","removeName","names","batchDraw","_setComponentAttr","compareShape","nonBubbling","stopBubble","cancelBubble","_getProtoListeners","getPrototypeOf","hierarchyEvents","topListeners","selfListeners","_createDragElement","ap","_getPointerById","bubbleEvent","newNodePos","dbf","dragBoundFunc","bounded","setDraggable","draggable","_dragChange","_listenDrag","_dragCleanup","hasDraggingChild","dragElement","isReady","isClientRectOnScreen","screenRect","create","container","parse","_createNode","no","Class","_attrsAffectingSize","rotateDeg","setRotationDeg","getRotationDeg","Container","filterFunc","removeChildren","destroyChildren","_validateAdd","_generalFind","findOne","_descendants","valid","fn","shouldStop","getAllIntersections","intersects","can","caching","_drawChildren","drawMethod","clipWidth","clipHeight","clipFunc","hasClip","selfCache","clipArgs","clipX","clipY","hasComposition","selfRect","skipShadow","skipStroke","shapes","hasVisible","Captures","SUPPORT_POINTER_EVENTS","getCapturedShape","createEvent","hasPointerCapture","setPointerCapture","releaseCapture","PointerEvent","content","MOUSELEAVE","MOUSEOVER","MOUSEENTER","MOUSEMOVE","MOUSEDOWN","MOUSEUP","POINTERMOVE","POINTERDOWN","POINTERUP","POINTERCANCEL","POINTEROUT","POINTERLEAVE","POINTEROVER","POINTERENTER","CONTEXTMENU","TOUCHSTART","TOUCHEND","TOUCHMOVE","TOUCHCANCEL","WHEEL","EVENTS","EVENTS_MAP","mouse","pointerclick","pointerdblclick","touch","pointer","getEventType","getEventsMap","checkNoClip","stages","Stage","_pointerPositions","_buildDOM","_bindContentEvents","_resizeDOM","_checkVisibility","isLayer","isFastLayer","throw","display","setContainer","getElementsByClassName","getElementById","parentElement","removeChild","appendChild","layers","bufferHitCanvas","p","getPointersPositions","getContent","layerCanvas","getIntersection","rest","PointerEvents.hasPointerCapture","PointerEvents.setPointerCapture","PointerEvents.releaseCapture","getLayers","passive","_pointerenter","pointerenter","_pointerover","pointerover","_getTargetShape","evenType","_pointerleave","targetShape","eventsEnabled","pointerout","pointerleave","pointerPos","_pointerdown","triggeredOnShape","pointerdown","isTouch","preventDefault","cancelable","_pointermove","isTouchPointer","pointerType","processedShapesIds","PointerEvents.getCapturedShape","differentTarget","pointermove","_pointerup","clickStartShape","clickEndShape","skipPointerUpTrigger","fireDblClick","clearTimeout","pointerup","_contextmenu","_wheel","_pointercancel","PointerEvents.createEvent","_lostpointercapture","contentPosition","_getContentPosition","clientX","clientY","_setPointerPosition","getBoundingClientRect","clientWidth","clientHeight","innerHTML","userSelect","setAttribute","HAS_SHADOW","SHADOW_RGBA","patternImage","linearGradient","radialGradient","dummyContext","getDummyContext","Shape","getSceneFunc","sceneFunc","getHitFunc","hitFunc","hasShadow","_hasShadow","shadowEnabled","shadowOpacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","__getFillPattern","fillPatternImage","pattern","fillPatternRepeat","fillPatternX","fillPatternY","fillPatternRotation","fillPatternScaleX","fillPatternScaleY","fillPatternOffsetX","fillPatternOffsetY","DOMMatrix","__getLinearGradient","fillLinearGradientColorStops","fillLinearGradientStartPoint","fillLinearGradientEndPoint","__getRadialGradient","fillRadialGradientColorStops","fillRadialGradientStartPoint","fillRadialGradientEndPoint","fillRadialGradientStartRadius","fillRadialGradientEndRadius","_getShadowRGBA","rgba","hasFill","strokeEnabled","strokeLinearGradientColorStops","_useBufferCanvas","forceFill","perfectDrawEnabled","isTransparent","strokeForShadow","shadowForStrokeEnabled","setStrokeHitEnabled","getStrokeHitEnabled","getSelfRect","_centroid","hasCachedParent","fillAndStrokeWidth","fillAndStrokeHeight","applyShadow","preWidth","preHeight","drawFunc","cachingSelf","bc","o","drawHitFromCache","alphaThreshold","hitWidth","hitHeight","hitImageData","hitData","rgbColorKey","dashArray","getDashArray","setDashArray","getDrawFunc","setDrawFunc","drawHitFunc","getDrawHitFunc","setDrawHitFunc","INTERSECTION_OFFSETS","INTERSECTION_OFFSETS_LEN","Layer","_waitingForDraw","_setSmoothEnabled","createPNGStream","getNativeCanvasElement","getHitCanvas","insertBefore","spiralSearchDistance","continueSearch","intersectionOffset","_getIntersection","antialiased","p3","clearBeforeDraw","enableHitGraph","hitGraphEnabled","disableHitGraph","setHitGraphEnabled","getHitGraphEnabled","toggleHitCanvas","FastLayer","Group","now","performance","Date","getTime","Animation","animIdCounter","frame","time","timeDiff","lastTime","frameRate","setLayers","lays","isArray","addLayer","isRunning","animations","stop","_addAnimation","_removeAnimation","_updateFrameObject","anim","_handleAnimation","_runFrames","layerHash","layersLen","needRedraw","_animationLoop","Anim","animRunning","blacklist","duration","easing","onFinish","yoyo","colorAttrs","TweenEngine","propFunc","begin","finish","_pos","_change","prevPos","_time","_position","_startTime","_finish","pause","setTime","reverse","play","update","state","getTimer","onEnterFrame","seek","Tween","nodeId","Easings","Linear","tween","_tweenFunc","_addListeners","tweens","_addAttr","onReset","onUpdate","diff","trueEnd","trueStart","endRGBA","tweenId","closed","startRGBA","onPlay","onReverse","onPause","thisId","keys","to","params","BackEaseIn","BackEaseOut","BackEaseInOut","ElasticEaseIn","asin","pow","ElasticEaseOut","ElasticEaseInOut","BounceEaseOut","BounceEaseIn","BounceEaseInOut","EaseIn","EaseOut","EaseInOut","StrongEaseIn","StrongEaseOut","StrongEaseInOut","Global","Arc","_sceneFunc","clockwise","outerRadius","innerRadius","boundLeftRatio","boundTopRatio","boundBottomRatio","boundLeft","boundTop","boundBottom","getControlPoints","d01","d12","fa","fb","expandPoints","tension","allPoints","cp","Line","bezier","tp","getTensionPoints","_getTensionPoints","_getTensionPointsClosed","firstControlPoints","lastControlPoints","middle","TypedArray","Int8Array","item","getNumberArrayValidator","tValues","cValues","binomialCoefficients","getCubicArcLength","xs","ys","sum","correctedT","z","BFunc","getQuadraticArcLength","ax","ay","bx","by","A","B","C","k","uuk","bbk","term","log","xbase","getDerivative","ybase","combined","derivative","vs","_vs","value","t2length","totalLength","step","numIterations","increasedTLength","increasedTError","decreasedTLength","decreasedTError","Path","dataArray","pathLength","_readDataAttribute","parsePathData","getPathLength","ca","command","cx","cy","rx","ry","dTheta","psi","fs","inc","getPointOnEllipticalArc","getPointOnCubicBezier","getLength","getPointAtLength","getPointAtLengthOfDataArray","getLineLength","ii","getPointOnLine","getPointOnQuadraticBezier","P1x","P1y","P2x","P2y","fromX","fromY","run","rise","ix","iy","pRise","pRun","adjustedRun","pct","P3x","P3y","P4x","P4y","CB1","CB2","CB3","CB4","QB1","QB2","QB3","cosPsi","sinPsi","cs","cc","RegExp","coords","re","arcParamIndex","j","jlen","token","parsedArc","parsed","cmd","startX","startY","prevCmd","ctlPtx","ctlPty","idx","convertEndpointToCenterParameterization","calcLength","psiDeg","xp","yp","lambda","cxp","cyp","vMag","v","vRatio","vAngle","Arrow","PI2","fromTension","pointerLength","lp","lastLength","previous","atan2","pointerWidth","pointerAtEnding","__fillStroke","pointerAtBeginning","isDashEnabled","lineRect","Circle","Ellipse","Image","_loadListener","props","_removeImageLoad","_setImageLoad","complete","readyState","hasCornerRadius","cropWidth","cropHeight","cropX","cropY","_hitFunc","fromURL","onError","onerror","crossOrigin","ATTR_CHANGE_LIST","UP","RIGHT","DOWN","LEFT","attrChangeListLen","Label","_sync","getText","getTag","pointerDirection","pointerHeight","tag","Tag","direction","Rect","RegularPolygon","_getPoints","PIx2","Ring","Sprite","_updated","updated","frameIndex","clearInterval","interval","_setInterval","animation","ix4","offsets","frameOffsets","ix2","setInterval","_updateIndex","getIndex","setIndex","Star","numPoints","stringToArray","string","reduce","acc","char","array","nextChar","AUTO","INHERIT","JUSTIFY","MIDDLE","NORMAL","NONE","Text","checkDefaultFill","_partialTextX","_partialTextY","_setTextData","textArr","textArrLen","fontSize","lineHeightPx","lineHeight","verticalAlign","alignY","align","totalWidth","letterSpacing","charRenderFunc","textDecoration","shouldUnderline","shouldLineThrough","translateY","baseline","metrics","measureSize","fontBoundingBoxAscent","actualBoundingBoxAscent","fontBoundingBoxDescent","actualBoundingBoxDescent","_getContextFont","lineTranslateX","lineTranslateY","lastLine","lastInParagraph","lineWidth","gradient","strokeStyle","_partialText","spacesNumber","li","letter","lineIndex","column","isLastInLine","yOffset","setText","getTextWidth","textWidth","getTextHeight","textHeight","_d","_e","_f","_g","_h","_j","_k","_l","font","scaleFactor","actualBoundingBoxLeft","actualBoundingBoxRight","alphabeticBaseline","emHeightAscent","emHeightDescent","hangingBaseline","ideographicBaseline","fontStyle","fontVariant","fontFamily","hasSpace","trim","hasQuotes","_addTextLine","_getTextWidth","lines","fixedWidth","fixedHeight","maxHeightPx","currentHeightPx","wrap","wrapAtWord","shouldAddEllipsis","ellipsis","additionalWidth","low","high","matchWidth","mid","substrWidth","lineArray","matchArray","wrapIndex","lastSpaceIndex","lastIndexOf","lastDashIndex","trimRight","_shouldHandleEllipsis","_tryToAddEllipsisToLastLine","trimLeft","hasLine","partialText","TextPath","dummyCanvas","_getTextPathLength","_getPointAtLength","textBaseline","glyphInfo","p0","_getTextSize","charArr","chars","kerningFunc","offsetToGlyph","charStartPoint","glyphWidth","numberOfSpaces","charEndPoint","kern","midpoint","transposeX","transposeY","info","EVENTS_NAME","NODES_RECT","ANGLES","TOUCH_DEVICE","ANCHORS_NAMES","rotateAroundPoint","angleRad","rotateAroundCenter","deltaRad","center","getCenter","activeTransformersCount","Transformer","_movingAnchorName","_transforming","_createElements","_handleMouseMove","bind","_handleMouseUp","getNode","attachTo","setNode","setNodes","_nodes","_getEventNamespace","detach","filteredNodes","useSingleNodeRotation","onChange","_resetTransformCache","additionalEvents","_proxyDrag","lastPos","otherNode","otherAbs","getNodes","getActiveAnchor","_getNodeRect","__getNodeRect","__getNodeShape","rot","relative","ignoreStroke","absScale","absPos","totalPoints","getX","getY","_createBack","_createAnchor","anchor","_handleMouseDown","rotateCursor","rotateAnchorCursor","cursor","anchorName","getCursor","_cursorChange","back","rotateEnabled","rotateLineVisible","rotateAnchorOffset","shouldOverdrawWholeArea","hypotenuse","_anchorDragOffset","newHypotenuse","anchorNode","pp","oldAbs","anchorDragBoundFunc","newAbs","newRotation","tol","rotationSnapTolerance","snappedRot","snaps","newRotationRad","snapped","absDiff","getSnap","rotationSnaps","_fitNodesInto","shiftBehavior","keepProportion","keepRatio","shiftKey","centeredScaling","altKey","comparePoint","reverseX","reverseY","topOffsetX","topOffsetY","bottomOffsetX","bottomOffsetY","_removeEvents","newAttrs","oldAttrs","boundBoxFunc","baseSize","oldTr","newTr","newScaleX","newScaleY","flipEnabled","parentTransform","localTransform","newLocalTransform","forceUpdate","_batchChangeChild","enabledAnchors","resizeEnabled","anchorSize","anchors","anchorStroke","anchorStrokeWidth","anchorFill","anchorCornerRadius","borderEnabled","borderStroke","borderStrokeWidth","borderDash","some","styleFunc","anchorStyleFunc","stopTransform","lineEnabled","rotateHandlerOffset","enabledHandlers","Wedge","BlurStack","getAngleDeg","setAngleDeg","mul_table","shg_table","remap","fromValue","fromMin","fromMax","toMin","toMax","fromRange","toRange","toValue","pixelAt","idata","rgbDistance","Core","pixels","yi","yw","r_sum","g_sum","b_sum","a_sum","r_out_sum","g_out_sum","b_out_sum","a_out_sum","r_in_sum","g_in_sum","b_in_sum","a_in_sum","pg","pb","pa","rbs","div","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","mul_sum","shg_sum","stackEnd","stack","stackIn","stackOut","filterGaussBlurRGBA","Brighten","adjust","nPixels","Emboss","w","strength01","embossStrength","whiteLevel01","embossWhiteLevel","directionDeg","bottom","embossDirection","blend","embossBlend","strength","bias","dirRad","SCALE","Uint8ClampedArray","lum","Float32Array","Gx","Gy","OFF","clamp8","outGray","oTop","oBot","oL","oR","Enhance","nSubPixels","rMin","rMax","gMin","gMax","bMin","bMax","enhanceAmount","enhance","rGoalMax","rGoalMin","gGoalMax","gGoalMin","bGoalMax","bGoalMin","rMid","gMid","bMid","HSL","saturation","hue","luminance","vsu","vsw","rr","rg","rb","gr","gg","gb","br","bg","bb","HSV","Kaleidoscope","xSize","ySize","xoff","srcPos","dstPos","power","kaleidoscopePower","kaleidoscopeAngle","tempCanvas","scratchData","dst","opt","srcPixels","dstPixels","xMid","polarCenterX","yMid","polarCenterY","rSize","tSize","conversion","ToPolar","minSectionSize","sectionSize","xStart","xEnd","xDelta","FromPolar","Mask","mask","threshold","rgbv_no","rgbv_ne","rgbv_so","rgbv_se","thres","mean","pTab","rgbMean","backgroundMask","weights","side","halfSide","maskResult","so","scy","scx","wt","erodeMask","dilateMask","smoothEdgeMask","applyMask","Noise","amount","noise","half","Pixelate","pixelSize","nBinsX","nBinsY","xBin","yBin","alpha","xBinStart","xBinEnd","yBinStart","yBinEnd","pixelsInBin","Posterize","levels","RGB","RGBA","ia","Solarize","Threshold","level","Z","$t","ne","nw","se","N","north","south","east","west","northeast","northwest","southeast","southwest","up","down","in","out","et","dt","Dt","ut","L","st","SQRT2","H","Pt","At","ft","mapReader","mapRenderer","settings","getRoomEdgePoint","roomShape","roomSize","renderData","renderDataWithColor","lineColor","aDir","bDir","renderTwoWayExitData","renderOneWayExitData","getRoom","customLines","doors","arrows","targetRoomId","area","$","getColorValue","env","X","R","D","render","renderWithColor","renderTwoWayExit","renderOneWayExit","values","renderDoor","renderAreaExit","renderSpecialExits","entries","flatMap","attributes","arrow","getSpecialExitAreaTargets","specialExits","exits","renderStubs","stubs","getSymbolColor","frameMode","renderInnerExits","It","rooms","labels","createBounds","getRooms","getLabels","getBounds","POSITIVE_INFINITY","NEGATIVE_INFINITY","Y","Width","Height","tt","planes","createPlanes","createExits","getAreaName","areaName","getAreaId","areaId","getVersion","markDirty","getPlane","getPlanes","getZLevels","sort","getFullBounds","getLinkExits","from","origin","dir","Set","oppositeDir","yt","basePlane","visitedRooms","gt","planeCache","WeakMap","areaRoomIds","getVisitedRoomCount","getTotalRoomCount","hasVisitedRoom","getVisitedRoomIds","addVisitedRoom","addVisitedRooms","G","U","Xt","fromDir","customLineKey","fromRoom","toRoom","toDir","Wt","xt","Yt","Nt","Tt","Ot","mt","room","innerMarkers","Bt","paths","overlayLayer","createStrokedLine","renderInnerExitMarker","renderPath","clearPaths","Ft","Vt","nt","bt","Lt","exitRenderer","getArea","computeBounds","roomId","backgroundColor","gridEnabled","renderGrid","renderLabels","renderLinkExits","renderRooms","overlays","renderPathOverlay","locations","highlights","renderHighlightOverlay","renderPositionMarker","getEffectiveBounds","uniformLevelSize","gridSize","gridColor","gridLineWidth","labelRenderMode","pixMap","BgColor","transparentLabels","labelColor","FgColor","renderExitData","renderSvgLine","renderSvgArrow","renderSvgDoor","emboss","J","roomChar","svgTriangle","innerExitRotation","playerMarker","sizeFactor","fillAlpha","fillColor","strokeColor","strokeAlpha","q","startsWith","Gt","samples","lastCullingTime","windowSize","setCallback","record","flush","computeFps","cullingMs","gridMs","visibleRooms","totalRooms","visibleExits","fps","K","zt","instantMapMove","highlightCurrentRoom","cullingEnabled","cullingMode","cullingBounds","perfCallback","borders","fe","currentZoom","currentRoomOverlay","roomNodes","centerOnResize","minZoom","standaloneExitNodes","spatialBucketSize","roomSpatialIndex","exitSpatialIndex","visibleStandaloneExitNodes","bufferRoomSet","bufferExitSet","bufferRoomCandidates","bufferExitCandidates","cullingScheduled","perfMonitor","areaExitHitZones","visibleExitDrawData","cachedGridBounds","onResize","gridLayer","linkLayer","roomLayer","positionLayer","pathRenderer","initScaling","scheduleRoomCulling","emitPanEvent","initRoomHitDetection","clientToMapPoint","findRoomAtClientPoint","getBucketKey","findAreaExitAtClientPoint","button","emitRoomClickEvent","emitAreaExitClickEvent","emitMapClickEvent","emitRoomContextEvent","currentRoomId","centerOnRoom","deltaY","ctrlKey","setZoom","emitZoomChangeEvent","drawArea","currentArea","currentAreaInstance","currentZIndex","currentAreaVersion","clearCurrentRoomOverlay","positionRender","invalidateGridCache","standaloneExitBoundsRoomSize","exitBatchShape","computeSpatialBucketSize","renderExits","renderAreaName","refreshHighlights","updateRoomCulling","exportSvg","export","exportPng","exportPngBlob","forEachBucket","addRoomToSpatialIndex","addStandaloneExitToSpatialIndex","collectRoomCandidates","collectStandaloneExitCandidates","refreshStandaloneExitBoundsIfNeeded","CustomEvent","detail","zoom","getViewportBounds","zoomToCenter","getZoom","getAreaBounds","fitArea","setCullingMode","getCullingMode","getCurrentArea","refreshCurrentRoomOverlay","updateCurrentRoomOverlay","updateBackground","refresh","updatePositionMarker","clearPosition","centerOn","centerOnRoomView","renderHighlight","createHighlightShape","removeHighlight","hasHighlight","clearHighlights","currentTransition","renderSymbol","group","syncPerfMonitor","P","O","T","F","V","E","S","M","I","W","createOverlayRoomGroup","drawExitData","renderLabelAsData","getLabelColor","rgbValue","symbolColor","vt","me","areas","areaSources","explorationEnabled","colors","envId","symbolColorValue","getExplorationArea","getAreas","ensureVisitedRooms","applyExplorationDecoration","decorateWithExploration","setVisitedRooms","getVisitedRooms","clearExplorationDecoration","isExplorationEnabled","_t","__esModule","default","rt","kt","Rt","ht","St","ct","Et","lt","Mt","Qt","ee","priority","TypeError","assign","isEmpty","graph","addNode","addVertex","removeNode","cost","avoid","shortestPath","Jt","ie","Ct","oe","pop","pe","_algorithm","adj","maxEdgeDistance","minEdgeWeight","graphDefinition","buildGraph","algorithm","setAlgorithm","findPath","weight","ae","resolveEdgeWeight","exitWeights","exitLocks","mSpecialExitLocks"],"mappings":"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CI,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,mBACH,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBAEJ,EACI,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,kBACH,mBACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,mBACH,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,kBACA,mBACA,mBACA,oBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,mBACH,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,EACI,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,mBACH,oBACA,mBACA,oBACA,mBACA,oBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,gBACA,iBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,mBACA,oBACA,mBACA,oBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,kBACH,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,mBACA,oBACA,mBACA,oBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,kBACH,mBACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,oBAGKC,GAAU,CACnB,GACA,GACA,CAAC,EAAK,GACN,CACI,kBACA,kBACA,mBAEJ,CACI,kBACA,kBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,mBAEJ,CACI,iBACA,iBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBAEJ,CACI,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,gBACA,gBACA,mBACA,mBACA,kBACA,kBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,oBACA,oBACA,oBACA,oBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,mBACA,mBACA,kBACA,mBAEJ,CACI,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,kBACA,oBAGKC,GAAuB,CAAC,CAAC,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAA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IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEpEC,GAAY,CACd,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,G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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56]}