{"version":3,"file":"static/chunks/61e71e5e.3ecec40cf49fee23.js","mappings":"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","sources":["webpack://_N_E/../../node_modules/@amcharts/amcharts5/.internal/core/render/backend/CanvasRenderer.js"],"sourcesContent":["/** @ignore */ /** */\r\nimport { __extends } from \"tslib\";\r\nimport { BlendMode } from \"./Renderer\";\r\nimport { Color } from \"../../util/Color\";\r\nimport { Matrix } from \"../../util/Matrix\";\r\nimport { Percent, percent } from \"../../util/Percent\";\r\n//import { Throttler } from \"../../util/Throttler\";\r\nimport { ArrayDisposer, Disposer, DisposerClass, CounterDisposer, MultiDisposer } from \"../../util/Disposer\";\r\nimport { TextFormatter } from \"../../util/TextFormatter\";\r\nimport * as $utils from \"../../util/Utils\";\r\nimport * as $array from \"../../util/Array\";\r\nimport * as $object from \"../../util/Object\";\r\nimport * as $type from \"../../util/Type\";\r\nimport * as $math from \"../../util/Math\";\r\nimport arcToBezier from 'svg-arc-to-cubic-bezier';\r\n/**\r\n * @ignore\r\n */\r\nfunction checkArgs(name, actual, expected) {\r\n if (actual !== expected) {\r\n throw new Error(\"Required \" + expected + \" arguments for \" + name + \" but got \" + actual);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction checkMinArgs(name, actual, expected) {\r\n if (actual < expected) {\r\n throw new Error(\"Required at least \" + expected + \" arguments for \" + name + \" but got \" + actual);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction checkEvenArgs(name, actual, expected) {\r\n checkMinArgs(name, actual, expected);\r\n if ((actual % expected) !== 0) {\r\n throw new Error(\"Arguments for \" + name + \" must be in pairs of \" + expected);\r\n }\r\n}\r\n/**\r\n * @ignore\r\n * This splits the flag so that way 0017 will be processed as 0 0 17\r\n *\r\n * This is important for weird paths like `M17 5A1 1 0 0017 30 1 1 0 0017 5`\r\n */\r\nfunction splitArcFlags(args) {\r\n for (var i = 0; i < args.length; i += 7) {\r\n var index = i + 3;\r\n var flag = args[index];\r\n if (flag.length > 1) {\r\n var a = /^([01])([01])(.*)$/.exec(flag);\r\n if (a !== null) {\r\n args.splice(index, 0, a[1]);\r\n ++index;\r\n args.splice(index, 0, a[2]);\r\n ++index;\r\n if (a[3].length > 0) {\r\n args[index] = a[3];\r\n }\r\n else {\r\n args.splice(index, 1);\r\n }\r\n }\r\n }\r\n ++index;\r\n flag = args[index];\r\n if (flag.length > 1) {\r\n var a = /^([01])(.+)$/.exec(flag);\r\n if (a !== null) {\r\n args.splice(index, 0, a[1]);\r\n ++index;\r\n args[index] = a[2];\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction assertBinary(value) {\r\n if (value === 0 || value === 1) {\r\n return value;\r\n }\r\n else {\r\n throw new Error(\"Flag must be 0 or 1\");\r\n }\r\n}\r\n// 1 -> 0xffffff * (2 / 2)\r\n// 2 -> 0xffffff * (1 / 2)\r\n//\r\n// 3 -> 0xffffff * (3 / 4)\r\n// 4 -> 0xffffff * (1 / 4)\r\n//\r\n// 5 -> 0xffffff * (7 / 8)\r\n// 6 -> 0xffffff * (5 / 8)\r\n// 7 -> 0xffffff * (3 / 8)\r\n// 8 -> 0xffffff * (1 / 8)\r\n//\r\n// 9 -> 0xffffff * (15 / 16)\r\n// 10 -> 0xffffff * (13 / 16)\r\n// 11 -> 0xffffff * (11 / 16)\r\n// 12 -> 0xffffff * (9 / 16)\r\n// 13 -> 0xffffff * (7 / 16)\r\n// 14 -> 0xffffff * (5 / 16)\r\n// 15 -> 0xffffff * (3 / 16)\r\n// 16 -> 0xffffff * (1 / 16)\r\n// @todo remove this old color distribution algo if the new one pans out\r\n// function distributeIdBAK(id: number): number {\r\n// \tif (id === 1) {\r\n// \t\treturn 0x000001;\r\n// \t} else {\r\n// \t\t// Finds the closest power of 2\r\n// \t\tconst base = Math.pow(2, Math.ceil(Math.log(id) / Math.log(2)));\r\n// \t\t// Translates the id into an odd fraction index\r\n// \t\tconst index = ((base - id) * 2) + 1;\r\n// \t\t// TODO is Math.round correct ?\r\n// \t\treturn Math.round(0xffffff * (index / base));\r\n// \t}\r\n// }\r\n/**\r\n * Function by smeans:\r\n * https://lowcode.life/generating-unique-contrasting-colors-in-javascript/\r\n * @ignore\r\n */\r\nfunction distributeId(id) {\r\n var rgb = [0, 0, 0];\r\n for (var i = 0; i < 24; i++) {\r\n rgb[i % 3] <<= 1;\r\n rgb[i % 3] |= id & 0x01;\r\n id >>= 1;\r\n }\r\n return (rgb[2] | 0) + (rgb[1] << 8) + (rgb[0] << 16);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction eachTargets(hitTarget, f) {\r\n for (;;) {\r\n if (hitTarget.interactive) {\r\n if (!f(hitTarget)) {\r\n break;\r\n }\r\n }\r\n if (hitTarget._parent) {\r\n hitTarget = hitTarget._parent;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n}\r\n// TODO feature detection for mouse/touch/pointer\r\n/**\r\n * @ignore\r\n */\r\nfunction onPointerEvent(element, name, f) {\r\n return $utils.addEventListener(element, $utils.getRendererEvent(name), function (event) {\r\n var touches = event.touches;\r\n if (touches) {\r\n if (touches.length == 0) {\r\n touches = event.changedTouches;\r\n }\r\n f($array.copy(touches));\r\n }\r\n else {\r\n f([event]);\r\n }\r\n });\r\n}\r\n/**\r\n * @ignore\r\n */\r\nfunction isTainted(image) {\r\n var canvas = document.createElement(\"canvas\");\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n var context = canvas.getContext(\"2d\", { willReadFrequently: true });\r\n context.drawImage(image, 0, 0, 1, 1);\r\n try {\r\n context.getImageData(0, 0, 1, 1);\r\n return false;\r\n }\r\n catch (err) {\r\n console.warn(\"Image \\\"\" + image.src + \"\\\" is loaded from different host and is not covered by CORS policy. For more information about the implications read here: https://www.amcharts.com/docs/v5/concepts/cors\");\r\n return true;\r\n }\r\n}\r\n/**\r\n * This is needed to workaround a bug in iOS which causes it to not GC canvas elements.\r\n *\r\n * @ignore\r\n */\r\nfunction clearCanvas(view) {\r\n view.width = 0;\r\n view.height = 0;\r\n view.style.width = \"0px\";\r\n view.style.height = \"0px\";\r\n}\r\n/**\r\n * @ignore\r\n */\r\nvar CanvasPivot = /** @class */ (function () {\r\n function CanvasPivot() {\r\n Object.defineProperty(this, \"_x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n }\r\n Object.defineProperty(CanvasPivot.prototype, \"x\", {\r\n get: function () {\r\n return this._x;\r\n },\r\n set: function (value) {\r\n this._x = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CanvasPivot.prototype, \"y\", {\r\n get: function () {\r\n return this._y;\r\n },\r\n set: function (value) {\r\n this._y = value;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return CanvasPivot;\r\n}());\r\nexport { CanvasPivot };\r\n/**\r\n * @ignore\r\n */\r\nvar CanvasDisplayObject = /** @class */ (function (_super) {\r\n __extends(CanvasDisplayObject, _super);\r\n function CanvasDisplayObject(renderer) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"_layer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"mask\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: null\r\n });\r\n Object.defineProperty(_this, \"visible\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(_this, \"exportable\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(_this, \"interactive\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(_this, \"inactive\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(_this, \"wheelable\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(_this, \"cancelTouch\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(_this, \"isMeasured\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(_this, \"buttonMode\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(_this, \"alpha\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(_this, \"compoundAlpha\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(_this, \"angle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(_this, \"scale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(_this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(_this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(_this, \"pivot\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new CanvasPivot()\r\n });\r\n Object.defineProperty(_this, \"filter\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"cursorOverStyle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"_replacedCursorStyle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"_localMatrix\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Matrix()\r\n });\r\n Object.defineProperty(_this, \"_matrix\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Matrix()\r\n });\r\n // TODO can this be replaced with _localMatrix ?\r\n Object.defineProperty(_this, \"_uMatrix\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Matrix()\r\n });\r\n Object.defineProperty(_this, \"_renderer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"_parent\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"_localBounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"_bounds\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"_colorId\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n _this._renderer = renderer;\r\n return _this;\r\n }\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"_dispose\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n this._renderer._removeObject(this);\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"getCanvas\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n return this.getLayer().view;\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"getLayer\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n var self = this;\r\n for (;;) {\r\n if (self._layer) {\r\n return self._layer;\r\n }\r\n else if (self._parent) {\r\n self = self._parent;\r\n }\r\n else {\r\n return this._renderer.defaultLayer;\r\n }\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"setLayer\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (order, margin) {\r\n if (order == null) {\r\n this._layer = undefined;\r\n }\r\n else {\r\n var visible = true;\r\n this._layer = this._renderer.getLayer(order, visible);\r\n this._layer.visible = visible;\r\n this._layer.margin = margin;\r\n if (margin) {\r\n $utils.setInteractive(this._layer.view, false);\r\n }\r\n if (this._parent) {\r\n this._parent.registerChildLayer(this._layer);\r\n }\r\n this._renderer.resizeLayer(this._layer);\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"markDirtyLayer\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n this.getLayer().dirty = true;\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"clear\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n this.invalidateBounds();\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"invalidateBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n this._localBounds = undefined;\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"_addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (_bounds) { }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"_getColorId\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n if (this._colorId === undefined) {\r\n this._colorId = this._renderer.paintId(this);\r\n }\r\n return this._colorId;\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"_isInteractive\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n return this.inactive == false && (this.interactive || this._renderer._forceInteractive > 0);\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"_isInteractiveMask\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n return this._isInteractive();\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"contains\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (child) {\r\n for (;;) {\r\n if (child === this) {\r\n return true;\r\n }\r\n else if (child._parent) {\r\n child = child._parent;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"toGlobal\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (point) {\r\n return this._matrix.apply(point);\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"toLocal\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (point) {\r\n return this._matrix.applyInverse(point);\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"getLocalMatrix\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n this._uMatrix.setTransform(0, 0, this.pivot.x, this.pivot.y, this.angle * Math.PI / 180, this.scale);\r\n return this._uMatrix;\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"getLocalBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n if (!this._localBounds) {\r\n var bn = 10000000;\r\n this._localBounds = {\r\n left: bn,\r\n top: bn,\r\n right: -bn,\r\n bottom: -bn\r\n };\r\n this._addBounds(this._localBounds);\r\n }\r\n return this._localBounds;\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"getAdjustedBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n this._setMatrix();\r\n var matrix = this.getLocalMatrix();\r\n var p0 = matrix.apply({ x: bounds.left, y: bounds.top });\r\n var p1 = matrix.apply({ x: bounds.right, y: bounds.top });\r\n var p2 = matrix.apply({ x: bounds.right, y: bounds.bottom });\r\n var p3 = matrix.apply({ x: bounds.left, y: bounds.bottom });\r\n return {\r\n left: Math.min(p0.x, p1.x, p2.x, p3.x),\r\n top: Math.min(p0.y, p1.y, p2.y, p3.y),\r\n right: Math.max(p0.x, p1.x, p2.x, p3.x),\r\n bottom: Math.max(p0.y, p1.y, p2.y, p3.y)\r\n };\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"on\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (key, callback, context) {\r\n if (this.interactive) {\r\n return this._renderer._addEvent(this, key, callback, context);\r\n }\r\n else {\r\n return new Disposer(function () { });\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"_setMatrix\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n // TODO only calculate this if it has actually changed\r\n this._localMatrix.setTransform(this.x, this.y, this.pivot.x, this.pivot.y, \r\n // Converts degrees to radians\r\n this.angle * Math.PI / 180, this.scale);\r\n this._matrix.copyFrom(this._localMatrix);\r\n if (this._parent) {\r\n // TODO only calculate this if it has actually changed\r\n this._matrix.prepend(this._parent._matrix);\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"_transform\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context, resolution) {\r\n var m = this._matrix;\r\n context.setTransform(m.a * resolution, m.b * resolution, m.c * resolution, m.d * resolution, m.tx * resolution, m.ty * resolution);\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"_transformMargin\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context, resolution, margin) {\r\n var m = this._matrix;\r\n context.setTransform(m.a * resolution, m.b * resolution, m.c * resolution, m.d * resolution, (m.tx + margin.left) * resolution, (m.ty + margin.top) * resolution);\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"_transformLayer\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context, resolution, layer) {\r\n if (layer.margin) {\r\n this._transformMargin(context, layer.scale || resolution, layer.margin);\r\n }\r\n else {\r\n this._transform(context, layer.scale || resolution);\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"render\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (parentLayer) {\r\n var _this = this;\r\n if (this.visible && (this.exportable !== false || !this._renderer._omitTainted)) {\r\n this._setMatrix();\r\n var resolution_1 = this._renderer.resolution;\r\n var layers = this._renderer.layers;\r\n var ghostContext = this._renderer._ghostContext;\r\n var mask_1 = this.mask;\r\n if (mask_1) {\r\n mask_1._setMatrix();\r\n }\r\n // TODO improve this\r\n $array.each(layers, function (layer) {\r\n if (layer) {\r\n var context = layer.context;\r\n context.save();\r\n // We must apply the mask before we transform the element\r\n if (mask_1) {\r\n mask_1._transformLayer(context, resolution_1, layer);\r\n mask_1._runPath(context);\r\n context.clip();\r\n }\r\n context.globalAlpha = _this.compoundAlpha * _this.alpha;\r\n _this._transformLayer(context, resolution_1, layer);\r\n if (_this.filter) {\r\n context.filter = _this.filter;\r\n }\r\n }\r\n });\r\n ghostContext.save();\r\n // We must apply the mask before we transform the element\r\n if (mask_1 && this._isInteractiveMask()) {\r\n mask_1._transform(ghostContext, resolution_1);\r\n mask_1._runPath(ghostContext);\r\n ghostContext.clip();\r\n }\r\n this._transform(ghostContext, resolution_1);\r\n this._render(parentLayer);\r\n ghostContext.restore();\r\n $array.each(layers, function (layer) {\r\n if (layer) {\r\n layer.context.restore();\r\n }\r\n });\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"_render\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (parentLayer) {\r\n if (this.exportable === false) {\r\n var layer = this._layer || parentLayer;\r\n layer.tainted = true;\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"hovering\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n return this._renderer._hovering.has(this);\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"dragging\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n var _this = this;\r\n return this._renderer._dragging.some(function (x) { return x.value === _this; });\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"dispose\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n this.getLayer().dirty = true;\r\n }\r\n });\r\n Object.defineProperty(CanvasDisplayObject.prototype, \"shouldCancelTouch\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n var renderer = this._renderer;\r\n if (renderer.tapToActivate && !renderer._touchActive) {\r\n return false;\r\n }\r\n if (this.cancelTouch) {\r\n return true;\r\n }\r\n else if (this._parent) {\r\n return this._parent.shouldCancelTouch();\r\n }\r\n return false;\r\n }\r\n });\r\n return CanvasDisplayObject;\r\n}(DisposerClass));\r\nexport { CanvasDisplayObject };\r\n/**\r\n * @ignore\r\n */\r\nvar CanvasContainer = /** @class */ (function (_super) {\r\n __extends(CanvasContainer, _super);\r\n function CanvasContainer() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n Object.defineProperty(_this, \"interactiveChildren\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(_this, \"_childLayers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"_children\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(CanvasContainer.prototype, \"_isInteractiveMask\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n return this.interactiveChildren || _super.prototype._isInteractiveMask.call(this);\r\n }\r\n });\r\n Object.defineProperty(CanvasContainer.prototype, \"addChild\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (child) {\r\n child._parent = this;\r\n this._children.push(child);\r\n if (child._layer) {\r\n this.registerChildLayer(child._layer);\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasContainer.prototype, \"addChildAt\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (child, index) {\r\n child._parent = this;\r\n this._children.splice(index, 0, child);\r\n if (child._layer) {\r\n this.registerChildLayer(child._layer);\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasContainer.prototype, \"removeChild\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (child) {\r\n child._parent = undefined;\r\n $array.removeFirst(this._children, child);\r\n }\r\n });\r\n Object.defineProperty(CanvasContainer.prototype, \"_render\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (parentLayer) {\r\n var _this = this;\r\n _super.prototype._render.call(this, parentLayer);\r\n var renderer = this._renderer;\r\n if (this.interactive && this.interactiveChildren) {\r\n ++renderer._forceInteractive;\r\n }\r\n var layer = this._layer || parentLayer;\r\n $array.each(this._children, function (child) {\r\n child.compoundAlpha = _this.compoundAlpha * _this.alpha;\r\n child.render(layer);\r\n });\r\n if (this.interactive && this.interactiveChildren) {\r\n --renderer._forceInteractive;\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasContainer.prototype, \"registerChildLayer\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (layer) {\r\n if (!this._childLayers) {\r\n this._childLayers = [];\r\n }\r\n $array.pushOne(this._childLayers, layer);\r\n if (this._parent) {\r\n this._parent.registerChildLayer(layer);\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasContainer.prototype, \"markDirtyLayer\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (deep) {\r\n if (deep === void 0) { deep = false; }\r\n _super.prototype.markDirtyLayer.call(this);\r\n if (deep && this._childLayers) {\r\n $array.each(this._childLayers, function (layer) { return layer.dirty = true; });\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasContainer.prototype, \"dispose\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n _super.prototype.dispose.call(this);\r\n if (this._childLayers) {\r\n $array.each(this._childLayers, function (layer) {\r\n layer.dirty = true;\r\n });\r\n }\r\n }\r\n });\r\n return CanvasContainer;\r\n}(CanvasDisplayObject));\r\nexport { CanvasContainer };\r\n/**\r\n * @ignore\r\n */\r\nfunction setPoint(bounds, point) {\r\n bounds.left = Math.min(bounds.left, point.x);\r\n bounds.top = Math.min(bounds.top, point.y);\r\n bounds.right = Math.max(bounds.right, point.x);\r\n bounds.bottom = Math.max(bounds.bottom, point.y);\r\n}\r\n/**\r\n * @ignore\r\n */\r\nvar Op = /** @class */ (function () {\r\n function Op() {\r\n }\r\n Object.defineProperty(Op.prototype, \"colorize\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (_context, _forceColor) { }\r\n });\r\n Object.defineProperty(Op.prototype, \"path\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (_context) { }\r\n });\r\n Object.defineProperty(Op.prototype, \"addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (_bounds) { }\r\n });\r\n return Op;\r\n}());\r\n/**\r\n * @ignore\r\n */\r\nvar BeginFill = /** @class */ (function (_super) {\r\n __extends(BeginFill, _super);\r\n function BeginFill(color) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"color\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: color\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(BeginFill.prototype, \"colorize\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context, forceColor) {\r\n if (forceColor !== undefined) {\r\n context.fillStyle = forceColor;\r\n }\r\n else {\r\n context.fillStyle = this.color;\r\n }\r\n }\r\n });\r\n return BeginFill;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar EndFill = /** @class */ (function (_super) {\r\n __extends(EndFill, _super);\r\n function EndFill(clearShadow) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"clearShadow\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: clearShadow\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(EndFill.prototype, \"colorize\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context, _forceColor) {\r\n context.fill();\r\n if (this.clearShadow) {\r\n context.shadowColor = \"\";\r\n context.shadowBlur = 0;\r\n context.shadowOffsetX = 0;\r\n context.shadowOffsetY = 0;\r\n }\r\n }\r\n });\r\n return EndFill;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar EndStroke = /** @class */ (function (_super) {\r\n __extends(EndStroke, _super);\r\n function EndStroke() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(EndStroke.prototype, \"colorize\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context, _forceColor) {\r\n context.stroke();\r\n }\r\n });\r\n return EndStroke;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar LineStyle = /** @class */ (function (_super) {\r\n __extends(LineStyle, _super);\r\n function LineStyle(width, color, lineJoin) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: width\r\n });\r\n Object.defineProperty(_this, \"color\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: color\r\n });\r\n Object.defineProperty(_this, \"lineJoin\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: lineJoin\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(LineStyle.prototype, \"colorize\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context, forceColor) {\r\n if (forceColor !== undefined) {\r\n context.strokeStyle = forceColor;\r\n }\r\n else {\r\n context.strokeStyle = this.color;\r\n }\r\n context.lineWidth = this.width;\r\n if (this.lineJoin) {\r\n context.lineJoin = this.lineJoin;\r\n }\r\n }\r\n });\r\n return LineStyle;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar LineDash = /** @class */ (function (_super) {\r\n __extends(LineDash, _super);\r\n function LineDash(dash) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"dash\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: dash\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(LineDash.prototype, \"colorize\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context, _forceColor) {\r\n context.setLineDash(this.dash);\r\n }\r\n });\r\n return LineDash;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar LineDashOffset = /** @class */ (function (_super) {\r\n __extends(LineDashOffset, _super);\r\n function LineDashOffset(dashOffset) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"dashOffset\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: dashOffset\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(LineDashOffset.prototype, \"colorize\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context, _forceColor) {\r\n context.lineDashOffset = this.dashOffset;\r\n }\r\n });\r\n return LineDashOffset;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar DrawRect = /** @class */ (function (_super) {\r\n __extends(DrawRect, _super);\r\n function DrawRect(x, y, width, height) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(_this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n Object.defineProperty(_this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: width\r\n });\r\n Object.defineProperty(_this, \"height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: height\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(DrawRect.prototype, \"path\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n context.rect(this.x, this.y, this.width, this.height);\r\n }\r\n });\r\n Object.defineProperty(DrawRect.prototype, \"addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n var l = this.x;\r\n var t = this.y;\r\n var r = l + this.width;\r\n var b = t + this.height;\r\n setPoint(bounds, { x: l, y: t });\r\n setPoint(bounds, { x: r, y: t });\r\n setPoint(bounds, { x: l, y: b });\r\n setPoint(bounds, { x: r, y: b });\r\n }\r\n });\r\n return DrawRect;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar DrawCircle = /** @class */ (function (_super) {\r\n __extends(DrawCircle, _super);\r\n function DrawCircle(x, y, radius) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(_this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n Object.defineProperty(_this, \"radius\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radius\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(DrawCircle.prototype, \"path\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n context.moveTo(this.x + this.radius, this.y);\r\n context.arc(this.x, this.y, this.radius, 0, 2 * Math.PI);\r\n }\r\n });\r\n // TODO handle skewing and rotation\r\n Object.defineProperty(DrawCircle.prototype, \"addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n setPoint(bounds, { x: this.x - this.radius, y: this.y - this.radius });\r\n setPoint(bounds, { x: this.x + this.radius, y: this.y + this.radius });\r\n }\r\n });\r\n return DrawCircle;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar DrawEllipse = /** @class */ (function (_super) {\r\n __extends(DrawEllipse, _super);\r\n function DrawEllipse(x, y, radiusX, radiusY) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(_this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n Object.defineProperty(_this, \"radiusX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radiusX\r\n });\r\n Object.defineProperty(_this, \"radiusY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radiusY\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(DrawEllipse.prototype, \"path\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n context.ellipse(0, 0, this.radiusX, this.radiusY, 0, 0, Math.PI * 2);\r\n }\r\n });\r\n // TODO handle skewing and rotation\r\n Object.defineProperty(DrawEllipse.prototype, \"addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n setPoint(bounds, { x: this.x - this.radiusX, y: this.y - this.radiusY });\r\n setPoint(bounds, { x: this.x + this.radiusX, y: this.y + this.radiusY });\r\n }\r\n });\r\n return DrawEllipse;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar Arc = /** @class */ (function (_super) {\r\n __extends(Arc, _super);\r\n function Arc(cx, cy, radius, startAngle, endAngle, anticlockwise) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"cx\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cx\r\n });\r\n Object.defineProperty(_this, \"cy\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cy\r\n });\r\n Object.defineProperty(_this, \"radius\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radius\r\n });\r\n Object.defineProperty(_this, \"startAngle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: startAngle\r\n });\r\n Object.defineProperty(_this, \"endAngle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: endAngle\r\n });\r\n Object.defineProperty(_this, \"anticlockwise\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: anticlockwise\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(Arc.prototype, \"path\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n if (this.radius > 0) {\r\n context.arc(this.cx, this.cy, this.radius, this.startAngle, this.endAngle, this.anticlockwise);\r\n }\r\n }\r\n });\r\n Object.defineProperty(Arc.prototype, \"addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n var arcBounds = $math.getArcBounds(this.cx, this.cy, this.startAngle * $math.DEGREES, this.endAngle * $math.DEGREES, this.radius);\r\n setPoint(bounds, { x: arcBounds.left, y: arcBounds.top });\r\n setPoint(bounds, { x: arcBounds.right, y: arcBounds.bottom });\r\n }\r\n });\r\n return Arc;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar ArcTo = /** @class */ (function (_super) {\r\n __extends(ArcTo, _super);\r\n function ArcTo(x1, y1, x2, y2, radius) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"x1\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x1\r\n });\r\n Object.defineProperty(_this, \"y1\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y1\r\n });\r\n Object.defineProperty(_this, \"x2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x2\r\n });\r\n Object.defineProperty(_this, \"y2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y2\r\n });\r\n Object.defineProperty(_this, \"radius\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: radius\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(ArcTo.prototype, \"path\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n if (this.radius > 0) {\r\n context.arcTo(this.x1, this.y1, this.x2, this.y2, this.radius);\r\n }\r\n }\r\n });\r\n // TODO: add points\r\n Object.defineProperty(ArcTo.prototype, \"addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (_bounds) {\r\n /*\r\n // not finished\r\n https://math.stackexchange.com/questions/1781438/finding-the-center-of-a-circle-given-two-points-and-a-radius-algebraically\r\n \r\n if (prevPoint) {\r\n let x1 = prevPoint.x;\r\n let y1 = prevPoint.y;\r\n let x2 = this.x2;\r\n let y2 = this.y2;\r\n let r = this.radius;\r\n \r\n let xa = (x2 - x1) / 2;\r\n let ya = (y2 - y1) / 2;\r\n \r\n let x0 = x1 + xa;\r\n let y0 = y1 + ya;\r\n \r\n let a = Math.hypot(xa, ya);\r\n let b = Math.sqrt(r * r - a * a);\r\n \r\n let cx = x0 + b * ya / a;\r\n let cy = y0 - b * xa / a;\r\n \r\n console.log(cx, cy);\r\n }*/\r\n }\r\n });\r\n return ArcTo;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar LineTo = /** @class */ (function (_super) {\r\n __extends(LineTo, _super);\r\n function LineTo(x, y) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(_this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(LineTo.prototype, \"path\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n context.lineTo(this.x, this.y);\r\n }\r\n });\r\n Object.defineProperty(LineTo.prototype, \"addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n setPoint(bounds, { x: this.x, y: this.y });\r\n }\r\n });\r\n return LineTo;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar MoveTo = /** @class */ (function (_super) {\r\n __extends(MoveTo, _super);\r\n function MoveTo(x, y) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(_this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(MoveTo.prototype, \"path\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n context.moveTo(this.x, this.y);\r\n }\r\n });\r\n Object.defineProperty(MoveTo.prototype, \"addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n setPoint(bounds, { x: this.x, y: this.y });\r\n }\r\n });\r\n return MoveTo;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar ClosePath = /** @class */ (function (_super) {\r\n __extends(ClosePath, _super);\r\n function ClosePath() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ClosePath.prototype, \"path\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n context.closePath();\r\n }\r\n });\r\n return ClosePath;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar BezierCurveTo = /** @class */ (function (_super) {\r\n __extends(BezierCurveTo, _super);\r\n function BezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"cpX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpX\r\n });\r\n Object.defineProperty(_this, \"cpY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpY\r\n });\r\n Object.defineProperty(_this, \"cpX2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpX2\r\n });\r\n Object.defineProperty(_this, \"cpY2\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpY2\r\n });\r\n Object.defineProperty(_this, \"toX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: toX\r\n });\r\n Object.defineProperty(_this, \"toY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: toY\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(BezierCurveTo.prototype, \"path\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n context.bezierCurveTo(this.cpX, this.cpY, this.cpX2, this.cpY2, this.toX, this.toY);\r\n }\r\n });\r\n // TODO: OK?\r\n Object.defineProperty(BezierCurveTo.prototype, \"addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n setPoint(bounds, { x: this.cpX, y: this.cpY });\r\n setPoint(bounds, { x: this.cpX2, y: this.cpY2 });\r\n setPoint(bounds, { x: this.toX, y: this.toY });\r\n }\r\n });\r\n return BezierCurveTo;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar QuadraticCurveTo = /** @class */ (function (_super) {\r\n __extends(QuadraticCurveTo, _super);\r\n function QuadraticCurveTo(cpX, cpY, toX, toY) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"cpX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpX\r\n });\r\n Object.defineProperty(_this, \"cpY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: cpY\r\n });\r\n Object.defineProperty(_this, \"toX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: toX\r\n });\r\n Object.defineProperty(_this, \"toY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: toY\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(QuadraticCurveTo.prototype, \"path\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n context.quadraticCurveTo(this.cpX, this.cpY, this.toX, this.toY);\r\n }\r\n });\r\n // TODO: OK?\r\n Object.defineProperty(QuadraticCurveTo.prototype, \"addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n setPoint(bounds, { x: this.cpX, y: this.cpY });\r\n setPoint(bounds, { x: this.toX, y: this.toY });\r\n }\r\n });\r\n return QuadraticCurveTo;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar Shadow = /** @class */ (function (_super) {\r\n __extends(Shadow, _super);\r\n function Shadow(color, blur, offsetX, offsetY, opacity) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"color\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: color\r\n });\r\n Object.defineProperty(_this, \"blur\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: blur\r\n });\r\n Object.defineProperty(_this, \"offsetX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: offsetX\r\n });\r\n Object.defineProperty(_this, \"offsetY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: offsetY\r\n });\r\n Object.defineProperty(_this, \"opacity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: opacity\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(Shadow.prototype, \"colorize\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context, _forceColor) {\r\n if (this.opacity) {\r\n context.fillStyle = this.color;\r\n }\r\n context.shadowColor = this.color;\r\n context.shadowBlur = this.blur;\r\n context.shadowOffsetX = this.offsetX;\r\n context.shadowOffsetY = this.offsetY;\r\n }\r\n });\r\n return Shadow;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar GraphicsImage = /** @class */ (function (_super) {\r\n __extends(GraphicsImage, _super);\r\n function GraphicsImage(image, width, height, x, y) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"image\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: image\r\n });\r\n Object.defineProperty(_this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: width\r\n });\r\n Object.defineProperty(_this, \"height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: height\r\n });\r\n Object.defineProperty(_this, \"x\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: x\r\n });\r\n Object.defineProperty(_this, \"y\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: y\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(GraphicsImage.prototype, \"path\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n context.drawImage(this.image, this.x, this.y, this.width, this.height);\r\n }\r\n });\r\n // TODO: OK?\r\n Object.defineProperty(GraphicsImage.prototype, \"addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n setPoint(bounds, { x: this.x, y: this.y });\r\n setPoint(bounds, { x: this.width, y: this.height });\r\n }\r\n });\r\n return GraphicsImage;\r\n}(Op));\r\n/**\r\n * @ignore\r\n */\r\nvar CanvasGraphics = /** @class */ (function (_super) {\r\n __extends(CanvasGraphics, _super);\r\n function CanvasGraphics() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n Object.defineProperty(_this, \"_operations\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(_this, \"blendMode\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: BlendMode.NORMAL\r\n });\r\n Object.defineProperty(_this, \"_hasShadows\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(_this, \"_fillAlpha\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"_strokeAlpha\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(CanvasGraphics.prototype, \"clear\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n _super.prototype.clear.call(this);\r\n this._operations.length = 0;\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"_pushOp\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (op) {\r\n this._operations.push(op);\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"beginFill\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (color, alpha) {\r\n if (alpha === void 0) { alpha = 1; }\r\n this._fillAlpha = alpha;\r\n if (color) {\r\n if (color instanceof Color) {\r\n this._pushOp(new BeginFill(color.toCSS(alpha)));\r\n }\r\n else {\r\n this.isMeasured = true;\r\n this._pushOp(new BeginFill(color));\r\n }\r\n }\r\n else {\r\n this._pushOp(new BeginFill(\"rgba(0, 0, 0, \" + alpha + \")\"));\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"endFill\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n this._pushOp(new EndFill(this._hasShadows));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"endStroke\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n this._pushOp(new EndStroke());\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"lineStyle\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (width, color, alpha, lineJoin) {\r\n if (width === void 0) { width = 0; }\r\n if (alpha === void 0) { alpha = 1; }\r\n this._strokeAlpha = alpha;\r\n if (color) {\r\n if (color instanceof Color) {\r\n this._pushOp(new LineStyle(width, color.toCSS(alpha), lineJoin));\r\n }\r\n else {\r\n this._pushOp(new LineStyle(width, color, lineJoin));\r\n }\r\n }\r\n else {\r\n this._pushOp(new LineStyle(width, \"rgba(0, 0, 0, \" + alpha + \")\", lineJoin));\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"setLineDash\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (dash) {\r\n this._pushOp(new LineDash(dash ? dash : []));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"setLineDashOffset\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (dashOffset) {\r\n if (dashOffset === void 0) { dashOffset = 0; }\r\n this._pushOp(new LineDashOffset(dashOffset));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"drawRect\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (x, y, width, height) {\r\n this._pushOp(new DrawRect(x, y, width, height));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"drawCircle\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (x, y, radius) {\r\n this._pushOp(new DrawCircle(x, y, radius));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"drawEllipse\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (x, y, radiusX, radiusY) {\r\n this._pushOp(new DrawEllipse(x, y, radiusX, radiusY));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"arc\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (cx, cy, radius, startAngle, endAngle, anticlockwise) {\r\n if (anticlockwise === void 0) { anticlockwise = false; }\r\n this._pushOp(new Arc(cx, cy, radius, startAngle, endAngle, anticlockwise));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"arcTo\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (x1, y1, x2, y2, radius) {\r\n this._pushOp(new ArcTo(x1, y1, x2, y2, radius));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"lineTo\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (x, y) {\r\n this._pushOp(new LineTo(x, y));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"moveTo\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (x, y) {\r\n this._pushOp(new MoveTo(x, y));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"bezierCurveTo\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (cpX, cpY, cpX2, cpY2, toX, toY) {\r\n this._pushOp(new BezierCurveTo(cpX, cpY, cpX2, cpY2, toX, toY));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"quadraticCurveTo\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (cpX, cpY, toX, toY) {\r\n this._pushOp(new QuadraticCurveTo(cpX, cpY, toX, toY));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"closePath\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n this._pushOp(new ClosePath());\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"shadow\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (color, blur, offsetX, offsetY, opacity) {\r\n if (blur === void 0) { blur = 0; }\r\n if (offsetX === void 0) { offsetX = 0; }\r\n if (offsetY === void 0) { offsetY = 0; }\r\n this._hasShadows = true;\r\n this._pushOp(new Shadow(opacity ? color.toCSS(opacity) : color.toCSS(this._fillAlpha || this._strokeAlpha), blur, offsetX, offsetY));\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"image\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (image, width, height, x, y) {\r\n this._pushOp(new GraphicsImage(image, width, height, x, y));\r\n }\r\n });\r\n // https://svgwg.org/svg2-draft/paths.html#DProperty\r\n // TODO better error checking\r\n Object.defineProperty(CanvasGraphics.prototype, \"svgPath\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (path) {\r\n var _this = this;\r\n var x = 0;\r\n var y = 0;\r\n var cpx = null;\r\n var cpy = null;\r\n var qcpx = null;\r\n var qcpy = null;\r\n var SEGMENTS_REGEXP = /([MmZzLlHhVvCcSsQqTtAa])([^MmZzLlHhVvCcSsQqTtAa]*)/g;\r\n var ARGS_REGEXP = /[\\u0009\\u0020\\u000A\\u000C\\u000D]*([\\+\\-]?[0-9]*\\.?[0-9]+(?:[eE][\\+\\-]?[0-9]+)?)[\\u0009\\u0020\\u000A\\u000C\\u000D]*,?/g;\r\n var match;\r\n while ((match = SEGMENTS_REGEXP.exec(path)) !== null) {\r\n var name_1 = match[1];\r\n var rest = match[2];\r\n var args = [];\r\n while ((match = ARGS_REGEXP.exec(rest)) !== null) {\r\n args.push(match[1]);\r\n }\r\n // Reset control point\r\n if (name_1 !== \"S\" && name_1 !== \"s\" && name_1 !== \"C\" && name_1 !== \"c\") {\r\n cpx = null;\r\n cpy = null;\r\n }\r\n // Reset control point\r\n if (name_1 !== \"Q\" && name_1 !== \"q\" && name_1 !== \"T\" && name_1 !== \"t\") {\r\n qcpx = null;\r\n qcpy = null;\r\n }\r\n switch (name_1) {\r\n case \"M\":\r\n checkEvenArgs(name_1, args.length, 2);\r\n x = +args[0];\r\n y = +args[1];\r\n this.moveTo(x, y);\r\n for (var i = 2; i < args.length; i += 2) {\r\n x = +args[i];\r\n y = +args[i + 1];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"m\":\r\n checkEvenArgs(name_1, args.length, 2);\r\n x += +args[0];\r\n y += +args[1];\r\n this.moveTo(x, y);\r\n for (var i = 2; i < args.length; i += 2) {\r\n x += +args[i];\r\n y += +args[i + 1];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"L\":\r\n checkEvenArgs(name_1, args.length, 2);\r\n for (var i = 0; i < args.length; i += 2) {\r\n x = +args[i];\r\n y = +args[i + 1];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"l\":\r\n checkEvenArgs(name_1, args.length, 2);\r\n for (var i = 0; i < args.length; i += 2) {\r\n x += +args[i];\r\n y += +args[i + 1];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"H\":\r\n checkMinArgs(name_1, args.length, 1);\r\n for (var i = 0; i < args.length; ++i) {\r\n x = +args[i];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"h\":\r\n checkMinArgs(name_1, args.length, 1);\r\n for (var i = 0; i < args.length; ++i) {\r\n x += +args[i];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"V\":\r\n checkMinArgs(name_1, args.length, 1);\r\n for (var i = 0; i < args.length; ++i) {\r\n y = +args[i];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"v\":\r\n checkMinArgs(name_1, args.length, 1);\r\n for (var i = 0; i < args.length; ++i) {\r\n y += +args[i];\r\n this.lineTo(x, y);\r\n }\r\n break;\r\n case \"C\":\r\n checkEvenArgs(name_1, args.length, 6);\r\n for (var i = 0; i < args.length; i += 6) {\r\n var x1 = +args[i];\r\n var y1 = +args[i + 1];\r\n cpx = +args[i + 2];\r\n cpy = +args[i + 3];\r\n x = +args[i + 4];\r\n y = +args[i + 5];\r\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\r\n }\r\n break;\r\n case \"c\":\r\n checkEvenArgs(name_1, args.length, 6);\r\n for (var i = 0; i < args.length; i += 6) {\r\n var x1 = +args[i] + x;\r\n var y1 = +args[i + 1] + y;\r\n cpx = +args[i + 2] + x;\r\n cpy = +args[i + 3] + y;\r\n x += +args[i + 4];\r\n y += +args[i + 5];\r\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\r\n }\r\n break;\r\n case \"S\":\r\n checkEvenArgs(name_1, args.length, 4);\r\n if (cpx === null || cpy === null) {\r\n cpx = x;\r\n cpy = y;\r\n }\r\n for (var i = 0; i < args.length; i += 4) {\r\n var x1 = 2 * x - cpx;\r\n var y1 = 2 * y - cpy;\r\n cpx = +args[i];\r\n cpy = +args[i + 1];\r\n x = +args[i + 2];\r\n y = +args[i + 3];\r\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\r\n }\r\n break;\r\n case \"s\":\r\n checkEvenArgs(name_1, args.length, 4);\r\n if (cpx === null || cpy === null) {\r\n cpx = x;\r\n cpy = y;\r\n }\r\n for (var i = 0; i < args.length; i += 4) {\r\n var x1 = 2 * x - cpx;\r\n var y1 = 2 * y - cpy;\r\n cpx = +args[i] + x;\r\n cpy = +args[i + 1] + y;\r\n x += +args[i + 2];\r\n y += +args[i + 3];\r\n this.bezierCurveTo(x1, y1, cpx, cpy, x, y);\r\n }\r\n break;\r\n case \"Q\":\r\n checkEvenArgs(name_1, args.length, 4);\r\n for (var i = 0; i < args.length; i += 4) {\r\n qcpx = +args[i];\r\n qcpy = +args[i + 1];\r\n x = +args[i + 2];\r\n y = +args[i + 3];\r\n this.quadraticCurveTo(qcpx, qcpy, x, y);\r\n }\r\n break;\r\n case \"q\":\r\n checkEvenArgs(name_1, args.length, 4);\r\n for (var i = 0; i < args.length; i += 4) {\r\n qcpx = +args[i] + x;\r\n qcpy = +args[i + 1] + y;\r\n x += +args[i + 2];\r\n y += +args[i + 3];\r\n this.quadraticCurveTo(qcpx, qcpy, x, y);\r\n }\r\n break;\r\n case \"T\":\r\n checkEvenArgs(name_1, args.length, 2);\r\n if (qcpx === null || qcpy === null) {\r\n qcpx = x;\r\n qcpy = y;\r\n }\r\n for (var i = 0; i < args.length; i += 2) {\r\n qcpx = 2 * x - qcpx;\r\n qcpy = 2 * y - qcpy;\r\n x = +args[i];\r\n y = +args[i + 1];\r\n this.quadraticCurveTo(qcpx, qcpy, x, y);\r\n }\r\n break;\r\n case \"t\":\r\n checkEvenArgs(name_1, args.length, 2);\r\n if (qcpx === null || qcpy === null) {\r\n qcpx = x;\r\n qcpy = y;\r\n }\r\n for (var i = 0; i < args.length; i += 2) {\r\n qcpx = 2 * x - qcpx;\r\n qcpy = 2 * y - qcpy;\r\n x += +args[i];\r\n y += +args[i + 1];\r\n this.quadraticCurveTo(qcpx, qcpy, x, y);\r\n }\r\n break;\r\n case \"A\":\r\n case \"a\":\r\n var relative = (name_1 === \"a\");\r\n splitArcFlags(args);\r\n checkEvenArgs(name_1, args.length, 7);\r\n for (var i = 0; i < args.length; i += 7) {\r\n var cx = +args[i + 5];\r\n var cy = +args[i + 6];\r\n if (relative) {\r\n cx += x;\r\n cy += y;\r\n }\r\n var bs = arcToBezier({\r\n px: x,\r\n py: y,\r\n rx: +args[i],\r\n ry: +args[i + 1],\r\n xAxisRotation: +args[i + 2],\r\n largeArcFlag: assertBinary(+args[i + 3]),\r\n sweepFlag: assertBinary(+args[i + 4]),\r\n cx: cx,\r\n cy: cy,\r\n });\r\n $array.each(bs, function (b) {\r\n _this.bezierCurveTo(b.x1, b.y1, b.x2, b.y2, b.x, b.y);\r\n x = b.x;\r\n y = b.y;\r\n });\r\n }\r\n break;\r\n case \"Z\":\r\n case \"z\":\r\n checkArgs(name_1, args.length, 0);\r\n this.closePath();\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"_runPath\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n context.beginPath();\r\n $array.each(this._operations, function (op) {\r\n op.path(context);\r\n });\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"_render\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (parentLayer) {\r\n _super.prototype._render.call(this, parentLayer);\r\n var layer = this._layer || parentLayer;\r\n var layerDirty = layer.dirty;\r\n var interactive = this._isInteractive();\r\n if (layerDirty || interactive) {\r\n var context_1 = layer.context;\r\n var ghostContext_1 = this._renderer._ghostContext;\r\n if (layerDirty) {\r\n context_1.globalCompositeOperation = this.blendMode;\r\n context_1.beginPath();\r\n }\r\n var color_1;\r\n if (interactive) {\r\n ghostContext_1.beginPath();\r\n color_1 = this._getColorId();\r\n }\r\n $array.each(this._operations, function (op) {\r\n if (layerDirty) {\r\n op.path(context_1);\r\n op.colorize(context_1, undefined);\r\n }\r\n if (interactive) {\r\n op.path(ghostContext_1);\r\n op.colorize(ghostContext_1, color_1);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"renderDetached\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n if (this.visible) {\r\n this._setMatrix();\r\n context.save();\r\n // We must apply the mask before we transform the element\r\n var mask = this.mask;\r\n if (mask) {\r\n mask._setMatrix();\r\n mask._transform(context, 1);\r\n mask._runPath(context);\r\n context.clip();\r\n }\r\n // TODO handle compoundAlpha somehow ?\r\n context.globalAlpha = this.compoundAlpha * this.alpha;\r\n this._transform(context, 1);\r\n if (this.filter) {\r\n context.filter = this.filter;\r\n }\r\n context.globalCompositeOperation = this.blendMode;\r\n context.beginPath();\r\n $array.each(this._operations, function (op) {\r\n op.path(context);\r\n op.colorize(context, undefined);\r\n });\r\n context.restore();\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasGraphics.prototype, \"_addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n if (this.visible && this.isMeasured) {\r\n $array.each(this._operations, function (op) {\r\n op.addBounds(bounds);\r\n });\r\n }\r\n }\r\n });\r\n return CanvasGraphics;\r\n}(CanvasDisplayObject));\r\nexport { CanvasGraphics };\r\n/**\r\n * @ignore\r\n */\r\nvar CanvasText = /** @class */ (function (_super) {\r\n __extends(CanvasText, _super);\r\n function CanvasText(renderer, text, style) {\r\n var _this = _super.call(this, renderer) || this;\r\n Object.defineProperty(_this, \"text\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"style\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"resolution\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n Object.defineProperty(_this, \"_textInfo\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"_textVisible\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(_this, \"_originalScale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 1\r\n });\r\n _this.text = text;\r\n _this.style = style;\r\n return _this;\r\n }\r\n Object.defineProperty(CanvasText.prototype, \"invalidateBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n _super.prototype.invalidateBounds.call(this);\r\n this._textInfo = undefined;\r\n }\r\n });\r\n Object.defineProperty(CanvasText.prototype, \"_shared\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context) {\r\n if (this.style.textAlign) {\r\n context.textAlign = this.style.textAlign;\r\n }\r\n if (this.style.direction) {\r\n context.direction = this.style.direction;\r\n }\r\n if (this.style.textBaseline) {\r\n context.textBaseline = this.style.textBaseline;\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasText.prototype, \"_prerender\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (layer, ignoreGhost, ignoreFontWeight) {\r\n if (ignoreGhost === void 0) { ignoreGhost = false; }\r\n if (ignoreFontWeight === void 0) { ignoreFontWeight = false; }\r\n _super.prototype._render.call(this, layer);\r\n var context = layer.context;\r\n var ghostContext = this._renderer._ghostContext;\r\n // Font style\r\n var style = this.style;\r\n var fontStyle = this._getFontStyle(undefined, ignoreFontWeight);\r\n context.font = fontStyle;\r\n if (this._isInteractive() && !ignoreGhost) {\r\n ghostContext.font = fontStyle;\r\n }\r\n // Other parameters\r\n if (style.fill) {\r\n if (style.fill instanceof Color) {\r\n context.fillStyle = style.fill.toCSS(style.fillOpacity != undefined ? style.fillOpacity : 1);\r\n }\r\n else {\r\n context.fillStyle = style.fill;\r\n }\r\n }\r\n if (style.shadowColor) {\r\n layer.context.shadowColor = style.shadowColor.toCSS(style.shadowOpacity || 1);\r\n }\r\n if (style.shadowBlur) {\r\n layer.context.shadowBlur = style.shadowBlur;\r\n }\r\n if (style.shadowOffsetX) {\r\n layer.context.shadowOffsetX = style.shadowOffsetX;\r\n }\r\n if (style.shadowOffsetY) {\r\n layer.context.shadowOffsetY = style.shadowOffsetY;\r\n }\r\n this._shared(context);\r\n if (this._isInteractive() && !ignoreGhost) {\r\n ghostContext.fillStyle = this._getColorId();\r\n this._shared(ghostContext);\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasText.prototype, \"_getFontStyle\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (style2, ignoreFontWeight) {\r\n if (ignoreFontWeight === void 0) { ignoreFontWeight = false; }\r\n // Process defaults\r\n var style = this.style;\r\n var fontStyle = [];\r\n if (style2 && style2.fontVariant) {\r\n fontStyle.push(style2.fontVariant);\r\n }\r\n else if (style.fontVariant) {\r\n fontStyle.push(style.fontVariant);\r\n }\r\n if (!ignoreFontWeight) {\r\n if (style2 && style2.fontWeight) {\r\n fontStyle.push(style2.fontWeight);\r\n }\r\n else if (style.fontWeight) {\r\n fontStyle.push(style.fontWeight);\r\n }\r\n }\r\n if (style2 && style2.fontStyle) {\r\n fontStyle.push(style2.fontStyle);\r\n }\r\n else if (style.fontStyle) {\r\n fontStyle.push(style.fontStyle);\r\n }\r\n if (style2 && style2.fontSize) {\r\n if ($type.isNumber(style2.fontSize)) {\r\n style2.fontSize = style2.fontSize + \"px\";\r\n }\r\n fontStyle.push(style2.fontSize);\r\n }\r\n else if (style.fontSize) {\r\n if ($type.isNumber(style.fontSize)) {\r\n style.fontSize = style.fontSize + \"px\";\r\n }\r\n fontStyle.push(style.fontSize);\r\n }\r\n if (style2 && style2.fontFamily) {\r\n fontStyle.push(style2.fontFamily);\r\n }\r\n else if (style.fontFamily) {\r\n fontStyle.push(style.fontFamily);\r\n }\r\n else if (fontStyle.length) {\r\n fontStyle.push(\"Arial\");\r\n }\r\n return fontStyle.join(\" \");\r\n }\r\n });\r\n Object.defineProperty(CanvasText.prototype, \"_render\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (parentLayer) {\r\n var _this = this;\r\n var layer = this._layer || parentLayer;\r\n // We need measurements in order to properly position text for alignment\r\n if (!this._textInfo) {\r\n this._measure(layer);\r\n }\r\n if (this._textVisible) {\r\n var interactive_1 = this._isInteractive();\r\n var context_2 = layer.context;\r\n var layerDirty_1 = layer.dirty;\r\n var ghostContext_2 = this._renderer._ghostContext;\r\n context_2.save();\r\n ghostContext_2.save();\r\n this._prerender(layer);\r\n // const lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\r\n // const x = this._localBounds && (this._localBounds.left < 0) ? Math.abs(this._localBounds.left) : 0;\r\n // Process text info produced by _measure()\r\n $array.each(this._textInfo, function (line, _index) {\r\n $array.each(line.textChunks, function (chunk, _index) {\r\n // Set style\r\n if (chunk.style) {\r\n context_2.save();\r\n ghostContext_2.save();\r\n context_2.font = chunk.style;\r\n if (_this._isInteractive()) {\r\n ghostContext_2.font = chunk.style;\r\n }\r\n }\r\n if (chunk.fill) {\r\n context_2.save();\r\n context_2.fillStyle = chunk.fill.toCSS();\r\n // Color does not affect ghostContext so we not set it\r\n }\r\n // Draw text\r\n if (layerDirty_1) {\r\n context_2.fillText(chunk.text, chunk.offsetX, line.offsetY + chunk.offsetY);\r\n }\r\n // Draw underline\r\n if (chunk.textDecoration == \"underline\" || chunk.textDecoration == \"line-through\") {\r\n var thickness = 1;\r\n var offset = 1;\r\n var fontSize = chunk.height;\r\n var offsetX = chunk.offsetX;\r\n switch (_this.style.textAlign) {\r\n case \"right\":\r\n case \"end\":\r\n offsetX -= chunk.width;\r\n break;\r\n case \"center\":\r\n offsetX -= chunk.width / 2;\r\n break;\r\n }\r\n if (chunk.style) {\r\n var format = TextFormatter.getTextStyle(chunk.style);\r\n switch (format.fontWeight) {\r\n case \"bolder\":\r\n case \"bold\":\r\n case \"700\":\r\n case \"800\":\r\n case \"900\":\r\n thickness = 2;\r\n break;\r\n }\r\n }\r\n if (fontSize) {\r\n offset = fontSize / 20;\r\n }\r\n var y = void 0;\r\n if (chunk.textDecoration == \"line-through\") {\r\n y = thickness + line.offsetY + chunk.offsetY - chunk.height / 2;\r\n }\r\n else {\r\n y = thickness + offset * 1.5 + line.offsetY + chunk.offsetY;\r\n }\r\n context_2.save();\r\n context_2.beginPath();\r\n if (chunk.fill) {\r\n context_2.strokeStyle = chunk.fill.toCSS();\r\n }\r\n else if (_this.style.fill && _this.style.fill instanceof Color) {\r\n context_2.strokeStyle = _this.style.fill.toCSS();\r\n }\r\n context_2.lineWidth = thickness * offset;\r\n context_2.moveTo(offsetX, y);\r\n context_2.lineTo(offsetX + chunk.width, y);\r\n context_2.stroke();\r\n context_2.restore();\r\n }\r\n if (interactive_1 && _this.interactive) {\r\n // Draw text in ghost canvas ONLY if it is set as interactive\r\n // explicitly. This way we avoid hit test anomalies caused by anti\r\n // aliasing of text.\r\n ghostContext_2.fillText(chunk.text, chunk.offsetX, line.offsetY + chunk.offsetY);\r\n }\r\n if (chunk.fill) {\r\n context_2.restore();\r\n // Color does not affect ghostContext so we not set it\r\n }\r\n // Reset style\r\n if (chunk.style) {\r\n context_2.restore();\r\n ghostContext_2.restore();\r\n }\r\n });\r\n });\r\n context_2.restore();\r\n ghostContext_2.restore();\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasText.prototype, \"_addBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n if (this.visible && this.isMeasured) {\r\n //if (this._textVisible) {\r\n var x = this._measure(this.getLayer());\r\n setPoint(bounds, { x: x.left, y: x.top });\r\n setPoint(bounds, { x: x.right, y: x.bottom });\r\n //}\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasText.prototype, \"_ignoreFontWeight\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n return /apple/i.test(navigator.vendor);\r\n }\r\n });\r\n Object.defineProperty(CanvasText.prototype, \"_measure\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (layer) {\r\n var _this = this;\r\n var context = layer.context;\r\n var ghostContext = this._renderer._ghostContext;\r\n var rtl = this.style.direction == \"rtl\";\r\n // Reset text info\r\n this._textInfo = [];\r\n // Init\r\n var oversizedBehavior = this.style.oversizedBehavior;\r\n var maxWidth = this.style.maxWidth;\r\n var truncate = $type.isNumber(maxWidth) && oversizedBehavior == \"truncate\";\r\n var wrap = $type.isNumber(maxWidth) && (oversizedBehavior == \"wrap\" || oversizedBehavior == \"wrap-no-break\");\r\n // Pre-render\r\n context.save();\r\n ghostContext.save();\r\n this._prerender(layer, true, this._ignoreFontWeight());\r\n // Get default font metrix\r\n var refText = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 \";\r\n // Split up text into lines\r\n var lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\r\n var styleRestored = true;\r\n var minX = 0;\r\n var maxX = 0;\r\n // Iterate through the lines\r\n var offsetY = 0;\r\n var currentStyle;\r\n $array.each(lines, function (line, _index) {\r\n // Split up line into format/value chunks\r\n var chunks;\r\n if (line == \"\") {\r\n chunks = [{\r\n type: \"value\",\r\n text: \"\"\r\n }];\r\n }\r\n else {\r\n chunks = TextFormatter.chunk(line, false, _this.style.ignoreFormatting);\r\n }\r\n var _loop_1 = function () {\r\n // Init line object\r\n var lineInfo = {\r\n offsetY: offsetY,\r\n ascent: 0,\r\n width: 0,\r\n height: 0,\r\n left: 0,\r\n right: 0,\r\n textChunks: []\r\n };\r\n // Measure reference text\r\n var metrics = _this._measureText(refText, context);\r\n var height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\r\n lineInfo.height = height;\r\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\r\n var currentFormat;\r\n var currentDecoration = _this.style.textDecoration;\r\n var currentFill;\r\n var currentChunkWidth;\r\n var skipFurtherText = false;\r\n var firstTextChunk = true;\r\n var leftoverChunks = [];\r\n var currentVerticalAlign;\r\n //let offsetX = 0;\r\n //let chunk;\r\n //while(chunk = chunks.shift()) {\r\n $array.eachContinue(chunks, function (chunk, index) {\r\n // Format chunk\r\n if (chunk.type == \"format\") {\r\n if (chunk.text == \"[/]\") {\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n styleRestored = true;\r\n }\r\n currentFill = undefined;\r\n currentStyle = undefined;\r\n currentChunkWidth = undefined;\r\n currentDecoration = _this.style.textDecoration;\r\n currentVerticalAlign = undefined;\r\n currentFormat = chunk.text;\r\n }\r\n else {\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n var format = TextFormatter.getTextStyle(chunk.text);\r\n var fontStyle = _this._getFontStyle(format);\r\n context.save();\r\n ghostContext.save();\r\n context.font = fontStyle;\r\n currentStyle = fontStyle;\r\n currentFormat = chunk.text;\r\n if (format.textDecoration) {\r\n currentDecoration = format.textDecoration;\r\n }\r\n if (format.fill) {\r\n currentFill = format.fill;\r\n }\r\n if (format.width) {\r\n currentChunkWidth = $type.toNumber(format.width);\r\n }\r\n if (format.verticalAlign) {\r\n currentVerticalAlign = format.verticalAlign;\r\n }\r\n styleRestored = false;\r\n // Measure reference text after change of format\r\n var metrics_1 = _this._measureText(refText, context);\r\n var height_1 = metrics_1.actualBoundingBoxAscent + metrics_1.actualBoundingBoxDescent;\r\n if (height_1 > lineInfo.height) {\r\n lineInfo.height = height_1;\r\n }\r\n if (metrics_1.actualBoundingBoxAscent > lineInfo.ascent) {\r\n lineInfo.ascent = metrics_1.actualBoundingBoxAscent;\r\n }\r\n }\r\n }\r\n // Text chunk\r\n else if (chunk.type == \"value\" && !skipFurtherText) {\r\n // Measure\r\n var metrics_2 = _this._measureText(chunk.text, context);\r\n var chunkWidth = metrics_2.actualBoundingBoxLeft + metrics_2.actualBoundingBoxRight;\r\n // Check for fit\r\n if (truncate) {\r\n // Break words?\r\n var breakWords = firstTextChunk || _this.style.breakWords || false;\r\n // Measure ellipsis and check if it fits\r\n var ellipsis = _this.style.ellipsis || \"\";\r\n var ellipsisMetrics = _this._measureText(ellipsis, context);\r\n var ellipsisWidth = ellipsisMetrics.actualBoundingBoxLeft + ellipsisMetrics.actualBoundingBoxRight;\r\n // Check fit\r\n if ((lineInfo.width + chunkWidth) > maxWidth) {\r\n var excessWidth = maxWidth - lineInfo.width - ellipsisWidth;\r\n chunk.text = _this._truncateText(context, chunk.text, excessWidth, breakWords);\r\n chunk.text += ellipsis;\r\n skipFurtherText = true;\r\n }\r\n }\r\n else if (wrap) {\r\n // Check fit\r\n if ((lineInfo.width + chunkWidth) > maxWidth) {\r\n var excessWidth = maxWidth - lineInfo.width;\r\n var tmpText = _this._truncateText(context, chunk.text, excessWidth, false, (firstTextChunk && _this.style.oversizedBehavior != \"wrap-no-break\"));\r\n if (tmpText == \"\") {\r\n // Unable to fit a single letter - hide the whole label\r\n _this._textVisible = true;\r\n return false;\r\n }\r\n //skipFurtherText = true;\r\n //Add remaining chunks for the next line\r\n leftoverChunks = chunks.slice(index + 1);\r\n //Add remaining text of current chunk if it was forced-cut\r\n if ($utils.trim(tmpText) != $utils.trim(chunk.text)) {\r\n leftoverChunks.unshift({\r\n type: \"value\",\r\n text: chunk.text.substr(tmpText.length)\r\n });\r\n if (currentFormat) {\r\n leftoverChunks.unshift({\r\n type: \"format\",\r\n text: currentFormat\r\n });\r\n }\r\n }\r\n // Set current chunk (truncated)\r\n chunk.text = $utils.trim(tmpText);\r\n chunks = [];\r\n skipFurtherText = true;\r\n }\r\n }\r\n // Chunk width?\r\n var leftBoundMod = 1;\r\n var rightBoundMod = 1;\r\n if (currentStyle && currentChunkWidth && (currentChunkWidth > chunkWidth)) {\r\n // increase horizontal bounding boxes accordingly\r\n var boundsMod = chunkWidth / currentChunkWidth;\r\n switch (_this.style.textAlign) {\r\n case \"right\":\r\n case \"end\":\r\n leftBoundMod = boundsMod;\r\n break;\r\n case \"center\":\r\n leftBoundMod = boundsMod;\r\n rightBoundMod = boundsMod;\r\n break;\r\n default:\r\n rightBoundMod = boundsMod;\r\n }\r\n chunkWidth = currentChunkWidth;\r\n }\r\n var chunkHeight = metrics_2.actualBoundingBoxAscent + metrics_2.actualBoundingBoxDescent;\r\n if (chunkHeight > lineInfo.height) {\r\n lineInfo.height = chunkHeight;\r\n }\r\n if (metrics_2.actualBoundingBoxAscent > lineInfo.ascent) {\r\n lineInfo.ascent = metrics_2.actualBoundingBoxAscent;\r\n }\r\n lineInfo.width += chunkWidth;\r\n lineInfo.left += metrics_2.actualBoundingBoxLeft / leftBoundMod;\r\n lineInfo.right += metrics_2.actualBoundingBoxRight / rightBoundMod;\r\n lineInfo.textChunks.push({\r\n style: currentStyle,\r\n fill: currentFill,\r\n text: chunk.text,\r\n width: chunkWidth,\r\n height: chunkHeight,\r\n left: metrics_2.actualBoundingBoxLeft,\r\n right: metrics_2.actualBoundingBoxRight,\r\n ascent: metrics_2.actualBoundingBoxAscent,\r\n offsetX: 0,\r\n offsetY: 0,\r\n textDecoration: currentDecoration,\r\n verticalAlign: currentVerticalAlign\r\n });\r\n //offsetX += chunkWidth;\r\n firstTextChunk = false;\r\n }\r\n if (leftoverChunks) {\r\n //return false;\r\n }\r\n return true;\r\n //}\r\n });\r\n if (_this.style.lineHeight instanceof Percent) {\r\n lineInfo.height *= _this.style.lineHeight.value;\r\n lineInfo.ascent *= _this.style.lineHeight.value;\r\n }\r\n else {\r\n lineInfo.height *= _this.style.lineHeight || 1.2;\r\n lineInfo.ascent *= _this.style.lineHeight || 1.2;\r\n }\r\n if (minX < lineInfo.left) {\r\n minX = lineInfo.left;\r\n }\r\n if (maxX < lineInfo.right) {\r\n maxX = lineInfo.right;\r\n }\r\n _this._textInfo.push(lineInfo);\r\n //lineInfo.offsetY += lineInfo.ascent;\r\n offsetY += lineInfo.height;\r\n // Reset chunks so that it can proceed to the next line\r\n chunks = leftoverChunks || [];\r\n };\r\n while (chunks.length > 0) {\r\n _loop_1();\r\n }\r\n });\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n // Adjust chunk internal offsets\r\n $array.each(this._textInfo, function (lineInfo, _index) {\r\n var currentChunkOffset = 0;\r\n $array.each(lineInfo.textChunks, function (chunk) {\r\n chunk.offsetX = currentChunkOffset + chunk.left - lineInfo.left;\r\n chunk.offsetY += lineInfo.height - lineInfo.height * (_this.style.baselineRatio || 0.19);\r\n currentChunkOffset += chunk.width;\r\n if (chunk.verticalAlign) {\r\n switch (chunk.verticalAlign) {\r\n case \"super\":\r\n chunk.offsetY -= lineInfo.height / 2 - chunk.height / 2;\r\n break;\r\n case \"sub\":\r\n chunk.offsetY += chunk.height / 2;\r\n break;\r\n }\r\n }\r\n });\r\n });\r\n var bounds = {\r\n left: rtl ? -maxX : -minX,\r\n top: 0,\r\n right: rtl ? minX : maxX,\r\n bottom: offsetY,\r\n };\r\n // We need to fit?\r\n if (oversizedBehavior !== \"none\") {\r\n var ratio = this._fitRatio(bounds);\r\n if (ratio < 1) {\r\n if (oversizedBehavior == \"fit\") {\r\n if ($type.isNumber(this.style.minScale) && (ratio < this.style.minScale)) {\r\n this._textVisible = false;\r\n }\r\n else {\r\n if (!this._originalScale || this._originalScale == 1) {\r\n this._originalScale = this.scale;\r\n }\r\n this.scale = ratio;\r\n this._textVisible = true;\r\n }\r\n }\r\n else if (oversizedBehavior == \"hide\") {\r\n this._textVisible = false;\r\n }\r\n else {\r\n switch (this.style.textAlign) {\r\n case \"right\":\r\n case \"end\":\r\n bounds.left = -maxWidth;\r\n bounds.right = 0;\r\n break;\r\n case \"center\":\r\n bounds.left = -maxWidth / 2;\r\n bounds.right = maxWidth / 2;\r\n break;\r\n default:\r\n bounds.left = 0;\r\n bounds.right = maxWidth;\r\n }\r\n this.scale = this._originalScale || 1;\r\n this._originalScale = undefined;\r\n this._textVisible = true;\r\n }\r\n }\r\n else {\r\n this.scale = this._originalScale || 1;\r\n this._originalScale = undefined;\r\n this._textVisible = true;\r\n }\r\n }\r\n context.restore();\r\n ghostContext.restore();\r\n return bounds;\r\n }\r\n });\r\n Object.defineProperty(CanvasText.prototype, \"_fitRatio\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (bounds) {\r\n var maxW = this.style.maxWidth;\r\n var maxH = this.style.maxHeight;\r\n if (!$type.isNumber(maxW) && !$type.isNumber(maxH)) {\r\n return 1;\r\n }\r\n var w = bounds.right - bounds.left;\r\n var h = bounds.bottom - bounds.top;\r\n return Math.min(maxW / w || 1, maxH / h || 1);\r\n }\r\n });\r\n Object.defineProperty(CanvasText.prototype, \"_truncateText\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (context, text, maxWidth, breakWords, fallbackBreakWords) {\r\n if (breakWords === void 0) { breakWords = false; }\r\n if (fallbackBreakWords === void 0) { fallbackBreakWords = true; }\r\n var width;\r\n do {\r\n if (breakWords) {\r\n text = text.slice(0, -1);\r\n }\r\n else {\r\n var tmp = text.replace(/[^,;:!?\\\\\\/\\s]+[,;:!?\\\\\\/\\s]*$/g, \"\");\r\n if (tmp == \"\" && fallbackBreakWords) {\r\n breakWords = true;\r\n }\r\n else if (tmp == \"\") {\r\n return text;\r\n }\r\n else {\r\n text = tmp;\r\n }\r\n }\r\n var metrics = this._measureText(text, context);\r\n width = metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight;\r\n } while ((width > maxWidth) && text != \"\");\r\n return text;\r\n }\r\n });\r\n Object.defineProperty(CanvasText.prototype, \"_measureText\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (text, context) {\r\n var metrics = context.measureText(text);\r\n var fakeMetrics = {};\r\n if (metrics.actualBoundingBoxAscent == null) {\r\n var div = document.createElement(\"div\");\r\n div.innerText = text;\r\n div.style.visibility = \"hidden\";\r\n div.style.position = \"absolute\";\r\n div.style.top = \"-1000000px;\";\r\n div.style.fontFamily = this.style.fontFamily || \"\";\r\n div.style.fontSize = this.style.fontSize + \"\";\r\n document.body.appendChild(div);\r\n var bbox = div.getBoundingClientRect();\r\n document.body.removeChild(div);\r\n var h = bbox.height;\r\n var w_1 = metrics.width;\r\n var left = 0;\r\n var right = w_1;\r\n fakeMetrics = {\r\n actualBoundingBoxAscent: h,\r\n actualBoundingBoxDescent: 0,\r\n actualBoundingBoxLeft: left,\r\n actualBoundingBoxRight: right,\r\n fontBoundingBoxAscent: h,\r\n fontBoundingBoxDescent: 0,\r\n width: w_1\r\n };\r\n //return fake;\r\n }\r\n else {\r\n fakeMetrics = {\r\n actualBoundingBoxAscent: metrics.actualBoundingBoxAscent,\r\n actualBoundingBoxDescent: metrics.actualBoundingBoxDescent,\r\n actualBoundingBoxLeft: metrics.actualBoundingBoxLeft,\r\n actualBoundingBoxRight: metrics.actualBoundingBoxRight,\r\n fontBoundingBoxAscent: metrics.actualBoundingBoxAscent,\r\n fontBoundingBoxDescent: metrics.actualBoundingBoxDescent,\r\n width: metrics.width\r\n };\r\n }\r\n var w = metrics.width;\r\n switch (this.style.textAlign) {\r\n case \"right\":\r\n case \"end\":\r\n fakeMetrics.actualBoundingBoxLeft = w;\r\n fakeMetrics.actualBoundingBoxRight = 0;\r\n break;\r\n case \"center\":\r\n fakeMetrics.actualBoundingBoxLeft = w / 2;\r\n fakeMetrics.actualBoundingBoxRight = w / 2;\r\n break;\r\n default:\r\n fakeMetrics.actualBoundingBoxLeft = 0;\r\n fakeMetrics.actualBoundingBoxRight = w;\r\n }\r\n return fakeMetrics;\r\n }\r\n });\r\n return CanvasText;\r\n}(CanvasDisplayObject));\r\nexport { CanvasText };\r\n/**\r\n * @ignore\r\n */\r\nvar CanvasTextStyle = /** @class */ (function () {\r\n function CanvasTextStyle() {\r\n //public wordWrapWidth: number = 100;\r\n Object.defineProperty(this, \"fill\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fillOpacity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"textAlign\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontFamily\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontSize\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontWeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontStyle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"fontVariant\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"textDecoration\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowColor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowBlur\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOffsetX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOffsetY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"shadowOpacity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n // leading?: number;\r\n // letterSpacing?: number;\r\n Object.defineProperty(this, \"lineHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: percent(120)\r\n });\r\n Object.defineProperty(this, \"baselineRatio\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0.19\r\n });\r\n // padding?: number;\r\n // stroke?: number;\r\n // strokeThickness?: number;\r\n // trim?: number;\r\n // wordWrap?: boolean;\r\n Object.defineProperty(this, \"direction\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"textBaseline\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"oversizedBehavior\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"none\"\r\n });\r\n Object.defineProperty(this, \"breakWords\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"ellipsis\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"…\"\r\n });\r\n Object.defineProperty(this, \"maxWidth\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"maxHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"minScale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"ignoreFormatting\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n }\r\n return CanvasTextStyle;\r\n}());\r\nexport { CanvasTextStyle };\r\n/**\r\n * @ignore\r\n */\r\nvar CanvasRadialText = /** @class */ (function (_super) {\r\n __extends(CanvasRadialText, _super);\r\n function CanvasRadialText() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n Object.defineProperty(_this, \"textType\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"circular\"\r\n });\r\n Object.defineProperty(_this, \"radius\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"startAngle\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"inside\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(_this, \"orientation\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: \"auto\"\r\n });\r\n Object.defineProperty(_this, \"kerning\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(_this, \"_textReversed\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n return _this;\r\n }\r\n Object.defineProperty(CanvasRadialText.prototype, \"_render\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (parentLayer) {\r\n switch (this.textType) {\r\n case \"circular\":\r\n this._renderCircular(parentLayer);\r\n break;\r\n default:\r\n _super.prototype._render.call(this, parentLayer);\r\n break;\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRadialText.prototype, \"_renderCircular\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (parentLayer) {\r\n if (this._textVisible) {\r\n var layer = this._layer || parentLayer;\r\n this._prerender(layer);\r\n var interactive_2 = this._isInteractive();\r\n var context_3 = layer.context;\r\n var layerDirty_2 = layer.dirty;\r\n var ghostContext_3 = this._renderer._ghostContext;\r\n // Savepoint\r\n context_3.save();\r\n if (interactive_2) {\r\n ghostContext_3.save();\r\n }\r\n // Init\r\n var radius_1 = (this.radius || 0);\r\n var startAngle_1 = (this.startAngle || 0);\r\n var deltaAngle_1 = 0;\r\n var orientation_1 = this.orientation;\r\n var inward_1 = orientation_1 == \"auto\" ? \"auto\" : orientation_1 == \"inward\";\r\n var inside_1 = this.inside;\r\n var align_1 = this.style.textAlign || \"left\";\r\n var kerning_1 = this.kerning || 0;\r\n var clockwise_1 = align_1 == \"left\" ? 1 : -1;\r\n var shouldReverse_1 = !this._textReversed;\r\n // We need measurements in order to properly position text for alignment\r\n if (!this._textInfo) {\r\n this._measure(layer);\r\n }\r\n // Check if we need to invert the whole stuff\r\n if (inward_1 == \"auto\") {\r\n // Calc max angle so we know whether we need to flip it\r\n var maxAngle_1 = 0;\r\n var midAngle = 0;\r\n $array.each(this._textInfo, function (line, _index) {\r\n var deltaAngle = startAngle_1 + (line.width / (radius_1 - line.height)) / 2 * -clockwise_1;\r\n if (deltaAngle > maxAngle_1) {\r\n maxAngle_1 = deltaAngle;\r\n }\r\n });\r\n if (align_1 == \"left\") {\r\n midAngle = (maxAngle_1 + deltaAngle_1 / 2) * $math.DEGREES;\r\n }\r\n else if (align_1 == \"right\") {\r\n midAngle = (maxAngle_1 - deltaAngle_1 / 2) * $math.DEGREES;\r\n }\r\n else {\r\n midAngle = startAngle_1 * $math.DEGREES;\r\n }\r\n midAngle = $math.normalizeAngle(midAngle);\r\n inward_1 = (midAngle >= 270) || (midAngle <= 90);\r\n }\r\n if (inward_1 == true && shouldReverse_1) {\r\n this._textInfo.reverse();\r\n this._textReversed = true;\r\n }\r\n // if ((inward == false && align == \"left\") || (inward == true && align == \"right\")) {\r\n // \tclockwise *= -1;\r\n // }\r\n // Process text info produced by _measure()\r\n $array.each(this._textInfo, function (line, _index) {\r\n var textHeight = line.height;\r\n // Adjust radius (for `inside = false`)\r\n // Radius adjustment for `inside = false` is below the line calculation\r\n if (!inside_1) {\r\n radius_1 += textHeight;\r\n }\r\n // Reverse letters if we're painting them counter-clockwise\r\n if (((clockwise_1 == -1 && inward_1) || (clockwise_1 == 1 && !inward_1)) && shouldReverse_1) {\r\n line.textChunks.reverse();\r\n }\r\n // Init angles\r\n var lineStartAngle = startAngle_1;\r\n deltaAngle_1 = 0;\r\n // Adjust for center-align\r\n if (align_1 == \"center\") {\r\n lineStartAngle += (line.width / (radius_1 - textHeight)) / 2 * -clockwise_1;\r\n deltaAngle_1 = lineStartAngle - startAngle_1;\r\n }\r\n // if (inward == \"auto\") {\r\n // \tlet midAngle;\r\n // \tif (align == \"left\") {\r\n // \t\tmidAngle = (lineStartAngle + deltaAngle / 2) * $math.DEGREES;\r\n // \t}\r\n // \telse if () {\r\n // \t\tmidAngle = (lineStartAngle - deltaAngle / 2) * $math.DEGREES;\r\n // \t}\r\n // \tinward = (midAngle >= 270) || (midAngle <= 90);\r\n // }\r\n // Rotate letters if they are facing outward\r\n lineStartAngle += (Math.PI * (inward_1 ? 0 : 1)); // Rotate 180 if outward\r\n // Savepoint\r\n context_3.save();\r\n if (interactive_2) {\r\n ghostContext_3.save();\r\n }\r\n // Assume starting angle\r\n context_3.rotate(lineStartAngle);\r\n if (interactive_2) {\r\n ghostContext_3.rotate(lineStartAngle);\r\n }\r\n var angleShift = 0;\r\n $array.each(line.textChunks, function (chunk, _index) {\r\n // Draw the letter\r\n var char = chunk.text;\r\n var charWidth = chunk.width;\r\n // Rotate half a letter\r\n angleShift = (charWidth / 2) / (radius_1 - textHeight) * clockwise_1;\r\n context_3.rotate(angleShift);\r\n if (interactive_2) {\r\n ghostContext_3.rotate(angleShift);\r\n }\r\n // Set style\r\n if (chunk.style) {\r\n context_3.save();\r\n ghostContext_3.save();\r\n context_3.font = chunk.style;\r\n if (interactive_2) {\r\n ghostContext_3.font = chunk.style;\r\n }\r\n }\r\n if (chunk.fill) {\r\n context_3.save();\r\n context_3.fillStyle = chunk.fill.toCSS();\r\n // Color does not affect ghostContext so we not set it\r\n }\r\n // Center letters\r\n context_3.textBaseline = \"middle\";\r\n context_3.textAlign = \"center\";\r\n if (interactive_2) {\r\n ghostContext_3.textBaseline = \"middle\";\r\n ghostContext_3.textAlign = \"center\";\r\n }\r\n // Plop the letter\r\n if (layerDirty_2) {\r\n context_3.fillText(char, 0, (inward_1 ? 1 : -1) * (0 - radius_1 + textHeight / 2));\r\n }\r\n if (interactive_2) {\r\n ghostContext_3.fillText(char, 0, (inward_1 ? 1 : -1) * (0 - radius_1 + textHeight / 2));\r\n }\r\n if (chunk.fill) {\r\n context_3.restore();\r\n // Color does not affect ghostContext so we not set it\r\n }\r\n // Reset style\r\n if (chunk.style) {\r\n context_3.restore();\r\n ghostContext_3.restore();\r\n }\r\n // Rotate half a letter and add spacing\r\n angleShift = (charWidth / 2 + kerning_1) / (radius_1 - textHeight) * clockwise_1;\r\n context_3.rotate(angleShift);\r\n if (interactive_2) {\r\n ghostContext_3.rotate(angleShift);\r\n }\r\n });\r\n // Restore angle\r\n context_3.restore();\r\n if (interactive_2) {\r\n ghostContext_3.restore();\r\n }\r\n // Adjust radius (for `inside = true`)\r\n if (inside_1) {\r\n radius_1 -= textHeight;\r\n }\r\n });\r\n // Restore\r\n context_3.restore();\r\n if (interactive_2) {\r\n ghostContext_3.restore();\r\n }\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRadialText.prototype, \"_measure\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (layer) {\r\n switch (this.textType) {\r\n case \"circular\":\r\n return this._measureCircular(layer);\r\n default:\r\n return _super.prototype._measure.call(this, layer);\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRadialText.prototype, \"_measureCircular\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (layer) {\r\n var _this = this;\r\n var context = layer.context;\r\n var ghostContext = this._renderer._ghostContext;\r\n var rtl = this.style.direction == \"rtl\";\r\n var oversizedBehavior = this.style.oversizedBehavior;\r\n var maxWidth = this.style.maxWidth;\r\n var truncate = $type.isNumber(maxWidth) && oversizedBehavior == \"truncate\";\r\n var ellipsis = this.style.ellipsis || \"\";\r\n var ellipsisMetrics;\r\n //const wrap = $type.isNumber(maxWidth) && (oversizedBehavior == \"wrap\" || oversizedBehavior == \"wrap-no-break\");\r\n // Reset text info\r\n this._textVisible = true;\r\n this._textInfo = [];\r\n this._textReversed = false;\r\n // Pre-render\r\n context.save();\r\n ghostContext.save();\r\n this._prerender(layer, true);\r\n // Split up text into lines\r\n var lines = this.text.toString().replace(/\\r/g, \"\").split(/\\n/);\r\n var styleRestored = true;\r\n var totalWidth = 0;\r\n // Iterate through the lines\r\n var offsetY = 0;\r\n $array.each(lines, function (line, _index) {\r\n // Split up line into format/value chunks\r\n var chunks = TextFormatter.chunk(line, false, _this.style.ignoreFormatting);\r\n // Init line object\r\n var lineInfo = {\r\n offsetY: offsetY,\r\n ascent: 0,\r\n width: 0,\r\n height: 0,\r\n left: 0,\r\n right: 0,\r\n textChunks: []\r\n };\r\n var currentStyle;\r\n var currentFill;\r\n var currentChunkWidth;\r\n //while(chunk = chunks.shift()) {\r\n $array.each(chunks, function (chunk, _index) {\r\n // Format chunk\r\n if (chunk.type == \"format\") {\r\n if (chunk.text == \"[/]\") {\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n styleRestored = true;\r\n }\r\n currentFill = undefined;\r\n currentStyle = undefined;\r\n currentChunkWidth = undefined;\r\n }\r\n else {\r\n var format = TextFormatter.getTextStyle(chunk.text);\r\n var fontStyle = _this._getFontStyle(format);\r\n context.save();\r\n ghostContext.save();\r\n context.font = fontStyle;\r\n currentStyle = fontStyle;\r\n if (format.fill) {\r\n currentFill = format.fill;\r\n }\r\n if (format.width) {\r\n currentChunkWidth = $type.toNumber(format.width);\r\n }\r\n styleRestored = false;\r\n }\r\n if (truncate) {\r\n ellipsisMetrics = _this._measureText(ellipsis, context);\r\n }\r\n }\r\n // Text format\r\n else if (chunk.type == \"value\") {\r\n // Measure each letter\r\n var chars = chunk.text.match(/./ug) || [];\r\n if (rtl) {\r\n chars.reverse();\r\n }\r\n for (var i = 0; i < chars.length; i++) {\r\n var char = chars[i];\r\n // Measure\r\n var metrics = _this._measureText(char, context);\r\n var chunkWidth = metrics.width;\r\n // Chunk width?\r\n if (currentStyle && currentChunkWidth && (currentChunkWidth > chunkWidth)) {\r\n chunkWidth = currentChunkWidth;\r\n }\r\n var chunkHeight = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\r\n if (chunkHeight > lineInfo.height) {\r\n lineInfo.height = chunkHeight;\r\n }\r\n if (metrics.actualBoundingBoxAscent > lineInfo.ascent) {\r\n lineInfo.ascent = metrics.actualBoundingBoxAscent;\r\n }\r\n lineInfo.width += chunkWidth;\r\n lineInfo.left += metrics.actualBoundingBoxLeft;\r\n lineInfo.right += metrics.actualBoundingBoxRight;\r\n lineInfo.textChunks.push({\r\n style: currentStyle,\r\n fill: currentFill,\r\n text: char,\r\n width: chunkWidth,\r\n height: chunkHeight + metrics.actualBoundingBoxDescent,\r\n left: metrics.actualBoundingBoxLeft,\r\n right: metrics.actualBoundingBoxRight,\r\n ascent: metrics.actualBoundingBoxAscent,\r\n offsetX: 0,\r\n offsetY: chunkHeight,\r\n textDecoration: undefined\r\n });\r\n totalWidth += chunkWidth;\r\n // Handle oversized behavior\r\n if (truncate) {\r\n // Measure ellipsis and check if it fits\r\n if (!ellipsisMetrics) {\r\n ellipsisMetrics = _this._measureText(ellipsis, context);\r\n }\r\n var ellipsisWidth = ellipsisMetrics.actualBoundingBoxLeft + ellipsisMetrics.actualBoundingBoxRight;\r\n totalWidth += ellipsisWidth;\r\n if ((totalWidth + ellipsisWidth) > maxWidth) {\r\n if (lineInfo.textChunks.length == 1) {\r\n _this._textVisible = false;\r\n }\r\n else {\r\n lineInfo.width += ellipsisWidth;\r\n lineInfo.left += ellipsisMetrics.actualBoundingBoxLeft;\r\n lineInfo.right += ellipsisMetrics.actualBoundingBoxRight;\r\n lineInfo.textChunks.push({\r\n style: currentStyle,\r\n fill: currentFill,\r\n text: ellipsis,\r\n width: ellipsisWidth,\r\n height: chunkHeight + ellipsisMetrics.actualBoundingBoxDescent,\r\n left: ellipsisMetrics.actualBoundingBoxLeft,\r\n right: ellipsisMetrics.actualBoundingBoxRight,\r\n ascent: ellipsisMetrics.actualBoundingBoxAscent,\r\n offsetX: 0,\r\n offsetY: chunkHeight,\r\n textDecoration: undefined\r\n });\r\n }\r\n break;\r\n }\r\n }\r\n if (rtl) {\r\n break;\r\n }\r\n }\r\n }\r\n });\r\n if (_this.style.lineHeight instanceof Percent) {\r\n lineInfo.height *= _this.style.lineHeight.value;\r\n }\r\n else {\r\n lineInfo.height *= _this.style.lineHeight || 1.2;\r\n }\r\n _this._textInfo.push(lineInfo);\r\n //lineInfo.offsetY += lineInfo.ascent;\r\n offsetY += lineInfo.height;\r\n });\r\n if (!styleRestored) {\r\n context.restore();\r\n ghostContext.restore();\r\n }\r\n if (oversizedBehavior == \"hide\" && (totalWidth > maxWidth)) {\r\n this._textVisible = false;\r\n }\r\n // Adjust chunk internal offsets\r\n $array.each(this._textInfo, function (lineInfo) {\r\n $array.each(lineInfo.textChunks, function (chunk) {\r\n chunk.offsetY += Math.round((lineInfo.height - chunk.height + (lineInfo.ascent - chunk.ascent)) / 2);\r\n });\r\n });\r\n context.restore();\r\n ghostContext.restore();\r\n return {\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n };\r\n }\r\n });\r\n return CanvasRadialText;\r\n}(CanvasText));\r\nexport { CanvasRadialText };\r\n/**\r\n * @ignore\r\n */\r\nvar CanvasImage = /** @class */ (function (_super) {\r\n __extends(CanvasImage, _super);\r\n function CanvasImage(renderer, image) {\r\n var _this = _super.call(this, renderer) || this;\r\n Object.defineProperty(_this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"image\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"tainted\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"shadowColor\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"shadowBlur\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"shadowOffsetX\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"shadowOffsetY\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"shadowOpacity\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"_imageMask\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n _this.image = image;\r\n return _this;\r\n }\r\n Object.defineProperty(CanvasImage.prototype, \"_dispose\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n _super.prototype._dispose.call(this);\r\n if (this._imageMask) {\r\n clearCanvas(this._imageMask);\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasImage.prototype, \"getLocalBounds\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n if (!this._localBounds) {\r\n var w = 0;\r\n var h = 0;\r\n if (this.width) {\r\n w = this.width;\r\n }\r\n if (this.height) {\r\n h = this.height;\r\n }\r\n this._localBounds = {\r\n left: 0,\r\n top: 0,\r\n right: w,\r\n bottom: h\r\n };\r\n this._addBounds(this._localBounds);\r\n }\r\n return this._localBounds;\r\n }\r\n });\r\n Object.defineProperty(CanvasImage.prototype, \"_render\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (parentLayer) {\r\n _super.prototype._render.call(this, parentLayer);\r\n if (this.image) {\r\n var layer = this._layer || parentLayer;\r\n if (this.tainted === undefined) {\r\n this.tainted = isTainted(this.image);\r\n layer.tainted = true;\r\n }\r\n if (this.tainted && this._renderer._omitTainted) {\r\n return;\r\n }\r\n if (layer.dirty) {\r\n if (this.shadowColor) {\r\n layer.context.shadowColor = this.shadowColor.toCSS(this.shadowOpacity || 1);\r\n }\r\n if (this.shadowBlur) {\r\n layer.context.shadowBlur = this.shadowBlur;\r\n }\r\n if (this.shadowOffsetX) {\r\n layer.context.shadowOffsetX = this.shadowOffsetX;\r\n }\r\n if (this.shadowOffsetY) {\r\n layer.context.shadowOffsetY = this.shadowOffsetY;\r\n }\r\n // TODO should this round ?\r\n var width = this.width || this.image.naturalWidth;\r\n var height = this.height || this.image.naturalHeight;\r\n layer.context.drawImage(this.image, 0, 0, width, height);\r\n }\r\n if (this.interactive && this._isInteractive()) {\r\n var mask = this._getMask(this.image);\r\n this._renderer._ghostContext.drawImage(mask, 0, 0);\r\n }\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasImage.prototype, \"clear\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n _super.prototype.clear.call(this);\r\n this.image = undefined;\r\n this._imageMask = undefined;\r\n }\r\n });\r\n Object.defineProperty(CanvasImage.prototype, \"_getMask\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (image) {\r\n if (this._imageMask === undefined) {\r\n // TODO should this round ?\r\n var width = this.width || image.naturalWidth;\r\n var height = this.height || image.naturalHeight;\r\n // We need to create a second canvas because destination-in clears out the entire canvas\r\n var canvas = document.createElement(\"canvas\");\r\n canvas.width = width;\r\n canvas.height = height;\r\n var context = canvas.getContext(\"2d\");\r\n context.imageSmoothingEnabled = false;\r\n context.fillStyle = this._getColorId();\r\n context.fillRect(0, 0, width, height);\r\n if (!isTainted(image)) {\r\n context.globalCompositeOperation = \"destination-in\";\r\n context.drawImage(image, 0, 0, width, height);\r\n }\r\n this._imageMask = canvas;\r\n }\r\n return this._imageMask;\r\n }\r\n });\r\n return CanvasImage;\r\n}(CanvasDisplayObject));\r\nexport { CanvasImage };\r\n/**\r\n * @ignore\r\n */\r\nvar CanvasRendererEvent = /** @class */ (function () {\r\n function CanvasRendererEvent(event, point, bbox) {\r\n Object.defineProperty(this, \"event\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: event\r\n });\r\n Object.defineProperty(this, \"point\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: point\r\n });\r\n Object.defineProperty(this, \"bbox\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: bbox\r\n });\r\n Object.defineProperty(this, \"id\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"simulated\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(this, \"native\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n if ($utils.supports(\"touchevents\") && event instanceof Touch) {\r\n this.id = event.identifier;\r\n }\r\n else {\r\n this.id = null;\r\n }\r\n }\r\n return CanvasRendererEvent;\r\n}());\r\nexport { CanvasRendererEvent };\r\n/**\r\n * @ignore\r\n */\r\nvar CanvasRenderer = /** @class */ (function (_super) {\r\n __extends(CanvasRenderer, _super);\r\n /*protected _mouseMoveThrottler: Throttler = new Throttler(() => {\r\n this._dispatchGlobalMousemove(this._lastPointerMoveEvent.event, this._lastPointerMoveEvent.native);\r\n });\r\n */\r\n function CanvasRenderer(resolution) {\r\n var _this = _super.call(this) || this;\r\n Object.defineProperty(_this, \"view\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: document.createElement(\"div\")\r\n });\r\n Object.defineProperty(_this, \"_layerDom\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: document.createElement(\"div\")\r\n });\r\n Object.defineProperty(_this, \"layers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(_this, \"_dirtyLayers\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(_this, \"defaultLayer\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: _this.getLayer(0)\r\n });\r\n Object.defineProperty(_this, \"_ghostView\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"_ghostContext\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"_patternCanvas\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: document.createElement(\"canvas\")\r\n });\r\n Object.defineProperty(_this, \"_patternContext\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: _this._patternCanvas.getContext(\"2d\")\r\n });\r\n Object.defineProperty(_this, \"_width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(_this, \"_height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(_this, \"_clientWidth\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(_this, \"_clientHeight\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(_this, \"resolution\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"interactionsEnabled\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(_this, \"_listeners\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(_this, \"_events\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(_this, \"_colorId\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(_this, \"_colorMap\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: {}\r\n });\r\n Object.defineProperty(_this, \"_forceInteractive\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(_this, \"_omitTainted\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n // TODO this should store the Id as well\r\n Object.defineProperty(_this, \"_hovering\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: new Set()\r\n });\r\n Object.defineProperty(_this, \"_dragging\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(_this, \"_mousedown\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: []\r\n });\r\n Object.defineProperty(_this, \"_lastPointerMoveEvent\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(_this, \"tapToActivate\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(_this, \"tapToActivateTimeout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 3000\r\n });\r\n Object.defineProperty(_this, \"_touchActive\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: false\r\n });\r\n Object.defineProperty(_this, \"_touchActiveTimeout\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n if (resolution == null) {\r\n _this.resolution = window.devicePixelRatio;\r\n }\r\n else {\r\n _this.resolution = resolution;\r\n }\r\n _this.view.style.position = \"absolute\";\r\n _this.view.appendChild(_this._layerDom);\r\n _this._disposers.push(new Disposer(function () {\r\n $object.each(_this._events, function (_key, events) {\r\n events.disposer.dispose();\r\n });\r\n $array.each(_this.layers, function (layer) {\r\n clearCanvas(layer.view);\r\n if (layer.exportableView) {\r\n clearCanvas(layer.exportableView);\r\n }\r\n });\r\n clearCanvas(_this._ghostView);\r\n clearCanvas(_this._patternCanvas);\r\n }));\r\n // @todo : do the same for ghost\r\n _this._ghostView = document.createElement(\"canvas\");\r\n _this._ghostContext = _this._ghostView.getContext(\"2d\", { alpha: false, willReadFrequently: true });\r\n _this._ghostContext.imageSmoothingEnabled = false;\r\n _this._ghostView.style.position = \"absolute\";\r\n _this._ghostView.style.top = \"0px\";\r\n _this._ghostView.style.left = \"0px\";\r\n _this._disposers.push($utils.addEventListener(_this._ghostView, \"click\", function (originalEvent) {\r\n var event = _this.getEvent(originalEvent);\r\n var target = _this._getHitTarget(event.point, event.bbox);\r\n console.debug(target);\r\n }));\r\n // Monitor for possible pixel ratio changes (when page is zoomed)\r\n _this._disposers.push($utils.onZoom(function () {\r\n if (resolution == null) {\r\n _this.resolution = window.devicePixelRatio;\r\n }\r\n }));\r\n // We need this in order top prevent default touch gestures when dragging\r\n // draggable elements\r\n if ($utils.supports(\"touchevents\")) {\r\n var listener = function (ev) {\r\n if (_this._dragging.length !== 0) {\r\n $array.eachContinue(_this._dragging, function (item) {\r\n if (item.value.shouldCancelTouch()) {\r\n ev.preventDefault();\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n // If touch down happends, delay touch out\r\n if (_this._touchActiveTimeout) {\r\n _this._delayTouchDeactivate();\r\n }\r\n };\r\n _this._disposers.push($utils.addEventListener(window, \"touchstart\", listener, { passive: false }));\r\n _this._disposers.push($utils.addEventListener(_this.view, \"touchstart\", listener, { passive: false }));\r\n _this._disposers.push($utils.addEventListener(_this.view, \"touchmove\", function () {\r\n // If touch is moving, delay touch out\r\n if (_this._touchActiveTimeout) {\r\n _this._delayTouchDeactivate();\r\n }\r\n }, { passive: true }));\r\n _this._disposers.push($utils.addEventListener(window, \"click\", function (_ev) {\r\n _this._touchActive = false;\r\n }, { passive: true }));\r\n _this._disposers.push($utils.addEventListener(_this.view, \"click\", function (_ev) {\r\n window.setTimeout(function () {\r\n _this._touchActive = true;\r\n _this._delayTouchDeactivate();\r\n }, 100);\r\n }, { passive: true }));\r\n }\r\n // Prevent scrolling of the window when hovering on \"wheelable\" object\r\n if ($utils.supports(\"wheelevents\")) {\r\n _this._disposers.push($utils.addEventListener(_this.view, \"wheel\", function (ev) {\r\n var prevent = false;\r\n _this._hovering.forEach(function (obj) {\r\n if (obj.wheelable) {\r\n prevent = true;\r\n return false;\r\n }\r\n });\r\n if (prevent) {\r\n ev.preventDefault();\r\n }\r\n }, { passive: false }));\r\n }\r\n return _this;\r\n }\r\n Object.defineProperty(CanvasRenderer.prototype, \"_delayTouchDeactivate\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n var _this = this;\r\n if (this._touchActiveTimeout) {\r\n clearTimeout(this._touchActiveTimeout);\r\n }\r\n if (this.tapToActivateTimeout > 0) {\r\n this._touchActiveTimeout = window.setTimeout(function () {\r\n _this._touchActive = false;\r\n }, this.tapToActivateTimeout);\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"debugGhostView\", {\r\n get: function () {\r\n return !!this._ghostView.parentNode;\r\n },\r\n set: function (value) {\r\n if (value) {\r\n if (!this._ghostView.parentNode) {\r\n this.view.appendChild(this._ghostView);\r\n }\r\n }\r\n else {\r\n if (this._ghostView.parentNode) {\r\n this._ghostView.parentNode.removeChild(this._ghostView);\r\n }\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"createLinearGradient\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (x1, y1, x2, y2) {\r\n return this.defaultLayer.context.createLinearGradient(x1, y1, x2, y2);\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"createRadialGradient\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (x1, y1, radius1, x2, y2, radius2) {\r\n return this.defaultLayer.context.createRadialGradient(x1, y1, radius1, x2, y2, radius2);\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"createPattern\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (graphics, background, repetition, width, height) {\r\n // const patternCanvas = document.createElement(\"canvas\");\r\n // const patternContext = patternCanvas.getContext(\"2d\")!;\r\n // patternCanvas.width = width;\r\n // patternCanvas.height = height;\r\n // if (fill) {\r\n // \tpatternContext.fillStyle = fill.toCSS();\r\n // \tpatternContext.fillRect(0, 0, patternCanvas.width, patternCanvas.height);\r\n // }\r\n // const layer = {\r\n // \tview: patternCanvas,\r\n // \tcontext: patternContext,\r\n // \tvisible: true,\r\n // \torder: 0,\r\n // \twidth: width,\r\n // \theight: height,\r\n // \tdirty: true\r\n // };\r\n // // patternContext.arc(0, 0, 50, 0, .5 * Math.PI);\r\n // // patternContext.stroke();\r\n // image.targetLayer = layer;\r\n // image.render(layer);\r\n //this._layerDom.appendChild(patternCanvas);\r\n this._patternCanvas.width = width;\r\n this._patternCanvas.height = height;\r\n this._patternContext.clearRect(0, 0, width, height);\r\n // patternCanvas.style.width = width * this.resolution + \"px\";\r\n // patternCanvas.style.height = height * this.resolution + \"px\";\r\n background.renderDetached(this._patternContext);\r\n graphics.renderDetached(this._patternContext);\r\n return this._patternContext.createPattern(this._patternCanvas, repetition);\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"makeContainer\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n return new CanvasContainer(this);\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"makeGraphics\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n return new CanvasGraphics(this);\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"makeText\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (text, style) {\r\n return new CanvasText(this, text, style);\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"makeTextStyle\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n return new CanvasTextStyle();\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"makeRadialText\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (text, style) {\r\n return new CanvasRadialText(this, text, style);\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"makePicture\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (image) {\r\n return new CanvasImage(this, image);\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"resizeLayer\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (layer) {\r\n layer.dirty = true;\r\n layer.resize(this._clientWidth, this._clientHeight, this.resolution);\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"resize\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (width, height) {\r\n var _this = this;\r\n this._clientWidth = width;\r\n this._clientHeight = height;\r\n this._width = Math.floor(width * this.resolution);\r\n this._height = Math.floor(height * this.resolution);\r\n $array.each(this.layers, function (layer) {\r\n if (layer) {\r\n _this.resizeLayer(layer);\r\n }\r\n });\r\n // @todo: do the same for ghost canvases\r\n this._ghostView.width = this._width;\r\n this._ghostView.height = this._height;\r\n this._ghostView.style.width = width + \"px\";\r\n this._ghostView.style.height = height + \"px\";\r\n this.view.style.width = width + \"px\";\r\n this.view.style.height = height + \"px\";\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"createDetachedLayer\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (willReadFrequently) {\r\n if (willReadFrequently === void 0) { willReadFrequently = false; }\r\n var view = document.createElement(\"canvas\");\r\n var context = view.getContext(\"2d\", { willReadFrequently: willReadFrequently });\r\n var layer = new CanvasLayer(view, context);\r\n view.style.position = \"absolute\";\r\n view.style.top = \"0px\";\r\n view.style.left = \"0px\";\r\n return layer;\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"getLayerByOrder\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (order) {\r\n var layers = this.layers;\r\n var length = layers.length;\r\n for (var i = 0; i < length; i++) {\r\n var layer = layers[i];\r\n if (layer.order == order) {\r\n return layer;\r\n }\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"getLayer\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (order, visible) {\r\n if (visible === void 0) { visible = true; }\r\n var existingLayer = this.getLayerByOrder(order);\r\n if (existingLayer) {\r\n return existingLayer;\r\n }\r\n var layer = this.createDetachedLayer(order == 99);\r\n layer.order = order;\r\n layer.visible = visible;\r\n if (layer.visible && this._width) {\r\n layer.view.width = this._width;\r\n layer.view.style.width = this._clientWidth + \"px\";\r\n layer.view.height = this._height;\r\n layer.view.style.height = this._clientHeight + \"px\";\r\n }\r\n var layers = this.layers;\r\n layers.push(layer);\r\n layers.sort(function (a, b) {\r\n if (a.order > b.order) {\r\n return 1;\r\n }\r\n else if (a.order < b.order) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n var length = layers.length;\r\n var layerIndex = $array.indexOf(layers, layer);\r\n var next;\r\n for (var i = layerIndex + 1; i < length; i++) {\r\n if (layers[i].visible) {\r\n next = layers[i];\r\n break;\r\n }\r\n }\r\n if (layer.visible) {\r\n if (next === undefined) {\r\n this._layerDom.appendChild(layer.view);\r\n }\r\n else {\r\n this._layerDom.insertBefore(layer.view, next.view);\r\n }\r\n }\r\n return layer;\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"render\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (root) {\r\n var _this = this;\r\n this._dirtyLayers.length = 0;\r\n $array.each(this.layers, function (layer) {\r\n if (layer) {\r\n if (layer.dirty && layer.visible) {\r\n _this._dirtyLayers.push(layer);\r\n layer.clear();\r\n }\r\n }\r\n });\r\n this._ghostContext.save();\r\n //this._ghostContext.clearRect(0, 0, this._width, this._height);\r\n //this._ghostContext.beginPath();\r\n this._ghostContext.fillStyle = '#000';\r\n this._ghostContext.fillRect(0, 0, this._width, this._height);\r\n root.render(this.defaultLayer);\r\n this._ghostContext.restore();\r\n //setTimeout(() => {\r\n // Remove this after the Chrome bug is fixed:\r\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1279394\r\n $array.each(this.layers, function (layer) {\r\n if (layer) {\r\n var context = layer.context;\r\n context.beginPath();\r\n context.moveTo(0, 0);\r\n context.stroke();\r\n }\r\n });\r\n $array.each(this._dirtyLayers, function (layer) {\r\n layer.context.restore();\r\n layer.dirty = false;\r\n });\r\n //}, 100)\r\n if (this._hovering.size && this._lastPointerMoveEvent) {\r\n //this._mouseMoveThrottler.run();\r\n var native_1 = this._lastPointerMoveEvent.native;\r\n $array.each(this._lastPointerMoveEvent.events, function (event) {\r\n _this._dispatchGlobalMousemove(event, native_1);\r\n });\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"paintId\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (obj) {\r\n var id = distributeId(++this._colorId);\r\n var color = Color.fromHex(id).toCSS();\r\n this._colorMap[color] = obj;\r\n return color;\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_removeObject\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (obj) {\r\n if (obj._colorId !== undefined) {\r\n delete this._colorMap[obj._colorId];\r\n }\r\n }\r\n });\r\n // protected _identifyObjectByColor(colorId: number): CanvasDisplayObject | undefined {\r\n // \treturn this._colorMap[colorId];\r\n // }\r\n Object.defineProperty(CanvasRenderer.prototype, \"getEvent\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (originalEvent, adjustPoint) {\r\n if (adjustPoint === void 0) { adjustPoint = true; }\r\n var bbox = adjustPoint ? this.view.getBoundingClientRect() : new DOMRect(0, 0, 0, 0);\r\n return new CanvasRendererEvent(originalEvent, (originalEvent.clientX || originalEvent.clientY ? {\r\n x: originalEvent.clientX - (originalEvent.clientX ? bbox.left : 0),\r\n y: originalEvent.clientY - (originalEvent.clientY ? bbox.top : 0),\r\n } : {\r\n x: 0,\r\n y: 0\r\n }), bbox);\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_getHitTarget\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (point, bbox) {\r\n if (bbox.width === 0 || bbox.height === 0 || point.x < 0 || point.x > bbox.width || point.y < 0 || point.y > bbox.height) {\r\n return;\r\n }\r\n else {\r\n var pixel = this._ghostContext.getImageData(\r\n // TODO should this round ?\r\n Math.round((point.x / bbox.width) * this._width), Math.round((point.y / bbox.height) * this._height), 1, 1);\r\n if (pixel.data[0] === 0 && pixel.data[1] === 0 && pixel.data[2] === 0) {\r\n return false;\r\n }\r\n var colorId = Color.fromRGB(pixel.data[0], pixel.data[1], pixel.data[2]).toCSS();\r\n var hit = this._colorMap[colorId];\r\n return hit;\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_withEvents\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (key, f) {\r\n var events = this._events[key];\r\n if (events !== undefined) {\r\n events.dispatching = true;\r\n try {\r\n f(events);\r\n }\r\n finally {\r\n events.dispatching = false;\r\n if (events.cleanup) {\r\n events.cleanup = false;\r\n $array.keepIf(events.callbacks, function (callback) {\r\n return !callback.disposed;\r\n });\r\n if (events.callbacks.length === 0) {\r\n events.disposer.dispose();\r\n delete this._events[key];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_dispatchEventAll\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (key, event) {\r\n if (!this.interactionsEnabled) {\r\n return;\r\n }\r\n this._withEvents(key, function (events) {\r\n $array.each(events.callbacks, function (callback) {\r\n if (!callback.disposed) {\r\n callback.callback.call(callback.context, event);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_dispatchEvent\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (key, target, event) {\r\n if (!this.interactionsEnabled) {\r\n return false;\r\n }\r\n var dispatched = false;\r\n this._withEvents(key, function (events) {\r\n $array.each(events.callbacks, function (callback) {\r\n if (!callback.disposed && callback.object === target) {\r\n callback.callback.call(callback.context, event);\r\n dispatched = true;\r\n }\r\n });\r\n });\r\n return dispatched;\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_dispatchMousedown\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (originalEvent) {\r\n var _this = this;\r\n var button = originalEvent.button;\r\n if (button != 0 && button != 2 && button != 1 && button !== undefined) {\r\n // Ignore non-primary mouse buttons\r\n return;\r\n }\r\n var event = this.getEvent(originalEvent);\r\n var target = this._getHitTarget(event.point, event.bbox);\r\n if (target) {\r\n var id_1 = event.id;\r\n var dragged_1 = false;\r\n eachTargets(target, function (obj) {\r\n var info = { id: id_1, value: obj };\r\n _this._mousedown.push(info);\r\n if (!dragged_1 && _this._dispatchEvent(\"pointerdown\", obj, event)) {\r\n // Only dispatch the first element which matches\r\n dragged_1 = true;\r\n var has = _this._dragging.some(function (x) {\r\n return x.value === obj && x.id === id_1;\r\n });\r\n if (!has) {\r\n _this._dragging.push(info);\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_dispatchGlobalMousemove\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (originalEvent, native) {\r\n var _this = this;\r\n var event = this.getEvent(originalEvent);\r\n var target = this._getHitTarget(event.point, event.bbox);\r\n event.native = native;\r\n if (target) {\r\n this._hovering.forEach(function (obj) {\r\n if (!obj.contains(target)) {\r\n _this._hovering.delete(obj);\r\n if (obj.cursorOverStyle) {\r\n $utils.setStyle(document.body, \"cursor\", obj._replacedCursorStyle);\r\n }\r\n _this._dispatchEvent(\"pointerout\", obj, event);\r\n }\r\n });\r\n if (event.native) {\r\n eachTargets(target, function (obj) {\r\n if (!_this._hovering.has(obj)) {\r\n _this._hovering.add(obj);\r\n if (obj.cursorOverStyle) {\r\n obj._replacedCursorStyle = $utils.getStyle(document.body, \"cursor\");\r\n $utils.setStyle(document.body, \"cursor\", obj.cursorOverStyle);\r\n }\r\n _this._dispatchEvent(\"pointerover\", obj, event);\r\n }\r\n return true;\r\n });\r\n }\r\n //} else if (target === false) {\r\n }\r\n else {\r\n this._hovering.forEach(function (obj) {\r\n if (obj.cursorOverStyle) {\r\n $utils.setStyle(document.body, \"cursor\", obj._replacedCursorStyle);\r\n }\r\n _this._dispatchEvent(\"pointerout\", obj, event);\r\n });\r\n this._hovering.clear();\r\n }\r\n this._dispatchEventAll(\"globalpointermove\", event);\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_dispatchGlobalMouseup\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (originalEvent, native) {\r\n var event = this.getEvent(originalEvent);\r\n event.native = native;\r\n //const target = this._getHitTarget(event.point);\r\n this._dispatchEventAll(\"globalpointerup\", event);\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_dispatchDragMove\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (originalEvent) {\r\n var _this = this;\r\n if (this._dragging.length !== 0) {\r\n var event_1 = this.getEvent(originalEvent);\r\n var id_2 = event_1.id;\r\n this._dragging.forEach(function (obj) {\r\n if (obj.id === id_2) {\r\n _this._dispatchEvent(\"pointermove\", obj.value, event_1);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_dispatchDragEnd\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (originalEvent) {\r\n var _this = this;\r\n var button = originalEvent.button;\r\n var clickevent;\r\n if (button == 0 || button === undefined) {\r\n clickevent = \"click\";\r\n }\r\n else if (button == 2) {\r\n clickevent = \"rightclick\";\r\n }\r\n else if (button == 1) {\r\n clickevent = \"middleclick\";\r\n }\r\n else {\r\n // Ignore non-primary mouse buttons\r\n return;\r\n }\r\n var event = this.getEvent(originalEvent);\r\n var id = event.id;\r\n if (this._mousedown.length !== 0) {\r\n var target_1 = this._getHitTarget(event.point, event.bbox);\r\n if (target_1) {\r\n this._mousedown.forEach(function (obj) {\r\n if (obj.id === id && obj.value.contains(target_1)) {\r\n _this._dispatchEvent(clickevent, obj.value, event);\r\n }\r\n });\r\n }\r\n this._mousedown.length = 0;\r\n }\r\n if (this._dragging.length !== 0) {\r\n this._dragging.forEach(function (obj) {\r\n if (obj.id === id) {\r\n _this._dispatchEvent(\"pointerup\", obj.value, event);\r\n }\r\n });\r\n this._dragging.length = 0;\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_dispatchDoubleClick\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (originalEvent) {\r\n var _this = this;\r\n var event = this.getEvent(originalEvent);\r\n var target = this._getHitTarget(event.point, event.bbox);\r\n if (target) {\r\n eachTargets(target, function (obj) {\r\n if (_this._dispatchEvent(\"dblclick\", obj, event)) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_dispatchWheel\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (originalEvent) {\r\n var _this = this;\r\n var event = this.getEvent(originalEvent);\r\n var target = this._getHitTarget(event.point, event.bbox);\r\n if (target) {\r\n eachTargets(target, function (obj) {\r\n if (_this._dispatchEvent(\"wheel\", obj, event)) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_makeSharedEvent\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (key, f) {\r\n var _this = this;\r\n if (this._listeners[key] === undefined) {\r\n var listener_1 = f();\r\n this._listeners[key] = new CounterDisposer(function () {\r\n delete _this._listeners[key];\r\n listener_1.dispose();\r\n });\r\n }\r\n return this._listeners[key].increment();\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_onPointerEvent\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (name, f) {\r\n var native = false;\r\n var timer = null;\r\n function clear() {\r\n timer = null;\r\n native = false;\r\n }\r\n return new MultiDisposer([\r\n new Disposer(function () {\r\n if (timer !== null) {\r\n clearTimeout(timer);\r\n }\r\n clear();\r\n }),\r\n $utils.addEventListener(this.view, $utils.getRendererEvent(name), function (_) {\r\n native = true;\r\n if (timer !== null) {\r\n clearTimeout(timer);\r\n }\r\n timer = window.setTimeout(clear, 0);\r\n }),\r\n onPointerEvent(window, name, function (ev) {\r\n if (timer !== null) {\r\n clearTimeout(timer);\r\n timer = null;\r\n }\r\n f(ev, native);\r\n native = false;\r\n }),\r\n ]);\r\n }\r\n });\r\n // This ensures that only a single DOM event is added (e.g. only a single mousemove event listener)\r\n Object.defineProperty(CanvasRenderer.prototype, \"_initEvent\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (key) {\r\n var _this = this;\r\n switch (key) {\r\n case \"globalpointermove\":\r\n case \"pointerover\":\r\n case \"pointerout\":\r\n return this._makeSharedEvent(\"pointermove\", function () {\r\n var listener = function (events, native) {\r\n _this._lastPointerMoveEvent = { events: events, native: native };\r\n $array.each(events, function (event) {\r\n _this._dispatchGlobalMousemove(event, native);\r\n });\r\n };\r\n return new MultiDisposer([\r\n _this._onPointerEvent(\"pointerdown\", listener),\r\n _this._onPointerEvent(\"pointermove\", listener),\r\n ]);\r\n });\r\n case \"globalpointerup\":\r\n return this._makeSharedEvent(\"pointerup\", function () {\r\n var mouseup = _this._onPointerEvent(\"pointerup\", function (events, native) {\r\n $array.each(events, function (event) {\r\n _this._dispatchGlobalMouseup(event, native);\r\n });\r\n _this._lastPointerMoveEvent = { events: events, native: native };\r\n });\r\n var pointercancel = _this._onPointerEvent(\"pointercancel\", function (events, native) {\r\n $array.each(events, function (event) {\r\n _this._dispatchGlobalMouseup(event, native);\r\n });\r\n _this._lastPointerMoveEvent = { events: events, native: native };\r\n });\r\n return new Disposer(function () {\r\n mouseup.dispose();\r\n pointercancel.dispose();\r\n });\r\n });\r\n case \"click\":\r\n case \"rightclick\":\r\n case \"middleclick\":\r\n case \"pointerdown\":\r\n /*\r\n return this._makeSharedEvent(\"pointerdown\", () => {\r\n return this._onPointerEvent(\"pointerdown\", (event, native) => {\r\n this._lastPointerMoveEvent = { event, native };\r\n this._dispatchMousedown(event)\r\n });\r\n });\r\n */\r\n case \"pointermove\":\r\n case \"pointerup\":\r\n return this._makeSharedEvent(\"pointerdown\", function () {\r\n //const throttler = new Throttler();\r\n var mousedown = onPointerEvent(_this.view, \"pointerdown\", function (events) {\r\n $array.each(events, function (ev) {\r\n _this._dispatchMousedown(ev);\r\n });\r\n });\r\n // TODO handle throttling properly for multitouch\r\n var mousemove = _this._onPointerEvent(\"pointermove\", function (ev) {\r\n //throttler.throttle(() => {\r\n $array.each(ev, function (ev) {\r\n _this._dispatchDragMove(ev);\r\n });\r\n //});\r\n });\r\n var mouseup = _this._onPointerEvent(\"pointerup\", function (ev) {\r\n $array.each(ev, function (ev) {\r\n _this._dispatchDragEnd(ev);\r\n });\r\n });\r\n var pointercancel = _this._onPointerEvent(\"pointercancel\", function (ev) {\r\n $array.each(ev, function (ev) {\r\n _this._dispatchDragEnd(ev);\r\n });\r\n });\r\n return new Disposer(function () {\r\n mousedown.dispose();\r\n mousemove.dispose();\r\n mouseup.dispose();\r\n pointercancel.dispose();\r\n });\r\n });\r\n case \"dblclick\":\r\n return this._makeSharedEvent(\"dblclick\", function () {\r\n return _this._onPointerEvent(\"dblclick\", function (ev) {\r\n $array.each(ev, function (ev) {\r\n _this._dispatchDoubleClick(ev);\r\n });\r\n });\r\n });\r\n case \"wheel\":\r\n return this._makeSharedEvent(\"wheel\", function () {\r\n return $utils.addEventListener(window, $utils.getRendererEvent(\"wheel\"), function (event) {\r\n _this._dispatchWheel(event);\r\n }, { passive: false });\r\n });\r\n }\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"_addEvent\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (object, key, callback, context) {\r\n var _this = this;\r\n var events = this._events[key];\r\n if (events === undefined) {\r\n events = this._events[key] = {\r\n disposer: this._initEvent(key),\r\n callbacks: [],\r\n dispatching: false,\r\n cleanup: false,\r\n };\r\n }\r\n var listener = { object: object, context: context, callback: callback, disposed: false };\r\n events.callbacks.push(listener);\r\n return new Disposer(function () {\r\n listener.disposed = true;\r\n if (events.dispatching) {\r\n events.cleanup = true;\r\n }\r\n else {\r\n $array.removeFirst(events.callbacks, listener);\r\n if (events.callbacks.length === 0) {\r\n events.disposer.dispose();\r\n delete _this._events[key];\r\n }\r\n }\r\n });\r\n }\r\n });\r\n Object.defineProperty(CanvasRenderer.prototype, \"getCanvas\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (root, options) {\r\n var _this = this;\r\n // Make sure everything is rendered\r\n this.render(root);\r\n if (!options) {\r\n options = {};\r\n }\r\n var scale = this.resolution;\r\n // Check if we need to scale\r\n if (options.minWidth && (options.minWidth > this._width)) {\r\n var minScale = options.minWidth / this._width;\r\n if (minScale > scale) {\r\n scale = minScale * this.resolution;\r\n }\r\n }\r\n if (options.minHeight && (options.minHeight > this._height)) {\r\n var minScale = options.minHeight / this._height;\r\n if (minScale > scale) {\r\n scale = minScale * this.resolution;\r\n }\r\n }\r\n if (options.maxWidth && (options.maxWidth < this._width)) {\r\n var maxScale = options.maxWidth / this._width;\r\n if (maxScale < scale) {\r\n scale = maxScale * this.resolution;\r\n }\r\n }\r\n if (options.maxHeight && (options.maxHeight > this._height)) {\r\n var maxScale = options.maxHeight / this._height;\r\n if (maxScale < scale) {\r\n scale = maxScale * this.resolution;\r\n }\r\n }\r\n // Check if we need to compensate for pixel ratio\r\n if (options.maintainPixelRatio) {\r\n scale /= this.resolution;\r\n }\r\n // Init list canvases to remove from DOM after export\r\n var canvases = [];\r\n // Set up new canvas for export\r\n var forceRender = false;\r\n var canvasWidth = this._width;\r\n var canvasHeight = this._height;\r\n var canvas = document.createElement(\"canvas\");\r\n if (scale != this.resolution) {\r\n forceRender = true;\r\n canvasWidth = this._width * scale / this.resolution;\r\n canvasHeight = this._height * scale / this.resolution;\r\n }\r\n canvas.width = canvasWidth;\r\n canvas.height = canvasHeight;\r\n // Add to DOM so it inherits CSS\r\n canvas.style.position = \"fixed\";\r\n canvas.style.top = \"-10000px\";\r\n this.view.appendChild(canvas);\r\n canvases.push(canvas);\r\n // Context\r\n var context = canvas.getContext(\"2d\");\r\n var width = 0;\r\n var height = 0;\r\n var needRerender = false;\r\n $array.each(this.layers, function (layer) {\r\n if (layer && layer.visible) {\r\n if (layer.tainted || forceRender) {\r\n needRerender = true;\r\n layer.exportableView = layer.view;\r\n layer.exportableContext = layer.context;\r\n layer.view = document.createElement(\"canvas\");\r\n // Add to DOM so it inherits CSS\r\n layer.view.style.position = \"fixed\";\r\n layer.view.style.top = \"-10000px\";\r\n _this.view.appendChild(layer.view);\r\n canvases.push(layer.view);\r\n layer.view.width = canvasWidth;\r\n layer.view.height = canvasHeight;\r\n layer.context = layer.view.getContext(\"2d\");\r\n layer.dirty = true;\r\n layer.scale = scale;\r\n }\r\n }\r\n });\r\n if (needRerender) {\r\n this._omitTainted = true;\r\n this.render(root);\r\n this._omitTainted = false;\r\n }\r\n $array.each(this.layers, function (layer) {\r\n if (layer && layer.visible) {\r\n // Layer is fine. Just plop it into our target canvas\r\n context.drawImage(layer.view, 0, 0);\r\n // Restore layer original canvas\r\n if (layer.exportableView) {\r\n layer.view = layer.exportableView;\r\n layer.exportableView = undefined;\r\n }\r\n if (layer.exportableContext) {\r\n layer.context = layer.exportableContext;\r\n layer.exportableContext = undefined;\r\n }\r\n if (width < layer.view.clientWidth) {\r\n width = layer.view.clientWidth;\r\n }\r\n if (height < layer.view.clientHeight) {\r\n height = layer.view.clientHeight;\r\n }\r\n layer.scale = undefined;\r\n }\r\n });\r\n canvas.style.width = width + \"px\";\r\n canvas.style.height = height + \"px\";\r\n $array.each(canvases, function (canvas) {\r\n canvas.style.position = \"\";\r\n canvas.style.top = \"\";\r\n _this.view.removeChild(canvas);\r\n });\r\n return canvas;\r\n }\r\n });\r\n return CanvasRenderer;\r\n}(ArrayDisposer));\r\nexport { CanvasRenderer };\r\n/**\r\n * @ignore\r\n */\r\nvar CanvasLayer = /** @class */ (function () {\r\n function CanvasLayer(view, context) {\r\n Object.defineProperty(this, \"view\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"context\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"tainted\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"margin\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"order\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"visible\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"scale\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"dirty\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: true\r\n });\r\n Object.defineProperty(this, \"exportableView\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"exportableContext\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: void 0\r\n });\r\n Object.defineProperty(this, \"_width\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n Object.defineProperty(this, \"_height\", {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: 0\r\n });\r\n this.view = view;\r\n this.context = context;\r\n }\r\n Object.defineProperty(CanvasLayer.prototype, \"resize\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function (width, height, resolution) {\r\n if (this.width != null) {\r\n width = this.width;\r\n }\r\n if (this.height != null) {\r\n height = this.height;\r\n }\r\n if (this.margin) {\r\n width += (this.margin.left + this.margin.right);\r\n height += (this.margin.top + this.margin.bottom);\r\n this.view.style.left = -this.margin.left + \"px\";\r\n this.view.style.top = -this.margin.top + \"px\";\r\n }\r\n else {\r\n this.view.style.left = \"0px\";\r\n this.view.style.top = \"0px\";\r\n }\r\n this._width = Math.floor(width * resolution);\r\n this._height = Math.floor(height * resolution);\r\n this.view.width = this._width;\r\n this.view.style.width = width + \"px\";\r\n this.view.height = this._height;\r\n this.view.style.height = height + \"px\";\r\n }\r\n });\r\n Object.defineProperty(CanvasLayer.prototype, \"clear\", {\r\n enumerable: false,\r\n configurable: true,\r\n writable: true,\r\n value: function () {\r\n this.context.save();\r\n this.context.clearRect(0, 0, this._width, this._height);\r\n }\r\n });\r\n return CanvasLayer;\r\n}());\r\nexport { CanvasLayer };\r\n//# sourceMappingURL=CanvasRenderer.js.map"],"names":["checkArgs","name","actual","expected","Error","checkMinArgs","checkEvenArgs","splitArcFlags","args","i","length","a","index","flag","exec","splice","assertBinary","value","eachTargets","hitTarget","f","interactive","_parent","onPointerEvent","element","event","touches","changedTouches","isTainted","image","canvas","document","createElement","width","height","context","getContext","willReadFrequently","drawImage","getImageData","err","console","warn","src","clearCanvas","view","style","CanvasPivot","Object","defineProperty","this","enumerable","configurable","writable","prototype","get","_x","set","_y","CanvasDisplayObject","_super","renderer","_this","call","_renderer","__extends","_removeObject","getLayer","self","_layer","defaultLayer","order","margin","undefined","visible","registerChildLayer","resizeLayer","dirty","invalidateBounds","_localBounds","_bounds","_colorId","paintId","inactive","_forceInteractive","_isInteractive","child","point","_matrix","apply","applyInverse","_uMatrix","setTransform","pivot","x","y","angle","Math","PI","scale","bn","left","top","right","bottom","_addBounds","bounds","_setMatrix","matrix","getLocalMatrix","p0","p1","p2","p3","min","max","key","callback","_addEvent","_localMatrix","copyFrom","prepend","resolution","m","b","c","d","tx","ty","layer","_transformMargin","_transform","parentLayer","exportable","_omitTainted","resolution_1","layers","ghostContext","_ghostContext","mask_1","mask","save","_transformLayer","_runPath","clip","globalAlpha","compoundAlpha","alpha","filter","_isInteractiveMask","_render","restore","tainted","_hovering","has","_dragging","some","tapToActivate","_touchActive","cancelTouch","shouldCancelTouch","CanvasContainer","arguments","interactiveChildren","_children","push","render","_childLayers","deep","markDirtyLayer","dispose","setPoint","Op","_context","_forceColor","BeginFill","color","forceColor","fillStyle","EndFill","clearShadow","fill","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","EndStroke","stroke","LineStyle","lineJoin","strokeStyle","lineWidth","LineDash","dash","setLineDash","LineDashOffset","dashOffset","lineDashOffset","DrawRect","rect","l","t","r","DrawCircle","radius","moveTo","arc","DrawEllipse","radiusX","radiusY","ellipse","Arc","cx","cy","startAngle","endAngle","anticlockwise","arcBounds","ArcTo","x1","y1","x2","y2","arcTo","LineTo","lineTo","MoveTo","ClosePath","closePath","BezierCurveTo","cpX","cpY","cpX2","cpY2","toX","toY","bezierCurveTo","QuadraticCurveTo","quadraticCurveTo","Shadow","blur","offsetX","offsetY","opacity","GraphicsImage","CanvasGraphics","clear","_operations","op","_fillAlpha","_pushOp","toCSS","isMeasured","_hasShadows","_strokeAlpha","path","match","cpx","cpy","qcpx","qcpy","SEGMENTS_REGEXP","ARGS_REGEXP","name_1","rest","relative","bs","px","py","rx","ry","xAxisRotation","largeArcFlag","sweepFlag","beginPath","layerDirty","color_1","context_1","ghostContext_1","globalCompositeOperation","blendMode","_getColorId","colorize","addBounds","CanvasText","text","_textInfo","textAlign","direction","textBaseline","ignoreGhost","ignoreFontWeight","fontStyle","_getFontStyle","font","fillOpacity","shadowOpacity","_shared","style2","fontVariant","fontWeight","fontSize","fontFamily","join","_measure","_textVisible","interactive_1","context_2","layerDirty_1","ghostContext_2","_prerender","line","_index","textChunks","chunk","fillText","textDecoration","thickness","offset","test","navigator","vendor","rtl","oversizedBehavior","maxWidth","truncate","wrap","_ignoreFontWeight","currentStyle","refText","lines","toString","replace","split","styleRestored","minX","maxX","chunks","type","ignoreFormatting","_loop_1","currentFormat","lineInfo","ascent","metrics","_measureText","actualBoundingBoxAscent","actualBoundingBoxDescent","currentFill","currentChunkWidth","currentVerticalAlign","currentDecoration","skipFurtherText","firstTextChunk","leftoverChunks","format","verticalAlign","metrics_1","height_1","metrics_2","chunkWidth","actualBoundingBoxLeft","actualBoundingBoxRight","breakWords","ellipsis","ellipsisMetrics","ellipsisWidth","excessWidth","_truncateText","tmpText","slice","unshift","substr","leftBoundMod","rightBoundMod","boundsMod","chunkHeight","lineHeight","currentChunkOffset","baselineRatio","ratio","_fitRatio","minScale","_originalScale","maxW","maxH","maxHeight","w","h","fallbackBreakWords","tmp","measureText","fakeMetrics","div","innerText","visibility","position","body","appendChild","bbox","getBoundingClientRect","removeChild","w_1","fontBoundingBoxAscent","fontBoundingBoxDescent","CanvasTextStyle","CanvasRadialText","textType","_renderCircular","interactive_2","context_3","layerDirty_2","ghostContext_3","radius_1","startAngle_1","deltaAngle_1","orientation_1","orientation","inward_1","inside_1","inside","align_1","kerning_1","kerning","clockwise_1","shouldReverse_1","_textReversed","maxAngle_1","midAngle","deltaAngle","reverse","textHeight","lineStartAngle","rotate","angleShift","char","charWidth","_measureCircular","totalWidth","chars","round","CanvasImage","_dispose","_imageMask","naturalWidth","naturalHeight","_getMask","imageSmoothingEnabled","fillRect","CanvasRendererEvent","Touch","id","identifier","CanvasRenderer","_patternCanvas","Set","window","devicePixelRatio","_layerDom","_disposers","_events","_key","events","disposer","exportableView","_ghostView","originalEvent","getEvent","target","_getHitTarget","debug","listener","ev","item","preventDefault","_touchActiveTimeout","_delayTouchDeactivate","passive","_ev","setTimeout","prevent","forEach","obj","wheelable","clearTimeout","tapToActivateTimeout","parentNode","createLinearGradient","radius1","radius2","createRadialGradient","graphics","background","repetition","_patternContext","clearRect","renderDetached","createPattern","resize","_clientWidth","_clientHeight","_width","floor","_height","CanvasLayer","existingLayer","getLayerByOrder","createDetachedLayer","sort","next","insertBefore","root","_dirtyLayers","size","_lastPointerMoveEvent","native_1","native","_dispatchGlobalMousemove","rgb","distributeId","_colorMap","adjustPoint","DOMRect","clientX","clientY","pixel","data","colorId","dispatching","cleanup","callbacks","disposed","interactionsEnabled","_withEvents","dispatched","object","button","id_1","dragged_1","info","_mousedown","_dispatchEvent","contains","delete","cursorOverStyle","_replacedCursorStyle","add","_dispatchEventAll","event_1","id_2","clickevent","target_1","_listeners","listener_1","increment","timer","_","_makeSharedEvent","_onPointerEvent","mouseup","_dispatchGlobalMouseup","pointercancel","mousedown","_dispatchMousedown","mousemove","_dispatchDragMove","_dispatchDragEnd","_dispatchDoubleClick","_dispatchWheel","_initEvent","options","maxScale","minWidth","minHeight","maintainPixelRatio","canvases","forceRender","canvasWidth","canvasHeight","needRerender","exportableContext","clientWidth","clientHeight"],"sourceRoot":""}