mirror of
https://github.com/nextcloud/server.git
synced 2026-10-20 07:19:44 +02:00
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
1 line
1.1 MiB
Plaintext
1 line
1.1 MiB
Plaintext
{"version":3,"file":"ImageEditor-vIoEdj3r.chunk.mjs","sources":["../node_modules/konva/lib/Global.js","../node_modules/konva/lib/Util.js","../node_modules/konva/lib/Context.js","../node_modules/konva/lib/Canvas.js","../node_modules/konva/lib/DragAndDrop.js","../node_modules/konva/lib/Validators.js","../node_modules/konva/lib/Factory.js","../node_modules/konva/lib/Node.js","../node_modules/konva/lib/Container.js","../node_modules/konva/lib/PointerEvents.js","../node_modules/konva/lib/Stage.js","../node_modules/konva/lib/Shape.js","../node_modules/konva/lib/Layer.js","../node_modules/konva/lib/FastLayer.js","../node_modules/konva/lib/Group.js","../node_modules/konva/lib/Animation.js","../node_modules/konva/lib/Tween.js","../node_modules/konva/lib/_CoreInternals.js","../node_modules/konva/lib/shapes/Arc.js","../node_modules/konva/lib/BezierFunctions.js","../node_modules/konva/lib/shapes/Line.js","../node_modules/konva/lib/shapes/Path.js","../node_modules/konva/lib/shapes/Arrow.js","../node_modules/konva/lib/shapes/Circle.js","../node_modules/konva/lib/shapes/Ellipse.js","../node_modules/konva/lib/shapes/Image.js","../node_modules/konva/lib/shapes/Label.js","../node_modules/konva/lib/shapes/Rect.js","../node_modules/konva/lib/shapes/RegularPolygon.js","../node_modules/konva/lib/shapes/Ring.js","../node_modules/konva/lib/shapes/Sprite.js","../node_modules/konva/lib/shapes/Star.js","../node_modules/konva/lib/shapes/Text.js","../node_modules/konva/lib/shapes/TextPath.js","../node_modules/konva/lib/shapes/Transformer.js","../node_modules/konva/lib/shapes/Wedge.js","../node_modules/konva/lib/filters/Blur.js","../node_modules/konva/lib/filters/Brighten.js","../node_modules/konva/lib/filters/Brightness.js","../node_modules/konva/lib/filters/Contrast.js","../node_modules/konva/lib/filters/Emboss.js","../node_modules/konva/lib/filters/Enhance.js","../node_modules/konva/lib/filters/Grayscale.js","../node_modules/konva/lib/filters/HSL.js","../node_modules/konva/lib/filters/HSV.js","../node_modules/konva/lib/filters/Invert.js","../node_modules/konva/lib/filters/Kaleidoscope.js","../node_modules/konva/lib/filters/Mask.js","../node_modules/konva/lib/filters/Noise.js","../node_modules/konva/lib/filters/Pixelate.js","../node_modules/konva/lib/filters/Posterize.js","../node_modules/konva/lib/filters/RGB.js","../node_modules/konva/lib/filters/RGBA.js","../node_modules/konva/lib/filters/Sepia.js","../node_modules/konva/lib/filters/Solarize.js","../node_modules/konva/lib/filters/Threshold.js","../node_modules/konva/lib/_FullInternals.js","../node_modules/@nextcloud/image-editor/dist/index.mjs","../node_modules/@nextcloud/viewer/dist/chunks/ImageEditor.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.3.3',\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('Several 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: ', 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, 134, 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, 250, 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, 221],\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: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 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, 50],\n};\nlet _isCanvasFarblingActive = null;\nconst defaultWindow = typeof window !== 'undefined' ? window : {};\nconst animQueues = new WeakMap();\nconst requestFrame = (win, f) => {\n if (typeof win.requestAnimationFrame === 'function') {\n win.requestAnimationFrame(f);\n }\n else if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(f);\n }\n else {\n setTimeout(f, 16);\n }\n};\nconst capitalizeCache = new Map();\nconst splitColorComponents = (str) => {\n const components = str.trim();\n return components.indexOf(',') === -1\n ? components.split(/\\s*\\/\\s*|\\s+/)\n : components.split(/\\s*,\\s*/);\n};\nconst NUMBER_SOURCE = '[+-]?(?:\\\\d+\\\\.?\\\\d*|\\\\.\\\\d+)(?:e[+-]?\\\\d+)?';\nconst COLOR_COMPONENT_REGEX = new RegExp(`^(${NUMBER_SOURCE})(%?)$`, 'i');\nconst parseColorComponent = (value, max) => {\n const match = COLOR_COMPONENT_REGEX.exec(value);\n if (!match) {\n return NaN;\n }\n return match[2] ? (Number(match[1]) / 100) * max : Number(match[1]);\n};\nconst HEX_COLOR_REGEX = /^#[0-9a-f]+$/i;\nconst clamp01 = (value) => Math.min(Math.max(value, 0), 1);\nconst HUE_REGEX = new RegExp(`^(${NUMBER_SOURCE})(deg|grad|rad|turn)?$`, 'i');\nconst HUE_UNITS = {\n deg: 1,\n grad: 0.9,\n rad: DEG180_OVER_PI,\n turn: 360,\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, win) {\n const target = (win && !win.closed && win) || defaultWindow;\n let queue = animQueues.get(target);\n if (!queue) {\n queue = [];\n animQueues.set(target, queue);\n requestFrame(target, function () {\n animQueues.delete(target);\n queue.forEach(function (cb) {\n cb();\n });\n });\n }\n queue.push(callback);\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 return !!el.isConnected;\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 isCanvasFarblingActive() {\n if (_isCanvasFarblingActive !== null) {\n return _isCanvasFarblingActive;\n }\n if (typeof document === 'undefined') {\n _isCanvasFarblingActive = false;\n return false;\n }\n const c = this.createCanvasElement();\n c.width = 10;\n c.height = 10;\n const ctx = c.getContext('2d', {\n willReadFrequently: true,\n });\n ctx.clearRect(0, 0, 10, 10);\n ctx.fillStyle = '#282828';\n ctx.fillRect(0, 0, 10, 10);\n const d = ctx.getImageData(0, 0, 10, 10).data;\n let isFarbling = false;\n for (let i = 0; i < 100; i++) {\n if (d[i * 4] !== 40 ||\n d[i * 4 + 1] !== 40 ||\n d[i * 4 + 2] !== 40 ||\n d[i * 4 + 3] !== 255) {\n isFarbling = true;\n break;\n }\n }\n _isCanvasFarblingActive = isFarbling;\n this.releaseCanvas(c);\n return _isCanvasFarblingActive;\n },\n getHitColor() {\n const color = this.getRandomColor();\n return this.isCanvasFarblingActive()\n ? this.getSnappedHexColor(color)\n : color;\n },\n getHitColorKey(r, g, b) {\n if (this.isCanvasFarblingActive()) {\n r = Math.round(r / 5) * 5;\n g = Math.round(g / 5) * 5;\n b = Math.round(b / 5) * 5;\n }\n return HASH + this._rgbToHex(r, g, b);\n },\n getSnappedHexColor(hex) {\n const rgb = this._hexToRgb(hex);\n return (HASH +\n this._rgbToHex(Math.round(rgb.r / 5) * 5, Math.round(rgb.g / 5) * 5, Math.round(rgb.b / 5) * 5));\n },\n getRGB(color) {\n var _a;\n const { r = 0, g = 0, b = 0 } = (_a = Util.colorToRGBA(color)) !== null && _a !== void 0 ? _a : {};\n return { r, g, b };\n },\n colorToRGBA(str) {\n str = (str || '').trim() || 'black';\n const color = 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._hslColorToRGBA(str);\n if (color && [color.r, color.g, color.b, color.a].every(Util._isNumber)) {\n return color;\n }\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: c.length > 3 ? c[3] : 1,\n };\n },\n _rgbColorToRGBA(str) {\n const match = /^rgba?\\(([^)]*)\\)$/i.exec(str);\n if (!match) {\n return;\n }\n const parts = splitColorComponents(match[1]);\n if (parts.length < 3 || parts.length > 4) {\n return;\n }\n return {\n r: parseColorComponent(parts[0], 255),\n g: parseColorComponent(parts[1], 255),\n b: parseColorComponent(parts[2], 255),\n a: parts.length > 3 ? parseColorComponent(parts[3], 1) : 1,\n };\n },\n _hex8ColorToRGBA(str) {\n if (str.length === 9 && HEX_COLOR_REGEX.test(str)) {\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.length === 7 && HEX_COLOR_REGEX.test(str)) {\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.length === 5 && HEX_COLOR_REGEX.test(str)) {\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.length === 4 && HEX_COLOR_REGEX.test(str)) {\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 const match = /^hsla?\\(([^)]*)\\)$/i.exec(str);\n if (!match) {\n return;\n }\n const parts = splitColorComponents(match[1]);\n if (parts.length < 3 || parts.length > 4) {\n return;\n }\n const hue = HUE_REGEX.exec(parts[0]);\n if (!hue) {\n return;\n }\n const unit = hue[2];\n const degrees = Number(hue[1]) * (unit ? HUE_UNITS[unit.toLowerCase()] : 1);\n if (!isFinite(degrees)) {\n return;\n }\n const h = (((degrees % 360) + 360) % 360) / 360;\n const s = clamp01(parseColorComponent(parts[1], 100) / 100);\n const l = clamp01(parseColorComponent(parts[2], 100) / 100);\n const a = parts.length > 3 ? parseColorComponent(parts[3], 1) : 1;\n const t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n let t3 = h + (1 / 3) * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n let val;\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,\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 const cached = capitalizeCache.get(str);\n if (cached !== undefined)\n return cached;\n const out = str.charAt(0).toUpperCase() + str.slice(1);\n capitalizeCache.set(str, out);\n return out;\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 const context = this._context;\n if ('patternQuality' in context) {\n context.patternQuality = context.imageSmoothingEnabled\n ? 'good'\n : 'nearest';\n }\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 setSizeIfChanged(width, height) {\n if (this.width !== width * this.pixelRatio ||\n this.height !== height * this.pixelRatio) {\n this.setSize(width, height);\n }\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}\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 }\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 _listenToWindow(win) {\n const endDragBefore = (evt) => DD._endDragBefore(evt, win);\n const drag = (evt) => DD._drag(evt, win);\n win.addEventListener('mouseup', endDragBefore, true);\n win.addEventListener('touchend', endDragBefore, true);\n win.addEventListener('touchcancel', endDragBefore, true);\n win.addEventListener('mousemove', drag);\n win.addEventListener('touchmove', drag);\n win.addEventListener('mouseup', DD._endDragAfter, false);\n win.addEventListener('touchend', DD._endDragAfter, false);\n win.addEventListener('touchcancel', DD._endDragAfter, false);\n },\n _drag(evt, win) {\n const nodesToFireEvents = [];\n DD._dragElements.forEach((elem, key) => {\n const { node } = elem;\n const stage = node.getStage();\n if (win && stage._getOwnerWindow() !== win) {\n return;\n }\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 if (!node.getStage()) {\n return;\n }\n node.fire('dragmove', {\n type: 'dragmove',\n target: node,\n evt: evt,\n }, true);\n });\n },\n _endDragBefore(evt, win) {\n const drawNodes = [];\n DD._dragElements.forEach((elem) => {\n const { node } = elem;\n const stage = node.getStage();\n if (evt && (!win || stage._getOwnerWindow() === win)) {\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};\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 static _runAfterAbsTransformCascade(cb) {\n if (Node._absTransformCascadeDepth > 0) {\n Node._pendingAfterCascade.push(cb);\n }\n else {\n cb();\n }\n }\n clearCache() {\n if (this._cache.has(CANVAS)) {\n const { scene, filter, hit } = this._cache.get(CANVAS);\n Util.releaseCanvas(scene._canvas, filter._canvas, ...(hit ? [hit._canvas] : []));\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 }), sceneContext = cachedSceneCanvas.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 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 bufferContext.save();\n sceneContext.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._isUnderCache = false;\n sceneContext.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 Util.releaseCanvas(bufferCanvas._canvas);\n this._cache.set(CANVAS, {\n scene: cachedSceneCanvas,\n filter: cachedFilterCanvas,\n hit: null,\n hitConfig: {\n pixelRatio: hitCanvasPixelRatio,\n width: width,\n height: height,\n },\n x: x,\n y: y,\n });\n this._requestDraw();\n return this;\n }\n _getCachedHitCanvas(top) {\n if (top === this) {\n return null;\n }\n const cache = this._getCanvasCache();\n if (!cache) {\n return null;\n }\n if (cache.hit) {\n return cache.hit;\n }\n const hitCanvas = new HitCanvas(cache.hitConfig);\n hitCanvas.isCache = true;\n const hitContext = hitCanvas.getContext();\n hitContext.save();\n hitContext.translate(-cache.x, -cache.y);\n this.drawHit(hitCanvas, this);\n hitContext.restore();\n cache.hit = hitCanvas;\n return hitCanvas;\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, hitCanvas) {\n const canvasCache = this._getCanvasCache();\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(...args) {\n const evtStr = args[0];\n const selectorOrHandler = args[1];\n const handler = args[2];\n if (this._cache) {\n this._cache.delete(ALL_LISTENERS);\n }\n if (args.length === 3) {\n return this._delegate.apply(this, args);\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: selectorOrHandler });\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 return this;\n }\n remove() {\n if (this.isDragging()) {\n this.stopDrag();\n }\n DD._dragElements.delete(this._id);\n DD._dragElements.forEach((elem, key) => {\n if (this.isAncestorOf(elem.node)) {\n DD._dragElements.delete(key);\n }\n });\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;\n const { nodeType } = this;\n const allListeners = Node.protoListenerMap.get(nodeType) || {};\n let events = allListeners === null || allListeners === void 0 ? void 0 : allListeners[eventType];\n if (events === undefined) {\n events = [];\n const seen = new Set();\n let obj = Object.getPrototypeOf(this);\n while (obj) {\n const hierarchyEvents = (_b = (_a = obj.eventListeners) === null || _a === void 0 ? void 0 : _a[eventType]) !== null && _b !== void 0 ? _b : [];\n for (let i = 0; i < hierarchyEvents.length; i++) {\n const entry = hierarchyEvents[i];\n if (!seen.has(entry)) {\n seen.add(entry);\n events.push(entry);\n }\n }\n obj = Object.getPrototypeOf(obj);\n }\n allListeners[eventType] = events;\n Node.protoListenerMap.set(nodeType, 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 const list = selfListeners.slice();\n const origLen = list.length;\n for (let i = 0; i < list.length; i++) {\n list[i].handler.call(this, evt);\n }\n const liveListeners = this.eventListeners[eventType];\n if (liveListeners) {\n for (let i = origLen; i < liveListeners.length; i++) {\n liveListeners[i].handler.call(this, evt);\n }\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 startEvent: evt,\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: (elem.startEvent && elem.startEvent.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._absTransformCascadeDepth = 0;\nNode._pendingAfterCascade = [];\nNode.protoListenerMap = new Map();\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on(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('visibleChange.konva', function () {\n this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on('listeningChange.konva', function () {\n this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on('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 const isAbsTransform = attr === 'absoluteTransform';\n if (isAbsTransform)\n Node._absTransformCascadeDepth++;\n try {\n super._clearSelfAndDescendantCache(attr);\n if (this.isCached())\n return;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n node._clearSelfAndDescendantCache(attr);\n });\n }\n finally {\n if (isAbsTransform && --Node._absTransformCascadeDepth === 0) {\n const callbacks = Node._pendingAfterCascade;\n if (callbacks.length) {\n Node._pendingAfterCascade = [];\n for (let i = 0; i < callbacks.length; i++)\n callbacks[i]();\n }\n }\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(), cachedHitCanvas = this._getCachedHitCanvas(top);\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, cachedHitCanvas);\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 var _a;\n releaseCapture(pointerId);\n const stage = shape.getStage();\n if (!stage)\n return;\n Captures.set(pointerId, shape);\n if (SUPPORT_POINTER_EVENTS) {\n try {\n (_a = stage.content) === null || _a === void 0 ? void 0 : _a.setPointerCapture(pointerId);\n }\n catch (e) {\n }\n shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n }\n}\nexport function releaseCapture(pointerId, target) {\n var _a;\n const shape = Captures.get(pointerId);\n if (!shape)\n return;\n const stage = shape.getStage();\n Captures.delete(pointerId);\n if (SUPPORT_POINTER_EVENTS) {\n try {\n (_a = stage === null || stage === void 0 ? void 0 : stage.content) === null || _a === void 0 ? void 0 : _a.releasePointerCapture(pointerId);\n }\n catch (e) {\n }\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 = [];\nconst listeningWindows = new WeakSet();\nconst listenToWindow = (win) => {\n if (!win || listeningWindows.has(win)) {\n return;\n }\n listeningWindows.add(win);\n DD._listenToWindow(win);\n win.document.addEventListener('visibilitychange', () => {\n stages.forEach((stage) => {\n stage.batchDraw();\n });\n });\n};\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 _getOwnerWindow() {\n var _a;\n const element = this.content || this.container();\n return (((_a = element === null || element === void 0 ? void 0 : element.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) || (Konva.isBrowser ? window : null));\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 listenToWindow(this._getOwnerWindow());\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.children.forEach((layer) => {\n layer.setSize({ width, height });\n layer.draw();\n });\n }\n _syncBufferSize(canvas) {\n canvas.setSizeIfChanged(this.width(), this.height());\n return canvas;\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 wasDragged = DD.justDragged || (eventType === 'pointer' && Konva.isDragging());\n const listenClick = Konva['_' + eventType + 'ListenClick'] && !wasDragged;\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 (!wasDragged) {\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 (listenClick && 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 (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: 0,\n height: 0,\n });\n this.bufferHitCanvas = new HitCanvas({\n pixelRatio: 1,\n width: 0,\n height: 0,\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 = container.ownerDocument.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 listenToWindow(this._getOwnerWindow());\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');\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 let attempts = 0;\n while (true) {\n key = Util.getHitColor();\n if (key && !(key in shapes)) {\n break;\n }\n attempts++;\n if (attempts >= 10000) {\n Util.warn('Failed to find a unique color key for a shape. Konva may work incorrectly. Most likely your browser is using canvas farbling. Consider disabling it.');\n key = Util.getRandomColor();\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._syncBufferSize(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._syncBufferSize(stage.bufferCanvas);\n const bufferContext = bc.getContext();\n if (bufferCanvas) {\n bufferContext.save();\n bufferContext.setTransform(1, 0, 0, 1, 0, 0);\n bufferContext.clearRect(0, 0, bc.width, bc.height);\n bufferContext.restore();\n }\n else {\n bufferContext.clear();\n }\n bufferContext.save();\n bufferContext.imageSmoothingEnabled = context.imageSmoothingEnabled;\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 if (!cachingSelf) {\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\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(), cachedHitCanvas = this._getCachedHitCanvas(top);\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, cachedHitCanvas);\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 sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = this._getCachedHitCanvas(), 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('shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on('shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on('fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva', _clearFillPatternCache);\nShape.prototype.on('fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on('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 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._syncHitCanvasSize();\n this._setSmoothEnabled();\n return this;\n }\n _syncHitCanvasSize() {\n const listening = this.isListening();\n this.hitCanvas.setSizeIfChanged((listening ? this.getWidth() : 0) || 0, (listening ? this.getHeight() : 0) || 0);\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 var _a;\n if (!this._waitingForDraw) {\n this._waitingForDraw = true;\n Util.requestAnimFrame(() => {\n this.draw();\n this._waitingForDraw = false;\n }, (_a = this.getStage()) === null || _a === void 0 ? void 0 : _a._getOwnerWindow());\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 if (!this.hitCanvas.width || !this.hitCanvas.height) {\n return {};\n }\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.getHitColorKey(p[0], p[1], p[2]);\n const shape = shapes[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 (!can && layer) {\n layer._syncHitCanvasSize();\n if (layer.clearBeforeDraw()) {\n layer.getHitCanvas().getContext().clear();\n }\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;\nfunction colorToRGBA(color) {\n return (Util.colorToRGBA(color) ||\n Util.throw('can not tween the color \"' +\n color +\n '\", because it is not a valid color.'));\n}\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 = colorToRGBA(start[n]);\n endRGBA = 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 = colorToRGBA(start);\n endRGBA = 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 rawAngle = Konva.getAngle(this.angle());\n if (rawAngle % (Math.PI * 2) === 0) {\n return rawAngle !== 0\n ? {\n x: -outerRadius,\n y: -outerRadius,\n width: outerRadius * 2,\n height: outerRadius * 2,\n }\n : { x: innerRadius, y: 0, width: outerRadius - innerRadius, height: 0 };\n }\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","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};\nconst quadraticAt = (p0, p1, p2, t) => {\n const mt = 1 - t;\n return mt * mt * p0 + 2 * mt * t * p1 + t * t * p2;\n};\nexport const getQuadraticExtremaPoints = (x0, y0, x1, y1, x2, y2) => {\n const extrema = [];\n for (const axis of [\n [x0, x1, x2],\n [y0, y1, y2],\n ]) {\n const t = (axis[0] - axis[1]) / (axis[0] - 2 * axis[1] + axis[2]);\n if (t > 0 && t < 1) {\n extrema.push(quadraticAt(x0, x1, x2, t), quadraticAt(y0, y1, y2, t));\n }\n }\n return extrema;\n};\nconst cubicAt = (p0, p1, p2, p3, t) => {\n const mt = 1 - t;\n return (mt * mt * mt * p0 +\n 3 * mt * mt * t * p1 +\n 3 * mt * t * t * p2 +\n t * t * t * p3);\n};\nexport const getCubicExtremaPoints = (x0, y0, x1, y1, x2, y2, x3, y3) => {\n const extrema = [];\n for (const axis of [\n [x0, x1, x2, x3],\n [y0, y1, y2, y3],\n ]) {\n const a = -3 * axis[0] + 9 * axis[1] - 9 * axis[2] + 3 * axis[3];\n const b = 6 * axis[0] - 12 * axis[1] + 6 * axis[2];\n const c = -3 * axis[0] + 3 * axis[1];\n const discriminant = b * b - 4 * a * c;\n if (discriminant < 0) {\n continue;\n }\n const q = -(b + (b < 0 ? -1 : 1) * Math.sqrt(discriminant)) / 2;\n for (const t of [q / a, c / q]) {\n if (t > 0 && t < 1) {\n extrema.push(cubicAt(x0, x1, x2, x3, t), cubicAt(y0, y1, y2, y3, t));\n }\n }\n }\n return extrema;\n};\n","import { getCubicExtremaPoints, getQuadraticExtremaPoints, } from \"../BezierFunctions.js\";\nimport { 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)), dSum = d01 + d12;\n if (dSum === 0) {\n return [x1, y1, x1, y1];\n }\n const fa = (t * d01) / dSum, fb = (t * d12) / dSum, 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}\nfunction getBezierExtremaPoints(points) {\n const extrema = [];\n for (let n = 0; n + 7 < points.length; n += 6) {\n extrema.push(points[n + 6], points[n + 7], ...getCubicExtremaPoints(points[n], points[n + 1], points[n + 2], points[n + 3], points[n + 4], points[n + 5], points[n + 6], points[n + 7]));\n }\n return extrema;\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 _hasTension() {\n return this.tension() !== 0 && this.points().length > 4;\n }\n _eachTensionSegment(onQuadratic, onCubic) {\n const points = this.points(), length = points.length, closed = this.closed(), tp = this.getTensionPoints(), len = tp.length;\n let x0 = points[0], y0 = points[1], n = closed ? 0 : 4;\n if (!closed) {\n onQuadratic(x0, y0, tp[0], tp[1], tp[2], tp[3]);\n x0 = tp[2];\n y0 = tp[3];\n }\n while (n < len - 2) {\n const cp1x = tp[n++], cp1y = tp[n++], cp2x = tp[n++], cp2y = tp[n++], x = tp[n++], y = tp[n++];\n onCubic(x0, y0, cp1x, cp1y, cp2x, cp2y, x, y);\n x0 = x;\n y0 = y;\n }\n if (!closed) {\n onQuadratic(x0, y0, tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n }\n }\n _sceneFunc(context) {\n const points = this.points(), length = points.length, 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 (this._hasTension()) {\n this._eachTensionSegment((_x0, _y0, cpx, cpy, x, y) => context.quadraticCurveTo(cpx, cpy, x, y), (_x0, _y0, cp1x, cp1y, cp2x, cp2y, x, y) => context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y));\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._hasTension()) {\n const bounds = [points[0], points[1]];\n this._eachTensionSegment((x0, y0, cpx, cpy, x, y) => bounds.push(x, y, ...getQuadraticExtremaPoints(x0, y0, cpx, cpy, x, y)), (x0, y0, cp1x, cp1y, cp2x, cp2y, x, y) => bounds.push(x, y, ...getCubicExtremaPoints(x0, y0, cp1x, cp1y, cp2x, cp2y, x, y)));\n points = bounds;\n }\n else if (this.bezier()) {\n points = [points[0], points[1], ...getBezierExtremaPoints(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","import { Factory } from \"../Factory.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getCubicArcLength, getCubicExtremaPoints, getQuadraticArcLength, getQuadraticExtremaPoints, 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 points.push(data.start.x, data.start.y, data.points[4], data.points[5], ...getCubicExtremaPoints(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 }\n else if (data.command === 'Q') {\n points.push(data.start.x, data.start.y, data.points[2], data.points[3], ...getQuadraticExtremaPoints(data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3]));\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 let j = i - 1;\n while (j > 0 && dataArray[j].points.length < 2) {\n j--;\n }\n points = dataArray[j].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, _c;\n return (_c = (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width) !== null && _c !== void 0 ? _c : 0;\n }\n getHeight() {\n var _a, _b, _c;\n return (_c = (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 0;\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';\nImage.prototype._attrsAffectingSize = ['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].x;\n let minY = points[0].y;\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;\nlet _shadowOpacityBuggy = null;\nfunction hasShadowOpacityBug() {\n if (_shadowOpacityBuggy !== null) {\n return _shadowOpacityBuggy;\n }\n _shadowOpacityBuggy = false;\n try {\n const c = document.createElement('canvas');\n c.width = 10;\n c.height = 10;\n const ctx = c.getContext(CONTEXT_2D);\n if (ctx) {\n ctx.globalAlpha = 0;\n ctx.shadowColor = 'black';\n ctx.shadowBlur = 5;\n ctx.shadowOffsetX = 5;\n ctx.shadowOffsetY = 5;\n ctx.fillStyle = 'black';\n ctx.font = '10px Arial';\n ctx.fillText('X', 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0) {\n _shadowOpacityBuggy = true;\n break;\n }\n }\n }\n }\n catch (e) {\n }\n return _shadowOpacityBuggy;\n}\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 if (this._partialFillStyle) {\n context.setAttr('fillStyle', this._partialFillStyle);\n }\n context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n context.setAttr('miterLimit', 2);\n if (this._partialStrokeStyle) {\n context.setAttr('strokeStyle', this._partialStrokeStyle);\n }\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(), underlineOffset = this.underlineOffset(), 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 const fillStyleBefore = charRenderFunc ? context.fillStyle : undefined;\n const strokeStyleBefore = charRenderFunc ? context.strokeStyle : undefined;\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 = underlineOffset !== null && underlineOffset !== void 0 ? underlineOffset : (!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 const lineThroughStartX = lineTranslateX;\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 const fillStyleAfter = context.fillStyle;\n if (fillStyleAfter !== fillStyleBefore) {\n this._partialFillStyle = fillStyleAfter;\n }\n const strokeStyleAfter = context.strokeStyle;\n if (strokeStyleAfter !== strokeStyleBefore) {\n this._partialStrokeStyle = strokeStyleAfter;\n }\n }\n context.fillStrokeShape(this);\n if (charRenderFunc) {\n this._partialFillStyle = undefined;\n this._partialStrokeStyle = undefined;\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 = lineThroughStartX;\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 const lineArray = stringToArray(line);\n let low = 0, high = lineArray.length, match = '', matchWidth = 0;\n while (low < high) {\n const mid = (low + high) >>> 1, 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 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 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 if (hasShadow && this.getAbsoluteOpacity() !== 1 && hasShadowOpacityBug()) {\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, 'underlineOffset', undefined, getNumberValidator());\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 directionChange.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 const hasUnderline = textDecoration.indexOf('underline') !== -1;\n const hasLineThrough = textDecoration.indexOf('line-through') !== -1;\n if (hasUnderline) {\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 (hasUnderline) {\n if (i === 0) {\n context.moveTo(0, fontSize / 2 + 1);\n }\n context.lineTo(glyphInfo[i].width, fontSize / 2 + 1);\n }\n context.restore();\n }\n if (hasUnderline) {\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n if (hasLineThrough) {\n context.beginPath();\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 if (i === 0) {\n context.moveTo(0, 0);\n }\n context.lineTo(glyphInfo[i].width, 0);\n context.restore();\n }\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 if (this.direction() === 'rtl') {\n charArr.reverse();\n }\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 { width: fullTextWidth, 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 kerningAdjustment = Math.max(0, width - fullTextWidth);\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 charEndLength = offsetToGlyph + glyphWidth;\n const charEndPoint = this._getPointAtLength(charEndLength > this.pathLength &&\n charEndLength - this.pathLength <= kerningAdjustment\n ? this.pathLength\n : charEndLength);\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 width: width,\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);\nFactory.addGetterSetter(TextPath, 'direction', 'inherit');\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 'rotateAnchorAngleChange',\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._transformWindow = null;\n this._elementsCreated = false;\n this._updateScheduled = 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._transforming)\n return;\n if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n this.rotation(this.nodes()[0].getAbsoluteRotation());\n }\n this._resetTransformCache();\n if (!this.isDragging()) {\n this._scheduleUpdate();\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 this._elementsCreated = true;\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 const width = shape.width();\n const height = shape.height();\n ctx.beginPath();\n ctx.rect(-padding, -padding, width + padding * 2, height + padding * 2);\n if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n const rotateAnchorAngle = tr.rotateAnchorAngle();\n const rotateAnchorOffset = tr.rotateAnchorOffset();\n const rad = Util.degToRad(rotateAnchorAngle);\n const dirX = Math.sin(rad);\n const dirY = -Math.cos(rad);\n const cx = width / 2;\n const cy = height / 2;\n let t = Infinity;\n if (dirY < 0) {\n t = Math.min(t, -cy / dirY);\n }\n else if (dirY > 0) {\n t = Math.min(t, (height - cy) / dirY);\n }\n if (dirX < 0) {\n t = Math.min(t, -cx / dirX);\n }\n else if (dirX > 0) {\n t = Math.min(t, (width - cx) / dirX);\n }\n const edgeX = cx + dirX * t;\n const edgeY = cy + dirY * t;\n const sign = Util._sign(height);\n const endX = edgeX + dirX * rotateAnchorOffset * sign;\n const endY = edgeY + dirY * rotateAnchorOffset * sign;\n ctx.moveTo(edgeX, edgeY);\n ctx.lineTo(endX, endY);\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 var _a;\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 const win = (_a = this.getStage()) === null || _a === void 0 ? void 0 : _a._getOwnerWindow();\n this._transformWindow = win || null;\n if (win) {\n win.addEventListener('mousemove', this._handleMouseMove);\n win.addEventListener('touchmove', this._handleMouseMove);\n win.addEventListener('mouseup', this._handleMouseUp, true);\n win.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 const rotateAnchorAngleRad = Konva.getAngle(this.rotateAnchorAngle());\n let delta = Math.atan2(-y, x) + Math.PI / 2 - rotateAnchorAngleRad;\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 let anchorProjected = false;\n if (this._movingAnchorName === 'top-left') {\n if (keepProportion) {\n anchorProjected = true;\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 anchorProjected = true;\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 anchorProjected = true;\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 anchorProjected = true;\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, anchorProjected);\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 const win = this._transformWindow;\n this._transformWindow = null;\n if (win) {\n win.removeEventListener('mousemove', this._handleMouseMove);\n win.removeEventListener('touchmove', this._handleMouseMove);\n win.removeEventListener('mouseup', this._handleMouseUp, true);\n win.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, anchorProjected = false) {\n const prevAutoDraw = Konva.autoDrawEnabled;\n Konva.autoDrawEnabled = false;\n try {\n return this._doFitNodesInto(newAttrs, evt, anchorProjected);\n }\n finally {\n Konva.autoDrawEnabled = prevAutoDraw;\n }\n }\n _doFitNodesInto(newAttrs, evt, anchorProjected = false) {\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 const flipPadding = anchorProjected ? 0 : this.padding() * 2;\n let widthFlip = null;\n let heightFlip = null;\n if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('left') >= 0) {\n const offset = t.point({\n x: -flipPadding,\n y: 0,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.width += flipPadding;\n widthFlip = { axis: 'width', from: 'left', to: 'right', offset };\n }\n else if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('right') >= 0) {\n const offset = t.point({\n x: flipPadding,\n y: 0,\n });\n newAttrs.width += flipPadding;\n widthFlip = { axis: 'width', from: 'right', to: 'left', offset };\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: -flipPadding,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.height += flipPadding;\n heightFlip = { axis: 'height', from: 'top', to: 'bottom', offset };\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: flipPadding,\n });\n newAttrs.height += flipPadding;\n heightFlip = { axis: 'height', from: 'bottom', to: 'top', offset };\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 for (const flip of [widthFlip, heightFlip]) {\n if (flip && newAttrs[flip.axis] < 0 && this._movingAnchorName) {\n this._movingAnchorName = this._movingAnchorName.replace(flip.from, flip.to);\n this._anchorDragOffset.x -= flip.offset.x;\n this._anchorDragOffset.y -= flip.offset.y;\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 const layersToDraw = new Set();\n this._nodes.forEach((node) => {\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 const layer = node.getLayer();\n if (layer) {\n layersToDraw.add(layer);\n }\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 layersToDraw.add(this.getLayer());\n layersToDraw.forEach((layer) => layer && layer.batchDraw());\n }\n _scheduleUpdate() {\n if (this._updateScheduled)\n return;\n this._updateScheduled = true;\n Node._runAfterAbsTransformCascade(() => {\n var _a;\n this._updateScheduled = false;\n if (!((_a = this._nodes) === null || _a === void 0 ? void 0 : _a.length) || this._transforming || this.isDragging()) {\n return;\n }\n this.update();\n });\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 const rotateAnchorAngle = this.rotateAnchorAngle();\n const rotateAnchorOffset = this.rotateAnchorOffset();\n const rad = Util.degToRad(rotateAnchorAngle);\n const dirX = Math.sin(rad);\n const dirY = -Math.cos(rad);\n const cx = width / 2;\n const cy = height / 2;\n let t = Infinity;\n if (dirY < 0) {\n t = Math.min(t, -cy / dirY);\n }\n else if (dirY > 0) {\n t = Math.min(t, (height - cy) / dirY);\n }\n if (dirX < 0) {\n t = Math.min(t, -cx / dirX);\n }\n else if (dirX > 0) {\n t = Math.min(t, (width - cx) / dirX);\n }\n const edgeX = cx + dirX * t;\n const edgeY = cy + dirY * t;\n const sign = Util._sign(height);\n this._batchChangeChild('.rotater', {\n x: edgeX + dirX * rotateAnchorOffset * sign,\n y: edgeY + dirY * rotateAnchorOffset * sign - padding * dirY,\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 add(...children) {\n if (this._elementsCreated) {\n Util.error('You cannot add external nodes to the Transformer. Use tr.nodes([node]) instead.');\n return this;\n }\n return super.add(...children);\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, 'rotateAnchorAngle', 0, 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","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","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\";\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\";\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","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","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","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","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\";\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 { 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","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 { 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","import './assets/index.css';\nimport { shallowRef, computed, defineComponent, openBlock, createElementBlock, normalizeClass, renderSlot, mergeProps, createElementVNode, toDisplayString, createCommentVNode, normalizeStyle, createTextVNode, watch, provide, inject, Fragment, renderList, createVNode, withCtx, createBlock, resolveDynamicComponent, unref, createSlots, withModifiers, ref, useTemplateRef, onMounted, onBeforeUnmount, withDirectives, withKeys, vModelText } from \"vue\";\nimport { showConfirmation } from \"@nextcloud/dialogs\";\nimport Konva from \"konva\";\nimport NcButton from \"@nextcloud/vue/components/NcButton\";\nimport NcLoadingIcon from \"@nextcloud/vue/components/NcLoadingIcon\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { emojiSearch } from \"@nextcloud/vue/functions/emoji\";\nimport NcEmojiPicker from \"@nextcloud/vue/components/NcEmojiPicker\";\nimport NcActionButton from \"@nextcloud/vue/components/NcActionButton\";\nimport NcActions from \"@nextcloud/vue/components/NcActions\";\nimport NcActionSeparator from \"@nextcloud/vue/components/NcActionSeparator\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcNoteCard from \"@nextcloud/vue/components/NcNoteCard\";\nimport { e as estimateJpegQuality, r as readMetadataSegments, w as withMetadata } from \"./chunks/jpeg.mjs\";\nimport { D, i, a, b, s } from \"./chunks/jpeg.mjs\";\nfunction useHistory(capacity = 100) {\n if (!Number.isInteger(capacity) || capacity < 1) {\n throw new RangeError(\"History capacity must be a positive integer\");\n }\n const entries = shallowRef([]);\n const index = shallowRef(-1);\n const canUndo = computed(() => index.value > 0);\n const canRedo = computed(() => index.value < entries.value.length - 1);\n const current = computed(() => entries.value[index.value]?.snapshot);\n function push(snapshot, label) {\n const kept = [...entries.value.slice(0, index.value + 1), { snapshot, label }];\n entries.value = kept.slice(Math.max(0, kept.length - capacity));\n index.value = entries.value.length - 1;\n }\n function jumpTo(target) {\n if (target === index.value || target < 0 || target >= entries.value.length) {\n return void 0;\n }\n index.value = target;\n return current.value;\n }\n function undo() {\n return canUndo.value ? jumpTo(index.value - 1) : void 0;\n }\n function redo() {\n return canRedo.value ? jumpTo(index.value + 1) : void 0;\n }\n function clear() {\n entries.value = [];\n index.value = -1;\n }\n return {\n canUndo,\n canRedo,\n current,\n entries: computed(() => entries.value),\n index: computed(() => index.value),\n push,\n undo,\n redo,\n jumpTo,\n clear\n };\n}\nfunction newId() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n return [...crypto.getRandomValues(new Uint8Array(16))].map((byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n}\nfunction createInitialState() {\n return {\n rotation: 0,\n fineRotation: 0,\n zoom: 1,\n flipX: false,\n flipY: false,\n crop: null,\n adjustments: {\n exposure: 0,\n brightness: 0,\n contrast: 0,\n saturation: 0,\n temperature: 0,\n tint: 0,\n sharpen: 0,\n highlights: 0,\n shadows: 0,\n vignette: 0\n },\n preset: \"none\",\n annotations: []\n };\n}\nfunction normaliseState(state) {\n const defaults = createInitialState().adjustments;\n const repaired = Object.entries(defaults).filter(([key]) => !Number.isFinite(state.adjustments[key]));\n if (repaired.length === 0) {\n return state;\n }\n return {\n ...state,\n adjustments: { ...state.adjustments, ...Object.fromEntries(repaired) }\n };\n}\nfunction isPristine(state) {\n return state.rotation === 0 && state.fineRotation === 0 && state.zoom === 1 && !state.flipX && !state.flipY && state.crop === null && Object.values(state.adjustments).every((value) => value === 0) && state.preset === \"none\" && state.annotations.length === 0;\n}\nfunction orientedSize(natural, rotation) {\n return rotation % 180 === 0 ? { width: natural.width, height: natural.height } : { width: natural.height, height: natural.width };\n}\nfunction clampRect(rect, bounds) {\n const x = Math.min(Math.max(rect.x, 0), bounds.width - 1);\n const y = Math.min(Math.max(rect.y, 0), bounds.height - 1);\n return {\n x,\n y,\n width: Math.max(1, Math.min(rect.width, bounds.width - x)),\n height: Math.max(1, Math.min(rect.height, bounds.height - y))\n };\n}\nfunction sameRect(a2, b2) {\n if (a2 === null || b2 === null) {\n return a2 === b2;\n }\n return a2.x === b2.x && a2.y === b2.y && a2.width === b2.width && a2.height === b2.height;\n}\nfunction mapPointsCW(points, height) {\n const mapped = [];\n for (let i2 = 0; i2 < points.length; i2 += 2) {\n mapped.push(height - (points[i2 + 1] ?? 0), points[i2] ?? 0);\n }\n return mapped;\n}\nfunction mapRectCW(rect, height) {\n return {\n x: height - rect.y - rect.height,\n y: rect.x,\n width: rect.height,\n height: rect.width\n };\n}\nfunction mapAnnotationCW(annotation, height) {\n switch (annotation.type) {\n case \"draw\":\n return { ...annotation, points: mapPointsCW(annotation.points, height) };\n case \"arrow\":\n case \"line\":\n return { ...annotation, points: mapPointsCW(annotation.points, height) };\n case \"rectangle\":\n case \"ellipse\":\n return {\n ...annotation,\n rect: { ...annotation.rect, x: height - annotation.rect.y, y: annotation.rect.x },\n rotation: (annotation.rotation + 90) % 360\n };\n case \"redact\":\n return { ...annotation, rect: mapRectCW(annotation.rect, height) };\n case \"text\":\n case \"sticker\":\n return {\n ...annotation,\n x: height - annotation.y,\n y: annotation.x,\n rotation: (annotation.rotation + 90) % 360\n };\n }\n}\nfunction rotateCW(state, oriented) {\n return {\n ...state,\n rotation: (state.rotation + 90) % 360,\n crop: state.crop && mapRectCW(state.crop, oriented.height),\n annotations: state.annotations.map((annotation) => mapAnnotationCW(annotation, oriented.height))\n };\n}\nfunction mapAnnotationFlipX(annotation, width) {\n switch (annotation.type) {\n case \"draw\":\n case \"arrow\":\n case \"line\": {\n const points = annotation.points.map((value, i2) => i2 % 2 === 0 ? width - value : value);\n return { ...annotation, points };\n }\n case \"rectangle\":\n case \"ellipse\": {\n const radians = annotation.rotation * Math.PI / 180;\n return {\n ...annotation,\n rect: {\n ...annotation.rect,\n x: width - annotation.rect.x - annotation.rect.width * Math.cos(radians),\n y: annotation.rect.y + annotation.rect.width * Math.sin(radians)\n },\n rotation: (360 - annotation.rotation) % 360\n };\n }\n case \"redact\":\n return {\n ...annotation,\n rect: { ...annotation.rect, x: width - annotation.rect.x - annotation.rect.width }\n };\n case \"text\":\n case \"sticker\":\n return {\n ...annotation,\n x: width - annotation.x,\n rotation: (360 - annotation.rotation) % 360\n };\n }\n}\nfunction flipHorizontal(state, oriented) {\n const sideways = state.rotation % 180 !== 0;\n return {\n ...state,\n flipX: sideways ? state.flipX : !state.flipX,\n flipY: sideways ? !state.flipY : state.flipY,\n fineRotation: -state.fineRotation,\n crop: state.crop && { ...state.crop, x: oriented.width - state.crop.x - state.crop.width },\n annotations: state.annotations.map((annotation) => mapAnnotationFlipX(annotation, oriented.width))\n };\n}\nfunction mapAnnotationFlipY(annotation, height) {\n switch (annotation.type) {\n case \"draw\":\n case \"arrow\":\n case \"line\": {\n const points = annotation.points.map((value, i2) => i2 % 2 === 1 ? height - value : value);\n return { ...annotation, points };\n }\n case \"rectangle\":\n case \"ellipse\": {\n const radians = annotation.rotation * Math.PI / 180;\n return {\n ...annotation,\n rect: {\n ...annotation.rect,\n x: annotation.rect.x - annotation.rect.height * Math.sin(radians),\n y: height - annotation.rect.y - annotation.rect.height * Math.cos(radians)\n },\n rotation: (360 - annotation.rotation) % 360\n };\n }\n case \"redact\":\n return {\n ...annotation,\n rect: { ...annotation.rect, y: height - annotation.rect.y - annotation.rect.height }\n };\n case \"text\":\n case \"sticker\":\n return {\n ...annotation,\n y: height - annotation.y,\n rotation: (360 - annotation.rotation) % 360\n };\n }\n}\nfunction flipVertical(state, oriented) {\n const sideways = state.rotation % 180 !== 0;\n return {\n ...state,\n flipX: sideways ? !state.flipX : state.flipX,\n flipY: sideways ? state.flipY : !state.flipY,\n fineRotation: -state.fineRotation,\n crop: state.crop && { ...state.crop, y: oriented.height - state.crop.y - state.crop.height },\n annotations: state.annotations.map((annotation) => mapAnnotationFlipY(annotation, oriented.height))\n };\n}\nfunction translateAnnotation(annotation, dx, dy) {\n switch (annotation.type) {\n case \"draw\":\n case \"arrow\":\n case \"line\": {\n const points = annotation.points.map((value, i2) => value + (i2 % 2 === 0 ? dx : dy));\n return { ...annotation, points };\n }\n case \"rectangle\":\n case \"ellipse\":\n case \"redact\":\n return {\n ...annotation,\n rect: { ...annotation.rect, x: annotation.rect.x + dx, y: annotation.rect.y + dy }\n };\n case \"text\":\n case \"sticker\":\n return { ...annotation, x: annotation.x + dx, y: annotation.y + dy };\n }\n}\nfunction duplicateAnnotation(annotation, offset = 16) {\n return { ...translateAnnotation(annotation, offset, offset), id: newId() };\n}\nconst _sfc_main$12 = /* @__PURE__ */ defineComponent({\n __name: \"GlassSurface\",\n props: {\n variant: {},\n opaque: { type: Boolean }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"glass-surface\", [`glass-surface--${__props.variant ?? \"card\"}`, { \"glass-surface--opaque\": __props.opaque }]])\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2);\n };\n }\n});\nconst _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nconst GlassSurface = /* @__PURE__ */ _export_sfc(_sfc_main$12, [[\"__scopeId\", \"data-v-ffbdec7e\"]]);\nconst _sfc_main$11 = {\n name: \"BoxShadowIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$$ = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$W = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$S = { d: \"M3,3H18V18H3V3M19,19H21V21H19V19M19,16H21V18H19V16M19,13H21V15H19V13M19,10H21V12H19V10M19,7H21V9H19V7M16,19H18V21H16V19M13,19H15V21H13V19M10,19H12V21H10V19M7,19H9V21H7V19Z\" };\nconst _hoisted_4$R = { key: 0 };\nfunction _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon box-shadow-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$S, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$R, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$W))\n ], 16, _hoisted_1$$);\n}\nconst BoxShadow = /* @__PURE__ */ _export_sfc(_sfc_main$11, [[\"render\", _sfc_render$N]]);\nconst _sfc_main$10 = {\n name: \"CameraIrisIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$_ = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$V = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$R = { d: \"M13.73,15L9.83,21.76C10.53,21.91 11.25,22 12,22C14.4,22 16.6,21.15 18.32,19.75L14.66,13.4M2.46,15C3.38,17.92 5.61,20.26 8.45,21.34L12.12,15M8.54,12L4.64,5.25C3,7 2,9.39 2,12C2,12.68 2.07,13.35 2.2,14H9.69M21.8,10H14.31L14.6,10.5L19.36,18.75C21,16.97 22,14.6 22,12C22,11.31 21.93,10.64 21.8,10M21.54,9C20.62,6.07 18.39,3.74 15.55,2.66L11.88,9M9.4,10.5L14.17,2.24C13.47,2.09 12.75,2 12,2C9.6,2 7.4,2.84 5.68,4.25L9.34,10.6L9.4,10.5Z\" };\nconst _hoisted_4$Q = { key: 0 };\nfunction _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon camera-iris-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$R, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$Q, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$V))\n ], 16, _hoisted_1$_);\n}\nconst CameraIris = /* @__PURE__ */ _export_sfc(_sfc_main$10, [[\"render\", _sfc_render$M]]);\nconst _sfc_main$$ = {\n name: \"CircleOpacityIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$Z = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$U = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$Q = { d: \"M18 10V8H20V10H18M18 12V10H16V12H18M18 8V6H16V8H18M16 2.84V4H18C17.37 3.54 16.71 3.15 16 2.84M18 4V6H20C19.42 5.25 18.75 4.58 18 4M20 6V8H21.16C20.85 7.29 20.46 6.63 20 6M22 12C22 11.32 21.93 10.65 21.8 10H20V12H22M16 6V4H14V6H16M16 16H18V14H16V16M18 18H20L20 18V16H18V18M16 20H18L18 20V18H16V20M14 21.8C14.7 21.66 15.36 21.44 16 21.16V20H14V21.8M18 14H20V12H18V14M16 8H14V10H16V8M20 16H21.16C21.44 15.36 21.66 14.7 21.8 14H20V16M16 12H14V14H16V12M12 18V16H14V14H12V12H14V10H12V8H14V6H12V4H14V2.2C13.35 2.07 12.69 2 12 2C6.5 2 2 6.5 2 12S6.5 22 12 22V20H14V18H12M14 18H16V16H14V18Z\" };\nconst _hoisted_4$P = { key: 0 };\nfunction _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon circle-opacity-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$Q, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$P, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$U))\n ], 16, _hoisted_1$Z);\n}\nconst CircleOpacity = /* @__PURE__ */ _export_sfc(_sfc_main$$, [[\"render\", _sfc_render$L]]);\nconst _sfc_main$_ = {\n name: \"ContrastCircleIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$Y = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$T = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$P = { d: \"M12,20C9.79,20 7.79,19.1 6.34,17.66L17.66,6.34C19.1,7.79 20,9.79 20,12A8,8 0 0,1 12,20M6,8H8V6H9.5V8H11.5V9.5H9.5V11.5H8V9.5H6M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,16H17V14.5H12V16Z\" };\nconst _hoisted_4$O = { key: 0 };\nfunction _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon contrast-circle-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$P, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$O, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$T))\n ], 16, _hoisted_1$Y);\n}\nconst ContrastCircle = /* @__PURE__ */ _export_sfc(_sfc_main$_, [[\"render\", _sfc_render$K]]);\nconst _sfc_main$Z = {\n name: \"ImageFilterCenterFocusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$X = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$S = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$O = { d: \"M12,9A3,3 0 0,0 9,12A3,3 0 0,0 12,15A3,3 0 0,0 15,12A3,3 0 0,0 12,9M19,19H15V21H19A2,2 0 0,0 21,19V15H19M19,3H15V5H19V9H21V5A2,2 0 0,0 19,3M5,5H9V3H5A2,2 0 0,0 3,5V9H5M5,15H3V19A2,2 0 0,0 5,21H9V19H5V15Z\" };\nconst _hoisted_4$N = { key: 0 };\nfunction _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon image-filter-center-focus-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$O, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$N, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$S))\n ], 16, _hoisted_1$X);\n}\nconst ImageFilterCenterFocus = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [[\"render\", _sfc_render$J]]);\nconst _sfc_main$Y = {\n name: \"InvertColorsIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$W = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$R = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$N = { d: \"M12,19.58V19.58C10.4,19.58 8.89,18.96 7.76,17.83C6.62,16.69 6,15.19 6,13.58C6,12 6.62,10.47 7.76,9.34L12,5.1M17.66,7.93L12,2.27V2.27L6.34,7.93C3.22,11.05 3.22,16.12 6.34,19.24C7.9,20.8 9.95,21.58 12,21.58C14.05,21.58 16.1,20.8 17.66,19.24C20.78,16.12 20.78,11.05 17.66,7.93Z\" };\nconst _hoisted_4$M = { key: 0 };\nfunction _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon invert-colors-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$N, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$M, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$R))\n ], 16, _hoisted_1$W);\n}\nconst InvertColors = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [[\"render\", _sfc_render$I]]);\nconst _sfc_main$X = {\n name: \"SpotlightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$V = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$Q = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$M = { d: \"M2,6L7.09,8.55C6.4,9.5 6,10.71 6,12C6,13.29 6.4,14.5 7.09,15.45L2,18V6M6,3H18L15.45,7.09C14.5,6.4 13.29,6 12,6C10.71,6 9.5,6.4 8.55,7.09L6,3M22,6V18L16.91,15.45C17.6,14.5 18,13.29 18,12C18,10.71 17.6,9.5 16.91,8.55L22,6M18,21H6L8.55,16.91C9.5,17.6 10.71,18 12,18C13.29,18 14.5,17.6 15.45,16.91L18,21M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10Z\" };\nconst _hoisted_4$L = { key: 0 };\nfunction _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon spotlight-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$M, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$L, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$Q))\n ], 16, _hoisted_1$V);\n}\nconst Spotlight = /* @__PURE__ */ _export_sfc(_sfc_main$X, [[\"render\", _sfc_render$H]]);\nconst _sfc_main$W = {\n name: \"ThermometerIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$U = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$P = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$L = { d: \"M15 13V5A3 3 0 0 0 9 5V13A5 5 0 1 0 15 13M12 4A1 1 0 0 1 13 5V8H11V5A1 1 0 0 1 12 4Z\" };\nconst _hoisted_4$K = { key: 0 };\nfunction _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon thermometer-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$L, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$K, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$P))\n ], 16, _hoisted_1$U);\n}\nconst Thermometer = /* @__PURE__ */ _export_sfc(_sfc_main$W, [[\"render\", _sfc_render$G]]);\nconst _sfc_main$V = {\n name: \"WhiteBalanceIridescentIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$T = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$O = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$K = { d: \"M4.96,19.95L6.76,18.15L5.34,16.74L3.55,18.53M3.55,4.46L5.34,6.26L6.76,4.84L4.96,3.05M20.45,18.53L18.66,16.74L17.24,18.15L19.04,19.95M13,22.45V19.5H11V22.45C11.32,22.45 13,22.45 13,22.45M19.04,3.05L17.24,4.84L18.66,6.26L20.45,4.46M11,3.5H13V0.55H11M5,14.5H19V8.5H5V14.5Z\" };\nconst _hoisted_4$J = { key: 0 };\nfunction _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon white-balance-iridescent-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$K, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$J, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$O))\n ], 16, _hoisted_1$T);\n}\nconst WhiteBalanceIridescent = /* @__PURE__ */ _export_sfc(_sfc_main$V, [[\"render\", _sfc_render$F]]);\nconst _sfc_main$U = {\n name: \"WhiteBalanceSunnyIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$S = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$N = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$J = { d: \"M3.55 19.09L4.96 20.5L6.76 18.71L5.34 17.29M12 6C8.69 6 6 8.69 6 12S8.69 18 12 18 18 15.31 18 12C18 8.68 15.31 6 12 6M20 13H23V11H20M17.24 18.71L19.04 20.5L20.45 19.09L18.66 17.29M20.45 5L19.04 3.6L17.24 5.39L18.66 6.81M13 1H11V4H13M6.76 5.39L4.96 3.6L3.55 5L5.34 6.81L6.76 5.39M1 13H4V11H1M13 20H11V23H13\" };\nconst _hoisted_4$I = { key: 0 };\nfunction _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon white-balance-sunny-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$J, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$I, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$N))\n ], 16, _hoisted_1$S);\n}\nconst WhiteBalanceSunny = /* @__PURE__ */ _export_sfc(_sfc_main$U, [[\"render\", _sfc_render$E]]);\nconst SNAP_RATIO = 0.02;\nfunction defaultOrigin(min, max) {\n return min < 0 && max > 0 ? 0 : null;\n}\nfunction originPosition(origin, min, max) {\n return (origin - min) / (max - min);\n}\nfunction snapToOrigin(value, origin, min, max) {\n if (origin === null) {\n return value;\n }\n return Math.abs(value - origin) <= (max - min) * SNAP_RATIO ? origin : value;\n}\nconst _hoisted_1$R = { class: \"editor-slider\" };\nconst _hoisted_2$M = { class: \"editor-slider__track\" };\nconst _hoisted_3$I = [\"value\", \"data-test\", \"disabled\", \"aria-label\", \"min\", \"max\", \"step\"];\nconst _sfc_main$T = /* @__PURE__ */ defineComponent({\n __name: \"EditorSlider\",\n props: {\n value: {},\n min: {},\n max: {},\n step: {},\n label: {},\n display: {},\n dataTest: {},\n disabled: { type: Boolean },\n origin: {}\n },\n emits: [\"input\", \"commit\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const origin = computed(() => props.origin ?? defaultOrigin(props.min, props.max));\n const originOffset = computed(() => origin.value === null ? null : `calc(var(--slider-thumb-size) / 2 + (100% - var(--slider-thumb-size)) * ${originPosition(origin.value, props.min, props.max)})`);\n function onInput(event) {\n const input = event.target;\n const value = snapToOrigin(Number(input.value), origin.value, props.min, props.max);\n input.value = String(value);\n emit(\"input\", value);\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$R, [\n createElementVNode(\"div\", _hoisted_2$M, [\n originOffset.value !== null ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: \"editor-slider__origin\",\n \"aria-hidden\": \"true\",\n style: normalizeStyle({ insetInlineStart: originOffset.value })\n }, null, 4)) : createCommentVNode(\"\", true),\n createElementVNode(\"input\", {\n value: props.value,\n \"data-test\": __props.dataTest,\n disabled: __props.disabled,\n \"aria-label\": __props.label,\n type: \"range\",\n min: __props.min,\n max: __props.max,\n step: __props.step,\n onInput,\n onChange: _cache[0] || (_cache[0] = ($event) => emit(\"commit\"))\n }, null, 40, _hoisted_3$I)\n ]),\n createElementVNode(\"output\", null, [\n renderSlot(_ctx.$slots, \"preview\", {}, () => [\n createTextVNode(toDisplayString(__props.display ?? props.value), 1)\n ], true)\n ])\n ]);\n };\n }\n});\nconst EditorSlider = /* @__PURE__ */ _export_sfc(_sfc_main$T, [[\"__scopeId\", \"data-v-b180b2e1\"]]);\nconst _hoisted_1$Q = [\"disabled\", \"data-test\", \"aria-pressed\", \"aria-label\", \"title\"];\nconst _hoisted_2$L = { key: 0 };\nconst _sfc_main$S = /* @__PURE__ */ defineComponent({\n __name: \"IconTab\",\n props: {\n label: {},\n active: { type: Boolean },\n disabled: { type: Boolean },\n iconOnly: { type: Boolean },\n dataTest: {}\n },\n emits: [\"click\"],\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"button\", {\n type: \"button\",\n class: normalizeClass([\"icon-tab\", { \"icon-tab--active\": __props.active, \"icon-tab--icon-only\": __props.iconOnly }]),\n disabled: __props.disabled,\n \"data-test\": __props.dataTest,\n \"aria-pressed\": __props.active,\n \"aria-label\": __props.iconOnly ? __props.label : void 0,\n title: __props.iconOnly ? __props.label : void 0,\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true),\n !__props.iconOnly ? (openBlock(), createElementBlock(\"span\", _hoisted_2$L, toDisplayString(__props.label), 1)) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1$Q);\n };\n }\n});\nconst IconTab = /* @__PURE__ */ _export_sfc(_sfc_main$S, [[\"__scopeId\", \"data-v-92c91076\"]]);\nconst gtBuilder = getGettextBuilder().detectLocale();\n[].map((data) => gtBuilder.addTranslation(data.locale, data.json));\nconst gt = gtBuilder.build();\ngt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\nconst FONT_STACKS = {\n sans: \"Helvetica, Arial, sans-serif\",\n serif: 'Georgia, \"Times New Roman\", serif',\n mono: 'Menlo, Consolas, \"Courier New\", monospace'\n};\nconst DEFAULT_FONT = \"sans\";\nfunction fontStack(font) {\n return FONT_STACKS[font ?? DEFAULT_FONT] ?? FONT_STACKS[DEFAULT_FONT];\n}\nconst REDACT_SHAPES = [\"rectangle\", \"ellipse\"];\nconst DEFAULT_REDACT_SHAPE = \"rectangle\";\nfunction redactShape(shape) {\n return REDACT_SHAPES.includes(shape) ? shape : DEFAULT_REDACT_SHAPE;\n}\nconst TEXT_ALIGNS = [\"left\", \"center\", \"right\"];\nconst DEFAULT_ALIGN = \"left\";\nfunction textAlign(align) {\n return TEXT_ALIGNS.includes(align) ? align : DEFAULT_ALIGN;\n}\nconst VIEW_MARGIN = 16;\nconst PAN_SLACK = 1 / 3;\nconst FIT_ZOOM = 1;\nconst MIN_ZOOM = 0.5;\nconst MAX_ZOOM = 4;\nconst ZOOM_SNAP = 1.05;\nconst PINCH_TOLERANCE = 0.01;\nconst WHEEL_LINE = 16;\nconst WHEEL_CLAMP = 300;\nconst WHEEL_SENSITIVITY = 15e-4;\nfunction panBounds(visible, scale, container) {\n return {\n x: Math.max(Math.abs(visible.width * scale - container.width) / 2, container.width * PAN_SLACK) + VIEW_MARGIN,\n y: Math.max(Math.abs(visible.height * scale - container.height) / 2, container.height * PAN_SLACK) + VIEW_MARGIN\n };\n}\nfunction clampPan(pan, bounds) {\n return {\n x: Math.min(bounds.x, Math.max(-bounds.x, pan.x)),\n y: Math.min(bounds.y, Math.max(-bounds.y, pan.y))\n };\n}\nfunction clampZoom(zoom, previous = FIT_ZOOM) {\n const bounded = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, zoom));\n const crossed = (previous - FIT_ZOOM) * (bounded - FIT_ZOOM) < 0;\n const near = bounded > FIT_ZOOM / ZOOM_SNAP && bounded < FIT_ZOOM * ZOOM_SNAP;\n return crossed && near ? FIT_ZOOM : bounded;\n}\nfunction anchoredPan(pan, cursor, factor) {\n return {\n x: cursor.x - factor * (cursor.x - pan.x),\n y: cursor.y - factor * (cursor.y - pan.y)\n };\n}\nfunction wheelZoomFactor(deltaY, deltaMode, pageHeight) {\n const scaled = deltaMode === 1 ? deltaY * WHEEL_LINE : deltaMode === 2 ? deltaY * pageHeight : deltaY;\n const bounded = Math.min(WHEEL_CLAMP, Math.max(-WHEEL_CLAMP, scaled));\n return Math.exp(-bounded * WHEEL_SENSITIVITY);\n}\nconst MODE_DEFAULT_TOOL = {\n select: \"select\",\n crop: \"crop\",\n finetune: \"adjust\",\n filter: \"adjust\",\n annotate: \"draw\",\n sticker: \"sticker\",\n redact: \"redact\"\n};\nconst EDITOR_CONTEXT = /* @__PURE__ */ Symbol(\"nextcloud:image-editor\");\nfunction createEditorContext() {\n const history = useHistory();\n const state = shallowRef(createInitialState());\n const viewZoom = shallowRef(FIT_ZOOM);\n const cropChanged = shallowRef(false);\n const viewPan = shallowRef({ x: 0, y: 0 });\n const viewFit = shallowRef(null);\n const boundsAt = (zoom) => {\n const fit = viewFit.value;\n return fit === null ? { x: 0, y: 0 } : panBounds(fit.visible, fit.scale * zoom, fit.container);\n };\n const activeMode = shallowRef(\"crop\");\n const activeTool = shallowRef(MODE_DEFAULT_TOOL.crop);\n history.push(state.value, t(\"Original\"));\n const context = {\n state,\n activeMode,\n activeTool,\n setMode(mode) {\n activeMode.value = mode;\n activeTool.value = MODE_DEFAULT_TOOL[mode];\n context.selectedId.value = null;\n },\n drawColor: shallowRef(\"#ff0000\"),\n strokeWidth: shallowRef(6),\n fontSize: shallowRef(24),\n textOutline: shallowRef(false),\n textBackground: shallowRef(false),\n textFont: shallowRef(DEFAULT_FONT),\n textAlign: shallowRef(DEFAULT_ALIGN),\n textBold: shallowRef(false),\n textItalic: shallowRef(false),\n textUnderline: shallowRef(false),\n textStrikethrough: shallowRef(false),\n sticker: shallowRef(\"😀\"),\n redactStyle: shallowRef(\"pixelate\"),\n redactShape: shallowRef(DEFAULT_REDACT_SHAPE),\n cropAspect: shallowRef(null),\n viewZoom,\n viewPan,\n viewFit,\n cropChanged,\n panning: shallowRef(false),\n setViewZoom(zoom, anchor) {\n const previous = viewZoom.value;\n const next = clampZoom(zoom, previous);\n viewZoom.value = next;\n const panned = anchor === void 0 ? viewPan.value : anchoredPan(viewPan.value, anchor, next / previous);\n viewPan.value = clampPan(panned, boundsAt(next));\n },\n setViewPan(pan) {\n viewPan.value = clampPan(pan, boundsAt(viewZoom.value));\n },\n interacting: shallowRef(false),\n selectedId: shallowRef(null),\n canUndo: history.canUndo,\n canRedo: history.canRedo,\n historyEntries: history.entries,\n historyIndex: history.index,\n commit(next, label) {\n context.interacting.value = false;\n state.value = next;\n history.push(next, label);\n },\n preview(next) {\n context.interacting.value = true;\n state.value = next;\n },\n undo() {\n const snapshot = history.undo();\n if (snapshot !== void 0) {\n state.value = snapshot;\n }\n },\n redo() {\n const snapshot = history.redo();\n if (snapshot !== void 0) {\n state.value = snapshot;\n }\n },\n jumpTo(index) {\n const snapshot = history.jumpTo(index);\n if (snapshot !== void 0) {\n state.value = snapshot;\n }\n },\n reset(next) {\n history.clear();\n state.value = next === void 0 ? createInitialState() : normaliseState(next);\n activeMode.value = \"crop\";\n activeTool.value = MODE_DEFAULT_TOOL.crop;\n context.selectedId.value = null;\n viewZoom.value = FIT_ZOOM;\n viewPan.value = { x: 0, y: 0 };\n context.panning.value = false;\n history.push(state.value, next === void 0 ? t(\"Original\") : t(\"Restored\"));\n }\n };\n watch(activeTool, (tool) => {\n if (tool !== \"select\") {\n context.selectedId.value = null;\n }\n });\n provide(EDITOR_CONTEXT, context);\n return context;\n}\nfunction useEditorContext() {\n const context = inject(EDITOR_CONTEXT, null);\n if (context === null) {\n throw new Error(\"useEditorContext() called outside of an ImageEditor tree\");\n }\n return context;\n}\nconst _hoisted_1$P = { class: \"adjust-panel\" };\nconst _hoisted_2$K = { class: \"adjust-panel__tabs\" };\nconst _sfc_main$R = /* @__PURE__ */ defineComponent({\n __name: \"AdjustPanel\",\n props: {\n loaded: { type: Boolean }\n },\n setup(__props) {\n const context = useEditorContext();\n const adjustments = [\n { id: \"exposure\", label: t(\"Exposure\"), icon: CameraIris },\n { id: \"brightness\", label: t(\"Brightness\"), icon: WhiteBalanceSunny },\n { id: \"contrast\", label: t(\"Contrast\"), icon: ContrastCircle },\n { id: \"saturation\", label: t(\"Saturation\"), icon: InvertColors },\n { id: \"temperature\", label: t(\"Temperature\"), icon: Thermometer },\n { id: \"tint\", label: t(\"Tint\"), icon: WhiteBalanceIridescent },\n { id: \"sharpen\", label: t(\"Sharpen\"), icon: ImageFilterCenterFocus },\n { id: \"highlights\", label: t(\"Highlights\"), icon: Spotlight },\n { id: \"shadows\", label: t(\"Shadows\"), icon: BoxShadow },\n { id: \"vignette\", label: t(\"Vignette\"), icon: CircleOpacity }\n ];\n const activeAdjustment = shallowRef(\"exposure\");\n const display = computed(() => {\n const value = context.state.value.adjustments[activeAdjustment.value];\n return value > 0 ? `+${value}` : `${value}`;\n });\n function select(id, event) {\n activeAdjustment.value = id;\n event.currentTarget?.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n }\n function onAdjustInput(value) {\n const state = context.state.value;\n context.preview({\n ...state,\n adjustments: { ...state.adjustments, [activeAdjustment.value]: value }\n });\n }\n function onSliderCommit() {\n context.commit(context.state.value, adjustments.find((entry) => entry.id === activeAdjustment.value).label);\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$P, [\n createElementVNode(\"div\", _hoisted_2$K, [\n (openBlock(), createElementBlock(Fragment, null, renderList(adjustments, (adjustment) => {\n return createVNode(IconTab, {\n key: adjustment.id,\n label: adjustment.label,\n active: activeAdjustment.value === adjustment.id,\n disabled: !__props.loaded,\n \"data-test\": `tab-${adjustment.id}`,\n onClick: ($event) => select(adjustment.id, $event)\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(adjustment.icon), { size: 20 }))\n ]),\n _: 2\n }, 1032, [\"label\", \"active\", \"disabled\", \"data-test\", \"onClick\"]);\n }), 64))\n ]),\n createVNode(EditorSlider, {\n value: unref(context).state.value.adjustments[activeAdjustment.value],\n min: -100,\n max: 100,\n step: 1,\n label: adjustments.find((entry) => entry.id === activeAdjustment.value).label,\n display: display.value,\n \"data-test\": `adjust-${activeAdjustment.value}`,\n disabled: !__props.loaded,\n onInput: onAdjustInput,\n onCommit: onSliderCommit\n }, null, 8, [\"value\", \"label\", \"display\", \"data-test\", \"disabled\"])\n ]);\n };\n }\n});\nconst AdjustPanel = /* @__PURE__ */ _export_sfc(_sfc_main$R, [[\"__scopeId\", \"data-v-1450b457\"]]);\nconst _sfc_main$Q = {\n name: \"ArrowTopRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$O = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$J = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$H = { d: \"M5,17.59L15.59,7H9V5H19V15H17V8.41L6.41,19L5,17.59Z\" };\nconst _hoisted_4$H = { key: 0 };\nfunction _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon arrow-top-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$H, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$H, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$J))\n ], 16, _hoisted_1$O);\n}\nconst ArrowTopRight = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [[\"render\", _sfc_render$D]]);\nconst _sfc_main$P = {\n name: \"EllipseOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$N = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$I = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$G = { d: \"M12,6C16.41,6 20,8.69 20,12C20,15.31 16.41,18 12,18C7.59,18 4,15.31 4,12C4,8.69 7.59,6 12,6M12,4C6.5,4 2,7.58 2,12C2,16.42 6.5,20 12,20C17.5,20 22,16.42 22,12C22,7.58 17.5,4 12,4Z\" };\nconst _hoisted_4$G = { key: 0 };\nfunction _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon ellipse-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$G, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$G, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$I))\n ], 16, _hoisted_1$N);\n}\nconst EllipseOutline = /* @__PURE__ */ _export_sfc(_sfc_main$P, [[\"render\", _sfc_render$C]]);\nconst _sfc_main$O = {\n name: \"FormatTextIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$M = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$H = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$F = { d: \"M18.5,4L19.66,8.35L18.7,8.61C18.25,7.74 17.79,6.87 17.26,6.43C16.73,6 16.11,6 15.5,6H13V16.5C13,17 13,17.5 13.33,17.75C13.67,18 14.33,18 15,18V19H9V18C9.67,18 10.33,18 10.67,17.75C11,17.5 11,17 11,16.5V6H8.5C7.89,6 7.27,6 6.74,6.43C6.21,6.87 5.75,7.74 5.3,8.61L4.34,8.35L5.5,4H18.5Z\" };\nconst _hoisted_4$F = { key: 0 };\nfunction _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-text-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$F, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$F, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$H))\n ], 16, _hoisted_1$M);\n}\nconst FormatText = /* @__PURE__ */ _export_sfc(_sfc_main$O, [[\"render\", _sfc_render$B]]);\nconst _sfc_main$N = {\n name: \"PencilIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$L = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$G = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$E = { d: \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\" };\nconst _hoisted_4$E = { key: 0 };\nfunction _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon pencil-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$E, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$E, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$G))\n ], 16, _hoisted_1$L);\n}\nconst Pencil = /* @__PURE__ */ _export_sfc(_sfc_main$N, [[\"render\", _sfc_render$A]]);\nconst _sfc_main$M = {\n name: \"RectangleOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$K = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$F = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$D = { d: \"M4,6V19H20V6H4M18,17H6V8H18V17Z\" };\nconst _hoisted_4$D = { key: 0 };\nfunction _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon rectangle-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$D, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$D, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$F))\n ], 16, _hoisted_1$K);\n}\nconst RectangleOutline = /* @__PURE__ */ _export_sfc(_sfc_main$M, [[\"render\", _sfc_render$z]]);\nconst _sfc_main$L = {\n name: \"VectorLineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$J = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$E = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$C = { d: \"M15,3V7.59L7.59,15H3V21H9V16.42L16.42,9H21V3M17,5H19V7H17M5,17H7V19H5\" };\nconst _hoisted_4$C = { key: 0 };\nfunction _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon vector-line-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$C, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$C, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$E))\n ], 16, _hoisted_1$J);\n}\nconst VectorLine = /* @__PURE__ */ _export_sfc(_sfc_main$L, [[\"render\", _sfc_render$y]]);\nfunction useAnnotationColor(context) {\n function recolorable() {\n const annotation = context.state.value.annotations.find((entry) => entry.id === context.selectedId.value);\n return annotation !== void 0 && \"color\" in annotation && annotation.type !== \"sticker\" ? annotation : void 0;\n }\n function apply(color) {\n const annotation = recolorable();\n if (annotation === void 0 || annotation.color === color) {\n return;\n }\n const state = context.state.value;\n context.preview({\n ...state,\n annotations: state.annotations.map((entry) => entry.id === annotation.id ? { ...entry, color } : entry)\n });\n }\n return {\n preview(color) {\n context.drawColor.value = color;\n apply(color);\n },\n commit(color) {\n context.drawColor.value = color;\n apply(color);\n if (recolorable() !== void 0) {\n context.commit(context.state.value, t(\"Color\"));\n }\n }\n };\n}\nconst _hoisted_1$I = { class: \"annotate-panel\" };\nconst _hoisted_2$D = { class: \"annotate-panel__row\" };\nconst _hoisted_3$B = { class: \"annotate-panel__option\" };\nconst _hoisted_4$B = [\"value\"];\nconst FONT_SAMPLE = \"A\";\nconst PREVIEW_CAP = 44;\nconst _sfc_main$K = /* @__PURE__ */ defineComponent({\n __name: \"AnnotatePanel\",\n props: {\n loaded: { type: Boolean }\n },\n setup(__props) {\n const context = useEditorContext();\n const color = useAnnotationColor(context);\n const labels = {\n color: t(\"Color\"),\n strokeWidth: t(\"Stroke width\"),\n fontSize: t(\"Font size\")\n };\n const subTools = [\n { id: \"draw\", label: t(\"Draw\"), icon: Pencil },\n { id: \"rectangle\", label: t(\"Rectangle\"), icon: RectangleOutline },\n { id: \"ellipse\", label: t(\"Ellipse\"), icon: EllipseOutline },\n { id: \"arrow\", label: t(\"Arrow\"), icon: ArrowTopRight },\n { id: \"line\", label: t(\"Line\"), icon: VectorLine },\n { id: \"text\", label: t(\"Text\"), icon: FormatText }\n ];\n const showStrokeOptions = computed(() => [\"draw\", \"rectangle\", \"ellipse\", \"arrow\", \"line\"].includes(context.activeTool.value));\n const viewScale = computed(() => (context.viewFit.value?.scale ?? 1) * context.viewZoom.value);\n const strokePreview = computed(() => Math.min(PREVIEW_CAP, Math.max(2, context.strokeWidth.value * viewScale.value)));\n const fontPreview = computed(() => Math.min(PREVIEW_CAP, Math.max(8, context.fontSize.value * viewScale.value)));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$I, [\n createElementVNode(\"div\", _hoisted_2$D, [\n (openBlock(), createElementBlock(Fragment, null, renderList(subTools, (tool) => {\n return createVNode(IconTab, {\n key: tool.id,\n label: tool.label,\n active: unref(context).activeTool.value === tool.id,\n disabled: !__props.loaded,\n iconOnly: \"\",\n onClick: ($event) => unref(context).activeTool.value = tool.id\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(tool.icon), { size: 20 }))\n ]),\n _: 2\n }, 1032, [\"label\", \"active\", \"disabled\", \"onClick\"]);\n }), 64)),\n _cache[4] || (_cache[4] = createElementVNode(\"span\", { class: \"annotate-panel__divider\" }, null, -1)),\n createElementVNode(\"label\", _hoisted_3$B, [\n createTextVNode(toDisplayString(labels.color) + \" \", 1),\n createElementVNode(\"input\", {\n value: unref(context).drawColor.value,\n type: \"color\",\n \"data-test\": \"color\",\n onInput: _cache[0] || (_cache[0] = ($event) => unref(color).preview($event.target.value)),\n onChange: _cache[1] || (_cache[1] = ($event) => unref(color).commit($event.target.value))\n }, null, 40, _hoisted_4$B)\n ])\n ]),\n showStrokeOptions.value ? (openBlock(), createBlock(EditorSlider, {\n key: 0,\n value: unref(context).strokeWidth.value,\n min: 1,\n max: 32,\n step: 1,\n label: labels.strokeWidth,\n onInput: _cache[2] || (_cache[2] = ($event) => unref(context).strokeWidth.value = $event),\n onCommit: () => {\n }\n }, {\n preview: withCtx(() => [\n createElementVNode(\"span\", {\n class: \"annotate-panel__dot\",\n \"data-test\": \"stroke-preview\",\n style: normalizeStyle({\n inlineSize: `${strokePreview.value}px`,\n blockSize: `${strokePreview.value}px`,\n backgroundColor: unref(context).drawColor.value\n })\n }, null, 4)\n ]),\n _: 1\n }, 8, [\"value\", \"label\"])) : unref(context).activeTool.value === \"text\" ? (openBlock(), createBlock(EditorSlider, {\n key: 1,\n value: unref(context).fontSize.value,\n min: 8,\n max: 128,\n step: 1,\n label: labels.fontSize,\n onInput: _cache[3] || (_cache[3] = ($event) => unref(context).fontSize.value = $event),\n onCommit: () => {\n }\n }, {\n preview: withCtx(() => [\n createElementVNode(\"span\", {\n class: \"annotate-panel__glyph\",\n \"data-test\": \"font-preview\",\n style: normalizeStyle({\n fontSize: `${fontPreview.value}px`,\n color: unref(context).drawColor.value\n })\n }, toDisplayString(FONT_SAMPLE), 4)\n ]),\n _: 1\n }, 8, [\"value\", \"label\"])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\nconst AnnotatePanel = /* @__PURE__ */ _export_sfc(_sfc_main$K, [[\"__scopeId\", \"data-v-f1bf58b5\"]]);\nconst _sfc_main$J = {\n name: \"FlipHorizontalIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$H = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$C = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$A = { d: \"M15 21H17V19H15M19 9H21V7H19M3 5V19C3 20.1 3.9 21 5 21H9V19H5V5H9V3H5C3.9 3 3 3.9 3 5M19 3V5H21C21 3.9 20.1 3 19 3M11 23H13V1H11M19 17H21V15H19M15 5H17V3H15M19 13H21V11H19M19 21C20.1 21 21 20.1 21 19H19Z\" };\nconst _hoisted_4$A = { key: 0 };\nfunction _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon flip-horizontal-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$A, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$A, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$C))\n ], 16, _hoisted_1$H);\n}\nconst FlipHorizontal = /* @__PURE__ */ _export_sfc(_sfc_main$J, [[\"render\", _sfc_render$x]]);\nconst _sfc_main$I = {\n name: \"FlipVerticalIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$G = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$B = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$z = { d: \"M3 15V17H5V15M15 19V21H17V19M19 3H5C3.9 3 3 3.9 3 5V9H5V5H19V9H21V5C21 3.9 20.1 3 19 3M21 19H19V21C20.1 21 21 20.1 21 19M1 11V13H23V11M7 19V21H9V19M19 15V17H21V15M11 19V21H13V19M3 19C3 20.1 3.9 21 5 21V19Z\" };\nconst _hoisted_4$z = { key: 0 };\nfunction _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon flip-vertical-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$z, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$z, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$B))\n ], 16, _hoisted_1$G);\n}\nconst FlipVertical = /* @__PURE__ */ _export_sfc(_sfc_main$I, [[\"render\", _sfc_render$w]]);\nconst _sfc_main$H = {\n name: \"RotateLeftIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$F = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$A = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$y = { d: \"M13,4.07V1L8.45,5.55L13,10V6.09C15.84,6.57 18,9.03 18,12C18,14.97 15.84,17.43 13,17.91V19.93C16.95,19.44 20,16.08 20,12C20,7.92 16.95,4.56 13,4.07M7.1,18.32C8.26,19.22 9.61,19.76 11,19.93V17.9C10.13,17.75 9.29,17.41 8.54,16.87L7.1,18.32M6.09,13H4.07C4.24,14.39 4.79,15.73 5.69,16.89L7.1,15.47C6.58,14.72 6.23,13.88 6.09,13M7.11,8.53L5.7,7.11C4.8,8.27 4.24,9.61 4.07,11H6.09C6.23,10.13 6.58,9.28 7.11,8.53Z\" };\nconst _hoisted_4$y = { key: 0 };\nfunction _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon rotate-left-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$y, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$y, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$A))\n ], 16, _hoisted_1$F);\n}\nconst RotateLeft = /* @__PURE__ */ _export_sfc(_sfc_main$H, [[\"render\", _sfc_render$v]]);\nconst _sfc_main$G = {\n name: \"RotateRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$E = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$z = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$x = { d: \"M16.89,15.5L18.31,16.89C19.21,15.73 19.76,14.39 19.93,13H17.91C17.77,13.87 17.43,14.72 16.89,15.5M13,17.9V19.92C14.39,19.75 15.74,19.21 16.9,18.31L15.46,16.87C14.71,17.41 13.87,17.76 13,17.9M19.93,11C19.76,9.61 19.21,8.27 18.31,7.11L16.89,8.53C17.43,9.28 17.77,10.13 17.91,11M15.55,5.55L11,1V4.07C7.06,4.56 4,7.92 4,12C4,16.08 7.05,19.44 11,19.93V17.91C8.16,17.43 6,14.97 6,12C6,9.03 8.16,6.57 11,6.09V10L15.55,5.55Z\" };\nconst _hoisted_4$x = { key: 0 };\nfunction _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon rotate-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$x, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$x, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$z))\n ], 16, _hoisted_1$E);\n}\nconst RotateRight = /* @__PURE__ */ _export_sfc(_sfc_main$G, [[\"render\", _sfc_render$u]]);\nconst EDITOR_COMMANDS = /* @__PURE__ */ Symbol(\"nextcloud:image-editor:commands\");\nfunction provideEditorCommands(commands) {\n provide(EDITOR_COMMANDS, commands);\n return commands;\n}\nfunction useEditorCommands() {\n const commands = inject(EDITOR_COMMANDS, null);\n if (commands === null) {\n throw new Error(\"useEditorCommands() called outside of an ImageEditor tree\");\n }\n return commands;\n}\nconst _hoisted_1$D = { class: \"crop-panel\" };\nconst _hoisted_2$y = { class: \"crop-panel__row\" };\nconst _hoisted_3$w = { class: \"crop-panel__row\" };\nconst _hoisted_4$w = {\n key: 0,\n class: \"crop-panel__divider\",\n \"data-test\": \"crop-divider\"\n};\nconst _sfc_main$F = /* @__PURE__ */ defineComponent({\n __name: \"CropPanel\",\n props: {\n loaded: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const context = useEditorContext();\n const commands = useEditorCommands();\n const labels = {\n rotateLeft: t(\"Rotate left\"),\n rotateRight: t(\"Rotate right\"),\n flipHorizontal: t(\"Flip horizontal\"),\n flipVertical: t(\"Flip vertical\"),\n applyCrop: t(\"Apply crop\"),\n resetCrop: t(\"Reset crop\"),\n rotation: t(\"Rotation\"),\n scale: t(\"Scale\")\n };\n const aspectPresets = [\n { id: null, label: t(\"Free\") },\n { id: \"original\", label: t(\"Original\") },\n { id: 1, label: \"1:1\" },\n { id: 4 / 3, label: \"4:3\" },\n { id: 16 / 9, label: \"16:9\" }\n ];\n const cropControls = [\n { id: \"rotation\", label: labels.rotation },\n { id: \"scale\", label: labels.scale }\n ];\n const activeCropControl = shallowRef(\"rotation\");\n const display = computed(() => activeCropControl.value === \"rotation\" ? `${context.state.value.fineRotation}°` : `×${context.state.value.zoom.toFixed(2)}`);\n const hasCropActions = computed(() => props.loaded && (context.state.value.crop !== null || context.cropChanged.value));\n function onTransformInput(value) {\n context.preview(activeCropControl.value === \"rotation\" ? { ...context.state.value, fineRotation: value } : { ...context.state.value, zoom: value });\n }\n function onSliderCommit() {\n context.commit(context.state.value, activeCropControl.value === \"rotation\" ? labels.rotation : labels.scale);\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$D, [\n createElementVNode(\"div\", _hoisted_2$y, [\n (openBlock(), createElementBlock(Fragment, null, renderList(aspectPresets, (preset) => {\n return createVNode(IconTab, {\n key: String(preset.id),\n \"data-test\": `aspect-${preset.id === null ? \"free\" : preset.id === \"original\" ? \"original\" : preset.label}`,\n label: preset.label,\n active: unref(context).cropAspect.value === preset.id,\n disabled: !__props.loaded,\n onClick: ($event) => unref(context).cropAspect.value = preset.id\n }, null, 8, [\"data-test\", \"label\", \"active\", \"disabled\", \"onClick\"]);\n }), 64))\n ]),\n createElementVNode(\"div\", _hoisted_3$w, [\n createVNode(unref(NcButton), {\n \"aria-label\": labels.rotateLeft,\n title: labels.rotateLeft,\n disabled: !__props.loaded,\n variant: \"tertiary\",\n onClick: _cache[0] || (_cache[0] = ($event) => unref(commands).rotateCCW())\n }, {\n icon: withCtx(() => [\n createVNode(RotateLeft, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n createVNode(unref(NcButton), {\n \"aria-label\": labels.rotateRight,\n title: labels.rotateRight,\n disabled: !__props.loaded,\n variant: \"tertiary\",\n onClick: _cache[1] || (_cache[1] = ($event) => unref(commands).rotateCW())\n }, {\n icon: withCtx(() => [\n createVNode(RotateRight, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n createVNode(unref(NcButton), {\n \"aria-label\": labels.flipHorizontal,\n title: labels.flipHorizontal,\n disabled: !__props.loaded,\n variant: \"tertiary\",\n onClick: _cache[2] || (_cache[2] = ($event) => unref(commands).flipHorizontal())\n }, {\n icon: withCtx(() => [\n createVNode(FlipHorizontal, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n createVNode(unref(NcButton), {\n \"aria-label\": labels.flipVertical,\n title: labels.flipVertical,\n disabled: !__props.loaded,\n variant: \"tertiary\",\n onClick: _cache[3] || (_cache[3] = ($event) => unref(commands).flipVertical())\n }, {\n icon: withCtx(() => [\n createVNode(FlipVertical, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n _cache[6] || (_cache[6] = createElementVNode(\"span\", {\n class: \"crop-panel__divider\",\n \"data-test\": \"crop-divider\"\n }, null, -1)),\n (openBlock(), createElementBlock(Fragment, null, renderList(cropControls, (control) => {\n return createVNode(IconTab, {\n key: control.id,\n \"data-test\": `tab-${control.id}`,\n label: control.label,\n active: activeCropControl.value === control.id,\n disabled: !__props.loaded,\n onClick: ($event) => activeCropControl.value = control.id\n }, null, 8, [\"data-test\", \"label\", \"active\", \"disabled\", \"onClick\"]);\n }), 64)),\n hasCropActions.value ? (openBlock(), createElementBlock(\"span\", _hoisted_4$w)) : createCommentVNode(\"\", true),\n __props.loaded && unref(context).state.value.crop !== null ? (openBlock(), createBlock(unref(NcButton), {\n key: 1,\n \"data-test\": \"reset-crop\",\n variant: \"tertiary\",\n onClick: _cache[4] || (_cache[4] = ($event) => unref(commands).resetCrop())\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(labels.resetCrop), 1)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true),\n __props.loaded && unref(context).cropChanged.value ? (openBlock(), createBlock(unref(NcButton), {\n key: 2,\n \"data-test\": \"apply-crop\",\n variant: \"tertiary\",\n onClick: _cache[5] || (_cache[5] = ($event) => unref(commands).applyCrop())\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(labels.applyCrop), 1)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true)\n ]),\n activeCropControl.value === \"rotation\" ? (openBlock(), createBlock(EditorSlider, {\n key: 0,\n value: unref(context).state.value.fineRotation,\n min: -45,\n max: 45,\n step: 1,\n label: labels.rotation,\n display: display.value,\n \"data-test\": \"fine-rotation\",\n disabled: !__props.loaded,\n onInput: onTransformInput,\n onCommit: onSliderCommit\n }, null, 8, [\"value\", \"label\", \"display\", \"disabled\"])) : (openBlock(), createBlock(EditorSlider, {\n key: 1,\n value: unref(context).state.value.zoom,\n min: 1,\n max: 3,\n step: 0.05,\n label: labels.scale,\n display: display.value,\n \"data-test\": \"zoom\",\n disabled: !__props.loaded,\n onInput: onTransformInput,\n onCommit: onSliderCommit\n }, null, 8, [\"value\", \"label\", \"display\", \"disabled\"]))\n ]);\n };\n }\n});\nconst CropPanel = /* @__PURE__ */ _export_sfc(_sfc_main$F, [[\"__scopeId\", \"data-v-091ea9a4\"]]);\nconst FLOOR_AREA = 512 * 512;\nconst REFINEMENTS = 4;\nlet largestGood = 0;\nlet smallestBad = Number.POSITIVE_INFINITY;\nfunction paints(area) {\n const side = Math.floor(Math.sqrt(area));\n const canvas = document.createElement(\"canvas\");\n canvas.width = side;\n canvas.height = side;\n const context = canvas.getContext(\"2d\");\n if (context === null) {\n return false;\n }\n try {\n context.fillStyle = \"#ffffff\";\n context.fillRect(side - 1, side - 1, 1, 1);\n return context.getImageData(side - 1, side - 1, 1, 1).data[3] === 255;\n } catch {\n return false;\n } finally {\n canvas.width = 0;\n canvas.height = 0;\n }\n}\nfunction fits(area) {\n if (area <= largestGood) {\n return true;\n }\n if (area >= smallestBad) {\n return false;\n }\n if (paints(area)) {\n largestGood = area;\n return true;\n }\n smallestBad = area;\n return false;\n}\nfunction canvasScaleFor(size) {\n const area = size.width * size.height;\n if (area <= 0 || fits(area)) {\n return 1;\n }\n let bad = area;\n let good = 0;\n for (let candidate = area / 2; candidate >= FLOOR_AREA; candidate /= 2) {\n if (fits(candidate)) {\n good = candidate;\n break;\n }\n bad = candidate;\n }\n if (good === 0) {\n return Math.min(1, Math.sqrt(FLOOR_AREA / area));\n }\n for (let step = 0; step < REFINEMENTS; step++) {\n const middle = (good + bad) / 2;\n if (fits(middle)) {\n good = middle;\n } else {\n bad = middle;\n }\n }\n return Math.min(1, Math.sqrt(good / area));\n}\nfunction luma(r, g, b2) {\n return 0.299 * r + 0.587 * g + 0.114 * b2;\n}\nconst EXPOSURE_RANGE = 2;\nconst TEMPERATURE_RANGE = 0.25;\nconst TINT_RANGE = 0.25;\nfunction tone(imageData) {\n const { data } = imageData;\n const exposure = 2 ** ((this.getAttr(\"exposure\") ?? 0) * EXPOSURE_RANGE);\n const temperature = (this.getAttr(\"temperature\") ?? 0) * TEMPERATURE_RANGE;\n const tint = (this.getAttr(\"tint\") ?? 0) * TINT_RANGE;\n const red = exposure * (1 + temperature) * (1 + tint / 2);\n const green = exposure * (1 - tint);\n const blue = exposure * (1 - temperature) * (1 + tint / 2);\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n data[i2] = data[i2] * red;\n data[i2 + 1] = data[i2 + 1] * green;\n data[i2 + 2] = data[i2 + 2] * blue;\n }\n}\nconst HIGHLIGHTS_RANGE = 0.6;\nconst SHADOWS_RANGE = 0.6;\nfunction tonal(imageData) {\n const highlights = (this.getAttr(\"highlights\") ?? 0) * HIGHLIGHTS_RANGE;\n const shadows = (this.getAttr(\"shadows\") ?? 0) * SHADOWS_RANGE;\n if (highlights === 0 && shadows === 0) {\n return;\n }\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const level = luma(data[i2], data[i2 + 1], data[i2 + 2]) / 255;\n const bright = level * level;\n const dark = (1 - level) * (1 - level);\n const gain = 1 + highlights * bright + shadows * dark;\n data[i2] = data[i2] * gain;\n data[i2 + 1] = data[i2 + 1] * gain;\n data[i2 + 2] = data[i2 + 2] * gain;\n }\n}\nconst VIGNETTE_RANGE = 0.9;\nconst VIGNETTE_START = 0.35;\nfunction vignette(imageData) {\n const amount = (this.getAttr(\"vignette\") ?? 0) * VIGNETTE_RANGE;\n if (amount === 0) {\n return;\n }\n const { data, width, height } = imageData;\n const centreX = width / 2;\n const centreY = height / 2;\n for (let y = 0; y < height; y++) {\n const dy = (y - centreY) / centreY;\n for (let x = 0; x < width; x++) {\n const dx = (x - centreX) / centreX;\n const distance = Math.sqrt(dx * dx + dy * dy);\n const t2 = Math.min(1, Math.max(0, (distance - VIGNETTE_START) / (1 - VIGNETTE_START)));\n const gain = 1 - amount * t2 * t2 * (3 - 2 * t2);\n const i2 = (y * width + x) * 4;\n data[i2] = data[i2] * gain;\n data[i2 + 1] = data[i2 + 1] * gain;\n data[i2 + 2] = data[i2 + 2] * gain;\n }\n }\n}\nconst SHARPEN_RANGE = 1.2;\nfunction sharpen(imageData) {\n const amount = (this.getAttr(\"sharpen\") ?? 0) * SHARPEN_RANGE;\n if (amount === 0) {\n return;\n }\n const { data, width, height } = imageData;\n const source = new Uint8ClampedArray(data);\n const stride = width * 4;\n for (let y = 1; y < height - 1; y++) {\n for (let x = 1; x < width - 1; x++) {\n const centre = y * stride + x * 4;\n for (let channel = 0; channel < 3; channel++) {\n const i2 = centre + channel;\n const neighbours = source[i2 - 4] + source[i2 + 4] + source[i2 - stride] + source[i2 + stride];\n data[i2] = source[i2] * (1 + 4 * amount) - amount * neighbours;\n }\n }\n }\n}\nfunction saturate(imageData) {\n const { data } = imageData;\n const factor = this.saturation() + 1;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const gray = luma(data[i2], data[i2 + 1], data[i2 + 2]);\n data[i2] = gray + (data[i2] - gray) * factor;\n data[i2 + 1] = gray + (data[i2 + 1] - gray) * factor;\n data[i2 + 2] = gray + (data[i2 + 2] - gray) * factor;\n }\n}\nfunction warm(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n data[i2] = Math.min(255, data[i2] * 1.12);\n data[i2 + 2] = data[i2 + 2] * 0.9;\n }\n}\nfunction cool(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n data[i2] = data[i2] * 0.9;\n data[i2 + 2] = Math.min(255, data[i2 + 2] * 1.12);\n }\n}\nfunction fade(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const luma2 = 0.299 * data[i2] + 0.587 * data[i2 + 1] + 0.114 * data[i2 + 2];\n data[i2] = 28 + (0.7 * data[i2] + 0.3 * luma2) * 0.86 * 1.04;\n data[i2 + 1] = 28 + (0.7 * data[i2 + 1] + 0.3 * luma2) * 0.86;\n data[i2 + 2] = 28 + (0.7 * data[i2 + 2] + 0.3 * luma2) * 0.86 * 0.96;\n }\n}\nfunction noir(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const luma2 = 0.299 * data[i2] + 0.587 * data[i2 + 1] + 0.114 * data[i2 + 2];\n const value = Math.min(255, Math.max(0, (luma2 - 128) * 1.35 + 118));\n data[i2] = value;\n data[i2 + 1] = value;\n data[i2 + 2] = value;\n }\n}\nfunction golden(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n data[i2] = data[i2] * 1.12 + 12;\n data[i2 + 1] = data[i2 + 1] * 1.04 + 5;\n data[i2 + 2] = data[i2 + 2] * 0.82;\n }\n}\nfunction coast(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const luma2 = 0.299 * data[i2] + 0.587 * data[i2 + 1] + 0.114 * data[i2 + 2];\n const shadow = Math.max(0, 1 - luma2 / 140);\n data[i2] = (data[i2] - 128) * 1.12 + 132;\n data[i2 + 1] = (data[i2 + 1] - 128) * 1.12 + 132 + 10 * shadow;\n data[i2 + 2] = (data[i2 + 2] - 128) * 1.12 + 132 + 22 * shadow;\n }\n}\nfunction mist(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const luma2 = 0.299 * data[i2] + 0.587 * data[i2 + 1] + 0.114 * data[i2 + 2];\n data[i2] = 22 + (0.6 * data[i2] + 0.4 * luma2) * 0.84;\n data[i2 + 1] = 22 + (0.6 * data[i2 + 1] + 0.4 * luma2) * 0.84;\n data[i2 + 2] = 26 + (0.6 * data[i2 + 2] + 0.4 * luma2) * 0.84;\n }\n}\nfunction berry(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n data[i2] = (data[i2] - 128) * 1.08 + 128 + 10;\n data[i2 + 1] = (data[i2 + 1] - 128) * 1.08 + 128 - 12;\n data[i2 + 2] = (data[i2 + 2] - 128) * 1.08 + 128 + 8;\n }\n}\nfunction cinema(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const luma2 = 0.299 * data[i2] + 0.587 * data[i2 + 1] + 0.114 * data[i2 + 2];\n const balance = (luma2 - 128) / 128;\n data[i2] = (data[i2] - 128) * 1.06 + 128 + 16 * balance;\n data[i2 + 1] = (data[i2 + 1] - 128) * 1.06 + 128;\n data[i2 + 2] = (data[i2 + 2] - 128) * 1.06 + 128 - 20 * balance;\n }\n}\nfunction luna(imageData) {\n const { data } = imageData;\n for (let i2 = 0; i2 < data.length; i2 += 4) {\n const luma2 = 0.299 * data[i2] + 0.587 * data[i2 + 1] + 0.114 * data[i2 + 2];\n const value = 18 + luma2 * 0.9;\n data[i2] = value;\n data[i2 + 1] = value;\n data[i2 + 2] = value + 4;\n }\n}\nconst jsContent = '(function() {\\n \"use strict\";\\n function halve(source) {\\n const canvas = new OffscreenCanvas(\\n Math.max(1, Math.ceil(source.width / 2)),\\n Math.max(1, Math.ceil(source.height / 2))\\n );\\n const context = canvas.getContext(\"2d\");\\n if (context === null) {\\n throw new Error(\"Canvas 2D context unavailable\");\\n }\\n context.imageSmoothingQuality = \"high\";\\n context.drawImage(source, 0, 0, canvas.width, canvas.height);\\n return canvas.transferToImageBitmap();\\n }\\n self.addEventListener(\"message\", async (event) => {\\n const request = event.data;\\n try {\\n if (request.kind === \"decode\") {\\n const bitmap = await createImageBitmap(request.blob);\\n const response2 = { id: request.id, kind: \"decode\", bitmap };\\n self.postMessage(response2, { transfer: [bitmap] });\\n return;\\n }\\n let level = request.bitmap;\\n const levels = [];\\n for (let step = 0; step < request.steps && (level.width > 1 || level.height > 1); step++) {\\n level = halve(level);\\n levels.push(level);\\n }\\n request.bitmap.close();\\n const response = { id: request.id, kind: \"levels\", levels };\\n self.postMessage(response, { transfer: levels });\\n } catch (error) {\\n const response = {\\n id: request.id,\\n kind: \"error\",\\n message: error instanceof Error ? error.message : String(error)\\n };\\n self.postMessage(response);\\n }\\n });\\n})();\\n//# sourceMappingURL=image.worker-CCbQx30t.js.map\\n';\nconst blob = typeof self !== \"undefined\" && self.Blob && new Blob([\"(self.URL || self.webkitURL).revokeObjectURL(self.location.href);\", jsContent], { type: \"text/javascript;charset=utf-8\" });\nfunction WorkerWrapper(options) {\n let objURL;\n try {\n objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob);\n if (!objURL) throw \"\";\n const worker = new Worker(objURL, {\n name: options?.name\n });\n worker.addEventListener(\"error\", () => {\n (self.URL || self.webkitURL).revokeObjectURL(objURL);\n });\n return worker;\n } catch (e) {\n return new Worker(\n \"data:text/javascript;charset=utf-8,\" + encodeURIComponent(jsContent),\n {\n name: options?.name\n }\n );\n }\n}\nfunction createImageWorkerClient(worker) {\n const pending = /* @__PURE__ */ new Map();\n let nextId = 0;\n let broken = false;\n function fail() {\n broken = true;\n const waiting = [...pending.values()];\n pending.clear();\n waiting.forEach((one) => one.reject(new Error(\"The image worker stopped\")));\n }\n worker.addEventListener(\"error\", fail);\n worker.addEventListener(\"messageerror\", fail);\n worker.addEventListener(\"message\", (event) => {\n const response = event.data;\n const waiting = pending.get(response.id);\n if (waiting === void 0) {\n return;\n }\n pending.delete(response.id);\n if (response.kind === \"error\") {\n waiting.reject(new Error(response.message));\n return;\n }\n waiting.resolve(response.kind === \"decode\" ? response.bitmap : response.levels);\n });\n function ask(request, transfer) {\n if (broken) {\n return Promise.reject(new Error(\"The image worker stopped\"));\n }\n const id = nextId++;\n return new Promise((resolve, reject) => {\n pending.set(id, { resolve, reject });\n worker.postMessage({ ...request, id }, transfer);\n });\n }\n return {\n decode: (blob2) => ask({ kind: \"decode\", blob: blob2 }, []),\n levels: (bitmap, steps) => ask({ kind: \"levels\", bitmap, steps }, [bitmap])\n };\n}\nlet client;\nfunction imageWorker() {\n if (client !== void 0) {\n return client;\n }\n client = null;\n if (typeof Worker === \"undefined\" || typeof OffscreenCanvas === \"undefined\" || typeof createImageBitmap === \"undefined\") {\n return client;\n }\n try {\n client = createImageWorkerClient(new WorkerWrapper());\n } catch {\n client = null;\n }\n return client;\n}\nconst halves = /* @__PURE__ */ new WeakMap();\nconst PREBUILT_LEVELS = 4;\nfunction halve(source) {\n const canvas = document.createElement(\"canvas\");\n canvas.width = Math.max(1, Math.ceil(source.width / 2));\n canvas.height = Math.max(1, Math.ceil(source.height / 2));\n const context = canvas.getContext(\"2d\");\n if (context === null) {\n throw new Error(\"Canvas 2D context unavailable\");\n }\n context.imageSmoothingQuality = \"high\";\n context.drawImage(source, 0, 0, canvas.width, canvas.height);\n return canvas;\n}\nasync function prepareLevels(source) {\n const worker = imageWorker();\n if (worker === null || halves.has(source)) {\n return;\n }\n try {\n const bitmap = await createImageBitmap(source);\n const levels = await worker.levels(bitmap, PREBUILT_LEVELS);\n halves.set(source, levels);\n } catch {\n }\n}\nfunction levelFor(source, scale) {\n let level = source;\n let drawn = scale;\n let depth = 0;\n while (drawn <= 0.5 && (level.width > 1 || level.height > 1)) {\n const cached = halves.get(source) ?? [];\n level = cached[depth] ?? halve(level);\n cached[depth] = level;\n halves.set(source, cached);\n drawn *= 2;\n depth += 1;\n }\n return level;\n}\nconst TEXT_EMPHASES = [\"bold\", \"italic\", \"underline\", \"strikethrough\"];\nfunction fontStyle(text) {\n if (text.italic === true) {\n return text.bold === true ? \"italic bold\" : \"italic\";\n }\n return text.bold === true ? \"bold\" : \"normal\";\n}\nfunction textDecoration(text) {\n if (text.underline === true) {\n return text.strikethrough === true ? \"underline line-through\" : \"underline\";\n }\n return text.strikethrough === true ? \"line-through\" : \"\";\n}\nconst OUTLINE_RATIO = 8;\nfunction outlineColor(color) {\n const hex = /^#?([0-9a-f]{6})$/i.exec(color)?.[1];\n if (hex === void 0) {\n return \"#000000\";\n }\n const red = Number.parseInt(hex.slice(0, 2), 16);\n const green = Number.parseInt(hex.slice(2, 4), 16);\n const blue = Number.parseInt(hex.slice(4, 6), 16);\n const luma2 = 0.299 * red + 0.587 * green + 0.114 * blue;\n return luma2 > 140 ? \"#000000\" : \"#ffffff\";\n}\nfunction outlineWidth(fontSize) {\n return Math.max(1, Math.round(fontSize / OUTLINE_RATIO));\n}\nfunction visibleRect(state, oriented) {\n return state.crop ?? { x: 0, y: 0, ...oriented };\n}\nfunction context2d(canvas) {\n const context = canvas.getContext(\"2d\");\n if (context === null) {\n throw new Error(\"Canvas 2D context unavailable\");\n }\n return context;\n}\nfunction supportsContextFilter(context) {\n if (context === null) {\n return false;\n }\n context.filter = \"blur(1px)\";\n return context.filter !== \"none\";\n}\nlet contextFilterSupport = null;\nfunction contextFilterAvailable() {\n contextFilterSupport ??= supportsContextFilter(document.createElement(\"canvas\").getContext(\"2d\"));\n return contextFilterSupport;\n}\nfunction obfuscateRegion(region, style, strength) {\n const out = document.createElement(\"canvas\");\n out.width = region.width;\n out.height = region.height;\n const context = context2d(out);\n if (style === \"blur\" && contextFilterAvailable()) {\n context.filter = `blur(${strength}px)`;\n context.drawImage(region, 0, 0);\n return out;\n }\n const small = document.createElement(\"canvas\");\n small.width = Math.max(1, Math.ceil(region.width / strength));\n small.height = Math.max(1, Math.ceil(region.height / strength));\n context2d(small).drawImage(region, 0, 0, small.width, small.height);\n context.imageSmoothingEnabled = false;\n context.drawImage(small, 0, 0, out.width, out.height);\n return out;\n}\nfunction cutEllipse(patch, x, y, width, height) {\n const out = document.createElement(\"canvas\");\n out.width = width;\n out.height = height;\n const context = context2d(out);\n context.drawImage(patch, x, y, width, height, 0, 0, width, height);\n context.globalCompositeOperation = \"destination-in\";\n context.beginPath();\n context.ellipse(width / 2, height / 2, width / 2, height / 2, 0, 0, Math.PI * 2);\n context.fill();\n return out;\n}\nfunction redactStrength(source) {\n return Math.max(4, Math.round(Math.min(source.width, source.height) / 40));\n}\nfunction redactSceneFunc(annotation, strength) {\n return (context, shape) => {\n const canvas = context.canvas;\n if (canvas.hitCanvas === true) {\n return;\n }\n const width = shape.width();\n const height = shape.height();\n const transform = shape.getAbsoluteTransform();\n const topLeft = transform.point({ x: 0, y: 0 });\n const bottomRight = transform.point({ x: width, y: height });\n const ratio = canvas.pixelRatio || 1;\n const left = Math.round(topLeft.x * ratio);\n const top = Math.round(topLeft.y * ratio);\n const deviceWidth = Math.round(bottomRight.x * ratio) - left;\n const deviceHeight = Math.round(bottomRight.y * ratio) - top;\n if (deviceWidth < 1 || deviceHeight < 1 || width <= 0 || height <= 0) {\n return;\n }\n const deviceStrength = Math.max(2, Math.round(strength * (deviceWidth / width)));\n const pad = annotation.style === \"blur\" ? deviceStrength * 2 : 0;\n const readLeft = Math.max(0, left - pad);\n const readTop = Math.max(0, top - pad);\n const readWidth = Math.min(canvas.width, left + deviceWidth + pad) - readLeft;\n const readHeight = Math.min(canvas.height, top + deviceHeight + pad) - readTop;\n if (readWidth < 1 || readHeight < 1) {\n return;\n }\n const region = document.createElement(\"canvas\");\n region.width = readWidth;\n region.height = readHeight;\n context2d(region).putImageData(context.getImageData(readLeft, readTop, readWidth, readHeight), 0, 0);\n const patch = obfuscateRegion(region, annotation.style, deviceStrength);\n if (redactShape(annotation.shape) === \"ellipse\") {\n const cut = cutEllipse(patch, left - readLeft, top - readTop, deviceWidth, deviceHeight);\n context.drawImage(cut, 0, 0, width, height);\n return;\n }\n context.drawImage(\n patch,\n left - readLeft,\n top - readTop,\n deviceWidth,\n deviceHeight,\n 0,\n 0,\n width,\n height\n );\n };\n}\nfunction backgroundPadding(fontSize) {\n return Math.max(2, Math.round(fontSize / 6));\n}\nconst MIN_HIT_AREA = 24;\nfunction hitAreaWidth(strokeWidth, scale) {\n return Math.max(strokeWidth, MIN_HIT_AREA / Math.max(scale, Number.EPSILON));\n}\nfunction buildAnnotationNode(annotation, source) {\n const base = { id: annotation.id, name: \"annotation\" };\n switch (annotation.type) {\n case \"draw\":\n return new Konva.Line({\n ...base,\n points: annotation.points,\n stroke: annotation.color,\n strokeWidth: annotation.strokeWidth,\n lineCap: \"round\",\n lineJoin: \"round\"\n });\n case \"line\":\n return new Konva.Line({\n ...base,\n points: [...annotation.points],\n stroke: annotation.color,\n strokeWidth: annotation.strokeWidth,\n lineCap: \"round\"\n });\n case \"arrow\":\n return new Konva.Arrow({\n ...base,\n points: [...annotation.points],\n stroke: annotation.color,\n fill: annotation.color,\n strokeWidth: annotation.strokeWidth,\n pointerLength: annotation.strokeWidth * 4,\n pointerWidth: annotation.strokeWidth * 4\n });\n case \"rectangle\":\n return new Konva.Rect({\n ...base,\n ...annotation.rect,\n rotation: annotation.rotation,\n stroke: annotation.color,\n strokeWidth: annotation.strokeWidth\n });\n case \"ellipse\":\n return new Konva.Ellipse({\n ...base,\n x: annotation.rect.x,\n y: annotation.rect.y,\n offsetX: -annotation.rect.width / 2,\n offsetY: -annotation.rect.height / 2,\n radiusX: annotation.rect.width / 2,\n radiusY: annotation.rect.height / 2,\n rotation: annotation.rotation,\n stroke: annotation.color,\n strokeWidth: annotation.strokeWidth\n });\n case \"text\":\n case \"sticker\": {\n const text = new Konva.Text({\n ...base,\n x: annotation.x,\n y: annotation.y,\n text: annotation.text,\n fill: annotation.color,\n fontSize: annotation.fontSize,\n rotation: annotation.rotation,\n // Kept in sync with the text overlay for WYSIWYG editing\n fontFamily: fontStack(annotation.font),\n fontStyle: fontStyle(annotation),\n textDecoration: textDecoration(annotation),\n align: textAlign(annotation.align),\n ...annotation.outline === true ? {\n stroke: outlineColor(annotation.color),\n strokeWidth: outlineWidth(annotation.fontSize),\n // The edge sits behind the glyph rather than eating\n // into it, which is what keeps small text legible\n fillAfterStrokeEnabled: true\n } : {},\n ...annotation.background === true ? { padding: backgroundPadding(annotation.fontSize) } : {}\n });\n if (annotation.background !== true) {\n return text;\n }\n const label = new Konva.Label({ ...base, x: annotation.x, y: annotation.y, rotation: annotation.rotation });\n text.position({ x: 0, y: 0 });\n text.rotation(0);\n label.add(new Konva.Tag({ fill: outlineColor(annotation.color), cornerRadius: 2 }));\n label.add(text);\n return label;\n }\n case \"redact\": {\n if (source === void 0) {\n throw new Error(\"Redaction requires the source image size\");\n }\n const { rect } = annotation;\n return new Konva.Shape({\n ...base,\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height,\n // Something has to be fillable for the shape to register on\n // the hit canvas; what is drawn there is the hit colour\n fill: \"black\",\n sceneFunc: redactSceneFunc(annotation, redactStrength(source)),\n hitFunc: (context, shape) => {\n const shapeWidth = shape.width();\n const shapeHeight = shape.height();\n context.beginPath();\n if (redactShape(annotation.shape) === \"ellipse\") {\n context.ellipse(\n shapeWidth / 2,\n shapeHeight / 2,\n shapeWidth / 2,\n shapeHeight / 2,\n 0,\n 0,\n Math.PI * 2\n );\n } else {\n context.rect(0, 0, shapeWidth, shapeHeight);\n }\n context.closePath();\n context.fillStrokeShape(shape);\n }\n });\n }\n }\n}\nfunction applyFilters(node, state, pixelRatio = 1) {\n const { exposure, brightness, contrast, saturation, temperature, tint } = state.adjustments;\n const { highlights, shadows } = state.adjustments;\n const filters = [];\n if (exposure !== 0 || temperature !== 0 || tint !== 0) {\n filters.push(tone);\n }\n if (brightness !== 0) {\n filters.push(Konva.Filters.Brighten);\n }\n if (contrast !== 0) {\n filters.push(Konva.Filters.Contrast);\n }\n if (saturation !== 0) {\n filters.push(saturate);\n }\n if (highlights !== 0 || shadows !== 0) {\n filters.push(tonal);\n }\n const presetFilters = {\n none: null,\n grayscale: Konva.Filters.Grayscale,\n noir,\n luna,\n sepia: Konva.Filters.Sepia,\n fade,\n warm,\n cool,\n golden,\n coast,\n mist,\n berry,\n cinema,\n invert: Konva.Filters.Invert,\n solarize: Konva.Filters.Solarize,\n posterize: Konva.Filters.Posterize,\n pop: Konva.Filters.Enhance\n }[state.preset];\n if (presetFilters !== null) {\n filters.push(presetFilters);\n }\n if (state.adjustments.sharpen !== 0) {\n filters.push(sharpen);\n }\n if (state.adjustments.vignette !== 0) {\n filters.push(vignette);\n }\n if (filters.length === 0) {\n node.filters([]);\n node.clearCache();\n return;\n }\n node.filters(filters);\n node.brightness(brightness / 100);\n node.contrast(contrast);\n node.saturation(saturation / 100);\n node.setAttr(\"exposure\", exposure / 100);\n node.setAttr(\"temperature\", temperature / 100);\n node.setAttr(\"tint\", tint / 100);\n node.setAttr(\"sharpen\", state.adjustments.sharpen / 100);\n node.setAttr(\"highlights\", highlights / 100);\n node.setAttr(\"shadows\", shadows / 100);\n node.setAttr(\"vignette\", state.adjustments.vignette / 100);\n if (state.preset === \"posterize\") {\n node.levels(0.02);\n }\n if (state.preset === \"pop\") {\n node.enhance(0.25);\n }\n const cacheFit = canvasScaleFor({\n width: node.width() * pixelRatio,\n height: node.height() * pixelRatio\n });\n node.cache({ pixelRatio: pixelRatio * cacheFit });\n}\nfunction thumbnailKey(state) {\n const { crop, adjustments } = state;\n return [\n crop?.x,\n crop?.y,\n crop?.width,\n crop?.height,\n ...Object.values(adjustments)\n ].join(\"|\");\n}\nfunction presetThumbnail(oriented, state, preset, size = 96) {\n const visible = visibleRect(state, { width: oriented.width, height: oriented.height });\n const scale = Math.min(size / visible.width, size / visible.height);\n const thumb = document.createElement(\"canvas\");\n thumb.width = Math.max(1, Math.round(visible.width * scale));\n thumb.height = Math.max(1, Math.round(visible.height * scale));\n context2d(thumb).drawImage(oriented, visible.x, visible.y, visible.width, visible.height, 0, 0, thumb.width, thumb.height);\n const stage = new Konva.Stage({\n container: document.createElement(\"div\"),\n width: thumb.width,\n height: thumb.height\n });\n try {\n const node = new Konva.Image({ image: thumb, listening: false });\n applyFilters(node, { ...state, preset });\n const layer = new Konva.Layer();\n layer.add(node);\n stage.add(layer);\n return stage.toDataURL();\n } finally {\n stage.destroy();\n }\n}\nfunction createScene(stage) {\n const layer = new Konva.Layer();\n const viewGroup = new Konva.Group({ name: \"view\" });\n const contentGroup = new Konva.Group({ name: \"content\" });\n const imageNode = new Konva.Image({ image: void 0, listening: false });\n contentGroup.add(imageNode);\n viewGroup.add(contentGroup);\n layer.add(viewGroup);\n stage.add(layer);\n const built = /* @__PURE__ */ new Map();\n let filterKey = \"\";\n const update = (oriented, state, options) => {\n const level = levelFor(oriented, options.scale * layer.getCanvas().getPixelRatio());\n const imageChanged = imageNode.image() !== level;\n if (imageChanged) {\n imageNode.image(level);\n imageNode.scale({ x: oriented.width / level.width, y: oriented.height / level.height });\n }\n const origin = options.showCropped ? visibleRect(state, { width: oriented.width, height: oriented.height }) : { x: 0, y: 0 };\n viewGroup.position({\n x: options.offset.x - origin.x * options.scale,\n y: options.offset.y - origin.y * options.scale\n });\n viewGroup.scale({ x: options.scale, y: options.scale });\n if (options.showCropped && state.crop !== null) {\n viewGroup.clip(state.crop);\n } else {\n viewGroup.clipWidth(void 0);\n viewGroup.clipHeight(void 0);\n }\n const pixelRatio = options.fastFilters ? Math.min(1, options.scale * imageNode.scaleX() * (globalThis.devicePixelRatio || 1)) : 1;\n const nextFilterKey = `${Object.values(state.adjustments).join(\"|\")}|${state.preset}|${pixelRatio}`;\n if (imageChanged || nextFilterKey !== filterKey) {\n applyFilters(imageNode, state, pixelRatio);\n filterKey = nextFilterKey;\n }\n const seen = /* @__PURE__ */ new Set();\n const sourceSize = { width: oriented.width, height: oriented.height };\n for (const annotation of state.annotations) {\n seen.add(annotation.id);\n const entry = built.get(annotation.id);\n if (entry !== void 0 && entry.annotation === annotation) {\n continue;\n }\n entry?.node.destroy();\n const node = buildAnnotationNode(annotation, sourceSize);\n contentGroup.add(node);\n built.set(annotation.id, { annotation, node });\n }\n for (const [id, entry] of built) {\n if (!seen.has(id)) {\n entry.node.destroy();\n built.delete(id);\n }\n }\n for (const { node } of built.values()) {\n if (node instanceof Konva.Shape && node.strokeWidth() > 0) {\n node.hitStrokeWidth(hitAreaWidth(node.strokeWidth(), options.scale));\n }\n }\n imageNode.zIndex(0);\n state.annotations.forEach((annotation, index) => built.get(annotation.id).node.zIndex(index + 1));\n layer.batchDraw();\n };\n return {\n viewGroup,\n contentGroup,\n imageNode,\n update,\n destroy: () => {\n built.clear();\n layer.destroy();\n }\n };\n}\nfunction renderScene(stage, oriented, state, options) {\n const scene = createScene(stage);\n scene.update(oriented, state, options);\n return scene;\n}\nfunction renderToCanvas(oriented, state, maxSize) {\n const visible = visibleRect(state, { width: oriented.width, height: oriented.height });\n const requested = maxSize === void 0 ? 1 : Math.min(1, maxSize / Math.max(visible.width, visible.height));\n const pixelRatio = requested * canvasScaleFor({\n width: visible.width * requested,\n height: visible.height * requested\n });\n const stage = new Konva.Stage({\n // Detached container: the export stage is never displayed\n container: document.createElement(\"div\"),\n width: visible.width,\n height: visible.height\n });\n try {\n renderScene(stage, oriented, state, {\n scale: 1,\n offset: { x: 0, y: 0 },\n showCropped: true\n });\n return stage.toCanvas({ pixelRatio });\n } finally {\n stage.destroy();\n }\n}\nfunction toImageCoords(pointer, state, oriented, options) {\n const visible = visibleRect(state, oriented);\n return {\n x: (pointer.x - options.offset.x) / options.scale + (options.showCropped ? visible.x : 0),\n y: (pointer.y - options.offset.y) / options.scale + (options.showCropped ? visible.y : 0)\n };\n}\nconst _hoisted_1$C = [\"src\", \"alt\"];\nconst _sfc_main$E = /* @__PURE__ */ defineComponent({\n __name: \"FilterStrip\",\n props: {\n loaded: { type: Boolean },\n oriented: {}\n },\n setup(__props) {\n const props = __props;\n const context = useEditorContext();\n const presets = [\n { id: \"none\", label: t(\"No filter\") },\n { id: \"pop\", label: t(\"Pop\") },\n { id: \"golden\", label: t(\"Golden\") },\n { id: \"coast\", label: t(\"Coast\") },\n { id: \"cinema\", label: t(\"Cinema\") },\n { id: \"berry\", label: t(\"Berry\") },\n { id: \"mist\", label: t(\"Mist\") },\n { id: \"warm\", label: t(\"Warm\") },\n { id: \"cool\", label: t(\"Cool\") },\n { id: \"fade\", label: t(\"Fade\") },\n { id: \"grayscale\", label: t(\"Grayscale\") },\n { id: \"noir\", label: t(\"Noir\") },\n { id: \"luna\", label: t(\"Luna\") },\n { id: \"sepia\", label: t(\"Sepia\") },\n { id: \"invert\", label: t(\"Invert\") },\n { id: \"solarize\", label: t(\"Solarize\") },\n { id: \"posterize\", label: t(\"Posterize\") }\n ];\n const presetPreviews = shallowRef([]);\n watch(\n [() => props.oriented, () => thumbnailKey(context.state.value)],\n ([oriented]) => {\n presetPreviews.value = oriented ? presets.map((preset) => ({\n ...preset,\n url: presetThumbnail(oriented, context.state.value, preset.id)\n })) : [];\n },\n { immediate: true }\n );\n function setPreset(preset, label) {\n context.commit({ ...context.state.value, preset }, label);\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(GlassSurface, {\n variant: \"strip\",\n class: \"filter-strip\"\n }, {\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(presetPreviews.value, (preset) => {\n return openBlock(), createBlock(IconTab, {\n key: preset.id,\n label: preset.label,\n active: unref(context).state.value.preset === preset.id,\n disabled: !__props.loaded,\n \"data-test\": `preset-${preset.id}`,\n onClick: ($event) => setPreset(preset.id, preset.label)\n }, {\n default: withCtx(() => [\n createElementVNode(\"img\", {\n src: preset.url,\n alt: preset.label\n }, null, 8, _hoisted_1$C)\n ]),\n _: 2\n }, 1032, [\"label\", \"active\", \"disabled\", \"data-test\", \"onClick\"]);\n }), 128))\n ]),\n _: 1\n });\n };\n }\n});\nconst FilterStrip = /* @__PURE__ */ _export_sfc(_sfc_main$E, [[\"__scopeId\", \"data-v-ceab69b4\"]]);\nconst _hoisted_1$B = { class: \"redact-panel\" };\nconst _sfc_main$D = /* @__PURE__ */ defineComponent({\n __name: \"RedactPanel\",\n props: {\n loaded: { type: Boolean }\n },\n setup(__props) {\n const context = useEditorContext();\n const labels = {\n pixelate: t(\"Pixelate\"),\n blur: t(\"Smooth\"),\n rectangle: t(\"Rectangular area\"),\n ellipse: t(\"Oval area\")\n };\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$B, [\n createVNode(IconTab, {\n \"data-test\": \"redact-pixelate\",\n label: labels.pixelate,\n active: unref(context).redactStyle.value === \"pixelate\",\n disabled: !__props.loaded,\n onClick: _cache[0] || (_cache[0] = ($event) => unref(context).redactStyle.value = \"pixelate\")\n }, null, 8, [\"label\", \"active\", \"disabled\"]),\n createVNode(IconTab, {\n \"data-test\": \"redact-blur\",\n label: labels.blur,\n active: unref(context).redactStyle.value === \"blur\",\n disabled: !__props.loaded,\n onClick: _cache[1] || (_cache[1] = ($event) => unref(context).redactStyle.value = \"blur\")\n }, null, 8, [\"label\", \"active\", \"disabled\"]),\n _cache[4] || (_cache[4] = createElementVNode(\"span\", { class: \"redact-panel__divider\" }, null, -1)),\n createVNode(IconTab, {\n \"data-test\": \"redact-rectangle\",\n label: labels.rectangle,\n active: unref(context).redactShape.value === \"rectangle\",\n disabled: !__props.loaded,\n iconOnly: \"\",\n onClick: _cache[2] || (_cache[2] = ($event) => unref(context).redactShape.value = \"rectangle\")\n }, {\n default: withCtx(() => [\n createVNode(RectangleOutline, { size: 20 })\n ]),\n _: 1\n }, 8, [\"label\", \"active\", \"disabled\"]),\n createVNode(IconTab, {\n \"data-test\": \"redact-ellipse\",\n label: labels.ellipse,\n active: unref(context).redactShape.value === \"ellipse\",\n disabled: !__props.loaded,\n iconOnly: \"\",\n onClick: _cache[3] || (_cache[3] = ($event) => unref(context).redactShape.value = \"ellipse\")\n }, {\n default: withCtx(() => [\n createVNode(EllipseOutline, { size: 20 })\n ]),\n _: 1\n }, 8, [\"label\", \"active\", \"disabled\"])\n ]);\n };\n }\n});\nconst RedactPanel = /* @__PURE__ */ _export_sfc(_sfc_main$D, [[\"__scopeId\", \"data-v-ca1eeeeb\"]]);\nconst _hoisted_1$A = { class: \"select-panel\" };\nconst _hoisted_2$x = { class: \"select-panel__hint\" };\nconst _sfc_main$C = /* @__PURE__ */ defineComponent({\n __name: \"SelectPanel\",\n setup(__props) {\n const context = useEditorContext();\n const hint = t(\"Click an annotation to move, resize or recolor it\");\n const transformHint = t(\"Drag to move, use the handles to resize\");\n const selected = computed(() => context.selectedId.value !== null);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$A, [\n createElementVNode(\"span\", _hoisted_2$x, toDisplayString(selected.value ? unref(transformHint) : unref(hint)), 1)\n ]);\n };\n }\n});\nconst SelectPanel = /* @__PURE__ */ _export_sfc(_sfc_main$C, [[\"__scopeId\", \"data-v-6c179f9e\"]]);\nconst _hoisted_1$z = { class: \"sticker-panel\" };\nconst _sfc_main$B = /* @__PURE__ */ defineComponent({\n __name: \"StickerPanel\",\n props: {\n loaded: { type: Boolean }\n },\n setup(__props) {\n const context = useEditorContext();\n const moreLabel = t(\"More emojis\");\n const FALLBACK_STICKERS = [\"😀\", \"😍\", \"🎉\", \"👍\", \"❤️\", \"⭐\", \"🔥\", \"💡\", \"✅\", \"❌\", \"❓\", \"⚠️\"];\n function frequentStickers() {\n try {\n const frequent = emojiSearch(\"\", 12).map((emoji) => emoji.native).filter((native) => typeof native === \"string\" && native !== \"\");\n return frequent.length >= 6 ? frequent : FALLBACK_STICKERS;\n } catch {\n return FALLBACK_STICKERS;\n }\n }\n const DEFAULT_STICKERS = frequentStickers();\n const stickers = computed(() => DEFAULT_STICKERS.includes(context.sticker.value) ? DEFAULT_STICKERS : [context.sticker.value, ...DEFAULT_STICKERS.slice(0, 11)]);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$z, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(stickers.value, (sticker) => {\n return openBlock(), createBlock(IconTab, {\n key: sticker,\n label: sticker,\n active: unref(context).sticker.value === sticker,\n disabled: !__props.loaded,\n class: \"sticker-panel__emoji\",\n iconOnly: \"\",\n onClick: ($event) => unref(context).sticker.value = sticker\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(sticker), 1)\n ]),\n _: 2\n }, 1032, [\"label\", \"active\", \"disabled\", \"onClick\"]);\n }), 128)),\n createVNode(unref(NcEmojiPicker), {\n onSelect: _cache[0] || (_cache[0] = ($event) => unref(context).sticker.value = $event)\n }, {\n default: withCtx(() => [\n createVNode(unref(NcButton), {\n \"data-test\": \"emoji-picker\",\n variant: \"tertiary\"\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(moreLabel)), 1)\n ]),\n _: 1\n })\n ]),\n _: 1\n })\n ]);\n };\n }\n});\nconst StickerPanel = /* @__PURE__ */ _export_sfc(_sfc_main$B, [[\"__scopeId\", \"data-v-02765a0d\"]]);\nconst _sfc_main$A = /* @__PURE__ */ defineComponent({\n __name: \"EditorPanel\",\n props: {\n loaded: { type: Boolean },\n oriented: {}\n },\n setup(__props) {\n const context = useEditorContext();\n return (_ctx, _cache) => {\n return unref(context).activeMode.value === \"filter\" ? (openBlock(), createBlock(FilterStrip, {\n key: 0,\n loaded: __props.loaded,\n oriented: __props.oriented\n }, null, 8, [\"loaded\", \"oriented\"])) : (openBlock(), createBlock(GlassSurface, {\n key: 1,\n variant: \"card\",\n class: \"editor-card\"\n }, {\n default: withCtx(() => [\n unref(context).activeMode.value === \"crop\" ? (openBlock(), createBlock(CropPanel, {\n key: 0,\n loaded: __props.loaded\n }, null, 8, [\"loaded\"])) : unref(context).activeMode.value === \"finetune\" ? (openBlock(), createBlock(AdjustPanel, {\n key: 1,\n loaded: __props.loaded\n }, null, 8, [\"loaded\"])) : unref(context).activeMode.value === \"annotate\" ? (openBlock(), createBlock(AnnotatePanel, {\n key: 2,\n loaded: __props.loaded\n }, null, 8, [\"loaded\"])) : unref(context).activeMode.value === \"select\" ? (openBlock(), createBlock(SelectPanel, { key: 3 })) : unref(context).activeMode.value === \"sticker\" ? (openBlock(), createBlock(StickerPanel, {\n key: 4,\n loaded: __props.loaded\n }, null, 8, [\"loaded\"])) : unref(context).activeMode.value === \"redact\" ? (openBlock(), createBlock(RedactPanel, {\n key: 5,\n loaded: __props.loaded\n }, null, 8, [\"loaded\"])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }));\n };\n }\n});\nconst EditorPanel = /* @__PURE__ */ _export_sfc(_sfc_main$A, [[\"__scopeId\", \"data-v-25ead0dc\"]]);\nconst _sfc_main$z = {\n name: \"BlurIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$y = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$w = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$v = { d: \"M14,8.5A1.5,1.5 0 0,0 12.5,10A1.5,1.5 0 0,0 14,11.5A1.5,1.5 0 0,0 15.5,10A1.5,1.5 0 0,0 14,8.5M14,12.5A1.5,1.5 0 0,0 12.5,14A1.5,1.5 0 0,0 14,15.5A1.5,1.5 0 0,0 15.5,14A1.5,1.5 0 0,0 14,12.5M10,17A1,1 0 0,0 9,18A1,1 0 0,0 10,19A1,1 0 0,0 11,18A1,1 0 0,0 10,17M10,8.5A1.5,1.5 0 0,0 8.5,10A1.5,1.5 0 0,0 10,11.5A1.5,1.5 0 0,0 11.5,10A1.5,1.5 0 0,0 10,8.5M14,20.5A0.5,0.5 0 0,0 13.5,21A0.5,0.5 0 0,0 14,21.5A0.5,0.5 0 0,0 14.5,21A0.5,0.5 0 0,0 14,20.5M14,17A1,1 0 0,0 13,18A1,1 0 0,0 14,19A1,1 0 0,0 15,18A1,1 0 0,0 14,17M21,13.5A0.5,0.5 0 0,0 20.5,14A0.5,0.5 0 0,0 21,14.5A0.5,0.5 0 0,0 21.5,14A0.5,0.5 0 0,0 21,13.5M18,5A1,1 0 0,0 17,6A1,1 0 0,0 18,7A1,1 0 0,0 19,6A1,1 0 0,0 18,5M18,9A1,1 0 0,0 17,10A1,1 0 0,0 18,11A1,1 0 0,0 19,10A1,1 0 0,0 18,9M18,17A1,1 0 0,0 17,18A1,1 0 0,0 18,19A1,1 0 0,0 19,18A1,1 0 0,0 18,17M18,13A1,1 0 0,0 17,14A1,1 0 0,0 18,15A1,1 0 0,0 19,14A1,1 0 0,0 18,13M10,12.5A1.5,1.5 0 0,0 8.5,14A1.5,1.5 0 0,0 10,15.5A1.5,1.5 0 0,0 11.5,14A1.5,1.5 0 0,0 10,12.5M10,7A1,1 0 0,0 11,6A1,1 0 0,0 10,5A1,1 0 0,0 9,6A1,1 0 0,0 10,7M10,3.5A0.5,0.5 0 0,0 10.5,3A0.5,0.5 0 0,0 10,2.5A0.5,0.5 0 0,0 9.5,3A0.5,0.5 0 0,0 10,3.5M10,20.5A0.5,0.5 0 0,0 9.5,21A0.5,0.5 0 0,0 10,21.5A0.5,0.5 0 0,0 10.5,21A0.5,0.5 0 0,0 10,20.5M3,13.5A0.5,0.5 0 0,0 2.5,14A0.5,0.5 0 0,0 3,14.5A0.5,0.5 0 0,0 3.5,14A0.5,0.5 0 0,0 3,13.5M14,3.5A0.5,0.5 0 0,0 14.5,3A0.5,0.5 0 0,0 14,2.5A0.5,0.5 0 0,0 13.5,3A0.5,0.5 0 0,0 14,3.5M14,7A1,1 0 0,0 15,6A1,1 0 0,0 14,5A1,1 0 0,0 13,6A1,1 0 0,0 14,7M21,10.5A0.5,0.5 0 0,0 21.5,10A0.5,0.5 0 0,0 21,9.5A0.5,0.5 0 0,0 20.5,10A0.5,0.5 0 0,0 21,10.5M6,5A1,1 0 0,0 5,6A1,1 0 0,0 6,7A1,1 0 0,0 7,6A1,1 0 0,0 6,5M3,9.5A0.5,0.5 0 0,0 2.5,10A0.5,0.5 0 0,0 3,10.5A0.5,0.5 0 0,0 3.5,10A0.5,0.5 0 0,0 3,9.5M6,9A1,1 0 0,0 5,10A1,1 0 0,0 6,11A1,1 0 0,0 7,10A1,1 0 0,0 6,9M6,17A1,1 0 0,0 5,18A1,1 0 0,0 6,19A1,1 0 0,0 7,18A1,1 0 0,0 6,17M6,13A1,1 0 0,0 5,14A1,1 0 0,0 6,15A1,1 0 0,0 7,14A1,1 0 0,0 6,13Z\" };\nconst _hoisted_4$v = { key: 0 };\nfunction _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon blur-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$v, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$v, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$w))\n ], 16, _hoisted_1$y);\n}\nconst Blur = /* @__PURE__ */ _export_sfc(_sfc_main$z, [[\"render\", _sfc_render$t]]);\nconst _sfc_main$y = {\n name: \"CropIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$x = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$v = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$u = { d: \"M7,17V1H5V5H1V7H5V17A2,2 0 0,0 7,19H17V23H19V19H23V17M17,15H19V7C19,5.89 18.1,5 17,5H9V7H17V15Z\" };\nconst _hoisted_4$u = { key: 0 };\nfunction _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon crop-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$u, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$u, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$v))\n ], 16, _hoisted_1$x);\n}\nconst Crop = /* @__PURE__ */ _export_sfc(_sfc_main$y, [[\"render\", _sfc_render$s]]);\nconst _sfc_main$x = {\n name: \"CursorDefaultOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$w = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$u = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$t = { d: \"M10.07,14.27C10.57,14.03 11.16,14.25 11.4,14.75L13.7,19.74L15.5,18.89L13.19,13.91C12.95,13.41 13.17,12.81 13.67,12.58L13.95,12.5L16.25,12.05L8,5.12V15.9L9.82,14.43L10.07,14.27M13.64,21.97C13.14,22.21 12.54,22 12.31,21.5L10.13,16.76L7.62,18.78C7.45,18.92 7.24,19 7,19A1,1 0 0,1 6,18V3A1,1 0 0,1 7,2C7.24,2 7.47,2.09 7.64,2.23L7.65,2.22L19.14,11.86C19.57,12.22 19.62,12.85 19.27,13.27C19.12,13.45 18.91,13.57 18.7,13.61L15.54,14.23L17.74,18.96C18,19.46 17.76,20.05 17.26,20.28L13.64,21.97Z\" };\nconst _hoisted_4$t = { key: 0 };\nfunction _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon cursor-default-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$t, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$t, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$u))\n ], 16, _hoisted_1$w);\n}\nconst CursorDefaultOutline = /* @__PURE__ */ _export_sfc(_sfc_main$x, [[\"render\", _sfc_render$r]]);\nconst _sfc_main$w = {\n name: \"PaletteOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$v = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$t = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$s = { d: \"M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2C17.5,2 22,6 22,11A6,6 0 0,1 16,17H14.2C13.9,17 13.7,17.2 13.7,17.5C13.7,17.6 13.8,17.7 13.8,17.8C14.2,18.3 14.4,18.9 14.4,19.5C14.5,20.9 13.4,22 12,22M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C12.3,20 12.5,19.8 12.5,19.5C12.5,19.3 12.4,19.2 12.4,19.1C12,18.6 11.8,18.1 11.8,17.5C11.8,16.1 12.9,15 14.3,15H16A4,4 0 0,0 20,11C20,7.1 16.4,4 12,4M6.5,10C7.3,10 8,10.7 8,11.5C8,12.3 7.3,13 6.5,13C5.7,13 5,12.3 5,11.5C5,10.7 5.7,10 6.5,10M9.5,6C10.3,6 11,6.7 11,7.5C11,8.3 10.3,9 9.5,9C8.7,9 8,8.3 8,7.5C8,6.7 8.7,6 9.5,6M14.5,6C15.3,6 16,6.7 16,7.5C16,8.3 15.3,9 14.5,9C13.7,9 13,8.3 13,7.5C13,6.7 13.7,6 14.5,6M17.5,10C18.3,10 19,10.7 19,11.5C19,12.3 18.3,13 17.5,13C16.7,13 16,12.3 16,11.5C16,10.7 16.7,10 17.5,10Z\" };\nconst _hoisted_4$s = { key: 0 };\nfunction _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon palette-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$s, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$s, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$t))\n ], 16, _hoisted_1$v);\n}\nconst PaletteOutline = /* @__PURE__ */ _export_sfc(_sfc_main$w, [[\"render\", _sfc_render$q]]);\nconst _sfc_main$v = {\n name: \"StickerEmojiIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$u = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$s = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$r = { d: \"M5.5,2C3.56,2 2,3.56 2,5.5V18.5C2,20.44 3.56,22 5.5,22H16L22,16V5.5C22,3.56 20.44,2 18.5,2H5.5M5.75,4H18.25A1.75,1.75 0 0,1 20,5.75V15H18.5C16.56,15 15,16.56 15,18.5V20H5.75A1.75,1.75 0 0,1 4,18.25V5.75A1.75,1.75 0 0,1 5.75,4M14.44,6.77C14.28,6.77 14.12,6.79 13.97,6.83C13.03,7.09 12.5,8.05 12.74,9C12.79,9.15 12.86,9.3 12.95,9.44L16.18,8.56C16.18,8.39 16.16,8.22 16.12,8.05C15.91,7.3 15.22,6.77 14.44,6.77M8.17,8.5C8,8.5 7.85,8.5 7.7,8.55C6.77,8.81 6.22,9.77 6.47,10.7C6.5,10.86 6.59,11 6.68,11.16L9.91,10.28C9.91,10.11 9.89,9.94 9.85,9.78C9.64,9 8.95,8.5 8.17,8.5M16.72,11.26L7.59,13.77C8.91,15.3 11,15.94 12.95,15.41C14.9,14.87 16.36,13.25 16.72,11.26Z\" };\nconst _hoisted_4$r = { key: 0 };\nfunction _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon sticker-emoji-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$r, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$r, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$s))\n ], 16, _hoisted_1$u);\n}\nconst StickerEmoji = /* @__PURE__ */ _export_sfc(_sfc_main$v, [[\"render\", _sfc_render$p]]);\nconst _sfc_main$u = {\n name: \"TuneIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$t = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$r = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$q = { d: \"M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z\" };\nconst _hoisted_4$q = { key: 0 };\nfunction _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon tune-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$q, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$q, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$r))\n ], 16, _hoisted_1$t);\n}\nconst Tune = /* @__PURE__ */ _export_sfc(_sfc_main$u, [[\"render\", _sfc_render$o]]);\nconst _hoisted_1$s = { class: \"editor-sidebar__nav\" };\nconst _sfc_main$t = /* @__PURE__ */ defineComponent({\n __name: \"EditorSidebar\",\n props: {\n loaded: { type: Boolean }\n },\n setup(__props) {\n const context = useEditorContext();\n const modes = [\n { id: \"select\", label: t(\"Select\"), icon: CursorDefaultOutline },\n { id: \"crop\", label: t(\"Crop\"), icon: Crop },\n { id: \"finetune\", label: t(\"Adjust\"), icon: Tune },\n { id: \"filter\", label: t(\"Filter\"), icon: PaletteOutline },\n { id: \"annotate\", label: t(\"Annotate\"), icon: Pencil },\n { id: \"sticker\", label: t(\"Sticker\"), icon: StickerEmoji },\n { id: \"redact\", label: t(\"Blur\"), icon: Blur }\n ];\n return (_ctx, _cache) => {\n return openBlock(), createBlock(GlassSurface, {\n variant: \"card\",\n opaque: \"\",\n class: \"editor-sidebar\"\n }, {\n default: withCtx(() => [\n createElementVNode(\"nav\", _hoisted_1$s, [\n (openBlock(), createElementBlock(Fragment, null, renderList(modes, (mode) => {\n return createVNode(IconTab, {\n key: mode.id,\n label: mode.label,\n active: unref(context).activeMode.value === mode.id,\n disabled: !__props.loaded,\n onClick: ($event) => unref(context).setMode(mode.id)\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(mode.icon), { size: 20 }))\n ]),\n _: 2\n }, 1032, [\"label\", \"active\", \"disabled\", \"onClick\"]);\n }), 64))\n ])\n ]),\n _: 1\n });\n };\n }\n});\nconst EditorSidebar = /* @__PURE__ */ _export_sfc(_sfc_main$t, [[\"__scopeId\", \"data-v-54ce7748\"]]);\nconst _sfc_main$s = {\n name: \"CloseIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$r = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$q = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$p = { d: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\" };\nconst _hoisted_4$p = { key: 0 };\nfunction _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon close-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$p, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$p, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$q))\n ], 16, _hoisted_1$r);\n}\nconst Close = /* @__PURE__ */ _export_sfc(_sfc_main$s, [[\"render\", _sfc_render$n]]);\nconst _sfc_main$r = {\n name: \"HistoryIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$q = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$p = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$o = { d: \"M13.5,8H12V13L16.28,15.54L17,14.33L13.5,12.25V8M13,3A9,9 0 0,0 4,12H1L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3\" };\nconst _hoisted_4$o = { key: 0 };\nfunction _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon history-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$o, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$o, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$p))\n ], 16, _hoisted_1$q);\n}\nconst History = /* @__PURE__ */ _export_sfc(_sfc_main$r, [[\"render\", _sfc_render$m]]);\nconst _sfc_main$q = {\n name: \"MagnifyMinusOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$p = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$o = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$n = { d: \"M15.5,14H14.71L14.43,13.73C15.41,12.59 16,11.11 16,9.5A6.5,6.5 0 0,0 9.5,3A6.5,6.5 0 0,0 3,9.5A6.5,6.5 0 0,0 9.5,16C11.11,16 12.59,15.41 13.73,14.43L14,14.71V15.5L19,20.5L20.5,19L15.5,14M9.5,14C7,14 5,12 5,9.5C5,7 7,5 9.5,5C12,5 14,7 14,9.5C14,12 12,14 9.5,14M7,9H12V10H7V9Z\" };\nconst _hoisted_4$n = { key: 0 };\nfunction _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon magnify-minus-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$n, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$n, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$o))\n ], 16, _hoisted_1$p);\n}\nconst MagnifyMinusOutline = /* @__PURE__ */ _export_sfc(_sfc_main$q, [[\"render\", _sfc_render$l]]);\nconst _sfc_main$p = {\n name: \"MagnifyPlusOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$o = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$n = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$m = { d: \"M15.5,14L20.5,19L19,20.5L14,15.5V14.71L13.73,14.43C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.43,13.73L14.71,14H15.5M9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14M12,10H10V12H9V10H7V9H9V7H10V9H12V10Z\" };\nconst _hoisted_4$m = { key: 0 };\nfunction _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon magnify-plus-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$m, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$m, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$n))\n ], 16, _hoisted_1$o);\n}\nconst MagnifyPlusOutline = /* @__PURE__ */ _export_sfc(_sfc_main$p, [[\"render\", _sfc_render$k]]);\nconst _sfc_main$o = {\n name: \"RedoIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$n = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$m = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$l = { d: \"M18.4,10.6C16.55,9 14.15,8 11.5,8C6.85,8 2.92,11.03 1.54,15.22L3.9,16C4.95,12.81 7.95,10.5 11.5,10.5C13.45,10.5 15.23,11.22 16.62,12.38L13,16H22V7L18.4,10.6Z\" };\nconst _hoisted_4$l = { key: 0 };\nfunction _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon redo-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$l, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$l, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$m))\n ], 16, _hoisted_1$n);\n}\nconst Redo = /* @__PURE__ */ _export_sfc(_sfc_main$o, [[\"render\", _sfc_render$j]]);\nconst _sfc_main$n = {\n name: \"RestoreIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$m = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$l = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$k = { d: \"M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3Z\" };\nconst _hoisted_4$k = { key: 0 };\nfunction _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon restore-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$k, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$k, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$l))\n ], 16, _hoisted_1$m);\n}\nconst Restore = /* @__PURE__ */ _export_sfc(_sfc_main$n, [[\"render\", _sfc_render$i]]);\nconst _sfc_main$m = {\n name: \"UndoIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$l = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$k = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$j = { d: \"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\" };\nconst _hoisted_4$j = { key: 0 };\nfunction _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon undo-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$j, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$j, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$k))\n ], 16, _hoisted_1$l);\n}\nconst Undo = /* @__PURE__ */ _export_sfc(_sfc_main$m, [[\"render\", _sfc_render$h]]);\nconst _sfc_main$l = {\n name: \"ArrowExpandIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$k = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$j = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$i = { d: \"M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z\" };\nconst _hoisted_4$i = { key: 0 };\nfunction _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon arrow-expand-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$i, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$i, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$j))\n ], 16, _hoisted_1$k);\n}\nconst ArrowExpand = /* @__PURE__ */ _export_sfc(_sfc_main$l, [[\"render\", _sfc_render$g]]);\nconst _sfc_main$k = {\n name: \"BorderOutsideIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$j = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$i = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$h = { d: \"M9,11H7V13H9M13,15H11V17H13M19,19H5V5H19M3,21H21V3H3M17,11H15V13H17M13,11H11V13H13M13,7H11V9H13V7Z\" };\nconst _hoisted_4$h = { key: 0 };\nfunction _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon border-outside-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$h, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$h, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$i))\n ], 16, _hoisted_1$j);\n}\nconst BorderOutside = /* @__PURE__ */ _export_sfc(_sfc_main$k, [[\"render\", _sfc_render$f]]);\nconst _sfc_main$j = {\n name: \"ContentCopyIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$i = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$h = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$g = { d: \"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\" };\nconst _hoisted_4$g = { key: 0 };\nfunction _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon content-copy-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$g, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$g, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$h))\n ], 16, _hoisted_1$i);\n}\nconst ContentCopy = /* @__PURE__ */ _export_sfc(_sfc_main$j, [[\"render\", _sfc_render$e]]);\nconst _sfc_main$i = {\n name: \"CropFreeIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$h = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$g = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$f = { d: \"M19,3H15V5H19V9H21V5C21,3.89 20.1,3 19,3M19,19H15V21H19A2,2 0 0,0 21,19V15H19M5,15H3V19A2,2 0 0,0 5,21H9V19H5M3,5V9H5V5H9V3H5A2,2 0 0,0 3,5Z\" };\nconst _hoisted_4$f = { key: 0 };\nfunction _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon crop-free-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$f, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$f, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$g))\n ], 16, _hoisted_1$h);\n}\nconst CropFree = /* @__PURE__ */ _export_sfc(_sfc_main$i, [[\"render\", _sfc_render$d]]);\nconst _sfc_main$h = {\n name: \"CursorMoveIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$g = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$f = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$e = { d: \"M13,6V11H18V7.75L22.25,12L18,16.25V13H13V18H16.25L12,22.25L7.75,18H11V13H6V16.25L1.75,12L6,7.75V11H11V6H7.75L12,1.75L16.25,6H13Z\" };\nconst _hoisted_4$e = { key: 0 };\nfunction _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon cursor-move-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$e, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$e, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$f))\n ], 16, _hoisted_1$g);\n}\nconst CursorMove = /* @__PURE__ */ _export_sfc(_sfc_main$h, [[\"render\", _sfc_render$c]]);\nconst _sfc_main$g = {\n name: \"DeleteIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$f = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$e = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$d = { d: \"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z\" };\nconst _hoisted_4$d = { key: 0 };\nfunction _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon delete-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$d, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$d, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$e))\n ], 16, _hoisted_1$f);\n}\nconst Delete = /* @__PURE__ */ _export_sfc(_sfc_main$g, [[\"render\", _sfc_render$b]]);\nconst _sfc_main$f = {\n name: \"FormatAlignLeftIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$e = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$d = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$c = { d: \"M3,3H21V5H3V3M3,7H15V9H3V7M3,11H21V13H3V11M3,15H15V17H3V15M3,19H21V21H3V19Z\" };\nconst _hoisted_4$c = { key: 0 };\nfunction _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-align-left-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$c, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$c, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$d))\n ], 16, _hoisted_1$e);\n}\nconst FormatAlignLeft = /* @__PURE__ */ _export_sfc(_sfc_main$f, [[\"render\", _sfc_render$a]]);\nconst _sfc_main$e = {\n name: \"FormatBoldIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$d = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$c = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$b = { d: \"M13.5,15.5H10V12.5H13.5A1.5,1.5 0 0,1 15,14A1.5,1.5 0 0,1 13.5,15.5M10,6.5H13A1.5,1.5 0 0,1 14.5,8A1.5,1.5 0 0,1 13,9.5H10M15.6,10.79C16.57,10.11 17.25,9 17.25,8C17.25,5.74 15.5,4 13.25,4H7V18H14.04C16.14,18 17.75,16.3 17.75,14.21C17.75,12.69 16.89,11.39 15.6,10.79Z\" };\nconst _hoisted_4$b = { key: 0 };\nfunction _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-bold-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$b, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$b, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$c))\n ], 16, _hoisted_1$d);\n}\nconst FormatBold = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$9]]);\nconst _sfc_main$d = {\n name: \"FormatColorHighlightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$c = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$b = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$a = { d: \"M4,17L6.75,14.25L6.72,14.23C6.14,13.64 6.14,12.69 6.72,12.11L11.46,7.37L15.7,11.61L10.96,16.35C10.39,16.93 9.46,16.93 8.87,16.37L8.24,17H4M15.91,2.91C16.5,2.33 17.45,2.33 18.03,2.91L20.16,5.03C20.74,5.62 20.74,6.57 20.16,7.16L16.86,10.45L12.62,6.21L15.91,2.91Z\" };\nconst _hoisted_4$a = { key: 0 };\nfunction _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-color-highlight-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$a, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$a, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$b))\n ], 16, _hoisted_1$c);\n}\nconst FormatColorHighlight = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$8]]);\nconst _sfc_main$c = {\n name: \"FormatFontIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$b = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$a = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$9 = { d: \"M17,8H20V20H21V21H17V20H18V17H14L12.5,20H14V21H10V20H11L17,8M18,9L14.5,16H18V9M5,3H10C11.11,3 12,3.89 12,5V16H9V11H6V16H3V5C3,3.89 3.89,3 5,3M6,5V9H9V5H6Z\" };\nconst _hoisted_4$9 = { key: 0 };\nfunction _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-font-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$9, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$9, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$a))\n ], 16, _hoisted_1$b);\n}\nconst FormatFont = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$b = {\n name: \"FormatItalicIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$a = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$9 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$8 = { d: \"M10,4V7H12.21L8.79,15H6V18H14V15H11.79L15.21,7H18V4H10Z\" };\nconst _hoisted_4$8 = { key: 0 };\nfunction _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-italic-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$8, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$8, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$9))\n ], 16, _hoisted_1$a);\n}\nconst FormatItalic = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$a = {\n name: \"FormatStrikethroughIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$9 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$8 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$7 = { d: \"M3,14H21V12H3M5,4V7H10V10H14V7H19V4M10,19H14V16H10V19Z\" };\nconst _hoisted_4$7 = { key: 0 };\nfunction _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-strikethrough-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$7, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$7, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$8))\n ], 16, _hoisted_1$9);\n}\nconst FormatStrikethrough = /* @__PURE__ */ _export_sfc(_sfc_main$a, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$9 = {\n name: \"FormatUnderlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$8 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$7 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$6 = { d: \"M5,21H19V19H5V21M12,17A6,6 0 0,0 18,11V3H15.5V11A3.5,3.5 0 0,1 12,14.5A3.5,3.5 0 0,1 8.5,11V3H6V11A6,6 0 0,0 12,17Z\" };\nconst _hoisted_4$6 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-underline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$6, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$6, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$7))\n ], 16, _hoisted_1$8);\n}\nconst FormatUnderline = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"render\", _sfc_render$4]]);\nconst _sfc_main$8 = {\n name: \"ImageOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$7 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$6 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$5 = { d: \"M19,19H5V5H19M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13.96,12.29L11.21,15.83L9.25,13.47L6.5,17H17.5L13.96,12.29Z\" };\nconst _hoisted_4$5 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon image-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$5, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$5, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$6))\n ], 16, _hoisted_1$7);\n}\nconst ImageOutline = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$7 = {\n name: \"PaletteIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$6 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$5 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$4 = { d: \"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\" };\nconst _hoisted_4$4 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon palette-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$4, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$5))\n ], 16, _hoisted_1$6);\n}\nconst Palette = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"render\", _sfc_render$2]]);\nconst ICONS = /* @__PURE__ */ new Map([\n [t(\"Original\"), ImageOutline],\n [t(\"Restored\"), ImageOutline],\n [t(\"Revert all changes\"), Restore],\n [t(\"Crop\"), Crop],\n [t(\"Reset crop\"), CropFree],\n [t(\"Rotate left\"), RotateLeft],\n [t(\"Rotate right\"), RotateRight],\n [t(\"Flip horizontal\"), FlipHorizontal],\n [t(\"Flip vertical\"), FlipVertical],\n [t(\"Rotation\"), RotateRight],\n [t(\"Scale\"), ArrowExpand],\n [t(\"Exposure\"), CameraIris],\n [t(\"Brightness\"), WhiteBalanceSunny],\n [t(\"Contrast\"), ContrastCircle],\n [t(\"Saturation\"), InvertColors],\n [t(\"Temperature\"), Thermometer],\n [t(\"Tint\"), WhiteBalanceIridescent],\n [t(\"Sharpen\"), ImageFilterCenterFocus],\n [t(\"Highlights\"), Spotlight],\n [t(\"Shadows\"), BoxShadow],\n [t(\"Vignette\"), CircleOpacity],\n [t(\"Draw\"), Pencil],\n [t(\"Rectangle\"), RectangleOutline],\n [t(\"Ellipse\"), EllipseOutline],\n [t(\"Arrow\"), ArrowTopRight],\n [t(\"Line\"), VectorLine],\n [t(\"Text\"), FormatText],\n [t(\"Sticker\"), StickerEmoji],\n [t(\"Blur\"), Blur],\n [t(\"Color\"), Palette],\n [t(\"Duplicate\"), ContentCopy],\n [t(\"Delete\"), Delete],\n [t(\"Move or resize\"), CursorMove],\n [t(\"Bold\"), FormatBold],\n [t(\"Italic\"), FormatItalic],\n [t(\"Underline\"), FormatUnderline],\n [t(\"Strikethrough\"), FormatStrikethrough],\n [t(\"Outline\"), BorderOutside],\n [t(\"Background\"), FormatColorHighlight],\n [t(\"Font\"), FormatFont],\n [t(\"Alignment\"), FormatAlignLeft],\n // Every filter preset is recorded under its own name\n [t(\"No filter\"), PaletteOutline],\n [t(\"Pop\"), PaletteOutline],\n [t(\"Golden\"), PaletteOutline],\n [t(\"Coast\"), PaletteOutline],\n [t(\"Cinema\"), PaletteOutline],\n [t(\"Berry\"), PaletteOutline],\n [t(\"Mist\"), PaletteOutline],\n [t(\"Warm\"), PaletteOutline],\n [t(\"Cool\"), PaletteOutline],\n [t(\"Fade\"), PaletteOutline],\n [t(\"Grayscale\"), PaletteOutline],\n [t(\"Noir\"), PaletteOutline],\n [t(\"Luna\"), PaletteOutline],\n [t(\"Sepia\"), PaletteOutline],\n [t(\"Invert\"), PaletteOutline],\n [t(\"Solarize\"), PaletteOutline],\n [t(\"Posterize\"), PaletteOutline],\n [t(\"Edit\"), Tune]\n]);\nfunction historyIcon(label) {\n return ICONS.get(label) ?? Tune;\n}\n[...ICONS.keys()];\nconst _hoisted_1$5 = { class: \"editor-topbar\" };\nconst _hoisted_2$4 = { class: \"editor-topbar__history\" };\nconst _hoisted_3$3 = [\"aria-label\", \"title\", \"disabled\"];\nconst _hoisted_4$3 = { class: \"editor-topbar__actions\" };\nconst _sfc_main$6 = /* @__PURE__ */ defineComponent({\n __name: \"EditorTopBar\",\n props: {\n loaded: { type: Boolean },\n saving: { type: Boolean },\n popoverContainer: {}\n },\n emits: [\"save\", \"cancel\"],\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n const context = useEditorContext();\n const commands = useEditorCommands();\n const labels = {\n undo: t(\"Undo\"),\n redo: t(\"Redo\"),\n revert: t(\"Revert all changes\"),\n revertText: t(\"All edits will be discarded. This action cannot be undone.\"),\n zoomIn: t(\"Zoom in\"),\n zoomOut: t(\"Zoom out\"),\n resetZoom: t(\"Reset zoom\"),\n save: t(\"Save\"),\n cancel: t(\"Cancel\"),\n close: t(\"Close the editor\"),\n unsaved: t(\"Save your edits before closing?\"),\n unsavedText: t(\"The image has edits that were never saved.\"),\n discard: t(\"Discard changes\"),\n history: t(\"Edit history\"),\n step: t(\"Edit\")\n };\n const historySteps = computed(() => context.historyEntries.value.map((entry, index) => ({\n index,\n label: entry.label ?? labels.step,\n icon: historyIcon(entry.label ?? labels.step)\n })).reverse());\n function stepZoom(direction) {\n const factor = direction === 1 ? 1.5 : 1 / 1.5;\n context.setViewZoom(context.viewZoom.value * factor);\n }\n function resetZoom() {\n context.setViewZoom(FIT_ZOOM);\n context.setViewPan({ x: 0, y: 0 });\n }\n const closing = shallowRef(false);\n function onClose() {\n if (isPristine(context.state.value)) {\n emit(\"cancel\");\n return;\n }\n closing.value = true;\n }\n function onCloseAnswer(answer) {\n closing.value = false;\n if (answer === \"save\") {\n emit(\"save\");\n } else if (answer === \"discard\") {\n emit(\"cancel\");\n }\n }\n async function onRevert() {\n if (await showConfirmation({\n name: labels.revert,\n text: labels.revertText,\n labelConfirm: labels.revert,\n labelReject: labels.cancel,\n severity: \"warning\"\n })) {\n commands.revert();\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$5, [\n _cache[10] || (_cache[10] = createElementVNode(\"span\", { class: \"editor-topbar__spacer\" }, null, -1)),\n createElementVNode(\"div\", _hoisted_2$4, [\n createVNode(unref(NcActions), {\n forceMenu: \"\",\n container: __props.popoverContainer ?? \"body\",\n \"aria-label\": labels.history,\n title: labels.history,\n disabled: !__props.loaded || !unref(context).canUndo.value,\n variant: \"tertiary\",\n \"data-test\": \"history\"\n }, {\n icon: withCtx(() => [\n createVNode(History, { size: 20 })\n ]),\n default: withCtx(() => [\n createVNode(unref(NcActionButton), {\n \"data-test\": \"revert\",\n onClick: onRevert\n }, {\n icon: withCtx(() => [\n createVNode(Restore, { size: 20 })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(labels.revert), 1)\n ]),\n _: 1\n }),\n createVNode(unref(NcActionSeparator)),\n (openBlock(true), createElementBlock(Fragment, null, renderList(historySteps.value, (step) => {\n return openBlock(), createBlock(unref(NcActionButton), {\n key: step.index,\n type: \"radio\",\n modelValue: String(unref(context).historyIndex.value),\n value: String(step.index),\n \"data-test\": `history-step-${step.index}`,\n onClick: ($event) => unref(context).jumpTo(step.index)\n }, {\n icon: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(step.icon), { size: 20 }))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(step.label), 1)\n ]),\n _: 2\n }, 1032, [\"modelValue\", \"value\", \"data-test\", \"onClick\"]);\n }), 128))\n ]),\n _: 1\n }, 8, [\"container\", \"aria-label\", \"title\", \"disabled\"]),\n createVNode(unref(NcButton), {\n \"data-test\": \"undo\",\n \"aria-label\": labels.undo,\n title: labels.undo,\n disabled: !__props.loaded || !unref(context).canUndo.value,\n variant: \"tertiary\",\n onClick: _cache[0] || (_cache[0] = ($event) => unref(context).undo())\n }, {\n icon: withCtx(() => [\n createVNode(Undo, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n createVNode(unref(NcButton), {\n \"aria-label\": labels.redo,\n title: labels.redo,\n disabled: !__props.loaded || !unref(context).canRedo.value,\n variant: \"tertiary\",\n onClick: _cache[1] || (_cache[1] = ($event) => unref(context).redo())\n }, {\n icon: withCtx(() => [\n createVNode(Redo, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n _cache[9] || (_cache[9] = createElementVNode(\"span\", { class: \"editor-topbar__separator\" }, null, -1)),\n createVNode(unref(NcButton), {\n \"data-test\": \"zoom-out\",\n \"aria-label\": labels.zoomOut,\n title: labels.zoomOut,\n disabled: !__props.loaded || unref(context).viewZoom.value <= unref(MIN_ZOOM),\n variant: \"tertiary\",\n onClick: _cache[2] || (_cache[2] = ($event) => stepZoom(-1))\n }, {\n icon: withCtx(() => [\n createVNode(MagnifyMinusOutline, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"]),\n createElementVNode(\"button\", {\n type: \"button\",\n class: \"editor-topbar__zoom\",\n \"data-test\": \"zoom-reset\",\n \"aria-label\": labels.resetZoom,\n title: labels.resetZoom,\n disabled: !__props.loaded,\n onClick: resetZoom\n }, toDisplayString(Math.round(unref(context).viewZoom.value * 100)) + \"% \", 9, _hoisted_3$3),\n createVNode(unref(NcButton), {\n \"data-test\": \"zoom-in\",\n \"aria-label\": labels.zoomIn,\n title: labels.zoomIn,\n disabled: !__props.loaded || unref(context).viewZoom.value >= unref(MAX_ZOOM),\n variant: \"tertiary\",\n onClick: _cache[3] || (_cache[3] = ($event) => stepZoom(1))\n }, {\n icon: withCtx(() => [\n createVNode(MagnifyPlusOutline, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"disabled\"])\n ]),\n createElementVNode(\"div\", _hoisted_4$3, [\n createVNode(unref(NcButton), {\n \"data-test\": \"save\",\n variant: \"primary\",\n disabled: !__props.loaded || __props.saving,\n onClick: _cache[4] || (_cache[4] = ($event) => emit(\"save\"))\n }, createSlots({\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(labels.save), 1)\n ]),\n _: 2\n }, [\n __props.saving ? {\n name: \"icon\",\n fn: withCtx(() => [\n createVNode(unref(NcLoadingIcon), {\n size: 20,\n \"data-test\": \"saving\"\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"disabled\"]),\n createVNode(unref(NcButton), {\n \"data-test\": \"cancel\",\n \"aria-label\": labels.close,\n title: labels.close,\n variant: \"tertiary\",\n onClick: onClose\n }, {\n icon: withCtx(() => [\n createVNode(Close, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\"])\n ]),\n closing.value ? (openBlock(), createBlock(unref(NcDialog), {\n key: 0,\n name: labels.unsaved,\n noClose: \"\",\n \"data-test\": \"closing-dialog\",\n \"onUpdate:open\": _cache[8] || (_cache[8] = ($event) => onCloseAnswer(\"stay\"))\n }, {\n actions: withCtx(() => [\n createVNode(unref(NcButton), {\n class: \"editor-topbar__stay\",\n \"data-test\": \"closing-cancel\",\n variant: \"tertiary\",\n onClick: _cache[5] || (_cache[5] = ($event) => onCloseAnswer(\"stay\"))\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(labels.cancel), 1)\n ]),\n _: 1\n }),\n createVNode(unref(NcButton), {\n \"data-test\": \"closing-discard\",\n variant: \"error\",\n onClick: _cache[6] || (_cache[6] = ($event) => onCloseAnswer(\"discard\"))\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(labels.discard), 1)\n ]),\n _: 1\n }),\n createVNode(unref(NcButton), {\n \"data-test\": \"closing-save\",\n variant: \"primary\",\n onClick: _cache[7] || (_cache[7] = ($event) => onCloseAnswer(\"save\"))\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(labels.save), 1)\n ]),\n _: 1\n })\n ]),\n default: withCtx(() => [\n createVNode(unref(NcNoteCard), {\n type: \"warning\",\n text: labels.unsavedText\n }, null, 8, [\"text\"])\n ]),\n _: 1\n }, 8, [\"name\"])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\nconst EditorTopBar = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"__scopeId\", \"data-v-f07059f8\"]]);\nconst _sfc_main$5 = {\n name: \"FormatAlignCenterIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M3,3H21V5H3V3M7,7H17V9H7V7M3,11H21V13H3V11M7,15H17V17H7V15M3,19H21V21H3V19Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-align-center-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$4);\n}\nconst FormatAlignCenter = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$4 = {\n name: \"FormatAlignRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M3,3H21V5H3V3M9,7H21V9H9V7M3,11H21V13H3V11M9,15H21V17H9V15M3,19H21V21H3V19Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon format-align-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$3);\n}\nconst FormatAlignRight = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render]]);\nconst SWITCH_DEFAULTS = {\n outline: \"textOutline\",\n background: \"textBackground\",\n bold: \"textBold\",\n italic: \"textItalic\",\n underline: \"textUnderline\",\n strikethrough: \"textStrikethrough\"\n};\nfunction useTextStyle(context) {\n function styleable() {\n const annotation = context.state.value.annotations.find((entry) => entry.id === context.selectedId.value);\n return annotation?.type === \"text\" ? annotation : void 0;\n }\n function toggle(key, label) {\n const fallback = SWITCH_DEFAULTS[key];\n return computed({\n get() {\n return styleable()?.[key] ?? context[fallback].value;\n },\n set(value) {\n context[fallback].value = value;\n const annotation = styleable();\n if (annotation === void 0) {\n return;\n }\n const state = context.state.value;\n context.commit({\n ...state,\n annotations: state.annotations.map((entry) => entry.id === annotation.id ? { ...entry, [key]: value } : entry)\n }, label);\n }\n });\n }\n function choice(key, fallback, label) {\n return computed({\n get() {\n return styleable()?.[key] ?? context[fallback].value;\n },\n set(value) {\n context[fallback].value = value;\n const annotation = styleable();\n if (annotation === void 0 || annotation[key] === value) {\n return;\n }\n const state = context.state.value;\n context.commit({\n ...state,\n annotations: state.annotations.map((entry) => entry.id === annotation.id ? { ...entry, [key]: value } : entry)\n }, label);\n }\n });\n }\n return {\n outline: toggle(\"outline\", t(\"Outline\")),\n background: toggle(\"background\", t(\"Background\")),\n font: choice(\"font\", \"textFont\", t(\"Font\")),\n align: choice(\"align\", \"textAlign\", t(\"Alignment\")),\n bold: toggle(\"bold\", t(\"Bold\")),\n italic: toggle(\"italic\", t(\"Italic\")),\n underline: toggle(\"underline\", t(\"Underline\")),\n strikethrough: toggle(\"strikethrough\", t(\"Strikethrough\"))\n };\n}\nconst _sfc_main$3 = /* @__PURE__ */ defineComponent({\n __name: \"TextEmphasisButtons\",\n props: {\n testPrefix: {},\n size: {}\n },\n setup(__props) {\n const textStyle = useTextStyle(useEditorContext());\n const META = {\n bold: { label: t(\"Bold\"), icon: FormatBold },\n italic: { label: t(\"Italic\"), icon: FormatItalic },\n underline: { label: t(\"Underline\"), icon: FormatUnderline },\n strikethrough: { label: t(\"Strikethrough\"), icon: FormatStrikethrough }\n };\n const emphases = TEXT_EMPHASES.map((id) => ({ id, ...META[id] }));\n return (_ctx, _cache) => {\n return openBlock(true), createElementBlock(Fragment, null, renderList(unref(emphases), (entry) => {\n return openBlock(), createBlock(IconTab, {\n key: entry.id,\n label: entry.label,\n active: unref(textStyle)[entry.id].value,\n \"data-test\": `${__props.testPrefix}-${entry.id}`,\n iconOnly: \"\",\n onClick: ($event) => unref(textStyle)[entry.id].value = !unref(textStyle)[entry.id].value\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(entry.icon), { size: __props.size }, null, 8, [\"size\"]))\n ]),\n _: 2\n }, 1032, [\"label\", \"active\", \"data-test\", \"onClick\"]);\n }), 128);\n };\n }\n});\nconst _hoisted_1$2 = {\n key: 0,\n class: \"floating-toolbar__color\"\n};\nconst _hoisted_2$1 = [\"value\", \"aria-label\", \"title\"];\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n __name: \"FloatingToolbar\",\n props: {\n box: {},\n typing: { type: Boolean }\n },\n emits: [\"duplicate\", \"delete\", \"refocus\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const context = useEditorContext();\n const color = useAnnotationColor(context);\n const textStyle = useTextStyle(context);\n const selected = computed(() => context.state.value.annotations.find((entry) => entry.id === context.selectedId.value));\n const isText = computed(() => props.typing === true || selected.value?.type === \"text\");\n const recolorable = computed(() => props.typing === true || selected.value !== void 0 && selected.value.type !== \"sticker\" && selected.value.type !== \"redact\");\n const lift = computed(() => props.typing === true ? 52 : 76);\n const labels = {\n color: t(\"Color\"),\n duplicate: t(\"Duplicate\"),\n delete: t(\"Delete\"),\n outline: t(\"Outline\"),\n background: t(\"Background\"),\n font: t(\"Font\"),\n align: t(\"Alignment\")\n };\n const fonts = [\n { id: \"sans\", label: t(\"Sans serif\") },\n { id: \"serif\", label: t(\"Serif\") },\n { id: \"mono\", label: t(\"Monospace\") }\n ];\n const ALIGN_META = {\n left: { label: t(\"Align left\"), icon: FormatAlignLeft },\n center: { label: t(\"Align centre\"), icon: FormatAlignCenter },\n right: { label: t(\"Align right\"), icon: FormatAlignRight }\n };\n const alignments = TEXT_ALIGNS.map((id) => ({ id, ...ALIGN_META[id] }));\n const alignment = computed(() => ALIGN_META[textAlign(textStyle.align.value)]);\n return (_ctx, _cache) => {\n return openBlock(), createBlock(GlassSurface, {\n variant: \"pill\",\n class: \"floating-toolbar\",\n \"data-test\": \"floating-toolbar\",\n style: normalizeStyle({\n insetInlineStart: `${__props.box.x + __props.box.width / 2}px`,\n // Below only when the top edge would clip the bar\n insetBlockStart: __props.box.y - lift.value >= 4 ? `${__props.box.y - lift.value}px` : `${__props.box.y + __props.box.height + 12}px`\n }),\n onMousedown: _cache[8] || (_cache[8] = withModifiers(() => {\n }, [\"prevent\"]))\n }, {\n default: withCtx(() => [\n recolorable.value ? (openBlock(), createElementBlock(\"span\", _hoisted_1$2, [\n createElementVNode(\"input\", {\n value: unref(context).drawColor.value,\n type: \"color\",\n \"aria-label\": labels.color,\n title: labels.color,\n \"data-test\": \"toolbar-color\",\n onInput: _cache[0] || (_cache[0] = ($event) => unref(color).preview($event.target.value)),\n onChange: _cache[1] || (_cache[1] = ($event) => unref(color).commit($event.target.value))\n }, null, 40, _hoisted_2$1)\n ])) : createCommentVNode(\"\", true),\n isText.value ? (openBlock(), createBlock(unref(NcActions), {\n key: 1,\n forceMenu: \"\",\n \"aria-label\": labels.font,\n title: labels.font,\n variant: \"tertiary\",\n \"data-test\": \"toolbar-font\",\n onClose: _cache[2] || (_cache[2] = ($event) => emit(\"refocus\"))\n }, {\n icon: withCtx(() => [\n createVNode(FormatFont, { size: 18 })\n ]),\n default: withCtx(() => [\n (openBlock(), createElementBlock(Fragment, null, renderList(fonts, (entry) => {\n return createVNode(unref(NcActionButton), {\n key: entry.id,\n type: \"radio\",\n closeAfterClick: \"\",\n modelValue: unref(textStyle).font.value,\n value: entry.id,\n \"data-test\": `toolbar-font-${entry.id}`,\n onClick: ($event) => unref(textStyle).font.value = entry.id\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(entry.label), 1)\n ]),\n _: 2\n }, 1032, [\"modelValue\", \"value\", \"data-test\", \"onClick\"]);\n }), 64))\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\"])) : createCommentVNode(\"\", true),\n isText.value ? (openBlock(), createBlock(unref(NcActions), {\n key: 2,\n forceMenu: \"\",\n \"aria-label\": labels.align,\n title: labels.align,\n variant: \"tertiary\",\n \"data-test\": \"toolbar-align\",\n onClose: _cache[3] || (_cache[3] = ($event) => emit(\"refocus\"))\n }, {\n icon: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(alignment.value.icon), { size: 18 }))\n ]),\n default: withCtx(() => [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(alignments), (entry) => {\n return openBlock(), createBlock(unref(NcActionButton), {\n key: entry.id,\n type: \"radio\",\n closeAfterClick: \"\",\n modelValue: unref(textStyle).align.value,\n value: entry.id,\n \"data-test\": `toolbar-align-${entry.id}`,\n onClick: ($event) => unref(textStyle).align.value = entry.id\n }, {\n icon: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent(entry.icon), { size: 20 }))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(entry.label), 1)\n ]),\n _: 2\n }, 1032, [\"modelValue\", \"value\", \"data-test\", \"onClick\"]);\n }), 128))\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\"])) : createCommentVNode(\"\", true),\n isText.value ? (openBlock(), createBlock(_sfc_main$3, {\n key: 3,\n testPrefix: \"toolbar\",\n size: 18\n })) : createCommentVNode(\"\", true),\n isText.value ? (openBlock(), createBlock(IconTab, {\n key: 4,\n \"data-test\": \"toolbar-outline\",\n label: labels.outline,\n active: unref(textStyle).outline.value,\n iconOnly: \"\",\n onClick: _cache[4] || (_cache[4] = ($event) => unref(textStyle).outline.value = !unref(textStyle).outline.value)\n }, {\n default: withCtx(() => [\n createVNode(BorderOutside, { size: 18 })\n ]),\n _: 1\n }, 8, [\"label\", \"active\"])) : createCommentVNode(\"\", true),\n isText.value ? (openBlock(), createBlock(IconTab, {\n key: 5,\n \"data-test\": \"toolbar-background\",\n label: labels.background,\n active: unref(textStyle).background.value,\n iconOnly: \"\",\n onClick: _cache[5] || (_cache[5] = ($event) => unref(textStyle).background.value = !unref(textStyle).background.value)\n }, {\n default: withCtx(() => [\n createVNode(FormatColorHighlight, { size: 18 })\n ]),\n _: 1\n }, 8, [\"label\", \"active\"])) : createCommentVNode(\"\", true),\n !__props.typing ? (openBlock(), createElementBlock(Fragment, { key: 6 }, [\n createVNode(unref(NcButton), {\n \"data-test\": \"duplicate\",\n \"aria-label\": labels.duplicate,\n title: labels.duplicate,\n variant: \"tertiary\",\n onClick: _cache[6] || (_cache[6] = ($event) => emit(\"duplicate\"))\n }, {\n icon: withCtx(() => [\n createVNode(ContentCopy, { size: 18 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\"]),\n createVNode(unref(NcButton), {\n \"data-test\": \"delete\",\n \"aria-label\": labels.delete,\n title: labels.delete,\n variant: \"tertiary\",\n onClick: _cache[7] || (_cache[7] = ($event) => emit(\"delete\"))\n }, {\n icon: withCtx(() => [\n createVNode(Delete, { size: 18 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\"])\n ], 64)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"style\"]);\n };\n }\n});\nconst FloatingToolbar = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"__scopeId\", \"data-v-b2b848a3\"]]);\nconst _hoisted_1$1 = [\"aria-label\"];\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"TextOverlay\",\n props: {\n x: {},\n y: {},\n fontSize: {},\n color: {},\n initial: {},\n outline: { type: Boolean },\n background: { type: Boolean },\n font: {},\n align: {},\n bold: { type: Boolean },\n italic: { type: Boolean },\n underline: { type: Boolean },\n strikethrough: { type: Boolean }\n },\n emits: [\"confirm\", \"cancel\", \"resize\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const inputLabel = t(\"Annotation text\");\n const value = ref(props.initial);\n const input = useTemplateRef(\"input\");\n function autosize() {\n const element = input.value;\n if (element === null) {\n return;\n }\n element.style.width = \"0\";\n element.style.height = \"0\";\n element.style.width = `${Math.max(element.scrollWidth + 4, props.fontSize * 2)}px`;\n element.style.height = `${Math.max(element.scrollHeight, props.fontSize * 1.2)}px`;\n emit(\"resize\", { width: element.offsetWidth, height: element.offsetHeight });\n }\n function onPointerDown(event) {\n const target = event.target;\n if (!(target instanceof Element) || target === input.value || target.closest(\".floating-toolbar, .v-popper__popper\") !== null) {\n return;\n }\n emit(\"confirm\", value.value);\n }\n function focus() {\n input.value?.focus();\n }\n __expose({ focus });\n onMounted(() => {\n autosize();\n input.value.focus();\n input.value.select();\n document.addEventListener(\"pointerdown\", onPointerDown, { capture: true });\n });\n onBeforeUnmount(() => {\n document.removeEventListener(\"pointerdown\", onPointerDown, { capture: true });\n });\n function onEnter(event) {\n if (!event.shiftKey) {\n event.preventDefault();\n emit(\"confirm\", value.value);\n }\n }\n return (_ctx, _cache) => {\n return withDirectives((openBlock(), createElementBlock(\"textarea\", {\n ref_key: \"input\",\n ref: input,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => value.value = $event),\n class: \"text-overlay\",\n \"aria-label\": unref(inputLabel),\n \"data-test\": \"text-overlay\",\n style: normalizeStyle({\n insetInlineStart: `${__props.x}px`,\n insetBlockStart: `${__props.y}px`,\n fontSize: `${__props.fontSize}px`,\n color: __props.color,\n // The same stack the canvas uses, or the overlay would measure\n // and wrap differently from what gets drawn\n fontFamily: unref(fontStack)(__props.font),\n fontWeight: __props.bold === true ? \"bold\" : \"normal\",\n fontStyle: __props.italic === true ? \"italic\" : \"normal\",\n textDecorationLine: unref(textDecoration)({ underline: __props.underline, strikethrough: __props.strikethrough }) || \"none\",\n textAlign: unref(textAlign)(__props.align),\n ...__props.background === true ? {\n backgroundColor: unref(outlineColor)(__props.color),\n padding: `${Math.max(2, Math.round(__props.fontSize / 6))}px`\n } : {},\n ...__props.outline === true ? {\n // Mirrors the stroke the canvas draws, so what is typed\n // is what gets saved. paintOrder keeps the edge behind\n // the glyph the way fillAfterStrokeEnabled does there.\n webkitTextStrokeWidth: `${unref(outlineWidth)(__props.fontSize)}px`,\n webkitTextStrokeColor: unref(outlineColor)(__props.color),\n paintOrder: \"stroke fill\"\n } : {}\n }),\n rows: \"1\",\n onInput: autosize,\n onKeydown: [\n withKeys(onEnter, [\"enter\"]),\n _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => emit(\"cancel\"), [\"stop\"]), [\"esc\"]))\n ]\n }, null, 44, _hoisted_1$1)), [\n [vModelText, value.value]\n ]);\n };\n }\n});\nconst TextOverlay = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-9a528a49\"]]);\nfunction imageSize(image) {\n return \"naturalWidth\" in image ? { width: image.naturalWidth, height: image.naturalHeight } : { width: image.width, height: image.height };\n}\nfunction needsCors(url) {\n let target;\n try {\n target = new URL(url, window.location.href);\n } catch {\n return false;\n }\n return (target.protocol === \"http:\" || target.protocol === \"https:\") && target.origin !== window.location.origin;\n}\nasync function loadImage(source) {\n const url = typeof source === \"string\" ? source : URL.createObjectURL(source);\n try {\n return await new Promise((resolve, reject) => {\n const image = new Image();\n if (needsCors(url)) {\n image.crossOrigin = \"anonymous\";\n }\n image.onload = () => resolve(image);\n image.onerror = () => reject(new Error(t(\"Image could not be decoded\")));\n image.src = url;\n });\n } finally {\n if (typeof source !== \"string\") {\n URL.revokeObjectURL(url);\n }\n }\n}\nasync function sourceBytes(source) {\n if (typeof source !== \"string\") {\n return source;\n }\n try {\n const response = await fetch(source, needsCors(source) ? { mode: \"cors\", credentials: \"omit\" } : { credentials: \"same-origin\" });\n return response.ok ? await response.blob() : null;\n } catch {\n return null;\n }\n}\nasync function decodeImage(source) {\n const worker = imageWorker();\n if (worker !== null) {\n const bytes = await sourceBytes(source);\n if (bytes !== null) {\n try {\n return await worker.decode(bytes);\n } catch {\n }\n }\n }\n return await loadImage(source);\n}\nasync function canvasToBlob(canvas, type = \"image/png\", quality) {\n return new Promise((resolve, reject) => {\n canvas.toBlob((blob2) => {\n if (blob2 === null) {\n reject(new Error(t(\"Canvas could not be encoded\")));\n return;\n }\n resolve(blob2);\n }, type, quality);\n });\n}\nfunction primaryColor() {\n const value = getComputedStyle(document.body).getPropertyValue(\"--color-primary-element\").trim();\n return value !== \"\" ? value : \"#0082c9\";\n}\nfunction ambientBackdrop(canvas) {\n const sample = document.createElement(\"canvas\");\n const { width, height } = imageSize(canvas);\n if (width === 0 || height === 0) {\n return \"\";\n }\n sample.width = 24;\n sample.height = Math.max(1, Math.round(24 * height / width));\n const context = sample.getContext(\"2d\");\n if (context === null) {\n return \"\";\n }\n context.drawImage(canvas, 0, 0, sample.width, sample.height);\n try {\n return sample.toDataURL();\n } catch {\n return \"\";\n }\n}\nfunction useAmbient(source) {\n const backdrop = ref(\"\");\n watch(source, (image) => {\n if (image !== null) {\n backdrop.value = ambientBackdrop(image);\n }\n });\n return { backdrop };\n}\nfunction useAnnouncements(context) {\n const message = ref(\"\");\n const modeLabels = {\n select: t(\"Select\"),\n crop: t(\"Crop\"),\n finetune: t(\"Adjust\"),\n filter: t(\"Filter\"),\n annotate: t(\"Annotate\"),\n sticker: t(\"Sticker\"),\n redact: t(\"Blur\")\n };\n watch(context.activeMode, (mode) => {\n message.value = t(\"{mode} mode\", { mode: modeLabels[mode] ?? mode });\n });\n let annotationCount = 0;\n watch(context.state, (state) => {\n if (state.annotations.length > annotationCount) {\n message.value = t(\"Annotation added\");\n } else if (state.annotations.length < annotationCount) {\n message.value = t(\"Annotation removed\");\n }\n annotationCount = state.annotations.length;\n });\n let historyLength = 0;\n watch(context.historyIndex, (index) => {\n const entries = context.historyEntries.value;\n const moved = entries.length === historyLength;\n historyLength = entries.length;\n const entry = entries[index];\n if (moved && entry !== void 0) {\n message.value = t(\"Jumped to {step}\", { step: entry.label ?? t(\"Edit\") });\n }\n });\n watch(() => context.state.value.preset, (preset) => {\n message.value = preset === \"none\" ? t(\"Filter removed\") : t(\"Filter applied\");\n });\n return message;\n}\nconst TEXT_ENTRY = \"input, textarea, select, [contenteditable]\";\nconst ACTIVATABLE = 'button, [role=\"button\"], a[href], summary';\nfunction ownsTextEntry(target) {\n return target instanceof HTMLElement && target.closest(TEXT_ENTRY) !== null;\n}\nfunction ownsSpaceKey(target) {\n return target instanceof HTMLElement && target.closest(`${TEXT_ENTRY}, ${ACTIVATABLE}`) !== null;\n}\nconst NUDGE_KEYS = {\n ArrowLeft: [-1, 0],\n ArrowRight: [1, 0],\n ArrowUp: [0, -1],\n ArrowDown: [0, 1]\n};\nfunction useEditorShortcuts(deps) {\n const { context } = deps;\n let nudging = false;\n function nudgeSelection(event) {\n const id = context.selectedId.value;\n const direction = NUDGE_KEYS[event.key];\n if (id === null || direction === void 0) {\n return;\n }\n event.preventDefault();\n const step = event.shiftKey ? 10 : 1;\n const state = context.state.value;\n nudging = true;\n context.preview({\n ...state,\n annotations: state.annotations.map((annotation) => annotation.id === id ? translateAnnotation(annotation, direction[0] * step, direction[1] * step) : annotation)\n });\n }\n function onKeydown(event) {\n if (deps.isTextEditing() || ownsTextEntry(event.target)) {\n return;\n }\n const meta = event.ctrlKey || event.metaKey;\n if (meta && !event.shiftKey && event.key.toLowerCase() === \"z\") {\n event.preventDefault();\n context.undo();\n return;\n }\n if (meta && event.shiftKey && event.key.toLowerCase() === \"z\" || meta && event.key.toLowerCase() === \"y\") {\n event.preventDefault();\n context.redo();\n return;\n }\n if (event.key === \"+\" || event.key === \"=\") {\n context.setViewZoom(context.viewZoom.value * 1.25);\n return;\n }\n if (event.key === \"-\") {\n context.setViewZoom(context.viewZoom.value / 1.25);\n return;\n }\n if (event.key in NUDGE_KEYS && context.selectedId.value !== null) {\n nudgeSelection(event);\n return;\n }\n if ((event.key === \"Delete\" || event.key === \"Backspace\") && context.selectedId.value !== null) {\n event.preventDefault();\n deps.onDelete();\n } else if (event.key === \"Escape\") {\n deps.onEscape();\n }\n }\n function onKeyup(event) {\n if (ownsTextEntry(event.target)) {\n return;\n }\n if (nudging && event.key in NUDGE_KEYS) {\n nudging = false;\n context.commit(context.state.value, t(\"Move or resize\"));\n }\n }\n onMounted(() => {\n window.addEventListener(\"keydown\", onKeydown);\n window.addEventListener(\"keyup\", onKeyup);\n });\n onBeforeUnmount(() => {\n window.removeEventListener(\"keydown\", onKeydown);\n window.removeEventListener(\"keyup\", onKeyup);\n });\n}\nlet converts;\nfunction convertsToSrgb() {\n if (converts !== void 0) {\n return converts;\n }\n converts = false;\n try {\n const canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const context = canvas.getContext(\"2d\", { colorSpace: \"display-p3\" });\n converts = context?.getContextAttributes().colorSpace === \"display-p3\";\n } catch {\n }\n return converts;\n}\nconst DEFAULT_QUALITY = 0.92;\nconst MIN_QUALITY = 0.75;\nconst MAX_QUALITY = 0.97;\nasync function painted() {\n await new Promise((resolve) => {\n requestAnimationFrame(() => requestAnimationFrame(() => resolve(null)));\n });\n}\nfunction useExportImage(deps) {\n const exporting = ref(false);\n const ENCODABLE = [\"image/jpeg\", \"image/png\", \"image/webp\"];\n function sourceFormat() {\n const type = deps.source()?.type;\n return type !== void 0 && ENCODABLE.includes(type) ? type : void 0;\n }\n async function jpegSource(mimeType) {\n const source = deps.source();\n if (source === null || mimeType !== \"image/jpeg\" || source.type !== \"image/jpeg\") {\n return null;\n }\n return new Uint8Array(await source.arrayBuffer());\n }\n function qualityFor(source) {\n const estimated = source === null ? void 0 : estimateJpegQuality(source);\n if (estimated === void 0) {\n return DEFAULT_QUALITY;\n }\n return Math.min(MAX_QUALITY, Math.max(MIN_QUALITY, estimated / 100));\n }\n async function carryMetadata(blob2, canvas, source) {\n if (source === null || blob2.type !== \"image/jpeg\") {\n return blob2;\n }\n const segments = readMetadataSegments(source, { icc: !convertsToSrgb() });\n if (segments.length === 0) {\n return blob2;\n }\n const carried = withMetadata(\n new Uint8Array(await blob2.arrayBuffer()),\n segments,\n { width: canvas.width, height: canvas.height }\n );\n return new Blob([carried], { type: blob2.type });\n }\n async function exportImage(options = {}) {\n const oriented = deps.oriented();\n if (oriented === null) {\n throw new Error(\"No image loaded\");\n }\n const source = deps.source();\n if (source !== null && source.type !== \"\" && isPristine(deps.getState()) && options.maxSize === void 0 && (options.format === void 0 || options.format === source.type)) {\n return { blob: source, width: oriented.width, height: oriented.height, mimeType: source.type, downscaled: false };\n }\n exporting.value = true;\n await painted();\n try {\n return await encode(oriented, options);\n } finally {\n exporting.value = false;\n }\n }\n async function encode(oriented, options) {\n const canvas = renderToCanvas(oriented, deps.getState(), options.maxSize);\n const mimeType = options.format ?? sourceFormat() ?? \"image/png\";\n try {\n const source = await jpegSource(mimeType);\n const quality = options.quality ?? (mimeType === \"image/jpeg\" ? qualityFor(source) : void 0);\n let blob2 = await canvasToBlob(canvas, mimeType, quality);\n blob2 = await carryMetadata(blob2, canvas, source);\n const visible = visibleRect(deps.getState(), { width: oriented.width, height: oriented.height });\n const wanted = options.maxSize === void 0 ? Math.max(visible.width, visible.height) : Math.min(options.maxSize, Math.max(visible.width, visible.height));\n return {\n blob: blob2,\n width: canvas.width,\n height: canvas.height,\n mimeType,\n downscaled: Math.max(canvas.width, canvas.height) < Math.floor(wanted)\n };\n } catch (error) {\n if (error instanceof DOMException && error.name === \"SecurityError\") {\n throw new Error(\n t(\"The image cannot be exported because it was loaded without cross-origin access\"),\n { cause: error }\n );\n }\n throw error;\n }\n }\n async function save() {\n try {\n deps.onSaved(await exportImage(deps.saveOptions()));\n } catch (error) {\n deps.onError(error instanceof Error ? error : new Error(String(error)));\n }\n }\n return { exporting, exportImage, save };\n}\nfunction useTextEditing(deps) {\n const { context } = deps;\n const textEdit = ref(null);\n function startTextEdit(position, existing) {\n const options = deps.viewOptions();\n const oriented = deps.oriented();\n if (options === null || oriented === null) {\n return;\n }\n const origin = options.showCropped ? visibleRect(context.state.value, { width: oriented.width, height: oriented.height }) : { x: 0, y: 0 };\n textEdit.value = {\n sceneX: position.x,\n sceneY: position.y,\n screenX: options.offset.x + (position.x - origin.x) * options.scale,\n screenY: options.offset.y + (position.y - origin.y) * options.scale,\n screenFontSize: (existing?.fontSize ?? context.fontSize.value) * options.scale,\n value: existing?.text ?? \"\",\n id: existing?.id ?? null\n };\n }\n function confirmTextEdit(text) {\n const edit = textEdit.value;\n textEdit.value = null;\n if (edit === null) {\n return;\n }\n const state = context.state.value;\n const trimmed = text.trim();\n if (edit.id !== null) {\n context.commit({\n ...state,\n annotations: trimmed === \"\" ? state.annotations.filter((annotation) => annotation.id !== edit.id) : state.annotations.map((annotation) => annotation.id === edit.id ? { ...annotation, text: trimmed } : annotation)\n }, trimmed === \"\" ? t(\"Delete\") : t(\"Text\"));\n } else if (trimmed !== \"\") {\n context.commit({\n ...state,\n annotations: [...state.annotations, {\n id: newId(),\n type: \"text\",\n x: edit.sceneX,\n y: edit.sceneY,\n text: trimmed,\n color: context.drawColor.value,\n fontSize: context.fontSize.value,\n rotation: 0,\n outline: context.textOutline.value,\n background: context.textBackground.value,\n font: context.textFont.value,\n align: context.textAlign.value,\n bold: context.textBold.value,\n italic: context.textItalic.value,\n underline: context.textUnderline.value,\n strikethrough: context.textStrikethrough.value\n }]\n }, t(\"Text\"));\n }\n }\n return { textEdit, startTextEdit, confirmTextEdit };\n}\nfunction useWheelControls(element, context) {\n let dragFrom = null;\n let pinch = null;\n const pointers = /* @__PURE__ */ new Map();\n const spaceHeld = shallowRef(false);\n const toolFreeDrag = () => context.activeTool.value === \"adjust\";\n const panArmed = computed(() => spaceHeld.value || context.activeTool.value === \"adjust\");\n function anchorAt(position) {\n const rect = element.value?.getBoundingClientRect();\n if (rect === void 0) {\n return void 0;\n }\n return {\n x: position.x - rect.x - rect.width / 2,\n y: position.y - rect.y - rect.height / 2\n };\n }\n function currentPinch() {\n if (pointers.size !== 2) {\n return null;\n }\n const [a2, b2] = [...pointers.values()];\n return {\n distance: Math.hypot(a2.x - b2.x, a2.y - b2.y),\n centroid: { x: (a2.x + b2.x) / 2, y: (a2.y + b2.y) / 2 }\n };\n }\n function onWheel(event) {\n event.preventDefault();\n if (event.deltaY === 0) {\n return;\n }\n const height = element.value?.clientHeight ?? window.innerHeight;\n const factor = wheelZoomFactor(event.deltaY, event.deltaMode, height);\n context.setViewZoom(context.viewZoom.value * factor, anchorAt({ x: event.clientX, y: event.clientY }));\n }\n function onPointerDown(event) {\n if (event.pointerType === \"touch\") {\n pointers.set(event.pointerId, { x: event.clientX, y: event.clientY });\n if (pointers.size === 2) {\n pinch = currentPinch();\n context.panning.value = true;\n event.stopPropagation();\n }\n return;\n }\n const wantsPan = event.button === 1 || event.button === 0 && (spaceHeld.value || toolFreeDrag());\n if (!wantsPan) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n dragFrom = {\n pointer: { x: event.clientX, y: event.clientY },\n pan: context.viewPan.value\n };\n context.panning.value = true;\n element.value?.setPointerCapture(event.pointerId);\n }\n function onPointerMove(event) {\n if (event.pointerType === \"touch\" && pointers.has(event.pointerId)) {\n pointers.set(event.pointerId, { x: event.clientX, y: event.clientY });\n const next = currentPinch();\n if (next === null || pinch === null) {\n return;\n }\n event.stopPropagation();\n const ratio = next.distance / pinch.distance;\n if (Math.abs(ratio - 1) > PINCH_TOLERANCE) {\n context.setViewZoom(context.viewZoom.value * ratio, anchorAt(next.centroid));\n } else {\n context.setViewPan({\n x: context.viewPan.value.x + next.centroid.x - pinch.centroid.x,\n y: context.viewPan.value.y + next.centroid.y - pinch.centroid.y\n });\n }\n pinch = next;\n return;\n }\n if (dragFrom === null) {\n return;\n }\n event.stopPropagation();\n context.setViewPan({\n x: dragFrom.pan.x + (event.clientX - dragFrom.pointer.x),\n y: dragFrom.pan.y + (event.clientY - dragFrom.pointer.y)\n });\n }\n function onPointerUp(event) {\n if (event !== void 0) {\n pointers.delete(event.pointerId);\n }\n pinch = currentPinch();\n dragFrom = null;\n if (pointers.size < 2) {\n context.panning.value = false;\n }\n }\n function onKeydown(event) {\n if (event.code !== \"Space\" || ownsSpaceKey(event.target)) {\n return;\n }\n event.preventDefault();\n spaceHeld.value = true;\n }\n function onKeyup(event) {\n if (event.code === \"Space\") {\n spaceHeld.value = false;\n }\n }\n onMounted(() => {\n const target = element.value;\n target?.addEventListener(\"wheel\", onWheel, { passive: false });\n target?.addEventListener(\"pointerdown\", onPointerDown, { capture: true });\n target?.addEventListener(\"pointermove\", onPointerMove, { capture: true });\n target?.addEventListener(\"pointerup\", onPointerUp);\n target?.addEventListener(\"pointercancel\", onPointerUp);\n window.addEventListener(\"keydown\", onKeydown);\n window.addEventListener(\"keyup\", onKeyup);\n });\n onBeforeUnmount(() => {\n const target = element.value;\n target?.removeEventListener(\"wheel\", onWheel);\n target?.removeEventListener(\"pointerdown\", onPointerDown, { capture: true });\n target?.removeEventListener(\"pointermove\", onPointerMove, { capture: true });\n target?.removeEventListener(\"pointerup\", onPointerUp);\n target?.removeEventListener(\"pointercancel\", onPointerUp);\n window.removeEventListener(\"keydown\", onKeydown);\n window.removeEventListener(\"keyup\", onKeyup);\n });\n return { panArmed };\n}\nconst DURATION = 0.3;\nfunction prefersReducedMotion() {\n return typeof window.matchMedia === \"function\" && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\nfunction pivotOnCenter(target) {\n target.node.offset(target.pivot);\n target.node.position(target.pivot);\n}\nfunction playTransition(kind, deps, context) {\n if (prefersReducedMotion()) {\n return;\n }\n const { scale } = deps;\n const easing = Konva.Easings.EaseInOut;\n const ratio = context.previousScale / scale;\n for (const target of deps.targets) {\n const { node } = target;\n node.setAttrs({ x: 0, y: 0, offsetX: 0, offsetY: 0, rotation: 0, scaleX: 1, scaleY: 1, opacity: 1 });\n switch (kind) {\n case \"load\":\n pivotOnCenter(target);\n node.opacity(0);\n node.scale({ x: 0.96, y: 0.96 });\n node.to({ opacity: 1, scaleX: 1, scaleY: 1, duration: DURATION, easing });\n break;\n case \"rotate-cw\":\n case \"rotate-ccw\":\n pivotOnCenter(target);\n node.rotation(kind === \"rotate-cw\" ? -90 : 90);\n node.scale({ x: ratio, y: ratio });\n node.to({ rotation: 0, scaleX: 1, scaleY: 1, duration: DURATION, easing });\n break;\n case \"flip-h\":\n pivotOnCenter(target);\n node.scaleX(-1);\n node.to({ scaleX: 1, duration: DURATION, easing });\n break;\n case \"flip-v\":\n pivotOnCenter(target);\n node.scaleY(-1);\n node.to({ scaleY: 1, duration: DURATION, easing });\n break;\n case \"crop\": {\n const { previousScale, previousOffset, previousOrigin } = context;\n node.scale({ x: ratio, y: ratio });\n node.position({\n x: (previousOffset.x - previousOrigin.x * previousScale - (deps.offset.x - deps.origin.x * scale)) * target.unit,\n y: (previousOffset.y - previousOrigin.y * previousScale - (deps.offset.y - deps.origin.y * scale)) * target.unit\n });\n node.to({ x: 0, y: 0, scaleX: 1, scaleY: 1, duration: DURATION, easing });\n break;\n }\n }\n }\n}\nfunction clampCropBox(bounds, oldBox, newBox, keepRatio) {\n const right = bounds.x + bounds.width;\n const bottom = bounds.y + bounds.height;\n let { x, y, width, height } = newBox;\n if (x < bounds.x) {\n width -= bounds.x - x;\n x = bounds.x;\n }\n if (y < bounds.y) {\n height -= bounds.y - y;\n y = bounds.y;\n }\n width = Math.min(width, right - x);\n height = Math.min(height, bottom - y);\n if (keepRatio && oldBox.height > 0) {\n const ratio = oldBox.width / oldBox.height;\n if (width / height > ratio) {\n width = height * ratio;\n } else {\n height = width / ratio;\n }\n if (Math.abs(newBox.x - oldBox.x) > 0.01) {\n x = Math.min(newBox.x + newBox.width, right) - width;\n }\n if (Math.abs(newBox.y - oldBox.y) > 0.01) {\n y = Math.min(newBox.y + newBox.height, bottom) - height;\n }\n }\n return {\n ...newBox,\n x,\n y,\n width: Math.max(8, width),\n height: Math.max(8, height)\n };\n}\nfunction attachCropOverlay(deps) {\n const view = { oriented: deps.oriented, scale: deps.scale, offset: deps.offset };\n const toStage = (rect) => ({\n x: view.offset.x + rect.x * view.scale,\n y: view.offset.y + rect.y * view.scale,\n width: rect.width * view.scale,\n height: rect.height * view.scale\n });\n const toScene = (rect) => ({\n x: (rect.x - view.offset.x) / view.scale,\n y: (rect.y - view.offset.y) / view.scale,\n width: rect.width / view.scale,\n height: rect.height / view.scale\n });\n let imageBounds = toStage({ x: 0, y: 0, ...view.oriented });\n const layer = new Konva.Layer({ name: \"crop\" });\n const makeShade = () => new Konva.Rect({\n fill: \"rgba(0, 0, 0, 0.5)\",\n listening: false\n });\n const shadeTop = makeShade();\n const shadeLeft = makeShade();\n const shadeRight = makeShade();\n const shadeBottom = makeShade();\n for (const shade of [shadeTop, shadeLeft, shadeRight, shadeBottom]) {\n layer.add(shade);\n }\n const cropNode = new Konva.Rect({\n // Named so it can be told apart from the four shade rects\n name: \"crop-rect\",\n ...toStage(clampRect(deps.initial ?? { x: 0, y: 0, ...view.oriented }, view.oriented)),\n stroke: \"rgba(255, 255, 255, 0.9)\",\n strokeWidth: 1,\n draggable: true,\n strokeScaleEnabled: false\n });\n layer.add(cropNode);\n const stageRect = () => ({\n x: cropNode.x(),\n y: cropNode.y(),\n width: cropNode.width() * cropNode.scaleX(),\n height: cropNode.height() * cropNode.scaleY()\n });\n const gridLines = Array.from({ length: 4 }, () => new Konva.Line({\n stroke: \"rgba(255, 255, 255, 0.35)\",\n strokeWidth: 1,\n listening: false\n }));\n for (const line of gridLines) {\n layer.add(line);\n }\n const clampToImage = (rect) => {\n const x = Math.min(Math.max(rect.x, imageBounds.x), imageBounds.x + imageBounds.width - rect.width);\n const y = Math.min(Math.max(rect.y, imageBounds.y), imageBounds.y + imageBounds.height - rect.height);\n return { ...rect, x, y };\n };\n const sceneRect = () => {\n const scene = toScene(stageRect());\n return clampRect({\n x: Math.round(scene.x),\n y: Math.round(scene.y),\n width: Math.round(scene.width),\n height: Math.round(scene.height)\n }, view.oriented);\n };\n const updateOverlay = () => {\n const rect = stageRect();\n const { x, y, width, height } = imageBounds;\n shadeTop.setAttrs({ x, y, width, height: rect.y - y });\n shadeLeft.setAttrs({ x, y: rect.y, width: rect.x - x, height: rect.height });\n shadeRight.setAttrs({ x: rect.x + rect.width, y: rect.y, width: x + width - rect.x - rect.width, height: rect.height });\n shadeBottom.setAttrs({ x, y: rect.y + rect.height, width, height: y + height - rect.y - rect.height });\n gridLines[0].points([rect.x + rect.width / 3, rect.y, rect.x + rect.width / 3, rect.y + rect.height]);\n gridLines[1].points([rect.x + rect.width * 2 / 3, rect.y, rect.x + rect.width * 2 / 3, rect.y + rect.height]);\n gridLines[2].points([rect.x, rect.y + rect.height / 3, rect.x + rect.width, rect.y + rect.height / 3]);\n gridLines[3].points([rect.x, rect.y + rect.height * 2 / 3, rect.x + rect.width, rect.y + rect.height * 2 / 3]);\n deps.onChange?.(sceneRect());\n };\n let ratioLocked = false;\n const transformer = new Konva.Transformer({\n nodes: [cropNode],\n rotateEnabled: false,\n flipEnabled: false,\n keepRatio: false,\n // Round corner dots, light with a dark ring: the image behind them\n // is any image, and a dark dot disappears into half of them\n enabledAnchors: [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"],\n anchorSize: 14,\n anchorCornerRadius: 7,\n anchorFill: \"#fff\",\n anchorStroke: \"rgba(0, 0, 0, 0.5)\",\n anchorStrokeWidth: 1,\n borderStroke: \"rgba(255, 255, 255, 0.7)\",\n boundBoxFunc: (oldBox, newBox) => ({ ...newBox, ...clampCropBox(imageBounds, oldBox, newBox, ratioLocked) })\n });\n layer.add(transformer);\n cropNode.dragBoundFunc((position) => clampToImage({\n ...position,\n width: cropNode.width() * cropNode.scaleX(),\n height: cropNode.height() * cropNode.scaleY()\n }));\n cropNode.on(\"dragmove transform\", updateOverlay);\n const setAspect = (aspect) => {\n ratioLocked = aspect !== null;\n transformer.keepRatio(ratioLocked);\n if (aspect === null) {\n return;\n }\n const current = stageRect();\n const width = Math.min(\n Math.max(current.width, current.height * aspect),\n imageBounds.width,\n imageBounds.height * aspect\n );\n const height = width / aspect;\n const center = { x: current.x + current.width / 2, y: current.y + current.height / 2 };\n const position = clampToImage({\n x: center.x - width / 2,\n y: center.y - height / 2,\n width,\n height\n });\n cropNode.setAttrs({ ...position, width, height, scaleX: 1, scaleY: 1 });\n transformer.forceUpdate();\n updateOverlay();\n };\n updateOverlay();\n deps.stage.add(layer);\n return {\n layer,\n setAspect,\n update(next) {\n const scene = toScene(stageRect());\n view.oriented = next.oriented;\n view.scale = next.scale;\n view.offset = next.offset;\n imageBounds = toStage({ x: 0, y: 0, ...view.oriented });\n cropNode.setAttrs({ ...toStage(scene), scaleX: 1, scaleY: 1 });\n transformer.forceUpdate();\n updateOverlay();\n },\n getRect: sceneRect,\n destroy() {\n transformer.destroy();\n layer.destroy();\n }\n };\n}\nfunction coverScale(box, degrees) {\n if (box.width <= 0 || box.height <= 0) {\n throw new RangeError(\"Dimensions must be positive\");\n }\n const radians = degrees * Math.PI / 180;\n const cos = Math.abs(Math.cos(radians));\n const sin = Math.abs(Math.sin(radians));\n return Math.max(\n (box.width * cos + box.height * sin) / box.width,\n (box.width * sin + box.height * cos) / box.height\n );\n}\nfunction fitContain(content, container) {\n if (content.width <= 0 || content.height <= 0 || container.width <= 0 || container.height <= 0) {\n throw new RangeError(\"Dimensions must be positive\");\n }\n const scale = Math.min(\n container.width / content.width,\n container.height / content.height,\n 1\n );\n const width = content.width * scale;\n const height = content.height * scale;\n return {\n scale,\n width,\n height,\n x: (container.width - width) / 2,\n y: (container.height - height) / 2\n };\n}\nfunction snapAngle(from, to, step = Math.PI / 4) {\n const dx = to.x - from.x;\n const dy = to.y - from.y;\n if (dx === 0 && dy === 0) {\n return to;\n }\n const length = Math.hypot(dx, dy);\n const angle = Math.round(Math.atan2(dy, dx) / step) * step;\n const round = (value) => Math.abs(value) < 1e-9 ? 0 : value;\n return {\n x: from.x + length * round(Math.cos(angle)),\n y: from.y + length * round(Math.sin(angle))\n };\n}\nfunction orientImage(image, state) {\n const natural = imageSize(image);\n const full = orientedSize(natural, state.rotation);\n const fit = canvasScaleFor(full);\n const oriented = {\n width: Math.max(1, Math.floor(full.width * fit)),\n height: Math.max(1, Math.floor(full.height * fit))\n };\n const canvas = document.createElement(\"canvas\");\n canvas.width = oriented.width;\n canvas.height = oriented.height;\n const context = canvas.getContext(\"2d\");\n if (context === null) {\n throw new Error(\"Canvas 2D context unavailable\");\n }\n const cover = coverScale(oriented, state.fineRotation) * Math.max(1, state.zoom) * fit;\n context.translate(oriented.width / 2, oriented.height / 2);\n context.rotate(state.fineRotation * Math.PI / 180);\n context.scale(cover, cover);\n context.rotate(state.rotation * Math.PI / 180);\n context.scale(state.flipX ? -1 : 1, state.flipY ? -1 : 1);\n context.drawImage(image, -natural.width / 2, -natural.height / 2);\n return canvas;\n}\nfunction transformPoints(points, node) {\n const radians = node.rotation() * Math.PI / 180;\n const cos = Math.cos(radians);\n const sin = Math.sin(radians);\n const result = [];\n for (let i2 = 0; i2 < points.length; i2 += 2) {\n const x = points[i2] * node.scaleX();\n const y = points[i2 + 1] * node.scaleY();\n result.push(node.x() + x * cos - y * sin, node.y() + x * sin + y * cos);\n }\n return result;\n}\nfunction applyNodeTransform(annotation, node) {\n switch (annotation.type) {\n case \"draw\":\n case \"arrow\":\n case \"line\": {\n const points = transformPoints(annotation.points, node);\n const scale = (Math.abs(node.scaleX()) + Math.abs(node.scaleY())) / 2;\n const strokeWidth = Math.max(1, annotation.strokeWidth * scale);\n return { ...annotation, points, strokeWidth };\n }\n case \"redact\":\n return {\n ...annotation,\n rect: {\n x: node.x(),\n y: node.y(),\n width: Math.max(1, annotation.rect.width * node.scaleX()),\n height: Math.max(1, annotation.rect.height * node.scaleY())\n }\n };\n case \"rectangle\":\n case \"ellipse\":\n return {\n ...annotation,\n rect: {\n x: node.x(),\n y: node.y(),\n width: Math.max(1, annotation.rect.width * node.scaleX()),\n height: Math.max(1, annotation.rect.height * node.scaleY())\n },\n rotation: node.rotation()\n };\n case \"text\":\n case \"sticker\":\n return {\n ...annotation,\n x: node.x(),\n y: node.y(),\n fontSize: Math.max(4, annotation.fontSize * node.scaleY()),\n rotation: node.rotation()\n };\n }\n}\nfunction attachSelection(deps) {\n const accent = primaryColor();\n const transformer = new Konva.Transformer({\n rotateEnabled: true,\n flipEnabled: false,\n ignoreStroke: true,\n // A plain square with four corner handles\n enabledAnchors: [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"],\n anchorSize: 12,\n anchorCornerRadius: 6,\n anchorFill: \"#fff\",\n anchorStroke: accent,\n borderStroke: accent,\n rotateAnchorOffset: 24,\n rotationSnaps: [0, 45, 90, 135, 180, 225, 270, 315],\n rotationSnapTolerance: 6\n });\n const layer = new Konva.Layer({ name: \"selection\" });\n layer.add(transformer);\n deps.stage.add(layer);\n const findAnnotation = (id) => deps.getState().annotations.find((annotation) => annotation.id === id);\n const findNode = (id) => id === null ? null : deps.stage.find(\".annotation\").find((node) => node.id() === id) ?? null;\n const reportRect = () => {\n const node = findNode(deps.getSelectedId());\n deps.onSelectionRect(node ? node.getClientRect() : null);\n };\n const syncTransformer = () => {\n const id = deps.getSelectedId();\n const node = findNode(id);\n if (node === null || node === void 0) {\n transformer.nodes([]);\n deps.onSelectionRect(null);\n return;\n }\n const annotation = findAnnotation(id);\n transformer.rotateEnabled(annotation !== void 0 && annotation.type !== \"redact\");\n transformer.nodes([node]);\n deps.onSelectionRect(node.getClientRect());\n };\n const sync = () => {\n const selected = deps.getSelectedId();\n const dragAny = (deps.dragMode ?? \"any\") === \"any\";\n deps.stage.find(\".annotation\").forEach((node) => node.draggable(dragAny || node.id() === selected));\n syncTransformer();\n };\n sync();\n const onWriteBack = (event) => {\n const node = event.target;\n const annotation = findAnnotation(node.id());\n if (annotation === void 0) {\n return;\n }\n const state = deps.getState();\n deps.commit({\n ...state,\n annotations: state.annotations.map((entry) => entry.id === annotation.id ? applyNodeTransform(annotation, node) : entry)\n }, t(\"Move or resize\"));\n };\n const onClick = (event) => {\n if (event.target.hasName(\"annotation\")) {\n deps.select(event.target.id());\n } else if (event.target === deps.stage || event.target instanceof Konva.Image) {\n deps.select(null);\n }\n sync();\n };\n const onDblClick = (event) => {\n const annotation = findAnnotation(event.target.id());\n if (annotation?.type === \"text\") {\n deps.editText(annotation);\n }\n };\n deps.stage.on(\"click.selection tap.selection\", onClick);\n deps.stage.on(\"dblclick.selection dbltap.selection\", onDblClick);\n deps.stage.on(\"dragend.selection transformend.selection\", onWriteBack);\n deps.stage.on(\"dragmove.selection transform.selection\", reportRect);\n return {\n sync,\n detach() {\n deps.stage.off(\".selection\");\n deps.stage.find(\".annotation\").forEach((node) => node.draggable(false));\n deps.onSelectionRect(null);\n transformer.destroy();\n layer.destroy();\n }\n };\n}\nconst TOOL_LABELS = {\n draw: t(\"Draw\"),\n rectangle: t(\"Rectangle\"),\n ellipse: t(\"Ellipse\"),\n arrow: t(\"Arrow\"),\n line: t(\"Line\"),\n sticker: t(\"Sticker\"),\n redact: t(\"Blur\")\n};\nconst DRAG_THRESHOLD = 4;\nfunction movedEnough(from, to) {\n return Math.hypot(to.x - from.x, to.y - from.y) >= DRAG_THRESHOLD;\n}\nfunction attachPointerTools(tool, deps) {\n if (![\"draw\", \"rectangle\", \"ellipse\", \"arrow\", \"line\", \"text\", \"sticker\", \"redact\"].includes(tool)) {\n return () => {\n };\n }\n let active = null;\n let previewNode = null;\n let start = { x: 0, y: 0 };\n let pendingText = null;\n let deferred = null;\n let last = { x: 0, y: 0 };\n let constrained = false;\n let gestureBox = null;\n const imageBounds = () => {\n const canvas = deps.oriented();\n if (canvas === null) {\n return null;\n }\n return visibleRect(deps.getState(), { width: canvas.width, height: canvas.height });\n };\n const clampToImage = (point) => {\n const bounds = imageBounds();\n if (bounds === null) {\n return point;\n }\n return {\n x: Math.min(bounds.x + bounds.width, Math.max(bounds.x, point.x)),\n y: Math.min(bounds.y + bounds.height, Math.max(bounds.y, point.y))\n };\n };\n const onImage = (point) => {\n const bounds = imageBounds();\n return bounds === null || point.x >= bounds.x && point.x <= bounds.x + bounds.width && point.y >= bounds.y && point.y <= bounds.y + bounds.height;\n };\n const reachedImage = () => {\n const bounds = imageBounds();\n if (bounds === null || gestureBox === null) {\n return true;\n }\n return gestureBox.x2 >= bounds.x && gestureBox.x1 <= bounds.x + bounds.width && gestureBox.y2 >= bounds.y && gestureBox.y1 <= bounds.y + bounds.height;\n };\n const scenePointer = () => {\n const pointer = deps.stage.getPointerPosition();\n return pointer === null ? null : deps.toScene(pointer);\n };\n const refreshPreview = () => {\n if (active === null) {\n previewNode?.destroy();\n previewNode = null;\n return;\n }\n if (previewNode !== null && (active.type === \"draw\" || active.type === \"arrow\" || active.type === \"line\")) {\n previewNode.points(active.points);\n return;\n }\n previewNode?.destroy();\n previewNode = null;\n const oriented = deps.oriented();\n const source = oriented === null ? void 0 : { width: oriented.width, height: oriented.height };\n if (active.type === \"redact\" && source === void 0) {\n return;\n }\n previewNode = buildAnnotationNode(active, source);\n deps.contentGroup()?.add(previewNode);\n };\n const discard = () => {\n active = null;\n pendingText = null;\n deferred = null;\n previewNode?.destroy();\n previewNode = null;\n };\n const beginAnnotation = (point) => {\n const options = deps.options();\n start = point;\n last = point;\n switch (tool) {\n case \"draw\":\n active = { id: newId(), type: \"draw\", points: [point.x, point.y], color: options.color, strokeWidth: options.strokeWidth };\n break;\n case \"arrow\":\n case \"line\":\n active = { id: newId(), type: tool, points: [point.x, point.y, point.x, point.y], color: options.color, strokeWidth: options.strokeWidth };\n break;\n case \"rectangle\":\n case \"ellipse\":\n active = { id: newId(), type: tool, rect: { x: point.x, y: point.y, width: 1, height: 1 }, rotation: 0, color: options.color, strokeWidth: options.strokeWidth };\n break;\n case \"redact\":\n active = {\n id: newId(),\n type: \"redact\",\n rect: { x: point.x, y: point.y, width: 1, height: 1 },\n style: options.redactStyle,\n shape: options.redactShape\n };\n break;\n case \"text\":\n pendingText = point;\n return;\n case \"sticker\": {\n const state = deps.getState();\n const sticker = {\n id: newId(),\n type: \"sticker\",\n x: point.x,\n y: point.y,\n text: options.sticker,\n color: options.color,\n fontSize: options.fontSize * 2,\n rotation: 0\n };\n deps.commit({ ...state, annotations: [...state.annotations, sticker] }, TOOL_LABELS.sticker);\n return;\n }\n }\n refreshPreview();\n };\n const onPointerDown = (event) => {\n const point = scenePointer();\n if (point === null || deps.panning()) {\n return;\n }\n if (!onImage(point) && (tool === \"sticker\" || tool === \"text\")) {\n return;\n }\n gestureBox = { x1: point.x, y1: point.y, x2: point.x, y2: point.y };\n constrained = event !== void 0 && (event.evt.shiftKey || event.evt.ctrlKey);\n const target = event?.target;\n if (target?.getLayer()?.name() === \"selection\") {\n return;\n }\n if (target?.hasName(\"annotation\")) {\n if (target.id() === deps.selectedId()) {\n return;\n }\n const pointer = deps.stage.getPointerPosition();\n deferred = pointer === null ? null : { scene: point, stage: pointer };\n if (deferred !== null) {\n return;\n }\n }\n beginAnnotation(clampToImage(point));\n };\n const followLine = () => {\n if (active === null || active.type !== \"arrow\" && active.type !== \"line\") {\n return;\n }\n const end = constrained ? snapAngle(start, last) : last;\n active.points = [start.x, start.y, end.x, end.y];\n };\n const onPointerMove = (event) => {\n if (deferred !== null) {\n const pointer = deps.stage.getPointerPosition();\n if (pointer === null || deps.panning()) {\n return;\n }\n if (!movedEnough(deferred.stage, pointer)) {\n return;\n }\n const from = deferred.scene;\n deferred = null;\n beginAnnotation(clampToImage(from));\n }\n if (active === null) {\n return;\n }\n if (deps.panning()) {\n discard();\n return;\n }\n const raw = scenePointer();\n if (raw === null) {\n return;\n }\n gestureBox = gestureBox === null ? { x1: raw.x, y1: raw.y, x2: raw.x, y2: raw.y } : {\n x1: Math.min(gestureBox.x1, raw.x),\n y1: Math.min(gestureBox.y1, raw.y),\n x2: Math.max(gestureBox.x2, raw.x),\n y2: Math.max(gestureBox.y2, raw.y)\n };\n const point = clampToImage(raw);\n last = point;\n if (event !== void 0) {\n constrained = event.evt.shiftKey || event.evt.ctrlKey;\n }\n switch (active.type) {\n case \"draw\":\n active.points.push(point.x, point.y);\n break;\n case \"arrow\":\n case \"line\":\n followLine();\n break;\n case \"rectangle\":\n case \"ellipse\":\n case \"redact\":\n active = {\n ...active,\n rect: {\n x: Math.min(start.x, point.x),\n y: Math.min(start.y, point.y),\n width: Math.abs(point.x - start.x) || 1,\n height: Math.abs(point.y - start.y) || 1\n }\n };\n break;\n }\n refreshPreview();\n };\n const onPointerUp = () => {\n if (deferred !== null) {\n deferred = null;\n return;\n }\n if (pendingText !== null) {\n deps.startTextEdit(pendingText);\n pendingText = null;\n return;\n }\n if (active === null) {\n return;\n }\n if (!reachedImage()) {\n discard();\n return;\n }\n const state = deps.getState();\n deps.commit({ ...state, annotations: [...state.annotations, active] }, TOOL_LABELS[tool]);\n discard();\n };\n const onModifier = (event) => {\n if (event.key !== \"Shift\" && event.key !== \"Control\") {\n return;\n }\n constrained = event.type === \"keydown\";\n followLine();\n refreshPreview();\n };\n deps.stage.on(\"pointerdown.tool\", onPointerDown);\n deps.stage.on(\"pointermove.tool\", onPointerMove);\n deps.stage.on(\"pointerup.tool\", onPointerUp);\n window.addEventListener(\"pointerup\", onPointerUp);\n window.addEventListener(\"pointercancel\", discard);\n window.addEventListener(\"keydown\", onModifier);\n window.addEventListener(\"keyup\", onModifier);\n return () => {\n deps.stage.off(\".tool\");\n window.removeEventListener(\"pointerup\", onPointerUp);\n window.removeEventListener(\"pointercancel\", discard);\n window.removeEventListener(\"keydown\", onModifier);\n window.removeEventListener(\"keyup\", onModifier);\n previewNode?.destroy();\n };\n}\nconst _hoisted_1 = { class: \"image-editor__shell\" };\nconst _hoisted_2 = { class: \"image-editor__frame\" };\nconst _hoisted_3 = { class: \"image-editor__viewport\" };\nconst _hoisted_4 = { class: \"image-editor__stage\" };\nconst _hoisted_5 = [\"aria-label\"];\nconst _hoisted_6 = {\n key: 1,\n class: \"image-editor__error\",\n \"data-test\": \"load-error\"\n};\nconst _hoisted_7 = {\n class: \"hidden-visually\",\n role: \"status\",\n \"aria-live\": \"polite\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ImageEditor\",\n props: {\n src: {},\n label: {},\n exportOptions: {},\n initialState: {},\n saving: { type: Boolean }\n },\n emits: [\"save\", \"cancel\", \"error\", \"change\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const labels = {\n canvas: t(\"Image editor\"),\n failed: t(\"The image could not be loaded\"),\n retry: t(\"Try again\"),\n tooLarge: t(\"This image is larger than this browser can edit\"),\n tooLargeConfirm: t(\"Continue with a smaller copy\"),\n tooLargeReject: t(\"Close the editor\")\n };\n function confirmDownscale(full, fit) {\n const megapixels = (size) => Math.round(size.width * size.height / 1e5) / 10;\n return showConfirmation({\n name: labels.tooLarge,\n text: t(\n \"{name} is {source} megapixels and this browser can only edit {limit}. Continuing means the saved image is {width} by {height} pixels instead, and the detail beyond that is lost.\",\n {\n name: props.label ?? props.src.toString(),\n source: String(megapixels(full)),\n limit: String(megapixels({ width: full.width * fit, height: full.height * fit })),\n width: String(Math.floor(full.width * fit)),\n height: String(Math.floor(full.height * fit))\n }\n ),\n labelConfirm: labels.tooLargeConfirm,\n labelReject: labels.tooLargeReject,\n severity: \"warning\"\n });\n }\n let loadAttempt = 0;\n const context = createEditorContext();\n const root = useTemplateRef(\"root\");\n const container = useTemplateRef(\"container\");\n const loaded = ref(false);\n const errored = ref(false);\n const containerSize = shallowRef({ width: 0, height: 0 });\n const orientedCanvas = shallowRef(null);\n const sourceImage = shallowRef(null);\n const { backdrop } = useAmbient(sourceImage);\n const { panArmed } = useWheelControls(container, context);\n const announcement = useAnnouncements(context);\n const selectionBox = shallowRef(null);\n let stage = null;\n let scene = null;\n let cropOverlay = null;\n let selection = null;\n let detachTool = null;\n let attached = null;\n let resizeObserver = null;\n let pendingTransition = null;\n let lastView = null;\n const canvasCursor = computed(() => {\n if (context.panning.value) {\n return \"grabbing\";\n }\n if (panArmed.value) {\n return \"grab\";\n }\n const tool = context.activeTool.value;\n if ([\"draw\", \"rectangle\", \"ellipse\", \"arrow\", \"line\", \"text\", \"sticker\", \"redact\"].includes(tool)) {\n return \"crosshair\";\n }\n return \"default\";\n });\n const viewFit = computed(() => {\n const oriented = orientedCanvas.value;\n if (oriented === null || containerSize.value.width === 0 || containerSize.value.height === 0) {\n return null;\n }\n const showCropped = context.activeTool.value !== \"crop\";\n const visible = showCropped ? visibleRect(context.state.value, { width: oriented.width, height: oriented.height }) : { x: 0, y: 0, width: oriented.width, height: oriented.height };\n const container2 = containerSize.value;\n const fit = fitContain(\n { width: visible.width, height: visible.height },\n {\n width: Math.max(1, container2.width - VIEW_MARGIN * 2),\n height: Math.max(1, container2.height - VIEW_MARGIN * 2)\n }\n );\n return { scale: fit.scale, visible, container: container2, showCropped };\n });\n const viewOptions = computed(() => {\n const fit = viewFit.value;\n if (fit === null) {\n return null;\n }\n const scale = fit.scale * context.viewZoom.value;\n const pan = clampPan(context.viewPan.value, panBounds(fit.visible, scale, fit.container));\n return {\n scale,\n offset: {\n x: (fit.container.width - fit.visible.width * scale) / 2 + pan.x,\n y: (fit.container.height - fit.visible.height * scale) / 2 + pan.y\n },\n showCropped: fit.showCropped,\n fastFilters: context.interacting.value\n };\n });\n const { textEdit, startTextEdit, confirmTextEdit } = useTextEditing({\n context,\n viewOptions: () => viewOptions.value,\n oriented: () => orientedCanvas.value\n });\n const overlaySize = shallowRef({ width: 0, height: 0 });\n const overlay = useTemplateRef(\"overlay\");\n const toolbarBox = computed(() => {\n const edit = textEdit.value;\n if (edit !== null) {\n return { x: edit.screenX, y: edit.screenY, ...overlaySize.value };\n }\n return selectionBox.value;\n });\n const textStyle = useTextStyle(context);\n const { exporting, exportImage, save: onSave } = useExportImage({\n oriented: () => orientedCanvas.value,\n getState: () => context.state.value,\n source: () => props.src instanceof Blob ? props.src : null,\n saveOptions: () => props.exportOptions ?? {},\n onSaved: (result) => emit(\"save\", result),\n onError: (error) => emit(\"error\", error)\n });\n function captureView() {\n return lastView ?? { previousScale: 1, previousOffset: { x: 0, y: 0 }, previousOrigin: { x: 0, y: 0 } };\n }\n function commitWithTransition(kind, next, label) {\n pendingTransition = { kind, context: captureView() };\n context.commit(next, label);\n }\n function renderView() {\n const oriented = orientedCanvas.value;\n const options = viewOptions.value;\n if (stage === null || oriented === null || options === null) {\n return;\n }\n stage.size(containerSize.value);\n scene ??= createScene(stage);\n scene.update(oriented, context.state.value, options);\n const renderedOrigin = options.showCropped ? visibleRect(context.state.value, { width: oriented.width, height: oriented.height }) : { x: 0, y: 0 };\n syncTools(oriented, options);\n if (pendingTransition !== null) {\n const visible = options.showCropped ? visibleRect(context.state.value, { width: oriented.width, height: oriented.height }) : { x: 0, y: 0, width: oriented.width, height: oriented.height };\n const center = {\n x: visible.x + visible.width / 2,\n y: visible.y + visible.height / 2\n };\n const targets = [{\n node: scene.contentGroup,\n pivot: center,\n unit: 1 / options.scale\n }];\n if (cropOverlay !== null) {\n targets.push({\n node: cropOverlay.layer,\n pivot: {\n x: options.offset.x + (center.x - renderedOrigin.x) * options.scale,\n y: options.offset.y + (center.y - renderedOrigin.y) * options.scale\n },\n unit: 1\n });\n }\n playTransition(pendingTransition.kind, {\n targets,\n scale: options.scale,\n offset: options.offset,\n origin: renderedOrigin\n }, pendingTransition.context);\n pendingTransition = null;\n }\n lastView = {\n previousScale: options.scale,\n previousOffset: options.offset,\n previousOrigin: { x: renderedOrigin.x, y: renderedOrigin.y }\n };\n }\n function syncTools(oriented, options) {\n if (stage === null) {\n return;\n }\n const tool = context.activeTool.value;\n const crop = context.state.value.crop;\n const fresh = attached !== null && attached.tool === tool && attached.oriented === oriented && attached.crop === crop;\n if (fresh) {\n selection?.sync();\n cropOverlay?.update({\n oriented: { width: oriented.width, height: oriented.height },\n scale: options.scale,\n offset: options.offset\n });\n return;\n }\n detachTool?.();\n detachTool = null;\n selection?.detach();\n selection = null;\n cropOverlay?.destroy();\n cropOverlay = null;\n attached = { tool, oriented, crop };\n if (tool !== \"crop\" && tool !== \"adjust\") {\n selection = attachSelection({\n stage,\n getState: () => context.state.value,\n commit: context.commit,\n select: (id) => {\n context.selectedId.value = id;\n },\n getSelectedId: () => context.selectedId.value,\n editText: (annotation) => startTextEdit({ x: annotation.x, y: annotation.y }, annotation),\n onSelectionRect: (rect) => {\n selectionBox.value = rect;\n },\n dragMode: tool === \"select\" ? \"any\" : \"selected\"\n });\n }\n if (tool === \"crop\") {\n cropOverlay = attachCropOverlay({\n stage,\n oriented: { width: oriented.width, height: oriented.height },\n scale: options.scale,\n offset: options.offset,\n initial: crop,\n onChange: (rect) => {\n context.cropChanged.value = !sameRect(rect, visibleRect(context.state.value, currentOriented()));\n }\n });\n applyCropAspect();\n } else if (tool !== \"adjust\" && tool !== \"select\") {\n detachTool = attachPointerTools(tool, {\n stage,\n contentGroup: () => scene?.contentGroup ?? null,\n oriented: () => orientedCanvas.value,\n getState: () => context.state.value,\n commit: context.commit,\n selectedId: () => context.selectedId.value,\n // Read the live view: the tool outlives the transform it was\n // attached under\n toScene: (pointer) => toImageCoords(\n pointer,\n context.state.value,\n { width: oriented.width, height: oriented.height },\n viewOptions.value ?? options\n ),\n panning: () => context.panning.value,\n options: () => ({\n color: context.drawColor.value,\n strokeWidth: context.strokeWidth.value,\n fontSize: context.fontSize.value,\n sticker: context.sticker.value,\n redactStyle: context.redactStyle.value,\n redactShape: context.redactShape.value\n }),\n startTextEdit: (position) => startTextEdit(position)\n });\n }\n }\n function applyCropAspect() {\n if (cropOverlay === null) {\n return;\n }\n const aspect = context.cropAspect.value;\n const oriented = orientedCanvas.value;\n if (aspect === \"original\" && oriented !== null) {\n cropOverlay.setAspect(oriented.width / oriented.height);\n } else {\n cropOverlay.setAspect(typeof aspect === \"number\" ? aspect : null);\n }\n }\n function refreshOrientedCanvas() {\n if (sourceImage.value === null) {\n return;\n }\n const oriented = orientImage(sourceImage.value, context.state.value);\n orientedCanvas.value = oriented;\n prepareLevels(oriented);\n }\n function seedState(seed, image) {\n if (seed.crop === null) {\n return seed;\n }\n const oriented = orientedSize(imageSize(image), seed.rotation);\n return { ...seed, crop: clampRect(seed.crop, oriented) };\n }\n async function load() {\n const attempt = ++loadAttempt;\n loaded.value = false;\n errored.value = false;\n try {\n const image = await decodeImage(props.src);\n if (attempt !== loadAttempt) {\n return;\n }\n const full = imageSize(image);\n const fit = canvasScaleFor(full);\n if (fit < 1 && !await confirmDownscale(full, fit)) {\n emit(\"cancel\");\n return;\n }\n if (attempt !== loadAttempt) {\n return;\n }\n sourceImage.value = image;\n context.reset(props.initialState === void 0 ? void 0 : seedState(props.initialState, image));\n const minDimension = Math.min(full.width, full.height);\n context.fontSize.value = Math.min(128, Math.max(12, Math.round(minDimension / 15)));\n pendingTransition = { kind: \"load\", context: captureView() };\n refreshOrientedCanvas();\n loaded.value = true;\n } catch (error) {\n if (attempt !== loadAttempt) {\n return;\n }\n errored.value = true;\n emit(\"error\", error instanceof Error ? error : new Error(String(error)));\n }\n }\n function currentOriented() {\n const oriented = orientedCanvas.value;\n return { width: oriented.width, height: oriented.height };\n }\n function onRotateCW() {\n commitWithTransition(\"rotate-cw\", rotateCW(context.state.value, currentOriented()), t(\"Rotate right\"));\n }\n function onRotateCCW() {\n let state = context.state.value;\n let oriented = currentOriented();\n for (let i2 = 0; i2 < 3; i2++) {\n state = rotateCW(state, oriented);\n oriented = { width: oriented.height, height: oriented.width };\n }\n commitWithTransition(\"rotate-ccw\", state, t(\"Rotate left\"));\n }\n function onFlipHorizontal() {\n commitWithTransition(\"flip-h\", flipHorizontal(context.state.value, currentOriented()), t(\"Flip horizontal\"));\n }\n function onFlipVertical() {\n commitWithTransition(\"flip-v\", flipVertical(context.state.value, currentOriented()), t(\"Flip vertical\"));\n }\n function onApplyCrop() {\n if (cropOverlay === null) {\n return;\n }\n const crop = cropOverlay.getRect();\n if (sameRect(crop, visibleRect(context.state.value, currentOriented()))) {\n return;\n }\n pendingTransition = { kind: \"crop\", context: captureView() };\n context.commit({ ...context.state.value, crop }, t(\"Crop\"));\n }\n function onDuplicateSelection() {\n const id = context.selectedId.value;\n const state = context.state.value;\n const annotation = state.annotations.find((entry) => entry.id === id);\n if (annotation === void 0) {\n return;\n }\n const copy = duplicateAnnotation(annotation);\n context.commit({ ...state, annotations: [...state.annotations, copy] }, t(\"Duplicate\"));\n context.selectedId.value = copy.id;\n renderView();\n }\n function onRevert() {\n context.commit(createInitialState(), t(\"Revert all changes\"));\n }\n function onResetCrop() {\n context.commit({ ...context.state.value, crop: null }, t(\"Reset crop\"));\n }\n function onDeleteSelection() {\n const id = context.selectedId.value;\n if (id === null) {\n return;\n }\n const state = context.state.value;\n context.selectedId.value = null;\n context.commit({\n ...state,\n annotations: state.annotations.filter((annotation) => annotation.id !== id)\n }, t(\"Delete\"));\n }\n useEditorShortcuts({\n context,\n isTextEditing: () => textEdit.value !== null,\n onDelete: onDeleteSelection,\n onEscape: () => {\n if (context.selectedId.value !== null) {\n context.selectedId.value = null;\n renderView();\n } else if (context.activeMode.value === \"crop\") {\n context.setMode(\"select\");\n } else if (context.activeMode.value === \"annotate\" && context.activeTool.value !== \"select\") {\n context.activeTool.value = \"select\";\n }\n }\n });\n watch(viewFit, (fit) => {\n context.viewFit.value = fit;\n }, { immediate: true });\n provideEditorCommands({\n rotateCW: onRotateCW,\n rotateCCW: onRotateCCW,\n flipHorizontal: onFlipHorizontal,\n flipVertical: onFlipVertical,\n applyCrop: onApplyCrop,\n resetCrop: onResetCrop,\n revert: onRevert\n });\n watch(() => props.src, load);\n watch(\n [\n () => context.state.value.rotation,\n () => context.state.value.flipX,\n () => context.state.value.flipY,\n () => context.state.value.fineRotation,\n () => context.state.value.zoom\n ],\n refreshOrientedCanvas\n );\n watch(\n [context.state, context.activeTool, context.activeMode, context.viewZoom, context.viewPan, context.interacting, orientedCanvas, containerSize],\n renderView\n );\n watch(context.cropAspect, applyCropAspect);\n watch(context.selectedId, (id) => {\n const annotation = context.state.value.annotations.find((entry) => entry.id === id);\n if (annotation !== void 0 && \"color\" in annotation && annotation.type !== \"sticker\") {\n context.drawColor.value = annotation.color;\n }\n });\n watch([context.state, context.interacting], () => {\n if (!context.interacting.value) {\n emit(\"change\", structuredClone(context.state.value));\n }\n });\n onMounted(() => {\n stage = new Konva.Stage({ container: container.value, width: 1, height: 1 });\n resizeObserver = new ResizeObserver(() => {\n const { clientWidth, clientHeight } = container.value;\n containerSize.value = { width: clientWidth, height: clientHeight };\n });\n resizeObserver.observe(container.value);\n load();\n });\n onBeforeUnmount(() => {\n resizeObserver?.disconnect();\n detachTool?.();\n selection?.detach();\n cropOverlay?.destroy();\n scene?.destroy();\n scene = null;\n stage?.destroy();\n stage = null;\n });\n __expose({\n exportImage,\n /**\n * Start over, optionally from a given state.\n *\n * @param state state to reset to, defaulting to a pristine one\n */\n reset: (state) => context.reset(state)\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"root\",\n ref: root,\n class: \"image-editor\",\n style: normalizeStyle({\n \"--editor-backdrop\": unref(backdrop) ? `url(${unref(backdrop)})` : \"none\"\n })\n }, [\n createElementVNode(\"div\", _hoisted_1, [\n createElementVNode(\"div\", _hoisted_2, [\n createElementVNode(\"div\", _hoisted_3, [\n createElementVNode(\"div\", _hoisted_4, [\n createElementVNode(\"div\", {\n ref_key: \"container\",\n ref: container,\n class: \"image-editor__canvas\",\n style: normalizeStyle({ cursor: canvasCursor.value }),\n role: \"img\",\n \"aria-label\": __props.label ?? labels.canvas\n }, null, 12, _hoisted_5),\n unref(textEdit) !== null ? (openBlock(), createBlock(TextOverlay, {\n key: 0,\n ref_key: \"overlay\",\n ref: overlay,\n x: unref(textEdit).screenX,\n y: unref(textEdit).screenY,\n \"font-size\": unref(textEdit).screenFontSize,\n color: unref(context).drawColor.value,\n initial: unref(textEdit).value,\n outline: unref(textStyle).outline.value,\n background: unref(textStyle).background.value,\n font: unref(textStyle).font.value,\n align: unref(textStyle).align.value,\n bold: unref(textStyle).bold.value,\n italic: unref(textStyle).italic.value,\n underline: unref(textStyle).underline.value,\n strikethrough: unref(textStyle).strikethrough.value,\n onResize: _cache[0] || (_cache[0] = ($event) => overlaySize.value = $event),\n onConfirm: unref(confirmTextEdit),\n onCancel: _cache[1] || (_cache[1] = ($event) => textEdit.value = null)\n }, null, 8, [\"x\", \"y\", \"font-size\", \"color\", \"initial\", \"outline\", \"background\", \"font\", \"align\", \"bold\", \"italic\", \"underline\", \"strikethrough\", \"onConfirm\"])) : createCommentVNode(\"\", true),\n toolbarBox.value !== null ? (openBlock(), createBlock(FloatingToolbar, {\n key: 1,\n box: toolbarBox.value,\n typing: unref(textEdit) !== null,\n onRefocus: _cache[2] || (_cache[2] = ($event) => overlay.value?.focus()),\n onDuplicate: onDuplicateSelection,\n onDelete: onDeleteSelection\n }, null, 8, [\"box\", \"typing\"])) : createCommentVNode(\"\", true)\n ]),\n !loaded.value && !errored.value ? (openBlock(), createBlock(unref(NcLoadingIcon), {\n key: 0,\n class: \"image-editor__loading\",\n size: 44\n })) : createCommentVNode(\"\", true),\n errored.value ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n createElementVNode(\"p\", null, toDisplayString(labels.failed), 1),\n createVNode(unref(NcButton), {\n variant: \"secondary\",\n \"data-test\": \"retry\",\n onClick: _cache[3] || (_cache[3] = ($event) => load())\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(labels.retry), 1)\n ]),\n _: 1\n })\n ])) : createCommentVNode(\"\", true)\n ]),\n createVNode(EditorTopBar, {\n class: \"image-editor__topbar\",\n loaded: loaded.value,\n popoverContainer: root.value,\n saving: unref(exporting) || __props.saving === true,\n onSave: unref(onSave),\n onCancel: _cache[4] || (_cache[4] = ($event) => emit(\"cancel\"))\n }, null, 8, [\"loaded\", \"popoverContainer\", \"saving\", \"onSave\"]),\n createVNode(EditorPanel, {\n class: normalizeClass(unref(context).activeMode.value === \"filter\" ? \"image-editor__strip\" : \"image-editor__controls\"),\n loaded: loaded.value,\n oriented: orientedCanvas.value\n }, null, 8, [\"class\", \"loaded\", \"oriented\"]),\n createVNode(EditorSidebar, {\n class: \"image-editor__rail\",\n loaded: loaded.value\n }, null, 8, [\"loaded\"]),\n createElementVNode(\"span\", _hoisted_7, toDisplayString(unref(announcement)), 1)\n ])\n ])\n ], 4);\n };\n }\n});\nconst ImageEditor = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-66996030\"]]);\nexport {\n D as DEFAULT_ORIENTATION,\n ImageEditor,\n createInitialState,\n i as isOrientation,\n isPristine,\n a as readJpegOrientation,\n b as rotateOrientation,\n s as setJpegOrientation,\n useHistory\n};\n//# sourceMappingURL=index.mjs.map\n","(function() {\n \"use strict\";\n try {\n if (typeof document != \"undefined\") {\n var elementStyle = document.createElement(\"style\");\n elementStyle.appendChild(document.createTextNode(\"/* Full-viewport overlay so the editor fills the screen regardless of the\\n (collapsing) handler container it replaces. */\\n.viewer__image-editor[data-v-369404a2] {\\n\tposition: fixed;\\n\tinset: 0;\\n\tz-index: 10102;\\n}\"));\n document.head.appendChild(elementStyle);\n }\n } catch (e) {\n console.error(\"vite-plugin-css-injected-by-js\", e);\n }\n})();\nimport { defineComponent, ref, computed, openBlock, createBlock, unref } from \"vue\";\nimport axios from \"@nextcloud/axios\";\nimport { showSuccess, showError } from \"@nextcloud/dialogs\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport { ImageEditor as ImageEditor$1 } from \"@nextcloud/image-editor\";\nimport { t, l as logger } from \"./index.mjs\";\nimport \"@nextcloud/image-editor/style\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"ImageEditor\",\n props: {\n file: {}\n },\n emits: [\"close\", \"saved\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit$1 = __emit;\n const saving = ref(false);\n const exportOptions = computed(() => {\n if (props.file.mime === \"image/jpeg\" || props.file.mime === \"image/webp\") {\n return { format: props.file.mime, quality: 0.9 };\n }\n return { format: \"image/png\" };\n });\n async function onSave(result) {\n saving.value = true;\n try {\n const known = props.file.attributes.etag;\n const response = await axios.put(props.file.encodedSource, result.blob, {\n headers: known ? { \"If-Match\": `\"${String(known).replace(/"|\"/g, \"\")}\"` } : void 0\n });\n const etag = response.headers?.[\"oc-etag\"] ?? response.headers?.etag;\n if (etag) {\n props.file.attributes.etag = String(etag).replace(/\"/g, \"\");\n }\n emit$1(\"saved\", URL.createObjectURL(result.blob));\n emit(\"files:node:updated\", props.file);\n showSuccess(t(\"Image saved\"));\n emit$1(\"close\");\n } catch (error) {\n logger.error(\"Failed to save the edited image\", { error });\n if (error.response?.status === 412) {\n showError(t(\"The file was changed elsewhere while you were editing it. Reload the page to edit the new version.\"));\n return;\n }\n showError(t(\"Could not save the image\"));\n } finally {\n saving.value = false;\n }\n }\n function onCancel() {\n emit$1(\"close\");\n }\n function onError(error) {\n logger.error(\"Image editor error\", { error });\n showError(t(\"The image could not be edited.\"));\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ImageEditor$1), {\n src: __props.file.encodedSource,\n label: __props.file.displayname,\n exportOptions: exportOptions.value,\n saving: saving.value,\n class: \"viewer__image-editor\",\n onSave,\n onCancel,\n onError\n }, null, 8, [\"src\", \"label\", \"exportOptions\", \"saving\"]);\n };\n }\n});\nconst ImageEditor = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-369404a2\"]]);\nexport {\n ImageEditor as default\n};\n//# sourceMappingURL=ImageEditor.mjs.map\n"],"names":["PI_OVER_180","detectBrowser","glob","global","Konva","param","angle","_a","_b","_registerNode","NodeClass","NODE_ERROR","ensureBrowser","Transform","m","tr","point","x","y","sx","sy","rad","c","s","m11","m12","m21","m22","matrix","dx","dy","d","m0","m1","m2","m3","m4","m5","a","b","e","f","delta","result","r","Util","OBJECT_ARRAY","OBJECT_NUMBER","OBJECT_STRING","OBJECT_BOOLEAN","PI_OVER_DEG180","DEG180_OVER_PI","HASH","EMPTY_STRING","ZERO","KONVA_WARNING","KONVA_ERROR","COLORS","_isCanvasFarblingActive","defaultWindow","animQueues","requestFrame","win","capitalizeCache","splitColorComponents","str","components","NUMBER_SOURCE","COLOR_COMPONENT_REGEX","parseColorComponent","value","max","match","HEX_COLOR_REGEX","clamp01","HUE_REGEX","HUE_UNITS","obj","val","selector","firstChar","number","callback","target","queue","cb","canvas","el","url","imageObj","g","hex","bigint","randColor","ctx","isFarbling","i","color","rgb","parts","hue","unit","degrees","h","l","t2","t1","t3","r1","r2","retObj","key","arr","deg","radians","cached","out","func","left","right","x1","y1","x2","y2","x3","y3","dist","pd2","u","pt","line","isClosed","pc","p1","p2","proj","px","py","pdist","startArray","endArray","start","end","temp","n","newStart","pr","desc","source","evt","canvases","context","width","height","cornerRadius","xOrigin","yOrigin","topLeft","topRight","bottomLeft","bottomRight","points","sides","radius","prev","curr","next","vec1","vec2","len1","len2","currCornerRadius","normalVec1","normalVec2","simplifyArray","retArr","len","util","COMMA","OPEN_PAREN","CLOSE_PAREN","OPEN_PAREN_BRACKET","CLOSE_BRACKET_PAREN","SEMICOLON","DOUBLE_PAREN","EQUALS","CONTEXT_METHODS","CONTEXT_PROPERTIES","traceArrMax","_cssFiltersSupported","isCSSFiltersSupported","Context","shape","relaxed","rounded","traceArr","trace","method","args","pixelRatio","bounds","lineCap","absOpacity","lineJoin","miterLimit","attr","startAngle","endAngle","counterClockwise","cp1x","cp1y","cp2x","cp2y","x0","y0","image","repetition","r0","sWidth","sHeight","dWidth","dHeight","_context","radiusX","radiusY","rotation","counterclockwise","path","fillRule","text","maxWidth","sw","sh","radii","imageData","cpx","cpy","segments","path2d","that","origSetter","methodName","origMethod","ret","prop","node","op","SceneContext","willReadFrequently","fill","grd","hasColor","fillPriority","hasPattern","hasLinearGradient","hasRadialGradient","colorStops","dash","strokeScaleEnabled","_c","blur","offset","scale","ratio","scaleX","scaleY","HitContext","hitStrokeWidth","strokeWidth","_pixelRatio","getDevicePixelRatio","devicePixelRatio","backingStoreRatio","Canvas","config","previousRatio","mimeType","quality","err","SceneCanvas","HitCanvas","DD","flag","elem","endDragBefore","drag","nodesToFireEvents","stage","pos","dragDistance","drawNodes","drawNode","_formatValue","RGBComponent","getNumberValidator","getNumberOrArrayOfNumbersValidator","noOfElements","isNumber","isValidArray","getNumberOrAutoValidator","getStringValidator","getStringOrGradientValidator","isString","isGradient","getNumberArrayValidator","TypedArray","item","getBooleanValidator","getComponentValidator","GET","SET","Factory","constructor","def","validator","after","capitalize","getter","setter","component","basicValidator","oldVal","capitalizedAttr","message","methods","oldMethodName","newMethodName","oldGetter","oldSetter","deprecated","parseCSSFilters","cssFilter","filterRegex","filterName","filterValue","blurRadius","KonvaFilters","brightness","contrast","konvaContrast","ABSOLUTE_OPACITY","ALL_LISTENERS","ABSOLUTE_TRANSFORM","ABSOLUTE_SCALE","CANVAS","CHANGE","CHILDREN","KONVA","LISTENING","MOUSEENTER","MOUSELEAVE","POINTERENTER","POINTERLEAVE","TOUCHENTER","TOUCHLEAVE","SHAPE","SPACE","STAGE","TRANSFORM","UPPER_STAGE","VISIBLE","TRANSFORM_CHANGE_STR","idCounter","Node","privateGetter","cache","name","deps","depsString","dep","scene","filter","hit","conf","rect","drawBorder","hitCanvasPixelRatio","extraPaddingX","extraPaddingY","cachedSceneCanvas","cachedFilterCanvas","sceneContext","bufferCanvas","bufferContext","top","hitCanvas","hitContext","minX","minY","maxX","maxY","trans","transformed","canvasCache","cacheCanvas","filters","cachedCanvas","sceneCanvas","filterCanvas","filterContext","useNativeOnly","finalFilter","evtStr","selectorOrHandler","events","baseEvent","t","event","type","handler","stopNode","targets","parent","ancestors","relativeTo","skipDragCheck","layer","layerUnderDrag","dragSkip","depth","index","nodes","child","addChildren","children","transform","haveCachedParent","absoluteMatrix","absoluteTransform","origTrans","it","change","changeX","changeY","family","theta","zIndex","newContainer","attrs","defaultValue","nonPlainObject","includeSelf","res","ancestor","selectorArr","sel","eventType","bubble","at","transformsEnabled","offsetX","offsetY","skewX","skewY","allListeners","listener","box","resolve","reject","img","blob","size","evtListeners","evtName","newVal","oldName","newName","fullName","names","compareShape","nonBubbling","stopBubble","nodeType","seen","hierarchyEvents","entry","topListeners","selfListeners","list","origLen","liveListeners","pointerId","ap","bubbleEvent","newNodePos","dbf","bounded","draggable","hasDraggingChild","dragElement","isDragging","isReady","margin","screenRect","data","container","className","no","Class","addGetterSetter","Container","filterFunc","findOne","valid","fn","shouldStop","isAbsTransform","callbacks","can","caching","cachedHitCanvas","drawMethod","clipWidth","clipHeight","clipFunc","hasClip","selfCache","clipArgs","clipX","clipY","hasComposition","skipTransform","selfRect","shapes","hasVisible","Captures","SUPPORT_POINTER_EVENTS","getCapturedShape","createEvent","hasPointerCapture","setPointerCapture","releaseCapture","STRING","PX","MOUSEOUT","MOUSEOVER","MOUSEMOVE","MOUSEDOWN","MOUSEUP","POINTERMOVE","POINTERDOWN","POINTERUP","POINTERCANCEL","LOSTPOINTERCAPTURE","POINTEROUT","POINTEROVER","CONTEXTMENU","TOUCHSTART","TOUCHEND","TOUCHMOVE","TOUCHCANCEL","WHEEL","MAX_LAYERS_NUMBER","EVENTS","EVENTS_MAP","getEventType","getEventsMap","checkNoClip","NO_POINTERS_MESSAGE","stages","listeningWindows","listenToWindow","Stage","isLayer","isFastLayer","style","id","layers","content","p","layerCanvas","rest","length","PointerEvents.hasPointerCapture","PointerEvents.setPointerCapture","PointerEvents.releaseCapture","evenType","targetShape","eventsEnabled","triggeredOnShape","isTouch","isTouchPointer","processedShapesIds","PointerEvents.getCapturedShape","differentTarget","wasDragged","listenClick","clickStartShape","clickEndShape","skipPointerUpTrigger","fireDblClick","PointerEvents.createEvent","contentPosition","touch","HAS_SHADOW","SHADOW_RGBA","patternImage","linearGradient","radialGradient","dummyContext","getDummyContext","_fillFunc","_strokeFunc","_fillFuncHit","_strokeFuncHit","_clearHasShadowCache","_clearGetShadowRGBACache","_clearFillPatternCache","_clearLinearGradientCache","_clearRadialGradientCache","Shape","attempts","pattern","rgba","bufferHitCanvas","forceFill","hasFill","hasStroke","isTransparent","hasShadow","strokeForShadow","hasCachedParent","fillRect","fillAndStrokeWidth","fillAndStrokeHeight","applyShadow","shadowOffsetX","shadowOffsetY","preWidth","preHeight","drawFunc","cachingSelf","bc","o","alphaThreshold","hitWidth","hitHeight","hitImageData","hitData","rgbColorKey","BEFORE_DRAW","DRAW","INTERSECTION_OFFSETS","INTERSECTION_OFFSETS_LEN","Layer","_canvas","listening","spiralSearchDistance","continueSearch","intersectionOffset","p3","colorKey","FastLayer","Group","now","Animation","lays","animations","time","anim","layerHash","layersLen","needRedraw","Anim","blacklist","PAUSED","PLAYING","REVERSING","colorAttrs","colorToRGBA","TweenEngine","propFunc","begin","finish","duration","yoyo","Tween","nodeId","easing","Easings","diff","trueEnd","trueStart","endRGBA","tweenId","startRGBA","thisId","params","onFinish","Global","Arc","clockwise","innerRadius","outerRadius","rawAngle","boundLeftRatio","boundRightRatio","boundTopRatio","boundBottomRatio","boundLeft","boundRight","boundTop","boundBottom","tValues","cValues","binomialCoefficients","getCubicArcLength","xs","ys","sum","correctedT","z","BFunc","getQuadraticArcLength","ax","ay","bx","by","A","B","C","k","uuk","bbk","term","xbase","getDerivative","ybase","combined","derivative","vs","_vs","t2length","totalLength","error","step","numIterations","increasedTLength","increasedTError","decreasedTLength","decreasedTError","quadraticAt","p0","mt","getQuadraticExtremaPoints","extrema","axis","cubicAt","getCubicExtremaPoints","discriminant","q","getControlPoints","d01","d12","dSum","fa","fb","p1x","p1y","p2x","p2y","expandPoints","tension","allPoints","cp","getBezierExtremaPoints","Line","onQuadratic","onCubic","closed","tp","bezier","_x0","_y0","firstControlPoints","lastControlPoints","middle","Path","ca","cx","cy","rx","ry","dTheta","psi","fs","inc","dataArray","pathLength","ii","j","P1x","P1y","P2x","P2y","fromX","fromY","run","rise","ix","iy","pRise","pRun","adjustedRun","adjustedRise","pct","P3x","P3y","P4x","P4y","CB1","CB2","CB3","CB4","QB1","QB2","QB3","cosPsi","sinPsi","cs","cc","coords","re","arcParamIndex","jlen","token","parsedArc","parsed","cmd","startX","startY","prevCmd","ctlPtx","ctlPty","idx","psiDeg","xp","yp","lambda","cxp","cyp","vMag","v","vRatio","vAngle","Arrow","PI2","fromTension","lp","lastLength","previous","isDashEnabled","lineRect","Circle","Ellipse","Image","props","hasCornerRadius","cropWidth","cropHeight","onError","ATTR_CHANGE_LIST","CHANGE_KONVA","NONE","UP","RIGHT","DOWN","LEFT","attrChangeListLen","Label","tag","pointerDirection","pointerWidth","pointerHeight","Tag","direction","Rect","RegularPolygon","PIx2","Ring","Sprite","updated","ix4","set","offsets","ix2","animation","Star","numPoints","stringToArray","string","acc","char","array","nextChar","AUTO","CENTER","INHERIT","JUSTIFY","CONTEXT_2D","DASH","TEXT","TEXT_UPPER","TOP","BOTTOM","MIDDLE","NORMAL","PX_SPACE","RTL","WORD","CHAR","ELLIPSIS","_shadowOpacityBuggy","hasShadowOpacityBug","normalizeFontFamily","fontFamily","hasSpace","hasQuotes","checkDefaultFill","Text","textArr","textArrLen","padding","fontSize","lineHeightPx","verticalAlign","alignY","align","totalWidth","letterSpacing","charRenderFunc","textDecoration","underlineOffset","shouldUnderline","shouldLineThrough","translateY","baseline","metrics","ascent","descent","fillStyleBefore","strokeStyleBefore","lineTranslateX","lineTranslateY","lastLine","yOffset","lineWidth","gradient","lineThroughStartX","spacesNumber","li","letter","previousGraphemes","charIndex","fillStyleAfter","strokeStyleAfter","_d","_e","_f","_g","_h","_j","_k","_l","scaleFactor","lines","textWidth","fixedWidth","fixedHeight","maxHeightPx","currentHeightPx","wrap","shouldWrap","wrapAtWord","shouldAddEllipsis","additionalWidth","lineArray","low","high","matchWidth","mid","substr","substrWidth","matchArray","nextIsSpaceOrDash","wrapIndex","lastSpaceIndex","lastDashIndex","hasLine","TextPath","glyphInfo","hasUnderline","hasLineThrough","charArr","chars","fullTextWidth","kerningFunc","kerningAdjustment","offsetToGlyph","charStartPoint","glyphWidth","numberOfSpaces","charEndLength","charEndPoint","kern","midpoint","info","EVENTS_NAME","NODES_RECT","ANGLES","TOUCH_DEVICE","getCursor","anchorName","rotateCursor","ANCHORS_NAMES","getCenter","rotateAroundPoint","angleRad","rotateAroundCenter","deltaRad","center","getSnap","snaps","newRotationRad","tol","snapped","absDiff","activeTransformersCount","Transformer","filteredNodes","onChange","additionalEvents","lastPos","abs","otherNode","otherAbs","rot","relative","absScale","absPos","totalPoints","anchor","self","cursor","back","rotateAnchorAngle","rotateAnchorOffset","dirX","dirY","edgeX","edgeY","sign","endX","endY","hypotenuse","newHypotenuse","anchorNode","pp","oldAbs","newAbs","rotateAnchorAngleRad","newRotation","shiftBehavior","keepProportion","centeredScaling","anchorProjected","comparePoint","reverseX","reverseY","topOffsetX","topOffsetY","bottomOffsetX","bottomOffsetY","newAttrs","prevAutoDraw","oldAttrs","minSize","flipPadding","widthFlip","heightFlip","flip","baseSize","oldTr","newTr","newScaleX","newScaleY","layersToDraw","parentTransform","localTransform","newLocalTransform","enabledAnchors","resizeEnabled","anchorSize","anchors","styleFunc","validateAnchors","Wedge","BlurStack","mul_table","shg_table","filterGaussBlurRGBA","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","Blur","Brighten","Brightness","Contrast","adjust","nPixels","red","green","blue","Emboss","w","strength01","whiteLevel01","directionDeg","blend","strength","bias","dirRad","SCALE","src","lum","Gx","Gy","OFF","clamp8","outGray","oTop","oBot","oL","oR","remap","fromValue","fromMin","fromMax","toMin","toMax","fromRange","toRange","toValue","Enhance","nSubPixels","rMin","rMax","gMin","gMax","bMin","bMax","enhanceAmount","rGoalMax","rGoalMin","gGoalMax","gGoalMin","bGoalMax","bGoalMin","rMid","gMid","bMid","Grayscale","HSL","vsu","vsw","rr","rg","rb","gr","gg","gb","br","bg","bb","HSV","Invert","ToPolar","dst","opt","srcPixels","dstPixels","xSize","ySize","xMid","yMid","rSize","tSize","conversion","sin","cos","FromPolar","phaseShift","Kaleidoscope","xoff","srcPos","dstPos","power","tempCanvas","scratchData","minSectionSize","sectionSize","xStart","xEnd","xDelta","pixelAt","idata","rgbDistance","rgbMean","pTab","backgroundMask","threshold","rgbv_no","rgbv_ne","rgbv_so","rgbv_se","thres","mean","mask","applyMask","erodeMask","weights","side","halfSide","maskResult","so","scy","scx","srcOff","wt","dilateMask","smoothEdgeMask","Mask","Noise","amount","half","Pixelate","pixelSize","nBinsX","nBinsY","xBin","yBin","alpha","xBinStart","xBinEnd","yBinStart","yBinEnd","pixelsInBin","Posterize","levels","RGB","RGBA","ia","Sepia","Solarize","Threshold","level","Core","useHistory","capacity","entries","shallowRef","canUndo","computed","canRedo","current","push","snapshot","label","kept","jumpTo","undo","redo","clear","newId","byte","createInitialState","normaliseState","state","defaults","repaired","isPristine","orientedSize","natural","clampRect","sameRect","a2","b2","mapPointsCW","mapped","i2","mapRectCW","mapAnnotationCW","annotation","rotateCW","oriented","mapAnnotationFlipX","flipHorizontal","sideways","mapAnnotationFlipY","flipVertical","translateAnnotation","duplicateAnnotation","_sfc_main$12","defineComponent","__props","_ctx","_cache","openBlock","createElementBlock","normalizeClass","renderSlot","_export_sfc","sfc","GlassSurface","_sfc_main$11","_hoisted_1$$","_hoisted_2$W","_hoisted_3$S","_hoisted_4$R","_sfc_render$N","$props","$setup","$data","$options","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","BoxShadow","_sfc_main$10","_hoisted_1$_","_hoisted_2$V","_hoisted_3$R","_hoisted_4$Q","_sfc_render$M","CameraIris","_sfc_main$$","_hoisted_1$Z","_hoisted_2$U","_hoisted_3$Q","_hoisted_4$P","_sfc_render$L","CircleOpacity","_sfc_main$_","_hoisted_1$Y","_hoisted_2$T","_hoisted_3$P","_hoisted_4$O","_sfc_render$K","ContrastCircle","_sfc_main$Z","_hoisted_1$X","_hoisted_2$S","_hoisted_3$O","_hoisted_4$N","_sfc_render$J","ImageFilterCenterFocus","_sfc_main$Y","_hoisted_1$W","_hoisted_2$R","_hoisted_3$N","_hoisted_4$M","_sfc_render$I","InvertColors","_sfc_main$X","_hoisted_1$V","_hoisted_2$Q","_hoisted_3$M","_hoisted_4$L","_sfc_render$H","Spotlight","_sfc_main$W","_hoisted_1$U","_hoisted_2$P","_hoisted_3$L","_hoisted_4$K","_sfc_render$G","Thermometer","_sfc_main$V","_hoisted_1$T","_hoisted_2$O","_hoisted_3$K","_hoisted_4$J","_sfc_render$F","WhiteBalanceIridescent","_sfc_main$U","_hoisted_1$S","_hoisted_2$N","_hoisted_3$J","_hoisted_4$I","_sfc_render$E","WhiteBalanceSunny","SNAP_RATIO","defaultOrigin","min","originPosition","origin","snapToOrigin","_hoisted_1$R","_hoisted_2$M","_hoisted_3$I","_sfc_main$T","__emit","emit","originOffset","onInput","input","normalizeStyle","createTextVNode","EditorSlider","_hoisted_1$Q","_hoisted_2$L","_sfc_main$S","IconTab","gtBuilder","getGettextBuilder","gt","FONT_STACKS","DEFAULT_FONT","fontStack","font","REDACT_SHAPES","DEFAULT_REDACT_SHAPE","redactShape","TEXT_ALIGNS","DEFAULT_ALIGN","textAlign","VIEW_MARGIN","PAN_SLACK","FIT_ZOOM","MIN_ZOOM","MAX_ZOOM","ZOOM_SNAP","PINCH_TOLERANCE","WHEEL_LINE","WHEEL_CLAMP","WHEEL_SENSITIVITY","panBounds","visible","clampPan","pan","clampZoom","zoom","crossed","near","anchoredPan","factor","wheelZoomFactor","deltaY","deltaMode","pageHeight","scaled","MODE_DEFAULT_TOOL","EDITOR_CONTEXT","createEditorContext","history","viewZoom","cropChanged","viewPan","viewFit","boundsAt","fit","activeMode","activeTool","mode","panned","watch","tool","provide","useEditorContext","inject","_hoisted_1$P","_hoisted_2$K","_sfc_main$R","adjustments","activeAdjustment","display","select","onAdjustInput","onSliderCommit","Fragment","renderList","adjustment","createVNode","withCtx","createBlock","resolveDynamicComponent","unref","AdjustPanel","_sfc_main$Q","_hoisted_1$O","_hoisted_2$J","_hoisted_3$H","_hoisted_4$H","_sfc_render$D","ArrowTopRight","_sfc_main$P","_hoisted_1$N","_hoisted_2$I","_hoisted_3$G","_hoisted_4$G","_sfc_render$C","EllipseOutline","_sfc_main$O","_hoisted_1$M","_hoisted_2$H","_hoisted_3$F","_hoisted_4$F","_sfc_render$B","FormatText","_sfc_main$N","_hoisted_1$L","_hoisted_2$G","_hoisted_3$E","_hoisted_4$E","_sfc_render$A","Pencil","_sfc_main$M","_hoisted_1$K","_hoisted_2$F","_hoisted_3$D","_hoisted_4$D","_sfc_render$z","RectangleOutline","_sfc_main$L","_hoisted_1$J","_hoisted_2$E","_hoisted_3$C","_hoisted_4$C","_sfc_render$y","VectorLine","useAnnotationColor","recolorable","apply","_hoisted_1$I","_hoisted_2$D","_hoisted_3$B","_hoisted_4$B","FONT_SAMPLE","PREVIEW_CAP","_sfc_main$K","labels","subTools","showStrokeOptions","viewScale","strokePreview","fontPreview","AnnotatePanel","_sfc_main$J","_hoisted_1$H","_hoisted_2$C","_hoisted_3$A","_hoisted_4$A","_sfc_render$x","FlipHorizontal","_sfc_main$I","_hoisted_1$G","_hoisted_2$B","_hoisted_3$z","_hoisted_4$z","_sfc_render$w","FlipVertical","_sfc_main$H","_hoisted_1$F","_hoisted_2$A","_hoisted_3$y","_hoisted_4$y","_sfc_render$v","RotateLeft","_sfc_main$G","_hoisted_1$E","_hoisted_2$z","_hoisted_3$x","_hoisted_4$x","_sfc_render$u","RotateRight","EDITOR_COMMANDS","provideEditorCommands","commands","useEditorCommands","_hoisted_1$D","_hoisted_2$y","_hoisted_3$w","_hoisted_4$w","_sfc_main$F","aspectPresets","cropControls","activeCropControl","hasCropActions","onTransformInput","preset","NcButton","control","CropPanel","FLOOR_AREA","REFINEMENTS","largestGood","smallestBad","paints","area","fits","canvasScaleFor","bad","good","candidate","luma","EXPOSURE_RANGE","TEMPERATURE_RANGE","TINT_RANGE","tone","exposure","temperature","tint","HIGHLIGHTS_RANGE","SHADOWS_RANGE","tonal","highlights","shadows","bright","dark","gain","VIGNETTE_RANGE","VIGNETTE_START","vignette","centreX","centreY","distance","SHARPEN_RANGE","sharpen","stride","centre","channel","neighbours","saturate","gray","warm","cool","fade","luma2","noir","golden","coast","shadow","mist","berry","cinema","balance","luna","jsContent","WorkerWrapper","options","objURL","worker","createImageWorkerClient","pending","nextId","broken","fail","waiting","one","response","ask","request","transfer","blob2","bitmap","steps","client","imageWorker","halves","PREBUILT_LEVELS","halve","prepareLevels","levelFor","drawn","TEXT_EMPHASES","fontStyle","OUTLINE_RATIO","outlineColor","outlineWidth","visibleRect","context2d","supportsContextFilter","contextFilterSupport","contextFilterAvailable","obfuscateRegion","region","small","cutEllipse","patch","redactStrength","redactSceneFunc","deviceWidth","deviceHeight","deviceStrength","pad","readLeft","readTop","readWidth","readHeight","cut","backgroundPadding","MIN_HIT_AREA","hitAreaWidth","buildAnnotationNode","base","shapeWidth","shapeHeight","applyFilters","saturation","presetFilters","cacheFit","thumbnailKey","crop","presetThumbnail","thumb","createScene","viewGroup","contentGroup","imageNode","built","filterKey","imageChanged","nextFilterKey","sourceSize","renderScene","renderToCanvas","maxSize","requested","toImageCoords","pointer","_hoisted_1$C","_sfc_main$E","presets","presetPreviews","setPreset","FilterStrip","_hoisted_1$B","_sfc_main$D","RedactPanel","_hoisted_1$A","_hoisted_2$x","_sfc_main$C","hint","transformHint","selected","SelectPanel","_hoisted_1$z","_sfc_main$B","moreLabel","FALLBACK_STICKERS","frequentStickers","frequent","emojiSearch","emoji","native","DEFAULT_STICKERS","stickers","sticker","NcEmojiPicker","StickerPanel","_sfc_main$A","EditorPanel","_sfc_main$z","_hoisted_1$y","_hoisted_2$w","_hoisted_3$v","_hoisted_4$v","_sfc_render$t","_sfc_main$y","_hoisted_1$x","_hoisted_2$v","_hoisted_3$u","_hoisted_4$u","_sfc_render$s","Crop","_sfc_main$x","_hoisted_1$w","_hoisted_2$u","_hoisted_3$t","_hoisted_4$t","_sfc_render$r","CursorDefaultOutline","_sfc_main$w","_hoisted_1$v","_hoisted_2$t","_hoisted_3$s","_hoisted_4$s","_sfc_render$q","PaletteOutline","_sfc_main$v","_hoisted_1$u","_hoisted_2$s","_hoisted_3$r","_hoisted_4$r","_sfc_render$p","StickerEmoji","_sfc_main$u","_hoisted_1$t","_hoisted_2$r","_hoisted_3$q","_hoisted_4$q","_sfc_render$o","Tune","_hoisted_1$s","_sfc_main$t","modes","EditorSidebar","_sfc_main$s","_hoisted_1$r","_hoisted_2$q","_hoisted_3$p","_hoisted_4$p","_sfc_render$n","Close","_sfc_main$r","_hoisted_1$q","_hoisted_2$p","_hoisted_3$o","_hoisted_4$o","_sfc_render$m","History","_sfc_main$q","_hoisted_1$p","_hoisted_2$o","_hoisted_3$n","_hoisted_4$n","_sfc_render$l","MagnifyMinusOutline","_sfc_main$p","_hoisted_1$o","_hoisted_2$n","_hoisted_3$m","_hoisted_4$m","_sfc_render$k","MagnifyPlusOutline","_sfc_main$o","_hoisted_1$n","_hoisted_2$m","_hoisted_3$l","_hoisted_4$l","_sfc_render$j","Redo","_sfc_main$n","_hoisted_1$m","_hoisted_2$l","_hoisted_3$k","_hoisted_4$k","_sfc_render$i","Restore","_sfc_main$m","_hoisted_1$l","_hoisted_2$k","_hoisted_3$j","_hoisted_4$j","_sfc_render$h","Undo","_sfc_main$l","_hoisted_1$k","_hoisted_2$j","_hoisted_3$i","_hoisted_4$i","_sfc_render$g","ArrowExpand","_sfc_main$k","_hoisted_1$j","_hoisted_2$i","_hoisted_3$h","_hoisted_4$h","_sfc_render$f","BorderOutside","_sfc_main$j","_hoisted_1$i","_hoisted_2$h","_hoisted_3$g","_hoisted_4$g","_sfc_render$e","ContentCopy","_sfc_main$i","_hoisted_1$h","_hoisted_2$g","_hoisted_3$f","_hoisted_4$f","_sfc_render$d","CropFree","_sfc_main$h","_hoisted_1$g","_hoisted_2$f","_hoisted_3$e","_hoisted_4$e","_sfc_render$c","CursorMove","_sfc_main$g","_hoisted_1$f","_hoisted_2$e","_hoisted_3$d","_hoisted_4$d","_sfc_render$b","Delete","_sfc_main$f","_hoisted_1$e","_hoisted_2$d","_hoisted_3$c","_hoisted_4$c","_sfc_render$a","FormatAlignLeft","_sfc_main$e","_hoisted_1$d","_hoisted_2$c","_hoisted_3$b","_hoisted_4$b","_sfc_render$9","FormatBold","_sfc_main$d","_hoisted_1$c","_hoisted_2$b","_hoisted_3$a","_hoisted_4$a","_sfc_render$8","FormatColorHighlight","_sfc_main$c","_hoisted_1$b","_hoisted_2$a","_hoisted_3$9","_hoisted_4$9","_sfc_render$7","FormatFont","_sfc_main$b","_hoisted_1$a","_hoisted_2$9","_hoisted_3$8","_hoisted_4$8","_sfc_render$6","FormatItalic","_sfc_main$a","_hoisted_1$9","_hoisted_2$8","_hoisted_3$7","_hoisted_4$7","_sfc_render$5","FormatStrikethrough","_sfc_main$9","_hoisted_1$8","_hoisted_2$7","_hoisted_3$6","_hoisted_4$6","_sfc_render$4","FormatUnderline","_sfc_main$8","_hoisted_1$7","_hoisted_2$6","_hoisted_3$5","_hoisted_4$5","_sfc_render$3","ImageOutline","_sfc_main$7","_hoisted_1$6","_hoisted_2$5","_hoisted_3$4","_hoisted_4$4","_sfc_render$2","Palette","ICONS","historyIcon","_hoisted_1$5","_hoisted_2$4","_hoisted_3$3","_hoisted_4$3","_sfc_main$6","historySteps","stepZoom","resetZoom","closing","onClose","onCloseAnswer","answer","onRevert","showConfirmation","NcActions","NcActionButton","NcActionSeparator","createSlots","NcLoadingIcon","NcDialog","NcNoteCard","EditorTopBar","_sfc_main$5","_hoisted_1$4","_hoisted_2$3","_hoisted_3$2","_hoisted_4$2","_sfc_render$1","FormatAlignCenter","_sfc_main$4","_hoisted_1$3","_hoisted_2$2","_hoisted_3$1","_hoisted_4$1","_sfc_render","FormatAlignRight","SWITCH_DEFAULTS","useTextStyle","styleable","toggle","fallback","choice","_sfc_main$3","textStyle","META","emphases","_hoisted_1$2","_hoisted_2$1","_sfc_main$2","isText","lift","fonts","ALIGN_META","alignments","alignment","withModifiers","FloatingToolbar","_hoisted_1$1","_sfc_main$1","__expose","inputLabel","ref","useTemplateRef","autosize","element","onPointerDown","focus","onMounted","onBeforeUnmount","onEnter","withDirectives","withKeys","vModelText","TextOverlay","imageSize","needsCors","loadImage","sourceBytes","decodeImage","bytes","canvasToBlob","primaryColor","ambientBackdrop","sample","useAmbient","backdrop","useAnnouncements","modeLabels","annotationCount","historyLength","moved","TEXT_ENTRY","ACTIVATABLE","ownsTextEntry","ownsSpaceKey","NUDGE_KEYS","useEditorShortcuts","nudging","nudgeSelection","onKeydown","meta","onKeyup","converts","convertsToSrgb","DEFAULT_QUALITY","MIN_QUALITY","MAX_QUALITY","painted","useExportImage","exporting","ENCODABLE","sourceFormat","jpegSource","qualityFor","estimated","estimateJpegQuality","carryMetadata","readMetadataSegments","carried","withMetadata","exportImage","encode","wanted","save","useTextEditing","textEdit","startTextEdit","position","existing","confirmTextEdit","edit","trimmed","useWheelControls","dragFrom","pinch","pointers","spaceHeld","toolFreeDrag","panArmed","anchorAt","currentPinch","onWheel","onPointerMove","onPointerUp","DURATION","prefersReducedMotion","pivotOnCenter","playTransition","kind","previousScale","previousOffset","previousOrigin","clampCropBox","oldBox","newBox","keepRatio","bottom","attachCropOverlay","view","toStage","toScene","imageBounds","makeShade","shadeTop","shadeLeft","shadeRight","shadeBottom","shade","cropNode","stageRect","gridLines","clampToImage","sceneRect","updateOverlay","ratioLocked","transformer","setAspect","aspect","coverScale","fitContain","snapAngle","from","to","round","orientImage","full","cover","transformPoints","applyNodeTransform","attachSelection","accent","findAnnotation","findNode","reportRect","syncTransformer","sync","dragAny","onWriteBack","onClick","onDblClick","TOOL_LABELS","DRAG_THRESHOLD","movedEnough","attachPointerTools","active","previewNode","pendingText","deferred","last","constrained","gestureBox","onImage","reachedImage","scenePointer","refreshPreview","discard","beginAnnotation","followLine","raw","onModifier","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_sfc_main","confirmDownscale","megapixels","loadAttempt","root","loaded","errored","containerSize","orientedCanvas","sourceImage","announcement","selectionBox","cropOverlay","selection","detachTool","attached","resizeObserver","pendingTransition","lastView","canvasCursor","showCropped","container2","viewOptions","overlaySize","overlay","toolbarBox","onSave","captureView","commitWithTransition","renderView","renderedOrigin","syncTools","currentOriented","applyCropAspect","refreshOrientedCanvas","seedState","seed","load","attempt","minDimension","onRotateCW","onRotateCCW","onFlipHorizontal","onFlipVertical","onApplyCrop","onDuplicateSelection","copy","onResetCrop","onDeleteSelection","clientWidth","clientHeight","ImageEditor","elementStyle","emit$1","saving","exportOptions","known","axios","etag","showSuccess","logger","showError","onCancel","ImageEditor$1"],"mappings":"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AzqB,GAAcyqB,EAAG,EACjB3X,EAAQ,gBAAgB2X,GAAK,cAAe,EAAG5Y,EAAkB,CAAE,EACnEiB,EAAQ,gBAAgB2X,GAAK,cAAe,EAAG5Y,EAAkB,CAAE,EACnEiB,EAAQ,gBAAgB2X,GAAK,QAAS,EAAG5Y,EAAkB,CAAE,EAC7DiB,EAAQ,gBAAgB2X,GAAK,YAAa,GAAO/X,GAAmB,CAAE,ECtE/D,MAAM4Y,GAAU,CACnB,CAAA,EACA,CAAA,EACA,CACI,mBACA,iBACR,EACI,CACI,EAAG,mBACH,iBACR,EACI,CACI,oBACA,mBACA,mBACA,iBACR,EACI,CACI,EAAG,mBACH,kBACA,kBACA,gBACR,EACI,CACI,kBACA,mBACA,mBACA,kBACA,kBACA,gBACR,EACI,CACI,EAAG,kBACH,mBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,mBACH,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,oBACH,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,kBACA,gBACR,EACI,CACI,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,mBACH,kBACA,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,oBACA,mBACA,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,oBACH,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,kBACA,iBACA,mBACA,iBACR,EACI,CACI,oBACA,mBACA,mBACA,kBACA,oBACA,mBACA,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,oBACH,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,mBACA,kBACA,mBACA,kBACA,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,oBACH,mBACA,oBACA,mBACA,oBACA,mBACA,kBACA,iBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,iBACA,gBACA,mBACA,iBACR,EACI,CACI,oBACA,mBACA,oBACA,mBACA,oBACA,mBACA,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,mBACH,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,oBACA,mBACA,oBACA,mBACA,oBACA,mBACA,kBACA,iBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,EAAG,mBACH,kBACA,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,EACI,CACI,oBACA,mBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,kBACA,iBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACR,CACA,EACaC,GAAU,CACnB,CAAA,EACA,CAAA,EACA,CAAC,EAAK,CAAG,EACT,CACI,kBACA,kBACA,iBACR,EACI,CACI,kBACA,kBACA,mBACA,kBACR,EACI,CACI,kBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,iBACR,EACI,CACI,iBACA,iBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACR,EACI,CACI,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACR,EACI,CACI,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACR,EACI,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,mBACR,EACI,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACR,EACI,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,kBACR,EACI,CACI,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,gBACA,gBACA,mBACA,mBACA,kBACA,kBACA,oBACA,mBACR,EACI,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,mBACR,EACI,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,oBACA,oBACA,oBACA,oBACA,oBACA,mBACR,EACI,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,mBACA,mBACA,kBACA,iBACR,EACI,CACI,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,mBACR,EACI,CACI,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,kBACA,iBACR,CACA,EACaC,GAAuB,CAAC,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,EAAG,CAAC,EAAG,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC5DC,GAAoB,CAACC,EAAIC,EAAI9S,IAAM,CAC5C,IAAI+S,EACAC,EAEJ,MAAMC,EAAIjT,EAAI,EACd+S,EAAM,EACN,QAASrmB,EAAI,EAAGA,EAAI,GAAGA,IACnBsmB,EAAaC,EAAIR,GAAQ,EAAC,EAAE/lB,CAAC,EAAIumB,EACjCF,GAAOL,GAAQ,EAAC,EAAEhmB,CAAC,EAAIwmB,GAAML,EAAIC,EAAIE,CAAU,EAEnD,OAAOC,EAAIF,CACf,EACaI,GAAwB,CAACN,EAAIC,EAAI9S,IAAM,CAC5CA,IAAM,SACNA,EAAI,GAER,MAAMoT,EAAKP,EAAG,CAAC,EAA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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,57,58]} |