Index: imaps-frontend/node_modules/.vite/deps/konva.js.map
===================================================================
--- imaps-frontend/node_modules/.vite/deps/konva.js.map	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
+++ imaps-frontend/node_modules/.vite/deps/konva.js.map	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
@@ -1,7 +1,7 @@
 {
   "version": 3,
-  "sources": ["../../konva/lib/Container.js", "../../konva/lib/Stage.js", "../../konva/lib/Layer.js", "../../konva/lib/FastLayer.js", "../../konva/lib/Group.js", "../../konva/lib/Animation.js", "../../konva/lib/Tween.js", "../../konva/lib/_CoreInternals.js", "../../konva/lib/shapes/Arc.js", "../../konva/lib/shapes/Line.js", "../../konva/lib/BezierFunctions.js", "../../konva/lib/shapes/Path.js", "../../konva/lib/shapes/Arrow.js", "../../konva/lib/shapes/Circle.js", "../../konva/lib/shapes/Ellipse.js", "../../konva/lib/shapes/Image.js", "../../konva/lib/shapes/Label.js", "../../konva/lib/shapes/RegularPolygon.js", "../../konva/lib/shapes/Sprite.js", "../../konva/lib/shapes/Star.js", "../../konva/lib/shapes/Text.js", "../../konva/lib/shapes/TextPath.js", "../../konva/lib/shapes/Transformer.js", "../../konva/lib/shapes/Wedge.js", "../../konva/lib/filters/Blur.js", "../../konva/lib/filters/Brighten.js", "../../konva/lib/filters/Contrast.js", "../../konva/lib/filters/Emboss.js", "../../konva/lib/filters/Enhance.js", "../../konva/lib/filters/Grayscale.js", "../../konva/lib/filters/HSL.js", "../../konva/lib/filters/HSV.js", "../../konva/lib/filters/Invert.js", "../../konva/lib/filters/Kaleidoscope.js", "../../konva/lib/filters/Mask.js", "../../konva/lib/filters/Noise.js", "../../konva/lib/filters/Pixelate.js", "../../konva/lib/filters/Posterize.js", "../../konva/lib/filters/RGB.js", "../../konva/lib/filters/RGBA.js", "../../konva/lib/filters/Sepia.js", "../../konva/lib/filters/Solarize.js", "../../konva/lib/filters/Threshold.js", "../../konva/lib/_FullInternals.js", "../../konva/lib/index.js"],
-  "sourcesContent": ["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Container = void 0;\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nclass Container extends Node_1.Node {\n    constructor() {\n        super(...arguments);\n        this.children = [];\n    }\n    getChildren(filterFunc) {\n        if (!filterFunc) {\n            return this.children || [];\n        }\n        const children = this.children || [];\n        var results = [];\n        children.forEach(function (child) {\n            if (filterFunc(child)) {\n                results.push(child);\n            }\n        });\n        return results;\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 (var 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        var result = this._generalFind(selector, true);\n        return result.length > 0 ? result[0] : undefined;\n    }\n    _generalFind(selector, findOne) {\n        var 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        var obj = Node_1.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        var 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        var node = Node_1.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        var arr = [];\n        this.find('Shape').forEach((shape) => {\n            if (shape.isVisible() && shape.intersects(pos)) {\n                arr.push(shape);\n            }\n        });\n        return arr;\n    }\n    _clearSelfAndDescendantCache(attr) {\n        var _a;\n        super._clearSelfAndDescendantCache(attr);\n        if (this.isCached()) {\n            return;\n        }\n        (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n            node._clearSelfAndDescendantCache(attr);\n        });\n    }\n    _setChildrenIndices() {\n        var _a;\n        (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child, n) {\n            child.index = n;\n        });\n        this._requestDraw();\n    }\n    drawScene(can, top, bufferCanvas) {\n        var layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n        var caching = canvas && canvas.isCache;\n        if (!this.isVisible() && !caching) {\n            return this;\n        }\n        if (cachedSceneCanvas) {\n            context.save();\n            var 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        var layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n        if (cachedHitCanvas) {\n            context.save();\n            var m = this.getAbsoluteTransform(top).getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n            this._drawCachedHitCanvas(context);\n            context.restore();\n        }\n        else {\n            this._drawChildren('drawHit', canvas, top);\n        }\n        return this;\n    }\n    _drawChildren(drawMethod, canvas, top, bufferCanvas) {\n        var _a;\n        var 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            var transform = this.getAbsoluteTransform(top);\n            var 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                var clipX = this.clipX();\n                var 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        var 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        var skipTransform = config.skipTransform;\n        var relativeTo = config.relativeTo;\n        var minX, minY, maxX, maxY;\n        var selfRect = {\n            x: Infinity,\n            y: Infinity,\n            width: 0,\n            height: 0,\n        };\n        var that = this;\n        (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n            if (!child.visible()) {\n                return;\n            }\n            var 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        var shapes = this.find('Shape');\n        var hasVisible = false;\n        for (var i = 0; i < shapes.length; i++) {\n            var 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}\nexports.Container = Container;\nFactory_1.Factory.addComponentsGetterSetter(Container, 'clip', [\n    'x',\n    'y',\n    'width',\n    'height',\n]);\nFactory_1.Factory.addGetterSetter(Container, 'clipX', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipY', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipWidth', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipHeight', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipFunc');\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Stage = exports.stages = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nconst Canvas_1 = require(\"./Canvas\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\nvar 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    [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 Global_1.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_1.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);`;\nexports.stages = [];\nclass Stage extends Container_1.Container {\n    constructor(config) {\n        super(checkNoClip(config));\n        this._pointerPositions = [];\n        this._changedPointerPositions = [];\n        this._buildDOM();\n        this._bindContentEvents();\n        exports.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_1.Util.throw('You may only add layers to the stage.');\n        }\n    }\n    _checkVisibility() {\n        if (!this.content) {\n            return;\n        }\n        const style = this.visible() ? '' : 'none';\n        this.content.style.display = style;\n    }\n    setContainer(container) {\n        if (typeof container === STRING) {\n            if (container.charAt(0) === '.') {\n                var className = container.slice(1);\n                container = document.getElementsByClassName(className)[0];\n            }\n            else {\n                var id;\n                if (container.charAt(0) !== '#') {\n                    id = container;\n                }\n                else {\n                    id = container.slice(1);\n                }\n                container = document.getElementById(id);\n            }\n            if (!container) {\n                throw 'Can not find container in document with id ' + id;\n            }\n        }\n        this._setAttr('container', container);\n        if (this.content) {\n            if (this.content.parentElement) {\n                this.content.parentElement.removeChild(this.content);\n            }\n            container.appendChild(this.content);\n        }\n        return this;\n    }\n    shouldDrawHit() {\n        return true;\n    }\n    clear() {\n        var layers = this.children, len = layers.length, n;\n        for (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_1.Container.prototype.clone.call(this, obj);\n    }\n    destroy() {\n        super.destroy();\n        var content = this.content;\n        if (content && Util_1.Util._isInDocument(content)) {\n            this.container().removeChild(content);\n        }\n        var index = exports.stages.indexOf(this);\n        if (index > -1) {\n            exports.stages.splice(index, 1);\n        }\n        Util_1.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_1.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        var canvas = new Canvas_1.SceneCanvas({\n            width: config.width,\n            height: config.height,\n            pixelRatio: config.pixelRatio || 1,\n        });\n        var _context = canvas.getContext()._context;\n        var 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            var 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        var layers = this.children, len = layers.length, end = len - 1, n;\n        for (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        var width = this.width();\n        var height = this.height();\n        if (this.content) {\n            this.content.style.width = width + PX;\n            this.content.style.height = height + PX;\n        }\n        this.bufferCanvas.setSize(width, height);\n        this.bufferHitCanvas.setSize(width, height);\n        this.children.forEach((layer) => {\n            layer.setSize({ width, height });\n            layer.draw();\n        });\n    }\n    add(layer, ...rest) {\n        if (arguments.length > 1) {\n            for (var i = 0; i < arguments.length; i++) {\n                this.add(arguments[i]);\n            }\n            return this;\n        }\n        super.add(layer);\n        var length = this.children.length;\n        if (length > MAX_LAYERS_NUMBER) {\n            Util_1.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 (Global_1.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 (!Global_1.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        var targetShape = this._getTargetShape(eventType);\n        var eventsEnabled = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || Global_1.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        var triggeredOnShape = false;\n        this._changedPointerPositions.forEach((pos) => {\n            var shape = this.getIntersection(pos);\n            DragAndDrop_1.DD.justDragged = false;\n            Global_1.Konva['_' + eventType + 'ListenClick'] = true;\n            if (!shape || !shape.isListening()) {\n                this[eventType + 'ClickStartShape'] = undefined;\n                return;\n            }\n            if (Global_1.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        if (Global_1.Konva.isDragging() && DragAndDrop_1.DD.node.preventDefault() && evt.cancelable) {\n            evt.preventDefault();\n        }\n        this.setPointersPositions(evt);\n        var eventsEnabled = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || Global_1.Konva.hitOnDragEnabled;\n        if (!eventsEnabled) {\n            return;\n        }\n        var processedShapesIds = {};\n        let triggeredOnShape = false;\n        var 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            var differentTarget = targetShape !== shape;\n            if (differentTarget && targetShape) {\n                targetShape._fireAndBubble(events.pointerout, { ...event }, shape);\n                targetShape._fireAndBubble(events.pointerleave, { ...event }, shape);\n            }\n            if (shape) {\n                if (processedShapesIds[shape._id]) {\n                    return;\n                }\n                processedShapesIds[shape._id] = true;\n            }\n            if (shape && shape.isListening()) {\n                triggeredOnShape = true;\n                if (differentTarget) {\n                    shape._fireAndBubble(events.pointerover, { ...event }, targetShape);\n                    shape._fireAndBubble(events.pointerenter, { ...event }, targetShape);\n                    this[eventType + 'targetShape'] = shape;\n                }\n                shape._fireAndBubble(events.pointermove, { ...event });\n            }\n            else {\n                if (targetShape) {\n                    this._fire(events.pointerover, {\n                        evt: evt,\n                        target: this,\n                        currentTarget: this,\n                        pointerId,\n                    });\n                    this[eventType + 'targetShape'] = null;\n                }\n            }\n        });\n        if (!triggeredOnShape) {\n            this._fire(events.pointermove, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n                pointerId: this._changedPointerPositions[0].id,\n            });\n        }\n    }\n    _pointerup(evt) {\n        const events = getEventsMap(evt.type);\n        const eventType = getEventType(evt.type);\n        if (!events) {\n            return;\n        }\n        this.setPointersPositions(evt);\n        const clickStartShape = this[eventType + 'ClickStartShape'];\n        const clickEndShape = this[eventType + 'ClickEndShape'];\n        var processedShapesIds = {};\n        let triggeredOnShape = 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 (Global_1.Konva['_' + eventType + 'InDblClickWindow']) {\n                fireDblClick = true;\n                clearTimeout(this[eventType + 'DblTimeout']);\n            }\n            else if (!DragAndDrop_1.DD.justDragged) {\n                Global_1.Konva['_' + eventType + 'InDblClickWindow'] = true;\n                clearTimeout(this[eventType + 'DblTimeout']);\n            }\n            this[eventType + 'DblTimeout'] = setTimeout(function () {\n                Global_1.Konva['_' + eventType + 'InDblClickWindow'] = false;\n            }, Global_1.Konva.dblClickWindow);\n            if (shape && shape.isListening()) {\n                triggeredOnShape = true;\n                this[eventType + 'ClickEndShape'] = shape;\n                shape._fireAndBubble(events.pointerup, { ...event });\n                if (Global_1.Konva['_' + eventType + 'ListenClick'] &&\n                    clickStartShape &&\n                    clickStartShape === shape) {\n                    shape._fireAndBubble(events.pointerclick, { ...event });\n                    if (fireDblClick && clickEndShape && clickEndShape === shape) {\n                        shape._fireAndBubble(events.pointerdblclick, { ...event });\n                    }\n                }\n            }\n            else {\n                this[eventType + 'ClickEndShape'] = null;\n                if (Global_1.Konva['_' + eventType + 'ListenClick']) {\n                    this._fire(events.pointerclick, {\n                        evt: evt,\n                        target: this,\n                        currentTarget: this,\n                        pointerId,\n                    });\n                }\n                if (fireDblClick) {\n                    this._fire(events.pointerdblclick, {\n                        evt: evt,\n                        target: this,\n                        currentTarget: this,\n                        pointerId,\n                    });\n                }\n            }\n        });\n        if (!triggeredOnShape) {\n            this._fire(events.pointerup, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n                pointerId: this._changedPointerPositions[0].id,\n            });\n        }\n        Global_1.Konva['_' + eventType + 'ListenClick'] = false;\n        if (evt.cancelable && eventType !== 'touch') {\n            evt.preventDefault();\n        }\n    }\n    _contextmenu(evt) {\n        this.setPointersPositions(evt);\n        var 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        var 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        var contentPosition = this._getContentPosition(), 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_1.Util._getFirstPointerId(evt) }];\n            this._changedPointerPositions = [\n                { x, y, id: Util_1.Util._getFirstPointerId(evt) },\n            ];\n        }\n    }\n    _setPointerPosition(evt) {\n        Util_1.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        var 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 Canvas_1.SceneCanvas({\n            width: this.width(),\n            height: this.height(),\n        });\n        this.bufferHitCanvas = new Canvas_1.HitCanvas({\n            pixelRatio: 1,\n            width: this.width(),\n            height: this.height(),\n        });\n        if (!Global_1.Konva.isBrowser) {\n            return;\n        }\n        var container = this.container();\n        if (!container) {\n            throw 'Stage has no container. A container is required.';\n        }\n        container.innerHTML = '';\n        this.content = document.createElement('div');\n        this.content.style.position = 'relative';\n        this.content.style.userSelect = 'none';\n        this.content.className = 'konvajs-content';\n        this.content.setAttribute('role', 'presentation');\n        container.appendChild(this.content);\n        this._resizeDOM();\n    }\n    cache() {\n        Util_1.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}\nexports.Stage = Stage;\nStage.prototype.nodeType = STAGE;\n(0, Global_2._registerNode)(Stage);\nFactory_1.Factory.addGetterSetter(Stage, 'container');\nif (Global_1.Konva.isBrowser) {\n    document.addEventListener('visibilitychange', () => {\n        exports.stages.forEach((stage) => {\n            stage.batchDraw();\n        });\n    });\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Layer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Node_1 = require(\"./Node\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Validators_1 = require(\"./Validators\");\nconst Shape_1 = require(\"./Shape\");\nconst Global_1 = require(\"./Global\");\nvar HASH = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n    { x: 0, y: 0 },\n    { x: -1, y: -1 },\n    { x: 1, y: -1 },\n    { x: 1, y: 1 },\n    { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nclass Layer extends Container_1.Container {\n    constructor(config) {\n        super(config);\n        this.canvas = new Canvas_1.SceneCanvas();\n        this.hitCanvas = new Canvas_1.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        var 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_1.Node.prototype.moveToTop.call(this);\n        var 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        var moved = Node_1.Node.prototype.moveUp.call(this);\n        if (!moved) {\n            return false;\n        }\n        var 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_1.Node.prototype.moveDown.call(this)) {\n            var stage = this.getStage();\n            if (stage) {\n                var 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_1.Node.prototype.moveToBottom.call(this)) {\n            var stage = this.getStage();\n            if (stage) {\n                var 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        var _canvas = this.getNativeCanvasElement();\n        Node_1.Node.prototype.remove.call(this);\n        if (_canvas && _canvas.parentNode && Util_1.Util._isInDocument(_canvas)) {\n            _canvas.parentNode.removeChild(_canvas);\n        }\n        return this;\n    }\n    getStage() {\n        return this.parent;\n    }\n    setSize({ width, height }) {\n        this.canvas.setSize(width, height);\n        this.hitCanvas.setSize(width, height);\n        this._setSmoothEnabled();\n        return this;\n    }\n    _validateAdd(child) {\n        var type = child.getType();\n        if (type !== 'Group' && type !== 'Shape') {\n            Util_1.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_1.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_1.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_1.Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n    }\n    batchDraw() {\n        if (!this._waitingForDraw) {\n            this._waitingForDraw = true;\n            Util_1.Util.requestAnimFrame(() => {\n                this.draw();\n                this._waitingForDraw = false;\n            });\n        }\n        return this;\n    }\n    getIntersection(pos) {\n        if (!this.isListening() || !this.isVisible()) {\n            return null;\n        }\n        var spiralSearchDistance = 1;\n        var continueSearch = false;\n        while (true) {\n            for (let i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n                const intersectionOffset = INTERSECTION_OFFSETS[i];\n                const obj = this._getIntersection({\n                    x: pos.x + intersectionOffset.x * spiralSearchDistance,\n                    y: pos.y + intersectionOffset.y * spiralSearchDistance,\n                });\n                const shape = obj.shape;\n                if (shape) {\n                    return shape;\n                }\n                continueSearch = !!obj.antialiased;\n                if (!obj.antialiased) {\n                    break;\n                }\n            }\n            if (continueSearch) {\n                spiralSearchDistance += 1;\n            }\n            else {\n                return null;\n            }\n        }\n    }\n    _getIntersection(pos) {\n        const ratio = this.hitCanvas.pixelRatio;\n        const p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n        const p3 = p[3];\n        if (p3 === 255) {\n            const colorKey = Util_1.Util._rgbToHex(p[0], p[1], p[2]);\n            const shape = Shape_1.shapes[HASH + colorKey];\n            if (shape) {\n                return {\n                    shape: shape,\n                };\n            }\n            return {\n                antialiased: true,\n            };\n        }\n        else if (p3 > 0) {\n            return {\n                antialiased: true,\n            };\n        }\n        return {};\n    }\n    drawScene(can, top) {\n        var 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_1.Container.prototype.drawScene.call(this, canvas, top);\n        this._fire(DRAW, {\n            node: this,\n        });\n        return this;\n    }\n    drawHit(can, top) {\n        var layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n        if (layer && layer.clearBeforeDraw()) {\n            layer.getHitCanvas().getContext().clear();\n        }\n        Container_1.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_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n        this.listening(val);\n    }\n    getHitGraphEnabled(val) {\n        Util_1.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        var parent = this.parent;\n        var 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_1.Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);\n        return super.destroy();\n    }\n}\nexports.Layer = Layer;\nLayer.prototype.nodeType = 'Layer';\n(0, Global_1._registerNode)(Layer);\nFactory_1.Factory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory_1.Factory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory_1.Factory.addGetterSetter(Layer, 'hitGraphEnabled', true, (0, Validators_1.getBooleanValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FastLayer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Layer_1 = require(\"./Layer\");\nconst Global_1 = require(\"./Global\");\nclass FastLayer extends Layer_1.Layer {\n    constructor(attrs) {\n        super(attrs);\n        this.listening(false);\n        Util_1.Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n    }\n}\nexports.FastLayer = FastLayer;\nFastLayer.prototype.nodeType = 'FastLayer';\n(0, Global_1._registerNode)(FastLayer);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Group = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nclass Group extends Container_1.Container {\n    _validateAdd(child) {\n        var type = child.getType();\n        if (type !== 'Group' && type !== 'Shape') {\n            Util_1.Util.throw('You may only add groups and shapes to groups.');\n        }\n    }\n}\nexports.Group = Group;\nGroup.prototype.nodeType = 'Group';\n(0, Global_1._registerNode)(Group);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Animation = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst now = (function () {\n    if (Global_1.glob.performance && Global_1.glob.performance.now) {\n        return function () {\n            return Global_1.glob.performance.now();\n        };\n    }\n    return function () {\n        return new Date().getTime();\n    };\n})();\nclass 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 (let 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_1.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_1.Util.requestAnimFrame(this._animationLoop);\n        }\n    }\n}\nexports.Animation = Animation;\nAnimation.animations = [];\nAnimation.animIdCounter = 0;\nAnimation.animRunning = false;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Easings = exports.Tween = void 0;\nconst Util_1 = require(\"./Util\");\nconst Animation_1 = require(\"./Animation\");\nconst Node_1 = require(\"./Node\");\nconst Global_1 = require(\"./Global\");\nvar blacklist = {\n    node: 1,\n    duration: 1,\n    easing: 1,\n    onFinish: 1,\n    yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, idCounter = 0, colorAttrs = ['fill', 'stroke', 'shadowColor'];\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        var 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        var 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}\nclass Tween {\n    constructor(config) {\n        var that = this, node = config.node, nodeId = node._id, duration, easing = config.easing || exports.Easings.Linear, yoyo = !!config.yoyo, 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        var layers = node.getLayer() ||\n            (node instanceof Global_1.Konva['Stage'] ? node.getLayers() : null);\n        if (!layers) {\n            Util_1.Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n        }\n        this.anim = new Animation_1.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        var node = this.node, nodeId = node._id, start, diff, tweenId, n, len, trueEnd, trueStart, endRGBA;\n        tweenId = Tween.tweens[nodeId][key];\n        if (tweenId) {\n            delete Tween.attrs[nodeId][tweenId][key];\n        }\n        start = node.getAttr(key);\n        if (Util_1.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_1.Util._prepareArrayForTween(start, end, node.closed());\n                }\n                else {\n                    trueEnd = end;\n                    end = Util_1.Util._prepareArrayForTween(end, start, node.closed());\n                }\n            }\n            if (key.indexOf('fill') === 0) {\n                for (n = 0; n < len; n++) {\n                    if (n % 2 === 0) {\n                        diff.push(end[n] - start[n]);\n                    }\n                    else {\n                        var startRGBA = Util_1.Util.colorToRGBA(start[n]);\n                        endRGBA = Util_1.Util.colorToRGBA(end[n]);\n                        start[n] = startRGBA;\n                        diff.push({\n                            r: endRGBA.r - startRGBA.r,\n                            g: endRGBA.g - startRGBA.g,\n                            b: endRGBA.b - startRGBA.b,\n                            a: endRGBA.a - startRGBA.a,\n                        });\n                    }\n                }\n            }\n            else {\n                for (n = 0; n < len; n++) {\n                    diff.push(end[n] - start[n]);\n                }\n            }\n        }\n        else if (colorAttrs.indexOf(key) !== -1) {\n            start = Util_1.Util.colorToRGBA(start);\n            endRGBA = Util_1.Util.colorToRGBA(end);\n            diff = {\n                r: endRGBA.r - start.r,\n                g: endRGBA.g - start.g,\n                b: endRGBA.b - start.b,\n                a: endRGBA.a - start.a,\n            };\n        }\n        else {\n            diff = end - start;\n        }\n        Tween.attrs[nodeId][this._id][key] = {\n            start: start,\n            diff: diff,\n            end: end,\n            trueEnd: trueEnd,\n            trueStart: trueStart,\n        };\n        Tween.tweens[nodeId][key] = this._id;\n    }\n    _tweenFunc(i) {\n        var node = this.node, attrs = Tween.attrs[node._id][this._id], 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_1.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            var node = this.node;\n            var 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            var node = this.node;\n            var 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        var nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId], key;\n        this.pause();\n        for (key in attrs) {\n            delete Tween.tweens[nodeId][key];\n        }\n        delete Tween.attrs[nodeId][thisId];\n    }\n}\nexports.Tween = Tween;\nTween.attrs = {};\nTween.tweens = {};\nNode_1.Node.prototype.to = function (params) {\n    var onFinish = params.onFinish;\n    params.node = this;\n    params.onFinish = function () {\n        this.destroy();\n        if (onFinish) {\n            onFinish();\n        }\n    };\n    var tween = new Tween(params);\n    tween.play();\n};\nexports.Easings = {\n    BackEaseIn(t, b, c, d) {\n        var s = 1.70158;\n        return c * (t /= d) * t * ((s + 1) * t - s) + b;\n    },\n    BackEaseOut(t, b, c, d) {\n        var 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        var 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        var 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        var 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        var 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 - exports.Easings.BounceEaseOut(d - t, 0, c, d) + b;\n    },\n    BounceEaseInOut(t, b, c, d) {\n        if (t < d / 2) {\n            return exports.Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n        }\n        else {\n            return exports.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", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Node_1 = require(\"./Node\");\nconst Container_1 = require(\"./Container\");\nconst Stage_1 = require(\"./Stage\");\nconst Layer_1 = require(\"./Layer\");\nconst FastLayer_1 = require(\"./FastLayer\");\nconst Group_1 = require(\"./Group\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Shape_1 = require(\"./Shape\");\nconst Animation_1 = require(\"./Animation\");\nconst Tween_1 = require(\"./Tween\");\nconst Context_1 = require(\"./Context\");\nconst Canvas_1 = require(\"./Canvas\");\nexports.Konva = Util_1.Util._assign(Global_1.Konva, {\n    Util: Util_1.Util,\n    Transform: Util_1.Transform,\n    Node: Node_1.Node,\n    Container: Container_1.Container,\n    Stage: Stage_1.Stage,\n    stages: Stage_1.stages,\n    Layer: Layer_1.Layer,\n    FastLayer: FastLayer_1.FastLayer,\n    Group: Group_1.Group,\n    DD: DragAndDrop_1.DD,\n    Shape: Shape_1.Shape,\n    shapes: Shape_1.shapes,\n    Animation: Animation_1.Animation,\n    Tween: Tween_1.Tween,\n    Easings: Tween_1.Easings,\n    Context: Context_1.Context,\n    Canvas: Canvas_1.Canvas,\n});\nexports.default = exports.Konva;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arc = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Arc extends Shape_1.Shape {\n    _sceneFunc(context) {\n        var angle = Global_1.Konva.getAngle(this.angle()), clockwise = this.clockwise();\n        context.beginPath();\n        context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n        context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    getWidth() {\n        return this.outerRadius() * 2;\n    }\n    getHeight() {\n        return this.outerRadius() * 2;\n    }\n    setWidth(width) {\n        this.outerRadius(width / 2);\n    }\n    setHeight(height) {\n        this.outerRadius(height / 2);\n    }\n    getSelfRect() {\n        const innerRadius = this.innerRadius();\n        const outerRadius = this.outerRadius();\n        const clockwise = this.clockwise();\n        const angle = Global_1.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}\nexports.Arc = Arc;\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_2._registerNode)(Arc);\nFactory_1.Factory.addGetterSetter(Arc, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'clockwise', false, (0, Validators_1.getBooleanValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Line = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n    var d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n    return [p1x, p1y, p2x, p2y];\n}\nfunction expandPoints(p, tension) {\n    var len = p.length, allPoints = [], n, cp;\n    for (n = 2; n < len - 2; n += 2) {\n        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}\nclass Line extends Shape_1.Shape {\n    constructor(config) {\n        super(config);\n        this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n            this._clearCache('tensionPoints');\n        });\n    }\n    _sceneFunc(context) {\n        var points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier(), tp, len, n;\n        if (!length) {\n            return;\n        }\n        context.beginPath();\n        context.moveTo(points[0], points[1]);\n        if (tension !== 0 && length > 4) {\n            tp = this.getTensionPoints();\n            len = tp.length;\n            n = closed ? 0 : 4;\n            if (!closed) {\n                context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\n            }\n            while (n < len - 2) {\n                context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\n            }\n            if (!closed) {\n                context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n            }\n        }\n        else if (bezier) {\n            n = 2;\n            while (n < length) {\n                context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n            }\n        }\n        else {\n            for (n = 2; n < length; n += 2) {\n                context.lineTo(points[n], points[n + 1]);\n            }\n        }\n        if (closed) {\n            context.closePath();\n            context.fillStrokeShape(this);\n        }\n        else {\n            context.strokeShape(this);\n        }\n    }\n    getTensionPoints() {\n        return this._getCache('tensionPoints', this._getTensionPoints);\n    }\n    _getTensionPoints() {\n        if (this.closed()) {\n            return this._getTensionPointsClosed();\n        }\n        else {\n            return expandPoints(this.points(), this.tension());\n        }\n    }\n    _getTensionPointsClosed() {\n        var 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        var points = this.points();\n        if (points.length < 4) {\n            return {\n                x: points[0] || 0,\n                y: points[1] || 0,\n                width: 0,\n                height: 0,\n            };\n        }\n        if (this.tension() !== 0) {\n            points = [\n                points[0],\n                points[1],\n                ...this._getTensionPoints(),\n                points[points.length - 2],\n                points[points.length - 1],\n            ];\n        }\n        else {\n            points = this.points();\n        }\n        var minX = points[0];\n        var maxX = points[0];\n        var minY = points[1];\n        var maxY = points[1];\n        var x, y;\n        for (var 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}\nexports.Line = Line;\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\n(0, Global_1._registerNode)(Line);\nFactory_1.Factory.addGetterSetter(Line, 'closed', false);\nFactory_1.Factory.addGetterSetter(Line, 'bezier', false);\nFactory_1.Factory.addGetterSetter(Line, 'tension', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Line, 'points', [], (0, Validators_1.getNumberArrayValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.t2length = exports.getQuadraticArcLength = exports.getCubicArcLength = exports.binomialCoefficients = exports.cValues = exports.tValues = void 0;\nexports.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];\nexports.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];\nexports.binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\nconst getCubicArcLength = (xs, ys, t) => {\n    let z;\n    let sum;\n    let correctedT;\n    const n = 20;\n    z = t / 2;\n    sum = 0;\n    for (let i = 0; i < n; i++) {\n        correctedT = z * exports.tValues[n][i] + z;\n        sum += exports.cValues[n][i] * BFunc(xs, ys, correctedT);\n    }\n    return z * sum;\n};\nexports.getCubicArcLength = getCubicArcLength;\nconst 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};\nexports.getQuadraticArcLength = getQuadraticArcLength;\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                exports.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};\nconst 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};\nexports.t2length = t2length;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Path = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst BezierFunctions_1 = require(\"../BezierFunctions\");\nclass Path extends Shape_1.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        var ca = this.dataArray;\n        context.beginPath();\n        var isClosed = false;\n        for (var n = 0; n < ca.length; n++) {\n            var c = ca[n].command;\n            var 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                    var 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                    var r = rx > ry ? rx : ry;\n                    var scaleX = rx > ry ? 1 : rx / ry;\n                    var 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        var points = [];\n        this.dataArray.forEach(function (data) {\n            if (data.command === 'A') {\n                var start = data.points[4];\n                var dTheta = data.points[5];\n                var end = data.points[4] + dTheta;\n                var inc = Math.PI / 180.0;\n                if (Math.abs(start - end) < inc) {\n                    inc = Math.abs(start - end);\n                }\n                if (dTheta < 0) {\n                    for (let t = start - inc; t > end; t -= inc) {\n                        const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n                        points.push(point.x, point.y);\n                    }\n                }\n                else {\n                    for (let t = start + inc; t < end; t += inc) {\n                        const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n                        points.push(point.x, point.y);\n                    }\n                }\n            }\n            else if (data.command === 'C') {\n                for (let t = 0.0; t <= 1; t += 0.01) {\n                    const point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\n                    points.push(point.x, point.y);\n                }\n            }\n            else {\n                points = points.concat(data.points);\n            }\n        });\n        var minX = points[0];\n        var maxX = points[0];\n        var minY = points[1];\n        var maxY = points[1];\n        var x, y;\n        for (var 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 (var i = 0; i < dataArray.length; ++i) {\n            pathLength += dataArray[i].pathLength;\n        }\n        return pathLength;\n    }\n    static getPointAtLengthOfDataArray(length, dataArray) {\n        var point, 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            point = dataArray[i - 1].points.slice(-2);\n            return {\n                x: point[0],\n                y: point[1],\n            };\n        }\n        if (length < 0.01) {\n            point = dataArray[i].points.slice(0, 2);\n            return {\n                x: point[0],\n                y: point[1],\n            };\n        }\n        var cp = dataArray[i];\n        var 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((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n                    return (0, BezierFunctions_1.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((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n                    return (0, BezierFunctions_1.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                var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6];\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        var x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n        var y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n        return {\n            x: x,\n            y: y,\n        };\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        var x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n        var y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n        return {\n            x: x,\n            y: y,\n        };\n    }\n    static getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n        var cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\n        var 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        var cs = data;\n        var 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 (var n = 0; n < cc.length; n++) {\n            cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n        }\n        var arr = cs.split('|');\n        var ca = [];\n        var coords = [];\n        var cpx = 0;\n        var cpy = 0;\n        var re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n        var match;\n        for (n = 1; n < arr.length; n++) {\n            var str = arr[n];\n            var 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            var p = [];\n            for (var j = 0, jlen = coords.length; j < jlen; j++) {\n                if (coords[j] === '00') {\n                    p.push(0, 0);\n                    continue;\n                }\n                var parsed = parseFloat(coords[j]);\n                if (!isNaN(parsed)) {\n                    p.push(parsed);\n                }\n                else {\n                    p.push(0);\n                }\n            }\n            while (p.length > 0) {\n                if (isNaN(p[0])) {\n                    break;\n                }\n                var cmd = '';\n                var points = [];\n                var startX = cpx, startY = cpy;\n                var prevCmd, ctlPtx, ctlPty;\n                var 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                        var dx = p.shift();\n                        var 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 (var 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        var len, p1, p2, t;\n        var path = Path;\n        switch (cmd) {\n            case 'L':\n                return path.getLineLength(x, y, points[0], points[1]);\n            case 'C':\n                return (0, BezierFunctions_1.getCubicArcLength)([x, points[0], points[2], points[4]], [y, points[1], points[3], points[5]], 1);\n            case 'Q':\n                return (0, BezierFunctions_1.getQuadraticArcLength)([x, points[0], points[2]], [y, points[1], points[3]], 1);\n            case 'A':\n                len = 0.0;\n                var start = points[4];\n                var dTheta = points[5];\n                var end = points[4] + dTheta;\n                var 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        var psi = psiDeg * (Math.PI / 180.0);\n        var xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n        var yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n            (Math.cos(psi) * (y1 - y2)) / 2.0;\n        var 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        var 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        var cxp = (f * rx * yp) / ry;\n        var cyp = (f * -ry * xp) / rx;\n        var cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n        var cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n        var vMag = function (v) {\n            return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n        };\n        var vRatio = function (u, v) {\n            return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n        };\n        var vAngle = function (u, v) {\n            return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n        };\n        var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n        var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n        var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n        var 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}\nexports.Path = Path;\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\n(0, Global_1._registerNode)(Path);\nFactory_1.Factory.addGetterSetter(Path, 'data');\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arrow = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Line_1 = require(\"./Line\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst Path_1 = require(\"./Path\");\nclass Arrow extends Line_1.Line {\n    _sceneFunc(ctx) {\n        super._sceneFunc(ctx);\n        var PI2 = Math.PI * 2;\n        var points = this.points();\n        var tp = points;\n        var fromTension = this.tension() !== 0 && points.length > 4;\n        if (fromTension) {\n            tp = this.getTensionPoints();\n        }\n        var length = this.pointerLength();\n        var n = points.length;\n        var 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_1.Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);\n            const previous = Path_1.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        var radians = (Math.atan2(dy, dx) + PI2) % PI2;\n        var 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        var 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 - offset,\n            y: lineRect.y - offset,\n            width: lineRect.width + offset * 2,\n            height: lineRect.height + offset * 2,\n        };\n    }\n}\nexports.Arrow = Arrow;\nArrow.prototype.className = 'Arrow';\n(0, Global_1._registerNode)(Arrow);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerLength', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerWidth', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtEnding', true);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Circle = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Circle extends Shape_1.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}\nexports.Circle = Circle;\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(Circle);\nFactory_1.Factory.addGetterSetter(Circle, 'radius', 0, (0, Validators_1.getNumberValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ellipse = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Ellipse extends Shape_1.Shape {\n    _sceneFunc(context) {\n        var 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}\nexports.Ellipse = Ellipse;\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\n(0, Global_1._registerNode)(Ellipse);\nFactory_1.Factory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusY', 0, (0, Validators_1.getNumberValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Image = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nclass Image extends Shape_1.Shape {\n    constructor(attrs) {\n        super(attrs);\n        this.on('imageChange.konva', () => {\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', () => {\n                this._requestDraw();\n            });\n        }\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_1.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        var 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_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n        }\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    getWidth() {\n        var _a, _b;\n        return (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width;\n    }\n    getHeight() {\n        var _a, _b;\n        return (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height;\n    }\n    static fromURL(url, callback, onError = null) {\n        var img = Util_1.Util.createImageElement();\n        img.onload = function () {\n            var 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}\nexports.Image = Image;\nImage.prototype.className = 'Image';\n(0, Global_1._registerNode)(Image);\nFactory_1.Factory.addGetterSetter(Image, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\nFactory_1.Factory.addGetterSetter(Image, 'image');\nFactory_1.Factory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory_1.Factory.addGetterSetter(Image, 'cropX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropHeight', 0, (0, Validators_1.getNumberValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tag = exports.Label = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Group_1 = require(\"../Group\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nvar 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;\nclass Label extends Group_1.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        var that = this, n;\n        var 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        var 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}\nexports.Label = Label;\nLabel.prototype.className = 'Label';\n(0, Global_1._registerNode)(Label);\nclass Tag extends Shape_1.Shape {\n    _sceneFunc(context) {\n        var 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        var 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}\nexports.Tag = Tag;\nTag.prototype.className = 'Tag';\n(0, Global_1._registerNode)(Tag);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'pointerHeight', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegularPolygon = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass RegularPolygon extends Shape_1.Shape {\n    _sceneFunc(context) {\n        const points = this._getPoints();\n        context.beginPath();\n        context.moveTo(points[0].x, points[0].y);\n        for (var n = 1; n < points.length; n++) {\n            context.lineTo(points[n].x, points[n].y);\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 (var 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        var minX = points[0].x;\n        var maxX = points[0].y;\n        var minY = points[0].x;\n        var 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}\nexports.RegularPolygon = RegularPolygon;\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(RegularPolygon);\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'sides', 0, (0, Validators_1.getNumberValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sprite = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Animation_1 = require(\"../Animation\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Sprite extends Shape_1.Shape {\n    constructor(config) {\n        super(config);\n        this._updated = true;\n        this.anim = new Animation_1.Animation(() => {\n            var 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        var 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                var 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        var 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            var offset = offsets[anim];\n            var 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        var 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        var 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        var 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}\nexports.Sprite = Sprite;\nSprite.prototype.className = 'Sprite';\n(0, Global_1._registerNode)(Sprite);\nFactory_1.Factory.addGetterSetter(Sprite, 'animation');\nFactory_1.Factory.addGetterSetter(Sprite, 'animations');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameOffsets');\nFactory_1.Factory.addGetterSetter(Sprite, 'image');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameIndex', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Sprite, 'frameRate', 17, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.backCompat(Sprite, {\n    index: 'frameIndex',\n    getIndex: 'getFrameIndex',\n    setIndex: 'setFrameIndex',\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Star = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Star extends Shape_1.Shape {\n    _sceneFunc(context) {\n        var innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n        context.beginPath();\n        context.moveTo(0, 0 - outerRadius);\n        for (var n = 1; n < numPoints * 2; n++) {\n            var radius = n % 2 === 0 ? outerRadius : innerRadius;\n            var x = radius * Math.sin((n * Math.PI) / numPoints);\n            var 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}\nexports.Star = Star;\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Star);\nFactory_1.Factory.addGetterSetter(Star, 'numPoints', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Text = exports.stringToArray = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nfunction stringToArray(string) {\n    return Array.from(string);\n}\nexports.stringToArray = stringToArray;\nvar AUTO = 'auto', CENTER = 'center', INHERIT = 'inherit', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', LTR = 'ltr', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', RTL = 'rtl', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST = [\n    'direction',\n    'fontFamily',\n    'fontSize',\n    'fontStyle',\n    'fontVariant',\n    'padding',\n    'align',\n    'verticalAlign',\n    'lineHeight',\n    'text',\n    'width',\n    'height',\n    'wrap',\n    'ellipsis',\n    'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nfunction normalizeFontFamily(fontFamily) {\n    return fontFamily\n        .split(',')\n        .map((family) => {\n        family = family.trim();\n        const hasSpace = family.indexOf(' ') >= 0;\n        const hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n        if (hasSpace && !hasQuotes) {\n            family = `\"${family}\"`;\n        }\n        return family;\n    })\n        .join(', ');\n}\nvar dummyContext;\nfunction getDummyContext() {\n    if (dummyContext) {\n        return dummyContext;\n    }\n    dummyContext = Util_1.Util.createCanvasElement().getContext(CONTEXT_2D);\n    return dummyContext;\n}\nfunction _fillFunc(context) {\n    context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n    context.setAttr('miterLimit', 2);\n    context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n    config = config || {};\n    if (!config.fillLinearGradientColorStops &&\n        !config.fillRadialGradientColorStops &&\n        !config.fillPatternImage) {\n        config.fill = config.fill || 'black';\n    }\n    return config;\n}\nclass Text extends Shape_1.Shape {\n    constructor(config) {\n        super(checkDefaultFill(config));\n        this._partialTextX = 0;\n        this._partialTextY = 0;\n        for (var 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 textArr = this.textArr, textArrLen = textArr.length;\n        if (!this.text()) {\n            return;\n        }\n        var 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(), fill = this.fill(), textDecoration = this.textDecoration(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n        direction = direction === INHERIT ? context.direction : direction;\n        var translateY = lineHeightPx / 2;\n        var baseline = MIDDLE;\n        if (Global_1.Konva._fixTextRendering) {\n            var metrics = this.measureSize('M');\n            baseline = 'alphabetic';\n            translateY =\n                (metrics.fontBoundingBoxAscent - metrics.fontBoundingBoxDescent) / 2 +\n                    lineHeightPx / 2;\n        }\n        var lineTranslateX = 0;\n        var lineTranslateY = 0;\n        if (direction === RTL) {\n            context.setAttr('direction', direction);\n        }\n        context.setAttr('font', this._getContextFont());\n        context.setAttr('textBaseline', baseline);\n        context.setAttr('textAlign', LEFT);\n        if (verticalAlign === MIDDLE) {\n            alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n        }\n        else if (verticalAlign === BOTTOM) {\n            alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n        }\n        context.translate(padding, alignY + padding);\n        for (n = 0; n < textArrLen; n++) {\n            var lineTranslateX = 0;\n            var lineTranslateY = 0;\n            var obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph, spacesNumber, oneWord, lineWidth;\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                let yOffset = Global_1.Konva._fixTextRendering\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                spacesNumber = text.split(' ').length - 1;\n                oneWord = spacesNumber === 0;\n                lineWidth =\n                    align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n                context.lineTo(x + Math.round(lineWidth), y);\n                context.lineWidth = fontSize / 15;\n                const gradient = this._getLinearGradient();\n                context.strokeStyle = gradient || fill;\n                context.stroke();\n                context.restore();\n            }\n            if (shouldLineThrough) {\n                context.save();\n                context.beginPath();\n                let yOffset = Global_1.Konva._fixTextRendering ? -Math.round(fontSize / 4) : 0;\n                context.moveTo(lineTranslateX, translateY + lineTranslateY + yOffset);\n                spacesNumber = text.split(' ').length - 1;\n                oneWord = spacesNumber === 0;\n                lineWidth =\n                    align === JUSTIFY && lastLine && !oneWord\n                        ? totalWidth - padding * 2\n                        : width;\n                context.lineTo(lineTranslateX + 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            if (direction !== RTL && (letterSpacing !== 0 || align === JUSTIFY)) {\n                spacesNumber = text.split(' ').length - 1;\n                var array = stringToArray(text);\n                for (var li = 0; li < array.length; li++) {\n                    var 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                    context.fillStrokeShape(this);\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            context.restore();\n            if (textArrLen > 1) {\n                translateY += lineHeightPx;\n            }\n        }\n    }\n    _hitFunc(context) {\n        var 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        var str = Util_1.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        var isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n        return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n    }\n    getHeight() {\n        var 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_1.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        var _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        var width = this._getTextWidth(line);\n        return this.textArr.push({\n            text: line,\n            width: width,\n            lastInParagraph: false,\n        });\n    }\n    _getTextWidth(text) {\n        var letterSpacing = this.letterSpacing();\n        var length = text.length;\n        return (getDummyContext().measureText(text).width +\n            (length ? letterSpacing * (length - 1) : 0));\n    }\n    _setTextData() {\n        var 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        var additionalWidth = shouldAddEllipsis ? this._getTextWidth(ELLIPSIS) : 0;\n        for (var i = 0, max = lines.length; i < max; ++i) {\n            var line = lines[i];\n            var lineWidth = this._getTextWidth(line);\n            if (fixedWidth && lineWidth > maxWidth) {\n                while (line.length > 0) {\n                    var low = 0, high = line.length, match = '', matchWidth = 0;\n                    while (low < high) {\n                        var mid = (low + high) >>> 1, substr = line.slice(0, mid + 1), substrWidth = this._getTextWidth(substr) + additionalWidth;\n                        if (substrWidth <= 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                            var wrapIndex;\n                            var nextChar = line[match.length];\n                            var nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n                            if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n                                wrapIndex = match.length;\n                            }\n                            else {\n                                wrapIndex =\n                                    Math.max(match.lastIndexOf(SPACE), match.lastIndexOf(DASH)) +\n                                        1;\n                            }\n                            if (wrapIndex > 0) {\n                                low = wrapIndex;\n                                match = match.slice(0, low);\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                        var shouldHandleEllipsis = this._shouldHandleEllipsis(currentHeightPx);\n                        if (shouldHandleEllipsis) {\n                            this._tryToAddEllipsisToLastLine();\n                            break;\n                        }\n                        line = line.slice(low);\n                        line = line.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        var 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        var width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n        var lastLine = this.textArr[this.textArr.length - 1];\n        if (!lastLine || !shouldAddEllipsis) {\n            return;\n        }\n        if (fixedWidth) {\n            var haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n            if (!haveSpace) {\n                lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n            }\n        }\n        this.textArr.splice(this.textArr.length - 1, 1);\n        this._addTextLine(lastLine.text + ELLIPSIS);\n    }\n    getStrokeScaleEnabled() {\n        return true;\n    }\n    _useBufferCanvas() {\n        const hasLine = this.textDecoration().indexOf('underline') !== -1 ||\n            this.textDecoration().indexOf('line-through') !== -1;\n        const hasShadow = this.hasShadow();\n        if (hasLine && hasShadow) {\n            return true;\n        }\n        return super._useBufferCanvas();\n    }\n}\nexports.Text = Text;\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(0, Global_2._registerNode)(Text);\nFactory_1.Factory.overWriteSetter(Text, 'width', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.overWriteSetter(Text, 'height', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'direction', INHERIT);\nFactory_1.Factory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(Text, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'align', LEFT);\nFactory_1.Factory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory_1.Factory.addGetterSetter(Text, 'lineHeight', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'wrap', WORD);\nFactory_1.Factory.addGetterSetter(Text, 'ellipsis', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'text', '', (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'textDecoration', '');\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextPath = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Path_1 = require(\"./Path\");\nconst Text_1 = require(\"./Text\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nvar 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}\nclass TextPath extends Shape_1.Shape {\n    constructor(config) {\n        super(config);\n        this.dummyCanvas = Util_1.Util.createCanvasElement();\n        this.dataArray = [];\n        this._readDataAttribute();\n        this.on('dataChange.konva', function () {\n            this._readDataAttribute();\n            this._setTextData();\n        });\n        this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva', this._setTextData);\n        this._setTextData();\n    }\n    _getTextPathLength() {\n        return Path_1.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 - 1 > totalLength) {\n            return null;\n        }\n        return Path_1.Path.getPointAtLengthOfDataArray(length, this.dataArray);\n    }\n    _readDataAttribute() {\n        this.dataArray = Path_1.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        var textDecoration = this.textDecoration();\n        var fill = this.fill();\n        var fontSize = this.fontSize();\n        var glyphInfo = this.glyphInfo;\n        if (textDecoration === 'underline') {\n            context.beginPath();\n        }\n        for (var i = 0; i < glyphInfo.length; i++) {\n            context.save();\n            var p0 = glyphInfo[i].p0;\n            context.translate(p0.x, p0.y);\n            context.rotate(glyphInfo[i].rotation);\n            this.partialText = glyphInfo[i].text;\n            context.fillStrokeShape(this);\n            if (textDecoration === 'underline') {\n                if (i === 0) {\n                    context.moveTo(0, fontSize / 2 + 1);\n                }\n                context.lineTo(fontSize, fontSize / 2 + 1);\n            }\n            context.restore();\n        }\n        if (textDecoration === 'underline') {\n            context.strokeStyle = fill;\n            context.lineWidth = fontSize / 20;\n            context.stroke();\n        }\n        context.restore();\n    }\n    _hitFunc(context) {\n        context.beginPath();\n        var glyphInfo = this.glyphInfo;\n        if (glyphInfo.length >= 1) {\n            var p0 = glyphInfo[0].p0;\n            context.moveTo(p0.x, p0.y);\n        }\n        for (var i = 0; i < glyphInfo.length; i++) {\n            var 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_1.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_1.Text.prototype.setText.call(this, text);\n    }\n    _getContextFont() {\n        return Text_1.Text.prototype._getContextFont.call(this);\n    }\n    _getTextSize(text) {\n        var dummyCanvas = this.dummyCanvas;\n        var _context = dummyCanvas.getContext('2d');\n        _context.save();\n        _context.font = this._getContextFont();\n        var 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 { width, height } = this._getTextSize(this.attrs.text);\n        this.textWidth = width;\n        this.textHeight = height;\n        this.glyphInfo = [];\n        if (!this.attrs.data) {\n            return null;\n        }\n        const letterSpacing = this.letterSpacing();\n        const align = this.align();\n        const kerningFunc = this.kerningFunc();\n        const textWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n        let offset = 0;\n        if (align === 'center') {\n            offset = Math.max(0, this.pathLength / 2 - textWidth / 2);\n        }\n        if (align === 'right') {\n            offset = Math.max(0, this.pathLength - textWidth);\n        }\n        const charArr = (0, Text_1.stringToArray)(this.text());\n        let offsetToGlyph = offset;\n        for (var i = 0; i < charArr.length; i++) {\n            const charStartPoint = this._getPointAtLength(offsetToGlyph);\n            if (!charStartPoint)\n                return;\n            let glyphWidth = this._getTextSize(charArr[i]).width + letterSpacing;\n            if (charArr[i] === ' ' && align === 'justify') {\n                const numberOfSpaces = this.text().split(' ').length - 1;\n                glyphWidth += (this.pathLength - textWidth) / numberOfSpaces;\n            }\n            const charEndPoint = this._getPointAtLength(offsetToGlyph + glyphWidth);\n            if (!charEndPoint)\n                return;\n            const width = Path_1.Path.getLineLength(charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n            let kern = 0;\n            if (kerningFunc) {\n                try {\n                    kern = kerningFunc(charArr[i - 1], charArr[i]) * 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_1.Path.getPointOnLine(kern + width / 2.0, charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n            const rotation = Math.atan2(charEndPoint.y - charStartPoint.y, charEndPoint.x - charStartPoint.x);\n            this.glyphInfo.push({\n                transposeX: midpoint.x,\n                transposeY: midpoint.y,\n                text: charArr[i],\n                rotation: rotation,\n                p0: charStartPoint,\n                p1: charEndPoint,\n            });\n            offsetToGlyph += glyphWidth;\n        }\n    }\n    getSelfRect() {\n        if (!this.glyphInfo.length) {\n            return {\n                x: 0,\n                y: 0,\n                width: 0,\n                height: 0,\n            };\n        }\n        var 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        var minX = points[0] || 0;\n        var maxX = points[0] || 0;\n        var minY = points[1] || 0;\n        var maxY = points[1] || 0;\n        var x, y;\n        for (var 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        var 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_1.Util.releaseCanvas(this.dummyCanvas);\n        return super.destroy();\n    }\n}\nexports.TextPath = TextPath;\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(0, Global_1._registerNode)(TextPath);\nFactory_1.Factory.addGetterSetter(TextPath, 'data');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'align', 'left');\nFactory_1.Factory.addGetterSetter(TextPath, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory_1.Factory.addGetterSetter(TextPath, 'textDecoration', null);\nFactory_1.Factory.addGetterSetter(TextPath, 'kerningFunc', null);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transformer = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Shape_1 = require(\"../Shape\");\nconst Rect_1 = require(\"./Rect\");\nconst Group_1 = require(\"../Group\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nvar EVENTS_NAME = 'tr-konva';\nvar ATTR_CHANGE_LIST = [\n    'resizeEnabledChange',\n    'rotateAnchorOffsetChange',\n    'rotateEnabledChange',\n    'enabledAnchorsChange',\n    'anchorSizeChange',\n    'borderEnabledChange',\n    'borderStrokeChange',\n    'borderStrokeWidthChange',\n    'borderDashChange',\n    'anchorStrokeChange',\n    'anchorStrokeWidthChange',\n    'anchorFillChange',\n    'anchorCornerRadiusChange',\n    'ignoreStrokeChange',\n    'anchorStyleFuncChange',\n]\n    .map((e) => e + `.${EVENTS_NAME}`)\n    .join(' ');\nvar NODES_RECT = 'nodesRect';\nvar 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];\nvar 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 Global_1.Konva._global;\nfunction getCursor(anchorName, rad, rotateCursor) {\n    if (anchorName === 'rotater') {\n        return rotateCursor;\n    }\n    rad += Util_1.Util.degToRad(ANGLES[anchorName] || 0);\n    var angle = ((Util_1.Util.radToDeg(rad) % 360) + 360) % 360;\n    if (Util_1.Util._inRange(angle, 315 + 22.5, 360) || Util_1.Util._inRange(angle, 0, 22.5)) {\n        return 'ns-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n        return 'nesw-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n        return 'ew-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n        return 'nwse-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n        return 'ns-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n        return 'nesw-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n        return 'ew-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n        return 'nwse-resize';\n    }\n    else {\n        Util_1.Util.error('Transformer has unknown angle for cursor detection: ' + angle);\n        return 'pointer';\n    }\n}\nvar 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];\nvar 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 = Global_1.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;\nclass Transformer extends Group_1.Group {\n    constructor(config) {\n        super(config);\n        this._movingAnchorName = null;\n        this._transforming = false;\n        this._createElements();\n        this._handleMouseMove = this._handleMouseMove.bind(this);\n        this._handleMouseUp = this._handleMouseUp.bind(this);\n        this.update = this.update.bind(this);\n        this.on(ATTR_CHANGE_LIST, this.update);\n        if (this.getNode()) {\n            this.update();\n        }\n    }\n    attachTo(node) {\n        this.setNode(node);\n        return this;\n    }\n    setNode(node) {\n        Util_1.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_1.Util.error('Konva.Transformer cannot be an a child of the node you are trying to attach');\n                return false;\n            }\n            return true;\n        });\n        this._nodes = nodes = filteredNodes;\n        if (nodes.length === 1 && this.useSingleNodeRotation()) {\n            this.rotation(nodes[0].getAbsoluteRotation());\n        }\n        else {\n            this.rotation(0);\n        }\n        this._nodes.forEach((node) => {\n            const onChange = () => {\n                if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n                    this.rotation(this.nodes()[0].getAbsoluteRotation());\n                }\n                this._resetTransformCache();\n                if (!this._transforming && !this.isDragging()) {\n                    this.update();\n                }\n            };\n            const additionalEvents = node._attrsAffectingSize\n                .map((prop) => prop + 'Change.' + this._getEventNamespace())\n                .join(' ');\n            node.on(additionalEvents, onChange);\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        var 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        var rect = node.getClientRect({\n            skipTransform: true,\n            skipShadow: true,\n            skipStroke: this.ignoreStroke(),\n        });\n        var absScale = node.getAbsoluteScale(relative);\n        var absPos = node.getAbsolutePosition(relative);\n        var dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n        var dy = rect.y * absScale.y - node.offsetY() * absScale.y;\n        const rotation = (Global_1.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, -Global_1.Konva.getAngle(rot), {\n            x: 0,\n            y: 0,\n        });\n    }\n    __getNodeRect() {\n        var 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            var 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            var trans = node.getAbsoluteTransform();\n            points.forEach(function (point) {\n                var transformed = trans.point(point);\n                totalPoints.push(transformed);\n            });\n        });\n        const tr = new Util_1.Transform();\n        tr.rotate(-Global_1.Konva.getAngle(this.rotation()));\n        var minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n        totalPoints.forEach(function (point) {\n            var 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: Global_1.Konva.getAngle(this.rotation()),\n        };\n    }\n    getX() {\n        return this._getNodeRect().x;\n    }\n    getY() {\n        return this._getNodeRect().y;\n    }\n    getWidth() {\n        return this._getNodeRect().width;\n    }\n    getHeight() {\n        return this._getNodeRect().height;\n    }\n    _createElements() {\n        this._createBack();\n        ANCHORS_NAMES.forEach((name) => {\n            this._createAnchor(name);\n        });\n        this._createAnchor('rotater');\n    }\n    _createAnchor(name) {\n        var anchor = new Rect_1.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        var 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            var rad = Global_1.Konva.getAngle(this.rotation());\n            var rotateCursor = this.rotateAnchorCursor();\n            var 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        var back = new Shape_1.Shape({\n            name: 'back',\n            width: 0,\n            height: 0,\n            draggable: true,\n            sceneFunc(ctx, shape) {\n                var tr = shape.getParent();\n                var padding = tr.padding();\n                ctx.beginPath();\n                ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n                ctx.moveTo(shape.width() / 2, -padding);\n                if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n                    ctx.lineTo(shape.width() / 2, -tr.rotateAnchorOffset() * Util_1.Util._sign(shape.height()) - padding);\n                }\n                ctx.fillStrokeShape(shape);\n            },\n            hitFunc: (ctx, shape) => {\n                if (!this.shouldOverdrawWholeArea()) {\n                    return;\n                }\n                var padding = this.padding();\n                ctx.beginPath();\n                ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n                ctx.fillStrokeShape(shape);\n            },\n        });\n        this.add(back);\n        this._proxyDrag(back);\n        back.on('dragstart', (e) => {\n            e.cancelBubble = true;\n        });\n        back.on('dragmove', (e) => {\n            e.cancelBubble = true;\n        });\n        back.on('dragend', (e) => {\n            e.cancelBubble = true;\n        });\n        this.on('dragmove', (e) => {\n            this.update();\n        });\n    }\n    _handleMouseDown(e) {\n        if (this._transforming) {\n            return;\n        }\n        this._movingAnchorName = e.target.name().split(' ')[0];\n        var attrs = this._getNodeRect();\n        var width = attrs.width;\n        var height = attrs.height;\n        var hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n        this.sin = Math.abs(height / hypotenuse);\n        this.cos = Math.abs(width / hypotenuse);\n        if (typeof window !== 'undefined') {\n            window.addEventListener('mousemove', this._handleMouseMove);\n            window.addEventListener('touchmove', this._handleMouseMove);\n            window.addEventListener('mouseup', this._handleMouseUp, true);\n            window.addEventListener('touchend', this._handleMouseUp, true);\n        }\n        this._transforming = true;\n        var ap = e.target.getAbsolutePosition();\n        var 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        var x, y, newHypotenuse;\n        var anchorNode = this.findOne('.' + this._movingAnchorName);\n        var 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            var attrs = this._getNodeRect();\n            x = anchorNode.x() - attrs.width / 2;\n            y = -anchorNode.y() + attrs.height / 2;\n            let delta = Math.atan2(-y, x) + Math.PI / 2;\n            if (attrs.height < 0) {\n                delta -= Math.PI;\n            }\n            var oldRotation = Global_1.Konva.getAngle(this.rotation());\n            const newRotation = oldRotation + delta;\n            const tol = Global_1.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        var shiftBehavior = this.shiftBehavior();\n        var 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        var centeredScaling = this.centeredScaling() || e.altKey;\n        if (this._movingAnchorName === 'top-left') {\n            if (keepProportion) {\n                var 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                var reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n                var 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                var 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                var reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n                var 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                var 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                var reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n                var 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                var 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                var reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n                var 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        var centeredScaling = this.centeredScaling() || e.altKey;\n        if (centeredScaling) {\n            var topLeft = this.findOne('.top-left');\n            var bottomRight = this.findOne('.bottom-right');\n            var topOffsetX = topLeft.x();\n            var topOffsetY = topLeft.y();\n            var bottomOffsetX = this.getWidth() - bottomRight.x();\n            var 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        var absPos = this.findOne('.top-left').getAbsolutePosition();\n        x = absPos.x;\n        y = absPos.y;\n        var width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n        var 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: Global_1.Konva.getAngle(this.rotation()),\n        }, e);\n    }\n    _handleMouseUp(e) {\n        this._removeEvents(e);\n    }\n    getAbsoluteTransform() {\n        return this.getTransform();\n    }\n    _removeEvents(e) {\n        var _a;\n        if (this._transforming) {\n            this._transforming = false;\n            if (typeof window !== 'undefined') {\n                window.removeEventListener('mousemove', this._handleMouseMove);\n                window.removeEventListener('touchmove', this._handleMouseMove);\n                window.removeEventListener('mouseup', this._handleMouseUp, true);\n                window.removeEventListener('touchend', this._handleMouseUp, true);\n            }\n            var node = this.getNode();\n            activeTransformersCount--;\n            this._fire('transformend', { evt: e, target: node });\n            (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n            if (node) {\n                this._nodes.forEach((target) => {\n                    var _a;\n                    target._fire('transformend', { evt: e, target });\n                    (_a = target.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n                });\n            }\n            this._movingAnchorName = null;\n        }\n    }\n    _fitNodesInto(newAttrs, evt) {\n        var oldAttrs = this._getNodeRect();\n        const minSize = 1;\n        if (Util_1.Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n            this.update();\n            return;\n        }\n        if (Util_1.Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n            this.update();\n            return;\n        }\n        var t = new Util_1.Transform();\n        t.rotate(Global_1.Konva.getAngle(this.rotation()));\n        if (this._movingAnchorName &&\n            newAttrs.width < 0 &&\n            this._movingAnchorName.indexOf('left') >= 0) {\n            const offset = t.point({\n                x: -this.padding() * 2,\n                y: 0,\n            });\n            newAttrs.x += offset.x;\n            newAttrs.y += offset.y;\n            newAttrs.width += this.padding() * 2;\n            this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\n            this._anchorDragOffset.x -= offset.x;\n            this._anchorDragOffset.y -= offset.y;\n        }\n        else if (this._movingAnchorName &&\n            newAttrs.width < 0 &&\n            this._movingAnchorName.indexOf('right') >= 0) {\n            const offset = t.point({\n                x: this.padding() * 2,\n                y: 0,\n            });\n            this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\n            this._anchorDragOffset.x -= offset.x;\n            this._anchorDragOffset.y -= offset.y;\n            newAttrs.width += this.padding() * 2;\n        }\n        if (this._movingAnchorName &&\n            newAttrs.height < 0 &&\n            this._movingAnchorName.indexOf('top') >= 0) {\n            const offset = t.point({\n                x: 0,\n                y: -this.padding() * 2,\n            });\n            newAttrs.x += offset.x;\n            newAttrs.y += offset.y;\n            this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\n            this._anchorDragOffset.x -= offset.x;\n            this._anchorDragOffset.y -= offset.y;\n            newAttrs.height += this.padding() * 2;\n        }\n        else if (this._movingAnchorName &&\n            newAttrs.height < 0 &&\n            this._movingAnchorName.indexOf('bottom') >= 0) {\n            const offset = t.point({\n                x: 0,\n                y: this.padding() * 2,\n            });\n            this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\n            this._anchorDragOffset.x -= offset.x;\n            this._anchorDragOffset.y -= offset.y;\n            newAttrs.height += this.padding() * 2;\n        }\n        if (this.boundBoxFunc()) {\n            const bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n            if (bounded) {\n                newAttrs = bounded;\n            }\n            else {\n                Util_1.Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n            }\n        }\n        const baseSize = 10000000;\n        const oldTr = new Util_1.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 Util_1.Transform();\n        const newScaleX = newAttrs.width / baseSize;\n        const newScaleY = newAttrs.height / baseSize;\n        if (this.flipEnabled() === false) {\n            newTr.translate(newAttrs.x, newAttrs.y);\n            newTr.rotate(newAttrs.rotation);\n            newTr.translate(newAttrs.width < 0 ? newAttrs.width : 0, newAttrs.height < 0 ? newAttrs.height : 0);\n            newTr.scale(Math.abs(newScaleX), Math.abs(newScaleY));\n        }\n        else {\n            newTr.translate(newAttrs.x, newAttrs.y);\n            newTr.rotate(newAttrs.rotation);\n            newTr.scale(newScaleX, newScaleY);\n        }\n        const delta = newTr.multiply(oldTr.invert());\n        this._nodes.forEach((node) => {\n            var _a;\n            const parentTransform = node.getParent().getAbsoluteTransform();\n            const localTransform = node.getTransform().copy();\n            localTransform.translate(node.offsetX(), node.offsetY());\n            const newLocalTransform = new Util_1.Transform();\n            newLocalTransform\n                .multiply(parentTransform.copy().invert())\n                .multiply(delta)\n                .multiply(parentTransform)\n                .multiply(localTransform);\n            const attrs = newLocalTransform.decompose();\n            node.setAttrs(attrs);\n            (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n        });\n        this.rotation(Util_1.Util._getRotation(newAttrs.rotation));\n        this._nodes.forEach((node) => {\n            this._fire('transform', { evt: evt, target: node });\n            node._fire('transform', { evt: evt, target: node });\n        });\n        this._resetTransformCache();\n        this.update();\n        this.getLayer().batchDraw();\n    }\n    forceUpdate() {\n        this._resetTransformCache();\n        this.update();\n    }\n    _batchChangeChild(selector, attrs) {\n        const anchor = this.findOne(selector);\n        anchor.setAttrs(attrs);\n    }\n    update() {\n        var _a;\n        var attrs = this._getNodeRect();\n        this.rotation(Util_1.Util._getRotation(attrs.rotation));\n        var width = attrs.width;\n        var height = attrs.height;\n        var enabledAnchors = this.enabledAnchors();\n        var resizeEnabled = this.resizeEnabled();\n        var padding = this.padding();\n        var anchorSize = this.anchorSize();\n        const anchors = this.find('._anchor');\n        anchors.forEach((node) => {\n            node.setAttrs({\n                width: anchorSize,\n                height: anchorSize,\n                offsetX: anchorSize / 2,\n                offsetY: anchorSize / 2,\n                stroke: this.anchorStroke(),\n                strokeWidth: this.anchorStrokeWidth(),\n                fill: this.anchorFill(),\n                cornerRadius: this.anchorCornerRadius(),\n            });\n        });\n        this._batchChangeChild('.top-left', {\n            x: 0,\n            y: 0,\n            offsetX: anchorSize / 2 + padding,\n            offsetY: anchorSize / 2 + padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n        });\n        this._batchChangeChild('.top-center', {\n            x: width / 2,\n            y: 0,\n            offsetY: anchorSize / 2 + padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n        });\n        this._batchChangeChild('.top-right', {\n            x: width,\n            y: 0,\n            offsetX: anchorSize / 2 - padding,\n            offsetY: anchorSize / 2 + padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n        });\n        this._batchChangeChild('.middle-left', {\n            x: 0,\n            y: height / 2,\n            offsetX: anchorSize / 2 + padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n        });\n        this._batchChangeChild('.middle-right', {\n            x: width,\n            y: height / 2,\n            offsetX: anchorSize / 2 - padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n        });\n        this._batchChangeChild('.bottom-left', {\n            x: 0,\n            y: height,\n            offsetX: anchorSize / 2 + padding,\n            offsetY: anchorSize / 2 - padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n        });\n        this._batchChangeChild('.bottom-center', {\n            x: width / 2,\n            y: height,\n            offsetY: anchorSize / 2 - padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n        });\n        this._batchChangeChild('.bottom-right', {\n            x: width,\n            y: height,\n            offsetX: anchorSize / 2 - padding,\n            offsetY: anchorSize / 2 - padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n        });\n        this._batchChangeChild('.rotater', {\n            x: width / 2,\n            y: -this.rotateAnchorOffset() * Util_1.Util._sign(height) - padding,\n            visible: this.rotateEnabled(),\n        });\n        this._batchChangeChild('.back', {\n            width: width,\n            height: height,\n            visible: this.borderEnabled(),\n            stroke: this.borderStroke(),\n            strokeWidth: this.borderStrokeWidth(),\n            dash: this.borderDash(),\n            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            var 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_1.Group.prototype.destroy.call(this);\n        this.detach();\n        this._removeEvents();\n        return this;\n    }\n    toObject() {\n        return Node_1.Node.prototype.toObject.call(this);\n    }\n    clone(obj) {\n        var node = Node_1.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}\nexports.Transformer = Transformer;\nTransformer.isTransforming = () => {\n    return activeTransformersCount > 0;\n};\nfunction validateAnchors(val) {\n    if (!(val instanceof Array)) {\n        Util_1.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_1.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(0, Global_2._registerNode)(Transformer);\nFactory_1.Factory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory_1.Factory.addGetterSetter(Transformer, 'flipEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorSize', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateLineVisible', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorCursor', 'crosshair');\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderDash');\nFactory_1.Factory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'shiftBehavior', 'default');\nFactory_1.Factory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'node');\nFactory_1.Factory.addGetterSetter(Transformer, 'nodes');\nFactory_1.Factory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStyleFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'useSingleNodeRotation', true);\nFactory_1.Factory.backCompat(Transformer, {\n    lineEnabled: 'borderEnabled',\n    rotateHandlerOffset: 'rotateAnchorOffset',\n    enabledHandlers: 'enabledAnchors',\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Wedge = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Wedge extends Shape_1.Shape {\n    _sceneFunc(context) {\n        context.beginPath();\n        context.arc(0, 0, this.radius(), 0, Global_1.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}\nexports.Wedge = Wedge;\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\n(0, Global_2._registerNode)(Wedge);\nFactory_1.Factory.addGetterSetter(Wedge, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'clockwise', false);\nFactory_1.Factory.backCompat(Wedge, {\n    angleDeg: 'angle',\n    getAngleDeg: 'getAngle',\n    setAngleDeg: 'setAngle',\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Blur = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction BlurStack() {\n    this.r = 0;\n    this.g = 0;\n    this.b = 0;\n    this.a = 0;\n    this.next = null;\n}\nvar 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];\nvar 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    var pixels = imageData.data, width = imageData.width, height = imageData.height;\n    var x, y, i, p, yp, 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    var div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), stackEnd = null, stack = stackStart, stackIn = null, stackOut = null, mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n    for (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 (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 (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 (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 (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 (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 (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        yp = width;\n        for (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 (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}\nconst Blur = function Blur(imageData) {\n    var radius = Math.round(this.blurRadius());\n    if (radius > 0) {\n        filterGaussBlurRGBA(imageData, radius);\n    }\n};\nexports.Blur = Blur;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blurRadius', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Brighten = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Brighten = function (imageData) {\n    var brightness = this.brightness() * 255, data = imageData.data, len = data.length, i;\n    for (i = 0; i < len; i += 4) {\n        data[i] += brightness;\n        data[i + 1] += brightness;\n        data[i + 2] += brightness;\n    }\n};\nexports.Brighten = Brighten;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'brightness', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Contrast = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Contrast = function (imageData) {\n    var adjust = Math.pow((this.contrast() + 100) / 100, 2);\n    var data = imageData.data, nPixels = data.length, red = 150, green = 150, blue = 150, i;\n    for (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};\nexports.Contrast = Contrast;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'contrast', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emboss = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nconst Emboss = function (imageData) {\n    var strength = this.embossStrength() * 10, greyLevel = this.embossWhiteLevel() * 255, direction = this.embossDirection(), blend = this.embossBlend(), dirY = 0, dirX = 0, data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n    switch (direction) {\n        case 'top-left':\n            dirY = -1;\n            dirX = -1;\n            break;\n        case 'top':\n            dirY = -1;\n            dirX = 0;\n            break;\n        case 'top-right':\n            dirY = -1;\n            dirX = 1;\n            break;\n        case 'right':\n            dirY = 0;\n            dirX = 1;\n            break;\n        case 'bottom-right':\n            dirY = 1;\n            dirX = 1;\n            break;\n        case 'bottom':\n            dirY = 1;\n            dirX = 0;\n            break;\n        case 'bottom-left':\n            dirY = 1;\n            dirX = -1;\n            break;\n        case 'left':\n            dirY = 0;\n            dirX = -1;\n            break;\n        default:\n            Util_1.Util.error('Unknown emboss direction: ' + direction);\n    }\n    do {\n        var offsetY = (y - 1) * w4;\n        var otherY = dirY;\n        if (y + otherY < 1) {\n            otherY = 0;\n        }\n        if (y + otherY > h) {\n            otherY = 0;\n        }\n        var offsetYOther = (y - 1 + otherY) * w * 4;\n        var x = w;\n        do {\n            var offset = offsetY + (x - 1) * 4;\n            var otherX = dirX;\n            if (x + otherX < 1) {\n                otherX = 0;\n            }\n            if (x + otherX > w) {\n                otherX = 0;\n            }\n            var offsetOther = offsetYOther + (x - 1 + otherX) * 4;\n            var dR = data[offset] - data[offsetOther];\n            var dG = data[offset + 1] - data[offsetOther + 1];\n            var dB = data[offset + 2] - data[offsetOther + 2];\n            var dif = dR;\n            var absDif = dif > 0 ? dif : -dif;\n            var absG = dG > 0 ? dG : -dG;\n            var absB = dB > 0 ? dB : -dB;\n            if (absG > absDif) {\n                dif = dG;\n            }\n            if (absB > absDif) {\n                dif = dB;\n            }\n            dif *= strength;\n            if (blend) {\n                var r = data[offset] + dif;\n                var g = data[offset + 1] + dif;\n                var b = data[offset + 2] + dif;\n                data[offset] = r > 255 ? 255 : r < 0 ? 0 : r;\n                data[offset + 1] = g > 255 ? 255 : g < 0 ? 0 : g;\n                data[offset + 2] = b > 255 ? 255 : b < 0 ? 0 : b;\n            }\n            else {\n                var grey = greyLevel - dif;\n                if (grey < 0) {\n                    grey = 0;\n                }\n                else if (grey > 255) {\n                    grey = 255;\n                }\n                data[offset] = data[offset + 1] = data[offset + 2] = grey;\n            }\n        } while (--x);\n    } while (--y);\n};\nexports.Emboss = Emboss;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossStrength', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossWhiteLevel', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossDirection', 'top-left', null, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossBlend', false, null, Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Enhance = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n    var fromRange = fromMax - fromMin, toRange = toMax - toMin, toValue;\n    if (fromRange === 0) {\n        return toMin + toRange / 2;\n    }\n    if (toRange === 0) {\n        return toMin;\n    }\n    toValue = (fromValue - fromMin) / fromRange;\n    toValue = toRange * toValue + toMin;\n    return toValue;\n}\nconst Enhance = function (imageData) {\n    var data = imageData.data, nSubPixels = data.length, rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b, i;\n    var enhanceAmount = this.enhance();\n    if (enhanceAmount === 0) {\n        return;\n    }\n    for (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    var rMid, rGoalMax, rGoalMin, gMid, gGoalMax, gGoalMin, bMid, 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        rMid = (rMax + rMin) * 0.5;\n        rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n        rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n        gMid = (gMax + gMin) * 0.5;\n        gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n        gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n        bMid = (bMax + bMin) * 0.5;\n        bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n        bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n    }\n    for (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};\nexports.Enhance = Enhance;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'enhance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Grayscale = void 0;\nconst Grayscale = function (imageData) {\n    var data = imageData.data, len = data.length, i, brightness;\n    for (i = 0; i < len; i += 4) {\n        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};\nexports.Grayscale = Grayscale;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSL = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'luminance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nconst HSL = function (imageData) {\n    var 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, i;\n    var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n    var 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    var 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    var 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    var r, g, b, a;\n    for (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};\nexports.HSL = HSL;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSV = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst HSV = function (imageData) {\n    var 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, i;\n    var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n    var 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    var 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    var 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    var r, g, b, a;\n    for (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;\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};\nexports.HSV = HSV;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'value', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Invert = void 0;\nconst Invert = function (imageData) {\n    var data = imageData.data, len = data.length, i;\n    for (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};\nexports.Invert = Invert;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Kaleidoscope = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nvar ToPolar = function (src, dst, opt) {\n    var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, r = 0, g = 0, b = 0, a = 0;\n    var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n    x = xSize - xMid;\n    y = ySize - yMid;\n    rad = Math.sqrt(x * x + y * y);\n    rMax = rad > rMax ? rad : rMax;\n    var rSize = ySize, tSize = xSize, radius, theta;\n    var conversion = ((360 / tSize) * Math.PI) / 180, sin, cos;\n    for (theta = 0; theta < tSize; theta += 1) {\n        sin = Math.sin(theta * conversion);\n        cos = Math.cos(theta * conversion);\n        for (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            i = (y * xSize + x) * 4;\n            r = srcPixels[i + 0];\n            g = srcPixels[i + 1];\n            b = srcPixels[i + 2];\n            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};\nvar FromPolar = function (src, dst, opt) {\n    var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, dx, dy, r = 0, g = 0, b = 0, a = 0;\n    var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n    x = xSize - xMid;\n    y = ySize - yMid;\n    rad = Math.sqrt(x * x + y * y);\n    rMax = rad > rMax ? rad : rMax;\n    var rSize = ySize, tSize = xSize, radius, theta, phaseShift = opt.polarRotation || 0;\n    var x1, y1;\n    for (x = 0; x < xSize; x += 1) {\n        for (y = 0; y < ySize; y += 1) {\n            dx = x - xMid;\n            dy = y - yMid;\n            radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n            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            i = (y1 * xSize + x1) * 4;\n            r = srcPixels[i + 0];\n            g = srcPixels[i + 1];\n            b = srcPixels[i + 2];\n            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};\nconst Kaleidoscope = function (imageData) {\n    var xSize = imageData.width, ySize = imageData.height;\n    var x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n    var power = Math.round(this.kaleidoscopePower());\n    var angle = Math.round(this.kaleidoscopeAngle());\n    var offset = Math.floor((xSize * (angle % 360)) / 360);\n    if (power < 1) {\n        return;\n    }\n    var tempCanvas = Util_1.Util.createCanvasElement();\n    tempCanvas.width = xSize;\n    tempCanvas.height = ySize;\n    var scratchData = tempCanvas\n        .getContext('2d')\n        .getImageData(0, 0, xSize, ySize);\n    Util_1.Util.releaseCanvas(tempCanvas);\n    ToPolar(imageData, scratchData, {\n        polarCenterX: xSize / 2,\n        polarCenterY: ySize / 2,\n    });\n    var minSectionSize = xSize / Math.pow(2, power);\n    while (minSectionSize <= 8) {\n        minSectionSize = minSectionSize * 2;\n        power -= 1;\n    }\n    minSectionSize = Math.ceil(minSectionSize);\n    var sectionSize = minSectionSize;\n    var 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};\nexports.Kaleidoscope = Kaleidoscope;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopePower', 2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopeAngle', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mask = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction pixelAt(idata, x, y) {\n    var idx = (y * idata.width + x) * 4;\n    var 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    var m = [0, 0, 0];\n    for (var 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    var rgbv_no = pixelAt(idata, 0, 0);\n    var rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n    var rgbv_so = pixelAt(idata, 0, idata.height - 1);\n    var rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n    var 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        var mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n        var mask = [];\n        for (var i = 0; i < idata.width * idata.height; i++) {\n            var 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 (var i = 0; i < idata.width * idata.height; i++) {\n        idata.data[4 * i + 3] = mask[i];\n    }\n}\nfunction erodeMask(mask, sw, sh) {\n    var weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n    var side = Math.round(Math.sqrt(weights.length));\n    var halfSide = Math.floor(side / 2);\n    var maskResult = [];\n    for (var y = 0; y < sh; y++) {\n        for (var x = 0; x < sw; x++) {\n            var so = y * sw + x;\n            var a = 0;\n            for (var cy = 0; cy < side; cy++) {\n                for (var cx = 0; cx < side; cx++) {\n                    var scy = y + cy - halfSide;\n                    var scx = x + cx - halfSide;\n                    if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n                        var srcOff = scy * sw + scx;\n                        var 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    var weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n    var side = Math.round(Math.sqrt(weights.length));\n    var halfSide = Math.floor(side / 2);\n    var maskResult = [];\n    for (var y = 0; y < sh; y++) {\n        for (var x = 0; x < sw; x++) {\n            var so = y * sw + x;\n            var a = 0;\n            for (var cy = 0; cy < side; cy++) {\n                for (var cx = 0; cx < side; cx++) {\n                    var scy = y + cy - halfSide;\n                    var scx = x + cx - halfSide;\n                    if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n                        var srcOff = scy * sw + scx;\n                        var 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    var weights = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9];\n    var side = Math.round(Math.sqrt(weights.length));\n    var halfSide = Math.floor(side / 2);\n    var maskResult = [];\n    for (var y = 0; y < sh; y++) {\n        for (var x = 0; x < sw; x++) {\n            var so = y * sw + x;\n            var a = 0;\n            for (var cy = 0; cy < side; cy++) {\n                for (var cx = 0; cx < side; cx++) {\n                    var scy = y + cy - halfSide;\n                    var scx = x + cx - halfSide;\n                    if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n                        var srcOff = scy * sw + scx;\n                        var wt = weights[cy * side + cx];\n                        a += mask[srcOff] * wt;\n                    }\n                }\n            }\n            maskResult[so] = a;\n        }\n    }\n    return maskResult;\n}\nconst Mask = function (imageData) {\n    var threshold = this.threshold(), 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};\nexports.Mask = Mask;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Noise = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Noise = function (imageData) {\n    var amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2, i;\n    for (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};\nexports.Noise = Noise;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'noise', 0.2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Pixelate = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Util_1 = require(\"../Util\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Pixelate = function (imageData) {\n    var pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, x, y, i, red, green, blue, alpha, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), xBinStart, xBinEnd, yBinStart, yBinEnd, xBin, yBin, pixelsInBin, data = imageData.data;\n    if (pixelSize <= 0) {\n        Util_1.Util.error('pixelSize value can not be <= 0');\n        return;\n    }\n    for (xBin = 0; xBin < nBinsX; xBin += 1) {\n        for (yBin = 0; yBin < nBinsY; yBin += 1) {\n            red = 0;\n            green = 0;\n            blue = 0;\n            alpha = 0;\n            xBinStart = xBin * pixelSize;\n            xBinEnd = xBinStart + pixelSize;\n            yBinStart = yBin * pixelSize;\n            yBinEnd = yBinStart + pixelSize;\n            pixelsInBin = 0;\n            for (x = xBinStart; x < xBinEnd; x += 1) {\n                if (x >= width) {\n                    continue;\n                }\n                for (y = yBinStart; y < yBinEnd; y += 1) {\n                    if (y >= height) {\n                        continue;\n                    }\n                    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 (x = xBinStart; x < xBinEnd; x += 1) {\n                if (x >= width) {\n                    continue;\n                }\n                for (y = yBinStart; y < yBinEnd; y += 1) {\n                    if (y >= height) {\n                        continue;\n                    }\n                    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};\nexports.Pixelate = Pixelate;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'pixelSize', 8, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Posterize = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Posterize = function (imageData) {\n    var levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels, i;\n    for (i = 0; i < len; i += 1) {\n        data[i] = Math.floor(data[i] / scale) * scale;\n    }\n};\nexports.Posterize = Posterize;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'levels', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGB = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGB = function (imageData) {\n    var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), i, brightness;\n    for (i = 0; i < nPixels; i += 4) {\n        brightness =\n            (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};\nexports.RGB = RGB;\nFactory_1.Factory.addGetterSetter(Node_1.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_1.Factory.addGetterSetter(Node_1.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_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGBA = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGBA = function (imageData) {\n    var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha(), i, ia;\n    for (i = 0; i < nPixels; i += 4) {\n        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};\nexports.RGBA = RGBA;\nFactory_1.Factory.addGetterSetter(Node_1.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_1.Factory.addGetterSetter(Node_1.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_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.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", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sepia = void 0;\nconst Sepia = function (imageData) {\n    var data = imageData.data, nPixels = data.length, i, r, g, b;\n    for (i = 0; i < nPixels; i += 4) {\n        r = data[i + 0];\n        g = data[i + 1];\n        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};\nexports.Sepia = Sepia;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Solarize = void 0;\nconst Solarize = function (imageData) {\n    var data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n    do {\n        var offsetY = (y - 1) * w4;\n        var x = w;\n        do {\n            var offset = offsetY + (x - 1) * 4;\n            var r = data[offset];\n            var g = data[offset + 1];\n            var b = data[offset + 2];\n            if (r > 127) {\n                r = 255 - r;\n            }\n            if (g > 127) {\n                g = 255 - g;\n            }\n            if (b > 127) {\n                b = 255 - b;\n            }\n            data[offset] = r;\n            data[offset + 1] = g;\n            data[offset + 2] = b;\n        } while (--x);\n    } while (--y);\n};\nexports.Solarize = Solarize;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Threshold = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Threshold = function (imageData) {\n    var level = this.threshold() * 255, data = imageData.data, len = data.length, i;\n    for (i = 0; i < len; i += 1) {\n        data[i] = data[i] < level ? 0 : 255;\n    }\n};\nexports.Threshold = Threshold;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst _CoreInternals_1 = require(\"./_CoreInternals\");\nconst Arc_1 = require(\"./shapes/Arc\");\nconst Arrow_1 = require(\"./shapes/Arrow\");\nconst Circle_1 = require(\"./shapes/Circle\");\nconst Ellipse_1 = require(\"./shapes/Ellipse\");\nconst Image_1 = require(\"./shapes/Image\");\nconst Label_1 = require(\"./shapes/Label\");\nconst Line_1 = require(\"./shapes/Line\");\nconst Path_1 = require(\"./shapes/Path\");\nconst Rect_1 = require(\"./shapes/Rect\");\nconst RegularPolygon_1 = require(\"./shapes/RegularPolygon\");\nconst Ring_1 = require(\"./shapes/Ring\");\nconst Sprite_1 = require(\"./shapes/Sprite\");\nconst Star_1 = require(\"./shapes/Star\");\nconst Text_1 = require(\"./shapes/Text\");\nconst TextPath_1 = require(\"./shapes/TextPath\");\nconst Transformer_1 = require(\"./shapes/Transformer\");\nconst Wedge_1 = require(\"./shapes/Wedge\");\nconst Blur_1 = require(\"./filters/Blur\");\nconst Brighten_1 = require(\"./filters/Brighten\");\nconst Contrast_1 = require(\"./filters/Contrast\");\nconst Emboss_1 = require(\"./filters/Emboss\");\nconst Enhance_1 = require(\"./filters/Enhance\");\nconst Grayscale_1 = require(\"./filters/Grayscale\");\nconst HSL_1 = require(\"./filters/HSL\");\nconst HSV_1 = require(\"./filters/HSV\");\nconst Invert_1 = require(\"./filters/Invert\");\nconst Kaleidoscope_1 = require(\"./filters/Kaleidoscope\");\nconst Mask_1 = require(\"./filters/Mask\");\nconst Noise_1 = require(\"./filters/Noise\");\nconst Pixelate_1 = require(\"./filters/Pixelate\");\nconst Posterize_1 = require(\"./filters/Posterize\");\nconst RGB_1 = require(\"./filters/RGB\");\nconst RGBA_1 = require(\"./filters/RGBA\");\nconst Sepia_1 = require(\"./filters/Sepia\");\nconst Solarize_1 = require(\"./filters/Solarize\");\nconst Threshold_1 = require(\"./filters/Threshold\");\nexports.Konva = _CoreInternals_1.Konva.Util._assign(_CoreInternals_1.Konva, {\n    Arc: Arc_1.Arc,\n    Arrow: Arrow_1.Arrow,\n    Circle: Circle_1.Circle,\n    Ellipse: Ellipse_1.Ellipse,\n    Image: Image_1.Image,\n    Label: Label_1.Label,\n    Tag: Label_1.Tag,\n    Line: Line_1.Line,\n    Path: Path_1.Path,\n    Rect: Rect_1.Rect,\n    RegularPolygon: RegularPolygon_1.RegularPolygon,\n    Ring: Ring_1.Ring,\n    Sprite: Sprite_1.Sprite,\n    Star: Star_1.Star,\n    Text: Text_1.Text,\n    TextPath: TextPath_1.TextPath,\n    Transformer: Transformer_1.Transformer,\n    Wedge: Wedge_1.Wedge,\n    Filters: {\n        Blur: Blur_1.Blur,\n        Brighten: Brighten_1.Brighten,\n        Contrast: Contrast_1.Contrast,\n        Emboss: Emboss_1.Emboss,\n        Enhance: Enhance_1.Enhance,\n        Grayscale: Grayscale_1.Grayscale,\n        HSL: HSL_1.HSL,\n        HSV: HSV_1.HSV,\n        Invert: Invert_1.Invert,\n        Kaleidoscope: Kaleidoscope_1.Kaleidoscope,\n        Mask: Mask_1.Mask,\n        Noise: Noise_1.Noise,\n        Pixelate: Pixelate_1.Pixelate,\n        Posterize: Posterize_1.Posterize,\n        RGB: RGB_1.RGB,\n        RGBA: RGBA_1.RGBA,\n        Sepia: Sepia_1.Sepia,\n        Solarize: Solarize_1.Solarize,\n        Threshold: Threshold_1.Threshold,\n    },\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst _FullInternals_1 = require(\"./_FullInternals\");\nmodule.exports = _FullInternals_1.Konva;\n"],
-  "mappings": "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AAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA,MACd,CAAC;AAAA,MACD,CAAC;AAAA,MACD,CAAC,GAAK,CAAG;AAAA,MACT;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;A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AK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,IAC1E;AACA,QAAI,YAAY;AAAA,MACZ;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC3E;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;A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",
-  "names": ["i", "v", "u", "width", "node", "_a", "Blur"]
+  "sources": ["../../konva/lib/Util.js", "../../konva/lib/Validators.js", "../../konva/lib/Factory.js", "../../konva/lib/Context.js", "../../konva/lib/Canvas.js", "../../konva/lib/DragAndDrop.js", "../../konva/lib/Node.js", "../../konva/lib/Container.js", "../../konva/lib/PointerEvents.js", "../../konva/lib/Stage.js", "../../konva/lib/Shape.js", "../../konva/lib/Layer.js", "../../konva/lib/FastLayer.js", "../../konva/lib/Group.js", "../../konva/lib/Animation.js", "../../konva/lib/Tween.js", "../../konva/lib/_CoreInternals.js", "../../konva/lib/shapes/Arc.js", "../../konva/lib/shapes/Line.js", "../../konva/lib/BezierFunctions.js", "../../konva/lib/shapes/Path.js", "../../konva/lib/shapes/Arrow.js", "../../konva/lib/shapes/Circle.js", "../../konva/lib/shapes/Ellipse.js", "../../konva/lib/shapes/Image.js", "../../konva/lib/shapes/Label.js", "../../konva/lib/shapes/Rect.js", "../../konva/lib/shapes/RegularPolygon.js", "../../konva/lib/shapes/Ring.js", "../../konva/lib/shapes/Sprite.js", "../../konva/lib/shapes/Star.js", "../../konva/lib/shapes/Text.js", "../../konva/lib/shapes/TextPath.js", "../../konva/lib/shapes/Transformer.js", "../../konva/lib/shapes/Wedge.js", "../../konva/lib/filters/Blur.js", "../../konva/lib/filters/Brighten.js", "../../konva/lib/filters/Contrast.js", "../../konva/lib/filters/Emboss.js", "../../konva/lib/filters/Enhance.js", "../../konva/lib/filters/Grayscale.js", "../../konva/lib/filters/HSL.js", "../../konva/lib/filters/HSV.js", "../../konva/lib/filters/Invert.js", "../../konva/lib/filters/Kaleidoscope.js", "../../konva/lib/filters/Mask.js", "../../konva/lib/filters/Noise.js", "../../konva/lib/filters/Pixelate.js", "../../konva/lib/filters/Posterize.js", "../../konva/lib/filters/RGB.js", "../../konva/lib/filters/RGBA.js", "../../konva/lib/filters/Sepia.js", "../../konva/lib/filters/Solarize.js", "../../konva/lib/filters/Threshold.js", "../../konva/lib/_FullInternals.js", "../../konva/lib/index.js"],
+  "sourcesContent": ["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.Transform = void 0;\nconst Global_1 = require(\"./Global\");\nclass 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 = exports.Util._getRotation(result.rotation);\n        return result;\n    }\n}\nexports.Transform = Transform;\nlet OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', RGB_PAREN = 'rgb(', COLORS = {\n    aliceblue: [240, 248, 255],\n    antiquewhite: [250, 235, 215],\n    aqua: [0, 255, 255],\n    aquamarine: [127, 255, 212],\n    azure: [240, 255, 255],\n    beige: [245, 245, 220],\n    bisque: [255, 228, 196],\n    black: [0, 0, 0],\n    blanchedalmond: [255, 235, 205],\n    blue: [0, 0, 255],\n    blueviolet: [138, 43, 226],\n    brown: [165, 42, 42],\n    burlywood: [222, 184, 135],\n    cadetblue: [95, 158, 160],\n    chartreuse: [127, 255, 0],\n    chocolate: [210, 105, 30],\n    coral: [255, 127, 80],\n    cornflowerblue: [100, 149, 237],\n    cornsilk: [255, 248, 220],\n    crimson: [220, 20, 60],\n    cyan: [0, 255, 255],\n    darkblue: [0, 0, 139],\n    darkcyan: [0, 139, 139],\n    darkgoldenrod: [184, 132, 11],\n    darkgray: [169, 169, 169],\n    darkgreen: [0, 100, 0],\n    darkgrey: [169, 169, 169],\n    darkkhaki: [189, 183, 107],\n    darkmagenta: [139, 0, 139],\n    darkolivegreen: [85, 107, 47],\n    darkorange: [255, 140, 0],\n    darkorchid: [153, 50, 204],\n    darkred: [139, 0, 0],\n    darksalmon: [233, 150, 122],\n    darkseagreen: [143, 188, 143],\n    darkslateblue: [72, 61, 139],\n    darkslategray: [47, 79, 79],\n    darkslategrey: [47, 79, 79],\n    darkturquoise: [0, 206, 209],\n    darkviolet: [148, 0, 211],\n    deeppink: [255, 20, 147],\n    deepskyblue: [0, 191, 255],\n    dimgray: [105, 105, 105],\n    dimgrey: [105, 105, 105],\n    dodgerblue: [30, 144, 255],\n    firebrick: [178, 34, 34],\n    floralwhite: [255, 255, 240],\n    forestgreen: [34, 139, 34],\n    fuchsia: [255, 0, 255],\n    gainsboro: [220, 220, 220],\n    ghostwhite: [248, 248, 255],\n    gold: [255, 215, 0],\n    goldenrod: [218, 165, 32],\n    gray: [128, 128, 128],\n    green: [0, 128, 0],\n    greenyellow: [173, 255, 47],\n    grey: [128, 128, 128],\n    honeydew: [240, 255, 240],\n    hotpink: [255, 105, 180],\n    indianred: [205, 92, 92],\n    indigo: [75, 0, 130],\n    ivory: [255, 255, 240],\n    khaki: [240, 230, 140],\n    lavender: [230, 230, 250],\n    lavenderblush: [255, 240, 245],\n    lawngreen: [124, 252, 0],\n    lemonchiffon: [255, 250, 205],\n    lightblue: [173, 216, 230],\n    lightcoral: [240, 128, 128],\n    lightcyan: [224, 255, 255],\n    lightgoldenrodyellow: [250, 250, 210],\n    lightgray: [211, 211, 211],\n    lightgreen: [144, 238, 144],\n    lightgrey: [211, 211, 211],\n    lightpink: [255, 182, 193],\n    lightsalmon: [255, 160, 122],\n    lightseagreen: [32, 178, 170],\n    lightskyblue: [135, 206, 250],\n    lightslategray: [119, 136, 153],\n    lightslategrey: [119, 136, 153],\n    lightsteelblue: [176, 196, 222],\n    lightyellow: [255, 255, 224],\n    lime: [0, 255, 0],\n    limegreen: [50, 205, 50],\n    linen: [250, 240, 230],\n    magenta: [255, 0, 255],\n    maroon: [128, 0, 0],\n    mediumaquamarine: [102, 205, 170],\n    mediumblue: [0, 0, 205],\n    mediumorchid: [186, 85, 211],\n    mediumpurple: [147, 112, 219],\n    mediumseagreen: [60, 179, 113],\n    mediumslateblue: [123, 104, 238],\n    mediumspringgreen: [0, 250, 154],\n    mediumturquoise: [72, 209, 204],\n    mediumvioletred: [199, 21, 133],\n    midnightblue: [25, 25, 112],\n    mintcream: [245, 255, 250],\n    mistyrose: [255, 228, 225],\n    moccasin: [255, 228, 181],\n    navajowhite: [255, 222, 173],\n    navy: [0, 0, 128],\n    oldlace: [253, 245, 230],\n    olive: [128, 128, 0],\n    olivedrab: [107, 142, 35],\n    orange: [255, 165, 0],\n    orangered: [255, 69, 0],\n    orchid: [218, 112, 214],\n    palegoldenrod: [238, 232, 170],\n    palegreen: [152, 251, 152],\n    paleturquoise: [175, 238, 238],\n    palevioletred: [219, 112, 147],\n    papayawhip: [255, 239, 213],\n    peachpuff: [255, 218, 185],\n    peru: [205, 133, 63],\n    pink: [255, 192, 203],\n    plum: [221, 160, 203],\n    powderblue: [176, 224, 230],\n    purple: [128, 0, 128],\n    rebeccapurple: [102, 51, 153],\n    red: [255, 0, 0],\n    rosybrown: [188, 143, 143],\n    royalblue: [65, 105, 225],\n    saddlebrown: [139, 69, 19],\n    salmon: [250, 128, 114],\n    sandybrown: [244, 164, 96],\n    seagreen: [46, 139, 87],\n    seashell: [255, 245, 238],\n    sienna: [160, 82, 45],\n    silver: [192, 192, 192],\n    skyblue: [135, 206, 235],\n    slateblue: [106, 90, 205],\n    slategray: [119, 128, 144],\n    slategrey: [119, 128, 144],\n    snow: [255, 255, 250],\n    springgreen: [0, 255, 127],\n    steelblue: [70, 130, 180],\n    tan: [210, 180, 140],\n    teal: [0, 128, 128],\n    thistle: [216, 191, 216],\n    transparent: [255, 255, 255, 0],\n    tomato: [255, 99, 71],\n    turquoise: [64, 224, 208],\n    violet: [238, 130, 238],\n    wheat: [245, 222, 179],\n    white: [255, 255, 255],\n    whitesmoke: [245, 245, 245],\n    yellow: [255, 255, 0],\n    yellowgreen: [154, 205, 5],\n}, RGB_REGEX = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/, animQueue = [];\nconst req = (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame) ||\n    function (f) {\n        setTimeout(f, 60);\n    };\nexports.Util = {\n    _isElement(obj) {\n        return !!(obj && obj.nodeType == 1);\n    },\n    _isFunction(obj) {\n        return !!(obj && obj.constructor && obj.call && obj.apply);\n    },\n    _isPlainObject(obj) {\n        return !!obj && obj.constructor === Object;\n    },\n    _isArray(obj) {\n        return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\n    },\n    _isNumber(obj) {\n        return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\n            !isNaN(obj) &&\n            isFinite(obj));\n    },\n    _isString(obj) {\n        return Object.prototype.toString.call(obj) === OBJECT_STRING;\n    },\n    _isBoolean(obj) {\n        return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\n    },\n    isObject(val) {\n        return val instanceof Object;\n    },\n    isValidSelector(selector) {\n        if (typeof selector !== 'string') {\n            return false;\n        }\n        const firstChar = selector[0];\n        return (firstChar === '#' ||\n            firstChar === '.' ||\n            firstChar === firstChar.toUpperCase());\n    },\n    _sign(number) {\n        if (number === 0) {\n            return 1;\n        }\n        if (number > 0) {\n            return 1;\n        }\n        else {\n            return -1;\n        }\n    },\n    requestAnimFrame(callback) {\n        animQueue.push(callback);\n        if (animQueue.length === 1) {\n            req(function () {\n                const queue = animQueue;\n                animQueue = [];\n                queue.forEach(function (cb) {\n                    cb();\n                });\n            });\n        }\n    },\n    createCanvasElement() {\n        const canvas = document.createElement('canvas');\n        try {\n            canvas.style = canvas.style || {};\n        }\n        catch (e) { }\n        return canvas;\n    },\n    createImageElement() {\n        return document.createElement('img');\n    },\n    _isInDocument(el) {\n        while ((el = el.parentNode)) {\n            if (el == document) {\n                return true;\n            }\n        }\n        return false;\n    },\n    _urlToImage(url, callback) {\n        const imageObj = exports.Util.createImageElement();\n        imageObj.onload = function () {\n            callback(imageObj);\n        };\n        imageObj.src = url;\n    },\n    _rgbToHex(r, g, b) {\n        return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n    },\n    _hexToRgb(hex) {\n        hex = hex.replace(HASH, EMPTY_STRING);\n        const bigint = parseInt(hex, 16);\n        return {\n            r: (bigint >> 16) & 255,\n            g: (bigint >> 8) & 255,\n            b: bigint & 255,\n        };\n    },\n    getRandomColor() {\n        let randColor = ((Math.random() * 0xffffff) << 0).toString(16);\n        while (randColor.length < 6) {\n            randColor = ZERO + randColor;\n        }\n        return HASH + randColor;\n    },\n    getRGB(color) {\n        let rgb;\n        if (color in COLORS) {\n            rgb = COLORS[color];\n            return {\n                r: rgb[0],\n                g: rgb[1],\n                b: rgb[2],\n            };\n        }\n        else if (color[0] === HASH) {\n            return this._hexToRgb(color.substring(1));\n        }\n        else if (color.substr(0, 4) === RGB_PAREN) {\n            rgb = RGB_REGEX.exec(color.replace(/ /g, ''));\n            return {\n                r: parseInt(rgb[1], 10),\n                g: parseInt(rgb[2], 10),\n                b: parseInt(rgb[3], 10),\n            };\n        }\n        else {\n            return {\n                r: 0,\n                g: 0,\n                b: 0,\n            };\n        }\n    },\n    colorToRGBA(str) {\n        str = str || 'black';\n        return (exports.Util._namedColorToRBA(str) ||\n            exports.Util._hex3ColorToRGBA(str) ||\n            exports.Util._hex4ColorToRGBA(str) ||\n            exports.Util._hex6ColorToRGBA(str) ||\n            exports.Util._hex8ColorToRGBA(str) ||\n            exports.Util._rgbColorToRGBA(str) ||\n            exports.Util._rgbaColorToRGBA(str) ||\n            exports.Util._hslColorToRGBA(str));\n    },\n    _namedColorToRBA(str) {\n        const c = COLORS[str.toLowerCase()];\n        if (!c) {\n            return null;\n        }\n        return {\n            r: c[0],\n            g: c[1],\n            b: c[2],\n            a: 1,\n        };\n    },\n    _rgbColorToRGBA(str) {\n        if (str.indexOf('rgb(') === 0) {\n            str = str.match(/rgb\\(([^)]+)\\)/)[1];\n            const parts = str.split(/ *, */).map(Number);\n            return {\n                r: parts[0],\n                g: parts[1],\n                b: parts[2],\n                a: 1,\n            };\n        }\n    },\n    _rgbaColorToRGBA(str) {\n        if (str.indexOf('rgba(') === 0) {\n            str = str.match(/rgba\\(([^)]+)\\)/)[1];\n            const parts = str.split(/ *, */).map((n, index) => {\n                if (n.slice(-1) === '%') {\n                    return index === 3 ? parseInt(n) / 100 : (parseInt(n) / 100) * 255;\n                }\n                return Number(n);\n            });\n            return {\n                r: parts[0],\n                g: parts[1],\n                b: parts[2],\n                a: parts[3],\n            };\n        }\n    },\n    _hex8ColorToRGBA(str) {\n        if (str[0] === '#' && str.length === 9) {\n            return {\n                r: parseInt(str.slice(1, 3), 16),\n                g: parseInt(str.slice(3, 5), 16),\n                b: parseInt(str.slice(5, 7), 16),\n                a: parseInt(str.slice(7, 9), 16) / 0xff,\n            };\n        }\n    },\n    _hex6ColorToRGBA(str) {\n        if (str[0] === '#' && str.length === 7) {\n            return {\n                r: parseInt(str.slice(1, 3), 16),\n                g: parseInt(str.slice(3, 5), 16),\n                b: parseInt(str.slice(5, 7), 16),\n                a: 1,\n            };\n        }\n    },\n    _hex4ColorToRGBA(str) {\n        if (str[0] === '#' && str.length === 5) {\n            return {\n                r: parseInt(str[1] + str[1], 16),\n                g: parseInt(str[2] + str[2], 16),\n                b: parseInt(str[3] + str[3], 16),\n                a: parseInt(str[4] + str[4], 16) / 0xff,\n            };\n        }\n    },\n    _hex3ColorToRGBA(str) {\n        if (str[0] === '#' && str.length === 4) {\n            return {\n                r: parseInt(str[1] + str[1], 16),\n                g: parseInt(str[2] + str[2], 16),\n                b: parseInt(str[3] + str[3], 16),\n                a: 1,\n            };\n        }\n    },\n    _hslColorToRGBA(str) {\n        if (/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.test(str)) {\n            const [_, ...hsl] = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(str);\n            const h = Number(hsl[0]) / 360;\n            const s = Number(hsl[1]) / 100;\n            const l = Number(hsl[2]) / 100;\n            let t2;\n            let t3;\n            let val;\n            if (s === 0) {\n                val = l * 255;\n                return {\n                    r: Math.round(val),\n                    g: Math.round(val),\n                    b: Math.round(val),\n                    a: 1,\n                };\n            }\n            if (l < 0.5) {\n                t2 = l * (1 + s);\n            }\n            else {\n                t2 = l + s - l * s;\n            }\n            const t1 = 2 * l - t2;\n            const rgb = [0, 0, 0];\n            for (let i = 0; i < 3; i++) {\n                t3 = h + (1 / 3) * -(i - 1);\n                if (t3 < 0) {\n                    t3++;\n                }\n                if (t3 > 1) {\n                    t3--;\n                }\n                if (6 * t3 < 1) {\n                    val = t1 + (t2 - t1) * 6 * t3;\n                }\n                else if (2 * t3 < 1) {\n                    val = t2;\n                }\n                else if (3 * t3 < 2) {\n                    val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n                }\n                else {\n                    val = t1;\n                }\n                rgb[i] = val * 255;\n            }\n            return {\n                r: Math.round(rgb[0]),\n                g: Math.round(rgb[1]),\n                b: Math.round(rgb[2]),\n                a: 1,\n            };\n        }\n    },\n    haveIntersection(r1, r2) {\n        return !(r2.x > r1.x + r1.width ||\n            r2.x + r2.width < r1.x ||\n            r2.y > r1.y + r1.height ||\n            r2.y + r2.height < r1.y);\n    },\n    cloneObject(obj) {\n        const retObj = {};\n        for (const key in obj) {\n            if (this._isPlainObject(obj[key])) {\n                retObj[key] = this.cloneObject(obj[key]);\n            }\n            else if (this._isArray(obj[key])) {\n                retObj[key] = this.cloneArray(obj[key]);\n            }\n            else {\n                retObj[key] = obj[key];\n            }\n        }\n        return retObj;\n    },\n    cloneArray(arr) {\n        return arr.slice(0);\n    },\n    degToRad(deg) {\n        return deg * PI_OVER_DEG180;\n    },\n    radToDeg(rad) {\n        return rad * DEG180_OVER_PI;\n    },\n    _degToRad(deg) {\n        exports.Util.warn('Util._degToRad is removed. Please use public Util.degToRad instead.');\n        return exports.Util.degToRad(deg);\n    },\n    _radToDeg(rad) {\n        exports.Util.warn('Util._radToDeg is removed. Please use public Util.radToDeg instead.');\n        return exports.Util.radToDeg(rad);\n    },\n    _getRotation(radians) {\n        return Global_1.Konva.angleDeg ? exports.Util.radToDeg(radians) : radians;\n    },\n    _capitalize(str) {\n        return str.charAt(0).toUpperCase() + str.slice(1);\n    },\n    throw(str) {\n        throw new Error(KONVA_ERROR + str);\n    },\n    error(str) {\n        console.error(KONVA_ERROR + str);\n    },\n    warn(str) {\n        if (!Global_1.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 = exports.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 = exports.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        let n, start = [], end = [];\n        if (startArray.length > endArray.length) {\n            const temp = endArray;\n            endArray = startArray;\n            startArray = temp;\n        }\n        for (n = 0; n < startArray.length; n += 2) {\n            start.push({\n                x: startArray[n],\n                y: startArray[n + 1],\n            });\n        }\n        for (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 = exports.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                exports.Util._isElement(obj[key])) {\n                if (desc.configurable) {\n                    delete obj[key];\n                }\n                else {\n                    return null;\n                }\n            }\n            else if (exports.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 (!Global_1.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 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(topLeft, 0);\n        context.lineTo(width - topRight, 0);\n        context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n        context.lineTo(width, height - bottomRight);\n        context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n        context.lineTo(bottomLeft, height);\n        context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n        context.lineTo(0, topLeft);\n        context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n    },\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGBComponent = RGBComponent;\nexports.alphaComponent = alphaComponent;\nexports.getNumberValidator = getNumberValidator;\nexports.getNumberOrArrayOfNumbersValidator = getNumberOrArrayOfNumbersValidator;\nexports.getNumberOrAutoValidator = getNumberOrAutoValidator;\nexports.getStringValidator = getStringValidator;\nexports.getStringOrGradientValidator = getStringOrGradientValidator;\nexports.getFunctionValidator = getFunctionValidator;\nexports.getNumberArrayValidator = getNumberArrayValidator;\nexports.getBooleanValidator = getBooleanValidator;\nexports.getComponentValidator = getComponentValidator;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nfunction _formatValue(val) {\n    if (Util_1.Util._isString(val)) {\n        return '\"' + val + '\"';\n    }\n    if (Object.prototype.toString.call(val) === '[object Number]') {\n        return val;\n    }\n    if (Util_1.Util._isBoolean(val)) {\n        return val;\n    }\n    return Object.prototype.toString.call(val);\n}\nfunction 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}\nfunction 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}\nfunction getNumberValidator() {\n    if (Global_1.Konva.isUnminified) {\n        return function (val, attr) {\n            if (!Util_1.Util._isNumber(val)) {\n                Util_1.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}\nfunction getNumberOrArrayOfNumbersValidator(noOfElements) {\n    if (Global_1.Konva.isUnminified) {\n        return function (val, attr) {\n            const isNumber = Util_1.Util._isNumber(val);\n            const isValidArray = Util_1.Util._isArray(val) && val.length == noOfElements;\n            if (!isNumber && !isValidArray) {\n                Util_1.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}\nfunction getNumberOrAutoValidator() {\n    if (Global_1.Konva.isUnminified) {\n        return function (val, attr) {\n            const isNumber = Util_1.Util._isNumber(val);\n            const isAuto = val === 'auto';\n            if (!(isNumber || isAuto)) {\n                Util_1.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}\nfunction getStringValidator() {\n    if (Global_1.Konva.isUnminified) {\n        return function (val, attr) {\n            if (!Util_1.Util._isString(val)) {\n                Util_1.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}\nfunction getStringOrGradientValidator() {\n    if (Global_1.Konva.isUnminified) {\n        return function (val, attr) {\n            const isString = Util_1.Util._isString(val);\n            const isGradient = Object.prototype.toString.call(val) === '[object CanvasGradient]' ||\n                (val && val.addColorStop);\n            if (!(isString || isGradient)) {\n                Util_1.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}\nfunction getFunctionValidator() {\n    if (Global_1.Konva.isUnminified) {\n        return function (val, attr) {\n            if (!Util_1.Util._isFunction(val)) {\n                Util_1.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}\nfunction getNumberArrayValidator() {\n    if (Global_1.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_1.Util._isArray(val)) {\n                Util_1.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_1.Util._isNumber(item)) {\n                        Util_1.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}\nfunction getBooleanValidator() {\n    if (Global_1.Konva.isUnminified) {\n        return function (val, attr) {\n            const isBool = val === true || val === false;\n            if (!isBool) {\n                Util_1.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}\nfunction getComponentValidator(components) {\n    if (Global_1.Konva.isUnminified) {\n        return function (val, attr) {\n            if (val === undefined || val === null) {\n                return val;\n            }\n            if (!Util_1.Util.isObject(val)) {\n                Util_1.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", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Factory = void 0;\nconst Util_1 = require(\"./Util\");\nconst Validators_1 = require(\"./Validators\");\nconst GET = 'get', SET = 'set';\nexports.Factory = {\n    addGetterSetter(constructor, attr, def, validator, after) {\n        exports.Factory.addGetter(constructor, attr, def);\n        exports.Factory.addSetter(constructor, attr, validator, after);\n        exports.Factory.addOverloadedGetterSetter(constructor, attr);\n    },\n    addGetter(constructor, attr, def) {\n        const method = GET + Util_1.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_1.Util._capitalize(attr);\n        if (!constructor.prototype[method]) {\n            exports.Factory.overWriteSetter(constructor, attr, validator, after);\n        }\n    },\n    overWriteSetter(constructor, attr, validator, after) {\n        const method = SET + Util_1.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        let len = components.length, capitalize = Util_1.Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr), n, component;\n        constructor.prototype[getter] = function () {\n            const ret = {};\n            for (n = 0; n < len; n++) {\n                component = components[n];\n                ret[component] = this.getAttr(attr + capitalize(component));\n            }\n            return ret;\n        };\n        const basicValidator = (0, Validators_1.getComponentValidator)(components);\n        constructor.prototype[setter] = function (val) {\n            let oldVal = this.attrs[attr], key;\n            if (validator) {\n                val = validator.call(this, val);\n            }\n            if (basicValidator) {\n                basicValidator.call(this, val, attr);\n            }\n            for (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        exports.Factory.addOverloadedGetterSetter(constructor, attr);\n    },\n    addOverloadedGetterSetter(constructor, attr) {\n        const capitalizedAttr = Util_1.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_1.Util.error('Adding deprecated ' + attr);\n        const method = GET + Util_1.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_1.Util.error(message);\n            const val = this.attrs[attr];\n            return val === undefined ? def : val;\n        };\n        exports.Factory.addSetter(constructor, attr, validator, function () {\n            Util_1.Util.error(message);\n        });\n        exports.Factory.addOverloadedGetterSetter(constructor, attr);\n    },\n    backCompat(constructor, methods) {\n        Util_1.Util.each(methods, function (oldMethodName, newMethodName) {\n            const method = constructor.prototype[newMethodName];\n            const oldGetter = GET + Util_1.Util._capitalize(oldMethodName);\n            const oldSetter = SET + Util_1.Util._capitalize(oldMethodName);\n            function deprecated() {\n                method.apply(this, arguments);\n                Util_1.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", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HitContext = exports.SceneContext = exports.Context = void 0;\nconst Util_1 = require(\"./Util\");\nconst Global_1 = require(\"./Global\");\nfunction simplifyArray(arr) {\n    let retArr = [], len = arr.length, util = Util_1.Util, n, val;\n    for (n = 0; n < len; n++) {\n        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];\nconst traceArrMax = 100;\nclass Context {\n    constructor(canvas) {\n        this.canvas = canvas;\n        if (Global_1.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_1.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    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}\nexports.Context = Context;\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});\nclass SceneContext extends Context {\n    constructor(canvas, { willReadFrequently = false } = {}) {\n        super(canvas);\n        this._context = canvas._canvas.getContext('2d', {\n            willReadFrequently,\n        });\n    }\n    _fillColor(shape) {\n        const fill = shape.fill();\n        this.setAttr('fillStyle', fill);\n        shape._fillFunc(this);\n    }\n    _fillPattern(shape) {\n        this.setAttr('fillStyle', shape._getFillPattern());\n        shape._fillFunc(this);\n    }\n    _fillLinearGradient(shape) {\n        const grd = shape._getLinearGradient();\n        if (grd) {\n            this.setAttr('fillStyle', grd);\n            shape._fillFunc(this);\n        }\n    }\n    _fillRadialGradient(shape) {\n        const grd = shape._getRadialGradient();\n        if (grd) {\n            this.setAttr('fillStyle', grd);\n            shape._fillFunc(this);\n        }\n    }\n    _fill(shape) {\n        const hasColor = shape.fill(), fillPriority = shape.getFillPriority();\n        if (hasColor && fillPriority === 'color') {\n            this._fillColor(shape);\n            return;\n        }\n        const hasPattern = shape.getFillPatternImage();\n        if (hasPattern && fillPriority === 'pattern') {\n            this._fillPattern(shape);\n            return;\n        }\n        const hasLinearGradient = shape.getFillLinearGradientColorStops();\n        if (hasLinearGradient && fillPriority === 'linear-gradient') {\n            this._fillLinearGradient(shape);\n            return;\n        }\n        const hasRadialGradient = shape.getFillRadialGradientColorStops();\n        if (hasRadialGradient && fillPriority === 'radial-gradient') {\n            this._fillRadialGradient(shape);\n            return;\n        }\n        if (hasColor) {\n            this._fillColor(shape);\n        }\n        else if (hasPattern) {\n            this._fillPattern(shape);\n        }\n        else if (hasLinearGradient) {\n            this._fillLinearGradient(shape);\n        }\n        else if (hasRadialGradient) {\n            this._fillRadialGradient(shape);\n        }\n    }\n    _strokeLinearGradient(shape) {\n        const start = shape.getStrokeLinearGradientStartPoint(), end = shape.getStrokeLinearGradientEndPoint(), colorStops = shape.getStrokeLinearGradientColorStops(), grd = this.createLinearGradient(start.x, start.y, end.x, end.y);\n        if (colorStops) {\n            for (let n = 0; n < colorStops.length; n += 2) {\n                grd.addColorStop(colorStops[n], colorStops[n + 1]);\n            }\n            this.setAttr('strokeStyle', grd);\n        }\n    }\n    _stroke(shape) {\n        const dash = shape.dash(), strokeScaleEnabled = shape.getStrokeScaleEnabled();\n        if (shape.hasStroke()) {\n            if (!strokeScaleEnabled) {\n                this.save();\n                const pixelRatio = this.getCanvas().getPixelRatio();\n                this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n            }\n            this._applyLineCap(shape);\n            if (dash && shape.dashEnabled()) {\n                this.setLineDash(dash);\n                this.setAttr('lineDashOffset', shape.dashOffset());\n            }\n            this.setAttr('lineWidth', shape.strokeWidth());\n            if (!shape.getShadowForStrokeEnabled()) {\n                this.setAttr('shadowColor', 'rgba(0,0,0,0)');\n            }\n            const hasLinearGradient = shape.getStrokeLinearGradientColorStops();\n            if (hasLinearGradient) {\n                this._strokeLinearGradient(shape);\n            }\n            else {\n                this.setAttr('strokeStyle', shape.stroke());\n            }\n            shape._strokeFunc(this);\n            if (!strokeScaleEnabled) {\n                this.restore();\n            }\n        }\n    }\n    _applyShadow(shape) {\n        var _a, _b, _c;\n        const color = (_a = shape.getShadowRGBA()) !== null && _a !== void 0 ? _a : 'black', blur = (_b = shape.getShadowBlur()) !== null && _b !== void 0 ? _b : 5, offset = (_c = shape.getShadowOffset()) !== null && _c !== void 0 ? _c : {\n            x: 0,\n            y: 0,\n        }, scale = shape.getAbsoluteScale(), ratio = this.canvas.getPixelRatio(), scaleX = scale.x * ratio, scaleY = scale.y * ratio;\n        this.setAttr('shadowColor', color);\n        this.setAttr('shadowBlur', blur * Math.min(Math.abs(scaleX), Math.abs(scaleY)));\n        this.setAttr('shadowOffsetX', offset.x * scaleX);\n        this.setAttr('shadowOffsetY', offset.y * scaleY);\n    }\n}\nexports.SceneContext = SceneContext;\nclass 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}\nexports.HitContext = HitContext;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HitCanvas = exports.SceneCanvas = exports.Canvas = void 0;\nconst Util_1 = require(\"./Util\");\nconst Context_1 = require(\"./Context\");\nconst Global_1 = require(\"./Global\");\nconst Factory_1 = require(\"./Factory\");\nconst Validators_1 = require(\"./Validators\");\nlet _pixelRatio;\nfunction getDevicePixelRatio() {\n    if (_pixelRatio) {\n        return _pixelRatio;\n    }\n    const canvas = Util_1.Util.createCanvasElement();\n    const context = canvas.getContext('2d');\n    _pixelRatio = (function () {\n        const devicePixelRatio = Global_1.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_1.Util.releaseCanvas(canvas);\n    return _pixelRatio;\n}\nclass 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 || Global_1.Konva.pixelRatio || getDevicePixelRatio();\n        this.pixelRatio = pixelRatio;\n        this._canvas = Util_1.Util.createCanvasElement();\n        this._canvas.style.padding = '0';\n        this._canvas.style.margin = '0';\n        this._canvas.style.border = '0';\n        this._canvas.style.background = 'transparent';\n        this._canvas.style.position = 'absolute';\n        this._canvas.style.top = '0';\n        this._canvas.style.left = '0';\n    }\n    getContext() {\n        return this.context;\n    }\n    getPixelRatio() {\n        return this.pixelRatio;\n    }\n    setPixelRatio(pixelRatio) {\n        const previousRatio = this.pixelRatio;\n        this.pixelRatio = pixelRatio;\n        this.setSize(this.getWidth() / previousRatio, this.getHeight() / previousRatio);\n    }\n    setWidth(width) {\n        this.width = this._canvas.width = width * this.pixelRatio;\n        this._canvas.style.width = width + 'px';\n        const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n        _context.scale(pixelRatio, pixelRatio);\n    }\n    setHeight(height) {\n        this.height = this._canvas.height = height * this.pixelRatio;\n        this._canvas.style.height = height + 'px';\n        const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n        _context.scale(pixelRatio, pixelRatio);\n    }\n    getWidth() {\n        return this.width;\n    }\n    getHeight() {\n        return this.height;\n    }\n    setSize(width, height) {\n        this.setWidth(width || 0);\n        this.setHeight(height || 0);\n    }\n    toDataURL(mimeType, quality) {\n        try {\n            return this._canvas.toDataURL(mimeType, quality);\n        }\n        catch (e) {\n            try {\n                return this._canvas.toDataURL();\n            }\n            catch (err) {\n                Util_1.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}\nexports.Canvas = Canvas;\nFactory_1.Factory.addGetterSetter(Canvas, 'pixelRatio', undefined, (0, Validators_1.getNumberValidator)());\nclass SceneCanvas extends Canvas {\n    constructor(config = { width: 0, height: 0, willReadFrequently: false }) {\n        super(config);\n        this.context = new Context_1.SceneContext(this, {\n            willReadFrequently: config.willReadFrequently,\n        });\n        this.setSize(config.width, config.height);\n    }\n}\nexports.SceneCanvas = SceneCanvas;\nclass HitCanvas extends Canvas {\n    constructor(config = { width: 0, height: 0 }) {\n        super(config);\n        this.hitCanvas = true;\n        this.context = new Context_1.HitContext(this);\n        this.setSize(config.width, config.height);\n    }\n}\nexports.HitCanvas = HitCanvas;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DD = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nexports.DD = {\n    get isDragging() {\n        let flag = false;\n        exports.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        exports.DD._dragElements.forEach((elem) => {\n            node = elem.node;\n        });\n        return node;\n    },\n    _dragElements: new Map(),\n    _drag(evt) {\n        const nodesToFireEvents = [];\n        exports.DD._dragElements.forEach((elem, key) => {\n            const { node } = elem;\n            const stage = node.getStage();\n            stage.setPointersPositions(evt);\n            if (elem.pointerId === undefined) {\n                elem.pointerId = Util_1.Util._getFirstPointerId(evt);\n            }\n            const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n            if (!pos) {\n                return;\n            }\n            if (elem.dragStatus !== 'dragging') {\n                const dragDistance = node.dragDistance();\n                const distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y));\n                if (distance < dragDistance) {\n                    return;\n                }\n                node.startDrag({ evt });\n                if (!node.isDragging()) {\n                    return;\n                }\n            }\n            node._setDragPosition(evt, elem);\n            nodesToFireEvents.push(node);\n        });\n        nodesToFireEvents.forEach((node) => {\n            node.fire('dragmove', {\n                type: 'dragmove',\n                target: node,\n                evt: evt,\n            }, true);\n        });\n    },\n    _endDragBefore(evt) {\n        const drawNodes = [];\n        exports.DD._dragElements.forEach((elem) => {\n            const { node } = elem;\n            const stage = node.getStage();\n            if (evt) {\n                stage.setPointersPositions(evt);\n            }\n            const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n            if (!pos) {\n                return;\n            }\n            if (elem.dragStatus === 'dragging' || elem.dragStatus === 'stopped') {\n                exports.DD.justDragged = true;\n                Global_1.Konva._mouseListenClick = false;\n                Global_1.Konva._touchListenClick = false;\n                Global_1.Konva._pointerListenClick = false;\n                elem.dragStatus = 'stopped';\n            }\n            const drawNode = elem.node.getLayer() ||\n                (elem.node instanceof Global_1.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        exports.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                exports.DD._dragElements.delete(key);\n            }\n        });\n    },\n};\nif (Global_1.Konva.isBrowser) {\n    window.addEventListener('mouseup', exports.DD._endDragBefore, true);\n    window.addEventListener('touchend', exports.DD._endDragBefore, true);\n    window.addEventListener('touchcancel', exports.DD._endDragBefore, true);\n    window.addEventListener('mousemove', exports.DD._drag);\n    window.addEventListener('touchmove', exports.DD._drag);\n    window.addEventListener('mouseup', exports.DD._endDragAfter, false);\n    window.addEventListener('touchend', exports.DD._endDragAfter, false);\n    window.addEventListener('touchcancel', exports.DD._endDragAfter, false);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Node = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Global_1 = require(\"./Global\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Validators_1 = require(\"./Validators\");\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', 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;\nclass Node {\n    constructor(config) {\n        this._id = idCounter++;\n        this.eventListeners = {};\n        this.attrs = {};\n        this.index = 0;\n        this._allEventListeners = null;\n        this.parent = null;\n        this._cache = new Map();\n        this._attachedDepsListeners = new Map();\n        this._lastPos = null;\n        this._batchingTransformChange = false;\n        this._needClearTransformCache = false;\n        this._filterUpToDate = false;\n        this._isUnderCache = false;\n        this._dragEventId = null;\n        this._shouldFireChangeEvents = false;\n        this.setAttrs(config);\n        this._shouldFireChangeEvents = true;\n    }\n    hasChildren() {\n        return false;\n    }\n    _clearCache(attr) {\n        if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\n            this._cache.get(attr)) {\n            this._cache.get(attr).dirty = true;\n        }\n        else if (attr) {\n            this._cache.delete(attr);\n        }\n        else {\n            this._cache.clear();\n        }\n    }\n    _getCache(attr, privateGetter) {\n        let cache = this._cache.get(attr);\n        const isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n        const invalid = cache === undefined || (isTransform && cache.dirty === true);\n        if (invalid) {\n            cache = privateGetter.call(this);\n            this._cache.set(attr, cache);\n        }\n        return cache;\n    }\n    _calculate(name, deps, getter) {\n        if (!this._attachedDepsListeners.get(name)) {\n            const depsString = deps.map((dep) => dep + 'Change.konva').join(SPACE);\n            this.on(depsString, () => {\n                this._clearCache(name);\n            });\n            this._attachedDepsListeners.set(name, true);\n        }\n        return this._getCache(name, getter);\n    }\n    _getCanvasCache() {\n        return this._cache.get(CANVAS);\n    }\n    _clearSelfAndDescendantCache(attr) {\n        this._clearCache(attr);\n        if (attr === ABSOLUTE_TRANSFORM) {\n            this.fire('absoluteTransformChange');\n        }\n    }\n    clearCache() {\n        if (this._cache.has(CANVAS)) {\n            const { scene, filter, hit } = this._cache.get(CANVAS);\n            Util_1.Util.releaseCanvas(scene, filter, hit);\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_1.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 Canvas_1.SceneCanvas({\n            pixelRatio: pixelRatio,\n            width: width,\n            height: height,\n        }), cachedFilterCanvas = new Canvas_1.SceneCanvas({\n            pixelRatio: pixelRatio,\n            width: 0,\n            height: 0,\n            willReadFrequently: true,\n        }), cachedHitCanvas = new Canvas_1.HitCanvas({\n            pixelRatio: hitCanvasPixelRatio,\n            width: width,\n            height: height,\n        }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.getContext();\n        cachedHitCanvas.isCache = true;\n        cachedSceneCanvas.isCache = true;\n        this._cache.delete(CANVAS);\n        this._filterUpToDate = false;\n        if (conf.imageSmoothingEnabled === false) {\n            cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\n            cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\n        }\n        sceneContext.save();\n        hitContext.save();\n        sceneContext.translate(-x, -y);\n        hitContext.translate(-x, -y);\n        this._isUnderCache = true;\n        this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n        this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n        this.drawScene(cachedSceneCanvas, this);\n        this.drawHit(cachedHitCanvas, this);\n        this._isUnderCache = false;\n        sceneContext.restore();\n        hitContext.restore();\n        if (drawBorder) {\n            sceneContext.save();\n            sceneContext.beginPath();\n            sceneContext.rect(0, 0, width, height);\n            sceneContext.closePath();\n            sceneContext.setAttr('strokeStyle', 'red');\n            sceneContext.setAttr('lineWidth', 5);\n            sceneContext.stroke();\n            sceneContext.restore();\n        }\n        this._cache.set(CANVAS, {\n            scene: cachedSceneCanvas,\n            filter: cachedFilterCanvas,\n            hit: cachedHitCanvas,\n            x: x,\n            y: y,\n        });\n        this._requestDraw();\n        return this;\n    }\n    isCached() {\n        return this._cache.has(CANVAS);\n    }\n    getClientRect(config) {\n        throw new Error('abstract \"getClientRect\" method call');\n    }\n    _transformedRect(rect, top) {\n        const points = [\n            { x: rect.x, y: rect.y },\n            { x: rect.x + rect.width, y: rect.y },\n            { x: rect.x + rect.width, y: rect.y + rect.height },\n            { x: rect.x, y: rect.y + rect.height },\n        ];\n        let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n        const trans = this.getAbsoluteTransform(top);\n        points.forEach(function (point) {\n            const transformed = trans.point(point);\n            if (minX === undefined) {\n                minX = maxX = transformed.x;\n                minY = maxY = transformed.y;\n            }\n            minX = Math.min(minX, transformed.x);\n            minY = Math.min(minY, transformed.y);\n            maxX = Math.max(maxX, transformed.x);\n            maxY = Math.max(maxY, transformed.y);\n        });\n        return {\n            x: minX,\n            y: minY,\n            width: maxX - minX,\n            height: maxY - minY,\n        };\n    }\n    _drawCachedSceneCanvas(context) {\n        context.save();\n        context._applyOpacity(this);\n        context._applyGlobalCompositeOperation(this);\n        const canvasCache = this._getCanvasCache();\n        context.translate(canvasCache.x, canvasCache.y);\n        const cacheCanvas = this._getCachedSceneCanvas();\n        const ratio = cacheCanvas.pixelRatio;\n        context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n        context.restore();\n    }\n    _drawCachedHitCanvas(context) {\n        const canvasCache = this._getCanvasCache(), hitCanvas = canvasCache.hit;\n        context.save();\n        context.translate(canvasCache.x, canvasCache.y);\n        context.drawImage(hitCanvas._canvas, 0, 0, hitCanvas.width / hitCanvas.pixelRatio, hitCanvas.height / hitCanvas.pixelRatio);\n        context.restore();\n    }\n    _getCachedSceneCanvas() {\n        let filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n        if (filters) {\n            if (!this._filterUpToDate) {\n                const ratio = sceneCanvas.pixelRatio;\n                filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\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 !== 'function') {\n                            Util_1.Util.error('Filter should be type of function, but got ' +\n                                typeof filter +\n                                ' instead. Please check correct filters');\n                            continue;\n                        }\n                        filter.call(this, imageData);\n                        filterContext.putImageData(imageData, 0, 0);\n                    }\n                }\n                catch (e) {\n                    Util_1.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            }\n            return filterCanvas;\n        }\n        return sceneCanvas;\n    }\n    on(evtStr, handler) {\n        this._cache && this._cache.delete(ALL_LISTENERS);\n        if (arguments.length === 3) {\n            return this._delegate.apply(this, arguments);\n        }\n        let events = evtStr.split(SPACE), len = events.length, n, event, parts, baseEvent, name;\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 (!this.eventListeners[baseEvent]) {\n                this.eventListeners[baseEvent] = [];\n            }\n            this.eventListeners[baseEvent].push({\n                name: name,\n                handler: handler,\n            });\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_1.Util.cloneObject(evt);\n                evt.currentTarget = targets[i];\n                handler.call(targets[i], evt);\n            }\n        });\n    }\n    remove() {\n        if (this.isDragging()) {\n            this.stopDrag();\n        }\n        DragAndDrop_1.DD._dragElements.delete(this._id);\n        this._remove();\n        return this;\n    }\n    _clearCaches() {\n        this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n        this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n        this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n        this._clearSelfAndDescendantCache(STAGE);\n        this._clearSelfAndDescendantCache(VISIBLE);\n        this._clearSelfAndDescendantCache(LISTENING);\n    }\n    _remove() {\n        this._clearCaches();\n        const parent = this.getParent();\n        if (parent && parent.children) {\n            parent.children.splice(this.index, 1);\n            parent._setChildrenIndices();\n            this.parent = null;\n        }\n    }\n    destroy() {\n        this.remove();\n        this.clearCache();\n        return this;\n    }\n    getAttr(attr) {\n        const method = 'get' + Util_1.Util._capitalize(attr);\n        if (Util_1.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_1.Util._capitalize(key);\n                if (Util_1.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        DragAndDrop_1.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            !Global_1.Konva.hitOnDragEnabled &&\n            (layerUnderDrag || Global_1.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 Util_1.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_1.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_1.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_1.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_1.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_1.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_1.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_1.Util.isObject(val) && !Util_1.Util._isPlainObject(val) && !Util_1.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_1.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_1.Util.isValidSelector(sel)) {\n                Util_1.Util.warn('Selector \"' +\n                    sel +\n                    '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\n                Util_1.Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\n                Util_1.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 Util_1.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 Util_1.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 Util_1.Transform();\n        m.reset();\n        const x = this.x(), y = this.y(), rotation = Global_1.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_1.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 Canvas_1.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 Canvas_1.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_1.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 Global_1.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_1.Util._capitalize(attr)];\n        if (Util_1.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 (Global_1.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_1.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 shouldStop = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\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 = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n                compareShape &&\n                compareShape.isAncestorOf &&\n                compareShape.isAncestorOf(this) &&\n                !compareShape.isAncestorOf(this.parent);\n            if (((evt && !evt.cancelBubble) || !evt) &&\n                this.parent &&\n                this.parent.isListening() &&\n                !stopBubble) {\n                if (compareShape && compareShape.parent) {\n                    this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\n                }\n                else {\n                    this._fireAndBubble.call(this.parent, eventType, evt);\n                }\n            }\n        }\n    }\n    _getProtoListeners(eventType) {\n        var _a, _b, _c;\n        const allListeners = (_a = this._cache.get(ALL_LISTENERS)) !== null && _a !== void 0 ? _a : {};\n        let events = allListeners === null || allListeners === void 0 ? void 0 : allListeners[eventType];\n        if (events === undefined) {\n            events = [];\n            let obj = Object.getPrototypeOf(this);\n            while (obj) {\n                const hierarchyEvents = (_c = (_b = obj.eventListeners) === null || _b === void 0 ? void 0 : _b[eventType]) !== null && _c !== void 0 ? _c : [];\n                events.push(...hierarchyEvents);\n                obj = Object.getPrototypeOf(obj);\n            }\n            allListeners[eventType] = events;\n            this._cache.set(ALL_LISTENERS, allListeners);\n        }\n        return events;\n    }\n    _fire(eventType, evt) {\n        evt = evt || {};\n        evt.currentTarget = this;\n        evt.type = eventType;\n        const topListeners = this._getProtoListeners(eventType);\n        if (topListeners) {\n            for (var i = 0; i < topListeners.length; i++) {\n                topListeners[i].handler.call(this, evt);\n            }\n        }\n        const selfListeners = this.eventListeners[eventType];\n        if (selfListeners) {\n            for (var i = 0; i < selfListeners.length; i++) {\n                selfListeners[i].handler.call(this, evt);\n            }\n        }\n    }\n    draw() {\n        this.drawScene();\n        this.drawHit();\n        return this;\n    }\n    _createDragElement(evt) {\n        const pointerId = evt ? evt.pointerId : undefined;\n        const stage = this.getStage();\n        const ap = this.getAbsolutePosition();\n        if (!stage) {\n            return;\n        }\n        const pos = stage._getPointerById(pointerId) ||\n            stage._changedPointerPositions[0] ||\n            ap;\n        DragAndDrop_1.DD._dragElements.set(this._id, {\n            node: this,\n            startPointerPos: pos,\n            offset: {\n                x: pos.x - ap.x,\n                y: pos.y - ap.y,\n            },\n            dragStatus: 'ready',\n            pointerId,\n        });\n    }\n    startDrag(evt, bubbleEvent = true) {\n        if (!DragAndDrop_1.DD._dragElements.has(this._id)) {\n            this._createDragElement(evt);\n        }\n        const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n        elem.dragStatus = 'dragging';\n        this.fire('dragstart', {\n            type: 'dragstart',\n            target: this,\n            evt: evt && evt.evt,\n        }, bubbleEvent);\n    }\n    _setDragPosition(evt, elem) {\n        const pos = this.getStage()._getPointerById(elem.pointerId);\n        if (!pos) {\n            return;\n        }\n        let newNodePos = {\n            x: pos.x - elem.offset.x,\n            y: pos.y - elem.offset.y,\n        };\n        const dbf = this.dragBoundFunc();\n        if (dbf !== undefined) {\n            const bounded = dbf.call(this, newNodePos, evt);\n            if (!bounded) {\n                Util_1.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 = DragAndDrop_1.DD._dragElements.get(this._id);\n        if (elem) {\n            elem.dragStatus = 'stopped';\n        }\n        DragAndDrop_1.DD._endDragBefore(evt);\n        DragAndDrop_1.DD._endDragAfter(evt);\n    }\n    setDraggable(draggable) {\n        this._setAttr('draggable', draggable);\n        this._dragChange();\n    }\n    isDragging() {\n        const elem = DragAndDrop_1.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 || Global_1.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            DragAndDrop_1.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 = DragAndDrop_1.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                DragAndDrop_1.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_1.Util.haveIntersection(screenRect, this.getClientRect());\n    }\n    static create(data, container) {\n        if (Util_1.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 (!Global_1.Konva[className]) {\n            Util_1.Util.warn('Can not find a node with class name \"' +\n                className +\n                '\". Fallback to \"Shape\".');\n            className = 'Shape';\n        }\n        const Class = Global_1.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}\nexports.Node = Node;\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on.call(Node.prototype, TRANSFORM_CHANGE_STR, function () {\n    if (this._batchingTransformChange) {\n        this._needClearTransformCache = true;\n        return;\n    }\n    this._clearCache(TRANSFORM);\n    this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n});\nNode.prototype.on.call(Node.prototype, 'visibleChange.konva', function () {\n    this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on.call(Node.prototype, 'listeningChange.konva', function () {\n    this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on.call(Node.prototype, 'opacityChange.konva', function () {\n    this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n});\nconst addGetterSetter = Factory_1.Factory.addGetterSetter;\naddGetterSetter(Node, 'zIndex');\naddGetterSetter(Node, 'absolutePosition');\naddGetterSetter(Node, 'position');\naddGetterSetter(Node, 'x', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'y', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'globalCompositeOperation', 'source-over', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'opacity', 1, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'name', '', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'id', '', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'rotation', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\naddGetterSetter(Node, 'scaleX', 1, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'scaleY', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\naddGetterSetter(Node, 'skewX', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'skewY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\naddGetterSetter(Node, 'offsetX', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'offsetY', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'dragDistance', null, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'width', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'height', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'listening', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'preventDefault', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'filters', null, function (val) {\n    this._filterUpToDate = false;\n    return val;\n});\naddGetterSetter(Node, 'visible', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'transformsEnabled', 'all', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'size');\naddGetterSetter(Node, 'dragBoundFunc');\naddGetterSetter(Node, 'draggable', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.backCompat(Node, {\n    rotateDeg: 'rotate',\n    setRotationDeg: 'setRotation',\n    getRotationDeg: 'getRotation',\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Container = void 0;\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nclass Container extends Node_1.Node {\n    constructor() {\n        super(...arguments);\n        this.children = [];\n    }\n    getChildren(filterFunc) {\n        if (!filterFunc) {\n            return this.children || [];\n        }\n        const children = this.children || [];\n        const results = [];\n        children.forEach(function (child) {\n            if (filterFunc(child)) {\n                results.push(child);\n            }\n        });\n        return results;\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_1.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_1.Node.prototype.clone.call(this, obj);\n        this.getChildren().forEach(function (no) {\n            node.add(no.clone());\n        });\n        return node;\n    }\n    getAllIntersections(pos) {\n        const arr = [];\n        this.find('Shape').forEach((shape) => {\n            if (shape.isVisible() && shape.intersects(pos)) {\n                arr.push(shape);\n            }\n        });\n        return arr;\n    }\n    _clearSelfAndDescendantCache(attr) {\n        var _a;\n        super._clearSelfAndDescendantCache(attr);\n        if (this.isCached()) {\n            return;\n        }\n        (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n            node._clearSelfAndDescendantCache(attr);\n        });\n    }\n    _setChildrenIndices() {\n        var _a;\n        (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child, n) {\n            child.index = n;\n        });\n        this._requestDraw();\n    }\n    drawScene(can, top, bufferCanvas) {\n        const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n        const caching = canvas && canvas.isCache;\n        if (!this.isVisible() && !caching) {\n            return this;\n        }\n        if (cachedSceneCanvas) {\n            context.save();\n            const m = this.getAbsoluteTransform(top).getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n            this._drawCachedSceneCanvas(context);\n            context.restore();\n        }\n        else {\n            this._drawChildren('drawScene', canvas, top, bufferCanvas);\n        }\n        return this;\n    }\n    drawHit(can, top) {\n        if (!this.shouldDrawHit(top)) {\n            return this;\n        }\n        const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n        if (cachedHitCanvas) {\n            context.save();\n            const m = this.getAbsoluteTransform(top).getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n            this._drawCachedHitCanvas(context);\n            context.restore();\n        }\n        else {\n            this._drawChildren('drawHit', canvas, top);\n        }\n        return this;\n    }\n    _drawChildren(drawMethod, canvas, top, bufferCanvas) {\n        var _a;\n        const context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (typeof clipWidth === 'number' && typeof clipHeight === 'number') ||\n            clipFunc;\n        const selfCache = top === this;\n        if (hasClip) {\n            context.save();\n            const transform = this.getAbsoluteTransform(top);\n            let m = transform.getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n            context.beginPath();\n            let clipArgs;\n            if (clipFunc) {\n                clipArgs = clipFunc.call(this, context, this);\n            }\n            else {\n                const clipX = this.clipX();\n                const clipY = this.clipY();\n                context.rect(clipX || 0, clipY || 0, clipWidth, clipHeight);\n            }\n            context.clip.apply(context, clipArgs);\n            m = transform.copy().invert().getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n        }\n        const hasComposition = !selfCache &&\n            this.globalCompositeOperation() !== 'source-over' &&\n            drawMethod === 'drawScene';\n        if (hasComposition) {\n            context.save();\n            context._applyGlobalCompositeOperation(this);\n        }\n        (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n            child[drawMethod](canvas, top, bufferCanvas);\n        });\n        if (hasComposition) {\n            context.restore();\n        }\n        if (hasClip) {\n            context.restore();\n        }\n    }\n    getClientRect(config = {}) {\n        var _a;\n        const skipTransform = config.skipTransform;\n        const relativeTo = config.relativeTo;\n        let minX, minY, maxX, maxY;\n        let selfRect = {\n            x: Infinity,\n            y: Infinity,\n            width: 0,\n            height: 0,\n        };\n        const that = this;\n        (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n            if (!child.visible()) {\n                return;\n            }\n            const rect = child.getClientRect({\n                relativeTo: that,\n                skipShadow: config.skipShadow,\n                skipStroke: config.skipStroke,\n            });\n            if (rect.width === 0 && rect.height === 0) {\n                return;\n            }\n            if (minX === undefined) {\n                minX = rect.x;\n                minY = rect.y;\n                maxX = rect.x + rect.width;\n                maxY = rect.y + rect.height;\n            }\n            else {\n                minX = Math.min(minX, rect.x);\n                minY = Math.min(minY, rect.y);\n                maxX = Math.max(maxX, rect.x + rect.width);\n                maxY = Math.max(maxY, rect.y + rect.height);\n            }\n        });\n        const shapes = this.find('Shape');\n        let hasVisible = false;\n        for (let i = 0; i < shapes.length; i++) {\n            const shape = shapes[i];\n            if (shape._isVisible(this)) {\n                hasVisible = true;\n                break;\n            }\n        }\n        if (hasVisible && minX !== undefined) {\n            selfRect = {\n                x: minX,\n                y: minY,\n                width: maxX - minX,\n                height: maxY - minY,\n            };\n        }\n        else {\n            selfRect = {\n                x: 0,\n                y: 0,\n                width: 0,\n                height: 0,\n            };\n        }\n        if (!skipTransform) {\n            return this._transformedRect(selfRect, relativeTo);\n        }\n        return selfRect;\n    }\n}\nexports.Container = Container;\nFactory_1.Factory.addComponentsGetterSetter(Container, 'clip', [\n    'x',\n    'y',\n    'width',\n    'height',\n]);\nFactory_1.Factory.addGetterSetter(Container, 'clipX', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipY', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipWidth', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipHeight', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipFunc');\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCapturedShape = getCapturedShape;\nexports.createEvent = createEvent;\nexports.hasPointerCapture = hasPointerCapture;\nexports.setPointerCapture = setPointerCapture;\nexports.releaseCapture = releaseCapture;\nconst Global_1 = require(\"./Global\");\nconst Captures = new Map();\nconst SUPPORT_POINTER_EVENTS = Global_1.Konva._global['PointerEvent'] !== undefined;\nfunction getCapturedShape(pointerId) {\n    return Captures.get(pointerId);\n}\nfunction createEvent(evt) {\n    return {\n        evt,\n        pointerId: evt.pointerId,\n    };\n}\nfunction hasPointerCapture(pointerId, shape) {\n    return Captures.get(pointerId) === shape;\n}\nfunction setPointerCapture(pointerId, shape) {\n    releaseCapture(pointerId);\n    const stage = shape.getStage();\n    if (!stage)\n        return;\n    Captures.set(pointerId, shape);\n    if (SUPPORT_POINTER_EVENTS) {\n        shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n    }\n}\nfunction releaseCapture(pointerId, target) {\n    const shape = Captures.get(pointerId);\n    if (!shape)\n        return;\n    const stage = shape.getStage();\n    if (stage && stage.content) {\n    }\n    Captures.delete(pointerId);\n    if (SUPPORT_POINTER_EVENTS) {\n        shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\n    }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Stage = exports.stages = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nconst Canvas_1 = require(\"./Canvas\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\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    [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 Global_1.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_1.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);`;\nexports.stages = [];\nclass Stage extends Container_1.Container {\n    constructor(config) {\n        super(checkNoClip(config));\n        this._pointerPositions = [];\n        this._changedPointerPositions = [];\n        this._buildDOM();\n        this._bindContentEvents();\n        exports.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_1.Util.throw('You may only add layers to the stage.');\n        }\n    }\n    _checkVisibility() {\n        if (!this.content) {\n            return;\n        }\n        const style = this.visible() ? '' : 'none';\n        this.content.style.display = style;\n    }\n    setContainer(container) {\n        if (typeof container === STRING) {\n            if (container.charAt(0) === '.') {\n                const className = container.slice(1);\n                container = document.getElementsByClassName(className)[0];\n            }\n            else {\n                var id;\n                if (container.charAt(0) !== '#') {\n                    id = container;\n                }\n                else {\n                    id = container.slice(1);\n                }\n                container = document.getElementById(id);\n            }\n            if (!container) {\n                throw 'Can not find container in document with id ' + id;\n            }\n        }\n        this._setAttr('container', container);\n        if (this.content) {\n            if (this.content.parentElement) {\n                this.content.parentElement.removeChild(this.content);\n            }\n            container.appendChild(this.content);\n        }\n        return this;\n    }\n    shouldDrawHit() {\n        return true;\n    }\n    clear() {\n        let layers = this.children, len = layers.length, n;\n        for (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_1.Container.prototype.clone.call(this, obj);\n    }\n    destroy() {\n        super.destroy();\n        const content = this.content;\n        if (content && Util_1.Util._isInDocument(content)) {\n            this.container().removeChild(content);\n        }\n        const index = exports.stages.indexOf(this);\n        if (index > -1) {\n            exports.stages.splice(index, 1);\n        }\n        Util_1.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_1.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 Canvas_1.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        let layers = this.children, len = layers.length, end = len - 1, n;\n        for (n = end; n >= 0; n--) {\n            const shape = layers[n].getIntersection(pos);\n            if (shape) {\n                return shape;\n            }\n        }\n        return null;\n    }\n    _resizeDOM() {\n        const width = this.width();\n        const height = this.height();\n        if (this.content) {\n            this.content.style.width = width + PX;\n            this.content.style.height = height + PX;\n        }\n        this.bufferCanvas.setSize(width, height);\n        this.bufferHitCanvas.setSize(width, height);\n        this.children.forEach((layer) => {\n            layer.setSize({ width, height });\n            layer.draw();\n        });\n    }\n    add(layer, ...rest) {\n        if (arguments.length > 1) {\n            for (let i = 0; i < arguments.length; i++) {\n                this.add(arguments[i]);\n            }\n            return this;\n        }\n        super.add(layer);\n        const length = this.children.length;\n        if (length > MAX_LAYERS_NUMBER) {\n            Util_1.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 (Global_1.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 (!Global_1.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 = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || Global_1.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            DragAndDrop_1.DD.justDragged = false;\n            Global_1.Konva['_' + eventType + 'ListenClick'] = true;\n            if (!shape || !shape.isListening()) {\n                this[eventType + 'ClickStartShape'] = undefined;\n                return;\n            }\n            if (Global_1.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        if (Global_1.Konva.isDragging() && DragAndDrop_1.DD.node.preventDefault() && evt.cancelable) {\n            evt.preventDefault();\n        }\n        this.setPointersPositions(evt);\n        const eventsEnabled = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || Global_1.Konva.hitOnDragEnabled;\n        if (!eventsEnabled) {\n            return;\n        }\n        const processedShapesIds = {};\n        let triggeredOnShape = false;\n        const targetShape = this._getTargetShape(eventType);\n        this._changedPointerPositions.forEach((pos) => {\n            const shape = (PointerEvents.getCapturedShape(pos.id) ||\n                this.getIntersection(pos));\n            const pointerId = pos.id;\n            const event = { evt: evt, pointerId };\n            const differentTarget = targetShape !== shape;\n            if (differentTarget && targetShape) {\n                targetShape._fireAndBubble(events.pointerout, { ...event }, shape);\n                targetShape._fireAndBubble(events.pointerleave, { ...event }, shape);\n            }\n            if (shape) {\n                if (processedShapesIds[shape._id]) {\n                    return;\n                }\n                processedShapesIds[shape._id] = true;\n            }\n            if (shape && shape.isListening()) {\n                triggeredOnShape = true;\n                if (differentTarget) {\n                    shape._fireAndBubble(events.pointerover, { ...event }, targetShape);\n                    shape._fireAndBubble(events.pointerenter, { ...event }, targetShape);\n                    this[eventType + 'targetShape'] = shape;\n                }\n                shape._fireAndBubble(events.pointermove, { ...event });\n            }\n            else {\n                if (targetShape) {\n                    this._fire(events.pointerover, {\n                        evt: evt,\n                        target: this,\n                        currentTarget: this,\n                        pointerId,\n                    });\n                    this[eventType + 'targetShape'] = null;\n                }\n            }\n        });\n        if (!triggeredOnShape) {\n            this._fire(events.pointermove, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n                pointerId: this._changedPointerPositions[0].id,\n            });\n        }\n    }\n    _pointerup(evt) {\n        const events = getEventsMap(evt.type);\n        const eventType = getEventType(evt.type);\n        if (!events) {\n            return;\n        }\n        this.setPointersPositions(evt);\n        const clickStartShape = this[eventType + 'ClickStartShape'];\n        const clickEndShape = this[eventType + 'ClickEndShape'];\n        const processedShapesIds = {};\n        let triggeredOnShape = 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 (Global_1.Konva['_' + eventType + 'InDblClickWindow']) {\n                fireDblClick = true;\n                clearTimeout(this[eventType + 'DblTimeout']);\n            }\n            else if (!DragAndDrop_1.DD.justDragged) {\n                Global_1.Konva['_' + eventType + 'InDblClickWindow'] = true;\n                clearTimeout(this[eventType + 'DblTimeout']);\n            }\n            this[eventType + 'DblTimeout'] = setTimeout(function () {\n                Global_1.Konva['_' + eventType + 'InDblClickWindow'] = false;\n            }, Global_1.Konva.dblClickWindow);\n            if (shape && shape.isListening()) {\n                triggeredOnShape = true;\n                this[eventType + 'ClickEndShape'] = shape;\n                shape._fireAndBubble(events.pointerup, { ...event });\n                if (Global_1.Konva['_' + eventType + 'ListenClick'] &&\n                    clickStartShape &&\n                    clickStartShape === shape) {\n                    shape._fireAndBubble(events.pointerclick, { ...event });\n                    if (fireDblClick && clickEndShape && clickEndShape === shape) {\n                        shape._fireAndBubble(events.pointerdblclick, { ...event });\n                    }\n                }\n            }\n            else {\n                this[eventType + 'ClickEndShape'] = null;\n                if (Global_1.Konva['_' + eventType + 'ListenClick']) {\n                    this._fire(events.pointerclick, {\n                        evt: evt,\n                        target: this,\n                        currentTarget: this,\n                        pointerId,\n                    });\n                }\n                if (fireDblClick) {\n                    this._fire(events.pointerdblclick, {\n                        evt: evt,\n                        target: this,\n                        currentTarget: this,\n                        pointerId,\n                    });\n                }\n            }\n        });\n        if (!triggeredOnShape) {\n            this._fire(events.pointerup, {\n                evt: evt,\n                target: this,\n                currentTarget: this,\n                pointerId: this._changedPointerPositions[0].id,\n            });\n        }\n        Global_1.Konva['_' + eventType + 'ListenClick'] = false;\n        if (evt.cancelable && eventType !== 'touch') {\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        let contentPosition = this._getContentPosition(), 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_1.Util._getFirstPointerId(evt) }];\n            this._changedPointerPositions = [\n                { x, y, id: Util_1.Util._getFirstPointerId(evt) },\n            ];\n        }\n    }\n    _setPointerPosition(evt) {\n        Util_1.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 Canvas_1.SceneCanvas({\n            width: this.width(),\n            height: this.height(),\n        });\n        this.bufferHitCanvas = new Canvas_1.HitCanvas({\n            pixelRatio: 1,\n            width: this.width(),\n            height: this.height(),\n        });\n        if (!Global_1.Konva.isBrowser) {\n            return;\n        }\n        const container = this.container();\n        if (!container) {\n            throw 'Stage has no container. A container is required.';\n        }\n        container.innerHTML = '';\n        this.content = document.createElement('div');\n        this.content.style.position = 'relative';\n        this.content.style.userSelect = 'none';\n        this.content.className = 'konvajs-content';\n        this.content.setAttribute('role', 'presentation');\n        container.appendChild(this.content);\n        this._resizeDOM();\n    }\n    cache() {\n        Util_1.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}\nexports.Stage = Stage;\nStage.prototype.nodeType = STAGE;\n(0, Global_2._registerNode)(Stage);\nFactory_1.Factory.addGetterSetter(Stage, 'container');\nif (Global_1.Konva.isBrowser) {\n    document.addEventListener('visibilitychange', () => {\n        exports.stages.forEach((stage) => {\n            stage.batchDraw();\n        });\n    });\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Shape = exports.shapes = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\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_1.Util.createCanvasElement().getContext('2d');\n    return dummyContext;\n}\nexports.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}\nclass Shape extends Node_1.Node {\n    constructor(config) {\n        super(config);\n        let key;\n        while (true) {\n            key = Util_1.Util.getRandomColor();\n            if (key && !(key in exports.shapes)) {\n                break;\n            }\n        }\n        this.colorKey = key;\n        exports.shapes[key] = this;\n    }\n    getContext() {\n        Util_1.Util.warn('shape.getContext() method is deprecated. Please do not use it.');\n        return this.getLayer().getContext();\n    }\n    getCanvas() {\n        Util_1.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 Util_1.Transform();\n                tr.translate(this.fillPatternX(), this.fillPatternY());\n                tr.rotate(Global_1.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_1.Util.colorToRGBA(this.shadowColor());\n        if (rgba) {\n            return ('rgba(' +\n                rgba.r +\n                ',' +\n                rgba.g +\n                ',' +\n                rgba.b +\n                ',' +\n                rgba.a * (this.shadowOpacity() || 1) +\n                ')');\n        }\n    }\n    hasFill() {\n        return this._calculate('hasFill', [\n            'fillEnabled',\n            'fill',\n            'fillPatternImage',\n            'fillLinearGradientColorStops',\n            'fillRadialGradientColorStops',\n        ], () => {\n            return (this.fillEnabled() &&\n                !!(this.fill() ||\n                    this.fillPatternImage() ||\n                    this.fillLinearGradientColorStops() ||\n                    this.fillRadialGradientColorStops()));\n        });\n    }\n    hasStroke() {\n        return this._calculate('hasStroke', [\n            'strokeEnabled',\n            'strokeWidth',\n            'stroke',\n            'strokeLinearGradientColorStops',\n        ], () => {\n            return (this.strokeEnabled() &&\n                this.strokeWidth() &&\n                !!(this.stroke() || this.strokeLinearGradientColorStops()));\n        });\n    }\n    hasHitStroke() {\n        const width = this.hitStrokeWidth();\n        if (width === 'auto') {\n            return this.hasStroke();\n        }\n        return this.strokeEnabled() && !!width;\n    }\n    intersects(point) {\n        const stage = this.getStage();\n        if (!stage) {\n            return false;\n        }\n        const bufferHitCanvas = stage.bufferHitCanvas;\n        bufferHitCanvas.getContext().clear();\n        this.drawHit(bufferHitCanvas, undefined, true);\n        const p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\n        return p[3] > 0;\n    }\n    destroy() {\n        Node_1.Node.prototype.destroy.call(this);\n        delete exports.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_1.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        let canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow(), stage, bufferContext;\n        const skipBuffer = canvas.isCache;\n        const cachingSelf = top === this;\n        if (!this.isVisible() && !cachingSelf) {\n            return this;\n        }\n        if (cachedCanvas) {\n            context.save();\n            const m = this.getAbsoluteTransform(top).getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n            this._drawCachedSceneCanvas(context);\n            context.restore();\n            return this;\n        }\n        if (!drawFunc) {\n            return this;\n        }\n        context.save();\n        if (this._useBufferCanvas() && !skipBuffer) {\n            stage = this.getStage();\n            const bc = bufferCanvas || stage.bufferCanvas;\n            bufferContext = bc.getContext();\n            bufferContext.clear();\n            bufferContext.save();\n            bufferContext._applyLineJoin(this);\n            var o = this.getAbsoluteTransform(top).getMatrix();\n            bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n            drawFunc.call(this, bufferContext, this);\n            bufferContext.restore();\n            const ratio = bc.pixelRatio;\n            if (hasShadow) {\n                context._applyShadow(this);\n            }\n            context._applyOpacity(this);\n            context._applyGlobalCompositeOperation(this);\n            context.drawImage(bc._canvas, 0, 0, bc.width / ratio, bc.height / ratio);\n        }\n        else {\n            context._applyLineJoin(this);\n            if (!cachingSelf) {\n                var o = this.getAbsoluteTransform(top).getMatrix();\n                context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n                context._applyOpacity(this);\n                context._applyGlobalCompositeOperation(this);\n            }\n            if (hasShadow) {\n                context._applyShadow(this);\n            }\n            drawFunc.call(this, context, this);\n        }\n        context.restore();\n        return this;\n    }\n    drawHit(can, top, skipDragCheck = false) {\n        if (!this.shouldDrawHit(top, skipDragCheck)) {\n            return this;\n        }\n        const layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n        if (!this.colorKey) {\n            Util_1.Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()');\n        }\n        if (cachedHitCanvas) {\n            context.save();\n            const m = this.getAbsoluteTransform(top).getMatrix();\n            context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n            this._drawCachedHitCanvas(context);\n            context.restore();\n            return this;\n        }\n        if (!drawFunc) {\n            return this;\n        }\n        context.save();\n        context._applyLineJoin(this);\n        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        let cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight(), hitImageData, hitData, len, rgbColorKey, i, alpha;\n        hitContext.clear();\n        hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n        try {\n            hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n            hitData = hitImageData.data;\n            len = hitData.length;\n            rgbColorKey = Util_1.Util._hexToRgb(this.colorKey);\n            for (i = 0; i < len; i += 4) {\n                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_1.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}\nexports.Shape = Shape;\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(0, Global_2._registerNode)(Shape);\nShape.prototype.eventListeners = {};\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva', _clearFillPatternCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\nFactory_1.Factory.addGetterSetter(Shape, 'stroke', undefined, (0, Validators_1.getStringOrGradientValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeWidth', 2, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillAfterStrokeEnabled', false);\nFactory_1.Factory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeHitEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'perfectDrawEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'lineJoin');\nFactory_1.Factory.addGetterSetter(Shape, 'lineCap');\nFactory_1.Factory.addGetterSetter(Shape, 'sceneFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'hitFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'dash');\nFactory_1.Factory.addGetterSetter(Shape, 'dashOffset', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowColor', undefined, (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowBlur', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOpacity', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternImage');\nFactory_1.Factory.addGetterSetter(Shape, 'fill', undefined, (0, Validators_1.getStringOrGradientValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\nFactory_1.Factory.addGetterSetter(Shape, 'fillEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'dashEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPriority', 'color');\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleX', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleY', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\n    'x',\n    'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\n    'x',\n    'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\n    'x',\n    'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\n    'x',\n    'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\n    'x',\n    'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\n    'x',\n    'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRotation', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRule', undefined, (0, Validators_1.getStringValidator)());\nFactory_1.Factory.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", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Layer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Node_1 = require(\"./Node\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Validators_1 = require(\"./Validators\");\nconst Shape_1 = require(\"./Shape\");\nconst Global_1 = require(\"./Global\");\nconst HASH = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n    { x: 0, y: 0 },\n    { x: -1, y: -1 },\n    { x: 1, y: -1 },\n    { x: 1, y: 1 },\n    { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nclass Layer extends Container_1.Container {\n    constructor(config) {\n        super(config);\n        this.canvas = new Canvas_1.SceneCanvas();\n        this.hitCanvas = new Canvas_1.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_1.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_1.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_1.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_1.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_1.Node.prototype.remove.call(this);\n        if (_canvas && _canvas.parentNode && Util_1.Util._isInDocument(_canvas)) {\n            _canvas.parentNode.removeChild(_canvas);\n        }\n        return this;\n    }\n    getStage() {\n        return this.parent;\n    }\n    setSize({ width, height }) {\n        this.canvas.setSize(width, height);\n        this.hitCanvas.setSize(width, height);\n        this._setSmoothEnabled();\n        return this;\n    }\n    _validateAdd(child) {\n        const type = child.getType();\n        if (type !== 'Group' && type !== 'Shape') {\n            Util_1.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_1.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_1.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_1.Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n    }\n    batchDraw() {\n        if (!this._waitingForDraw) {\n            this._waitingForDraw = true;\n            Util_1.Util.requestAnimFrame(() => {\n                this.draw();\n                this._waitingForDraw = false;\n            });\n        }\n        return this;\n    }\n    getIntersection(pos) {\n        if (!this.isListening() || !this.isVisible()) {\n            return null;\n        }\n        let spiralSearchDistance = 1;\n        let continueSearch = false;\n        while (true) {\n            for (let i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n                const intersectionOffset = INTERSECTION_OFFSETS[i];\n                const obj = this._getIntersection({\n                    x: pos.x + intersectionOffset.x * spiralSearchDistance,\n                    y: pos.y + intersectionOffset.y * spiralSearchDistance,\n                });\n                const shape = obj.shape;\n                if (shape) {\n                    return shape;\n                }\n                continueSearch = !!obj.antialiased;\n                if (!obj.antialiased) {\n                    break;\n                }\n            }\n            if (continueSearch) {\n                spiralSearchDistance += 1;\n            }\n            else {\n                return null;\n            }\n        }\n    }\n    _getIntersection(pos) {\n        const ratio = this.hitCanvas.pixelRatio;\n        const p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n        const p3 = p[3];\n        if (p3 === 255) {\n            const colorKey = Util_1.Util._rgbToHex(p[0], p[1], p[2]);\n            const shape = Shape_1.shapes[HASH + colorKey];\n            if (shape) {\n                return {\n                    shape: shape,\n                };\n            }\n            return {\n                antialiased: true,\n            };\n        }\n        else if (p3 > 0) {\n            return {\n                antialiased: true,\n            };\n        }\n        return {};\n    }\n    drawScene(can, top) {\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_1.Container.prototype.drawScene.call(this, canvas, top);\n        this._fire(DRAW, {\n            node: this,\n        });\n        return this;\n    }\n    drawHit(can, top) {\n        const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n        if (layer && layer.clearBeforeDraw()) {\n            layer.getHitCanvas().getContext().clear();\n        }\n        Container_1.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_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n        this.listening(val);\n    }\n    getHitGraphEnabled(val) {\n        Util_1.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_1.Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);\n        return super.destroy();\n    }\n}\nexports.Layer = Layer;\nLayer.prototype.nodeType = 'Layer';\n(0, Global_1._registerNode)(Layer);\nFactory_1.Factory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory_1.Factory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory_1.Factory.addGetterSetter(Layer, 'hitGraphEnabled', true, (0, Validators_1.getBooleanValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FastLayer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Layer_1 = require(\"./Layer\");\nconst Global_1 = require(\"./Global\");\nclass FastLayer extends Layer_1.Layer {\n    constructor(attrs) {\n        super(attrs);\n        this.listening(false);\n        Util_1.Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n    }\n}\nexports.FastLayer = FastLayer;\nFastLayer.prototype.nodeType = 'FastLayer';\n(0, Global_1._registerNode)(FastLayer);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Group = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nclass Group extends Container_1.Container {\n    _validateAdd(child) {\n        const type = child.getType();\n        if (type !== 'Group' && type !== 'Shape') {\n            Util_1.Util.throw('You may only add groups and shapes to groups.');\n        }\n    }\n}\nexports.Group = Group;\nGroup.prototype.nodeType = 'Group';\n(0, Global_1._registerNode)(Group);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Animation = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst now = (function () {\n    if (Global_1.glob.performance && Global_1.glob.performance.now) {\n        return function () {\n            return Global_1.glob.performance.now();\n        };\n    }\n    return function () {\n        return new Date().getTime();\n    };\n})();\nclass 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_1.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_1.Util.requestAnimFrame(this._animationLoop);\n        }\n    }\n}\nexports.Animation = Animation;\nAnimation.animations = [];\nAnimation.animIdCounter = 0;\nAnimation.animRunning = false;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Easings = exports.Tween = void 0;\nconst Util_1 = require(\"./Util\");\nconst Animation_1 = require(\"./Animation\");\nconst Node_1 = require(\"./Node\");\nconst Global_1 = require(\"./Global\");\nlet blacklist = {\n    node: 1,\n    duration: 1,\n    easing: 1,\n    onFinish: 1,\n    yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, idCounter = 0, colorAttrs = ['fill', 'stroke', 'shadowColor'];\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}\nclass Tween {\n    constructor(config) {\n        let that = this, node = config.node, nodeId = node._id, duration, easing = config.easing || exports.Easings.Linear, yoyo = !!config.yoyo, 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 Global_1.Konva['Stage'] ? node.getLayers() : null);\n        if (!layers) {\n            Util_1.Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n        }\n        this.anim = new Animation_1.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        let node = this.node, nodeId = node._id, start, diff, tweenId, n, len, trueEnd, trueStart, endRGBA;\n        tweenId = Tween.tweens[nodeId][key];\n        if (tweenId) {\n            delete Tween.attrs[nodeId][tweenId][key];\n        }\n        start = node.getAttr(key);\n        if (Util_1.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_1.Util._prepareArrayForTween(start, end, node.closed());\n                }\n                else {\n                    trueEnd = end;\n                    end = Util_1.Util._prepareArrayForTween(end, start, node.closed());\n                }\n            }\n            if (key.indexOf('fill') === 0) {\n                for (n = 0; n < len; n++) {\n                    if (n % 2 === 0) {\n                        diff.push(end[n] - start[n]);\n                    }\n                    else {\n                        const startRGBA = Util_1.Util.colorToRGBA(start[n]);\n                        endRGBA = Util_1.Util.colorToRGBA(end[n]);\n                        start[n] = startRGBA;\n                        diff.push({\n                            r: endRGBA.r - startRGBA.r,\n                            g: endRGBA.g - startRGBA.g,\n                            b: endRGBA.b - startRGBA.b,\n                            a: endRGBA.a - startRGBA.a,\n                        });\n                    }\n                }\n            }\n            else {\n                for (n = 0; n < len; n++) {\n                    diff.push(end[n] - start[n]);\n                }\n            }\n        }\n        else if (colorAttrs.indexOf(key) !== -1) {\n            start = Util_1.Util.colorToRGBA(start);\n            endRGBA = Util_1.Util.colorToRGBA(end);\n            diff = {\n                r: endRGBA.r - start.r,\n                g: endRGBA.g - start.g,\n                b: endRGBA.b - start.b,\n                a: endRGBA.a - start.a,\n            };\n        }\n        else {\n            diff = end - start;\n        }\n        Tween.attrs[nodeId][this._id][key] = {\n            start: start,\n            diff: diff,\n            end: end,\n            trueEnd: trueEnd,\n            trueStart: trueStart,\n        };\n        Tween.tweens[nodeId][key] = this._id;\n    }\n    _tweenFunc(i) {\n        let node = this.node, attrs = Tween.attrs[node._id][this._id], 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_1.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        let nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId], key;\n        this.pause();\n        for (key in attrs) {\n            delete Tween.tweens[nodeId][key];\n        }\n        delete Tween.attrs[nodeId][thisId];\n    }\n}\nexports.Tween = Tween;\nTween.attrs = {};\nTween.tweens = {};\nNode_1.Node.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};\nexports.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 - exports.Easings.BounceEaseOut(d - t, 0, c, d) + b;\n    },\n    BounceEaseInOut(t, b, c, d) {\n        if (t < d / 2) {\n            return exports.Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n        }\n        else {\n            return exports.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", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Node_1 = require(\"./Node\");\nconst Container_1 = require(\"./Container\");\nconst Stage_1 = require(\"./Stage\");\nconst Layer_1 = require(\"./Layer\");\nconst FastLayer_1 = require(\"./FastLayer\");\nconst Group_1 = require(\"./Group\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Shape_1 = require(\"./Shape\");\nconst Animation_1 = require(\"./Animation\");\nconst Tween_1 = require(\"./Tween\");\nconst Context_1 = require(\"./Context\");\nconst Canvas_1 = require(\"./Canvas\");\nexports.Konva = Util_1.Util._assign(Global_1.Konva, {\n    Util: Util_1.Util,\n    Transform: Util_1.Transform,\n    Node: Node_1.Node,\n    Container: Container_1.Container,\n    Stage: Stage_1.Stage,\n    stages: Stage_1.stages,\n    Layer: Layer_1.Layer,\n    FastLayer: FastLayer_1.FastLayer,\n    Group: Group_1.Group,\n    DD: DragAndDrop_1.DD,\n    Shape: Shape_1.Shape,\n    shapes: Shape_1.shapes,\n    Animation: Animation_1.Animation,\n    Tween: Tween_1.Tween,\n    Easings: Tween_1.Easings,\n    Context: Context_1.Context,\n    Canvas: Canvas_1.Canvas,\n});\nexports.default = exports.Konva;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arc = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Arc extends Shape_1.Shape {\n    _sceneFunc(context) {\n        const angle = Global_1.Konva.getAngle(this.angle()), clockwise = this.clockwise();\n        context.beginPath();\n        context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n        context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    getWidth() {\n        return this.outerRadius() * 2;\n    }\n    getHeight() {\n        return this.outerRadius() * 2;\n    }\n    setWidth(width) {\n        this.outerRadius(width / 2);\n    }\n    setHeight(height) {\n        this.outerRadius(height / 2);\n    }\n    getSelfRect() {\n        const innerRadius = this.innerRadius();\n        const outerRadius = this.outerRadius();\n        const clockwise = this.clockwise();\n        const angle = Global_1.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}\nexports.Arc = Arc;\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_2._registerNode)(Arc);\nFactory_1.Factory.addGetterSetter(Arc, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'clockwise', false, (0, Validators_1.getBooleanValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Line = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Global_1 = require(\"../Global\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n    const d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n    return [p1x, p1y, p2x, p2y];\n}\nfunction expandPoints(p, tension) {\n    const len = p.length, allPoints = [];\n    for (let n = 2; n < len - 2; n += 2) {\n        const cp = getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\n        if (isNaN(cp[0])) {\n            continue;\n        }\n        allPoints.push(cp[0]);\n        allPoints.push(cp[1]);\n        allPoints.push(p[n]);\n        allPoints.push(p[n + 1]);\n        allPoints.push(cp[2]);\n        allPoints.push(cp[3]);\n    }\n    return allPoints;\n}\nclass Line extends Shape_1.Shape {\n    constructor(config) {\n        super(config);\n        this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n            this._clearCache('tensionPoints');\n        });\n    }\n    _sceneFunc(context) {\n        let points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier(), tp, len, n;\n        if (!length) {\n            return;\n        }\n        context.beginPath();\n        context.moveTo(points[0], points[1]);\n        if (tension !== 0 && length > 4) {\n            tp = this.getTensionPoints();\n            len = tp.length;\n            n = closed ? 0 : 4;\n            if (!closed) {\n                context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\n            }\n            while (n < len - 2) {\n                context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\n            }\n            if (!closed) {\n                context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n            }\n        }\n        else if (bezier) {\n            n = 2;\n            while (n < length) {\n                context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n            }\n        }\n        else {\n            for (n = 2; n < length; n += 2) {\n                context.lineTo(points[n], points[n + 1]);\n            }\n        }\n        if (closed) {\n            context.closePath();\n            context.fillStrokeShape(this);\n        }\n        else {\n            context.strokeShape(this);\n        }\n    }\n    getTensionPoints() {\n        return this._getCache('tensionPoints', this._getTensionPoints);\n    }\n    _getTensionPoints() {\n        if (this.closed()) {\n            return this._getTensionPointsClosed();\n        }\n        else {\n            return expandPoints(this.points(), this.tension());\n        }\n    }\n    _getTensionPointsClosed() {\n        const p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\n            .concat(middle)\n            .concat([\n            lastControlPoints[0],\n            lastControlPoints[1],\n            p[len - 2],\n            p[len - 1],\n            lastControlPoints[2],\n            lastControlPoints[3],\n            firstControlPoints[0],\n            firstControlPoints[1],\n            p[0],\n            p[1],\n        ]);\n        return tp;\n    }\n    getWidth() {\n        return this.getSelfRect().width;\n    }\n    getHeight() {\n        return this.getSelfRect().height;\n    }\n    getSelfRect() {\n        let points = this.points();\n        if (points.length < 4) {\n            return {\n                x: points[0] || 0,\n                y: points[1] || 0,\n                width: 0,\n                height: 0,\n            };\n        }\n        if (this.tension() !== 0) {\n            points = [\n                points[0],\n                points[1],\n                ...this._getTensionPoints(),\n                points[points.length - 2],\n                points[points.length - 1],\n            ];\n        }\n        else {\n            points = this.points();\n        }\n        let minX = points[0];\n        let maxX = points[0];\n        let minY = points[1];\n        let maxY = points[1];\n        let x, y;\n        for (let i = 0; i < points.length / 2; i++) {\n            x = points[i * 2];\n            y = points[i * 2 + 1];\n            minX = Math.min(minX, x);\n            maxX = Math.max(maxX, x);\n            minY = Math.min(minY, y);\n            maxY = Math.max(maxY, y);\n        }\n        return {\n            x: minX,\n            y: minY,\n            width: maxX - minX,\n            height: maxY - minY,\n        };\n    }\n}\nexports.Line = Line;\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\n(0, Global_1._registerNode)(Line);\nFactory_1.Factory.addGetterSetter(Line, 'closed', false);\nFactory_1.Factory.addGetterSetter(Line, 'bezier', false);\nFactory_1.Factory.addGetterSetter(Line, 'tension', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Line, 'points', [], (0, Validators_1.getNumberArrayValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.t2length = exports.getQuadraticArcLength = exports.getCubicArcLength = exports.binomialCoefficients = exports.cValues = exports.tValues = void 0;\nexports.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];\nexports.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];\nexports.binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\nconst 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 * exports.tValues[n][i] + z;\n        sum += exports.cValues[n][i] * BFunc(xs, ys, correctedT);\n    }\n    return z * sum;\n};\nexports.getCubicArcLength = getCubicArcLength;\nconst 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};\nexports.getQuadraticArcLength = getQuadraticArcLength;\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                exports.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};\nconst 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};\nexports.t2length = t2length;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Path = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst BezierFunctions_1 = require(\"../BezierFunctions\");\nclass Path extends Shape_1.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                    var 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                    var r = rx > ry ? rx : ry;\n                    var scaleX = rx > ry ? 1 : rx / ry;\n                    var scaleY = rx > ry ? ry / rx : 1;\n                    context.translate(cx, cy);\n                    context.rotate(psi);\n                    context.scale(scaleX, scaleY);\n                    context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\n                    context.scale(1 / scaleX, 1 / scaleY);\n                    context.rotate(-psi);\n                    context.translate(-cx, -cy);\n                    break;\n                case 'z':\n                    isClosed = true;\n                    context.closePath();\n                    break;\n            }\n        }\n        if (!isClosed && !this.hasFill()) {\n            context.strokeShape(this);\n        }\n        else {\n            context.fillStrokeShape(this);\n        }\n    }\n    getSelfRect() {\n        let points = [];\n        this.dataArray.forEach(function (data) {\n            if (data.command === 'A') {\n                const start = data.points[4];\n                const dTheta = data.points[5];\n                const end = data.points[4] + dTheta;\n                let inc = Math.PI / 180.0;\n                if (Math.abs(start - end) < inc) {\n                    inc = Math.abs(start - end);\n                }\n                if (dTheta < 0) {\n                    for (let t = start - inc; t > end; t -= inc) {\n                        const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n                        points.push(point.x, point.y);\n                    }\n                }\n                else {\n                    for (let t = start + inc; t < end; t += inc) {\n                        const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n                        points.push(point.x, point.y);\n                    }\n                }\n            }\n            else if (data.command === 'C') {\n                for (let t = 0.0; t <= 1; t += 0.01) {\n                    const point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\n                    points.push(point.x, point.y);\n                }\n            }\n            else {\n                points = points.concat(data.points);\n            }\n        });\n        let minX = points[0];\n        let maxX = points[0];\n        let minY = points[1];\n        let maxY = points[1];\n        let x, y;\n        for (let i = 0; i < points.length / 2; i++) {\n            x = points[i * 2];\n            y = points[i * 2 + 1];\n            if (!isNaN(x)) {\n                minX = Math.min(minX, x);\n                maxX = Math.max(maxX, x);\n            }\n            if (!isNaN(y)) {\n                minY = Math.min(minY, y);\n                maxY = Math.max(maxY, y);\n            }\n        }\n        return {\n            x: minX,\n            y: minY,\n            width: maxX - minX,\n            height: maxY - minY,\n        };\n    }\n    getLength() {\n        return this.pathLength;\n    }\n    getPointAtLength(length) {\n        return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n    }\n    static getLineLength(x1, y1, x2, y2) {\n        return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n    }\n    static getPathLength(dataArray) {\n        let pathLength = 0;\n        for (let i = 0; i < dataArray.length; ++i) {\n            pathLength += dataArray[i].pathLength;\n        }\n        return pathLength;\n    }\n    static getPointAtLengthOfDataArray(length, dataArray) {\n        let points, i = 0, ii = dataArray.length;\n        if (!ii) {\n            return null;\n        }\n        while (i < ii && length > dataArray[i].pathLength) {\n            length -= dataArray[i].pathLength;\n            ++i;\n        }\n        if (i === ii) {\n            points = dataArray[i - 1].points.slice(-2);\n            return {\n                x: points[0],\n                y: points[1],\n            };\n        }\n        if (length < 0.01) {\n            points = dataArray[i].points.slice(0, 2);\n            return {\n                x: points[0],\n                y: points[1],\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((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n                    return (0, BezierFunctions_1.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((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n                    return (0, BezierFunctions_1.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                var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6];\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 {\n            x: x,\n            y: y,\n        };\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 {\n            x: x,\n            y: y,\n        };\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 (var 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 (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            const p = [];\n            for (let j = 0, jlen = coords.length; j < jlen; j++) {\n                if (coords[j] === '00') {\n                    p.push(0, 0);\n                    continue;\n                }\n                const parsed = parseFloat(coords[j]);\n                if (!isNaN(parsed)) {\n                    p.push(parsed);\n                }\n                else {\n                    p.push(0);\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                var prevCmd, ctlPtx, ctlPty;\n                var 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                        var dx = p.shift();\n                        var 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 (0, BezierFunctions_1.getCubicArcLength)([x, points[0], points[2], points[4]], [y, points[1], points[3], points[5]], 1);\n            case 'Q':\n                return (0, BezierFunctions_1.getQuadraticArcLength)([x, points[0], points[2]], [y, points[1], points[3]], 1);\n            case 'A':\n                len = 0.0;\n                var start = points[4];\n                var dTheta = points[5];\n                var end = points[4] + dTheta;\n                var 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}\nexports.Path = Path;\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\n(0, Global_1._registerNode)(Path);\nFactory_1.Factory.addGetterSetter(Path, 'data');\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arrow = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Line_1 = require(\"./Line\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst Path_1 = require(\"./Path\");\nclass Arrow extends Line_1.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_1.Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);\n            const previous = Path_1.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 - offset,\n            y: lineRect.y - offset,\n            width: lineRect.width + offset * 2,\n            height: lineRect.height + offset * 2,\n        };\n    }\n}\nexports.Arrow = Arrow;\nArrow.prototype.className = 'Arrow';\n(0, Global_1._registerNode)(Arrow);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerLength', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerWidth', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtEnding', true);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Circle = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Circle extends Shape_1.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}\nexports.Circle = Circle;\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(Circle);\nFactory_1.Factory.addGetterSetter(Circle, 'radius', 0, (0, Validators_1.getNumberValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ellipse = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Ellipse extends Shape_1.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}\nexports.Ellipse = Ellipse;\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\n(0, Global_1._registerNode)(Ellipse);\nFactory_1.Factory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusY', 0, (0, Validators_1.getNumberValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Image = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nclass Image extends Shape_1.Shape {\n    constructor(attrs) {\n        super(attrs);\n        this.on('imageChange.konva', () => {\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', () => {\n                this._requestDraw();\n            });\n        }\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_1.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_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n        }\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    getWidth() {\n        var _a, _b;\n        return (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width;\n    }\n    getHeight() {\n        var _a, _b;\n        return (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height;\n    }\n    static fromURL(url, callback, onError = null) {\n        const img = Util_1.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}\nexports.Image = Image;\nImage.prototype.className = 'Image';\n(0, Global_1._registerNode)(Image);\nFactory_1.Factory.addGetterSetter(Image, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\nFactory_1.Factory.addGetterSetter(Image, 'image');\nFactory_1.Factory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory_1.Factory.addGetterSetter(Image, 'cropX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropHeight', 0, (0, Validators_1.getNumberValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tag = exports.Label = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Group_1 = require(\"../Group\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\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;\nclass Label extends Group_1.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}\nexports.Label = Label;\nLabel.prototype.className = 'Label';\n(0, Global_1._registerNode)(Label);\nclass Tag extends Shape_1.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}\nexports.Tag = Tag;\nTag.prototype.className = 'Tag';\n(0, Global_1._registerNode)(Tag);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'pointerHeight', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Rect = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nclass Rect extends Shape_1.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_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n        }\n        context.closePath();\n        context.fillStrokeShape(this);\n    }\n}\nexports.Rect = Rect;\nRect.prototype.className = 'Rect';\n(0, Global_1._registerNode)(Rect);\nFactory_1.Factory.addGetterSetter(Rect, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegularPolygon = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass RegularPolygon extends Shape_1.Shape {\n    _sceneFunc(context) {\n        const points = this._getPoints();\n        context.beginPath();\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        context.closePath();\n        context.fillStrokeShape(this);\n    }\n    _getPoints() {\n        const sides = this.attrs.sides;\n        const radius = this.attrs.radius || 0;\n        const points = [];\n        for (let n = 0; n < sides; n++) {\n            points.push({\n                x: radius * Math.sin((n * 2 * Math.PI) / sides),\n                y: -1 * radius * Math.cos((n * 2 * Math.PI) / sides),\n            });\n        }\n        return points;\n    }\n    getSelfRect() {\n        const points = this._getPoints();\n        let minX = points[0].x;\n        let maxX = points[0].y;\n        let minY = points[0].x;\n        let maxY = points[0].y;\n        points.forEach((point) => {\n            minX = Math.min(minX, point.x);\n            maxX = Math.max(maxX, point.x);\n            minY = Math.min(minY, point.y);\n            maxY = Math.max(maxY, point.y);\n        });\n        return {\n            x: minX,\n            y: minY,\n            width: maxX - minX,\n            height: maxY - minY,\n        };\n    }\n    getWidth() {\n        return this.radius() * 2;\n    }\n    getHeight() {\n        return this.radius() * 2;\n    }\n    setWidth(width) {\n        this.radius(width / 2);\n    }\n    setHeight(height) {\n        this.radius(height / 2);\n    }\n}\nexports.RegularPolygon = RegularPolygon;\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(RegularPolygon);\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'sides', 0, (0, Validators_1.getNumberValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ring = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst PIx2 = Math.PI * 2;\nclass Ring extends Shape_1.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}\nexports.Ring = Ring;\nRing.prototype.className = 'Ring';\nRing.prototype._centroid = true;\nRing.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Ring);\nFactory_1.Factory.addGetterSetter(Ring, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ring, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sprite = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Animation_1 = require(\"../Animation\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Sprite extends Shape_1.Shape {\n    constructor(config) {\n        super(config);\n        this._updated = true;\n        this.anim = new Animation_1.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}\nexports.Sprite = Sprite;\nSprite.prototype.className = 'Sprite';\n(0, Global_1._registerNode)(Sprite);\nFactory_1.Factory.addGetterSetter(Sprite, 'animation');\nFactory_1.Factory.addGetterSetter(Sprite, 'animations');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameOffsets');\nFactory_1.Factory.addGetterSetter(Sprite, 'image');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameIndex', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Sprite, 'frameRate', 17, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.backCompat(Sprite, {\n    index: 'frameIndex',\n    getIndex: 'getFrameIndex',\n    setIndex: 'setFrameIndex',\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Star = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Star extends Shape_1.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}\nexports.Star = Star;\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Star);\nFactory_1.Factory.addGetterSetter(Star, 'numPoints', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Text = void 0;\nexports.stringToArray = stringToArray;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nfunction stringToArray(string) {\n    return [...string].reduce((acc, char, index, array) => {\n        if (/\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?(?:\\u200D\\p{Emoji_Presentation})+/u.test(char)) {\n            acc.push(char);\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 {\n            acc.push(char);\n        }\n        return acc;\n    }, []);\n}\nconst AUTO = 'auto', CENTER = 'center', INHERIT = 'inherit', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', RTL = 'rtl', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST = [\n    'direction',\n    'fontFamily',\n    'fontSize',\n    'fontStyle',\n    'fontVariant',\n    'padding',\n    'align',\n    'verticalAlign',\n    'lineHeight',\n    'text',\n    'width',\n    'height',\n    'wrap',\n    'ellipsis',\n    'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nfunction normalizeFontFamily(fontFamily) {\n    return fontFamily\n        .split(',')\n        .map((family) => {\n        family = family.trim();\n        const hasSpace = family.indexOf(' ') >= 0;\n        const hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n        if (hasSpace && !hasQuotes) {\n            family = `\"${family}\"`;\n        }\n        return family;\n    })\n        .join(', ');\n}\nlet dummyContext;\nfunction getDummyContext() {\n    if (dummyContext) {\n        return dummyContext;\n    }\n    dummyContext = Util_1.Util.createCanvasElement().getContext(CONTEXT_2D);\n    return dummyContext;\n}\nfunction _fillFunc(context) {\n    context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n    context.setAttr('miterLimit', 2);\n    context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n    config = config || {};\n    if (!config.fillLinearGradientColorStops &&\n        !config.fillRadialGradientColorStops &&\n        !config.fillPatternImage) {\n        config.fill = config.fill || 'black';\n    }\n    return config;\n}\nclass Text extends Shape_1.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        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(), fill = this.fill(), textDecoration = this.textDecoration(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n        direction = direction === INHERIT ? context.direction : direction;\n        let translateY = lineHeightPx / 2;\n        let baseline = MIDDLE;\n        if (Global_1.Konva._fixTextRendering) {\n            const metrics = this.measureSize('M');\n            baseline = 'alphabetic';\n            translateY =\n                (metrics.fontBoundingBoxAscent - metrics.fontBoundingBoxDescent) / 2 +\n                    lineHeightPx / 2;\n        }\n        var lineTranslateX = 0;\n        var lineTranslateY = 0;\n        if (direction === RTL) {\n            context.setAttr('direction', direction);\n        }\n        context.setAttr('font', this._getContextFont());\n        context.setAttr('textBaseline', baseline);\n        context.setAttr('textAlign', LEFT);\n        if (verticalAlign === MIDDLE) {\n            alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n        }\n        else if (verticalAlign === BOTTOM) {\n            alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n        }\n        context.translate(padding, alignY + padding);\n        for (n = 0; n < textArrLen; n++) {\n            var lineTranslateX = 0;\n            var lineTranslateY = 0;\n            var obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph, spacesNumber, oneWord, lineWidth;\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 = Global_1.Konva._fixTextRendering\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                spacesNumber = text.split(' ').length - 1;\n                oneWord = spacesNumber === 0;\n                lineWidth =\n                    align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n                context.lineTo(x + Math.round(lineWidth), y);\n                context.lineWidth = fontSize / 15;\n                const gradient = this._getLinearGradient();\n                context.strokeStyle = gradient || fill;\n                context.stroke();\n                context.restore();\n            }\n            if (shouldLineThrough) {\n                context.save();\n                context.beginPath();\n                const yOffset = Global_1.Konva._fixTextRendering ? -Math.round(fontSize / 4) : 0;\n                context.moveTo(lineTranslateX, translateY + lineTranslateY + yOffset);\n                spacesNumber = text.split(' ').length - 1;\n                oneWord = spacesNumber === 0;\n                lineWidth =\n                    align === JUSTIFY && lastLine && !oneWord\n                        ? totalWidth - padding * 2\n                        : width;\n                context.lineTo(lineTranslateX + 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            if (direction !== RTL && (letterSpacing !== 0 || align === JUSTIFY)) {\n                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                    context.fillStrokeShape(this);\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            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_1.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_1.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 +\n            (length ? letterSpacing * (length - 1) : 0));\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 ? this._getTextWidth(ELLIPSIS) : 0;\n        for (let i = 0, max = lines.length; i < max; ++i) {\n            let line = lines[i];\n            let lineWidth = this._getTextWidth(line);\n            if (fixedWidth && lineWidth > maxWidth) {\n                while (line.length > 0) {\n                    let low = 0, high = line.length, match = '', matchWidth = 0;\n                    while (low < high) {\n                        const mid = (low + high) >>> 1, substr = line.slice(0, mid + 1), substrWidth = this._getTextWidth(substr) + additionalWidth;\n                        if (substrWidth <= 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                            var wrapIndex;\n                            const nextChar = line[match.length];\n                            const nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n                            if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n                                wrapIndex = match.length;\n                            }\n                            else {\n                                wrapIndex =\n                                    Math.max(match.lastIndexOf(SPACE), match.lastIndexOf(DASH)) +\n                                        1;\n                            }\n                            if (wrapIndex > 0) {\n                                low = wrapIndex;\n                                match = match.slice(0, low);\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 = line.slice(low);\n                        line = line.trimLeft();\n                        if (line.length > 0) {\n                            lineWidth = this._getTextWidth(line);\n                            if (lineWidth <= maxWidth) {\n                                this._addTextLine(line);\n                                currentHeightPx += lineHeightPx;\n                                textWidth = Math.max(textWidth, lineWidth);\n                                break;\n                            }\n                        }\n                    }\n                    else {\n                        break;\n                    }\n                }\n            }\n            else {\n                this._addTextLine(line);\n                currentHeightPx += lineHeightPx;\n                textWidth = Math.max(textWidth, lineWidth);\n                if (this._shouldHandleEllipsis(currentHeightPx) && i < max - 1) {\n                    this._tryToAddEllipsisToLastLine();\n                }\n            }\n            if (this.textArr[this.textArr.length - 1]) {\n                this.textArr[this.textArr.length - 1].lastInParagraph = true;\n            }\n            if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\n                break;\n            }\n        }\n        this.textHeight = fontSize;\n        this.textWidth = textWidth;\n    }\n    _shouldHandleEllipsis(currentHeightPx) {\n        const fontSize = +this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, height = this.attrs.height, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxHeightPx = height - padding * 2, wrap = this.wrap(), shouldWrap = wrap !== NONE;\n        return (!shouldWrap ||\n            (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx));\n    }\n    _tryToAddEllipsisToLastLine() {\n        const width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n        const lastLine = this.textArr[this.textArr.length - 1];\n        if (!lastLine || !shouldAddEllipsis) {\n            return;\n        }\n        if (fixedWidth) {\n            const haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n            if (!haveSpace) {\n                lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n            }\n        }\n        this.textArr.splice(this.textArr.length - 1, 1);\n        this._addTextLine(lastLine.text + ELLIPSIS);\n    }\n    getStrokeScaleEnabled() {\n        return true;\n    }\n    _useBufferCanvas() {\n        const hasLine = this.textDecoration().indexOf('underline') !== -1 ||\n            this.textDecoration().indexOf('line-through') !== -1;\n        const hasShadow = this.hasShadow();\n        if (hasLine && hasShadow) {\n            return true;\n        }\n        return super._useBufferCanvas();\n    }\n}\nexports.Text = Text;\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(0, Global_2._registerNode)(Text);\nFactory_1.Factory.overWriteSetter(Text, 'width', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.overWriteSetter(Text, 'height', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'direction', INHERIT);\nFactory_1.Factory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(Text, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'align', LEFT);\nFactory_1.Factory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory_1.Factory.addGetterSetter(Text, 'lineHeight', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'wrap', WORD);\nFactory_1.Factory.addGetterSetter(Text, 'ellipsis', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'text', '', (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'textDecoration', '');\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextPath = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Path_1 = require(\"./Path\");\nconst Text_1 = require(\"./Text\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\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}\nclass TextPath extends Shape_1.Shape {\n    constructor(config) {\n        super(config);\n        this.dummyCanvas = Util_1.Util.createCanvasElement();\n        this.dataArray = [];\n        this._readDataAttribute();\n        this.on('dataChange.konva', function () {\n            this._readDataAttribute();\n            this._setTextData();\n        });\n        this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva', this._setTextData);\n        this._setTextData();\n    }\n    _getTextPathLength() {\n        return Path_1.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 - 1 > totalLength) {\n            return null;\n        }\n        return Path_1.Path.getPointAtLengthOfDataArray(length, this.dataArray);\n    }\n    _readDataAttribute() {\n        this.dataArray = Path_1.Path.parsePathData(this.attrs.data);\n        this.pathLength = this._getTextPathLength();\n    }\n    _sceneFunc(context) {\n        context.setAttr('font', this._getContextFont());\n        context.setAttr('textBaseline', this.textBaseline());\n        context.setAttr('textAlign', 'left');\n        context.save();\n        const textDecoration = this.textDecoration();\n        const fill = this.fill();\n        const fontSize = this.fontSize();\n        const glyphInfo = this.glyphInfo;\n        if (textDecoration === 'underline') {\n            context.beginPath();\n        }\n        for (let i = 0; i < glyphInfo.length; i++) {\n            context.save();\n            const p0 = glyphInfo[i].p0;\n            context.translate(p0.x, p0.y);\n            context.rotate(glyphInfo[i].rotation);\n            this.partialText = glyphInfo[i].text;\n            context.fillStrokeShape(this);\n            if (textDecoration === 'underline') {\n                if (i === 0) {\n                    context.moveTo(0, fontSize / 2 + 1);\n                }\n                context.lineTo(fontSize, fontSize / 2 + 1);\n            }\n            context.restore();\n        }\n        if (textDecoration === 'underline') {\n            context.strokeStyle = fill;\n            context.lineWidth = fontSize / 20;\n            context.stroke();\n        }\n        context.restore();\n    }\n    _hitFunc(context) {\n        context.beginPath();\n        const glyphInfo = this.glyphInfo;\n        if (glyphInfo.length >= 1) {\n            const p0 = glyphInfo[0].p0;\n            context.moveTo(p0.x, p0.y);\n        }\n        for (let i = 0; i < glyphInfo.length; i++) {\n            const p1 = glyphInfo[i].p1;\n            context.lineTo(p1.x, p1.y);\n        }\n        context.setAttr('lineWidth', this.fontSize());\n        context.setAttr('strokeStyle', this.colorKey);\n        context.stroke();\n    }\n    getTextWidth() {\n        return this.textWidth;\n    }\n    getTextHeight() {\n        Util_1.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_1.Text.prototype.setText.call(this, text);\n    }\n    _getContextFont() {\n        return Text_1.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 { width, height } = this._getTextSize(this.attrs.text);\n        this.textWidth = width;\n        this.textHeight = height;\n        this.glyphInfo = [];\n        if (!this.attrs.data) {\n            return null;\n        }\n        const letterSpacing = this.letterSpacing();\n        const align = this.align();\n        const kerningFunc = this.kerningFunc();\n        const textWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n        let offset = 0;\n        if (align === 'center') {\n            offset = Math.max(0, this.pathLength / 2 - textWidth / 2);\n        }\n        if (align === 'right') {\n            offset = Math.max(0, this.pathLength - textWidth);\n        }\n        const charArr = (0, Text_1.stringToArray)(this.text());\n        let offsetToGlyph = offset;\n        for (let i = 0; i < charArr.length; i++) {\n            const charStartPoint = this._getPointAtLength(offsetToGlyph);\n            if (!charStartPoint)\n                return;\n            let glyphWidth = this._getTextSize(charArr[i]).width + letterSpacing;\n            if (charArr[i] === ' ' && align === 'justify') {\n                const numberOfSpaces = this.text().split(' ').length - 1;\n                glyphWidth += (this.pathLength - textWidth) / numberOfSpaces;\n            }\n            const charEndPoint = this._getPointAtLength(offsetToGlyph + glyphWidth);\n            if (!charEndPoint)\n                return;\n            const width = Path_1.Path.getLineLength(charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n            let kern = 0;\n            if (kerningFunc) {\n                try {\n                    kern = kerningFunc(charArr[i - 1], charArr[i]) * 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_1.Path.getPointOnLine(kern + width / 2.0, charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n            const rotation = Math.atan2(charEndPoint.y - charStartPoint.y, charEndPoint.x - charStartPoint.x);\n            this.glyphInfo.push({\n                transposeX: midpoint.x,\n                transposeY: midpoint.y,\n                text: charArr[i],\n                rotation: rotation,\n                p0: charStartPoint,\n                p1: charEndPoint,\n            });\n            offsetToGlyph += glyphWidth;\n        }\n    }\n    getSelfRect() {\n        if (!this.glyphInfo.length) {\n            return {\n                x: 0,\n                y: 0,\n                width: 0,\n                height: 0,\n            };\n        }\n        const points = [];\n        this.glyphInfo.forEach(function (info) {\n            points.push(info.p0.x);\n            points.push(info.p0.y);\n            points.push(info.p1.x);\n            points.push(info.p1.y);\n        });\n        let minX = points[0] || 0;\n        let maxX = points[0] || 0;\n        let minY = points[1] || 0;\n        let maxY = points[1] || 0;\n        let x, y;\n        for (let i = 0; i < points.length / 2; i++) {\n            x = points[i * 2];\n            y = points[i * 2 + 1];\n            minX = Math.min(minX, x);\n            maxX = Math.max(maxX, x);\n            minY = Math.min(minY, y);\n            maxY = Math.max(maxY, y);\n        }\n        const fontSize = this.fontSize();\n        return {\n            x: minX - fontSize / 2,\n            y: minY - fontSize / 2,\n            width: maxX - minX + fontSize,\n            height: maxY - minY + fontSize,\n        };\n    }\n    destroy() {\n        Util_1.Util.releaseCanvas(this.dummyCanvas);\n        return super.destroy();\n    }\n}\nexports.TextPath = TextPath;\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(0, Global_1._registerNode)(TextPath);\nFactory_1.Factory.addGetterSetter(TextPath, 'data');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'align', 'left');\nFactory_1.Factory.addGetterSetter(TextPath, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory_1.Factory.addGetterSetter(TextPath, 'textDecoration', null);\nFactory_1.Factory.addGetterSetter(TextPath, 'kerningFunc', null);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transformer = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Shape_1 = require(\"../Shape\");\nconst Rect_1 = require(\"./Rect\");\nconst Group_1 = require(\"../Group\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nconst EVENTS_NAME = 'tr-konva';\nconst ATTR_CHANGE_LIST = [\n    'resizeEnabledChange',\n    'rotateAnchorOffsetChange',\n    'rotateEnabledChange',\n    'enabledAnchorsChange',\n    'anchorSizeChange',\n    'borderEnabledChange',\n    'borderStrokeChange',\n    'borderStrokeWidthChange',\n    'borderDashChange',\n    'anchorStrokeChange',\n    'anchorStrokeWidthChange',\n    'anchorFillChange',\n    'anchorCornerRadiusChange',\n    'ignoreStrokeChange',\n    'anchorStyleFuncChange',\n]\n    .map((e) => e + `.${EVENTS_NAME}`)\n    .join(' ');\nconst NODES_RECT = 'nodesRect';\nconst TRANSFORM_CHANGE_STR = [\n    'widthChange',\n    'heightChange',\n    'scaleXChange',\n    'scaleYChange',\n    'skewXChange',\n    'skewYChange',\n    'rotationChange',\n    'offsetXChange',\n    'offsetYChange',\n    'transformsEnabledChange',\n    'strokeWidthChange',\n];\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 Global_1.Konva._global;\nfunction getCursor(anchorName, rad, rotateCursor) {\n    if (anchorName === 'rotater') {\n        return rotateCursor;\n    }\n    rad += Util_1.Util.degToRad(ANGLES[anchorName] || 0);\n    const angle = ((Util_1.Util.radToDeg(rad) % 360) + 360) % 360;\n    if (Util_1.Util._inRange(angle, 315 + 22.5, 360) || Util_1.Util._inRange(angle, 0, 22.5)) {\n        return 'ns-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n        return 'nesw-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n        return 'ew-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n        return 'nwse-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n        return 'ns-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n        return 'nesw-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n        return 'ew-resize';\n    }\n    else if (Util_1.Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n        return 'nwse-resize';\n    }\n    else {\n        Util_1.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 = Global_1.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;\nclass Transformer extends Group_1.Group {\n    constructor(config) {\n        super(config);\n        this._movingAnchorName = null;\n        this._transforming = false;\n        this._createElements();\n        this._handleMouseMove = this._handleMouseMove.bind(this);\n        this._handleMouseUp = this._handleMouseUp.bind(this);\n        this.update = this.update.bind(this);\n        this.on(ATTR_CHANGE_LIST, this.update);\n        if (this.getNode()) {\n            this.update();\n        }\n    }\n    attachTo(node) {\n        this.setNode(node);\n        return this;\n    }\n    setNode(node) {\n        Util_1.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_1.Util.error('Konva.Transformer cannot be an a child of the node you are trying to attach');\n                return false;\n            }\n            return true;\n        });\n        this._nodes = nodes = filteredNodes;\n        if (nodes.length === 1 && this.useSingleNodeRotation()) {\n            this.rotation(nodes[0].getAbsoluteRotation());\n        }\n        else {\n            this.rotation(0);\n        }\n        this._nodes.forEach((node) => {\n            const onChange = () => {\n                if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n                    this.rotation(this.nodes()[0].getAbsoluteRotation());\n                }\n                this._resetTransformCache();\n                if (!this._transforming && !this.isDragging()) {\n                    this.update();\n                }\n            };\n            const additionalEvents = node._attrsAffectingSize\n                .map((prop) => prop + 'Change.' + this._getEventNamespace())\n                .join(' ');\n            node.on(additionalEvents, onChange);\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 = (Global_1.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, -Global_1.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 Util_1.Transform();\n        tr.rotate(-Global_1.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: Global_1.Konva.getAngle(this.rotation()),\n        };\n    }\n    getX() {\n        return this._getNodeRect().x;\n    }\n    getY() {\n        return this._getNodeRect().y;\n    }\n    getWidth() {\n        return this._getNodeRect().width;\n    }\n    getHeight() {\n        return this._getNodeRect().height;\n    }\n    _createElements() {\n        this._createBack();\n        ANCHORS_NAMES.forEach((name) => {\n            this._createAnchor(name);\n        });\n        this._createAnchor('rotater');\n    }\n    _createAnchor(name) {\n        const anchor = new Rect_1.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 = Global_1.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_1.Shape({\n            name: 'back',\n            width: 0,\n            height: 0,\n            draggable: true,\n            sceneFunc(ctx, shape) {\n                const tr = shape.getParent();\n                const padding = tr.padding();\n                ctx.beginPath();\n                ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n                ctx.moveTo(shape.width() / 2, -padding);\n                if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n                    ctx.lineTo(shape.width() / 2, -tr.rotateAnchorOffset() * Util_1.Util._sign(shape.height()) - padding);\n                }\n                ctx.fillStrokeShape(shape);\n            },\n            hitFunc: (ctx, shape) => {\n                if (!this.shouldOverdrawWholeArea()) {\n                    return;\n                }\n                const padding = this.padding();\n                ctx.beginPath();\n                ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n                ctx.fillStrokeShape(shape);\n            },\n        });\n        this.add(back);\n        this._proxyDrag(back);\n        back.on('dragstart', (e) => {\n            e.cancelBubble = true;\n        });\n        back.on('dragmove', (e) => {\n            e.cancelBubble = true;\n        });\n        back.on('dragend', (e) => {\n            e.cancelBubble = true;\n        });\n        this.on('dragmove', (e) => {\n            this.update();\n        });\n    }\n    _handleMouseDown(e) {\n        if (this._transforming) {\n            return;\n        }\n        this._movingAnchorName = e.target.name().split(' ')[0];\n        const attrs = this._getNodeRect();\n        const width = attrs.width;\n        const height = attrs.height;\n        const hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n        this.sin = Math.abs(height / hypotenuse);\n        this.cos = Math.abs(width / hypotenuse);\n        if (typeof window !== 'undefined') {\n            window.addEventListener('mousemove', this._handleMouseMove);\n            window.addEventListener('touchmove', this._handleMouseMove);\n            window.addEventListener('mouseup', this._handleMouseUp, true);\n            window.addEventListener('touchend', this._handleMouseUp, true);\n        }\n        this._transforming = true;\n        const ap = e.target.getAbsolutePosition();\n        const pos = e.target.getStage().getPointerPosition();\n        this._anchorDragOffset = {\n            x: pos.x - ap.x,\n            y: pos.y - ap.y,\n        };\n        activeTransformersCount++;\n        this._fire('transformstart', { evt: e.evt, target: this.getNode() });\n        this._nodes.forEach((target) => {\n            target._fire('transformstart', { evt: e.evt, target });\n        });\n    }\n    _handleMouseMove(e) {\n        let x, y, newHypotenuse;\n        const anchorNode = this.findOne('.' + this._movingAnchorName);\n        const stage = anchorNode.getStage();\n        stage.setPointersPositions(e);\n        const pp = stage.getPointerPosition();\n        let newNodePos = {\n            x: pp.x - this._anchorDragOffset.x,\n            y: pp.y - this._anchorDragOffset.y,\n        };\n        const oldAbs = anchorNode.getAbsolutePosition();\n        if (this.anchorDragBoundFunc()) {\n            newNodePos = this.anchorDragBoundFunc()(oldAbs, newNodePos, e);\n        }\n        anchorNode.setAbsolutePosition(newNodePos);\n        const newAbs = anchorNode.getAbsolutePosition();\n        if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\n            return;\n        }\n        if (this._movingAnchorName === 'rotater') {\n            const attrs = this._getNodeRect();\n            x = anchorNode.x() - attrs.width / 2;\n            y = -anchorNode.y() + attrs.height / 2;\n            let delta = Math.atan2(-y, x) + Math.PI / 2;\n            if (attrs.height < 0) {\n                delta -= Math.PI;\n            }\n            const oldRotation = Global_1.Konva.getAngle(this.rotation());\n            const newRotation = oldRotation + delta;\n            const tol = Global_1.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        var centeredScaling = this.centeredScaling() || e.altKey;\n        if (this._movingAnchorName === 'top-left') {\n            if (keepProportion) {\n                var 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                var reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n                var 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                var 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                var reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n                var 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                var 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                var reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n                var 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                var 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                var reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n                var 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        var 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: Global_1.Konva.getAngle(this.rotation()),\n        }, e);\n    }\n    _handleMouseUp(e) {\n        this._removeEvents(e);\n    }\n    getAbsoluteTransform() {\n        return this.getTransform();\n    }\n    _removeEvents(e) {\n        var _a;\n        if (this._transforming) {\n            this._transforming = false;\n            if (typeof window !== 'undefined') {\n                window.removeEventListener('mousemove', this._handleMouseMove);\n                window.removeEventListener('touchmove', this._handleMouseMove);\n                window.removeEventListener('mouseup', this._handleMouseUp, true);\n                window.removeEventListener('touchend', this._handleMouseUp, true);\n            }\n            const node = this.getNode();\n            activeTransformersCount--;\n            this._fire('transformend', { evt: e, target: node });\n            (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n            if (node) {\n                this._nodes.forEach((target) => {\n                    var _a;\n                    target._fire('transformend', { evt: e, target });\n                    (_a = target.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n                });\n            }\n            this._movingAnchorName = null;\n        }\n    }\n    _fitNodesInto(newAttrs, evt) {\n        const oldAttrs = this._getNodeRect();\n        const minSize = 1;\n        if (Util_1.Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n            this.update();\n            return;\n        }\n        if (Util_1.Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n            this.update();\n            return;\n        }\n        const t = new Util_1.Transform();\n        t.rotate(Global_1.Konva.getAngle(this.rotation()));\n        if (this._movingAnchorName &&\n            newAttrs.width < 0 &&\n            this._movingAnchorName.indexOf('left') >= 0) {\n            const offset = t.point({\n                x: -this.padding() * 2,\n                y: 0,\n            });\n            newAttrs.x += offset.x;\n            newAttrs.y += offset.y;\n            newAttrs.width += this.padding() * 2;\n            this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\n            this._anchorDragOffset.x -= offset.x;\n            this._anchorDragOffset.y -= offset.y;\n        }\n        else if (this._movingAnchorName &&\n            newAttrs.width < 0 &&\n            this._movingAnchorName.indexOf('right') >= 0) {\n            const offset = t.point({\n                x: this.padding() * 2,\n                y: 0,\n            });\n            this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\n            this._anchorDragOffset.x -= offset.x;\n            this._anchorDragOffset.y -= offset.y;\n            newAttrs.width += this.padding() * 2;\n        }\n        if (this._movingAnchorName &&\n            newAttrs.height < 0 &&\n            this._movingAnchorName.indexOf('top') >= 0) {\n            const offset = t.point({\n                x: 0,\n                y: -this.padding() * 2,\n            });\n            newAttrs.x += offset.x;\n            newAttrs.y += offset.y;\n            this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\n            this._anchorDragOffset.x -= offset.x;\n            this._anchorDragOffset.y -= offset.y;\n            newAttrs.height += this.padding() * 2;\n        }\n        else if (this._movingAnchorName &&\n            newAttrs.height < 0 &&\n            this._movingAnchorName.indexOf('bottom') >= 0) {\n            const offset = t.point({\n                x: 0,\n                y: this.padding() * 2,\n            });\n            this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\n            this._anchorDragOffset.x -= offset.x;\n            this._anchorDragOffset.y -= offset.y;\n            newAttrs.height += this.padding() * 2;\n        }\n        if (this.boundBoxFunc()) {\n            const bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n            if (bounded) {\n                newAttrs = bounded;\n            }\n            else {\n                Util_1.Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n            }\n        }\n        const baseSize = 10000000;\n        const oldTr = new Util_1.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 Util_1.Transform();\n        const newScaleX = newAttrs.width / baseSize;\n        const newScaleY = newAttrs.height / baseSize;\n        if (this.flipEnabled() === false) {\n            newTr.translate(newAttrs.x, newAttrs.y);\n            newTr.rotate(newAttrs.rotation);\n            newTr.translate(newAttrs.width < 0 ? newAttrs.width : 0, newAttrs.height < 0 ? newAttrs.height : 0);\n            newTr.scale(Math.abs(newScaleX), Math.abs(newScaleY));\n        }\n        else {\n            newTr.translate(newAttrs.x, newAttrs.y);\n            newTr.rotate(newAttrs.rotation);\n            newTr.scale(newScaleX, newScaleY);\n        }\n        const delta = newTr.multiply(oldTr.invert());\n        this._nodes.forEach((node) => {\n            var _a;\n            const parentTransform = node.getParent().getAbsoluteTransform();\n            const localTransform = node.getTransform().copy();\n            localTransform.translate(node.offsetX(), node.offsetY());\n            const newLocalTransform = new Util_1.Transform();\n            newLocalTransform\n                .multiply(parentTransform.copy().invert())\n                .multiply(delta)\n                .multiply(parentTransform)\n                .multiply(localTransform);\n            const attrs = newLocalTransform.decompose();\n            node.setAttrs(attrs);\n            (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n        });\n        this.rotation(Util_1.Util._getRotation(newAttrs.rotation));\n        this._nodes.forEach((node) => {\n            this._fire('transform', { evt: evt, target: node });\n            node._fire('transform', { evt: evt, target: node });\n        });\n        this._resetTransformCache();\n        this.update();\n        this.getLayer().batchDraw();\n    }\n    forceUpdate() {\n        this._resetTransformCache();\n        this.update();\n    }\n    _batchChangeChild(selector, attrs) {\n        const anchor = this.findOne(selector);\n        anchor.setAttrs(attrs);\n    }\n    update() {\n        var _a;\n        const attrs = this._getNodeRect();\n        this.rotation(Util_1.Util._getRotation(attrs.rotation));\n        const width = attrs.width;\n        const height = attrs.height;\n        const enabledAnchors = this.enabledAnchors();\n        const resizeEnabled = this.resizeEnabled();\n        const padding = this.padding();\n        const anchorSize = this.anchorSize();\n        const anchors = this.find('._anchor');\n        anchors.forEach((node) => {\n            node.setAttrs({\n                width: anchorSize,\n                height: anchorSize,\n                offsetX: anchorSize / 2,\n                offsetY: anchorSize / 2,\n                stroke: this.anchorStroke(),\n                strokeWidth: this.anchorStrokeWidth(),\n                fill: this.anchorFill(),\n                cornerRadius: this.anchorCornerRadius(),\n            });\n        });\n        this._batchChangeChild('.top-left', {\n            x: 0,\n            y: 0,\n            offsetX: anchorSize / 2 + padding,\n            offsetY: anchorSize / 2 + padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n        });\n        this._batchChangeChild('.top-center', {\n            x: width / 2,\n            y: 0,\n            offsetY: anchorSize / 2 + padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n        });\n        this._batchChangeChild('.top-right', {\n            x: width,\n            y: 0,\n            offsetX: anchorSize / 2 - padding,\n            offsetY: anchorSize / 2 + padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n        });\n        this._batchChangeChild('.middle-left', {\n            x: 0,\n            y: height / 2,\n            offsetX: anchorSize / 2 + padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n        });\n        this._batchChangeChild('.middle-right', {\n            x: width,\n            y: height / 2,\n            offsetX: anchorSize / 2 - padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n        });\n        this._batchChangeChild('.bottom-left', {\n            x: 0,\n            y: height,\n            offsetX: anchorSize / 2 + padding,\n            offsetY: anchorSize / 2 - padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n        });\n        this._batchChangeChild('.bottom-center', {\n            x: width / 2,\n            y: height,\n            offsetY: anchorSize / 2 - padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n        });\n        this._batchChangeChild('.bottom-right', {\n            x: width,\n            y: height,\n            offsetX: anchorSize / 2 - padding,\n            offsetY: anchorSize / 2 - padding,\n            visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n        });\n        this._batchChangeChild('.rotater', {\n            x: width / 2,\n            y: -this.rotateAnchorOffset() * Util_1.Util._sign(height) - padding,\n            visible: this.rotateEnabled(),\n        });\n        this._batchChangeChild('.back', {\n            width: width,\n            height: height,\n            visible: this.borderEnabled(),\n            stroke: this.borderStroke(),\n            strokeWidth: this.borderStrokeWidth(),\n            dash: this.borderDash(),\n            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_1.Group.prototype.destroy.call(this);\n        this.detach();\n        this._removeEvents();\n        return this;\n    }\n    toObject() {\n        return Node_1.Node.prototype.toObject.call(this);\n    }\n    clone(obj) {\n        const node = Node_1.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}\nexports.Transformer = Transformer;\nTransformer.isTransforming = () => {\n    return activeTransformersCount > 0;\n};\nfunction validateAnchors(val) {\n    if (!(val instanceof Array)) {\n        Util_1.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_1.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(0, Global_2._registerNode)(Transformer);\nFactory_1.Factory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory_1.Factory.addGetterSetter(Transformer, 'flipEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorSize', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateLineVisible', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorCursor', 'crosshair');\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderDash');\nFactory_1.Factory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'shiftBehavior', 'default');\nFactory_1.Factory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'node');\nFactory_1.Factory.addGetterSetter(Transformer, 'nodes');\nFactory_1.Factory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStyleFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'useSingleNodeRotation', true);\nFactory_1.Factory.backCompat(Transformer, {\n    lineEnabled: 'borderEnabled',\n    rotateHandlerOffset: 'rotateAnchorOffset',\n    enabledHandlers: 'enabledAnchors',\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Wedge = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Wedge extends Shape_1.Shape {\n    _sceneFunc(context) {\n        context.beginPath();\n        context.arc(0, 0, this.radius(), 0, Global_1.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}\nexports.Wedge = Wedge;\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\n(0, Global_2._registerNode)(Wedge);\nFactory_1.Factory.addGetterSetter(Wedge, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'clockwise', false);\nFactory_1.Factory.backCompat(Wedge, {\n    angleDeg: 'angle',\n    getAngleDeg: 'getAngle',\n    setAngleDeg: 'setAngle',\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Blur = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\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 x, y, i, p, yp, 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    let div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), stackEnd = null, stack = stackStart, stackIn = null, stackOut = null, mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n    for (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 (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 (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 (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 (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 (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 (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        yp = width;\n        for (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 (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}\nconst Blur = function Blur(imageData) {\n    const radius = Math.round(this.blurRadius());\n    if (radius > 0) {\n        filterGaussBlurRGBA(imageData, radius);\n    }\n};\nexports.Blur = Blur;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blurRadius', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Brighten = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Brighten = function (imageData) {\n    let brightness = this.brightness() * 255, data = imageData.data, len = data.length, i;\n    for (i = 0; i < len; i += 4) {\n        data[i] += brightness;\n        data[i + 1] += brightness;\n        data[i + 2] += brightness;\n    }\n};\nexports.Brighten = Brighten;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'brightness', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Contrast = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Contrast = function (imageData) {\n    const adjust = Math.pow((this.contrast() + 100) / 100, 2);\n    let data = imageData.data, nPixels = data.length, red = 150, green = 150, blue = 150, i;\n    for (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};\nexports.Contrast = Contrast;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'contrast', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emboss = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nconst Emboss = function (imageData) {\n    let strength = this.embossStrength() * 10, greyLevel = this.embossWhiteLevel() * 255, direction = this.embossDirection(), blend = this.embossBlend(), dirY = 0, dirX = 0, data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n    switch (direction) {\n        case 'top-left':\n            dirY = -1;\n            dirX = -1;\n            break;\n        case 'top':\n            dirY = -1;\n            dirX = 0;\n            break;\n        case 'top-right':\n            dirY = -1;\n            dirX = 1;\n            break;\n        case 'right':\n            dirY = 0;\n            dirX = 1;\n            break;\n        case 'bottom-right':\n            dirY = 1;\n            dirX = 1;\n            break;\n        case 'bottom':\n            dirY = 1;\n            dirX = 0;\n            break;\n        case 'bottom-left':\n            dirY = 1;\n            dirX = -1;\n            break;\n        case 'left':\n            dirY = 0;\n            dirX = -1;\n            break;\n        default:\n            Util_1.Util.error('Unknown emboss direction: ' + direction);\n    }\n    do {\n        const offsetY = (y - 1) * w4;\n        let otherY = dirY;\n        if (y + otherY < 1) {\n            otherY = 0;\n        }\n        if (y + otherY > h) {\n            otherY = 0;\n        }\n        const offsetYOther = (y - 1 + otherY) * w * 4;\n        let x = w;\n        do {\n            const offset = offsetY + (x - 1) * 4;\n            let otherX = dirX;\n            if (x + otherX < 1) {\n                otherX = 0;\n            }\n            if (x + otherX > w) {\n                otherX = 0;\n            }\n            const offsetOther = offsetYOther + (x - 1 + otherX) * 4;\n            const dR = data[offset] - data[offsetOther];\n            const dG = data[offset + 1] - data[offsetOther + 1];\n            const dB = data[offset + 2] - data[offsetOther + 2];\n            let dif = dR;\n            const absDif = dif > 0 ? dif : -dif;\n            const absG = dG > 0 ? dG : -dG;\n            const absB = dB > 0 ? dB : -dB;\n            if (absG > absDif) {\n                dif = dG;\n            }\n            if (absB > absDif) {\n                dif = dB;\n            }\n            dif *= strength;\n            if (blend) {\n                const r = data[offset] + dif;\n                const g = data[offset + 1] + dif;\n                const b = data[offset + 2] + dif;\n                data[offset] = r > 255 ? 255 : r < 0 ? 0 : r;\n                data[offset + 1] = g > 255 ? 255 : g < 0 ? 0 : g;\n                data[offset + 2] = b > 255 ? 255 : b < 0 ? 0 : b;\n            }\n            else {\n                let grey = greyLevel - dif;\n                if (grey < 0) {\n                    grey = 0;\n                }\n                else if (grey > 255) {\n                    grey = 255;\n                }\n                data[offset] = data[offset + 1] = data[offset + 2] = grey;\n            }\n        } while (--x);\n    } while (--y);\n};\nexports.Emboss = Emboss;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossStrength', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossWhiteLevel', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossDirection', 'top-left', null, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossBlend', false, null, Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Enhance = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n    let fromRange = fromMax - fromMin, toRange = toMax - toMin, toValue;\n    if (fromRange === 0) {\n        return toMin + toRange / 2;\n    }\n    if (toRange === 0) {\n        return toMin;\n    }\n    toValue = (fromValue - fromMin) / fromRange;\n    toValue = toRange * toValue + toMin;\n    return toValue;\n}\nconst Enhance = function (imageData) {\n    let data = imageData.data, nSubPixels = data.length, rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b, i;\n    const enhanceAmount = this.enhance();\n    if (enhanceAmount === 0) {\n        return;\n    }\n    for (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 rMid, rGoalMax, rGoalMin, gMid, gGoalMax, gGoalMin, bMid, 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        rMid = (rMax + rMin) * 0.5;\n        rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n        rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n        gMid = (gMax + gMin) * 0.5;\n        gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n        gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n        bMid = (bMax + bMin) * 0.5;\n        bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n        bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n    }\n    for (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};\nexports.Enhance = Enhance;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'enhance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Grayscale = void 0;\nconst Grayscale = function (imageData) {\n    let data = imageData.data, len = data.length, i, brightness;\n    for (i = 0; i < len; i += 4) {\n        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};\nexports.Grayscale = Grayscale;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSL = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'luminance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nconst HSL = function (imageData) {\n    let 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, i;\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 (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};\nexports.HSL = HSL;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSV = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst 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    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;\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};\nexports.HSV = HSV;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'value', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Invert = void 0;\nconst Invert = function (imageData) {\n    let data = imageData.data, len = data.length, i;\n    for (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};\nexports.Invert = Invert;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Kaleidoscope = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nconst ToPolar = function (src, dst, opt) {\n    let srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, r = 0, g = 0, b = 0, a = 0;\n    let rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n    x = xSize - xMid;\n    y = ySize - yMid;\n    rad = Math.sqrt(x * x + y * y);\n    rMax = rad > rMax ? rad : rMax;\n    let rSize = ySize, tSize = xSize, radius, theta;\n    let conversion = ((360 / tSize) * Math.PI) / 180, sin, cos;\n    for (theta = 0; theta < tSize; theta += 1) {\n        sin = Math.sin(theta * conversion);\n        cos = Math.cos(theta * conversion);\n        for (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            i = (y * xSize + x) * 4;\n            r = srcPixels[i + 0];\n            g = srcPixels[i + 1];\n            b = srcPixels[i + 2];\n            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    let srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, dx, dy, r = 0, g = 0, b = 0, a = 0;\n    let rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n    x = xSize - xMid;\n    y = ySize - yMid;\n    rad = Math.sqrt(x * x + y * y);\n    rMax = rad > rMax ? rad : rMax;\n    let rSize = ySize, tSize = xSize, radius, theta, 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            dx = x - xMid;\n            dy = y - yMid;\n            radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n            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            i = (y1 * xSize + x1) * 4;\n            r = srcPixels[i + 0];\n            g = srcPixels[i + 1];\n            b = srcPixels[i + 2];\n            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};\nconst 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_1.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_1.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};\nexports.Kaleidoscope = Kaleidoscope;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopePower', 2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopeAngle', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mask = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\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 = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9];\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}\nconst Mask = function (imageData) {\n    let threshold = this.threshold(), 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};\nexports.Mask = Mask;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Noise = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst 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};\nexports.Noise = Noise;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'noise', 0.2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Pixelate = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Util_1 = require(\"../Util\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Pixelate = function (imageData) {\n    let pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, x, y, i, red, green, blue, alpha, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), xBinStart, xBinEnd, yBinStart, yBinEnd, xBin, yBin, pixelsInBin, data = imageData.data;\n    if (pixelSize <= 0) {\n        Util_1.Util.error('pixelSize value can not be <= 0');\n        return;\n    }\n    for (xBin = 0; xBin < nBinsX; xBin += 1) {\n        for (yBin = 0; yBin < nBinsY; yBin += 1) {\n            red = 0;\n            green = 0;\n            blue = 0;\n            alpha = 0;\n            xBinStart = xBin * pixelSize;\n            xBinEnd = xBinStart + pixelSize;\n            yBinStart = yBin * pixelSize;\n            yBinEnd = yBinStart + pixelSize;\n            pixelsInBin = 0;\n            for (x = xBinStart; x < xBinEnd; x += 1) {\n                if (x >= width) {\n                    continue;\n                }\n                for (y = yBinStart; y < yBinEnd; y += 1) {\n                    if (y >= height) {\n                        continue;\n                    }\n                    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 (x = xBinStart; x < xBinEnd; x += 1) {\n                if (x >= width) {\n                    continue;\n                }\n                for (y = yBinStart; y < yBinEnd; y += 1) {\n                    if (y >= height) {\n                        continue;\n                    }\n                    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};\nexports.Pixelate = Pixelate;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'pixelSize', 8, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Posterize = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Posterize = function (imageData) {\n    let levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels, i;\n    for (i = 0; i < len; i += 1) {\n        data[i] = Math.floor(data[i] / scale) * scale;\n    }\n};\nexports.Posterize = Posterize;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'levels', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGB = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGB = function (imageData) {\n    let data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), i, brightness;\n    for (i = 0; i < nPixels; i += 4) {\n        brightness =\n            (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};\nexports.RGB = RGB;\nFactory_1.Factory.addGetterSetter(Node_1.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_1.Factory.addGetterSetter(Node_1.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_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGBA = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst 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};\nexports.RGBA = RGBA;\nFactory_1.Factory.addGetterSetter(Node_1.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_1.Factory.addGetterSetter(Node_1.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_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.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", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sepia = void 0;\nconst Sepia = function (imageData) {\n    let data = imageData.data, nPixels = data.length, i, r, g, b;\n    for (i = 0; i < nPixels; i += 4) {\n        r = data[i + 0];\n        g = data[i + 1];\n        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};\nexports.Sepia = Sepia;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Solarize = void 0;\nconst Solarize = function (imageData) {\n    const data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4;\n    let y = h;\n    do {\n        const offsetY = (y - 1) * w4;\n        let x = w;\n        do {\n            const offset = offsetY + (x - 1) * 4;\n            let r = data[offset];\n            let g = data[offset + 1];\n            let b = data[offset + 2];\n            if (r > 127) {\n                r = 255 - r;\n            }\n            if (g > 127) {\n                g = 255 - g;\n            }\n            if (b > 127) {\n                b = 255 - b;\n            }\n            data[offset] = r;\n            data[offset + 1] = g;\n            data[offset + 2] = b;\n        } while (--x);\n    } while (--y);\n};\nexports.Solarize = Solarize;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Threshold = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst 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};\nexports.Threshold = Threshold;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst _CoreInternals_1 = require(\"./_CoreInternals\");\nconst Arc_1 = require(\"./shapes/Arc\");\nconst Arrow_1 = require(\"./shapes/Arrow\");\nconst Circle_1 = require(\"./shapes/Circle\");\nconst Ellipse_1 = require(\"./shapes/Ellipse\");\nconst Image_1 = require(\"./shapes/Image\");\nconst Label_1 = require(\"./shapes/Label\");\nconst Line_1 = require(\"./shapes/Line\");\nconst Path_1 = require(\"./shapes/Path\");\nconst Rect_1 = require(\"./shapes/Rect\");\nconst RegularPolygon_1 = require(\"./shapes/RegularPolygon\");\nconst Ring_1 = require(\"./shapes/Ring\");\nconst Sprite_1 = require(\"./shapes/Sprite\");\nconst Star_1 = require(\"./shapes/Star\");\nconst Text_1 = require(\"./shapes/Text\");\nconst TextPath_1 = require(\"./shapes/TextPath\");\nconst Transformer_1 = require(\"./shapes/Transformer\");\nconst Wedge_1 = require(\"./shapes/Wedge\");\nconst Blur_1 = require(\"./filters/Blur\");\nconst Brighten_1 = require(\"./filters/Brighten\");\nconst Contrast_1 = require(\"./filters/Contrast\");\nconst Emboss_1 = require(\"./filters/Emboss\");\nconst Enhance_1 = require(\"./filters/Enhance\");\nconst Grayscale_1 = require(\"./filters/Grayscale\");\nconst HSL_1 = require(\"./filters/HSL\");\nconst HSV_1 = require(\"./filters/HSV\");\nconst Invert_1 = require(\"./filters/Invert\");\nconst Kaleidoscope_1 = require(\"./filters/Kaleidoscope\");\nconst Mask_1 = require(\"./filters/Mask\");\nconst Noise_1 = require(\"./filters/Noise\");\nconst Pixelate_1 = require(\"./filters/Pixelate\");\nconst Posterize_1 = require(\"./filters/Posterize\");\nconst RGB_1 = require(\"./filters/RGB\");\nconst RGBA_1 = require(\"./filters/RGBA\");\nconst Sepia_1 = require(\"./filters/Sepia\");\nconst Solarize_1 = require(\"./filters/Solarize\");\nconst Threshold_1 = require(\"./filters/Threshold\");\nexports.Konva = _CoreInternals_1.Konva.Util._assign(_CoreInternals_1.Konva, {\n    Arc: Arc_1.Arc,\n    Arrow: Arrow_1.Arrow,\n    Circle: Circle_1.Circle,\n    Ellipse: Ellipse_1.Ellipse,\n    Image: Image_1.Image,\n    Label: Label_1.Label,\n    Tag: Label_1.Tag,\n    Line: Line_1.Line,\n    Path: Path_1.Path,\n    Rect: Rect_1.Rect,\n    RegularPolygon: RegularPolygon_1.RegularPolygon,\n    Ring: Ring_1.Ring,\n    Sprite: Sprite_1.Sprite,\n    Star: Star_1.Star,\n    Text: Text_1.Text,\n    TextPath: TextPath_1.TextPath,\n    Transformer: Transformer_1.Transformer,\n    Wedge: Wedge_1.Wedge,\n    Filters: {\n        Blur: Blur_1.Blur,\n        Brighten: Brighten_1.Brighten,\n        Contrast: Contrast_1.Contrast,\n        Emboss: Emboss_1.Emboss,\n        Enhance: Enhance_1.Enhance,\n        Grayscale: Grayscale_1.Grayscale,\n        HSL: HSL_1.HSL,\n        HSV: HSV_1.HSV,\n        Invert: Invert_1.Invert,\n        Kaleidoscope: Kaleidoscope_1.Kaleidoscope,\n        Mask: Mask_1.Mask,\n        Noise: Noise_1.Noise,\n        Pixelate: Pixelate_1.Pixelate,\n        Posterize: Posterize_1.Posterize,\n        RGB: RGB_1.RGB,\n        RGBA: RGBA_1.RGBA,\n        Sepia: Sepia_1.Sepia,\n        Solarize: Solarize_1.Solarize,\n        Threshold: Threshold_1.Threshold,\n    },\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst _FullInternals_1 = require(\"./_FullInternals\");\nmodule.exports = _FullInternals_1.Konva;\n"],
+  "mappings": "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C;AAAA,MACD;AAAA,QACI;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AACA,YAAQ,UAAU;AAAA,MACd,CAAC;AAAA,MACD,CAAC;AAAA,MACD,CAAC,GAAK,CAAG;AAAA,MACT;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,MACA;AAAA,QACI;AAAA,QACA;AAAA,QAC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;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtE;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,IAC1E;AACA,QAAM,YAAY;AAAA,MACd;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAC3E;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MACxE;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAA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",
+  "names": ["component", "pos", "i", "v", "u", "width", "node", "_a", "Blur"]
 }
