@pyreon/charts 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/analysis/index.js.html +1 -1
- package/lib/analysis/manual.js.html +1 -1
- package/lib/{charts-Ckh2qxB5.js → charts-lo2KeDld.js} +164 -164
- package/lib/charts-lo2KeDld.js.map +1 -0
- package/lib/{components-BcPePBeS.js → components-ClWy1Ztp.js} +128 -128
- package/lib/components-ClWy1Ztp.js.map +1 -0
- package/lib/{core-9w0g6EOI.js → core-BiuQ3y-t.js} +11 -11
- package/lib/core-BiuQ3y-t.js.map +1 -0
- package/lib/{createSeriesData-DOHScdgk.js → createSeriesData-BGy-6PqI.js} +6 -6
- package/lib/createSeriesData-BGy-6PqI.js.map +1 -0
- package/lib/{customGraphicKeyframeAnimation-CvkEkSt_.js → customGraphicKeyframeAnimation-BIbJI8ew.js} +61 -61
- package/lib/customGraphicKeyframeAnimation-BIbJI8ew.js.map +1 -0
- package/lib/{graphic-CPJ2K90a.js → graphic-Bt7SEwll.js} +59 -59
- package/lib/graphic-Bt7SEwll.js.map +1 -0
- package/lib/index.js +60 -52
- package/lib/index.js.map +1 -1
- package/lib/manual.js +60 -52
- package/lib/manual.js.map +1 -1
- package/lib/{parseGeoJson-BlBe5Vig.js → parseGeoJson-NjUY1feF.js} +115 -115
- package/lib/parseGeoJson-NjUY1feF.js.map +1 -0
- package/lib/{renderers-Dytryvoy.js → renderers-BnAAXHfG.js} +16 -16
- package/lib/renderers-BnAAXHfG.js.map +1 -0
- package/lib/types/index.d.ts +3 -3
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/manual.d.ts +3 -3
- package/lib/types/manual.d.ts.map +1 -1
- package/package.json +14 -7
- package/src/chart-component.tsx +18 -10
- package/src/index.ts +3 -3
- package/src/loader.ts +70 -73
- package/src/manual.ts +4 -4
- package/src/tests/charts.test.tsx +431 -126
- package/src/types.ts +8 -9
- package/src/use-chart.ts +8 -8
- package/lib/charts-Ckh2qxB5.js.map +0 -1
- package/lib/components-BcPePBeS.js.map +0 -1
- package/lib/core-9w0g6EOI.js.map +0 -1
- package/lib/createSeriesData-DOHScdgk.js.map +0 -1
- package/lib/customGraphicKeyframeAnimation-CvkEkSt_.js.map +0 -1
- package/lib/graphic-CPJ2K90a.js.map +0 -1
- package/lib/parseGeoJson-BlBe5Vig.js.map +0 -1
- package/lib/renderers-Dytryvoy.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graphic-CPJ2K90a.js","names":["exports","tslib","clone","EPSILON","create","copy","mul","scale","clone","mathMin","mathMax","mathAbs","matrix.create","adjustTextY","imageHelper.findExistImage","imageHelper.isImageReady","adjustTextY","dist","lerp","min","max","matrix.identity","EPSILON","isNotAroundZero","matrix.create","matrix.rotate","EPSILON","v2Create","isAroundZero","v2DistSquare","EPSILON","color.parse","PRIMARY_STATES_KEYS","tmpRect","mathMin","mathMax","mathSin","mathCos","PI2","vec2.create","cubicExtrema","curve.cubicExtrema","cubicAt","curve.cubicAt","quadraticExtremum","curve.quadraticExtremum","quadraticAt","curve.quadraticAt","vec2.min","vec2.max","CMD","PI2","dpr","containStroke","containStroke","curve.cubicProjectPoint","containStroke","PI2","PI2","containStroke","curve.cubicRootAt","curve.cubicAt","curve.cubicExtrema","curve.quadraticRootAt","curve.quadraticExtremum","curve.quadraticAt","line.containStroke","cubic.containStroke","quadratic.containStroke","arc.containStroke","pathContain.containStroke","pathContain.contain","clone","adjustTextY","zrUtil.indexOf","_calcOut","eventUtil.clientToLocal","util.each","vec2.dist","util.indexOf","zrUtil.map","zrUtil.noop","zrUtil.each","zrUtil.keys","HandlerProxy","zrUtil.retrieve2","zrUtil.guid"],"sources":["../../../node_modules/.bun/tslib@2.3.0/node_modules/tslib/tslib.js","../../../node_modules/.bun/tslib@2.3.0/node_modules/tslib/modules/index.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/platform.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/util.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/env.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/LRU.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/graphic/helper/image.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/matrix.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/Point.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/BoundingRect.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/contain/text.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/graphic/helper/parseText.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/vector.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/Transformable.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/animation/easing.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/curve.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/animation/cubicEasing.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/animation/Clip.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/tool/color.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/svg/helper.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/animation/Animator.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/Eventful.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/config.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/Element.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/graphic/Displayable.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/bbox.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/PathProxy.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/contain/line.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/contain/cubic.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/contain/quadratic.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/contain/util.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/contain/arc.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/contain/windingLine.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/contain/path.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/graphic/Path.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/graphic/TSpan.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/graphic/Image.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/graphic/helper/roundRect.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/graphic/helper/subPixelOptimize.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/graphic/shape/Rect.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/graphic/Text.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/graphic/Group.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/graphic/CompoundPath.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/fourPointsTransform.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/dom.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/mixin/Draggable.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/event.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/GestureMgr.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/Handler.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/core/timsort.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/Storage.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/animation/requestAnimationFrame.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/animation/Animation.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/dom/HandlerProxy.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/zrender.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/canvas/helper.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/canvas/dashStyle.js","../../../node_modules/.bun/zrender@6.0.0/node_modules/zrender/lib/canvas/graphic.js"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, System, Reflect, Promise */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __createBinding;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n});\r\n","import tslib from '../tslib.js';\r\nconst {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n} = tslib;\r\nexport {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __exportStar,\r\n __createBinding,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n};\r\n","export var DEFAULT_FONT_SIZE = 12;\nexport var DEFAULT_FONT_FAMILY = 'sans-serif';\nexport var DEFAULT_FONT = DEFAULT_FONT_SIZE + \"px \" + DEFAULT_FONT_FAMILY;\nvar OFFSET = 20;\nvar SCALE = 100;\nvar defaultWidthMapStr = \"007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\\\\\WQb\\\\0FWLg\\\\bWb\\\\WQ\\\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\\\FFF5.5N\";\nfunction getTextWidthMap(mapStr) {\n var map = {};\n if (typeof JSON === 'undefined') {\n return map;\n }\n for (var i = 0; i < mapStr.length; i++) {\n var char = String.fromCharCode(i + 32);\n var size = (mapStr.charCodeAt(i) - OFFSET) / SCALE;\n map[char] = size;\n }\n return map;\n}\nexport var DEFAULT_TEXT_WIDTH_MAP = getTextWidthMap(defaultWidthMapStr);\nexport var platformApi = {\n createCanvas: function () {\n return typeof document !== 'undefined'\n && document.createElement('canvas');\n },\n measureText: (function () {\n var _ctx;\n var _cachedFont;\n return function (text, font) {\n if (!_ctx) {\n var canvas = platformApi.createCanvas();\n _ctx = canvas && canvas.getContext('2d');\n }\n if (_ctx) {\n if (_cachedFont !== font) {\n _cachedFont = _ctx.font = font || DEFAULT_FONT;\n }\n return _ctx.measureText(text);\n }\n else {\n text = text || '';\n font = font || DEFAULT_FONT;\n var res = /((?:\\d+)?\\.?\\d*)px/.exec(font);\n var fontSize = res && +res[1] || DEFAULT_FONT_SIZE;\n var width = 0;\n if (font.indexOf('mono') >= 0) {\n width = fontSize * text.length;\n }\n else {\n for (var i = 0; i < text.length; i++) {\n var preCalcWidth = DEFAULT_TEXT_WIDTH_MAP[text[i]];\n width += preCalcWidth == null ? fontSize : (preCalcWidth * fontSize);\n }\n }\n return { width: width };\n }\n };\n })(),\n loadImage: function (src, onload, onerror) {\n var image = new Image();\n image.onload = onload;\n image.onerror = onerror;\n image.src = src;\n return image;\n }\n};\nexport function setPlatformAPI(newPlatformApis) {\n for (var key in platformApi) {\n if (newPlatformApis[key]) {\n platformApi[key] = newPlatformApis[key];\n }\n }\n}\n","import { platformApi } from './platform.js';\nvar BUILTIN_OBJECT = reduce([\n 'Function',\n 'RegExp',\n 'Date',\n 'Error',\n 'CanvasGradient',\n 'CanvasPattern',\n 'Image',\n 'Canvas'\n], function (obj, val) {\n obj['[object ' + val + ']'] = true;\n return obj;\n}, {});\nvar TYPED_ARRAY = reduce([\n 'Int8',\n 'Uint8',\n 'Uint8Clamped',\n 'Int16',\n 'Uint16',\n 'Int32',\n 'Uint32',\n 'Float32',\n 'Float64'\n], function (obj, val) {\n obj['[object ' + val + 'Array]'] = true;\n return obj;\n}, {});\nvar objToString = Object.prototype.toString;\nvar arrayProto = Array.prototype;\nvar nativeForEach = arrayProto.forEach;\nvar nativeFilter = arrayProto.filter;\nvar nativeSlice = arrayProto.slice;\nvar nativeMap = arrayProto.map;\nvar ctorFunction = function () { }.constructor;\nvar protoFunction = ctorFunction ? ctorFunction.prototype : null;\nvar protoKey = '__proto__';\nvar idStart = 0x0907;\nexport function guid() {\n return idStart++;\n}\nexport function logError() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (typeof console !== 'undefined') {\n console.error.apply(console, args);\n }\n}\nexport function clone(source) {\n if (source == null || typeof source !== 'object') {\n return source;\n }\n var result = source;\n var typeStr = objToString.call(source);\n if (typeStr === '[object Array]') {\n if (!isPrimitive(source)) {\n result = [];\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = clone(source[i]);\n }\n }\n }\n else if (TYPED_ARRAY[typeStr]) {\n if (!isPrimitive(source)) {\n var Ctor = source.constructor;\n if (Ctor.from) {\n result = Ctor.from(source);\n }\n else {\n result = new Ctor(source.length);\n for (var i = 0, len = source.length; i < len; i++) {\n result[i] = source[i];\n }\n }\n }\n }\n else if (!BUILTIN_OBJECT[typeStr] && !isPrimitive(source) && !isDom(source)) {\n result = {};\n for (var key in source) {\n if (source.hasOwnProperty(key) && key !== protoKey) {\n result[key] = clone(source[key]);\n }\n }\n }\n return result;\n}\nexport function merge(target, source, overwrite) {\n if (!isObject(source) || !isObject(target)) {\n return overwrite ? clone(source) : target;\n }\n for (var key in source) {\n if (source.hasOwnProperty(key) && key !== protoKey) {\n var targetProp = target[key];\n var sourceProp = source[key];\n if (isObject(sourceProp)\n && isObject(targetProp)\n && !isArray(sourceProp)\n && !isArray(targetProp)\n && !isDom(sourceProp)\n && !isDom(targetProp)\n && !isBuiltInObject(sourceProp)\n && !isBuiltInObject(targetProp)\n && !isPrimitive(sourceProp)\n && !isPrimitive(targetProp)) {\n merge(targetProp, sourceProp, overwrite);\n }\n else if (overwrite || !(key in target)) {\n target[key] = clone(source[key]);\n }\n }\n }\n return target;\n}\nexport function mergeAll(targetAndSources, overwrite) {\n var result = targetAndSources[0];\n for (var i = 1, len = targetAndSources.length; i < len; i++) {\n result = merge(result, targetAndSources[i], overwrite);\n }\n return result;\n}\nexport function extend(target, source) {\n if (Object.assign) {\n Object.assign(target, source);\n }\n else {\n for (var key in source) {\n if (source.hasOwnProperty(key) && key !== protoKey) {\n target[key] = source[key];\n }\n }\n }\n return target;\n}\nexport function defaults(target, source, overlay) {\n var keysArr = keys(source);\n for (var i = 0, len = keysArr.length; i < len; i++) {\n var key = keysArr[i];\n if ((overlay ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n return target;\n}\nexport var createCanvas = platformApi.createCanvas;\nexport function indexOf(array, value) {\n if (array) {\n if (array.indexOf) {\n return array.indexOf(value);\n }\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n }\n return -1;\n}\nexport function inherits(clazz, baseClazz) {\n var clazzPrototype = clazz.prototype;\n function F() { }\n F.prototype = baseClazz.prototype;\n clazz.prototype = new F();\n for (var prop in clazzPrototype) {\n if (clazzPrototype.hasOwnProperty(prop)) {\n clazz.prototype[prop] = clazzPrototype[prop];\n }\n }\n clazz.prototype.constructor = clazz;\n clazz.superClass = baseClazz;\n}\nexport function mixin(target, source, override) {\n target = 'prototype' in target ? target.prototype : target;\n source = 'prototype' in source ? source.prototype : source;\n if (Object.getOwnPropertyNames) {\n var keyList = Object.getOwnPropertyNames(source);\n for (var i = 0; i < keyList.length; i++) {\n var key = keyList[i];\n if (key !== 'constructor') {\n if ((override ? source[key] != null : target[key] == null)) {\n target[key] = source[key];\n }\n }\n }\n }\n else {\n defaults(target, source, override);\n }\n}\nexport function isArrayLike(data) {\n if (!data) {\n return false;\n }\n if (typeof data === 'string') {\n return false;\n }\n return typeof data.length === 'number';\n}\nexport function each(arr, cb, context) {\n if (!(arr && cb)) {\n return;\n }\n if (arr.forEach && arr.forEach === nativeForEach) {\n arr.forEach(cb, context);\n }\n else if (arr.length === +arr.length) {\n for (var i = 0, len = arr.length; i < len; i++) {\n cb.call(context, arr[i], i, arr);\n }\n }\n else {\n for (var key in arr) {\n if (arr.hasOwnProperty(key)) {\n cb.call(context, arr[key], key, arr);\n }\n }\n }\n}\nexport function map(arr, cb, context) {\n if (!arr) {\n return [];\n }\n if (!cb) {\n return slice(arr);\n }\n if (arr.map && arr.map === nativeMap) {\n return arr.map(cb, context);\n }\n else {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n result.push(cb.call(context, arr[i], i, arr));\n }\n return result;\n }\n}\nexport function reduce(arr, cb, memo, context) {\n if (!(arr && cb)) {\n return;\n }\n for (var i = 0, len = arr.length; i < len; i++) {\n memo = cb.call(context, memo, arr[i], i, arr);\n }\n return memo;\n}\nexport function filter(arr, cb, context) {\n if (!arr) {\n return [];\n }\n if (!cb) {\n return slice(arr);\n }\n if (arr.filter && arr.filter === nativeFilter) {\n return arr.filter(cb, context);\n }\n else {\n var result = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n if (cb.call(context, arr[i], i, arr)) {\n result.push(arr[i]);\n }\n }\n return result;\n }\n}\nexport function find(arr, cb, context) {\n if (!(arr && cb)) {\n return;\n }\n for (var i = 0, len = arr.length; i < len; i++) {\n if (cb.call(context, arr[i], i, arr)) {\n return arr[i];\n }\n }\n}\nexport function keys(obj) {\n if (!obj) {\n return [];\n }\n if (Object.keys) {\n return Object.keys(obj);\n }\n var keyList = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n keyList.push(key);\n }\n }\n return keyList;\n}\nfunction bindPolyfill(func, context) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n return function () {\n return func.apply(context, args.concat(nativeSlice.call(arguments)));\n };\n}\nexport var bind = (protoFunction && isFunction(protoFunction.bind))\n ? protoFunction.call.bind(protoFunction.bind)\n : bindPolyfill;\nfunction curry(func) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return function () {\n return func.apply(this, args.concat(nativeSlice.call(arguments)));\n };\n}\nexport { curry };\nexport function isArray(value) {\n if (Array.isArray) {\n return Array.isArray(value);\n }\n return objToString.call(value) === '[object Array]';\n}\nexport function isFunction(value) {\n return typeof value === 'function';\n}\nexport function isString(value) {\n return typeof value === 'string';\n}\nexport function isStringSafe(value) {\n return objToString.call(value) === '[object String]';\n}\nexport function isNumber(value) {\n return typeof value === 'number';\n}\nexport function isObject(value) {\n var type = typeof value;\n return type === 'function' || (!!value && type === 'object');\n}\nexport function isBuiltInObject(value) {\n return !!BUILTIN_OBJECT[objToString.call(value)];\n}\nexport function isTypedArray(value) {\n return !!TYPED_ARRAY[objToString.call(value)];\n}\nexport function isDom(value) {\n return typeof value === 'object'\n && typeof value.nodeType === 'number'\n && typeof value.ownerDocument === 'object';\n}\nexport function isGradientObject(value) {\n return value.colorStops != null;\n}\nexport function isImagePatternObject(value) {\n return value.image != null;\n}\nexport function isRegExp(value) {\n return objToString.call(value) === '[object RegExp]';\n}\nexport function eqNaN(value) {\n return value !== value;\n}\nexport function retrieve() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n for (var i = 0, len = args.length; i < len; i++) {\n if (args[i] != null) {\n return args[i];\n }\n }\n}\nexport function retrieve2(value0, value1) {\n return value0 != null\n ? value0\n : value1;\n}\nexport function retrieve3(value0, value1, value2) {\n return value0 != null\n ? value0\n : value1 != null\n ? value1\n : value2;\n}\nexport function slice(arr) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return nativeSlice.apply(arr, args);\n}\nexport function normalizeCssArray(val) {\n if (typeof (val) === 'number') {\n return [val, val, val, val];\n }\n var len = val.length;\n if (len === 2) {\n return [val[0], val[1], val[0], val[1]];\n }\n else if (len === 3) {\n return [val[0], val[1], val[2], val[1]];\n }\n return val;\n}\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message);\n }\n}\nexport function trim(str) {\n if (str == null) {\n return null;\n }\n else if (typeof str.trim === 'function') {\n return str.trim();\n }\n else {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n}\nvar primitiveKey = '__ec_primitive__';\nexport function setAsPrimitive(obj) {\n obj[primitiveKey] = true;\n}\nexport function isPrimitive(obj) {\n return obj[primitiveKey];\n}\nvar MapPolyfill = (function () {\n function MapPolyfill() {\n this.data = {};\n }\n MapPolyfill.prototype[\"delete\"] = function (key) {\n var existed = this.has(key);\n if (existed) {\n delete this.data[key];\n }\n return existed;\n };\n MapPolyfill.prototype.has = function (key) {\n return this.data.hasOwnProperty(key);\n };\n MapPolyfill.prototype.get = function (key) {\n return this.data[key];\n };\n MapPolyfill.prototype.set = function (key, value) {\n this.data[key] = value;\n return this;\n };\n MapPolyfill.prototype.keys = function () {\n return keys(this.data);\n };\n MapPolyfill.prototype.forEach = function (callback) {\n var data = this.data;\n for (var key in data) {\n if (data.hasOwnProperty(key)) {\n callback(data[key], key);\n }\n }\n };\n return MapPolyfill;\n}());\nvar isNativeMapSupported = typeof Map === 'function';\nfunction maybeNativeMap() {\n return (isNativeMapSupported ? new Map() : new MapPolyfill());\n}\nvar HashMap = (function () {\n function HashMap(obj) {\n var isArr = isArray(obj);\n this.data = maybeNativeMap();\n var thisMap = this;\n (obj instanceof HashMap)\n ? obj.each(visit)\n : (obj && each(obj, visit));\n function visit(value, key) {\n isArr ? thisMap.set(value, key) : thisMap.set(key, value);\n }\n }\n HashMap.prototype.hasKey = function (key) {\n return this.data.has(key);\n };\n HashMap.prototype.get = function (key) {\n return this.data.get(key);\n };\n HashMap.prototype.set = function (key, value) {\n this.data.set(key, value);\n return value;\n };\n HashMap.prototype.each = function (cb, context) {\n this.data.forEach(function (value, key) {\n cb.call(context, value, key);\n });\n };\n HashMap.prototype.keys = function () {\n var keys = this.data.keys();\n return isNativeMapSupported\n ? Array.from(keys)\n : keys;\n };\n HashMap.prototype.removeKey = function (key) {\n this.data[\"delete\"](key);\n };\n return HashMap;\n}());\nexport { HashMap };\nexport function createHashMap(obj) {\n return new HashMap(obj);\n}\nexport function concatArray(a, b) {\n var newArray = new a.constructor(a.length + b.length);\n for (var i = 0; i < a.length; i++) {\n newArray[i] = a[i];\n }\n var offset = a.length;\n for (var i = 0; i < b.length; i++) {\n newArray[i + offset] = b[i];\n }\n return newArray;\n}\nexport function createObject(proto, properties) {\n var obj;\n if (Object.create) {\n obj = Object.create(proto);\n }\n else {\n var StyleCtor = function () { };\n StyleCtor.prototype = proto;\n obj = new StyleCtor();\n }\n if (properties) {\n extend(obj, properties);\n }\n return obj;\n}\nexport function disableUserSelect(dom) {\n var domStyle = dom.style;\n domStyle.webkitUserSelect = 'none';\n domStyle.userSelect = 'none';\n domStyle.webkitTapHighlightColor = 'rgba(0,0,0,0)';\n domStyle['-webkit-touch-callout'] = 'none';\n}\nexport function hasOwn(own, prop) {\n return own.hasOwnProperty(prop);\n}\nexport function noop() { }\nexport var RADIAN_TO_DEGREE = 180 / Math.PI;\nexport var EPSILON = Number.EPSILON || Math.pow(2, -52);\n","var Browser = (function () {\n function Browser() {\n this.firefox = false;\n this.ie = false;\n this.edge = false;\n this.newEdge = false;\n this.weChat = false;\n }\n return Browser;\n}());\nvar Env = (function () {\n function Env() {\n this.browser = new Browser();\n this.node = false;\n this.wxa = false;\n this.worker = false;\n this.svgSupported = false;\n this.touchEventsSupported = false;\n this.pointerEventsSupported = false;\n this.domSupported = false;\n this.transformSupported = false;\n this.transform3dSupported = false;\n this.hasGlobalWindow = typeof window !== 'undefined';\n }\n return Env;\n}());\nvar env = new Env();\nif (typeof wx === 'object' && typeof wx.getSystemInfoSync === 'function') {\n env.wxa = true;\n env.touchEventsSupported = true;\n}\nelse if (typeof document === 'undefined' && typeof self !== 'undefined') {\n env.worker = true;\n}\nelse if (!env.hasGlobalWindow\n || 'Deno' in window\n || (typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string'\n && navigator.userAgent.indexOf('Node.js') > -1)) {\n env.node = true;\n env.svgSupported = true;\n}\nelse {\n detect(navigator.userAgent, env);\n}\nfunction detect(ua, env) {\n var browser = env.browser;\n var firefox = ua.match(/Firefox\\/([\\d.]+)/);\n var ie = ua.match(/MSIE\\s([\\d.]+)/)\n || ua.match(/Trident\\/.+?rv:(([\\d.]+))/);\n var edge = ua.match(/Edge?\\/([\\d.]+)/);\n var weChat = (/micromessenger/i).test(ua);\n if (firefox) {\n browser.firefox = true;\n browser.version = firefox[1];\n }\n if (ie) {\n browser.ie = true;\n browser.version = ie[1];\n }\n if (edge) {\n browser.edge = true;\n browser.version = edge[1];\n browser.newEdge = +edge[1].split('.')[0] > 18;\n }\n if (weChat) {\n browser.weChat = true;\n }\n env.svgSupported = typeof SVGRect !== 'undefined';\n env.touchEventsSupported = 'ontouchstart' in window && !browser.ie && !browser.edge;\n env.pointerEventsSupported = 'onpointerdown' in window\n && (browser.edge || (browser.ie && +browser.version >= 11));\n var domSupported = env.domSupported = typeof document !== 'undefined';\n if (domSupported) {\n var style = document.documentElement.style;\n env.transform3dSupported = ((browser.ie && 'transition' in style)\n || browser.edge\n || (('WebKitCSSMatrix' in window) && ('m11' in new WebKitCSSMatrix()))\n || 'MozPerspective' in style)\n && !('OTransition' in style);\n env.transformSupported = env.transform3dSupported\n || (browser.ie && +browser.version >= 9);\n }\n}\nexport default env;\n","var Entry = (function () {\n function Entry(val) {\n this.value = val;\n }\n return Entry;\n}());\nexport { Entry };\nvar LinkedList = (function () {\n function LinkedList() {\n this._len = 0;\n }\n LinkedList.prototype.insert = function (val) {\n var entry = new Entry(val);\n this.insertEntry(entry);\n return entry;\n };\n LinkedList.prototype.insertEntry = function (entry) {\n if (!this.head) {\n this.head = this.tail = entry;\n }\n else {\n this.tail.next = entry;\n entry.prev = this.tail;\n entry.next = null;\n this.tail = entry;\n }\n this._len++;\n };\n LinkedList.prototype.remove = function (entry) {\n var prev = entry.prev;\n var next = entry.next;\n if (prev) {\n prev.next = next;\n }\n else {\n this.head = next;\n }\n if (next) {\n next.prev = prev;\n }\n else {\n this.tail = prev;\n }\n entry.next = entry.prev = null;\n this._len--;\n };\n LinkedList.prototype.len = function () {\n return this._len;\n };\n LinkedList.prototype.clear = function () {\n this.head = this.tail = null;\n this._len = 0;\n };\n return LinkedList;\n}());\nexport { LinkedList };\nvar LRU = (function () {\n function LRU(maxSize) {\n this._list = new LinkedList();\n this._maxSize = 10;\n this._map = {};\n this._maxSize = maxSize;\n }\n LRU.prototype.put = function (key, value) {\n var list = this._list;\n var map = this._map;\n var removed = null;\n if (map[key] == null) {\n var len = list.len();\n var entry = this._lastRemovedEntry;\n if (len >= this._maxSize && len > 0) {\n var leastUsedEntry = list.head;\n list.remove(leastUsedEntry);\n delete map[leastUsedEntry.key];\n removed = leastUsedEntry.value;\n this._lastRemovedEntry = leastUsedEntry;\n }\n if (entry) {\n entry.value = value;\n }\n else {\n entry = new Entry(value);\n }\n entry.key = key;\n list.insertEntry(entry);\n map[key] = entry;\n }\n return removed;\n };\n LRU.prototype.get = function (key) {\n var entry = this._map[key];\n var list = this._list;\n if (entry != null) {\n if (entry !== list.tail) {\n list.remove(entry);\n list.insertEntry(entry);\n }\n return entry.value;\n }\n };\n LRU.prototype.clear = function () {\n this._list.clear();\n this._map = {};\n };\n LRU.prototype.len = function () {\n return this._list.len();\n };\n return LRU;\n}());\nexport default LRU;\n","import LRU from '../../core/LRU.js';\nimport { platformApi } from '../../core/platform.js';\nvar globalImageCache = new LRU(50);\nexport function findExistImage(newImageOrSrc) {\n if (typeof newImageOrSrc === 'string') {\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n return cachedImgObj && cachedImgObj.image;\n }\n else {\n return newImageOrSrc;\n }\n}\nexport function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {\n if (!newImageOrSrc) {\n return image;\n }\n else if (typeof newImageOrSrc === 'string') {\n if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {\n return image;\n }\n var cachedImgObj = globalImageCache.get(newImageOrSrc);\n var pendingWrap = { hostEl: hostEl, cb: onload, cbPayload: cbPayload };\n if (cachedImgObj) {\n image = cachedImgObj.image;\n !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);\n }\n else {\n image = platformApi.loadImage(newImageOrSrc, imageOnLoad, imageOnLoad);\n image.__zrImageSrc = newImageOrSrc;\n globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {\n image: image,\n pending: [pendingWrap]\n });\n }\n return image;\n }\n else {\n return newImageOrSrc;\n }\n}\nfunction imageOnLoad() {\n var cachedImgObj = this.__cachedImgObj;\n this.onload = this.onerror = this.__cachedImgObj = null;\n for (var i = 0; i < cachedImgObj.pending.length; i++) {\n var pendingWrap = cachedImgObj.pending[i];\n var cb = pendingWrap.cb;\n cb && cb(this, pendingWrap.cbPayload);\n pendingWrap.hostEl.dirty();\n }\n cachedImgObj.pending.length = 0;\n}\nexport function isImageReady(image) {\n return image && image.width && image.height;\n}\n","export function create() {\n return [1, 0, 0, 1, 0, 0];\n}\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 1;\n out[4] = 0;\n out[5] = 0;\n return out;\n}\nexport function copy(out, m) {\n out[0] = m[0];\n out[1] = m[1];\n out[2] = m[2];\n out[3] = m[3];\n out[4] = m[4];\n out[5] = m[5];\n return out;\n}\nexport function mul(out, m1, m2) {\n var out0 = m1[0] * m2[0] + m1[2] * m2[1];\n var out1 = m1[1] * m2[0] + m1[3] * m2[1];\n var out2 = m1[0] * m2[2] + m1[2] * m2[3];\n var out3 = m1[1] * m2[2] + m1[3] * m2[3];\n var out4 = m1[0] * m2[4] + m1[2] * m2[5] + m1[4];\n var out5 = m1[1] * m2[4] + m1[3] * m2[5] + m1[5];\n out[0] = out0;\n out[1] = out1;\n out[2] = out2;\n out[3] = out3;\n out[4] = out4;\n out[5] = out5;\n return out;\n}\nexport function translate(out, a, v) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4] + v[0];\n out[5] = a[5] + v[1];\n return out;\n}\nexport function rotate(out, a, rad, pivot) {\n if (pivot === void 0) { pivot = [0, 0]; }\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var st = Math.sin(rad);\n var ct = Math.cos(rad);\n out[0] = aa * ct + ab * st;\n out[1] = -aa * st + ab * ct;\n out[2] = ac * ct + ad * st;\n out[3] = -ac * st + ct * ad;\n out[4] = ct * (atx - pivot[0]) + st * (aty - pivot[1]) + pivot[0];\n out[5] = ct * (aty - pivot[1]) - st * (atx - pivot[0]) + pivot[1];\n return out;\n}\nexport function scale(out, a, v) {\n var vx = v[0];\n var vy = v[1];\n out[0] = a[0] * vx;\n out[1] = a[1] * vy;\n out[2] = a[2] * vx;\n out[3] = a[3] * vy;\n out[4] = a[4] * vx;\n out[5] = a[5] * vy;\n return out;\n}\nexport function invert(out, a) {\n var aa = a[0];\n var ac = a[2];\n var atx = a[4];\n var ab = a[1];\n var ad = a[3];\n var aty = a[5];\n var det = aa * ad - ab * ac;\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n out[0] = ad * det;\n out[1] = -ab * det;\n out[2] = -ac * det;\n out[3] = aa * det;\n out[4] = (ac * aty - ad * atx) * det;\n out[5] = (ab * atx - aa * aty) * det;\n return out;\n}\nexport function clone(a) {\n var b = create();\n copy(b, a);\n return b;\n}\n","var Point = (function () {\n function Point(x, y) {\n this.x = x || 0;\n this.y = y || 0;\n }\n Point.prototype.copy = function (other) {\n this.x = other.x;\n this.y = other.y;\n return this;\n };\n Point.prototype.clone = function () {\n return new Point(this.x, this.y);\n };\n Point.prototype.set = function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n };\n Point.prototype.equal = function (other) {\n return other.x === this.x && other.y === this.y;\n };\n Point.prototype.add = function (other) {\n this.x += other.x;\n this.y += other.y;\n return this;\n };\n Point.prototype.scale = function (scalar) {\n this.x *= scalar;\n this.y *= scalar;\n };\n Point.prototype.scaleAndAdd = function (other, scalar) {\n this.x += other.x * scalar;\n this.y += other.y * scalar;\n };\n Point.prototype.sub = function (other) {\n this.x -= other.x;\n this.y -= other.y;\n return this;\n };\n Point.prototype.dot = function (other) {\n return this.x * other.x + this.y * other.y;\n };\n Point.prototype.len = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n };\n Point.prototype.lenSquare = function () {\n return this.x * this.x + this.y * this.y;\n };\n Point.prototype.normalize = function () {\n var len = this.len();\n this.x /= len;\n this.y /= len;\n return this;\n };\n Point.prototype.distance = function (other) {\n var dx = this.x - other.x;\n var dy = this.y - other.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n Point.prototype.distanceSquare = function (other) {\n var dx = this.x - other.x;\n var dy = this.y - other.y;\n return dx * dx + dy * dy;\n };\n Point.prototype.negate = function () {\n this.x = -this.x;\n this.y = -this.y;\n return this;\n };\n Point.prototype.transform = function (m) {\n if (!m) {\n return;\n }\n var x = this.x;\n var y = this.y;\n this.x = m[0] * x + m[2] * y + m[4];\n this.y = m[1] * x + m[3] * y + m[5];\n return this;\n };\n Point.prototype.toArray = function (out) {\n out[0] = this.x;\n out[1] = this.y;\n return out;\n };\n Point.prototype.fromArray = function (input) {\n this.x = input[0];\n this.y = input[1];\n };\n Point.set = function (p, x, y) {\n p.x = x;\n p.y = y;\n };\n Point.copy = function (p, p2) {\n p.x = p2.x;\n p.y = p2.y;\n };\n Point.len = function (p) {\n return Math.sqrt(p.x * p.x + p.y * p.y);\n };\n Point.lenSquare = function (p) {\n return p.x * p.x + p.y * p.y;\n };\n Point.dot = function (p0, p1) {\n return p0.x * p1.x + p0.y * p1.y;\n };\n Point.add = function (out, p0, p1) {\n out.x = p0.x + p1.x;\n out.y = p0.y + p1.y;\n };\n Point.sub = function (out, p0, p1) {\n out.x = p0.x - p1.x;\n out.y = p0.y - p1.y;\n };\n Point.scale = function (out, p0, scalar) {\n out.x = p0.x * scalar;\n out.y = p0.y * scalar;\n };\n Point.scaleAndAdd = function (out, p0, p1, scalar) {\n out.x = p0.x + p1.x * scalar;\n out.y = p0.y + p1.y * scalar;\n };\n Point.lerp = function (out, p0, p1, t) {\n var onet = 1 - t;\n out.x = onet * p0.x + t * p1.x;\n out.y = onet * p0.y + t * p1.y;\n };\n return Point;\n}());\nexport default Point;\n","import * as matrix from './matrix.js';\nimport Point from './Point.js';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathAbs = Math.abs;\nvar XY = ['x', 'y'];\nvar WH = ['width', 'height'];\nvar lt = new Point();\nvar rb = new Point();\nvar lb = new Point();\nvar rt = new Point();\nvar _intersectCtx = createIntersectContext();\nvar _minTv = _intersectCtx.minTv;\nvar _maxTv = _intersectCtx.maxTv;\nvar _lenMinMax = [0, 0];\nvar BoundingRect = (function () {\n function BoundingRect(x, y, width, height) {\n BoundingRect.set(this, x, y, width, height);\n }\n BoundingRect.set = function (target, x, y, width, height) {\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n target.x = x;\n target.y = y;\n target.width = width;\n target.height = height;\n return target;\n };\n BoundingRect.prototype.union = function (other) {\n var x = mathMin(other.x, this.x);\n var y = mathMin(other.y, this.y);\n if (isFinite(this.x) && isFinite(this.width)) {\n this.width = mathMax(other.x + other.width, this.x + this.width) - x;\n }\n else {\n this.width = other.width;\n }\n if (isFinite(this.y) && isFinite(this.height)) {\n this.height = mathMax(other.y + other.height, this.y + this.height) - y;\n }\n else {\n this.height = other.height;\n }\n this.x = x;\n this.y = y;\n };\n BoundingRect.prototype.applyTransform = function (m) {\n BoundingRect.applyTransform(this, this, m);\n };\n BoundingRect.prototype.calculateTransform = function (b) {\n var a = this;\n var sx = b.width / a.width;\n var sy = b.height / a.height;\n var m = matrix.create();\n matrix.translate(m, m, [-a.x, -a.y]);\n matrix.scale(m, m, [sx, sy]);\n matrix.translate(m, m, [b.x, b.y]);\n return m;\n };\n BoundingRect.prototype.intersect = function (b, mtv, opt) {\n return BoundingRect.intersect(this, b, mtv, opt);\n };\n BoundingRect.intersect = function (a, b, mtv, opt) {\n if (mtv) {\n Point.set(mtv, 0, 0);\n }\n var outIntersectRect = opt && opt.outIntersectRect || null;\n var clamp = opt && opt.clamp;\n if (outIntersectRect) {\n outIntersectRect.x = outIntersectRect.y = outIntersectRect.width = outIntersectRect.height = NaN;\n }\n if (!a || !b) {\n return false;\n }\n if (!(a instanceof BoundingRect)) {\n a = BoundingRect.set(_tmpIntersectA, a.x, a.y, a.width, a.height);\n }\n if (!(b instanceof BoundingRect)) {\n b = BoundingRect.set(_tmpIntersectB, b.x, b.y, b.width, b.height);\n }\n var useMTV = !!mtv;\n _intersectCtx.reset(opt, useMTV);\n var touchThreshold = _intersectCtx.touchThreshold;\n var ax0 = a.x + touchThreshold;\n var ax1 = a.x + a.width - touchThreshold;\n var ay0 = a.y + touchThreshold;\n var ay1 = a.y + a.height - touchThreshold;\n var bx0 = b.x + touchThreshold;\n var bx1 = b.x + b.width - touchThreshold;\n var by0 = b.y + touchThreshold;\n var by1 = b.y + b.height - touchThreshold;\n if (ax0 > ax1 || ay0 > ay1 || bx0 > bx1 || by0 > by1) {\n return false;\n }\n var overlap = !(ax1 < bx0 || bx1 < ax0 || ay1 < by0 || by1 < ay0);\n if (useMTV || outIntersectRect) {\n _lenMinMax[0] = Infinity;\n _lenMinMax[1] = 0;\n intersectOneDim(ax0, ax1, bx0, bx1, 0, useMTV, outIntersectRect, clamp);\n intersectOneDim(ay0, ay1, by0, by1, 1, useMTV, outIntersectRect, clamp);\n if (useMTV) {\n Point.copy(mtv, overlap\n ? (_intersectCtx.useDir ? _intersectCtx.dirMinTv : _minTv)\n : _maxTv);\n }\n }\n return overlap;\n };\n BoundingRect.contain = function (rect, x, y) {\n return x >= rect.x\n && x <= (rect.x + rect.width)\n && y >= rect.y\n && y <= (rect.y + rect.height);\n };\n BoundingRect.prototype.contain = function (x, y) {\n return BoundingRect.contain(this, x, y);\n };\n BoundingRect.prototype.clone = function () {\n return new BoundingRect(this.x, this.y, this.width, this.height);\n };\n BoundingRect.prototype.copy = function (other) {\n BoundingRect.copy(this, other);\n };\n BoundingRect.prototype.plain = function () {\n return {\n x: this.x,\n y: this.y,\n width: this.width,\n height: this.height\n };\n };\n BoundingRect.prototype.isFinite = function () {\n return isFinite(this.x)\n && isFinite(this.y)\n && isFinite(this.width)\n && isFinite(this.height);\n };\n BoundingRect.prototype.isZero = function () {\n return this.width === 0 || this.height === 0;\n };\n BoundingRect.create = function (rect) {\n return new BoundingRect(rect.x, rect.y, rect.width, rect.height);\n };\n BoundingRect.copy = function (target, source) {\n target.x = source.x;\n target.y = source.y;\n target.width = source.width;\n target.height = source.height;\n return target;\n };\n BoundingRect.applyTransform = function (target, source, m) {\n if (!m) {\n if (target !== source) {\n BoundingRect.copy(target, source);\n }\n return;\n }\n if (m[1] < 1e-5 && m[1] > -1e-5 && m[2] < 1e-5 && m[2] > -1e-5) {\n var sx = m[0];\n var sy = m[3];\n var tx = m[4];\n var ty = m[5];\n target.x = source.x * sx + tx;\n target.y = source.y * sy + ty;\n target.width = source.width * sx;\n target.height = source.height * sy;\n if (target.width < 0) {\n target.x += target.width;\n target.width = -target.width;\n }\n if (target.height < 0) {\n target.y += target.height;\n target.height = -target.height;\n }\n return;\n }\n lt.x = lb.x = source.x;\n lt.y = rt.y = source.y;\n rb.x = rt.x = source.x + source.width;\n rb.y = lb.y = source.y + source.height;\n lt.transform(m);\n rt.transform(m);\n rb.transform(m);\n lb.transform(m);\n target.x = mathMin(lt.x, rb.x, lb.x, rt.x);\n target.y = mathMin(lt.y, rb.y, lb.y, rt.y);\n var maxX = mathMax(lt.x, rb.x, lb.x, rt.x);\n var maxY = mathMax(lt.y, rb.y, lb.y, rt.y);\n target.width = maxX - target.x;\n target.height = maxY - target.y;\n };\n return BoundingRect;\n}());\nvar _tmpIntersectA = new BoundingRect(0, 0, 0, 0);\nvar _tmpIntersectB = new BoundingRect(0, 0, 0, 0);\nfunction intersectOneDim(a0, a1, b0, b1, updateDimIdx, useMTV, outIntersectRect, clamp) {\n var d0 = mathAbs(a1 - b0);\n var d1 = mathAbs(b1 - a0);\n var d01min = mathMin(d0, d1);\n var updateDim = XY[updateDimIdx];\n var zeroDim = XY[1 - updateDimIdx];\n var wh = WH[updateDimIdx];\n if (a1 < b0 || b1 < a0) {\n if (d0 < d1) {\n if (useMTV) {\n _maxTv[updateDim] = -d0;\n }\n if (clamp) {\n outIntersectRect[updateDim] = a1;\n outIntersectRect[wh] = 0;\n }\n }\n else {\n if (useMTV) {\n _maxTv[updateDim] = d1;\n }\n if (clamp) {\n outIntersectRect[updateDim] = a0;\n outIntersectRect[wh] = 0;\n }\n }\n }\n else {\n if (outIntersectRect) {\n outIntersectRect[updateDim] = mathMax(a0, b0);\n outIntersectRect[wh] = mathMin(a1, b1) - outIntersectRect[updateDim];\n }\n if (useMTV) {\n if (d01min < _lenMinMax[0] || _intersectCtx.useDir) {\n _lenMinMax[0] = mathMin(d01min, _lenMinMax[0]);\n if (d0 < d1 || !_intersectCtx.bidirectional) {\n _minTv[updateDim] = d0;\n _minTv[zeroDim] = 0;\n if (_intersectCtx.useDir) {\n _intersectCtx.calcDirMTV();\n }\n }\n if (d0 >= d1 || !_intersectCtx.bidirectional) {\n _minTv[updateDim] = -d1;\n _minTv[zeroDim] = 0;\n if (_intersectCtx.useDir) {\n _intersectCtx.calcDirMTV();\n }\n }\n }\n }\n }\n}\nexport function createIntersectContext() {\n var _direction = 0;\n var _dirCheckVec = new Point();\n var _dirTmp = new Point();\n var _ctx = {\n minTv: new Point(),\n maxTv: new Point(),\n useDir: false,\n dirMinTv: new Point(),\n touchThreshold: 0,\n bidirectional: true,\n negativeSize: false,\n reset: function (opt, useMTV) {\n _ctx.touchThreshold = 0;\n if (opt && opt.touchThreshold != null) {\n _ctx.touchThreshold = mathMax(0, opt.touchThreshold);\n }\n _ctx.negativeSize = false;\n if (!useMTV) {\n return;\n }\n _ctx.minTv.set(Infinity, Infinity);\n _ctx.maxTv.set(0, 0);\n _ctx.useDir = false;\n if (opt && opt.direction != null) {\n _ctx.useDir = true;\n _ctx.dirMinTv.copy(_ctx.minTv);\n _dirTmp.copy(_ctx.minTv);\n _direction = opt.direction;\n _ctx.bidirectional = opt.bidirectional == null || !!opt.bidirectional;\n if (!_ctx.bidirectional) {\n _dirCheckVec.set(Math.cos(_direction), Math.sin(_direction));\n }\n }\n },\n calcDirMTV: function () {\n var minTv = _ctx.minTv;\n var dirMinTv = _ctx.dirMinTv;\n var squareMag = minTv.y * minTv.y + minTv.x * minTv.x;\n var dirSin = Math.sin(_direction);\n var dirCos = Math.cos(_direction);\n var dotProd = dirSin * minTv.y + dirCos * minTv.x;\n if (nearZero(dotProd)) {\n if (nearZero(minTv.x) && nearZero(minTv.y)) {\n dirMinTv.set(0, 0);\n }\n return;\n }\n _dirTmp.x = squareMag * dirCos / dotProd;\n _dirTmp.y = squareMag * dirSin / dotProd;\n if (nearZero(_dirTmp.x) && nearZero(_dirTmp.y)) {\n dirMinTv.set(0, 0);\n return;\n }\n if ((_ctx.bidirectional\n || _dirCheckVec.dot(_dirTmp) > 0)\n && _dirTmp.len() < dirMinTv.len()) {\n dirMinTv.copy(_dirTmp);\n }\n }\n };\n function nearZero(val) {\n return mathAbs(val) < 1e-10;\n }\n return _ctx;\n}\nexport default BoundingRect;\n","import BoundingRect from '../core/BoundingRect.js';\nimport LRU from '../core/LRU.js';\nimport { DEFAULT_FONT, platformApi } from '../core/platform.js';\nexport function getWidth(text, font) {\n return measureWidth(ensureFontMeasureInfo(font), text);\n}\nexport function ensureFontMeasureInfo(font) {\n if (!_fontMeasureInfoCache) {\n _fontMeasureInfoCache = new LRU(100);\n }\n font = font || DEFAULT_FONT;\n var measureInfo = _fontMeasureInfoCache.get(font);\n if (!measureInfo) {\n measureInfo = {\n font: font,\n strWidthCache: new LRU(500),\n asciiWidthMap: null,\n asciiWidthMapTried: false,\n stWideCharWidth: platformApi.measureText('国', font).width,\n asciiCharWidth: platformApi.measureText('a', font).width\n };\n _fontMeasureInfoCache.put(font, measureInfo);\n }\n return measureInfo;\n}\nvar _fontMeasureInfoCache;\nfunction tryCreateASCIIWidthMap(font) {\n if (_getASCIIWidthMapLongCount >= GET_ASCII_WIDTH_LONG_COUNT_MAX) {\n return;\n }\n font = font || DEFAULT_FONT;\n var asciiWidthMap = [];\n var start = +(new Date());\n for (var code = 0; code <= 127; code++) {\n asciiWidthMap[code] = platformApi.measureText(String.fromCharCode(code), font).width;\n }\n var cost = +(new Date()) - start;\n if (cost > 16) {\n _getASCIIWidthMapLongCount = GET_ASCII_WIDTH_LONG_COUNT_MAX;\n }\n else if (cost > 2) {\n _getASCIIWidthMapLongCount++;\n }\n return asciiWidthMap;\n}\nvar _getASCIIWidthMapLongCount = 0;\nvar GET_ASCII_WIDTH_LONG_COUNT_MAX = 5;\nexport function measureCharWidth(fontMeasureInfo, charCode) {\n if (!fontMeasureInfo.asciiWidthMapTried) {\n fontMeasureInfo.asciiWidthMap = tryCreateASCIIWidthMap(fontMeasureInfo.font);\n fontMeasureInfo.asciiWidthMapTried = true;\n }\n return (0 <= charCode && charCode <= 127)\n ? (fontMeasureInfo.asciiWidthMap != null\n ? fontMeasureInfo.asciiWidthMap[charCode]\n : fontMeasureInfo.asciiCharWidth)\n : fontMeasureInfo.stWideCharWidth;\n}\nexport function measureWidth(fontMeasureInfo, text) {\n var strWidthCache = fontMeasureInfo.strWidthCache;\n var width = strWidthCache.get(text);\n if (width == null) {\n width = platformApi.measureText(text, fontMeasureInfo.font).width;\n strWidthCache.put(text, width);\n }\n return width;\n}\nexport function innerGetBoundingRect(text, font, textAlign, textBaseline) {\n var width = measureWidth(ensureFontMeasureInfo(font), text);\n var height = getLineHeight(font);\n var x = adjustTextX(0, width, textAlign);\n var y = adjustTextY(0, height, textBaseline);\n var rect = new BoundingRect(x, y, width, height);\n return rect;\n}\nexport function getBoundingRect(text, font, textAlign, textBaseline) {\n var textLines = ((text || '') + '').split('\\n');\n var len = textLines.length;\n if (len === 1) {\n return innerGetBoundingRect(textLines[0], font, textAlign, textBaseline);\n }\n else {\n var uniondRect = new BoundingRect(0, 0, 0, 0);\n for (var i = 0; i < textLines.length; i++) {\n var rect = innerGetBoundingRect(textLines[i], font, textAlign, textBaseline);\n i === 0 ? uniondRect.copy(rect) : uniondRect.union(rect);\n }\n return uniondRect;\n }\n}\nexport function adjustTextX(x, width, textAlign, inverse) {\n if (textAlign === 'right') {\n !inverse ? (x -= width) : (x += width);\n }\n else if (textAlign === 'center') {\n !inverse ? (x -= width / 2) : (x += width / 2);\n }\n return x;\n}\nexport function adjustTextY(y, height, verticalAlign, inverse) {\n if (verticalAlign === 'middle') {\n !inverse ? (y -= height / 2) : (y += height / 2);\n }\n else if (verticalAlign === 'bottom') {\n !inverse ? (y -= height) : (y += height);\n }\n return y;\n}\nexport function getLineHeight(font) {\n return ensureFontMeasureInfo(font).stWideCharWidth;\n}\nexport function measureText(text, font) {\n return platformApi.measureText(text, font);\n}\nexport function parsePercent(value, maxValue) {\n if (typeof value === 'string') {\n if (value.lastIndexOf('%') >= 0) {\n return parseFloat(value) / 100 * maxValue;\n }\n return parseFloat(value);\n }\n return value;\n}\nexport function calculateTextPosition(out, opts, rect) {\n var textPosition = opts.position || 'inside';\n var distance = opts.distance != null ? opts.distance : 5;\n var height = rect.height;\n var width = rect.width;\n var halfHeight = height / 2;\n var x = rect.x;\n var y = rect.y;\n var textAlign = 'left';\n var textVerticalAlign = 'top';\n if (textPosition instanceof Array) {\n x += parsePercent(textPosition[0], rect.width);\n y += parsePercent(textPosition[1], rect.height);\n textAlign = null;\n textVerticalAlign = null;\n }\n else {\n switch (textPosition) {\n case 'left':\n x -= distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n case 'right':\n x += distance + width;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n case 'top':\n x += width / 2;\n y -= distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n case 'bottom':\n x += width / 2;\n y += height + distance;\n textAlign = 'center';\n break;\n case 'inside':\n x += width / 2;\n y += halfHeight;\n textAlign = 'center';\n textVerticalAlign = 'middle';\n break;\n case 'insideLeft':\n x += distance;\n y += halfHeight;\n textVerticalAlign = 'middle';\n break;\n case 'insideRight':\n x += width - distance;\n y += halfHeight;\n textAlign = 'right';\n textVerticalAlign = 'middle';\n break;\n case 'insideTop':\n x += width / 2;\n y += distance;\n textAlign = 'center';\n break;\n case 'insideBottom':\n x += width / 2;\n y += height - distance;\n textAlign = 'center';\n textVerticalAlign = 'bottom';\n break;\n case 'insideTopLeft':\n x += distance;\n y += distance;\n break;\n case 'insideTopRight':\n x += width - distance;\n y += distance;\n textAlign = 'right';\n break;\n case 'insideBottomLeft':\n x += distance;\n y += height - distance;\n textVerticalAlign = 'bottom';\n break;\n case 'insideBottomRight':\n x += width - distance;\n y += height - distance;\n textAlign = 'right';\n textVerticalAlign = 'bottom';\n break;\n }\n }\n out = out || {};\n out.x = x;\n out.y = y;\n out.align = textAlign;\n out.verticalAlign = textVerticalAlign;\n return out;\n}\n","import * as imageHelper from '../helper/image.js';\nimport { extend, retrieve2, retrieve3, reduce, } from '../../core/util.js';\nimport { adjustTextX, adjustTextY, ensureFontMeasureInfo, getLineHeight, measureCharWidth, measureWidth, parsePercent, } from '../../contain/text.js';\nimport BoundingRect from '../../core/BoundingRect.js';\nvar STYLE_REG = /\\{([a-zA-Z0-9_]+)\\|([^}]*)\\}/g;\nexport function truncateText(text, containerWidth, font, ellipsis, options) {\n var out = {};\n truncateText2(out, text, containerWidth, font, ellipsis, options);\n return out.text;\n}\nfunction truncateText2(out, text, containerWidth, font, ellipsis, options) {\n if (!containerWidth) {\n out.text = '';\n out.isTruncated = false;\n return;\n }\n var textLines = (text + '').split('\\n');\n options = prepareTruncateOptions(containerWidth, font, ellipsis, options);\n var isTruncated = false;\n var truncateOut = {};\n for (var i = 0, len = textLines.length; i < len; i++) {\n truncateSingleLine(truncateOut, textLines[i], options);\n textLines[i] = truncateOut.textLine;\n isTruncated = isTruncated || truncateOut.isTruncated;\n }\n out.text = textLines.join('\\n');\n out.isTruncated = isTruncated;\n}\nfunction prepareTruncateOptions(containerWidth, font, ellipsis, options) {\n options = options || {};\n var preparedOpts = extend({}, options);\n ellipsis = retrieve2(ellipsis, '...');\n preparedOpts.maxIterations = retrieve2(options.maxIterations, 2);\n var minChar = preparedOpts.minChar = retrieve2(options.minChar, 0);\n var fontMeasureInfo = preparedOpts.fontMeasureInfo = ensureFontMeasureInfo(font);\n var ascCharWidth = fontMeasureInfo.asciiCharWidth;\n preparedOpts.placeholder = retrieve2(options.placeholder, '');\n var contentWidth = containerWidth = Math.max(0, containerWidth - 1);\n for (var i = 0; i < minChar && contentWidth >= ascCharWidth; i++) {\n contentWidth -= ascCharWidth;\n }\n var ellipsisWidth = measureWidth(fontMeasureInfo, ellipsis);\n if (ellipsisWidth > contentWidth) {\n ellipsis = '';\n ellipsisWidth = 0;\n }\n contentWidth = containerWidth - ellipsisWidth;\n preparedOpts.ellipsis = ellipsis;\n preparedOpts.ellipsisWidth = ellipsisWidth;\n preparedOpts.contentWidth = contentWidth;\n preparedOpts.containerWidth = containerWidth;\n return preparedOpts;\n}\nfunction truncateSingleLine(out, textLine, options) {\n var containerWidth = options.containerWidth;\n var contentWidth = options.contentWidth;\n var fontMeasureInfo = options.fontMeasureInfo;\n if (!containerWidth) {\n out.textLine = '';\n out.isTruncated = false;\n return;\n }\n var lineWidth = measureWidth(fontMeasureInfo, textLine);\n if (lineWidth <= containerWidth) {\n out.textLine = textLine;\n out.isTruncated = false;\n return;\n }\n for (var j = 0;; j++) {\n if (lineWidth <= contentWidth || j >= options.maxIterations) {\n textLine += options.ellipsis;\n break;\n }\n var subLength = j === 0\n ? estimateLength(textLine, contentWidth, fontMeasureInfo)\n : lineWidth > 0\n ? Math.floor(textLine.length * contentWidth / lineWidth)\n : 0;\n textLine = textLine.substr(0, subLength);\n lineWidth = measureWidth(fontMeasureInfo, textLine);\n }\n if (textLine === '') {\n textLine = options.placeholder;\n }\n out.textLine = textLine;\n out.isTruncated = true;\n}\nfunction estimateLength(text, contentWidth, fontMeasureInfo) {\n var width = 0;\n var i = 0;\n for (var len = text.length; i < len && width < contentWidth; i++) {\n width += measureCharWidth(fontMeasureInfo, text.charCodeAt(i));\n }\n return i;\n}\nexport function parsePlainText(rawText, style, defaultOuterWidth, defaultOuterHeight) {\n var text = formatText(rawText);\n var overflow = style.overflow;\n var padding = style.padding;\n var paddingH = padding ? padding[1] + padding[3] : 0;\n var paddingV = padding ? padding[0] + padding[2] : 0;\n var font = style.font;\n var truncate = overflow === 'truncate';\n var calculatedLineHeight = getLineHeight(font);\n var lineHeight = retrieve2(style.lineHeight, calculatedLineHeight);\n var truncateLineOverflow = style.lineOverflow === 'truncate';\n var isTruncated = false;\n var width = style.width;\n if (width == null && defaultOuterWidth != null) {\n width = defaultOuterWidth - paddingH;\n }\n var height = style.height;\n if (height == null && defaultOuterHeight != null) {\n height = defaultOuterHeight - paddingV;\n }\n var lines;\n if (width != null && (overflow === 'break' || overflow === 'breakAll')) {\n lines = text ? wrapText(text, style.font, width, overflow === 'breakAll', 0).lines : [];\n }\n else {\n lines = text ? text.split('\\n') : [];\n }\n var contentHeight = lines.length * lineHeight;\n if (height == null) {\n height = contentHeight;\n }\n if (contentHeight > height && truncateLineOverflow) {\n var lineCount = Math.floor(height / lineHeight);\n isTruncated = isTruncated || (lines.length > lineCount);\n lines = lines.slice(0, lineCount);\n contentHeight = lines.length * lineHeight;\n }\n if (text && truncate && width != null) {\n var options = prepareTruncateOptions(width, font, style.ellipsis, {\n minChar: style.truncateMinChar,\n placeholder: style.placeholder\n });\n var singleOut = {};\n for (var i = 0; i < lines.length; i++) {\n truncateSingleLine(singleOut, lines[i], options);\n lines[i] = singleOut.textLine;\n isTruncated = isTruncated || singleOut.isTruncated;\n }\n }\n var outerHeight = height;\n var contentWidth = 0;\n var fontMeasureInfo = ensureFontMeasureInfo(font);\n for (var i = 0; i < lines.length; i++) {\n contentWidth = Math.max(measureWidth(fontMeasureInfo, lines[i]), contentWidth);\n }\n if (width == null) {\n width = contentWidth;\n }\n var outerWidth = width;\n outerHeight += paddingV;\n outerWidth += paddingH;\n return {\n lines: lines,\n height: height,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n lineHeight: lineHeight,\n calculatedLineHeight: calculatedLineHeight,\n contentWidth: contentWidth,\n contentHeight: contentHeight,\n width: width,\n isTruncated: isTruncated\n };\n}\nvar RichTextToken = (function () {\n function RichTextToken() {\n }\n return RichTextToken;\n}());\nvar RichTextLine = (function () {\n function RichTextLine(tokens) {\n this.tokens = [];\n if (tokens) {\n this.tokens = tokens;\n }\n }\n return RichTextLine;\n}());\nvar RichTextContentBlock = (function () {\n function RichTextContentBlock() {\n this.width = 0;\n this.height = 0;\n this.contentWidth = 0;\n this.contentHeight = 0;\n this.outerWidth = 0;\n this.outerHeight = 0;\n this.lines = [];\n this.isTruncated = false;\n }\n return RichTextContentBlock;\n}());\nexport { RichTextContentBlock };\nexport function parseRichText(rawText, style, defaultOuterWidth, defaultOuterHeight, topTextAlign) {\n var contentBlock = new RichTextContentBlock();\n var text = formatText(rawText);\n if (!text) {\n return contentBlock;\n }\n var stlPadding = style.padding;\n var stlPaddingH = stlPadding ? stlPadding[1] + stlPadding[3] : 0;\n var stlPaddingV = stlPadding ? stlPadding[0] + stlPadding[2] : 0;\n var topWidth = style.width;\n if (topWidth == null && defaultOuterWidth != null) {\n topWidth = defaultOuterWidth - stlPaddingH;\n }\n var topHeight = style.height;\n if (topHeight == null && defaultOuterHeight != null) {\n topHeight = defaultOuterHeight - stlPaddingV;\n }\n var overflow = style.overflow;\n var wrapInfo = (overflow === 'break' || overflow === 'breakAll') && topWidth != null\n ? { width: topWidth, accumWidth: 0, breakAll: overflow === 'breakAll' }\n : null;\n var lastIndex = STYLE_REG.lastIndex = 0;\n var result;\n while ((result = STYLE_REG.exec(text)) != null) {\n var matchedIndex = result.index;\n if (matchedIndex > lastIndex) {\n pushTokens(contentBlock, text.substring(lastIndex, matchedIndex), style, wrapInfo);\n }\n pushTokens(contentBlock, result[2], style, wrapInfo, result[1]);\n lastIndex = STYLE_REG.lastIndex;\n }\n if (lastIndex < text.length) {\n pushTokens(contentBlock, text.substring(lastIndex, text.length), style, wrapInfo);\n }\n var pendingList = [];\n var calculatedHeight = 0;\n var calculatedWidth = 0;\n var truncate = overflow === 'truncate';\n var truncateLine = style.lineOverflow === 'truncate';\n var tmpTruncateOut = {};\n function finishLine(line, lineWidth, lineHeight) {\n line.width = lineWidth;\n line.lineHeight = lineHeight;\n calculatedHeight += lineHeight;\n calculatedWidth = Math.max(calculatedWidth, lineWidth);\n }\n outer: for (var i = 0; i < contentBlock.lines.length; i++) {\n var line = contentBlock.lines[i];\n var lineHeight = 0;\n var lineWidth = 0;\n for (var j = 0; j < line.tokens.length; j++) {\n var token = line.tokens[j];\n var tokenStyle = token.styleName && style.rich[token.styleName] || {};\n var textPadding = token.textPadding = tokenStyle.padding;\n var paddingH = textPadding ? textPadding[1] + textPadding[3] : 0;\n var font = token.font = tokenStyle.font || style.font;\n token.contentHeight = getLineHeight(font);\n var tokenHeight = retrieve2(tokenStyle.height, token.contentHeight);\n token.innerHeight = tokenHeight;\n textPadding && (tokenHeight += textPadding[0] + textPadding[2]);\n token.height = tokenHeight;\n token.lineHeight = retrieve3(tokenStyle.lineHeight, style.lineHeight, tokenHeight);\n token.align = tokenStyle && tokenStyle.align || topTextAlign;\n token.verticalAlign = tokenStyle && tokenStyle.verticalAlign || 'middle';\n if (truncateLine && topHeight != null && calculatedHeight + token.lineHeight > topHeight) {\n var originalLength = contentBlock.lines.length;\n if (j > 0) {\n line.tokens = line.tokens.slice(0, j);\n finishLine(line, lineWidth, lineHeight);\n contentBlock.lines = contentBlock.lines.slice(0, i + 1);\n }\n else {\n contentBlock.lines = contentBlock.lines.slice(0, i);\n }\n contentBlock.isTruncated = contentBlock.isTruncated || (contentBlock.lines.length < originalLength);\n break outer;\n }\n var styleTokenWidth = tokenStyle.width;\n var tokenWidthNotSpecified = styleTokenWidth == null || styleTokenWidth === 'auto';\n if (typeof styleTokenWidth === 'string' && styleTokenWidth.charAt(styleTokenWidth.length - 1) === '%') {\n token.percentWidth = styleTokenWidth;\n pendingList.push(token);\n token.contentWidth = measureWidth(ensureFontMeasureInfo(font), token.text);\n }\n else {\n if (tokenWidthNotSpecified) {\n var textBackgroundColor = tokenStyle.backgroundColor;\n var bgImg = textBackgroundColor && textBackgroundColor.image;\n if (bgImg) {\n bgImg = imageHelper.findExistImage(bgImg);\n if (imageHelper.isImageReady(bgImg)) {\n token.width = Math.max(token.width, bgImg.width * tokenHeight / bgImg.height);\n }\n }\n }\n var remainTruncWidth = truncate && topWidth != null\n ? topWidth - lineWidth : null;\n if (remainTruncWidth != null && remainTruncWidth < token.width) {\n if (!tokenWidthNotSpecified || remainTruncWidth < paddingH) {\n token.text = '';\n token.width = token.contentWidth = 0;\n }\n else {\n truncateText2(tmpTruncateOut, token.text, remainTruncWidth - paddingH, font, style.ellipsis, { minChar: style.truncateMinChar });\n token.text = tmpTruncateOut.text;\n contentBlock.isTruncated = contentBlock.isTruncated || tmpTruncateOut.isTruncated;\n token.width = token.contentWidth = measureWidth(ensureFontMeasureInfo(font), token.text);\n }\n }\n else {\n token.contentWidth = measureWidth(ensureFontMeasureInfo(font), token.text);\n }\n }\n token.width += paddingH;\n lineWidth += token.width;\n tokenStyle && (lineHeight = Math.max(lineHeight, token.lineHeight));\n }\n finishLine(line, lineWidth, lineHeight);\n }\n contentBlock.outerWidth = contentBlock.width = retrieve2(topWidth, calculatedWidth);\n contentBlock.outerHeight = contentBlock.height = retrieve2(topHeight, calculatedHeight);\n contentBlock.contentHeight = calculatedHeight;\n contentBlock.contentWidth = calculatedWidth;\n contentBlock.outerWidth += stlPaddingH;\n contentBlock.outerHeight += stlPaddingV;\n for (var i = 0; i < pendingList.length; i++) {\n var token = pendingList[i];\n var percentWidth = token.percentWidth;\n token.width = parseInt(percentWidth, 10) / 100 * contentBlock.width;\n }\n return contentBlock;\n}\nfunction pushTokens(block, str, style, wrapInfo, styleName) {\n var isEmptyStr = str === '';\n var tokenStyle = styleName && style.rich[styleName] || {};\n var lines = block.lines;\n var font = tokenStyle.font || style.font;\n var newLine = false;\n var strLines;\n var linesWidths;\n if (wrapInfo) {\n var tokenPadding = tokenStyle.padding;\n var tokenPaddingH = tokenPadding ? tokenPadding[1] + tokenPadding[3] : 0;\n if (tokenStyle.width != null && tokenStyle.width !== 'auto') {\n var outerWidth_1 = parsePercent(tokenStyle.width, wrapInfo.width) + tokenPaddingH;\n if (lines.length > 0) {\n if (outerWidth_1 + wrapInfo.accumWidth > wrapInfo.width) {\n strLines = str.split('\\n');\n newLine = true;\n }\n }\n wrapInfo.accumWidth = outerWidth_1;\n }\n else {\n var res = wrapText(str, font, wrapInfo.width, wrapInfo.breakAll, wrapInfo.accumWidth);\n wrapInfo.accumWidth = res.accumWidth + tokenPaddingH;\n linesWidths = res.linesWidths;\n strLines = res.lines;\n }\n }\n if (!strLines) {\n strLines = str.split('\\n');\n }\n var fontMeasureInfo = ensureFontMeasureInfo(font);\n for (var i = 0; i < strLines.length; i++) {\n var text = strLines[i];\n var token = new RichTextToken();\n token.styleName = styleName;\n token.text = text;\n token.isLineHolder = !text && !isEmptyStr;\n if (typeof tokenStyle.width === 'number') {\n token.width = tokenStyle.width;\n }\n else {\n token.width = linesWidths\n ? linesWidths[i]\n : measureWidth(fontMeasureInfo, text);\n }\n if (!i && !newLine) {\n var tokens = (lines[lines.length - 1] || (lines[0] = new RichTextLine())).tokens;\n var tokensLen = tokens.length;\n (tokensLen === 1 && tokens[0].isLineHolder)\n ? (tokens[0] = token)\n : ((text || !tokensLen || isEmptyStr) && tokens.push(token));\n }\n else {\n lines.push(new RichTextLine([token]));\n }\n }\n}\nfunction isAlphabeticLetter(ch) {\n var code = ch.charCodeAt(0);\n return code >= 0x20 && code <= 0x24F\n || code >= 0x370 && code <= 0x10FF\n || code >= 0x1200 && code <= 0x13FF\n || code >= 0x1E00 && code <= 0x206F;\n}\nvar breakCharMap = reduce(',&?/;] '.split(''), function (obj, ch) {\n obj[ch] = true;\n return obj;\n}, {});\nfunction isWordBreakChar(ch) {\n if (isAlphabeticLetter(ch)) {\n if (breakCharMap[ch]) {\n return true;\n }\n return false;\n }\n return true;\n}\nfunction wrapText(text, font, lineWidth, isBreakAll, lastAccumWidth) {\n var lines = [];\n var linesWidths = [];\n var line = '';\n var currentWord = '';\n var currentWordWidth = 0;\n var accumWidth = 0;\n var fontMeasureInfo = ensureFontMeasureInfo(font);\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch === '\\n') {\n if (currentWord) {\n line += currentWord;\n accumWidth += currentWordWidth;\n }\n lines.push(line);\n linesWidths.push(accumWidth);\n line = '';\n currentWord = '';\n currentWordWidth = 0;\n accumWidth = 0;\n continue;\n }\n var chWidth = measureCharWidth(fontMeasureInfo, ch.charCodeAt(0));\n var inWord = isBreakAll ? false : !isWordBreakChar(ch);\n if (!lines.length\n ? lastAccumWidth + accumWidth + chWidth > lineWidth\n : accumWidth + chWidth > lineWidth) {\n if (!accumWidth) {\n if (inWord) {\n lines.push(currentWord);\n linesWidths.push(currentWordWidth);\n currentWord = ch;\n currentWordWidth = chWidth;\n }\n else {\n lines.push(ch);\n linesWidths.push(chWidth);\n }\n }\n else if (line || currentWord) {\n if (inWord) {\n if (!line) {\n line = currentWord;\n currentWord = '';\n currentWordWidth = 0;\n accumWidth = currentWordWidth;\n }\n lines.push(line);\n linesWidths.push(accumWidth - currentWordWidth);\n currentWord += ch;\n currentWordWidth += chWidth;\n line = '';\n accumWidth = currentWordWidth;\n }\n else {\n if (currentWord) {\n line += currentWord;\n currentWord = '';\n currentWordWidth = 0;\n }\n lines.push(line);\n linesWidths.push(accumWidth);\n line = ch;\n accumWidth = chWidth;\n }\n }\n continue;\n }\n accumWidth += chWidth;\n if (inWord) {\n currentWord += ch;\n currentWordWidth += chWidth;\n }\n else {\n if (currentWord) {\n line += currentWord;\n currentWord = '';\n currentWordWidth = 0;\n }\n line += ch;\n }\n }\n if (currentWord) {\n line += currentWord;\n }\n if (line) {\n lines.push(line);\n linesWidths.push(accumWidth);\n }\n if (lines.length === 1) {\n accumWidth += lastAccumWidth;\n }\n return {\n accumWidth: accumWidth,\n lines: lines,\n linesWidths: linesWidths\n };\n}\nexport function calcInnerTextOverflowArea(out, overflowRect, baseX, baseY, textAlign, textVerticalAlign) {\n out.baseX = baseX;\n out.baseY = baseY;\n out.outerWidth = out.outerHeight = null;\n if (!overflowRect) {\n return;\n }\n var textWidth = overflowRect.width * 2;\n var textHeight = overflowRect.height * 2;\n BoundingRect.set(tmpCITCTextRect, adjustTextX(baseX, textWidth, textAlign), adjustTextY(baseY, textHeight, textVerticalAlign), textWidth, textHeight);\n BoundingRect.intersect(overflowRect, tmpCITCTextRect, null, tmpCITCIntersectRectOpt);\n var outIntersectRect = tmpCITCIntersectRectOpt.outIntersectRect;\n out.outerWidth = outIntersectRect.width;\n out.outerHeight = outIntersectRect.height;\n out.baseX = adjustTextX(outIntersectRect.x, outIntersectRect.width, textAlign, true);\n out.baseY = adjustTextY(outIntersectRect.y, outIntersectRect.height, textVerticalAlign, true);\n}\nvar tmpCITCTextRect = new BoundingRect(0, 0, 0, 0);\nvar tmpCITCIntersectRectOpt = { outIntersectRect: {}, clamp: true };\nfunction formatText(text) {\n return text != null ? (text += '') : (text = '');\n}\nexport function tSpanCreateBoundingRect(style) {\n var text = formatText(style.text);\n var font = style.font;\n var contentWidth = measureWidth(ensureFontMeasureInfo(font), text);\n var contentHeight = getLineHeight(font);\n return tSpanCreateBoundingRect2(style, contentWidth, contentHeight, null);\n}\nexport function tSpanCreateBoundingRect2(style, contentWidth, contentHeight, forceLineWidth) {\n var rect = new BoundingRect(adjustTextX(style.x || 0, contentWidth, style.textAlign), adjustTextY(style.y || 0, contentHeight, style.textBaseline), contentWidth, contentHeight);\n var lineWidth = forceLineWidth != null\n ? forceLineWidth\n : (tSpanHasStroke(style) ? style.lineWidth : 0);\n if (lineWidth > 0) {\n rect.x -= lineWidth / 2;\n rect.y -= lineWidth / 2;\n rect.width += lineWidth;\n rect.height += lineWidth;\n }\n return rect;\n}\nexport function tSpanHasStroke(style) {\n var stroke = style.stroke;\n return stroke != null && stroke !== 'none' && style.lineWidth > 0;\n}\n","export function create(x, y) {\n if (x == null) {\n x = 0;\n }\n if (y == null) {\n y = 0;\n }\n return [x, y];\n}\nexport function copy(out, v) {\n out[0] = v[0];\n out[1] = v[1];\n return out;\n}\nexport function clone(v) {\n return [v[0], v[1]];\n}\nexport function set(out, a, b) {\n out[0] = a;\n out[1] = b;\n return out;\n}\nexport function add(out, v1, v2) {\n out[0] = v1[0] + v2[0];\n out[1] = v1[1] + v2[1];\n return out;\n}\nexport function scaleAndAdd(out, v1, v2, a) {\n out[0] = v1[0] + v2[0] * a;\n out[1] = v1[1] + v2[1] * a;\n return out;\n}\nexport function sub(out, v1, v2) {\n out[0] = v1[0] - v2[0];\n out[1] = v1[1] - v2[1];\n return out;\n}\nexport function len(v) {\n return Math.sqrt(lenSquare(v));\n}\nexport var length = len;\nexport function lenSquare(v) {\n return v[0] * v[0] + v[1] * v[1];\n}\nexport var lengthSquare = lenSquare;\nexport function mul(out, v1, v2) {\n out[0] = v1[0] * v2[0];\n out[1] = v1[1] * v2[1];\n return out;\n}\nexport function div(out, v1, v2) {\n out[0] = v1[0] / v2[0];\n out[1] = v1[1] / v2[1];\n return out;\n}\nexport function dot(v1, v2) {\n return v1[0] * v2[0] + v1[1] * v2[1];\n}\nexport function scale(out, v, s) {\n out[0] = v[0] * s;\n out[1] = v[1] * s;\n return out;\n}\nexport function normalize(out, v) {\n var d = len(v);\n if (d === 0) {\n out[0] = 0;\n out[1] = 0;\n }\n else {\n out[0] = v[0] / d;\n out[1] = v[1] / d;\n }\n return out;\n}\nexport function distance(v1, v2) {\n return Math.sqrt((v1[0] - v2[0]) * (v1[0] - v2[0])\n + (v1[1] - v2[1]) * (v1[1] - v2[1]));\n}\nexport var dist = distance;\nexport function distanceSquare(v1, v2) {\n return (v1[0] - v2[0]) * (v1[0] - v2[0])\n + (v1[1] - v2[1]) * (v1[1] - v2[1]);\n}\nexport var distSquare = distanceSquare;\nexport function negate(out, v) {\n out[0] = -v[0];\n out[1] = -v[1];\n return out;\n}\nexport function lerp(out, v1, v2, t) {\n out[0] = v1[0] + t * (v2[0] - v1[0]);\n out[1] = v1[1] + t * (v2[1] - v1[1]);\n return out;\n}\nexport function applyTransform(out, v, m) {\n var x = v[0];\n var y = v[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\nexport function min(out, v1, v2) {\n out[0] = Math.min(v1[0], v2[0]);\n out[1] = Math.min(v1[1], v2[1]);\n return out;\n}\nexport function max(out, v1, v2) {\n out[0] = Math.max(v1[0], v2[0]);\n out[1] = Math.max(v1[1], v2[1]);\n return out;\n}\n","import * as matrix from './matrix.js';\nimport * as vector from './vector.js';\nvar mIdentity = matrix.identity;\nvar EPSILON = 5e-5;\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\nvar scaleTmp = [];\nvar tmpTransform = [];\nvar originTransform = matrix.create();\nvar abs = Math.abs;\nvar Transformable = (function () {\n function Transformable() {\n }\n Transformable.prototype.getLocalTransform = function (m) {\n return Transformable.getLocalTransform(this, m);\n };\n Transformable.prototype.setPosition = function (arr) {\n this.x = arr[0];\n this.y = arr[1];\n };\n Transformable.prototype.setScale = function (arr) {\n this.scaleX = arr[0];\n this.scaleY = arr[1];\n };\n Transformable.prototype.setSkew = function (arr) {\n this.skewX = arr[0];\n this.skewY = arr[1];\n };\n Transformable.prototype.setOrigin = function (arr) {\n this.originX = arr[0];\n this.originY = arr[1];\n };\n Transformable.prototype.needLocalTransform = function () {\n return isNotAroundZero(this.rotation)\n || isNotAroundZero(this.x)\n || isNotAroundZero(this.y)\n || isNotAroundZero(this.scaleX - 1)\n || isNotAroundZero(this.scaleY - 1)\n || isNotAroundZero(this.skewX)\n || isNotAroundZero(this.skewY);\n };\n Transformable.prototype.updateTransform = function () {\n var parentTransform = this.parent && this.parent.transform;\n var needLocalTransform = this.needLocalTransform();\n var m = this.transform;\n if (!(needLocalTransform || parentTransform)) {\n if (m) {\n mIdentity(m);\n this.invTransform = null;\n }\n return;\n }\n m = m || matrix.create();\n if (needLocalTransform) {\n this.getLocalTransform(m);\n }\n else {\n mIdentity(m);\n }\n if (parentTransform) {\n if (needLocalTransform) {\n matrix.mul(m, parentTransform, m);\n }\n else {\n matrix.copy(m, parentTransform);\n }\n }\n this.transform = m;\n this._resolveGlobalScaleRatio(m);\n };\n Transformable.prototype._resolveGlobalScaleRatio = function (m) {\n var globalScaleRatio = this.globalScaleRatio;\n if (globalScaleRatio != null && globalScaleRatio !== 1) {\n this.getGlobalScale(scaleTmp);\n var relX = scaleTmp[0] < 0 ? -1 : 1;\n var relY = scaleTmp[1] < 0 ? -1 : 1;\n var sx = ((scaleTmp[0] - relX) * globalScaleRatio + relX) / scaleTmp[0] || 0;\n var sy = ((scaleTmp[1] - relY) * globalScaleRatio + relY) / scaleTmp[1] || 0;\n m[0] *= sx;\n m[1] *= sx;\n m[2] *= sy;\n m[3] *= sy;\n }\n this.invTransform = this.invTransform || matrix.create();\n matrix.invert(this.invTransform, m);\n };\n Transformable.prototype.getComputedTransform = function () {\n var transformNode = this;\n var ancestors = [];\n while (transformNode) {\n ancestors.push(transformNode);\n transformNode = transformNode.parent;\n }\n while (transformNode = ancestors.pop()) {\n transformNode.updateTransform();\n }\n return this.transform;\n };\n Transformable.prototype.setLocalTransform = function (m) {\n if (!m) {\n return;\n }\n var sx = m[0] * m[0] + m[1] * m[1];\n var sy = m[2] * m[2] + m[3] * m[3];\n var rotation = Math.atan2(m[1], m[0]);\n var shearX = Math.PI / 2 + rotation - Math.atan2(m[3], m[2]);\n sy = Math.sqrt(sy) * Math.cos(shearX);\n sx = Math.sqrt(sx);\n this.skewX = shearX;\n this.skewY = 0;\n this.rotation = -rotation;\n this.x = +m[4];\n this.y = +m[5];\n this.scaleX = sx;\n this.scaleY = sy;\n this.originX = 0;\n this.originY = 0;\n };\n Transformable.prototype.decomposeTransform = function () {\n if (!this.transform) {\n return;\n }\n var parent = this.parent;\n var m = this.transform;\n if (parent && parent.transform) {\n parent.invTransform = parent.invTransform || matrix.create();\n matrix.mul(tmpTransform, parent.invTransform, m);\n m = tmpTransform;\n }\n var ox = this.originX;\n var oy = this.originY;\n if (ox || oy) {\n originTransform[4] = ox;\n originTransform[5] = oy;\n matrix.mul(tmpTransform, m, originTransform);\n tmpTransform[4] -= ox;\n tmpTransform[5] -= oy;\n m = tmpTransform;\n }\n this.setLocalTransform(m);\n };\n Transformable.prototype.getGlobalScale = function (out) {\n var m = this.transform;\n out = out || [];\n if (!m) {\n out[0] = 1;\n out[1] = 1;\n return out;\n }\n out[0] = Math.sqrt(m[0] * m[0] + m[1] * m[1]);\n out[1] = Math.sqrt(m[2] * m[2] + m[3] * m[3]);\n if (m[0] < 0) {\n out[0] = -out[0];\n }\n if (m[3] < 0) {\n out[1] = -out[1];\n }\n return out;\n };\n Transformable.prototype.transformCoordToLocal = function (x, y) {\n var v2 = [x, y];\n var invTransform = this.invTransform;\n if (invTransform) {\n vector.applyTransform(v2, v2, invTransform);\n }\n return v2;\n };\n Transformable.prototype.transformCoordToGlobal = function (x, y) {\n var v2 = [x, y];\n var transform = this.transform;\n if (transform) {\n vector.applyTransform(v2, v2, transform);\n }\n return v2;\n };\n Transformable.prototype.getLineScale = function () {\n var m = this.transform;\n return m && abs(m[0] - 1) > 1e-10 && abs(m[3] - 1) > 1e-10\n ? Math.sqrt(abs(m[0] * m[3] - m[2] * m[1]))\n : 1;\n };\n Transformable.prototype.copyTransform = function (source) {\n copyTransform(this, source);\n };\n Transformable.getLocalTransform = function (target, m) {\n m = m || [];\n var ox = target.originX || 0;\n var oy = target.originY || 0;\n var sx = target.scaleX;\n var sy = target.scaleY;\n var ax = target.anchorX;\n var ay = target.anchorY;\n var rotation = target.rotation || 0;\n var x = target.x;\n var y = target.y;\n var skewX = target.skewX ? Math.tan(target.skewX) : 0;\n var skewY = target.skewY ? Math.tan(-target.skewY) : 0;\n if (ox || oy || ax || ay) {\n var dx = ox + ax;\n var dy = oy + ay;\n m[4] = -dx * sx - skewX * dy * sy;\n m[5] = -dy * sy - skewY * dx * sx;\n }\n else {\n m[4] = m[5] = 0;\n }\n m[0] = sx;\n m[3] = sy;\n m[1] = skewY * sx;\n m[2] = skewX * sy;\n rotation && matrix.rotate(m, m, rotation);\n m[4] += ox + x;\n m[5] += oy + y;\n return m;\n };\n Transformable.initDefaultProps = (function () {\n var proto = Transformable.prototype;\n proto.scaleX =\n proto.scaleY =\n proto.globalScaleRatio = 1;\n proto.x =\n proto.y =\n proto.originX =\n proto.originY =\n proto.skewX =\n proto.skewY =\n proto.rotation =\n proto.anchorX =\n proto.anchorY = 0;\n })();\n return Transformable;\n}());\n;\nexport var TRANSFORMABLE_PROPS = [\n 'x', 'y', 'originX', 'originY', 'anchorX', 'anchorY', 'rotation', 'scaleX', 'scaleY', 'skewX', 'skewY'\n];\nexport function copyTransform(target, source) {\n for (var i = 0; i < TRANSFORMABLE_PROPS.length; i++) {\n var propName = TRANSFORMABLE_PROPS[i];\n target[propName] = source[propName];\n }\n}\nexport default Transformable;\n","var easingFuncs = {\n linear: function (k) {\n return k;\n },\n quadraticIn: function (k) {\n return k * k;\n },\n quadraticOut: function (k) {\n return k * (2 - k);\n },\n quadraticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k;\n }\n return -0.5 * (--k * (k - 2) - 1);\n },\n cubicIn: function (k) {\n return k * k * k;\n },\n cubicOut: function (k) {\n return --k * k * k + 1;\n },\n cubicInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k;\n }\n return 0.5 * ((k -= 2) * k * k + 2);\n },\n quarticIn: function (k) {\n return k * k * k * k;\n },\n quarticOut: function (k) {\n return 1 - (--k * k * k * k);\n },\n quarticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k;\n }\n return -0.5 * ((k -= 2) * k * k * k - 2);\n },\n quinticIn: function (k) {\n return k * k * k * k * k;\n },\n quinticOut: function (k) {\n return --k * k * k * k * k + 1;\n },\n quinticInOut: function (k) {\n if ((k *= 2) < 1) {\n return 0.5 * k * k * k * k * k;\n }\n return 0.5 * ((k -= 2) * k * k * k * k + 2);\n },\n sinusoidalIn: function (k) {\n return 1 - Math.cos(k * Math.PI / 2);\n },\n sinusoidalOut: function (k) {\n return Math.sin(k * Math.PI / 2);\n },\n sinusoidalInOut: function (k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n },\n exponentialIn: function (k) {\n return k === 0 ? 0 : Math.pow(1024, k - 1);\n },\n exponentialOut: function (k) {\n return k === 1 ? 1 : 1 - Math.pow(2, -10 * k);\n },\n exponentialInOut: function (k) {\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if ((k *= 2) < 1) {\n return 0.5 * Math.pow(1024, k - 1);\n }\n return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2);\n },\n circularIn: function (k) {\n return 1 - Math.sqrt(1 - k * k);\n },\n circularOut: function (k) {\n return Math.sqrt(1 - (--k * k));\n },\n circularInOut: function (k) {\n if ((k *= 2) < 1) {\n return -0.5 * (Math.sqrt(1 - k * k) - 1);\n }\n return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1);\n },\n elasticIn: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n }\n else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n return -(a * Math.pow(2, 10 * (k -= 1))\n * Math.sin((k - s) * (2 * Math.PI) / p));\n },\n elasticOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n }\n else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n return (a * Math.pow(2, -10 * k)\n * Math.sin((k - s) * (2 * Math.PI) / p) + 1);\n },\n elasticInOut: function (k) {\n var s;\n var a = 0.1;\n var p = 0.4;\n if (k === 0) {\n return 0;\n }\n if (k === 1) {\n return 1;\n }\n if (!a || a < 1) {\n a = 1;\n s = p / 4;\n }\n else {\n s = p * Math.asin(1 / a) / (2 * Math.PI);\n }\n if ((k *= 2) < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (k -= 1))\n * Math.sin((k - s) * (2 * Math.PI) / p));\n }\n return a * Math.pow(2, -10 * (k -= 1))\n * Math.sin((k - s) * (2 * Math.PI) / p) * 0.5 + 1;\n },\n backIn: function (k) {\n var s = 1.70158;\n return k * k * ((s + 1) * k - s);\n },\n backOut: function (k) {\n var s = 1.70158;\n return --k * k * ((s + 1) * k + s) + 1;\n },\n backInOut: function (k) {\n var s = 1.70158 * 1.525;\n if ((k *= 2) < 1) {\n return 0.5 * (k * k * ((s + 1) * k - s));\n }\n return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2);\n },\n bounceIn: function (k) {\n return 1 - easingFuncs.bounceOut(1 - k);\n },\n bounceOut: function (k) {\n if (k < (1 / 2.75)) {\n return 7.5625 * k * k;\n }\n else if (k < (2 / 2.75)) {\n return 7.5625 * (k -= (1.5 / 2.75)) * k + 0.75;\n }\n else if (k < (2.5 / 2.75)) {\n return 7.5625 * (k -= (2.25 / 2.75)) * k + 0.9375;\n }\n else {\n return 7.5625 * (k -= (2.625 / 2.75)) * k + 0.984375;\n }\n },\n bounceInOut: function (k) {\n if (k < 0.5) {\n return easingFuncs.bounceIn(k * 2) * 0.5;\n }\n return easingFuncs.bounceOut(k * 2 - 1) * 0.5 + 0.5;\n }\n};\nexport default easingFuncs;\n","import { create as v2Create, distSquare as v2DistSquare } from './vector.js';\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3;\nvar _v0 = v2Create();\nvar _v1 = v2Create();\nvar _v2 = v2Create();\nfunction isAroundZero(val) {\n return val > -EPSILON && val < EPSILON;\n}\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\nexport function cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return onet * onet * (onet * p0 + 3 * t * p1)\n + t * t * (t * p3 + 3 * onet * p2);\n}\nexport function cubicDerivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet\n + (p3 - p2) * t * t);\n}\nexport function cubicRootAt(p0, p1, p2, p3, val, roots) {\n var a = p3 + 3 * (p1 - p2) - p0;\n var b = 3 * (p2 - p1 * 2 + p0);\n var c = 3 * (p1 - p0);\n var d = p0 - val;\n var A = b * b - 3 * a * c;\n var B = b * c - 9 * a * d;\n var C = c * c - 3 * b * d;\n var n = 0;\n if (isAroundZero(A) && isAroundZero(B)) {\n if (isAroundZero(b)) {\n roots[0] = 0;\n }\n else {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n }\n else {\n var disc = B * B - 4 * A * C;\n if (isAroundZero(disc)) {\n var K = B / A;\n var t1 = -b / a + K;\n var t2 = -K / 2;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n if (Y1 < 0) {\n Y1 = -mathPow(-Y1, ONE_THIRD);\n }\n else {\n Y1 = mathPow(Y1, ONE_THIRD);\n }\n if (Y2 < 0) {\n Y2 = -mathPow(-Y2, ONE_THIRD);\n }\n else {\n Y2 = mathPow(Y2, ONE_THIRD);\n }\n var t1 = (-b - (Y1 + Y2)) / (3 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n else {\n var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n var theta = Math.acos(T) / 3;\n var ASqrt = mathSqrt(A);\n var tmp = Math.cos(theta);\n var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n if (t3 >= 0 && t3 <= 1) {\n roots[n++] = t3;\n }\n }\n }\n return n;\n}\nexport function cubicExtrema(p0, p1, p2, p3, extrema) {\n var b = 6 * p2 - 12 * p1 + 6 * p0;\n var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n var c = 3 * p1 - 3 * p0;\n var n = 0;\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (isAroundZero(disc)) {\n extrema[0] = -b / (2 * a);\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n extrema[n++] = t2;\n }\n }\n }\n return n;\n}\nexport function cubicSubdivide(p0, p1, p2, p3, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p23 = (p3 - p2) * t + p2;\n var p012 = (p12 - p01) * t + p01;\n var p123 = (p23 - p12) * t + p12;\n var p0123 = (p123 - p012) * t + p012;\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123;\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\nexport function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n var t;\n var interval = 0.005;\n var d = Infinity;\n var prev;\n var next;\n var d1;\n var d2;\n _v0[0] = x;\n _v0[1] = y;\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n d1 = v2DistSquare(_v0, _v1);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n prev = t - interval;\n next = t + interval;\n _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n d1 = v2DistSquare(_v1, _v0);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n _v2[0] = cubicAt(x0, x1, x2, x3, next);\n _v2[1] = cubicAt(y0, y1, y2, y3, next);\n d2 = v2DistSquare(_v2, _v0);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n if (out) {\n out[0] = cubicAt(x0, x1, x2, x3, t);\n out[1] = cubicAt(y0, y1, y2, y3, t);\n }\n return mathSqrt(d);\n}\nexport function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {\n var px = x0;\n var py = y0;\n var d = 0;\n var step = 1 / iteration;\n for (var i = 1; i <= iteration; i++) {\n var t = i * step;\n var x = cubicAt(x0, x1, x2, x3, t);\n var y = cubicAt(y0, y1, y2, y3, t);\n var dx = x - px;\n var dy = y - py;\n d += Math.sqrt(dx * dx + dy * dy);\n px = x;\n py = y;\n }\n return d;\n}\nexport function quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\nexport function quadraticDerivativeAt(p0, p1, p2, t) {\n return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\nexport function quadraticRootAt(p0, p1, p2, val, roots) {\n var a = p0 - 2 * p1 + p2;\n var b = 2 * (p1 - p0);\n var c = p0 - val;\n var n = 0;\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (isAroundZero(disc)) {\n var t1 = -b / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n }\n return n;\n}\nexport function quadraticExtremum(p0, p1, p2) {\n var divider = p0 + p2 - 2 * p1;\n if (divider === 0) {\n return 0.5;\n }\n else {\n return (p0 - p1) / divider;\n }\n}\nexport function quadraticSubdivide(p0, p1, p2, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p012 = (p12 - p01) * t + p01;\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p012;\n out[4] = p12;\n out[5] = p2;\n}\nexport function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n var t;\n var interval = 0.005;\n var d = Infinity;\n _v0[0] = x;\n _v0[1] = y;\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = quadraticAt(x0, x1, x2, _t);\n _v1[1] = quadraticAt(y0, y1, y2, _t);\n var d1 = v2DistSquare(_v0, _v1);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n _v1[0] = quadraticAt(x0, x1, x2, prev);\n _v1[1] = quadraticAt(y0, y1, y2, prev);\n var d1 = v2DistSquare(_v1, _v0);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n _v2[0] = quadraticAt(x0, x1, x2, next);\n _v2[1] = quadraticAt(y0, y1, y2, next);\n var d2 = v2DistSquare(_v2, _v0);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n if (out) {\n out[0] = quadraticAt(x0, x1, x2, t);\n out[1] = quadraticAt(y0, y1, y2, t);\n }\n return mathSqrt(d);\n}\nexport function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {\n var px = x0;\n var py = y0;\n var d = 0;\n var step = 1 / iteration;\n for (var i = 1; i <= iteration; i++) {\n var t = i * step;\n var x = quadraticAt(x0, x1, x2, t);\n var y = quadraticAt(y0, y1, y2, t);\n var dx = x - px;\n var dy = y - py;\n d += Math.sqrt(dx * dx + dy * dy);\n px = x;\n py = y;\n }\n return d;\n}\n","import { cubicAt, cubicRootAt } from '../core/curve.js';\nimport { trim } from '../core/util.js';\nvar regexp = /cubic-bezier\\(([0-9,\\.e ]+)\\)/;\nexport function createCubicEasingFunc(cubicEasingStr) {\n var cubic = cubicEasingStr && regexp.exec(cubicEasingStr);\n if (cubic) {\n var points = cubic[1].split(',');\n var a_1 = +trim(points[0]);\n var b_1 = +trim(points[1]);\n var c_1 = +trim(points[2]);\n var d_1 = +trim(points[3]);\n if (isNaN(a_1 + b_1 + c_1 + d_1)) {\n return;\n }\n var roots_1 = [];\n return function (p) {\n return p <= 0\n ? 0 : p >= 1\n ? 1\n : cubicRootAt(0, a_1, c_1, 1, p, roots_1) && cubicAt(0, b_1, d_1, 1, roots_1[0]);\n };\n }\n}\n","import easingFuncs from './easing.js';\nimport { isFunction, noop } from '../core/util.js';\nimport { createCubicEasingFunc } from './cubicEasing.js';\nvar Clip = (function () {\n function Clip(opts) {\n this._inited = false;\n this._startTime = 0;\n this._pausedTime = 0;\n this._paused = false;\n this._life = opts.life || 1000;\n this._delay = opts.delay || 0;\n this.loop = opts.loop || false;\n this.onframe = opts.onframe || noop;\n this.ondestroy = opts.ondestroy || noop;\n this.onrestart = opts.onrestart || noop;\n opts.easing && this.setEasing(opts.easing);\n }\n Clip.prototype.step = function (globalTime, deltaTime) {\n if (!this._inited) {\n this._startTime = globalTime + this._delay;\n this._inited = true;\n }\n if (this._paused) {\n this._pausedTime += deltaTime;\n return;\n }\n var life = this._life;\n var elapsedTime = globalTime - this._startTime - this._pausedTime;\n var percent = elapsedTime / life;\n if (percent < 0) {\n percent = 0;\n }\n percent = Math.min(percent, 1);\n var easingFunc = this.easingFunc;\n var schedule = easingFunc ? easingFunc(percent) : percent;\n this.onframe(schedule);\n if (percent === 1) {\n if (this.loop) {\n var remainder = elapsedTime % life;\n this._startTime = globalTime - remainder;\n this._pausedTime = 0;\n this.onrestart();\n }\n else {\n return true;\n }\n }\n return false;\n };\n Clip.prototype.pause = function () {\n this._paused = true;\n };\n Clip.prototype.resume = function () {\n this._paused = false;\n };\n Clip.prototype.setEasing = function (easing) {\n this.easing = easing;\n this.easingFunc = isFunction(easing)\n ? easing\n : easingFuncs[easing] || createCubicEasingFunc(easing);\n };\n return Clip;\n}());\nexport default Clip;\n","import LRU from '../core/LRU.js';\nimport { extend, isFunction, isGradientObject, isString, map } from '../core/util.js';\nvar kCSSColorTable = {\n 'transparent': [0, 0, 0, 0], 'aliceblue': [240, 248, 255, 1],\n 'antiquewhite': [250, 235, 215, 1], 'aqua': [0, 255, 255, 1],\n 'aquamarine': [127, 255, 212, 1], 'azure': [240, 255, 255, 1],\n 'beige': [245, 245, 220, 1], 'bisque': [255, 228, 196, 1],\n 'black': [0, 0, 0, 1], 'blanchedalmond': [255, 235, 205, 1],\n 'blue': [0, 0, 255, 1], 'blueviolet': [138, 43, 226, 1],\n 'brown': [165, 42, 42, 1], 'burlywood': [222, 184, 135, 1],\n 'cadetblue': [95, 158, 160, 1], 'chartreuse': [127, 255, 0, 1],\n 'chocolate': [210, 105, 30, 1], 'coral': [255, 127, 80, 1],\n 'cornflowerblue': [100, 149, 237, 1], 'cornsilk': [255, 248, 220, 1],\n 'crimson': [220, 20, 60, 1], 'cyan': [0, 255, 255, 1],\n 'darkblue': [0, 0, 139, 1], 'darkcyan': [0, 139, 139, 1],\n 'darkgoldenrod': [184, 134, 11, 1], 'darkgray': [169, 169, 169, 1],\n 'darkgreen': [0, 100, 0, 1], 'darkgrey': [169, 169, 169, 1],\n 'darkkhaki': [189, 183, 107, 1], 'darkmagenta': [139, 0, 139, 1],\n 'darkolivegreen': [85, 107, 47, 1], 'darkorange': [255, 140, 0, 1],\n 'darkorchid': [153, 50, 204, 1], 'darkred': [139, 0, 0, 1],\n 'darksalmon': [233, 150, 122, 1], 'darkseagreen': [143, 188, 143, 1],\n 'darkslateblue': [72, 61, 139, 1], 'darkslategray': [47, 79, 79, 1],\n 'darkslategrey': [47, 79, 79, 1], 'darkturquoise': [0, 206, 209, 1],\n 'darkviolet': [148, 0, 211, 1], 'deeppink': [255, 20, 147, 1],\n 'deepskyblue': [0, 191, 255, 1], 'dimgray': [105, 105, 105, 1],\n 'dimgrey': [105, 105, 105, 1], 'dodgerblue': [30, 144, 255, 1],\n 'firebrick': [178, 34, 34, 1], 'floralwhite': [255, 250, 240, 1],\n 'forestgreen': [34, 139, 34, 1], 'fuchsia': [255, 0, 255, 1],\n 'gainsboro': [220, 220, 220, 1], 'ghostwhite': [248, 248, 255, 1],\n 'gold': [255, 215, 0, 1], 'goldenrod': [218, 165, 32, 1],\n 'gray': [128, 128, 128, 1], 'green': [0, 128, 0, 1],\n 'greenyellow': [173, 255, 47, 1], 'grey': [128, 128, 128, 1],\n 'honeydew': [240, 255, 240, 1], 'hotpink': [255, 105, 180, 1],\n 'indianred': [205, 92, 92, 1], 'indigo': [75, 0, 130, 1],\n 'ivory': [255, 255, 240, 1], 'khaki': [240, 230, 140, 1],\n 'lavender': [230, 230, 250, 1], 'lavenderblush': [255, 240, 245, 1],\n 'lawngreen': [124, 252, 0, 1], 'lemonchiffon': [255, 250, 205, 1],\n 'lightblue': [173, 216, 230, 1], 'lightcoral': [240, 128, 128, 1],\n 'lightcyan': [224, 255, 255, 1], 'lightgoldenrodyellow': [250, 250, 210, 1],\n 'lightgray': [211, 211, 211, 1], 'lightgreen': [144, 238, 144, 1],\n 'lightgrey': [211, 211, 211, 1], 'lightpink': [255, 182, 193, 1],\n 'lightsalmon': [255, 160, 122, 1], 'lightseagreen': [32, 178, 170, 1],\n 'lightskyblue': [135, 206, 250, 1], 'lightslategray': [119, 136, 153, 1],\n 'lightslategrey': [119, 136, 153, 1], 'lightsteelblue': [176, 196, 222, 1],\n 'lightyellow': [255, 255, 224, 1], 'lime': [0, 255, 0, 1],\n 'limegreen': [50, 205, 50, 1], 'linen': [250, 240, 230, 1],\n 'magenta': [255, 0, 255, 1], 'maroon': [128, 0, 0, 1],\n 'mediumaquamarine': [102, 205, 170, 1], 'mediumblue': [0, 0, 205, 1],\n 'mediumorchid': [186, 85, 211, 1], 'mediumpurple': [147, 112, 219, 1],\n 'mediumseagreen': [60, 179, 113, 1], 'mediumslateblue': [123, 104, 238, 1],\n 'mediumspringgreen': [0, 250, 154, 1], 'mediumturquoise': [72, 209, 204, 1],\n 'mediumvioletred': [199, 21, 133, 1], 'midnightblue': [25, 25, 112, 1],\n 'mintcream': [245, 255, 250, 1], 'mistyrose': [255, 228, 225, 1],\n 'moccasin': [255, 228, 181, 1], 'navajowhite': [255, 222, 173, 1],\n 'navy': [0, 0, 128, 1], 'oldlace': [253, 245, 230, 1],\n 'olive': [128, 128, 0, 1], 'olivedrab': [107, 142, 35, 1],\n 'orange': [255, 165, 0, 1], 'orangered': [255, 69, 0, 1],\n 'orchid': [218, 112, 214, 1], 'palegoldenrod': [238, 232, 170, 1],\n 'palegreen': [152, 251, 152, 1], 'paleturquoise': [175, 238, 238, 1],\n 'palevioletred': [219, 112, 147, 1], 'papayawhip': [255, 239, 213, 1],\n 'peachpuff': [255, 218, 185, 1], 'peru': [205, 133, 63, 1],\n 'pink': [255, 192, 203, 1], 'plum': [221, 160, 221, 1],\n 'powderblue': [176, 224, 230, 1], 'purple': [128, 0, 128, 1],\n 'red': [255, 0, 0, 1], 'rosybrown': [188, 143, 143, 1],\n 'royalblue': [65, 105, 225, 1], 'saddlebrown': [139, 69, 19, 1],\n 'salmon': [250, 128, 114, 1], 'sandybrown': [244, 164, 96, 1],\n 'seagreen': [46, 139, 87, 1], 'seashell': [255, 245, 238, 1],\n 'sienna': [160, 82, 45, 1], 'silver': [192, 192, 192, 1],\n 'skyblue': [135, 206, 235, 1], 'slateblue': [106, 90, 205, 1],\n 'slategray': [112, 128, 144, 1], 'slategrey': [112, 128, 144, 1],\n 'snow': [255, 250, 250, 1], 'springgreen': [0, 255, 127, 1],\n 'steelblue': [70, 130, 180, 1], 'tan': [210, 180, 140, 1],\n 'teal': [0, 128, 128, 1], 'thistle': [216, 191, 216, 1],\n 'tomato': [255, 99, 71, 1], 'turquoise': [64, 224, 208, 1],\n 'violet': [238, 130, 238, 1], 'wheat': [245, 222, 179, 1],\n 'white': [255, 255, 255, 1], 'whitesmoke': [245, 245, 245, 1],\n 'yellow': [255, 255, 0, 1], 'yellowgreen': [154, 205, 50, 1]\n};\nfunction clampCssByte(i) {\n i = Math.round(i);\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\nfunction clampCssAngle(i) {\n i = Math.round(i);\n return i < 0 ? 0 : i > 360 ? 360 : i;\n}\nfunction clampCssFloat(f) {\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\nexport function parseCssInt(val) {\n var str = val;\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssByte(parseFloat(str) / 100 * 255);\n }\n return clampCssByte(parseInt(str, 10));\n}\nexport function parseCssFloat(val) {\n var str = val;\n if (str.length && str.charAt(str.length - 1) === '%') {\n return clampCssFloat(parseFloat(str) / 100);\n }\n return clampCssFloat(parseFloat(str));\n}\nfunction cssHueToRgb(m1, m2, h) {\n if (h < 0) {\n h += 1;\n }\n else if (h > 1) {\n h -= 1;\n }\n if (h * 6 < 1) {\n return m1 + (m2 - m1) * h * 6;\n }\n if (h * 2 < 1) {\n return m2;\n }\n if (h * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n return m1;\n}\nfunction lerpNumber(a, b, p) {\n return a + (b - a) * p;\n}\nfunction setRgba(out, r, g, b, a) {\n out[0] = r;\n out[1] = g;\n out[2] = b;\n out[3] = a;\n return out;\n}\nfunction copyRgba(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n return out;\n}\nvar colorCache = new LRU(20);\nvar lastRemovedArr = null;\nfunction putToCache(colorStr, rgbaArr) {\n if (lastRemovedArr) {\n copyRgba(lastRemovedArr, rgbaArr);\n }\n lastRemovedArr = colorCache.put(colorStr, lastRemovedArr || (rgbaArr.slice()));\n}\nexport function parse(colorStr, rgbaArr) {\n if (!colorStr) {\n return;\n }\n rgbaArr = rgbaArr || [];\n var cached = colorCache.get(colorStr);\n if (cached) {\n return copyRgba(rgbaArr, cached);\n }\n colorStr = colorStr + '';\n var str = colorStr.replace(/ /g, '').toLowerCase();\n if (str in kCSSColorTable) {\n copyRgba(rgbaArr, kCSSColorTable[str]);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n var strLen = str.length;\n if (str.charAt(0) === '#') {\n if (strLen === 4 || strLen === 5) {\n var iv = parseInt(str.slice(1, 4), 16);\n if (!(iv >= 0 && iv <= 0xfff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n setRgba(rgbaArr, ((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8), (iv & 0xf0) | ((iv & 0xf0) >> 4), (iv & 0xf) | ((iv & 0xf) << 4), strLen === 5 ? parseInt(str.slice(4), 16) / 0xf : 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n else if (strLen === 7 || strLen === 9) {\n var iv = parseInt(str.slice(1, 7), 16);\n if (!(iv >= 0 && iv <= 0xffffff)) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n setRgba(rgbaArr, (iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, strLen === 9 ? parseInt(str.slice(7), 16) / 0xff : 1);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n return;\n }\n var op = str.indexOf('(');\n var ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === strLen) {\n var fname = str.substr(0, op);\n var params = str.substr(op + 1, ep - (op + 1)).split(',');\n var alpha = 1;\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) {\n return params.length === 3\n ? setRgba(rgbaArr, +params[0], +params[1], +params[2], 1)\n : setRgba(rgbaArr, 0, 0, 0, 1);\n }\n alpha = parseCssFloat(params.pop());\n case 'rgb':\n if (params.length >= 3) {\n setRgba(rgbaArr, parseCssInt(params[0]), parseCssInt(params[1]), parseCssInt(params[2]), params.length === 3 ? alpha : parseCssFloat(params[3]));\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n }\n else {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n case 'hsla':\n if (params.length !== 4) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n params[3] = parseCssFloat(params[3]);\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n case 'hsl':\n if (params.length !== 3) {\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n }\n hsla2rgba(params, rgbaArr);\n putToCache(colorStr, rgbaArr);\n return rgbaArr;\n default:\n return;\n }\n }\n setRgba(rgbaArr, 0, 0, 0, 1);\n return;\n}\nfunction hsla2rgba(hsla, rgba) {\n var h = (((parseFloat(hsla[0]) % 360) + 360) % 360) / 360;\n var s = parseCssFloat(hsla[1]);\n var l = parseCssFloat(hsla[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n rgba = rgba || [];\n setRgba(rgba, clampCssByte(cssHueToRgb(m1, m2, h + 1 / 3) * 255), clampCssByte(cssHueToRgb(m1, m2, h) * 255), clampCssByte(cssHueToRgb(m1, m2, h - 1 / 3) * 255), 1);\n if (hsla.length === 4) {\n rgba[3] = hsla[3];\n }\n return rgba;\n}\nfunction rgba2hsla(rgba) {\n if (!rgba) {\n return;\n }\n var R = rgba[0] / 255;\n var G = rgba[1] / 255;\n var B = rgba[2] / 255;\n var vMin = Math.min(R, G, B);\n var vMax = Math.max(R, G, B);\n var delta = vMax - vMin;\n var L = (vMax + vMin) / 2;\n var H;\n var S;\n if (delta === 0) {\n H = 0;\n S = 0;\n }\n else {\n if (L < 0.5) {\n S = delta / (vMax + vMin);\n }\n else {\n S = delta / (2 - vMax - vMin);\n }\n var deltaR = (((vMax - R) / 6) + (delta / 2)) / delta;\n var deltaG = (((vMax - G) / 6) + (delta / 2)) / delta;\n var deltaB = (((vMax - B) / 6) + (delta / 2)) / delta;\n if (R === vMax) {\n H = deltaB - deltaG;\n }\n else if (G === vMax) {\n H = (1 / 3) + deltaR - deltaB;\n }\n else if (B === vMax) {\n H = (2 / 3) + deltaG - deltaR;\n }\n if (H < 0) {\n H += 1;\n }\n if (H > 1) {\n H -= 1;\n }\n }\n var hsla = [H * 360, S, L];\n if (rgba[3] != null) {\n hsla.push(rgba[3]);\n }\n return hsla;\n}\nexport function lift(color, level) {\n var colorArr = parse(color);\n if (colorArr) {\n for (var i = 0; i < 3; i++) {\n if (level < 0) {\n colorArr[i] = colorArr[i] * (1 - level) | 0;\n }\n else {\n colorArr[i] = ((255 - colorArr[i]) * level + colorArr[i]) | 0;\n }\n if (colorArr[i] > 255) {\n colorArr[i] = 255;\n }\n else if (colorArr[i] < 0) {\n colorArr[i] = 0;\n }\n }\n return stringify(colorArr, colorArr.length === 4 ? 'rgba' : 'rgb');\n }\n}\nexport function toHex(color) {\n var colorArr = parse(color);\n if (colorArr) {\n return ((1 << 24) + (colorArr[0] << 16) + (colorArr[1] << 8) + (+colorArr[2])).toString(16).slice(1);\n }\n}\nexport function fastLerp(normalizedValue, colors, out) {\n if (!(colors && colors.length)\n || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n out = out || [];\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = colors[leftIndex];\n var rightColor = colors[rightIndex];\n var dv = value - leftIndex;\n out[0] = clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv));\n out[1] = clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv));\n out[2] = clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv));\n out[3] = clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv));\n return out;\n}\nexport var fastMapToColor = fastLerp;\nexport function lerp(normalizedValue, colors, fullOutput) {\n if (!(colors && colors.length)\n || !(normalizedValue >= 0 && normalizedValue <= 1)) {\n return;\n }\n var value = normalizedValue * (colors.length - 1);\n var leftIndex = Math.floor(value);\n var rightIndex = Math.ceil(value);\n var leftColor = parse(colors[leftIndex]);\n var rightColor = parse(colors[rightIndex]);\n var dv = value - leftIndex;\n var color = stringify([\n clampCssByte(lerpNumber(leftColor[0], rightColor[0], dv)),\n clampCssByte(lerpNumber(leftColor[1], rightColor[1], dv)),\n clampCssByte(lerpNumber(leftColor[2], rightColor[2], dv)),\n clampCssFloat(lerpNumber(leftColor[3], rightColor[3], dv))\n ], 'rgba');\n return fullOutput\n ? {\n color: color,\n leftIndex: leftIndex,\n rightIndex: rightIndex,\n value: value\n }\n : color;\n}\nexport var mapToColor = lerp;\nexport function modifyHSL(color, h, s, l) {\n var colorArr = parse(color);\n if (color) {\n colorArr = rgba2hsla(colorArr);\n h != null && (colorArr[0] = clampCssAngle(isFunction(h) ? h(colorArr[0]) : h));\n s != null && (colorArr[1] = parseCssFloat(isFunction(s) ? s(colorArr[1]) : s));\n l != null && (colorArr[2] = parseCssFloat(isFunction(l) ? l(colorArr[2]) : l));\n return stringify(hsla2rgba(colorArr), 'rgba');\n }\n}\nexport function modifyAlpha(color, alpha) {\n var colorArr = parse(color);\n if (colorArr && alpha != null) {\n colorArr[3] = clampCssFloat(alpha);\n return stringify(colorArr, 'rgba');\n }\n}\nexport function stringify(arrColor, type) {\n if (!arrColor || !arrColor.length) {\n return;\n }\n var colorStr = arrColor[0] + ',' + arrColor[1] + ',' + arrColor[2];\n if (type === 'rgba' || type === 'hsva' || type === 'hsla') {\n colorStr += ',' + arrColor[3];\n }\n return type + '(' + colorStr + ')';\n}\nexport function lum(color, backgroundLum) {\n var arr = parse(color);\n return arr\n ? (0.299 * arr[0] + 0.587 * arr[1] + 0.114 * arr[2]) * arr[3] / 255\n + (1 - arr[3]) * backgroundLum\n : 0;\n}\nexport function random() {\n return stringify([\n Math.round(Math.random() * 255),\n Math.round(Math.random() * 255),\n Math.round(Math.random() * 255)\n ], 'rgb');\n}\nvar liftedColorCache = new LRU(100);\nexport function liftColor(color) {\n if (isString(color)) {\n var liftedColor = liftedColorCache.get(color);\n if (!liftedColor) {\n liftedColor = lift(color, -0.1);\n liftedColorCache.put(color, liftedColor);\n }\n return liftedColor;\n }\n else if (isGradientObject(color)) {\n var ret = extend({}, color);\n ret.colorStops = map(color.colorStops, function (stop) { return ({\n offset: stop.offset,\n color: lift(stop.color, -0.1)\n }); });\n return ret;\n }\n return color;\n}\n","import { RADIAN_TO_DEGREE, retrieve2, logError, isFunction } from '../core/util.js';\nimport { parse } from '../tool/color.js';\nimport env from '../core/env.js';\nvar mathRound = Math.round;\nexport function normalizeColor(color) {\n var opacity;\n if (!color || color === 'transparent') {\n color = 'none';\n }\n else if (typeof color === 'string' && color.indexOf('rgba') > -1) {\n var arr = parse(color);\n if (arr) {\n color = 'rgb(' + arr[0] + ',' + arr[1] + ',' + arr[2] + ')';\n opacity = arr[3];\n }\n }\n return {\n color: color,\n opacity: opacity == null ? 1 : opacity\n };\n}\nvar EPSILON = 1e-4;\nexport function isAroundZero(transform) {\n return transform < EPSILON && transform > -EPSILON;\n}\nexport function round3(transform) {\n return mathRound(transform * 1e3) / 1e3;\n}\nexport function round4(transform) {\n return mathRound(transform * 1e4) / 1e4;\n}\nexport function round1(transform) {\n return mathRound(transform * 10) / 10;\n}\nexport function getMatrixStr(m) {\n return 'matrix('\n + round3(m[0]) + ','\n + round3(m[1]) + ','\n + round3(m[2]) + ','\n + round3(m[3]) + ','\n + round4(m[4]) + ','\n + round4(m[5])\n + ')';\n}\nexport var TEXT_ALIGN_TO_ANCHOR = {\n left: 'start',\n right: 'end',\n center: 'middle',\n middle: 'middle'\n};\nexport function adjustTextY(y, lineHeight, textBaseline) {\n if (textBaseline === 'top') {\n y += lineHeight / 2;\n }\n else if (textBaseline === 'bottom') {\n y -= lineHeight / 2;\n }\n return y;\n}\nexport function hasShadow(style) {\n return style\n && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY);\n}\nexport function getShadowKey(displayable) {\n var style = displayable.style;\n var globalScale = displayable.getGlobalScale();\n return [\n style.shadowColor,\n (style.shadowBlur || 0).toFixed(2),\n (style.shadowOffsetX || 0).toFixed(2),\n (style.shadowOffsetY || 0).toFixed(2),\n globalScale[0],\n globalScale[1]\n ].join(',');\n}\nexport function getClipPathsKey(clipPaths) {\n var key = [];\n if (clipPaths) {\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n key.push(clipPath.id);\n }\n }\n return key.join(',');\n}\nexport function isImagePattern(val) {\n return val && (!!val.image);\n}\nexport function isSVGPattern(val) {\n return val && (!!val.svgElement);\n}\nexport function isPattern(val) {\n return isImagePattern(val) || isSVGPattern(val);\n}\nexport function isLinearGradient(val) {\n return val.type === 'linear';\n}\nexport function isRadialGradient(val) {\n return val.type === 'radial';\n}\nexport function isGradient(val) {\n return val && (val.type === 'linear'\n || val.type === 'radial');\n}\nexport function getIdURL(id) {\n return \"url(#\" + id + \")\";\n}\nexport function getPathPrecision(el) {\n var scale = el.getGlobalScale();\n var size = Math.max(scale[0], scale[1]);\n return Math.max(Math.ceil(Math.log(size) / Math.log(10)), 1);\n}\nexport function getSRTTransformString(transform) {\n var x = transform.x || 0;\n var y = transform.y || 0;\n var rotation = (transform.rotation || 0) * RADIAN_TO_DEGREE;\n var scaleX = retrieve2(transform.scaleX, 1);\n var scaleY = retrieve2(transform.scaleY, 1);\n var skewX = transform.skewX || 0;\n var skewY = transform.skewY || 0;\n var res = [];\n if (x || y) {\n res.push(\"translate(\" + x + \"px,\" + y + \"px)\");\n }\n if (rotation) {\n res.push(\"rotate(\" + rotation + \")\");\n }\n if (scaleX !== 1 || scaleY !== 1) {\n res.push(\"scale(\" + scaleX + \",\" + scaleY + \")\");\n }\n if (skewX || skewY) {\n res.push(\"skew(\" + mathRound(skewX * RADIAN_TO_DEGREE) + \"deg, \" + mathRound(skewY * RADIAN_TO_DEGREE) + \"deg)\");\n }\n return res.join(' ');\n}\nexport var encodeBase64 = (function () {\n if (env.hasGlobalWindow && isFunction(window.btoa)) {\n return function (str) {\n return window.btoa(unescape(encodeURIComponent(str)));\n };\n }\n if (typeof Buffer !== 'undefined') {\n return function (str) {\n return Buffer.from(str).toString('base64');\n };\n }\n return function (str) {\n if (process.env.NODE_ENV !== 'production') {\n logError('Base64 isn\\'t natively supported in the current environment.');\n }\n return null;\n };\n})();\n","import Clip from './Clip.js';\nimport * as color from '../tool/color.js';\nimport { eqNaN, extend, isArrayLike, isFunction, isGradientObject, isNumber, isString, keys, logError, map } from '../core/util.js';\nimport easingFuncs from './easing.js';\nimport { createCubicEasingFunc } from './cubicEasing.js';\nimport { isLinearGradient, isRadialGradient } from '../svg/helper.js';\n;\nvar arraySlice = Array.prototype.slice;\nfunction interpolateNumber(p0, p1, percent) {\n return (p1 - p0) * percent + p0;\n}\nfunction interpolate1DArray(out, p0, p1, percent) {\n var len = p0.length;\n for (var i = 0; i < len; i++) {\n out[i] = interpolateNumber(p0[i], p1[i], percent);\n }\n return out;\n}\nfunction interpolate2DArray(out, p0, p1, percent) {\n var len = p0.length;\n var len2 = len && p0[0].length;\n for (var i = 0; i < len; i++) {\n if (!out[i]) {\n out[i] = [];\n }\n for (var j = 0; j < len2; j++) {\n out[i][j] = interpolateNumber(p0[i][j], p1[i][j], percent);\n }\n }\n return out;\n}\nfunction add1DArray(out, p0, p1, sign) {\n var len = p0.length;\n for (var i = 0; i < len; i++) {\n out[i] = p0[i] + p1[i] * sign;\n }\n return out;\n}\nfunction add2DArray(out, p0, p1, sign) {\n var len = p0.length;\n var len2 = len && p0[0].length;\n for (var i = 0; i < len; i++) {\n if (!out[i]) {\n out[i] = [];\n }\n for (var j = 0; j < len2; j++) {\n out[i][j] = p0[i][j] + p1[i][j] * sign;\n }\n }\n return out;\n}\nfunction fillColorStops(val0, val1) {\n var len0 = val0.length;\n var len1 = val1.length;\n var shorterArr = len0 > len1 ? val1 : val0;\n var shorterLen = Math.min(len0, len1);\n var last = shorterArr[shorterLen - 1] || { color: [0, 0, 0, 0], offset: 0 };\n for (var i = shorterLen; i < Math.max(len0, len1); i++) {\n shorterArr.push({\n offset: last.offset,\n color: last.color.slice()\n });\n }\n}\nfunction fillArray(val0, val1, arrDim) {\n var arr0 = val0;\n var arr1 = val1;\n if (!arr0.push || !arr1.push) {\n return;\n }\n var arr0Len = arr0.length;\n var arr1Len = arr1.length;\n if (arr0Len !== arr1Len) {\n var isPreviousLarger = arr0Len > arr1Len;\n if (isPreviousLarger) {\n arr0.length = arr1Len;\n }\n else {\n for (var i = arr0Len; i < arr1Len; i++) {\n arr0.push(arrDim === 1 ? arr1[i] : arraySlice.call(arr1[i]));\n }\n }\n }\n var len2 = arr0[0] && arr0[0].length;\n for (var i = 0; i < arr0.length; i++) {\n if (arrDim === 1) {\n if (isNaN(arr0[i])) {\n arr0[i] = arr1[i];\n }\n }\n else {\n for (var j = 0; j < len2; j++) {\n if (isNaN(arr0[i][j])) {\n arr0[i][j] = arr1[i][j];\n }\n }\n }\n }\n}\nexport function cloneValue(value) {\n if (isArrayLike(value)) {\n var len = value.length;\n if (isArrayLike(value[0])) {\n var ret = [];\n for (var i = 0; i < len; i++) {\n ret.push(arraySlice.call(value[i]));\n }\n return ret;\n }\n return arraySlice.call(value);\n }\n return value;\n}\nfunction rgba2String(rgba) {\n rgba[0] = Math.floor(rgba[0]) || 0;\n rgba[1] = Math.floor(rgba[1]) || 0;\n rgba[2] = Math.floor(rgba[2]) || 0;\n rgba[3] = rgba[3] == null ? 1 : rgba[3];\n return 'rgba(' + rgba.join(',') + ')';\n}\nfunction guessArrayDim(value) {\n return isArrayLike(value && value[0]) ? 2 : 1;\n}\nvar VALUE_TYPE_NUMBER = 0;\nvar VALUE_TYPE_1D_ARRAY = 1;\nvar VALUE_TYPE_2D_ARRAY = 2;\nvar VALUE_TYPE_COLOR = 3;\nvar VALUE_TYPE_LINEAR_GRADIENT = 4;\nvar VALUE_TYPE_RADIAL_GRADIENT = 5;\nvar VALUE_TYPE_UNKOWN = 6;\nfunction isGradientValueType(valType) {\n return valType === VALUE_TYPE_LINEAR_GRADIENT || valType === VALUE_TYPE_RADIAL_GRADIENT;\n}\nfunction isArrayValueType(valType) {\n return valType === VALUE_TYPE_1D_ARRAY || valType === VALUE_TYPE_2D_ARRAY;\n}\nvar tmpRgba = [0, 0, 0, 0];\nvar Track = (function () {\n function Track(propName) {\n this.keyframes = [];\n this.discrete = false;\n this._invalid = false;\n this._needsSort = false;\n this._lastFr = 0;\n this._lastFrP = 0;\n this.propName = propName;\n }\n Track.prototype.isFinished = function () {\n return this._finished;\n };\n Track.prototype.setFinished = function () {\n this._finished = true;\n if (this._additiveTrack) {\n this._additiveTrack.setFinished();\n }\n };\n Track.prototype.needsAnimate = function () {\n return this.keyframes.length >= 1;\n };\n Track.prototype.getAdditiveTrack = function () {\n return this._additiveTrack;\n };\n Track.prototype.addKeyframe = function (time, rawValue, easing) {\n this._needsSort = true;\n var keyframes = this.keyframes;\n var len = keyframes.length;\n var discrete = false;\n var valType = VALUE_TYPE_UNKOWN;\n var value = rawValue;\n if (isArrayLike(rawValue)) {\n var arrayDim = guessArrayDim(rawValue);\n valType = arrayDim;\n if (arrayDim === 1 && !isNumber(rawValue[0])\n || arrayDim === 2 && !isNumber(rawValue[0][0])) {\n discrete = true;\n }\n }\n else {\n if (isNumber(rawValue) && !eqNaN(rawValue)) {\n valType = VALUE_TYPE_NUMBER;\n }\n else if (isString(rawValue)) {\n if (!isNaN(+rawValue)) {\n valType = VALUE_TYPE_NUMBER;\n }\n else {\n var colorArray = color.parse(rawValue);\n if (colorArray) {\n value = colorArray;\n valType = VALUE_TYPE_COLOR;\n }\n }\n }\n else if (isGradientObject(rawValue)) {\n var parsedGradient = extend({}, value);\n parsedGradient.colorStops = map(rawValue.colorStops, function (colorStop) { return ({\n offset: colorStop.offset,\n color: color.parse(colorStop.color)\n }); });\n if (isLinearGradient(rawValue)) {\n valType = VALUE_TYPE_LINEAR_GRADIENT;\n }\n else if (isRadialGradient(rawValue)) {\n valType = VALUE_TYPE_RADIAL_GRADIENT;\n }\n value = parsedGradient;\n }\n }\n if (len === 0) {\n this.valType = valType;\n }\n else if (valType !== this.valType || valType === VALUE_TYPE_UNKOWN) {\n discrete = true;\n }\n this.discrete = this.discrete || discrete;\n var kf = {\n time: time,\n value: value,\n rawValue: rawValue,\n percent: 0\n };\n if (easing) {\n kf.easing = easing;\n kf.easingFunc = isFunction(easing)\n ? easing\n : easingFuncs[easing] || createCubicEasingFunc(easing);\n }\n keyframes.push(kf);\n return kf;\n };\n Track.prototype.prepare = function (maxTime, additiveTrack) {\n var kfs = this.keyframes;\n if (this._needsSort) {\n kfs.sort(function (a, b) {\n return a.time - b.time;\n });\n }\n var valType = this.valType;\n var kfsLen = kfs.length;\n var lastKf = kfs[kfsLen - 1];\n var isDiscrete = this.discrete;\n var isArr = isArrayValueType(valType);\n var isGradient = isGradientValueType(valType);\n for (var i = 0; i < kfsLen; i++) {\n var kf = kfs[i];\n var value = kf.value;\n var lastValue = lastKf.value;\n kf.percent = kf.time / maxTime;\n if (!isDiscrete) {\n if (isArr && i !== kfsLen - 1) {\n fillArray(value, lastValue, valType);\n }\n else if (isGradient) {\n fillColorStops(value.colorStops, lastValue.colorStops);\n }\n }\n }\n if (!isDiscrete\n && valType !== VALUE_TYPE_RADIAL_GRADIENT\n && additiveTrack\n && this.needsAnimate()\n && additiveTrack.needsAnimate()\n && valType === additiveTrack.valType\n && !additiveTrack._finished) {\n this._additiveTrack = additiveTrack;\n var startValue = kfs[0].value;\n for (var i = 0; i < kfsLen; i++) {\n if (valType === VALUE_TYPE_NUMBER) {\n kfs[i].additiveValue = kfs[i].value - startValue;\n }\n else if (valType === VALUE_TYPE_COLOR) {\n kfs[i].additiveValue =\n add1DArray([], kfs[i].value, startValue, -1);\n }\n else if (isArrayValueType(valType)) {\n kfs[i].additiveValue = valType === VALUE_TYPE_1D_ARRAY\n ? add1DArray([], kfs[i].value, startValue, -1)\n : add2DArray([], kfs[i].value, startValue, -1);\n }\n }\n }\n };\n Track.prototype.step = function (target, percent) {\n if (this._finished) {\n return;\n }\n if (this._additiveTrack && this._additiveTrack._finished) {\n this._additiveTrack = null;\n }\n var isAdditive = this._additiveTrack != null;\n var valueKey = isAdditive ? 'additiveValue' : 'value';\n var valType = this.valType;\n var keyframes = this.keyframes;\n var kfsNum = keyframes.length;\n var propName = this.propName;\n var isValueColor = valType === VALUE_TYPE_COLOR;\n var frameIdx;\n var lastFrame = this._lastFr;\n var mathMin = Math.min;\n var frame;\n var nextFrame;\n if (kfsNum === 1) {\n frame = nextFrame = keyframes[0];\n }\n else {\n if (percent < 0) {\n frameIdx = 0;\n }\n else if (percent < this._lastFrP) {\n var start = mathMin(lastFrame + 1, kfsNum - 1);\n for (frameIdx = start; frameIdx >= 0; frameIdx--) {\n if (keyframes[frameIdx].percent <= percent) {\n break;\n }\n }\n frameIdx = mathMin(frameIdx, kfsNum - 2);\n }\n else {\n for (frameIdx = lastFrame; frameIdx < kfsNum; frameIdx++) {\n if (keyframes[frameIdx].percent > percent) {\n break;\n }\n }\n frameIdx = mathMin(frameIdx - 1, kfsNum - 2);\n }\n nextFrame = keyframes[frameIdx + 1];\n frame = keyframes[frameIdx];\n }\n if (!(frame && nextFrame)) {\n return;\n }\n this._lastFr = frameIdx;\n this._lastFrP = percent;\n var interval = (nextFrame.percent - frame.percent);\n var w = interval === 0 ? 1 : mathMin((percent - frame.percent) / interval, 1);\n if (nextFrame.easingFunc) {\n w = nextFrame.easingFunc(w);\n }\n var targetArr = isAdditive ? this._additiveValue\n : (isValueColor ? tmpRgba : target[propName]);\n if ((isArrayValueType(valType) || isValueColor) && !targetArr) {\n targetArr = this._additiveValue = [];\n }\n if (this.discrete) {\n target[propName] = w < 1 ? frame.rawValue : nextFrame.rawValue;\n }\n else if (isArrayValueType(valType)) {\n valType === VALUE_TYPE_1D_ARRAY\n ? interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w)\n : interpolate2DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\n }\n else if (isGradientValueType(valType)) {\n var val = frame[valueKey];\n var nextVal_1 = nextFrame[valueKey];\n var isLinearGradient_1 = valType === VALUE_TYPE_LINEAR_GRADIENT;\n target[propName] = {\n type: isLinearGradient_1 ? 'linear' : 'radial',\n x: interpolateNumber(val.x, nextVal_1.x, w),\n y: interpolateNumber(val.y, nextVal_1.y, w),\n colorStops: map(val.colorStops, function (colorStop, idx) {\n var nextColorStop = nextVal_1.colorStops[idx];\n return {\n offset: interpolateNumber(colorStop.offset, nextColorStop.offset, w),\n color: rgba2String(interpolate1DArray([], colorStop.color, nextColorStop.color, w))\n };\n }),\n global: nextVal_1.global\n };\n if (isLinearGradient_1) {\n target[propName].x2 = interpolateNumber(val.x2, nextVal_1.x2, w);\n target[propName].y2 = interpolateNumber(val.y2, nextVal_1.y2, w);\n }\n else {\n target[propName].r = interpolateNumber(val.r, nextVal_1.r, w);\n }\n }\n else if (isValueColor) {\n interpolate1DArray(targetArr, frame[valueKey], nextFrame[valueKey], w);\n if (!isAdditive) {\n target[propName] = rgba2String(targetArr);\n }\n }\n else {\n var value = interpolateNumber(frame[valueKey], nextFrame[valueKey], w);\n if (isAdditive) {\n this._additiveValue = value;\n }\n else {\n target[propName] = value;\n }\n }\n if (isAdditive) {\n this._addToTarget(target);\n }\n };\n Track.prototype._addToTarget = function (target) {\n var valType = this.valType;\n var propName = this.propName;\n var additiveValue = this._additiveValue;\n if (valType === VALUE_TYPE_NUMBER) {\n target[propName] = target[propName] + additiveValue;\n }\n else if (valType === VALUE_TYPE_COLOR) {\n color.parse(target[propName], tmpRgba);\n add1DArray(tmpRgba, tmpRgba, additiveValue, 1);\n target[propName] = rgba2String(tmpRgba);\n }\n else if (valType === VALUE_TYPE_1D_ARRAY) {\n add1DArray(target[propName], target[propName], additiveValue, 1);\n }\n else if (valType === VALUE_TYPE_2D_ARRAY) {\n add2DArray(target[propName], target[propName], additiveValue, 1);\n }\n };\n return Track;\n}());\nvar Animator = (function () {\n function Animator(target, loop, allowDiscreteAnimation, additiveTo) {\n this._tracks = {};\n this._trackKeys = [];\n this._maxTime = 0;\n this._started = 0;\n this._clip = null;\n this._target = target;\n this._loop = loop;\n if (loop && additiveTo) {\n logError('Can\\' use additive animation on looped animation.');\n return;\n }\n this._additiveAnimators = additiveTo;\n this._allowDiscrete = allowDiscreteAnimation;\n }\n Animator.prototype.getMaxTime = function () {\n return this._maxTime;\n };\n Animator.prototype.getDelay = function () {\n return this._delay;\n };\n Animator.prototype.getLoop = function () {\n return this._loop;\n };\n Animator.prototype.getTarget = function () {\n return this._target;\n };\n Animator.prototype.changeTarget = function (target) {\n this._target = target;\n };\n Animator.prototype.when = function (time, props, easing) {\n return this.whenWithKeys(time, props, keys(props), easing);\n };\n Animator.prototype.whenWithKeys = function (time, props, propNames, easing) {\n var tracks = this._tracks;\n for (var i = 0; i < propNames.length; i++) {\n var propName = propNames[i];\n var track = tracks[propName];\n if (!track) {\n track = tracks[propName] = new Track(propName);\n var initialValue = void 0;\n var additiveTrack = this._getAdditiveTrack(propName);\n if (additiveTrack) {\n var addtiveTrackKfs = additiveTrack.keyframes;\n var lastFinalKf = addtiveTrackKfs[addtiveTrackKfs.length - 1];\n initialValue = lastFinalKf && lastFinalKf.value;\n if (additiveTrack.valType === VALUE_TYPE_COLOR && initialValue) {\n initialValue = rgba2String(initialValue);\n }\n }\n else {\n initialValue = this._target[propName];\n }\n if (initialValue == null) {\n continue;\n }\n if (time > 0) {\n track.addKeyframe(0, cloneValue(initialValue), easing);\n }\n this._trackKeys.push(propName);\n }\n track.addKeyframe(time, cloneValue(props[propName]), easing);\n }\n this._maxTime = Math.max(this._maxTime, time);\n return this;\n };\n Animator.prototype.pause = function () {\n this._clip.pause();\n this._paused = true;\n };\n Animator.prototype.resume = function () {\n this._clip.resume();\n this._paused = false;\n };\n Animator.prototype.isPaused = function () {\n return !!this._paused;\n };\n Animator.prototype.duration = function (duration) {\n this._maxTime = duration;\n this._force = true;\n return this;\n };\n Animator.prototype._doneCallback = function () {\n this._setTracksFinished();\n this._clip = null;\n var doneList = this._doneCbs;\n if (doneList) {\n var len = doneList.length;\n for (var i = 0; i < len; i++) {\n doneList[i].call(this);\n }\n }\n };\n Animator.prototype._abortedCallback = function () {\n this._setTracksFinished();\n var animation = this.animation;\n var abortedList = this._abortedCbs;\n if (animation) {\n animation.removeClip(this._clip);\n }\n this._clip = null;\n if (abortedList) {\n for (var i = 0; i < abortedList.length; i++) {\n abortedList[i].call(this);\n }\n }\n };\n Animator.prototype._setTracksFinished = function () {\n var tracks = this._tracks;\n var tracksKeys = this._trackKeys;\n for (var i = 0; i < tracksKeys.length; i++) {\n tracks[tracksKeys[i]].setFinished();\n }\n };\n Animator.prototype._getAdditiveTrack = function (trackName) {\n var additiveTrack;\n var additiveAnimators = this._additiveAnimators;\n if (additiveAnimators) {\n for (var i = 0; i < additiveAnimators.length; i++) {\n var track = additiveAnimators[i].getTrack(trackName);\n if (track) {\n additiveTrack = track;\n }\n }\n }\n return additiveTrack;\n };\n Animator.prototype.start = function (easing) {\n if (this._started > 0) {\n return;\n }\n this._started = 1;\n var self = this;\n var tracks = [];\n var maxTime = this._maxTime || 0;\n for (var i = 0; i < this._trackKeys.length; i++) {\n var propName = this._trackKeys[i];\n var track = this._tracks[propName];\n var additiveTrack = this._getAdditiveTrack(propName);\n var kfs = track.keyframes;\n var kfsNum = kfs.length;\n track.prepare(maxTime, additiveTrack);\n if (track.needsAnimate()) {\n if (!this._allowDiscrete && track.discrete) {\n var lastKf = kfs[kfsNum - 1];\n if (lastKf) {\n self._target[track.propName] = lastKf.rawValue;\n }\n track.setFinished();\n }\n else {\n tracks.push(track);\n }\n }\n }\n if (tracks.length || this._force) {\n var clip = new Clip({\n life: maxTime,\n loop: this._loop,\n delay: this._delay || 0,\n onframe: function (percent) {\n self._started = 2;\n var additiveAnimators = self._additiveAnimators;\n if (additiveAnimators) {\n var stillHasAdditiveAnimator = false;\n for (var i = 0; i < additiveAnimators.length; i++) {\n if (additiveAnimators[i]._clip) {\n stillHasAdditiveAnimator = true;\n break;\n }\n }\n if (!stillHasAdditiveAnimator) {\n self._additiveAnimators = null;\n }\n }\n for (var i = 0; i < tracks.length; i++) {\n tracks[i].step(self._target, percent);\n }\n var onframeList = self._onframeCbs;\n if (onframeList) {\n for (var i = 0; i < onframeList.length; i++) {\n onframeList[i](self._target, percent);\n }\n }\n },\n ondestroy: function () {\n self._doneCallback();\n }\n });\n this._clip = clip;\n if (this.animation) {\n this.animation.addClip(clip);\n }\n if (easing) {\n clip.setEasing(easing);\n }\n }\n else {\n this._doneCallback();\n }\n return this;\n };\n Animator.prototype.stop = function (forwardToLast) {\n if (!this._clip) {\n return;\n }\n var clip = this._clip;\n if (forwardToLast) {\n clip.onframe(1);\n }\n this._abortedCallback();\n };\n Animator.prototype.delay = function (time) {\n this._delay = time;\n return this;\n };\n Animator.prototype.during = function (cb) {\n if (cb) {\n if (!this._onframeCbs) {\n this._onframeCbs = [];\n }\n this._onframeCbs.push(cb);\n }\n return this;\n };\n Animator.prototype.done = function (cb) {\n if (cb) {\n if (!this._doneCbs) {\n this._doneCbs = [];\n }\n this._doneCbs.push(cb);\n }\n return this;\n };\n Animator.prototype.aborted = function (cb) {\n if (cb) {\n if (!this._abortedCbs) {\n this._abortedCbs = [];\n }\n this._abortedCbs.push(cb);\n }\n return this;\n };\n Animator.prototype.getClip = function () {\n return this._clip;\n };\n Animator.prototype.getTrack = function (propName) {\n return this._tracks[propName];\n };\n Animator.prototype.getTracks = function () {\n var _this = this;\n return map(this._trackKeys, function (key) { return _this._tracks[key]; });\n };\n Animator.prototype.stopTracks = function (propNames, forwardToLast) {\n if (!propNames.length || !this._clip) {\n return true;\n }\n var tracks = this._tracks;\n var tracksKeys = this._trackKeys;\n for (var i = 0; i < propNames.length; i++) {\n var track = tracks[propNames[i]];\n if (track && !track.isFinished()) {\n if (forwardToLast) {\n track.step(this._target, 1);\n }\n else if (this._started === 1) {\n track.step(this._target, 0);\n }\n track.setFinished();\n }\n }\n var allAborted = true;\n for (var i = 0; i < tracksKeys.length; i++) {\n if (!tracks[tracksKeys[i]].isFinished()) {\n allAborted = false;\n break;\n }\n }\n if (allAborted) {\n this._abortedCallback();\n }\n return allAborted;\n };\n Animator.prototype.saveTo = function (target, trackKeys, firstOrLast) {\n if (!target) {\n return;\n }\n trackKeys = trackKeys || this._trackKeys;\n for (var i = 0; i < trackKeys.length; i++) {\n var propName = trackKeys[i];\n var track = this._tracks[propName];\n if (!track || track.isFinished()) {\n continue;\n }\n var kfs = track.keyframes;\n var kf = kfs[firstOrLast ? 0 : kfs.length - 1];\n if (kf) {\n target[propName] = cloneValue(kf.rawValue);\n }\n }\n };\n Animator.prototype.__changeFinalValue = function (finalProps, trackKeys) {\n trackKeys = trackKeys || keys(finalProps);\n for (var i = 0; i < trackKeys.length; i++) {\n var propName = trackKeys[i];\n var track = this._tracks[propName];\n if (!track) {\n continue;\n }\n var kfs = track.keyframes;\n if (kfs.length > 1) {\n var lastKf = kfs.pop();\n track.addKeyframe(lastKf.time, finalProps[propName]);\n track.prepare(this._maxTime, track.getAdditiveTrack());\n }\n }\n };\n return Animator;\n}());\nexport default Animator;\n","var Eventful = (function () {\n function Eventful(eventProcessors) {\n if (eventProcessors) {\n this._$eventProcessor = eventProcessors;\n }\n }\n Eventful.prototype.on = function (event, query, handler, context) {\n if (!this._$handlers) {\n this._$handlers = {};\n }\n var _h = this._$handlers;\n if (typeof query === 'function') {\n context = handler;\n handler = query;\n query = null;\n }\n if (!handler || !event) {\n return this;\n }\n var eventProcessor = this._$eventProcessor;\n if (query != null && eventProcessor && eventProcessor.normalizeQuery) {\n query = eventProcessor.normalizeQuery(query);\n }\n if (!_h[event]) {\n _h[event] = [];\n }\n for (var i = 0; i < _h[event].length; i++) {\n if (_h[event][i].h === handler) {\n return this;\n }\n }\n var wrap = {\n h: handler,\n query: query,\n ctx: (context || this),\n callAtLast: handler.zrEventfulCallAtLast\n };\n var lastIndex = _h[event].length - 1;\n var lastWrap = _h[event][lastIndex];\n (lastWrap && lastWrap.callAtLast)\n ? _h[event].splice(lastIndex, 0, wrap)\n : _h[event].push(wrap);\n return this;\n };\n Eventful.prototype.isSilent = function (eventName) {\n var _h = this._$handlers;\n return !_h || !_h[eventName] || !_h[eventName].length;\n };\n Eventful.prototype.off = function (eventType, handler) {\n var _h = this._$handlers;\n if (!_h) {\n return this;\n }\n if (!eventType) {\n this._$handlers = {};\n return this;\n }\n if (handler) {\n if (_h[eventType]) {\n var newList = [];\n for (var i = 0, l = _h[eventType].length; i < l; i++) {\n if (_h[eventType][i].h !== handler) {\n newList.push(_h[eventType][i]);\n }\n }\n _h[eventType] = newList;\n }\n if (_h[eventType] && _h[eventType].length === 0) {\n delete _h[eventType];\n }\n }\n else {\n delete _h[eventType];\n }\n return this;\n };\n Eventful.prototype.trigger = function (eventType) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!this._$handlers) {\n return this;\n }\n var _h = this._$handlers[eventType];\n var eventProcessor = this._$eventProcessor;\n if (_h) {\n var argLen = args.length;\n var len = _h.length;\n for (var i = 0; i < len; i++) {\n var hItem = _h[i];\n if (eventProcessor\n && eventProcessor.filter\n && hItem.query != null\n && !eventProcessor.filter(eventType, hItem.query)) {\n continue;\n }\n switch (argLen) {\n case 0:\n hItem.h.call(hItem.ctx);\n break;\n case 1:\n hItem.h.call(hItem.ctx, args[0]);\n break;\n case 2:\n hItem.h.call(hItem.ctx, args[0], args[1]);\n break;\n default:\n hItem.h.apply(hItem.ctx, args);\n break;\n }\n }\n }\n eventProcessor && eventProcessor.afterTrigger\n && eventProcessor.afterTrigger(eventType);\n return this;\n };\n Eventful.prototype.triggerWithContext = function (type) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!this._$handlers) {\n return this;\n }\n var _h = this._$handlers[type];\n var eventProcessor = this._$eventProcessor;\n if (_h) {\n var argLen = args.length;\n var ctx = args[argLen - 1];\n var len = _h.length;\n for (var i = 0; i < len; i++) {\n var hItem = _h[i];\n if (eventProcessor\n && eventProcessor.filter\n && hItem.query != null\n && !eventProcessor.filter(type, hItem.query)) {\n continue;\n }\n switch (argLen) {\n case 0:\n hItem.h.call(ctx);\n break;\n case 1:\n hItem.h.call(ctx, args[0]);\n break;\n case 2:\n hItem.h.call(ctx, args[0], args[1]);\n break;\n default:\n hItem.h.apply(ctx, args.slice(1, argLen - 1));\n break;\n }\n }\n }\n eventProcessor && eventProcessor.afterTrigger\n && eventProcessor.afterTrigger(type);\n return this;\n };\n return Eventful;\n}());\nexport default Eventful;\n","import env from './core/env.js';\nvar dpr = 1;\nif (env.hasGlobalWindow) {\n dpr = Math.max(window.devicePixelRatio\n || (window.screen && window.screen.deviceXDPI / window.screen.logicalXDPI)\n || 1, 1);\n}\nexport var debugMode = 0;\nexport var devicePixelRatio = dpr;\nexport var DARK_MODE_THRESHOLD = 0.4;\nexport var DARK_LABEL_COLOR = '#333';\nexport var LIGHT_LABEL_COLOR = '#ccc';\nexport var LIGHTER_LABEL_COLOR = '#eee';\n","import Transformable, { TRANSFORMABLE_PROPS } from './core/Transformable.js';\nimport Animator, { cloneValue } from './animation/Animator.js';\nimport BoundingRect from './core/BoundingRect.js';\nimport Eventful from './core/Eventful.js';\nimport { calculateTextPosition, parsePercent } from './contain/text.js';\nimport { guid, isObject, keys, extend, indexOf, logError, mixin, isArrayLike, isTypedArray, isGradientObject, filter, reduce } from './core/util.js';\nimport { LIGHT_LABEL_COLOR, DARK_LABEL_COLOR } from './config.js';\nimport { parse, stringify } from './tool/color.js';\nimport { REDRAW_BIT } from './graphic/constants.js';\nimport { invert } from './core/matrix.js';\nexport var PRESERVED_NORMAL_STATE = '__zr_normal__';\nvar PRIMARY_STATES_KEYS = TRANSFORMABLE_PROPS.concat(['ignore']);\nvar DEFAULT_ANIMATABLE_MAP = reduce(TRANSFORMABLE_PROPS, function (obj, key) {\n obj[key] = true;\n return obj;\n}, { ignore: false });\nvar tmpTextPosCalcRes = {};\nvar tmpBoundingRect = new BoundingRect(0, 0, 0, 0);\nvar tmpInnerTextTrans = [];\nvar Element = (function () {\n function Element(props) {\n this.id = guid();\n this.animators = [];\n this.currentStates = [];\n this.states = {};\n this._init(props);\n }\n Element.prototype._init = function (props) {\n this.attr(props);\n };\n Element.prototype.drift = function (dx, dy, e) {\n switch (this.draggable) {\n case 'horizontal':\n dy = 0;\n break;\n case 'vertical':\n dx = 0;\n break;\n }\n var m = this.transform;\n if (!m) {\n m = this.transform = [1, 0, 0, 1, 0, 0];\n }\n m[4] += dx;\n m[5] += dy;\n this.decomposeTransform();\n this.markRedraw();\n };\n Element.prototype.beforeUpdate = function () { };\n Element.prototype.afterUpdate = function () { };\n Element.prototype.update = function () {\n this.updateTransform();\n if (this.__dirty) {\n this.updateInnerText();\n }\n };\n Element.prototype.updateInnerText = function (forceUpdate) {\n var textEl = this._textContent;\n if (textEl && (!textEl.ignore || forceUpdate)) {\n if (!this.textConfig) {\n this.textConfig = {};\n }\n var textConfig = this.textConfig;\n var isLocal = textConfig.local;\n var innerTransformable = textEl.innerTransformable;\n var textAlign = void 0;\n var textVerticalAlign = void 0;\n var textStyleChanged = false;\n innerTransformable.parent = isLocal ? this : null;\n var innerOrigin = false;\n innerTransformable.copyTransform(textEl);\n var hasPosition = textConfig.position != null;\n var autoOverflowArea = textConfig.autoOverflowArea;\n var layoutRect = void 0;\n if (autoOverflowArea || hasPosition) {\n layoutRect = tmpBoundingRect;\n if (textConfig.layoutRect) {\n layoutRect.copy(textConfig.layoutRect);\n }\n else {\n layoutRect.copy(this.getBoundingRect());\n }\n if (!isLocal) {\n layoutRect.applyTransform(this.transform);\n }\n }\n if (hasPosition) {\n if (this.calculateTextPosition) {\n this.calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\n }\n else {\n calculateTextPosition(tmpTextPosCalcRes, textConfig, layoutRect);\n }\n innerTransformable.x = tmpTextPosCalcRes.x;\n innerTransformable.y = tmpTextPosCalcRes.y;\n textAlign = tmpTextPosCalcRes.align;\n textVerticalAlign = tmpTextPosCalcRes.verticalAlign;\n var textOrigin = textConfig.origin;\n if (textOrigin && textConfig.rotation != null) {\n var relOriginX = void 0;\n var relOriginY = void 0;\n if (textOrigin === 'center') {\n relOriginX = layoutRect.width * 0.5;\n relOriginY = layoutRect.height * 0.5;\n }\n else {\n relOriginX = parsePercent(textOrigin[0], layoutRect.width);\n relOriginY = parsePercent(textOrigin[1], layoutRect.height);\n }\n innerOrigin = true;\n innerTransformable.originX = -innerTransformable.x + relOriginX + (isLocal ? 0 : layoutRect.x);\n innerTransformable.originY = -innerTransformable.y + relOriginY + (isLocal ? 0 : layoutRect.y);\n }\n }\n if (textConfig.rotation != null) {\n innerTransformable.rotation = textConfig.rotation;\n }\n var textOffset = textConfig.offset;\n if (textOffset) {\n innerTransformable.x += textOffset[0];\n innerTransformable.y += textOffset[1];\n if (!innerOrigin) {\n innerTransformable.originX = -textOffset[0];\n innerTransformable.originY = -textOffset[1];\n }\n }\n var innerTextDefaultStyle = this._innerTextDefaultStyle || (this._innerTextDefaultStyle = {});\n if (autoOverflowArea) {\n var overflowRect = innerTextDefaultStyle.overflowRect =\n innerTextDefaultStyle.overflowRect || new BoundingRect(0, 0, 0, 0);\n innerTransformable.getLocalTransform(tmpInnerTextTrans);\n invert(tmpInnerTextTrans, tmpInnerTextTrans);\n BoundingRect.copy(overflowRect, layoutRect);\n overflowRect.applyTransform(tmpInnerTextTrans);\n }\n else {\n innerTextDefaultStyle.overflowRect = null;\n }\n var isInside = textConfig.inside == null\n ? (typeof textConfig.position === 'string' && textConfig.position.indexOf('inside') >= 0)\n : textConfig.inside;\n var textFill = void 0;\n var textStroke = void 0;\n var autoStroke = void 0;\n if (isInside && this.canBeInsideText()) {\n textFill = textConfig.insideFill;\n textStroke = textConfig.insideStroke;\n if (textFill == null || textFill === 'auto') {\n textFill = this.getInsideTextFill();\n }\n if (textStroke == null || textStroke === 'auto') {\n textStroke = this.getInsideTextStroke(textFill);\n autoStroke = true;\n }\n }\n else {\n textFill = textConfig.outsideFill;\n textStroke = textConfig.outsideStroke;\n if (textFill == null || textFill === 'auto') {\n textFill = this.getOutsideFill();\n }\n if (textStroke == null || textStroke === 'auto') {\n textStroke = this.getOutsideStroke(textFill);\n autoStroke = true;\n }\n }\n textFill = textFill || '#000';\n if (textFill !== innerTextDefaultStyle.fill\n || textStroke !== innerTextDefaultStyle.stroke\n || autoStroke !== innerTextDefaultStyle.autoStroke\n || textAlign !== innerTextDefaultStyle.align\n || textVerticalAlign !== innerTextDefaultStyle.verticalAlign) {\n textStyleChanged = true;\n innerTextDefaultStyle.fill = textFill;\n innerTextDefaultStyle.stroke = textStroke;\n innerTextDefaultStyle.autoStroke = autoStroke;\n innerTextDefaultStyle.align = textAlign;\n innerTextDefaultStyle.verticalAlign = textVerticalAlign;\n textEl.setDefaultTextStyle(innerTextDefaultStyle);\n }\n textEl.__dirty |= REDRAW_BIT;\n if (textStyleChanged) {\n textEl.dirtyStyle(true);\n }\n }\n };\n Element.prototype.canBeInsideText = function () {\n return true;\n };\n Element.prototype.getInsideTextFill = function () {\n return '#fff';\n };\n Element.prototype.getInsideTextStroke = function (textFill) {\n return '#000';\n };\n Element.prototype.getOutsideFill = function () {\n return this.__zr && this.__zr.isDarkMode() ? LIGHT_LABEL_COLOR : DARK_LABEL_COLOR;\n };\n Element.prototype.getOutsideStroke = function (textFill) {\n var backgroundColor = this.__zr && this.__zr.getBackgroundColor();\n var colorArr = typeof backgroundColor === 'string' && parse(backgroundColor);\n if (!colorArr) {\n colorArr = [255, 255, 255, 1];\n }\n var alpha = colorArr[3];\n var isDark = this.__zr.isDarkMode();\n for (var i = 0; i < 3; i++) {\n colorArr[i] = colorArr[i] * alpha + (isDark ? 0 : 255) * (1 - alpha);\n }\n colorArr[3] = 1;\n return stringify(colorArr, 'rgba');\n };\n Element.prototype.traverse = function (cb, context) { };\n Element.prototype.attrKV = function (key, value) {\n if (key === 'textConfig') {\n this.setTextConfig(value);\n }\n else if (key === 'textContent') {\n this.setTextContent(value);\n }\n else if (key === 'clipPath') {\n this.setClipPath(value);\n }\n else if (key === 'extra') {\n this.extra = this.extra || {};\n extend(this.extra, value);\n }\n else {\n this[key] = value;\n }\n };\n Element.prototype.hide = function () {\n this.ignore = true;\n this.markRedraw();\n };\n Element.prototype.show = function () {\n this.ignore = false;\n this.markRedraw();\n };\n Element.prototype.attr = function (keyOrObj, value) {\n if (typeof keyOrObj === 'string') {\n this.attrKV(keyOrObj, value);\n }\n else if (isObject(keyOrObj)) {\n var obj = keyOrObj;\n var keysArr = keys(obj);\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n this.attrKV(key, keyOrObj[key]);\n }\n }\n this.markRedraw();\n return this;\n };\n Element.prototype.saveCurrentToNormalState = function (toState) {\n this._innerSaveToNormal(toState);\n var normalState = this._normalState;\n for (var i = 0; i < this.animators.length; i++) {\n var animator = this.animators[i];\n var fromStateTransition = animator.__fromStateTransition;\n if (animator.getLoop() || fromStateTransition && fromStateTransition !== PRESERVED_NORMAL_STATE) {\n continue;\n }\n var targetName = animator.targetName;\n var target = targetName\n ? normalState[targetName] : normalState;\n animator.saveTo(target);\n }\n };\n Element.prototype._innerSaveToNormal = function (toState) {\n var normalState = this._normalState;\n if (!normalState) {\n normalState = this._normalState = {};\n }\n if (toState.textConfig && !normalState.textConfig) {\n normalState.textConfig = this.textConfig;\n }\n this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\n };\n Element.prototype._savePrimaryToNormal = function (toState, normalState, primaryKeys) {\n for (var i = 0; i < primaryKeys.length; i++) {\n var key = primaryKeys[i];\n if (toState[key] != null && !(key in normalState)) {\n normalState[key] = this[key];\n }\n }\n };\n Element.prototype.hasState = function () {\n return this.currentStates.length > 0;\n };\n Element.prototype.getState = function (name) {\n return this.states[name];\n };\n Element.prototype.ensureState = function (name) {\n var states = this.states;\n if (!states[name]) {\n states[name] = {};\n }\n return states[name];\n };\n Element.prototype.clearStates = function (noAnimation) {\n this.useState(PRESERVED_NORMAL_STATE, false, noAnimation);\n };\n Element.prototype.useState = function (stateName, keepCurrentStates, noAnimation, forceUseHoverLayer) {\n var toNormalState = stateName === PRESERVED_NORMAL_STATE;\n var hasStates = this.hasState();\n if (!hasStates && toNormalState) {\n return;\n }\n var currentStates = this.currentStates;\n var animationCfg = this.stateTransition;\n if (indexOf(currentStates, stateName) >= 0 && (keepCurrentStates || currentStates.length === 1)) {\n return;\n }\n var state;\n if (this.stateProxy && !toNormalState) {\n state = this.stateProxy(stateName);\n }\n if (!state) {\n state = (this.states && this.states[stateName]);\n }\n if (!state && !toNormalState) {\n logError(\"State \" + stateName + \" not exists.\");\n return;\n }\n if (!toNormalState) {\n this.saveCurrentToNormalState(state);\n }\n var useHoverLayer = !!((state && state.hoverLayer) || forceUseHoverLayer);\n if (useHoverLayer) {\n this._toggleHoverLayerFlag(true);\n }\n this._applyStateObj(stateName, state, this._normalState, keepCurrentStates, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\n var textContent = this._textContent;\n var textGuide = this._textGuide;\n if (textContent) {\n textContent.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer);\n }\n if (textGuide) {\n textGuide.useState(stateName, keepCurrentStates, noAnimation, useHoverLayer);\n }\n if (toNormalState) {\n this.currentStates = [];\n this._normalState = {};\n }\n else {\n if (!keepCurrentStates) {\n this.currentStates = [stateName];\n }\n else {\n this.currentStates.push(stateName);\n }\n }\n this._updateAnimationTargets();\n this.markRedraw();\n if (!useHoverLayer && this.__inHover) {\n this._toggleHoverLayerFlag(false);\n this.__dirty &= ~REDRAW_BIT;\n }\n return state;\n };\n Element.prototype.useStates = function (states, noAnimation, forceUseHoverLayer) {\n if (!states.length) {\n this.clearStates();\n }\n else {\n var stateObjects = [];\n var currentStates = this.currentStates;\n var len = states.length;\n var notChange = len === currentStates.length;\n if (notChange) {\n for (var i = 0; i < len; i++) {\n if (states[i] !== currentStates[i]) {\n notChange = false;\n break;\n }\n }\n }\n if (notChange) {\n return;\n }\n for (var i = 0; i < len; i++) {\n var stateName = states[i];\n var stateObj = void 0;\n if (this.stateProxy) {\n stateObj = this.stateProxy(stateName, states);\n }\n if (!stateObj) {\n stateObj = this.states[stateName];\n }\n if (stateObj) {\n stateObjects.push(stateObj);\n }\n }\n var lastStateObj = stateObjects[len - 1];\n var useHoverLayer = !!((lastStateObj && lastStateObj.hoverLayer) || forceUseHoverLayer);\n if (useHoverLayer) {\n this._toggleHoverLayerFlag(true);\n }\n var mergedState = this._mergeStates(stateObjects);\n var animationCfg = this.stateTransition;\n this.saveCurrentToNormalState(mergedState);\n this._applyStateObj(states.join(','), mergedState, this._normalState, false, !noAnimation && !this.__inHover && animationCfg && animationCfg.duration > 0, animationCfg);\n var textContent = this._textContent;\n var textGuide = this._textGuide;\n if (textContent) {\n textContent.useStates(states, noAnimation, useHoverLayer);\n }\n if (textGuide) {\n textGuide.useStates(states, noAnimation, useHoverLayer);\n }\n this._updateAnimationTargets();\n this.currentStates = states.slice();\n this.markRedraw();\n if (!useHoverLayer && this.__inHover) {\n this._toggleHoverLayerFlag(false);\n this.__dirty &= ~REDRAW_BIT;\n }\n }\n };\n Element.prototype.isSilent = function () {\n var el = this;\n while (el) {\n if (el.silent) {\n return true;\n }\n var hostEl = el.__hostTarget;\n el = hostEl ? (el.ignoreHostSilent ? null : hostEl) : el.parent;\n }\n return false;\n };\n Element.prototype._updateAnimationTargets = function () {\n for (var i = 0; i < this.animators.length; i++) {\n var animator = this.animators[i];\n if (animator.targetName) {\n animator.changeTarget(this[animator.targetName]);\n }\n }\n };\n Element.prototype.removeState = function (state) {\n var idx = indexOf(this.currentStates, state);\n if (idx >= 0) {\n var currentStates = this.currentStates.slice();\n currentStates.splice(idx, 1);\n this.useStates(currentStates);\n }\n };\n Element.prototype.replaceState = function (oldState, newState, forceAdd) {\n var currentStates = this.currentStates.slice();\n var idx = indexOf(currentStates, oldState);\n var newStateExists = indexOf(currentStates, newState) >= 0;\n if (idx >= 0) {\n if (!newStateExists) {\n currentStates[idx] = newState;\n }\n else {\n currentStates.splice(idx, 1);\n }\n }\n else if (forceAdd && !newStateExists) {\n currentStates.push(newState);\n }\n this.useStates(currentStates);\n };\n Element.prototype.toggleState = function (state, enable) {\n if (enable) {\n this.useState(state, true);\n }\n else {\n this.removeState(state);\n }\n };\n Element.prototype._mergeStates = function (states) {\n var mergedState = {};\n var mergedTextConfig;\n for (var i = 0; i < states.length; i++) {\n var state = states[i];\n extend(mergedState, state);\n if (state.textConfig) {\n mergedTextConfig = mergedTextConfig || {};\n extend(mergedTextConfig, state.textConfig);\n }\n }\n if (mergedTextConfig) {\n mergedState.textConfig = mergedTextConfig;\n }\n return mergedState;\n };\n Element.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n var needsRestoreToNormal = !(state && keepCurrentStates);\n if (state && state.textConfig) {\n this.textConfig = extend({}, keepCurrentStates ? this.textConfig : normalState.textConfig);\n extend(this.textConfig, state.textConfig);\n }\n else if (needsRestoreToNormal) {\n if (normalState.textConfig) {\n this.textConfig = normalState.textConfig;\n }\n }\n var transitionTarget = {};\n var hasTransition = false;\n for (var i = 0; i < PRIMARY_STATES_KEYS.length; i++) {\n var key = PRIMARY_STATES_KEYS[i];\n var propNeedsTransition = transition && DEFAULT_ANIMATABLE_MAP[key];\n if (state && state[key] != null) {\n if (propNeedsTransition) {\n hasTransition = true;\n transitionTarget[key] = state[key];\n }\n else {\n this[key] = state[key];\n }\n }\n else if (needsRestoreToNormal) {\n if (normalState[key] != null) {\n if (propNeedsTransition) {\n hasTransition = true;\n transitionTarget[key] = normalState[key];\n }\n else {\n this[key] = normalState[key];\n }\n }\n }\n }\n if (!transition) {\n for (var i = 0; i < this.animators.length; i++) {\n var animator = this.animators[i];\n var targetName = animator.targetName;\n if (!animator.getLoop()) {\n animator.__changeFinalValue(targetName\n ? (state || normalState)[targetName]\n : (state || normalState));\n }\n }\n }\n if (hasTransition) {\n this._transitionState(stateName, transitionTarget, animationCfg);\n }\n };\n Element.prototype._attachComponent = function (componentEl) {\n if (componentEl.__zr && !componentEl.__hostTarget) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('Text element has been added to zrender.');\n }\n return;\n }\n if (componentEl === this) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('Recursive component attachment.');\n }\n return;\n }\n var zr = this.__zr;\n if (zr) {\n componentEl.addSelfToZr(zr);\n }\n componentEl.__zr = zr;\n componentEl.__hostTarget = this;\n };\n Element.prototype._detachComponent = function (componentEl) {\n if (componentEl.__zr) {\n componentEl.removeSelfFromZr(componentEl.__zr);\n }\n componentEl.__zr = null;\n componentEl.__hostTarget = null;\n };\n Element.prototype.getClipPath = function () {\n return this._clipPath;\n };\n Element.prototype.setClipPath = function (clipPath) {\n if (this._clipPath && this._clipPath !== clipPath) {\n this.removeClipPath();\n }\n this._attachComponent(clipPath);\n this._clipPath = clipPath;\n this.markRedraw();\n };\n Element.prototype.removeClipPath = function () {\n var clipPath = this._clipPath;\n if (clipPath) {\n this._detachComponent(clipPath);\n this._clipPath = null;\n this.markRedraw();\n }\n };\n Element.prototype.getTextContent = function () {\n return this._textContent;\n };\n Element.prototype.setTextContent = function (textEl) {\n var previousTextContent = this._textContent;\n if (previousTextContent === textEl) {\n return;\n }\n if (previousTextContent && previousTextContent !== textEl) {\n this.removeTextContent();\n }\n if (process.env.NODE_ENV !== 'production') {\n if (textEl.__zr && !textEl.__hostTarget) {\n throw new Error('Text element has been added to zrender.');\n }\n }\n textEl.innerTransformable = new Transformable();\n this._attachComponent(textEl);\n this._textContent = textEl;\n this.markRedraw();\n };\n Element.prototype.setTextConfig = function (cfg) {\n if (!this.textConfig) {\n this.textConfig = {};\n }\n extend(this.textConfig, cfg);\n this.markRedraw();\n };\n Element.prototype.removeTextConfig = function () {\n this.textConfig = null;\n this.markRedraw();\n };\n Element.prototype.removeTextContent = function () {\n var textEl = this._textContent;\n if (textEl) {\n textEl.innerTransformable = null;\n this._detachComponent(textEl);\n this._textContent = null;\n this._innerTextDefaultStyle = null;\n this.markRedraw();\n }\n };\n Element.prototype.getTextGuideLine = function () {\n return this._textGuide;\n };\n Element.prototype.setTextGuideLine = function (guideLine) {\n if (this._textGuide && this._textGuide !== guideLine) {\n this.removeTextGuideLine();\n }\n this._attachComponent(guideLine);\n this._textGuide = guideLine;\n this.markRedraw();\n };\n Element.prototype.removeTextGuideLine = function () {\n var textGuide = this._textGuide;\n if (textGuide) {\n this._detachComponent(textGuide);\n this._textGuide = null;\n this.markRedraw();\n }\n };\n Element.prototype.markRedraw = function () {\n this.__dirty |= REDRAW_BIT;\n var zr = this.__zr;\n if (zr) {\n if (this.__inHover) {\n zr.refreshHover();\n }\n else {\n zr.refresh();\n }\n }\n if (this.__hostTarget) {\n this.__hostTarget.markRedraw();\n }\n };\n Element.prototype.dirty = function () {\n this.markRedraw();\n };\n Element.prototype._toggleHoverLayerFlag = function (inHover) {\n this.__inHover = inHover;\n var textContent = this._textContent;\n var textGuide = this._textGuide;\n if (textContent) {\n textContent.__inHover = inHover;\n }\n if (textGuide) {\n textGuide.__inHover = inHover;\n }\n };\n Element.prototype.addSelfToZr = function (zr) {\n if (this.__zr === zr) {\n return;\n }\n this.__zr = zr;\n var animators = this.animators;\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.addAnimator(animators[i]);\n }\n }\n if (this._clipPath) {\n this._clipPath.addSelfToZr(zr);\n }\n if (this._textContent) {\n this._textContent.addSelfToZr(zr);\n }\n if (this._textGuide) {\n this._textGuide.addSelfToZr(zr);\n }\n };\n Element.prototype.removeSelfFromZr = function (zr) {\n if (!this.__zr) {\n return;\n }\n this.__zr = null;\n var animators = this.animators;\n if (animators) {\n for (var i = 0; i < animators.length; i++) {\n zr.animation.removeAnimator(animators[i]);\n }\n }\n if (this._clipPath) {\n this._clipPath.removeSelfFromZr(zr);\n }\n if (this._textContent) {\n this._textContent.removeSelfFromZr(zr);\n }\n if (this._textGuide) {\n this._textGuide.removeSelfFromZr(zr);\n }\n };\n Element.prototype.animate = function (key, loop, allowDiscreteAnimation) {\n var target = key ? this[key] : this;\n if (process.env.NODE_ENV !== 'production') {\n if (!target) {\n logError('Property \"'\n + key\n + '\" is not existed in element '\n + this.id);\n return;\n }\n }\n var animator = new Animator(target, loop, allowDiscreteAnimation);\n key && (animator.targetName = key);\n this.addAnimator(animator, key);\n return animator;\n };\n Element.prototype.addAnimator = function (animator, key) {\n var zr = this.__zr;\n var el = this;\n animator.during(function () {\n el.updateDuringAnimation(key);\n }).done(function () {\n var animators = el.animators;\n var idx = indexOf(animators, animator);\n if (idx >= 0) {\n animators.splice(idx, 1);\n }\n });\n this.animators.push(animator);\n if (zr) {\n zr.animation.addAnimator(animator);\n }\n zr && zr.wakeUp();\n };\n Element.prototype.updateDuringAnimation = function (key) {\n this.markRedraw();\n };\n Element.prototype.stopAnimation = function (scope, forwardToLast) {\n var animators = this.animators;\n var len = animators.length;\n var leftAnimators = [];\n for (var i = 0; i < len; i++) {\n var animator = animators[i];\n if (!scope || scope === animator.scope) {\n animator.stop(forwardToLast);\n }\n else {\n leftAnimators.push(animator);\n }\n }\n this.animators = leftAnimators;\n return this;\n };\n Element.prototype.animateTo = function (target, cfg, animationProps) {\n animateTo(this, target, cfg, animationProps);\n };\n Element.prototype.animateFrom = function (target, cfg, animationProps) {\n animateTo(this, target, cfg, animationProps, true);\n };\n Element.prototype._transitionState = function (stateName, target, cfg, animationProps) {\n var animators = animateTo(this, target, cfg, animationProps);\n for (var i = 0; i < animators.length; i++) {\n animators[i].__fromStateTransition = stateName;\n }\n };\n Element.prototype.getBoundingRect = function () {\n return null;\n };\n Element.prototype.getPaintRect = function () {\n return null;\n };\n Element.initDefaultProps = (function () {\n var elProto = Element.prototype;\n elProto.type = 'element';\n elProto.name = '';\n elProto.ignore =\n elProto.silent =\n elProto.ignoreHostSilent =\n elProto.isGroup =\n elProto.draggable =\n elProto.dragging =\n elProto.ignoreClip =\n elProto.__inHover = false;\n elProto.__dirty = REDRAW_BIT;\n var logs = {};\n function logDeprecatedError(key, xKey, yKey) {\n if (!logs[key + xKey + yKey]) {\n console.warn(\"DEPRECATED: '\" + key + \"' has been deprecated. use '\" + xKey + \"', '\" + yKey + \"' instead\");\n logs[key + xKey + yKey] = true;\n }\n }\n function createLegacyProperty(key, privateKey, xKey, yKey) {\n Object.defineProperty(elProto, key, {\n get: function () {\n if (process.env.NODE_ENV !== 'production') {\n logDeprecatedError(key, xKey, yKey);\n }\n if (!this[privateKey]) {\n var pos = this[privateKey] = [];\n enhanceArray(this, pos);\n }\n return this[privateKey];\n },\n set: function (pos) {\n if (process.env.NODE_ENV !== 'production') {\n logDeprecatedError(key, xKey, yKey);\n }\n this[xKey] = pos[0];\n this[yKey] = pos[1];\n this[privateKey] = pos;\n enhanceArray(this, pos);\n }\n });\n function enhanceArray(self, pos) {\n Object.defineProperty(pos, 0, {\n get: function () {\n return self[xKey];\n },\n set: function (val) {\n self[xKey] = val;\n }\n });\n Object.defineProperty(pos, 1, {\n get: function () {\n return self[yKey];\n },\n set: function (val) {\n self[yKey] = val;\n }\n });\n }\n }\n if (Object.defineProperty) {\n createLegacyProperty('position', '_legacyPos', 'x', 'y');\n createLegacyProperty('scale', '_legacyScale', 'scaleX', 'scaleY');\n createLegacyProperty('origin', '_legacyOrigin', 'originX', 'originY');\n }\n })();\n return Element;\n}());\nmixin(Element, Eventful);\nmixin(Element, Transformable);\nfunction animateTo(animatable, target, cfg, animationProps, reverse) {\n cfg = cfg || {};\n var animators = [];\n animateToShallow(animatable, '', animatable, target, cfg, animationProps, animators, reverse);\n var finishCount = animators.length;\n var doneHappened = false;\n var cfgDone = cfg.done;\n var cfgAborted = cfg.aborted;\n var doneCb = function () {\n doneHappened = true;\n finishCount--;\n if (finishCount <= 0) {\n doneHappened\n ? (cfgDone && cfgDone())\n : (cfgAborted && cfgAborted());\n }\n };\n var abortedCb = function () {\n finishCount--;\n if (finishCount <= 0) {\n doneHappened\n ? (cfgDone && cfgDone())\n : (cfgAborted && cfgAborted());\n }\n };\n if (!finishCount) {\n cfgDone && cfgDone();\n }\n if (animators.length > 0 && cfg.during) {\n animators[0].during(function (target, percent) {\n cfg.during(percent);\n });\n }\n for (var i = 0; i < animators.length; i++) {\n var animator = animators[i];\n if (doneCb) {\n animator.done(doneCb);\n }\n if (abortedCb) {\n animator.aborted(abortedCb);\n }\n if (cfg.force) {\n animator.duration(cfg.duration);\n }\n animator.start(cfg.easing);\n }\n return animators;\n}\nfunction copyArrShallow(source, target, len) {\n for (var i = 0; i < len; i++) {\n source[i] = target[i];\n }\n}\nfunction is2DArray(value) {\n return isArrayLike(value[0]);\n}\nfunction copyValue(target, source, key) {\n if (isArrayLike(source[key])) {\n if (!isArrayLike(target[key])) {\n target[key] = [];\n }\n if (isTypedArray(source[key])) {\n var len = source[key].length;\n if (target[key].length !== len) {\n target[key] = new (source[key].constructor)(len);\n copyArrShallow(target[key], source[key], len);\n }\n }\n else {\n var sourceArr = source[key];\n var targetArr = target[key];\n var len0 = sourceArr.length;\n if (is2DArray(sourceArr)) {\n var len1 = sourceArr[0].length;\n for (var i = 0; i < len0; i++) {\n if (!targetArr[i]) {\n targetArr[i] = Array.prototype.slice.call(sourceArr[i]);\n }\n else {\n copyArrShallow(targetArr[i], sourceArr[i], len1);\n }\n }\n }\n else {\n copyArrShallow(targetArr, sourceArr, len0);\n }\n targetArr.length = sourceArr.length;\n }\n }\n else {\n target[key] = source[key];\n }\n}\nfunction isValueSame(val1, val2) {\n return val1 === val2\n || isArrayLike(val1) && isArrayLike(val2) && is1DArraySame(val1, val2);\n}\nfunction is1DArraySame(arr0, arr1) {\n var len = arr0.length;\n if (len !== arr1.length) {\n return false;\n }\n for (var i = 0; i < len; i++) {\n if (arr0[i] !== arr1[i]) {\n return false;\n }\n }\n return true;\n}\nfunction animateToShallow(animatable, topKey, animateObj, target, cfg, animationProps, animators, reverse) {\n var targetKeys = keys(target);\n var duration = cfg.duration;\n var delay = cfg.delay;\n var additive = cfg.additive;\n var setToFinal = cfg.setToFinal;\n var animateAll = !isObject(animationProps);\n var existsAnimators = animatable.animators;\n var animationKeys = [];\n for (var k = 0; k < targetKeys.length; k++) {\n var innerKey = targetKeys[k];\n var targetVal = target[innerKey];\n if (targetVal != null && animateObj[innerKey] != null\n && (animateAll || animationProps[innerKey])) {\n if (isObject(targetVal)\n && !isArrayLike(targetVal)\n && !isGradientObject(targetVal)) {\n if (topKey) {\n if (!reverse) {\n animateObj[innerKey] = targetVal;\n animatable.updateDuringAnimation(topKey);\n }\n continue;\n }\n animateToShallow(animatable, innerKey, animateObj[innerKey], targetVal, cfg, animationProps && animationProps[innerKey], animators, reverse);\n }\n else {\n animationKeys.push(innerKey);\n }\n }\n else if (!reverse) {\n animateObj[innerKey] = targetVal;\n animatable.updateDuringAnimation(topKey);\n animationKeys.push(innerKey);\n }\n }\n var keyLen = animationKeys.length;\n if (!additive && keyLen) {\n for (var i = 0; i < existsAnimators.length; i++) {\n var animator = existsAnimators[i];\n if (animator.targetName === topKey) {\n var allAborted = animator.stopTracks(animationKeys);\n if (allAborted) {\n var idx = indexOf(existsAnimators, animator);\n existsAnimators.splice(idx, 1);\n }\n }\n }\n }\n if (!cfg.force) {\n animationKeys = filter(animationKeys, function (key) { return !isValueSame(target[key], animateObj[key]); });\n keyLen = animationKeys.length;\n }\n if (keyLen > 0\n || (cfg.force && !animators.length)) {\n var revertedSource = void 0;\n var reversedTarget = void 0;\n var sourceClone = void 0;\n if (reverse) {\n reversedTarget = {};\n if (setToFinal) {\n revertedSource = {};\n }\n for (var i = 0; i < keyLen; i++) {\n var innerKey = animationKeys[i];\n reversedTarget[innerKey] = animateObj[innerKey];\n if (setToFinal) {\n revertedSource[innerKey] = target[innerKey];\n }\n else {\n animateObj[innerKey] = target[innerKey];\n }\n }\n }\n else if (setToFinal) {\n sourceClone = {};\n for (var i = 0; i < keyLen; i++) {\n var innerKey = animationKeys[i];\n sourceClone[innerKey] = cloneValue(animateObj[innerKey]);\n copyValue(animateObj, target, innerKey);\n }\n }\n var animator = new Animator(animateObj, false, false, additive ? filter(existsAnimators, function (animator) { return animator.targetName === topKey; }) : null);\n animator.targetName = topKey;\n if (cfg.scope) {\n animator.scope = cfg.scope;\n }\n if (setToFinal && revertedSource) {\n animator.whenWithKeys(0, revertedSource, animationKeys);\n }\n if (sourceClone) {\n animator.whenWithKeys(0, sourceClone, animationKeys);\n }\n animator.whenWithKeys(duration == null ? 500 : duration, reverse ? reversedTarget : target, animationKeys).delay(delay || 0);\n animatable.addAnimator(animator, topKey);\n animators.push(animator);\n }\n}\nexport default Element;\n","import { __extends } from \"tslib\";\nimport Element from '../Element.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport { keys, extend, createObject } from '../core/util.js';\nimport { REDRAW_BIT, STYLE_CHANGED_BIT } from './constants.js';\nvar STYLE_MAGIC_KEY = '__zr_style_' + Math.round((Math.random() * 10));\nexport var DEFAULT_COMMON_STYLE = {\n shadowBlur: 0,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n shadowColor: '#000',\n opacity: 1,\n blend: 'source-over'\n};\nexport var DEFAULT_COMMON_ANIMATION_PROPS = {\n style: {\n shadowBlur: true,\n shadowOffsetX: true,\n shadowOffsetY: true,\n shadowColor: true,\n opacity: true\n }\n};\nDEFAULT_COMMON_STYLE[STYLE_MAGIC_KEY] = true;\nvar PRIMARY_STATES_KEYS = ['z', 'z2', 'invisible'];\nvar PRIMARY_STATES_KEYS_IN_HOVER_LAYER = ['invisible'];\nvar Displayable = (function (_super) {\n __extends(Displayable, _super);\n function Displayable(props) {\n return _super.call(this, props) || this;\n }\n Displayable.prototype._init = function (props) {\n var keysArr = keys(props);\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n if (key === 'style') {\n this.useStyle(props[key]);\n }\n else {\n _super.prototype.attrKV.call(this, key, props[key]);\n }\n }\n if (!this.style) {\n this.useStyle({});\n }\n };\n Displayable.prototype.beforeBrush = function () { };\n Displayable.prototype.afterBrush = function () { };\n Displayable.prototype.innerBeforeBrush = function () { };\n Displayable.prototype.innerAfterBrush = function () { };\n Displayable.prototype.shouldBePainted = function (viewWidth, viewHeight, considerClipPath, considerAncestors) {\n var m = this.transform;\n if (this.ignore\n || this.invisible\n || this.style.opacity === 0\n || (this.culling\n && isDisplayableCulled(this, viewWidth, viewHeight))\n || (m && !m[0] && !m[3])) {\n return false;\n }\n if (considerClipPath && this.__clipPaths && this.__clipPaths.length) {\n for (var i = 0; i < this.__clipPaths.length; ++i) {\n if (this.__clipPaths[i].isZeroArea()) {\n return false;\n }\n }\n }\n if (considerAncestors && this.parent) {\n var parent_1 = this.parent;\n while (parent_1) {\n if (parent_1.ignore) {\n return false;\n }\n parent_1 = parent_1.parent;\n }\n }\n return true;\n };\n Displayable.prototype.contain = function (x, y) {\n return this.rectContain(x, y);\n };\n Displayable.prototype.traverse = function (cb, context) {\n cb.call(context, this);\n };\n Displayable.prototype.rectContain = function (x, y) {\n var coord = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n return rect.contain(coord[0], coord[1]);\n };\n Displayable.prototype.getPaintRect = function () {\n var rect = this._paintRect;\n if (!this._paintRect || this.__dirty) {\n var transform = this.transform;\n var elRect = this.getBoundingRect();\n var style = this.style;\n var shadowSize = style.shadowBlur || 0;\n var shadowOffsetX = style.shadowOffsetX || 0;\n var shadowOffsetY = style.shadowOffsetY || 0;\n rect = this._paintRect || (this._paintRect = new BoundingRect(0, 0, 0, 0));\n if (transform) {\n BoundingRect.applyTransform(rect, elRect, transform);\n }\n else {\n rect.copy(elRect);\n }\n if (shadowSize || shadowOffsetX || shadowOffsetY) {\n rect.width += shadowSize * 2 + Math.abs(shadowOffsetX);\n rect.height += shadowSize * 2 + Math.abs(shadowOffsetY);\n rect.x = Math.min(rect.x, rect.x + shadowOffsetX - shadowSize);\n rect.y = Math.min(rect.y, rect.y + shadowOffsetY - shadowSize);\n }\n var tolerance = this.dirtyRectTolerance;\n if (!rect.isZero()) {\n rect.x = Math.floor(rect.x - tolerance);\n rect.y = Math.floor(rect.y - tolerance);\n rect.width = Math.ceil(rect.width + 1 + tolerance * 2);\n rect.height = Math.ceil(rect.height + 1 + tolerance * 2);\n }\n }\n return rect;\n };\n Displayable.prototype.setPrevPaintRect = function (paintRect) {\n if (paintRect) {\n this._prevPaintRect = this._prevPaintRect || new BoundingRect(0, 0, 0, 0);\n this._prevPaintRect.copy(paintRect);\n }\n else {\n this._prevPaintRect = null;\n }\n };\n Displayable.prototype.getPrevPaintRect = function () {\n return this._prevPaintRect;\n };\n Displayable.prototype.animateStyle = function (loop) {\n return this.animate('style', loop);\n };\n Displayable.prototype.updateDuringAnimation = function (targetKey) {\n if (targetKey === 'style') {\n this.dirtyStyle();\n }\n else {\n this.markRedraw();\n }\n };\n Displayable.prototype.attrKV = function (key, value) {\n if (key !== 'style') {\n _super.prototype.attrKV.call(this, key, value);\n }\n else {\n if (!this.style) {\n this.useStyle(value);\n }\n else {\n this.setStyle(value);\n }\n }\n };\n Displayable.prototype.setStyle = function (keyOrObj, value) {\n if (typeof keyOrObj === 'string') {\n this.style[keyOrObj] = value;\n }\n else {\n extend(this.style, keyOrObj);\n }\n this.dirtyStyle();\n return this;\n };\n Displayable.prototype.dirtyStyle = function (notRedraw) {\n if (!notRedraw) {\n this.markRedraw();\n }\n this.__dirty |= STYLE_CHANGED_BIT;\n if (this._rect) {\n this._rect = null;\n }\n };\n Displayable.prototype.dirty = function () {\n this.dirtyStyle();\n };\n Displayable.prototype.styleChanged = function () {\n return !!(this.__dirty & STYLE_CHANGED_BIT);\n };\n Displayable.prototype.styleUpdated = function () {\n this.__dirty &= ~STYLE_CHANGED_BIT;\n };\n Displayable.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_COMMON_STYLE, obj);\n };\n Displayable.prototype.useStyle = function (obj) {\n if (!obj[STYLE_MAGIC_KEY]) {\n obj = this.createStyle(obj);\n }\n if (this.__inHover) {\n this.__hoverStyle = obj;\n }\n else {\n this.style = obj;\n }\n this.dirtyStyle();\n };\n Displayable.prototype.isStyleObject = function (obj) {\n return obj[STYLE_MAGIC_KEY];\n };\n Displayable.prototype._innerSaveToNormal = function (toState) {\n _super.prototype._innerSaveToNormal.call(this, toState);\n var normalState = this._normalState;\n if (toState.style && !normalState.style) {\n normalState.style = this._mergeStyle(this.createStyle(), this.style);\n }\n this._savePrimaryToNormal(toState, normalState, PRIMARY_STATES_KEYS);\n };\n Displayable.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\n var needsRestoreToNormal = !(state && keepCurrentStates);\n var targetStyle;\n if (state && state.style) {\n if (transition) {\n if (keepCurrentStates) {\n targetStyle = state.style;\n }\n else {\n targetStyle = this._mergeStyle(this.createStyle(), normalState.style);\n this._mergeStyle(targetStyle, state.style);\n }\n }\n else {\n targetStyle = this._mergeStyle(this.createStyle(), keepCurrentStates ? this.style : normalState.style);\n this._mergeStyle(targetStyle, state.style);\n }\n }\n else if (needsRestoreToNormal) {\n targetStyle = normalState.style;\n }\n if (targetStyle) {\n if (transition) {\n var sourceStyle = this.style;\n this.style = this.createStyle(needsRestoreToNormal ? {} : sourceStyle);\n if (needsRestoreToNormal) {\n var changedKeys = keys(sourceStyle);\n for (var i = 0; i < changedKeys.length; i++) {\n var key = changedKeys[i];\n if (key in targetStyle) {\n targetStyle[key] = targetStyle[key];\n this.style[key] = sourceStyle[key];\n }\n }\n }\n var targetKeys = keys(targetStyle);\n for (var i = 0; i < targetKeys.length; i++) {\n var key = targetKeys[i];\n this.style[key] = this.style[key];\n }\n this._transitionState(stateName, {\n style: targetStyle\n }, animationCfg, this.getAnimationStyleProps());\n }\n else {\n this.useStyle(targetStyle);\n }\n }\n var statesKeys = this.__inHover ? PRIMARY_STATES_KEYS_IN_HOVER_LAYER : PRIMARY_STATES_KEYS;\n for (var i = 0; i < statesKeys.length; i++) {\n var key = statesKeys[i];\n if (state && state[key] != null) {\n this[key] = state[key];\n }\n else if (needsRestoreToNormal) {\n if (normalState[key] != null) {\n this[key] = normalState[key];\n }\n }\n }\n };\n Displayable.prototype._mergeStates = function (states) {\n var mergedState = _super.prototype._mergeStates.call(this, states);\n var mergedStyle;\n for (var i = 0; i < states.length; i++) {\n var state = states[i];\n if (state.style) {\n mergedStyle = mergedStyle || {};\n this._mergeStyle(mergedStyle, state.style);\n }\n }\n if (mergedStyle) {\n mergedState.style = mergedStyle;\n }\n return mergedState;\n };\n Displayable.prototype._mergeStyle = function (targetStyle, sourceStyle) {\n extend(targetStyle, sourceStyle);\n return targetStyle;\n };\n Displayable.prototype.getAnimationStyleProps = function () {\n return DEFAULT_COMMON_ANIMATION_PROPS;\n };\n Displayable.initDefaultProps = (function () {\n var dispProto = Displayable.prototype;\n dispProto.type = 'displayable';\n dispProto.invisible = false;\n dispProto.z = 0;\n dispProto.z2 = 0;\n dispProto.zlevel = 0;\n dispProto.culling = false;\n dispProto.cursor = 'pointer';\n dispProto.rectHover = false;\n dispProto.incremental = false;\n dispProto._rect = null;\n dispProto.dirtyRectTolerance = 0;\n dispProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT;\n })();\n return Displayable;\n}(Element));\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar viewRect = new BoundingRect(0, 0, 0, 0);\nfunction isDisplayableCulled(el, width, height) {\n tmpRect.copy(el.getBoundingRect());\n if (el.transform) {\n tmpRect.applyTransform(el.transform);\n }\n viewRect.width = width;\n viewRect.height = height;\n return !tmpRect.intersect(viewRect);\n}\nexport default Displayable;\n","import * as vec2 from './vector.js';\nimport * as curve from './curve.js';\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathSin = Math.sin;\nvar mathCos = Math.cos;\nvar PI2 = Math.PI * 2;\nvar start = vec2.create();\nvar end = vec2.create();\nvar extremity = vec2.create();\nexport function fromPoints(points, min, max) {\n if (points.length === 0) {\n return;\n }\n var p = points[0];\n var left = p[0];\n var right = p[0];\n var top = p[1];\n var bottom = p[1];\n for (var i = 1; i < points.length; i++) {\n p = points[i];\n left = mathMin(left, p[0]);\n right = mathMax(right, p[0]);\n top = mathMin(top, p[1]);\n bottom = mathMax(bottom, p[1]);\n }\n min[0] = left;\n min[1] = top;\n max[0] = right;\n max[1] = bottom;\n}\nexport function fromLine(x0, y0, x1, y1, min, max) {\n min[0] = mathMin(x0, x1);\n min[1] = mathMin(y0, y1);\n max[0] = mathMax(x0, x1);\n max[1] = mathMax(y0, y1);\n}\nvar xDim = [];\nvar yDim = [];\nexport function fromCubic(x0, y0, x1, y1, x2, y2, x3, y3, min, max) {\n var cubicExtrema = curve.cubicExtrema;\n var cubicAt = curve.cubicAt;\n var n = cubicExtrema(x0, x1, x2, x3, xDim);\n min[0] = Infinity;\n min[1] = Infinity;\n max[0] = -Infinity;\n max[1] = -Infinity;\n for (var i = 0; i < n; i++) {\n var x = cubicAt(x0, x1, x2, x3, xDim[i]);\n min[0] = mathMin(x, min[0]);\n max[0] = mathMax(x, max[0]);\n }\n n = cubicExtrema(y0, y1, y2, y3, yDim);\n for (var i = 0; i < n; i++) {\n var y = cubicAt(y0, y1, y2, y3, yDim[i]);\n min[1] = mathMin(y, min[1]);\n max[1] = mathMax(y, max[1]);\n }\n min[0] = mathMin(x0, min[0]);\n max[0] = mathMax(x0, max[0]);\n min[0] = mathMin(x3, min[0]);\n max[0] = mathMax(x3, max[0]);\n min[1] = mathMin(y0, min[1]);\n max[1] = mathMax(y0, max[1]);\n min[1] = mathMin(y3, min[1]);\n max[1] = mathMax(y3, max[1]);\n}\nexport function fromQuadratic(x0, y0, x1, y1, x2, y2, min, max) {\n var quadraticExtremum = curve.quadraticExtremum;\n var quadraticAt = curve.quadraticAt;\n var tx = mathMax(mathMin(quadraticExtremum(x0, x1, x2), 1), 0);\n var ty = mathMax(mathMin(quadraticExtremum(y0, y1, y2), 1), 0);\n var x = quadraticAt(x0, x1, x2, tx);\n var y = quadraticAt(y0, y1, y2, ty);\n min[0] = mathMin(x0, x2, x);\n min[1] = mathMin(y0, y2, y);\n max[0] = mathMax(x0, x2, x);\n max[1] = mathMax(y0, y2, y);\n}\nexport function fromArc(x, y, rx, ry, startAngle, endAngle, anticlockwise, min, max) {\n var vec2Min = vec2.min;\n var vec2Max = vec2.max;\n var diff = Math.abs(startAngle - endAngle);\n if (diff % PI2 < 1e-4 && diff > 1e-4) {\n min[0] = x - rx;\n min[1] = y - ry;\n max[0] = x + rx;\n max[1] = y + ry;\n return;\n }\n start[0] = mathCos(startAngle) * rx + x;\n start[1] = mathSin(startAngle) * ry + y;\n end[0] = mathCos(endAngle) * rx + x;\n end[1] = mathSin(endAngle) * ry + y;\n vec2Min(min, start, end);\n vec2Max(max, start, end);\n startAngle = startAngle % (PI2);\n if (startAngle < 0) {\n startAngle = startAngle + PI2;\n }\n endAngle = endAngle % (PI2);\n if (endAngle < 0) {\n endAngle = endAngle + PI2;\n }\n if (startAngle > endAngle && !anticlockwise) {\n endAngle += PI2;\n }\n else if (startAngle < endAngle && anticlockwise) {\n startAngle += PI2;\n }\n if (anticlockwise) {\n var tmp = endAngle;\n endAngle = startAngle;\n startAngle = tmp;\n }\n for (var angle = 0; angle < endAngle; angle += Math.PI / 2) {\n if (angle > startAngle) {\n extremity[0] = mathCos(angle) * rx + x;\n extremity[1] = mathSin(angle) * ry + y;\n vec2Min(min, extremity, min);\n vec2Max(max, extremity, max);\n }\n }\n}\n","import * as vec2 from './vector.js';\nimport BoundingRect from './BoundingRect.js';\nimport { devicePixelRatio as dpr } from '../config.js';\nimport { fromLine, fromCubic, fromQuadratic, fromArc } from './bbox.js';\nimport { cubicLength, cubicSubdivide, quadraticLength, quadraticSubdivide } from './curve.js';\nvar CMD = {\n M: 1,\n L: 2,\n C: 3,\n Q: 4,\n A: 5,\n Z: 6,\n R: 7\n};\nvar tmpOutX = [];\nvar tmpOutY = [];\nvar min = [];\nvar max = [];\nvar min2 = [];\nvar max2 = [];\nvar mathMin = Math.min;\nvar mathMax = Math.max;\nvar mathCos = Math.cos;\nvar mathSin = Math.sin;\nvar mathAbs = Math.abs;\nvar PI = Math.PI;\nvar PI2 = PI * 2;\nvar hasTypedArray = typeof Float32Array !== 'undefined';\nvar tmpAngles = [];\nfunction modPI2(radian) {\n var n = Math.round(radian / PI * 1e8) / 1e8;\n return (n % 2) * PI;\n}\nexport function normalizeArcAngles(angles, anticlockwise) {\n var newStartAngle = modPI2(angles[0]);\n if (newStartAngle < 0) {\n newStartAngle += PI2;\n }\n var delta = newStartAngle - angles[0];\n var newEndAngle = angles[1];\n newEndAngle += delta;\n if (!anticlockwise && newEndAngle - newStartAngle >= PI2) {\n newEndAngle = newStartAngle + PI2;\n }\n else if (anticlockwise && newStartAngle - newEndAngle >= PI2) {\n newEndAngle = newStartAngle - PI2;\n }\n else if (!anticlockwise && newStartAngle > newEndAngle) {\n newEndAngle = newStartAngle + (PI2 - modPI2(newStartAngle - newEndAngle));\n }\n else if (anticlockwise && newStartAngle < newEndAngle) {\n newEndAngle = newStartAngle - (PI2 - modPI2(newEndAngle - newStartAngle));\n }\n angles[0] = newStartAngle;\n angles[1] = newEndAngle;\n}\nvar PathProxy = (function () {\n function PathProxy(notSaveData) {\n this.dpr = 1;\n this._xi = 0;\n this._yi = 0;\n this._x0 = 0;\n this._y0 = 0;\n this._len = 0;\n if (notSaveData) {\n this._saveData = false;\n }\n if (this._saveData) {\n this.data = [];\n }\n }\n PathProxy.prototype.increaseVersion = function () {\n this._version++;\n };\n PathProxy.prototype.getVersion = function () {\n return this._version;\n };\n PathProxy.prototype.setScale = function (sx, sy, segmentIgnoreThreshold) {\n segmentIgnoreThreshold = segmentIgnoreThreshold || 0;\n if (segmentIgnoreThreshold > 0) {\n this._ux = mathAbs(segmentIgnoreThreshold / dpr / sx) || 0;\n this._uy = mathAbs(segmentIgnoreThreshold / dpr / sy) || 0;\n }\n };\n PathProxy.prototype.setDPR = function (dpr) {\n this.dpr = dpr;\n };\n PathProxy.prototype.setContext = function (ctx) {\n this._ctx = ctx;\n };\n PathProxy.prototype.getContext = function () {\n return this._ctx;\n };\n PathProxy.prototype.beginPath = function () {\n this._ctx && this._ctx.beginPath();\n this.reset();\n return this;\n };\n PathProxy.prototype.reset = function () {\n if (this._saveData) {\n this._len = 0;\n }\n if (this._pathSegLen) {\n this._pathSegLen = null;\n this._pathLen = 0;\n }\n this._version++;\n };\n PathProxy.prototype.moveTo = function (x, y) {\n this._drawPendingPt();\n this.addData(CMD.M, x, y);\n this._ctx && this._ctx.moveTo(x, y);\n this._x0 = x;\n this._y0 = y;\n this._xi = x;\n this._yi = y;\n return this;\n };\n PathProxy.prototype.lineTo = function (x, y) {\n var dx = mathAbs(x - this._xi);\n var dy = mathAbs(y - this._yi);\n var exceedUnit = dx > this._ux || dy > this._uy;\n this.addData(CMD.L, x, y);\n if (this._ctx && exceedUnit) {\n this._ctx.lineTo(x, y);\n }\n if (exceedUnit) {\n this._xi = x;\n this._yi = y;\n this._pendingPtDist = 0;\n }\n else {\n var d2 = dx * dx + dy * dy;\n if (d2 > this._pendingPtDist) {\n this._pendingPtX = x;\n this._pendingPtY = y;\n this._pendingPtDist = d2;\n }\n }\n return this;\n };\n PathProxy.prototype.bezierCurveTo = function (x1, y1, x2, y2, x3, y3) {\n this._drawPendingPt();\n this.addData(CMD.C, x1, y1, x2, y2, x3, y3);\n if (this._ctx) {\n this._ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n }\n this._xi = x3;\n this._yi = y3;\n return this;\n };\n PathProxy.prototype.quadraticCurveTo = function (x1, y1, x2, y2) {\n this._drawPendingPt();\n this.addData(CMD.Q, x1, y1, x2, y2);\n if (this._ctx) {\n this._ctx.quadraticCurveTo(x1, y1, x2, y2);\n }\n this._xi = x2;\n this._yi = y2;\n return this;\n };\n PathProxy.prototype.arc = function (cx, cy, r, startAngle, endAngle, anticlockwise) {\n this._drawPendingPt();\n tmpAngles[0] = startAngle;\n tmpAngles[1] = endAngle;\n normalizeArcAngles(tmpAngles, anticlockwise);\n startAngle = tmpAngles[0];\n endAngle = tmpAngles[1];\n var delta = endAngle - startAngle;\n this.addData(CMD.A, cx, cy, r, r, startAngle, delta, 0, anticlockwise ? 0 : 1);\n this._ctx && this._ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n this._xi = mathCos(endAngle) * r + cx;\n this._yi = mathSin(endAngle) * r + cy;\n return this;\n };\n PathProxy.prototype.arcTo = function (x1, y1, x2, y2, radius) {\n this._drawPendingPt();\n if (this._ctx) {\n this._ctx.arcTo(x1, y1, x2, y2, radius);\n }\n return this;\n };\n PathProxy.prototype.rect = function (x, y, w, h) {\n this._drawPendingPt();\n this._ctx && this._ctx.rect(x, y, w, h);\n this.addData(CMD.R, x, y, w, h);\n return this;\n };\n PathProxy.prototype.closePath = function () {\n this._drawPendingPt();\n this.addData(CMD.Z);\n var ctx = this._ctx;\n var x0 = this._x0;\n var y0 = this._y0;\n if (ctx) {\n ctx.closePath();\n }\n this._xi = x0;\n this._yi = y0;\n return this;\n };\n PathProxy.prototype.fill = function (ctx) {\n ctx && ctx.fill();\n this.toStatic();\n };\n PathProxy.prototype.stroke = function (ctx) {\n ctx && ctx.stroke();\n this.toStatic();\n };\n PathProxy.prototype.len = function () {\n return this._len;\n };\n PathProxy.prototype.setData = function (data) {\n if (!this._saveData) {\n return;\n }\n var len = data.length;\n if (!(this.data && this.data.length === len) && hasTypedArray) {\n this.data = new Float32Array(len);\n }\n for (var i = 0; i < len; i++) {\n this.data[i] = data[i];\n }\n this._len = len;\n };\n PathProxy.prototype.appendPath = function (path) {\n if (!this._saveData) {\n return;\n }\n if (!(path instanceof Array)) {\n path = [path];\n }\n var len = path.length;\n var appendSize = 0;\n var offset = this._len;\n for (var i = 0; i < len; i++) {\n appendSize += path[i].len();\n }\n var oldData = this.data;\n if (hasTypedArray && (oldData instanceof Float32Array || !oldData)) {\n this.data = new Float32Array(offset + appendSize);\n if (offset > 0 && oldData) {\n for (var k = 0; k < offset; k++) {\n this.data[k] = oldData[k];\n }\n }\n }\n for (var i = 0; i < len; i++) {\n var appendPathData = path[i].data;\n for (var k = 0; k < appendPathData.length; k++) {\n this.data[offset++] = appendPathData[k];\n }\n }\n this._len = offset;\n };\n PathProxy.prototype.addData = function (cmd, a, b, c, d, e, f, g, h) {\n if (!this._saveData) {\n return;\n }\n var data = this.data;\n if (this._len + arguments.length > data.length) {\n this._expandData();\n data = this.data;\n }\n for (var i = 0; i < arguments.length; i++) {\n data[this._len++] = arguments[i];\n }\n };\n PathProxy.prototype._drawPendingPt = function () {\n if (this._pendingPtDist > 0) {\n this._ctx && this._ctx.lineTo(this._pendingPtX, this._pendingPtY);\n this._pendingPtDist = 0;\n }\n };\n PathProxy.prototype._expandData = function () {\n if (!(this.data instanceof Array)) {\n var newData = [];\n for (var i = 0; i < this._len; i++) {\n newData[i] = this.data[i];\n }\n this.data = newData;\n }\n };\n PathProxy.prototype.toStatic = function () {\n if (!this._saveData) {\n return;\n }\n this._drawPendingPt();\n var data = this.data;\n if (data instanceof Array) {\n data.length = this._len;\n if (hasTypedArray && this._len > 11) {\n this.data = new Float32Array(data);\n }\n }\n };\n PathProxy.prototype.getBoundingRect = function () {\n min[0] = min[1] = min2[0] = min2[1] = Number.MAX_VALUE;\n max[0] = max[1] = max2[0] = max2[1] = -Number.MAX_VALUE;\n var data = this.data;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var i;\n for (i = 0; i < this._len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n min2[0] = x0;\n min2[1] = y0;\n max2[0] = x0;\n max2[1] = y0;\n break;\n case CMD.L:\n fromLine(xi, yi, data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.C:\n fromCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.Q:\n fromQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], min2, max2);\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var endAngle = data[i++] + startAngle;\n i += 1;\n var anticlockwise = !data[i++];\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n fromArc(cx, cy, rx, ry, startAngle, endAngle, anticlockwise, min2, max2);\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n fromLine(x0, y0, x0 + width, y0 + height, min2, max2);\n break;\n case CMD.Z:\n xi = x0;\n yi = y0;\n break;\n }\n vec2.min(min, min, min2);\n vec2.max(max, max, max2);\n }\n if (i === 0) {\n min[0] = min[1] = max[0] = max[1] = 0;\n }\n return new BoundingRect(min[0], min[1], max[0] - min[0], max[1] - min[1]);\n };\n PathProxy.prototype._calculateLength = function () {\n var data = this.data;\n var len = this._len;\n var ux = this._ux;\n var uy = this._uy;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n if (!this._pathSegLen) {\n this._pathSegLen = [];\n }\n var pathSegLen = this._pathSegLen;\n var pathTotalLen = 0;\n var segCount = 0;\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n var l = -1;\n switch (cmd) {\n case CMD.M:\n xi = x0 = data[i++];\n yi = y0 = data[i++];\n break;\n case CMD.L: {\n var x2 = data[i++];\n var y2 = data[i++];\n var dx = x2 - xi;\n var dy = y2 - yi;\n if (mathAbs(dx) > ux || mathAbs(dy) > uy || i === len - 1) {\n l = Math.sqrt(dx * dx + dy * dy);\n xi = x2;\n yi = y2;\n }\n break;\n }\n case CMD.C: {\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n var x3 = data[i++];\n var y3 = data[i++];\n l = cubicLength(xi, yi, x1, y1, x2, y2, x3, y3, 10);\n xi = x3;\n yi = y3;\n break;\n }\n case CMD.Q: {\n var x1 = data[i++];\n var y1 = data[i++];\n var x2 = data[i++];\n var y2 = data[i++];\n l = quadraticLength(xi, yi, x1, y1, x2, y2, 10);\n xi = x2;\n yi = y2;\n break;\n }\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var startAngle = data[i++];\n var delta = data[i++];\n var endAngle = delta + startAngle;\n i += 1;\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n l = mathMax(rx, ry) * mathMin(PI2, Math.abs(delta));\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R: {\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n l = width * 2 + height * 2;\n break;\n }\n case CMD.Z: {\n var dx = x0 - xi;\n var dy = y0 - yi;\n l = Math.sqrt(dx * dx + dy * dy);\n xi = x0;\n yi = y0;\n break;\n }\n }\n if (l >= 0) {\n pathSegLen[segCount++] = l;\n pathTotalLen += l;\n }\n }\n this._pathLen = pathTotalLen;\n return pathTotalLen;\n };\n PathProxy.prototype.rebuildPath = function (ctx, percent) {\n var d = this.data;\n var ux = this._ux;\n var uy = this._uy;\n var len = this._len;\n var x0;\n var y0;\n var xi;\n var yi;\n var x;\n var y;\n var drawPart = percent < 1;\n var pathSegLen;\n var pathTotalLen;\n var accumLength = 0;\n var segCount = 0;\n var displayedLength;\n var pendingPtDist = 0;\n var pendingPtX;\n var pendingPtY;\n if (drawPart) {\n if (!this._pathSegLen) {\n this._calculateLength();\n }\n pathSegLen = this._pathSegLen;\n pathTotalLen = this._pathLen;\n displayedLength = percent * pathTotalLen;\n if (!displayedLength) {\n return;\n }\n }\n lo: for (var i = 0; i < len;) {\n var cmd = d[i++];\n var isFirst = i === 1;\n if (isFirst) {\n xi = d[i];\n yi = d[i + 1];\n x0 = xi;\n y0 = yi;\n }\n if (cmd !== CMD.L && pendingPtDist > 0) {\n ctx.lineTo(pendingPtX, pendingPtY);\n pendingPtDist = 0;\n }\n switch (cmd) {\n case CMD.M:\n x0 = xi = d[i++];\n y0 = yi = d[i++];\n ctx.moveTo(xi, yi);\n break;\n case CMD.L: {\n x = d[i++];\n y = d[i++];\n var dx = mathAbs(x - xi);\n var dy = mathAbs(y - yi);\n if (dx > ux || dy > uy) {\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n ctx.lineTo(xi * (1 - t) + x * t, yi * (1 - t) + y * t);\n break lo;\n }\n accumLength += l;\n }\n ctx.lineTo(x, y);\n xi = x;\n yi = y;\n pendingPtDist = 0;\n }\n else {\n var d2 = dx * dx + dy * dy;\n if (d2 > pendingPtDist) {\n pendingPtX = x;\n pendingPtY = y;\n pendingPtDist = d2;\n }\n }\n break;\n }\n case CMD.C: {\n var x1 = d[i++];\n var y1 = d[i++];\n var x2 = d[i++];\n var y2 = d[i++];\n var x3 = d[i++];\n var y3 = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n cubicSubdivide(xi, x1, x2, x3, t, tmpOutX);\n cubicSubdivide(yi, y1, y2, y3, t, tmpOutY);\n ctx.bezierCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2], tmpOutX[3], tmpOutY[3]);\n break lo;\n }\n accumLength += l;\n }\n ctx.bezierCurveTo(x1, y1, x2, y2, x3, y3);\n xi = x3;\n yi = y3;\n break;\n }\n case CMD.Q: {\n var x1 = d[i++];\n var y1 = d[i++];\n var x2 = d[i++];\n var y2 = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n quadraticSubdivide(xi, x1, x2, t, tmpOutX);\n quadraticSubdivide(yi, y1, y2, t, tmpOutY);\n ctx.quadraticCurveTo(tmpOutX[1], tmpOutY[1], tmpOutX[2], tmpOutY[2]);\n break lo;\n }\n accumLength += l;\n }\n ctx.quadraticCurveTo(x1, y1, x2, y2);\n xi = x2;\n yi = y2;\n break;\n }\n case CMD.A:\n var cx = d[i++];\n var cy = d[i++];\n var rx = d[i++];\n var ry = d[i++];\n var startAngle = d[i++];\n var delta = d[i++];\n var psi = d[i++];\n var anticlockwise = !d[i++];\n var r = (rx > ry) ? rx : ry;\n var isEllipse = mathAbs(rx - ry) > 1e-3;\n var endAngle = startAngle + delta;\n var breakBuild = false;\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n endAngle = startAngle + delta * (displayedLength - accumLength) / l;\n breakBuild = true;\n }\n accumLength += l;\n }\n if (isEllipse && ctx.ellipse) {\n ctx.ellipse(cx, cy, rx, ry, psi, startAngle, endAngle, anticlockwise);\n }\n else {\n ctx.arc(cx, cy, r, startAngle, endAngle, anticlockwise);\n }\n if (breakBuild) {\n break lo;\n }\n if (isFirst) {\n x0 = mathCos(startAngle) * rx + cx;\n y0 = mathSin(startAngle) * ry + cy;\n }\n xi = mathCos(endAngle) * rx + cx;\n yi = mathSin(endAngle) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = d[i];\n y0 = yi = d[i + 1];\n x = d[i++];\n y = d[i++];\n var width = d[i++];\n var height = d[i++];\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var d_1 = displayedLength - accumLength;\n ctx.moveTo(x, y);\n ctx.lineTo(x + mathMin(d_1, width), y);\n d_1 -= width;\n if (d_1 > 0) {\n ctx.lineTo(x + width, y + mathMin(d_1, height));\n }\n d_1 -= height;\n if (d_1 > 0) {\n ctx.lineTo(x + mathMax(width - d_1, 0), y + height);\n }\n d_1 -= width;\n if (d_1 > 0) {\n ctx.lineTo(x, y + mathMax(height - d_1, 0));\n }\n break lo;\n }\n accumLength += l;\n }\n ctx.rect(x, y, width, height);\n break;\n case CMD.Z:\n if (drawPart) {\n var l = pathSegLen[segCount++];\n if (accumLength + l > displayedLength) {\n var t = (displayedLength - accumLength) / l;\n ctx.lineTo(xi * (1 - t) + x0 * t, yi * (1 - t) + y0 * t);\n break lo;\n }\n accumLength += l;\n }\n ctx.closePath();\n xi = x0;\n yi = y0;\n }\n }\n };\n PathProxy.prototype.clone = function () {\n var newProxy = new PathProxy();\n var data = this.data;\n newProxy.data = data.slice ? data.slice()\n : Array.prototype.slice.call(data);\n newProxy._len = this._len;\n return newProxy;\n };\n PathProxy.prototype.canSave = function () {\n return !!this._saveData;\n };\n PathProxy.CMD = CMD;\n PathProxy.initDefaultProps = (function () {\n var proto = PathProxy.prototype;\n proto._saveData = true;\n proto._ux = 0;\n proto._uy = 0;\n proto._pendingPtDist = 0;\n proto._version = 0;\n })();\n return PathProxy;\n}());\nexport default PathProxy;\n","export function containStroke(x0, y0, x1, y1, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n var _a = 0;\n var _b = x0;\n if ((y > y0 + _l && y > y1 + _l)\n || (y < y0 - _l && y < y1 - _l)\n || (x > x0 + _l && x > x1 + _l)\n || (x < x0 - _l && x < x1 - _l)) {\n return false;\n }\n if (x0 !== x1) {\n _a = (y0 - y1) / (x0 - x1);\n _b = (x0 * y1 - x1 * y0) / (x0 - x1);\n }\n else {\n return Math.abs(x - x0) <= _l / 2;\n }\n var tmp = _a * x - y + _b;\n var _s = tmp * tmp / (_a * _a + 1);\n return _s <= _l / 2 * _l / 2;\n}\n","import * as curve from '../core/curve.js';\nexport function containStroke(x0, y0, x1, y1, x2, y2, x3, y3, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n if ((y > y0 + _l && y > y1 + _l && y > y2 + _l && y > y3 + _l)\n || (y < y0 - _l && y < y1 - _l && y < y2 - _l && y < y3 - _l)\n || (x > x0 + _l && x > x1 + _l && x > x2 + _l && x > x3 + _l)\n || (x < x0 - _l && x < x1 - _l && x < x2 - _l && x < x3 - _l)) {\n return false;\n }\n var d = curve.cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, null);\n return d <= _l / 2;\n}\n","import { quadraticProjectPoint } from '../core/curve.js';\nexport function containStroke(x0, y0, x1, y1, x2, y2, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n if ((y > y0 + _l && y > y1 + _l && y > y2 + _l)\n || (y < y0 - _l && y < y1 - _l && y < y2 - _l)\n || (x > x0 + _l && x > x1 + _l && x > x2 + _l)\n || (x < x0 - _l && x < x1 - _l && x < x2 - _l)) {\n return false;\n }\n var d = quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, null);\n return d <= _l / 2;\n}\n","var PI2 = Math.PI * 2;\nexport function normalizeRadian(angle) {\n angle %= PI2;\n if (angle < 0) {\n angle += PI2;\n }\n return angle;\n}\n","import { normalizeRadian } from './util.js';\nvar PI2 = Math.PI * 2;\nexport function containStroke(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {\n if (lineWidth === 0) {\n return false;\n }\n var _l = lineWidth;\n x -= cx;\n y -= cy;\n var d = Math.sqrt(x * x + y * y);\n if ((d - _l > r) || (d + _l < r)) {\n return false;\n }\n if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {\n return true;\n }\n if (anticlockwise) {\n var tmp = startAngle;\n startAngle = normalizeRadian(endAngle);\n endAngle = normalizeRadian(tmp);\n }\n else {\n startAngle = normalizeRadian(startAngle);\n endAngle = normalizeRadian(endAngle);\n }\n if (startAngle > endAngle) {\n endAngle += PI2;\n }\n var angle = Math.atan2(y, x);\n if (angle < 0) {\n angle += PI2;\n }\n return (angle >= startAngle && angle <= endAngle)\n || (angle + PI2 >= startAngle && angle + PI2 <= endAngle);\n}\n","export default function windingLine(x0, y0, x1, y1, x, y) {\n if ((y > y0 && y > y1) || (y < y0 && y < y1)) {\n return 0;\n }\n if (y1 === y0) {\n return 0;\n }\n var t = (y - y0) / (y1 - y0);\n var dir = y1 < y0 ? 1 : -1;\n if (t === 1 || t === 0) {\n dir = y1 < y0 ? 0.5 : -0.5;\n }\n var x_ = t * (x1 - x0) + x0;\n return x_ === x ? Infinity : x_ > x ? dir : 0;\n}\n","import PathProxy from '../core/PathProxy.js';\nimport * as line from './line.js';\nimport * as cubic from './cubic.js';\nimport * as quadratic from './quadratic.js';\nimport * as arc from './arc.js';\nimport * as curve from '../core/curve.js';\nimport windingLine from './windingLine.js';\nvar CMD = PathProxy.CMD;\nvar PI2 = Math.PI * 2;\nvar EPSILON = 1e-4;\nfunction isAroundEqual(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\nvar roots = [-1, -1, -1];\nvar extrema = [-1, -1];\nfunction swapExtrema() {\n var tmp = extrema[0];\n extrema[0] = extrema[1];\n extrema[1] = tmp;\n}\nfunction windingCubic(x0, y0, x1, y1, x2, y2, x3, y3, x, y) {\n if ((y > y0 && y > y1 && y > y2 && y > y3)\n || (y < y0 && y < y1 && y < y2 && y < y3)) {\n return 0;\n }\n var nRoots = curve.cubicRootAt(y0, y1, y2, y3, y, roots);\n if (nRoots === 0) {\n return 0;\n }\n else {\n var w = 0;\n var nExtrema = -1;\n var y0_ = void 0;\n var y1_ = void 0;\n for (var i = 0; i < nRoots; i++) {\n var t = roots[i];\n var unit = (t === 0 || t === 1) ? 0.5 : 1;\n var x_ = curve.cubicAt(x0, x1, x2, x3, t);\n if (x_ < x) {\n continue;\n }\n if (nExtrema < 0) {\n nExtrema = curve.cubicExtrema(y0, y1, y2, y3, extrema);\n if (extrema[1] < extrema[0] && nExtrema > 1) {\n swapExtrema();\n }\n y0_ = curve.cubicAt(y0, y1, y2, y3, extrema[0]);\n if (nExtrema > 1) {\n y1_ = curve.cubicAt(y0, y1, y2, y3, extrema[1]);\n }\n }\n if (nExtrema === 2) {\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n }\n else if (t < extrema[1]) {\n w += y1_ < y0_ ? unit : -unit;\n }\n else {\n w += y3 < y1_ ? unit : -unit;\n }\n }\n else {\n if (t < extrema[0]) {\n w += y0_ < y0 ? unit : -unit;\n }\n else {\n w += y3 < y0_ ? unit : -unit;\n }\n }\n }\n return w;\n }\n}\nfunction windingQuadratic(x0, y0, x1, y1, x2, y2, x, y) {\n if ((y > y0 && y > y1 && y > y2)\n || (y < y0 && y < y1 && y < y2)) {\n return 0;\n }\n var nRoots = curve.quadraticRootAt(y0, y1, y2, y, roots);\n if (nRoots === 0) {\n return 0;\n }\n else {\n var t = curve.quadraticExtremum(y0, y1, y2);\n if (t >= 0 && t <= 1) {\n var w = 0;\n var y_ = curve.quadraticAt(y0, y1, y2, t);\n for (var i = 0; i < nRoots; i++) {\n var unit = (roots[i] === 0 || roots[i] === 1) ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[i]);\n if (x_ < x) {\n continue;\n }\n if (roots[i] < t) {\n w += y_ < y0 ? unit : -unit;\n }\n else {\n w += y2 < y_ ? unit : -unit;\n }\n }\n return w;\n }\n else {\n var unit = (roots[0] === 0 || roots[0] === 1) ? 0.5 : 1;\n var x_ = curve.quadraticAt(x0, x1, x2, roots[0]);\n if (x_ < x) {\n return 0;\n }\n return y2 < y0 ? unit : -unit;\n }\n }\n}\nfunction windingArc(cx, cy, r, startAngle, endAngle, anticlockwise, x, y) {\n y -= cy;\n if (y > r || y < -r) {\n return 0;\n }\n var tmp = Math.sqrt(r * r - y * y);\n roots[0] = -tmp;\n roots[1] = tmp;\n var dTheta = Math.abs(startAngle - endAngle);\n if (dTheta < 1e-4) {\n return 0;\n }\n if (dTheta >= PI2 - 1e-4) {\n startAngle = 0;\n endAngle = PI2;\n var dir = anticlockwise ? 1 : -1;\n if (x >= roots[0] + cx && x <= roots[1] + cx) {\n return dir;\n }\n else {\n return 0;\n }\n }\n if (startAngle > endAngle) {\n var tmp_1 = startAngle;\n startAngle = endAngle;\n endAngle = tmp_1;\n }\n if (startAngle < 0) {\n startAngle += PI2;\n endAngle += PI2;\n }\n var w = 0;\n for (var i = 0; i < 2; i++) {\n var x_ = roots[i];\n if (x_ + cx > x) {\n var angle = Math.atan2(y, x_);\n var dir = anticlockwise ? 1 : -1;\n if (angle < 0) {\n angle = PI2 + angle;\n }\n if ((angle >= startAngle && angle <= endAngle)\n || (angle + PI2 >= startAngle && angle + PI2 <= endAngle)) {\n if (angle > Math.PI / 2 && angle < Math.PI * 1.5) {\n dir = -dir;\n }\n w += dir;\n }\n }\n }\n return w;\n}\nfunction containPath(path, lineWidth, isStroke, x, y) {\n var data = path.data;\n var len = path.len();\n var w = 0;\n var xi = 0;\n var yi = 0;\n var x0 = 0;\n var y0 = 0;\n var x1;\n var y1;\n for (var i = 0; i < len;) {\n var cmd = data[i++];\n var isFirst = i === 1;\n if (cmd === CMD.M && i > 1) {\n if (!isStroke) {\n w += windingLine(xi, yi, x0, y0, x, y);\n }\n }\n if (isFirst) {\n xi = data[i];\n yi = data[i + 1];\n x0 = xi;\n y0 = yi;\n }\n switch (cmd) {\n case CMD.M:\n x0 = data[i++];\n y0 = data[i++];\n xi = x0;\n yi = y0;\n break;\n case CMD.L:\n if (isStroke) {\n if (line.containStroke(xi, yi, data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingLine(xi, yi, data[i], data[i + 1], x, y) || 0;\n }\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.C:\n if (isStroke) {\n if (cubic.containStroke(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingCubic(xi, yi, data[i++], data[i++], data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.Q:\n if (isStroke) {\n if (quadratic.containStroke(xi, yi, data[i++], data[i++], data[i], data[i + 1], lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingQuadratic(xi, yi, data[i++], data[i++], data[i], data[i + 1], x, y) || 0;\n }\n xi = data[i++];\n yi = data[i++];\n break;\n case CMD.A:\n var cx = data[i++];\n var cy = data[i++];\n var rx = data[i++];\n var ry = data[i++];\n var theta = data[i++];\n var dTheta = data[i++];\n i += 1;\n var anticlockwise = !!(1 - data[i++]);\n x1 = Math.cos(theta) * rx + cx;\n y1 = Math.sin(theta) * ry + cy;\n if (!isFirst) {\n w += windingLine(xi, yi, x1, y1, x, y);\n }\n else {\n x0 = x1;\n y0 = y1;\n }\n var _x = (x - cx) * ry / rx + cx;\n if (isStroke) {\n if (arc.containStroke(cx, cy, ry, theta, theta + dTheta, anticlockwise, lineWidth, _x, y)) {\n return true;\n }\n }\n else {\n w += windingArc(cx, cy, ry, theta, theta + dTheta, anticlockwise, _x, y);\n }\n xi = Math.cos(theta + dTheta) * rx + cx;\n yi = Math.sin(theta + dTheta) * ry + cy;\n break;\n case CMD.R:\n x0 = xi = data[i++];\n y0 = yi = data[i++];\n var width = data[i++];\n var height = data[i++];\n x1 = x0 + width;\n y1 = y0 + height;\n if (isStroke) {\n if (line.containStroke(x0, y0, x1, y0, lineWidth, x, y)\n || line.containStroke(x1, y0, x1, y1, lineWidth, x, y)\n || line.containStroke(x1, y1, x0, y1, lineWidth, x, y)\n || line.containStroke(x0, y1, x0, y0, lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingLine(x1, y0, x1, y1, x, y);\n w += windingLine(x0, y1, x0, y0, x, y);\n }\n break;\n case CMD.Z:\n if (isStroke) {\n if (line.containStroke(xi, yi, x0, y0, lineWidth, x, y)) {\n return true;\n }\n }\n else {\n w += windingLine(xi, yi, x0, y0, x, y);\n }\n xi = x0;\n yi = y0;\n break;\n }\n }\n if (!isStroke && !isAroundEqual(yi, y0)) {\n w += windingLine(xi, yi, x0, y0, x, y) || 0;\n }\n return w !== 0;\n}\nexport function contain(pathProxy, x, y) {\n return containPath(pathProxy, 0, false, x, y);\n}\nexport function containStroke(pathProxy, lineWidth, x, y) {\n return containPath(pathProxy, lineWidth, true, x, y);\n}\n","import { __extends } from \"tslib\";\nimport Displayable, { DEFAULT_COMMON_STYLE, DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js';\nimport PathProxy from '../core/PathProxy.js';\nimport * as pathContain from '../contain/path.js';\nimport { defaults, keys, extend, clone, isString, createObject } from '../core/util.js';\nimport { lum } from '../tool/color.js';\nimport { DARK_LABEL_COLOR, LIGHT_LABEL_COLOR, DARK_MODE_THRESHOLD, LIGHTER_LABEL_COLOR } from '../config.js';\nimport { REDRAW_BIT, SHAPE_CHANGED_BIT, STYLE_CHANGED_BIT } from './constants.js';\nimport { TRANSFORMABLE_PROPS } from '../core/Transformable.js';\nexport var DEFAULT_PATH_STYLE = defaults({\n fill: '#000',\n stroke: null,\n strokePercent: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n lineDashOffset: 0,\n lineWidth: 1,\n lineCap: 'butt',\n miterLimit: 10,\n strokeNoScale: false,\n strokeFirst: false\n}, DEFAULT_COMMON_STYLE);\nexport var DEFAULT_PATH_ANIMATION_PROPS = {\n style: defaults({\n fill: true,\n stroke: true,\n strokePercent: true,\n fillOpacity: true,\n strokeOpacity: true,\n lineDashOffset: true,\n lineWidth: true,\n miterLimit: true\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nvar pathCopyParams = TRANSFORMABLE_PROPS.concat(['invisible',\n 'culling', 'z', 'z2', 'zlevel', 'parent'\n]);\nvar Path = (function (_super) {\n __extends(Path, _super);\n function Path(opts) {\n return _super.call(this, opts) || this;\n }\n Path.prototype.update = function () {\n var _this = this;\n _super.prototype.update.call(this);\n var style = this.style;\n if (style.decal) {\n var decalEl = this._decalEl = this._decalEl || new Path();\n if (decalEl.buildPath === Path.prototype.buildPath) {\n decalEl.buildPath = function (ctx) {\n _this.buildPath(ctx, _this.shape);\n };\n }\n decalEl.silent = true;\n var decalElStyle = decalEl.style;\n for (var key in style) {\n if (decalElStyle[key] !== style[key]) {\n decalElStyle[key] = style[key];\n }\n }\n decalElStyle.fill = style.fill ? style.decal : null;\n decalElStyle.decal = null;\n decalElStyle.shadowColor = null;\n style.strokeFirst && (decalElStyle.stroke = null);\n for (var i = 0; i < pathCopyParams.length; ++i) {\n decalEl[pathCopyParams[i]] = this[pathCopyParams[i]];\n }\n decalEl.__dirty |= REDRAW_BIT;\n }\n else if (this._decalEl) {\n this._decalEl = null;\n }\n };\n Path.prototype.getDecalElement = function () {\n return this._decalEl;\n };\n Path.prototype._init = function (props) {\n var keysArr = keys(props);\n this.shape = this.getDefaultShape();\n var defaultStyle = this.getDefaultStyle();\n if (defaultStyle) {\n this.useStyle(defaultStyle);\n }\n for (var i = 0; i < keysArr.length; i++) {\n var key = keysArr[i];\n var value = props[key];\n if (key === 'style') {\n if (!this.style) {\n this.useStyle(value);\n }\n else {\n extend(this.style, value);\n }\n }\n else if (key === 'shape') {\n extend(this.shape, value);\n }\n else {\n _super.prototype.attrKV.call(this, key, value);\n }\n }\n if (!this.style) {\n this.useStyle({});\n }\n };\n Path.prototype.getDefaultStyle = function () {\n return null;\n };\n Path.prototype.getDefaultShape = function () {\n return {};\n };\n Path.prototype.canBeInsideText = function () {\n return this.hasFill();\n };\n Path.prototype.getInsideTextFill = function () {\n var pathFill = this.style.fill;\n if (pathFill !== 'none') {\n if (isString(pathFill)) {\n var fillLum = lum(pathFill, 0);\n if (fillLum > 0.5) {\n return DARK_LABEL_COLOR;\n }\n else if (fillLum > 0.2) {\n return LIGHTER_LABEL_COLOR;\n }\n return LIGHT_LABEL_COLOR;\n }\n else if (pathFill) {\n return LIGHT_LABEL_COLOR;\n }\n }\n return DARK_LABEL_COLOR;\n };\n Path.prototype.getInsideTextStroke = function (textFill) {\n var pathFill = this.style.fill;\n if (isString(pathFill)) {\n var zr = this.__zr;\n var isDarkMode = !!(zr && zr.isDarkMode());\n var isDarkLabel = lum(textFill, 0) < DARK_MODE_THRESHOLD;\n if (isDarkMode === isDarkLabel) {\n return pathFill;\n }\n }\n };\n Path.prototype.buildPath = function (ctx, shapeCfg, inBatch) { };\n Path.prototype.pathUpdated = function () {\n this.__dirty &= ~SHAPE_CHANGED_BIT;\n };\n Path.prototype.getUpdatedPathProxy = function (inBatch) {\n !this.path && this.createPathProxy();\n this.path.beginPath();\n this.buildPath(this.path, this.shape, inBatch);\n return this.path;\n };\n Path.prototype.createPathProxy = function () {\n this.path = new PathProxy(false);\n };\n Path.prototype.hasStroke = function () {\n var style = this.style;\n var stroke = style.stroke;\n return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\n };\n Path.prototype.hasFill = function () {\n var style = this.style;\n var fill = style.fill;\n return fill != null && fill !== 'none';\n };\n Path.prototype.getBoundingRect = function () {\n var rect = this._rect;\n var style = this.style;\n var needsUpdateRect = !rect;\n if (needsUpdateRect) {\n var firstInvoke = false;\n if (!this.path) {\n firstInvoke = true;\n this.createPathProxy();\n }\n var path = this.path;\n if (firstInvoke || (this.__dirty & SHAPE_CHANGED_BIT)) {\n path.beginPath();\n this.buildPath(path, this.shape, false);\n this.pathUpdated();\n }\n rect = path.getBoundingRect();\n }\n this._rect = rect;\n if (this.hasStroke() && this.path && this.path.len() > 0) {\n var rectStroke = this._rectStroke || (this._rectStroke = rect.clone());\n if (this.__dirty || needsUpdateRect) {\n rectStroke.copy(rect);\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\n var w = style.lineWidth;\n if (!this.hasFill()) {\n var strokeContainThreshold = this.strokeContainThreshold;\n w = Math.max(w, strokeContainThreshold == null ? 4 : strokeContainThreshold);\n }\n if (lineScale > 1e-10) {\n rectStroke.width += w / lineScale;\n rectStroke.height += w / lineScale;\n rectStroke.x -= w / lineScale / 2;\n rectStroke.y -= w / lineScale / 2;\n }\n }\n return rectStroke;\n }\n return rect;\n };\n Path.prototype.contain = function (x, y) {\n var localPos = this.transformCoordToLocal(x, y);\n var rect = this.getBoundingRect();\n var style = this.style;\n x = localPos[0];\n y = localPos[1];\n if (rect.contain(x, y)) {\n var pathProxy = this.path;\n if (this.hasStroke()) {\n var lineWidth = style.lineWidth;\n var lineScale = style.strokeNoScale ? this.getLineScale() : 1;\n if (lineScale > 1e-10) {\n if (!this.hasFill()) {\n lineWidth = Math.max(lineWidth, this.strokeContainThreshold);\n }\n if (pathContain.containStroke(pathProxy, lineWidth / lineScale, x, y)) {\n return true;\n }\n }\n }\n if (this.hasFill()) {\n return pathContain.contain(pathProxy, x, y);\n }\n }\n return false;\n };\n Path.prototype.dirtyShape = function () {\n this.__dirty |= SHAPE_CHANGED_BIT;\n if (this._rect) {\n this._rect = null;\n }\n if (this._decalEl) {\n this._decalEl.dirtyShape();\n }\n this.markRedraw();\n };\n Path.prototype.dirty = function () {\n this.dirtyStyle();\n this.dirtyShape();\n };\n Path.prototype.animateShape = function (loop) {\n return this.animate('shape', loop);\n };\n Path.prototype.updateDuringAnimation = function (targetKey) {\n if (targetKey === 'style') {\n this.dirtyStyle();\n }\n else if (targetKey === 'shape') {\n this.dirtyShape();\n }\n else {\n this.markRedraw();\n }\n };\n Path.prototype.attrKV = function (key, value) {\n if (key === 'shape') {\n this.setShape(value);\n }\n else {\n _super.prototype.attrKV.call(this, key, value);\n }\n };\n Path.prototype.setShape = function (keyOrObj, value) {\n var shape = this.shape;\n if (!shape) {\n shape = this.shape = {};\n }\n if (typeof keyOrObj === 'string') {\n shape[keyOrObj] = value;\n }\n else {\n extend(shape, keyOrObj);\n }\n this.dirtyShape();\n return this;\n };\n Path.prototype.shapeChanged = function () {\n return !!(this.__dirty & SHAPE_CHANGED_BIT);\n };\n Path.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_PATH_STYLE, obj);\n };\n Path.prototype._innerSaveToNormal = function (toState) {\n _super.prototype._innerSaveToNormal.call(this, toState);\n var normalState = this._normalState;\n if (toState.shape && !normalState.shape) {\n normalState.shape = extend({}, this.shape);\n }\n };\n Path.prototype._applyStateObj = function (stateName, state, normalState, keepCurrentStates, transition, animationCfg) {\n _super.prototype._applyStateObj.call(this, stateName, state, normalState, keepCurrentStates, transition, animationCfg);\n var needsRestoreToNormal = !(state && keepCurrentStates);\n var targetShape;\n if (state && state.shape) {\n if (transition) {\n if (keepCurrentStates) {\n targetShape = state.shape;\n }\n else {\n targetShape = extend({}, normalState.shape);\n extend(targetShape, state.shape);\n }\n }\n else {\n targetShape = extend({}, keepCurrentStates ? this.shape : normalState.shape);\n extend(targetShape, state.shape);\n }\n }\n else if (needsRestoreToNormal) {\n targetShape = normalState.shape;\n }\n if (targetShape) {\n if (transition) {\n this.shape = extend({}, this.shape);\n var targetShapePrimaryProps = {};\n var shapeKeys = keys(targetShape);\n for (var i = 0; i < shapeKeys.length; i++) {\n var key = shapeKeys[i];\n if (typeof targetShape[key] === 'object') {\n this.shape[key] = targetShape[key];\n }\n else {\n targetShapePrimaryProps[key] = targetShape[key];\n }\n }\n this._transitionState(stateName, {\n shape: targetShapePrimaryProps\n }, animationCfg);\n }\n else {\n this.shape = targetShape;\n this.dirtyShape();\n }\n }\n };\n Path.prototype._mergeStates = function (states) {\n var mergedState = _super.prototype._mergeStates.call(this, states);\n var mergedShape;\n for (var i = 0; i < states.length; i++) {\n var state = states[i];\n if (state.shape) {\n mergedShape = mergedShape || {};\n this._mergeStyle(mergedShape, state.shape);\n }\n }\n if (mergedShape) {\n mergedState.shape = mergedShape;\n }\n return mergedState;\n };\n Path.prototype.getAnimationStyleProps = function () {\n return DEFAULT_PATH_ANIMATION_PROPS;\n };\n Path.prototype.isZeroArea = function () {\n return false;\n };\n Path.extend = function (defaultProps) {\n var Sub = (function (_super) {\n __extends(Sub, _super);\n function Sub(opts) {\n var _this = _super.call(this, opts) || this;\n defaultProps.init && defaultProps.init.call(_this, opts);\n return _this;\n }\n Sub.prototype.getDefaultStyle = function () {\n return clone(defaultProps.style);\n };\n Sub.prototype.getDefaultShape = function () {\n return clone(defaultProps.shape);\n };\n return Sub;\n }(Path));\n for (var key in defaultProps) {\n if (typeof defaultProps[key] === 'function') {\n Sub.prototype[key] = defaultProps[key];\n }\n }\n return Sub;\n };\n Path.initDefaultProps = (function () {\n var pathProto = Path.prototype;\n pathProto.type = 'path';\n pathProto.strokeContainThreshold = 5;\n pathProto.segmentIgnoreThreshold = 0;\n pathProto.subPixelOptimize = false;\n pathProto.autoBatch = false;\n pathProto.__dirty = REDRAW_BIT | STYLE_CHANGED_BIT | SHAPE_CHANGED_BIT;\n })();\n return Path;\n}(Displayable));\nexport default Path;\n","import { __extends } from \"tslib\";\nimport Displayable from './Displayable.js';\nimport { DEFAULT_PATH_STYLE } from './Path.js';\nimport { createObject, defaults } from '../core/util.js';\nimport { DEFAULT_FONT } from '../core/platform.js';\nimport { tSpanCreateBoundingRect, tSpanHasStroke } from './helper/parseText.js';\nexport var DEFAULT_TSPAN_STYLE = defaults({\n strokeFirst: true,\n font: DEFAULT_FONT,\n x: 0,\n y: 0,\n textAlign: 'left',\n textBaseline: 'top',\n miterLimit: 2\n}, DEFAULT_PATH_STYLE);\nvar TSpan = (function (_super) {\n __extends(TSpan, _super);\n function TSpan() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TSpan.prototype.hasStroke = function () {\n return tSpanHasStroke(this.style);\n };\n TSpan.prototype.hasFill = function () {\n var style = this.style;\n var fill = style.fill;\n return fill != null && fill !== 'none';\n };\n TSpan.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_TSPAN_STYLE, obj);\n };\n TSpan.prototype.setBoundingRect = function (rect) {\n this._rect = rect;\n };\n TSpan.prototype.getBoundingRect = function () {\n if (!this._rect) {\n this._rect = tSpanCreateBoundingRect(this.style);\n }\n return this._rect;\n };\n TSpan.initDefaultProps = (function () {\n var tspanProto = TSpan.prototype;\n tspanProto.dirtyRectTolerance = 10;\n })();\n return TSpan;\n}(Displayable));\nTSpan.prototype.type = 'tspan';\nexport default TSpan;\n","import { __extends } from \"tslib\";\nimport Displayable, { DEFAULT_COMMON_STYLE, DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport { defaults, createObject } from '../core/util.js';\nexport var DEFAULT_IMAGE_STYLE = defaults({\n x: 0,\n y: 0\n}, DEFAULT_COMMON_STYLE);\nexport var DEFAULT_IMAGE_ANIMATION_PROPS = {\n style: defaults({\n x: true,\n y: true,\n width: true,\n height: true,\n sx: true,\n sy: true,\n sWidth: true,\n sHeight: true\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nfunction isImageLike(source) {\n return !!(source\n && typeof source !== 'string'\n && source.width && source.height);\n}\nvar ZRImage = (function (_super) {\n __extends(ZRImage, _super);\n function ZRImage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ZRImage.prototype.createStyle = function (obj) {\n return createObject(DEFAULT_IMAGE_STYLE, obj);\n };\n ZRImage.prototype._getSize = function (dim) {\n var style = this.style;\n var size = style[dim];\n if (size != null) {\n return size;\n }\n var imageSource = isImageLike(style.image)\n ? style.image : this.__image;\n if (!imageSource) {\n return 0;\n }\n var otherDim = dim === 'width' ? 'height' : 'width';\n var otherDimSize = style[otherDim];\n if (otherDimSize == null) {\n return imageSource[dim];\n }\n else {\n return imageSource[dim] / imageSource[otherDim] * otherDimSize;\n }\n };\n ZRImage.prototype.getWidth = function () {\n return this._getSize('width');\n };\n ZRImage.prototype.getHeight = function () {\n return this._getSize('height');\n };\n ZRImage.prototype.getAnimationStyleProps = function () {\n return DEFAULT_IMAGE_ANIMATION_PROPS;\n };\n ZRImage.prototype.getBoundingRect = function () {\n var style = this.style;\n if (!this._rect) {\n this._rect = new BoundingRect(style.x || 0, style.y || 0, this.getWidth(), this.getHeight());\n }\n return this._rect;\n };\n return ZRImage;\n}(Displayable));\nZRImage.prototype.type = 'image';\nexport default ZRImage;\n","export function buildPath(ctx, shape) {\n var x = shape.x;\n var y = shape.y;\n var width = shape.width;\n var height = shape.height;\n var r = shape.r;\n var r1;\n var r2;\n var r3;\n var r4;\n if (width < 0) {\n x = x + width;\n width = -width;\n }\n if (height < 0) {\n y = y + height;\n height = -height;\n }\n if (typeof r === 'number') {\n r1 = r2 = r3 = r4 = r;\n }\n else if (r instanceof Array) {\n if (r.length === 1) {\n r1 = r2 = r3 = r4 = r[0];\n }\n else if (r.length === 2) {\n r1 = r3 = r[0];\n r2 = r4 = r[1];\n }\n else if (r.length === 3) {\n r1 = r[0];\n r2 = r4 = r[1];\n r3 = r[2];\n }\n else {\n r1 = r[0];\n r2 = r[1];\n r3 = r[2];\n r4 = r[3];\n }\n }\n else {\n r1 = r2 = r3 = r4 = 0;\n }\n var total;\n if (r1 + r2 > width) {\n total = r1 + r2;\n r1 *= width / total;\n r2 *= width / total;\n }\n if (r3 + r4 > width) {\n total = r3 + r4;\n r3 *= width / total;\n r4 *= width / total;\n }\n if (r2 + r3 > height) {\n total = r2 + r3;\n r2 *= height / total;\n r3 *= height / total;\n }\n if (r1 + r4 > height) {\n total = r1 + r4;\n r1 *= height / total;\n r4 *= height / total;\n }\n ctx.moveTo(x + r1, y);\n ctx.lineTo(x + width - r2, y);\n r2 !== 0 && ctx.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n ctx.lineTo(x + width, y + height - r3);\n r3 !== 0 && ctx.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n ctx.lineTo(x + r4, y + height);\n r4 !== 0 && ctx.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n ctx.lineTo(x, y + r1);\n r1 !== 0 && ctx.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n}\n","var round = Math.round;\nexport function subPixelOptimizeLine(outputShape, inputShape, style) {\n if (!inputShape) {\n return;\n }\n var x1 = inputShape.x1;\n var x2 = inputShape.x2;\n var y1 = inputShape.y1;\n var y2 = inputShape.y2;\n outputShape.x1 = x1;\n outputShape.x2 = x2;\n outputShape.y1 = y1;\n outputShape.y2 = y2;\n var lineWidth = style && style.lineWidth;\n if (!lineWidth) {\n return outputShape;\n }\n if (round(x1 * 2) === round(x2 * 2)) {\n outputShape.x1 = outputShape.x2 = subPixelOptimize(x1, lineWidth, true);\n }\n if (round(y1 * 2) === round(y2 * 2)) {\n outputShape.y1 = outputShape.y2 = subPixelOptimize(y1, lineWidth, true);\n }\n return outputShape;\n}\nexport function subPixelOptimizeRect(outputShape, inputShape, style) {\n if (!inputShape) {\n return;\n }\n var originX = inputShape.x;\n var originY = inputShape.y;\n var originWidth = inputShape.width;\n var originHeight = inputShape.height;\n outputShape.x = originX;\n outputShape.y = originY;\n outputShape.width = originWidth;\n outputShape.height = originHeight;\n var lineWidth = style && style.lineWidth;\n if (!lineWidth) {\n return outputShape;\n }\n outputShape.x = subPixelOptimize(originX, lineWidth, true);\n outputShape.y = subPixelOptimize(originY, lineWidth, true);\n outputShape.width = Math.max(subPixelOptimize(originX + originWidth, lineWidth, false) - outputShape.x, originWidth === 0 ? 0 : 1);\n outputShape.height = Math.max(subPixelOptimize(originY + originHeight, lineWidth, false) - outputShape.y, originHeight === 0 ? 0 : 1);\n return outputShape;\n}\nexport function subPixelOptimize(position, lineWidth, positiveOrNegative) {\n if (!lineWidth) {\n return position;\n }\n var doubledPosition = round(position * 2);\n return (doubledPosition + round(lineWidth)) % 2 === 0\n ? doubledPosition / 2\n : (doubledPosition + (positiveOrNegative ? 1 : -1)) / 2;\n}\n","import { __extends } from \"tslib\";\nimport Path from '../Path.js';\nimport * as roundRectHelper from '../helper/roundRect.js';\nimport { subPixelOptimizeRect } from '../helper/subPixelOptimize.js';\nvar RectShape = (function () {\n function RectShape() {\n this.x = 0;\n this.y = 0;\n this.width = 0;\n this.height = 0;\n }\n return RectShape;\n}());\nexport { RectShape };\nvar subPixelOptimizeOutputShape = {};\nvar Rect = (function (_super) {\n __extends(Rect, _super);\n function Rect(opts) {\n return _super.call(this, opts) || this;\n }\n Rect.prototype.getDefaultShape = function () {\n return new RectShape();\n };\n Rect.prototype.buildPath = function (ctx, shape) {\n var x;\n var y;\n var width;\n var height;\n if (this.subPixelOptimize) {\n var optimizedShape = subPixelOptimizeRect(subPixelOptimizeOutputShape, shape, this.style);\n x = optimizedShape.x;\n y = optimizedShape.y;\n width = optimizedShape.width;\n height = optimizedShape.height;\n optimizedShape.r = shape.r;\n shape = optimizedShape;\n }\n else {\n x = shape.x;\n y = shape.y;\n width = shape.width;\n height = shape.height;\n }\n if (!shape.r) {\n ctx.rect(x, y, width, height);\n }\n else {\n roundRectHelper.buildPath(ctx, shape);\n }\n };\n Rect.prototype.isZeroArea = function () {\n return !this.shape.width || !this.shape.height;\n };\n return Rect;\n}(Path));\nRect.prototype.type = 'rect';\nexport default Rect;\n","import { __extends } from \"tslib\";\nimport { parseRichText, parsePlainText, calcInnerTextOverflowArea, tSpanCreateBoundingRect2, } from './helper/parseText.js';\nimport TSpan from './TSpan.js';\nimport { retrieve2, each, normalizeCssArray, trim, retrieve3, extend, keys, defaults } from '../core/util.js';\nimport { adjustTextX, adjustTextY } from '../contain/text.js';\nimport ZRImage from './Image.js';\nimport Rect from './shape/Rect.js';\nimport BoundingRect from '../core/BoundingRect.js';\nimport Displayable, { DEFAULT_COMMON_ANIMATION_PROPS } from './Displayable.js';\nimport { DEFAULT_FONT, DEFAULT_FONT_SIZE } from '../core/platform.js';\nvar DEFAULT_RICH_TEXT_COLOR = {\n fill: '#000'\n};\nvar DEFAULT_STROKE_LINE_WIDTH = 2;\nvar tmpCITOverflowAreaOut = {};\nexport var DEFAULT_TEXT_ANIMATION_PROPS = {\n style: defaults({\n fill: true,\n stroke: true,\n fillOpacity: true,\n strokeOpacity: true,\n lineWidth: true,\n fontSize: true,\n lineHeight: true,\n width: true,\n height: true,\n textShadowColor: true,\n textShadowBlur: true,\n textShadowOffsetX: true,\n textShadowOffsetY: true,\n backgroundColor: true,\n padding: true,\n borderColor: true,\n borderWidth: true,\n borderRadius: true\n }, DEFAULT_COMMON_ANIMATION_PROPS.style)\n};\nvar ZRText = (function (_super) {\n __extends(ZRText, _super);\n function ZRText(opts) {\n var _this = _super.call(this) || this;\n _this.type = 'text';\n _this._children = [];\n _this._defaultStyle = DEFAULT_RICH_TEXT_COLOR;\n _this.attr(opts);\n return _this;\n }\n ZRText.prototype.childrenRef = function () {\n return this._children;\n };\n ZRText.prototype.update = function () {\n _super.prototype.update.call(this);\n if (this.styleChanged()) {\n this._updateSubTexts();\n }\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n child.zlevel = this.zlevel;\n child.z = this.z;\n child.z2 = this.z2;\n child.culling = this.culling;\n child.cursor = this.cursor;\n child.invisible = this.invisible;\n }\n };\n ZRText.prototype.updateTransform = function () {\n var innerTransformable = this.innerTransformable;\n if (innerTransformable) {\n innerTransformable.updateTransform();\n if (innerTransformable.transform) {\n this.transform = innerTransformable.transform;\n }\n }\n else {\n _super.prototype.updateTransform.call(this);\n }\n };\n ZRText.prototype.getLocalTransform = function (m) {\n var innerTransformable = this.innerTransformable;\n return innerTransformable\n ? innerTransformable.getLocalTransform(m)\n : _super.prototype.getLocalTransform.call(this, m);\n };\n ZRText.prototype.getComputedTransform = function () {\n if (this.__hostTarget) {\n this.__hostTarget.getComputedTransform();\n this.__hostTarget.updateInnerText(true);\n }\n return _super.prototype.getComputedTransform.call(this);\n };\n ZRText.prototype._updateSubTexts = function () {\n this._childCursor = 0;\n normalizeTextStyle(this.style);\n this.style.rich\n ? this._updateRichTexts()\n : this._updatePlainTexts();\n this._children.length = this._childCursor;\n this.styleUpdated();\n };\n ZRText.prototype.addSelfToZr = function (zr) {\n _super.prototype.addSelfToZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n this._children[i].__zr = zr;\n }\n };\n ZRText.prototype.removeSelfFromZr = function (zr) {\n _super.prototype.removeSelfFromZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n this._children[i].__zr = null;\n }\n };\n ZRText.prototype.getBoundingRect = function () {\n if (this.styleChanged()) {\n this._updateSubTexts();\n }\n if (!this._rect) {\n var tmpRect = new BoundingRect(0, 0, 0, 0);\n var children = this._children;\n var tmpMat = [];\n var rect = null;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n var childRect = child.getBoundingRect();\n var transform = child.getLocalTransform(tmpMat);\n if (transform) {\n tmpRect.copy(childRect);\n tmpRect.applyTransform(transform);\n rect = rect || tmpRect.clone();\n rect.union(tmpRect);\n }\n else {\n rect = rect || childRect.clone();\n rect.union(childRect);\n }\n }\n this._rect = rect || tmpRect;\n }\n return this._rect;\n };\n ZRText.prototype.setDefaultTextStyle = function (defaultTextStyle) {\n this._defaultStyle = defaultTextStyle || DEFAULT_RICH_TEXT_COLOR;\n };\n ZRText.prototype.setTextContent = function (textContent) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('Can\\'t attach text on another text');\n }\n };\n ZRText.prototype._mergeStyle = function (targetStyle, sourceStyle) {\n if (!sourceStyle) {\n return targetStyle;\n }\n var sourceRich = sourceStyle.rich;\n var targetRich = targetStyle.rich || (sourceRich && {});\n extend(targetStyle, sourceStyle);\n if (sourceRich && targetRich) {\n this._mergeRich(targetRich, sourceRich);\n targetStyle.rich = targetRich;\n }\n else if (targetRich) {\n targetStyle.rich = targetRich;\n }\n return targetStyle;\n };\n ZRText.prototype._mergeRich = function (targetRich, sourceRich) {\n var richNames = keys(sourceRich);\n for (var i = 0; i < richNames.length; i++) {\n var richName = richNames[i];\n targetRich[richName] = targetRich[richName] || {};\n extend(targetRich[richName], sourceRich[richName]);\n }\n };\n ZRText.prototype.getAnimationStyleProps = function () {\n return DEFAULT_TEXT_ANIMATION_PROPS;\n };\n ZRText.prototype._getOrCreateChild = function (Ctor) {\n var child = this._children[this._childCursor];\n if (!child || !(child instanceof Ctor)) {\n child = new Ctor();\n }\n this._children[this._childCursor++] = child;\n child.__zr = this.__zr;\n child.parent = this;\n return child;\n };\n ZRText.prototype._updatePlainTexts = function () {\n var style = this.style;\n var textFont = style.font || DEFAULT_FONT;\n var textPadding = style.padding;\n var defaultStyle = this._defaultStyle;\n var baseX = style.x || 0;\n var baseY = style.y || 0;\n var textAlign = style.align || defaultStyle.align || 'left';\n var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign || 'top';\n calcInnerTextOverflowArea(tmpCITOverflowAreaOut, defaultStyle.overflowRect, baseX, baseY, textAlign, verticalAlign);\n baseX = tmpCITOverflowAreaOut.baseX;\n baseY = tmpCITOverflowAreaOut.baseY;\n var text = getStyleText(style);\n var contentBlock = parsePlainText(text, style, tmpCITOverflowAreaOut.outerWidth, tmpCITOverflowAreaOut.outerHeight);\n var needDrawBg = needDrawBackground(style);\n var bgColorDrawn = !!(style.backgroundColor);\n var outerHeight = contentBlock.outerHeight;\n var outerWidth = contentBlock.outerWidth;\n var textLines = contentBlock.lines;\n var lineHeight = contentBlock.lineHeight;\n this.isTruncated = !!contentBlock.isTruncated;\n var textX = baseX;\n var textY = adjustTextY(baseY, contentBlock.contentHeight, verticalAlign);\n if (needDrawBg || textPadding) {\n var boxX = adjustTextX(baseX, outerWidth, textAlign);\n var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\n needDrawBg && this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\n }\n textY += lineHeight / 2;\n if (textPadding) {\n textX = getTextXForPadding(baseX, textAlign, textPadding);\n if (verticalAlign === 'top') {\n textY += textPadding[0];\n }\n else if (verticalAlign === 'bottom') {\n textY -= textPadding[2];\n }\n }\n var defaultLineWidth = 0;\n var usingDefaultStroke = false;\n var useDefaultFill = false;\n var textFill = getFill('fill' in style\n ? style.fill\n : (useDefaultFill = true, defaultStyle.fill));\n var textStroke = getStroke('stroke' in style\n ? style.stroke\n : (!bgColorDrawn\n && (!defaultStyle.autoStroke || useDefaultFill))\n ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, usingDefaultStroke = true, defaultStyle.stroke)\n : null);\n var hasShadow = style.textShadowBlur > 0;\n for (var i = 0; i < textLines.length; i++) {\n var el = this._getOrCreateChild(TSpan);\n var subElStyle = el.createStyle();\n el.useStyle(subElStyle);\n subElStyle.text = textLines[i];\n subElStyle.x = textX;\n subElStyle.y = textY;\n if (textAlign) {\n subElStyle.textAlign = textAlign;\n }\n subElStyle.textBaseline = 'middle';\n subElStyle.opacity = style.opacity;\n subElStyle.strokeFirst = true;\n if (hasShadow) {\n subElStyle.shadowBlur = style.textShadowBlur || 0;\n subElStyle.shadowColor = style.textShadowColor || 'transparent';\n subElStyle.shadowOffsetX = style.textShadowOffsetX || 0;\n subElStyle.shadowOffsetY = style.textShadowOffsetY || 0;\n }\n subElStyle.stroke = textStroke;\n subElStyle.fill = textFill;\n if (textStroke) {\n subElStyle.lineWidth = style.lineWidth || defaultLineWidth;\n subElStyle.lineDash = style.lineDash;\n subElStyle.lineDashOffset = style.lineDashOffset || 0;\n }\n subElStyle.font = textFont;\n setSeparateFont(subElStyle, style);\n textY += lineHeight;\n el.setBoundingRect(tSpanCreateBoundingRect2(subElStyle, contentBlock.contentWidth, contentBlock.calculatedLineHeight, usingDefaultStroke ? 0 : null));\n }\n };\n ZRText.prototype._updateRichTexts = function () {\n var style = this.style;\n var defaultStyle = this._defaultStyle;\n var textAlign = style.align || defaultStyle.align;\n var verticalAlign = style.verticalAlign || defaultStyle.verticalAlign;\n var baseX = style.x || 0;\n var baseY = style.y || 0;\n calcInnerTextOverflowArea(tmpCITOverflowAreaOut, defaultStyle.overflowRect, baseX, baseY, textAlign, verticalAlign);\n baseX = tmpCITOverflowAreaOut.baseX;\n baseY = tmpCITOverflowAreaOut.baseY;\n var text = getStyleText(style);\n var contentBlock = parseRichText(text, style, tmpCITOverflowAreaOut.outerWidth, tmpCITOverflowAreaOut.outerHeight, textAlign);\n var contentWidth = contentBlock.width;\n var outerWidth = contentBlock.outerWidth;\n var outerHeight = contentBlock.outerHeight;\n var textPadding = style.padding;\n this.isTruncated = !!contentBlock.isTruncated;\n var boxX = adjustTextX(baseX, outerWidth, textAlign);\n var boxY = adjustTextY(baseY, outerHeight, verticalAlign);\n var xLeft = boxX;\n var lineTop = boxY;\n if (textPadding) {\n xLeft += textPadding[3];\n lineTop += textPadding[0];\n }\n var xRight = xLeft + contentWidth;\n if (needDrawBackground(style)) {\n this._renderBackground(style, style, boxX, boxY, outerWidth, outerHeight);\n }\n var bgColorDrawn = !!(style.backgroundColor);\n for (var i = 0; i < contentBlock.lines.length; i++) {\n var line = contentBlock.lines[i];\n var tokens = line.tokens;\n var tokenCount = tokens.length;\n var lineHeight = line.lineHeight;\n var remainedWidth = line.width;\n var leftIndex = 0;\n var lineXLeft = xLeft;\n var lineXRight = xRight;\n var rightIndex = tokenCount - 1;\n var token = void 0;\n while (leftIndex < tokenCount\n && (token = tokens[leftIndex], !token.align || token.align === 'left')) {\n this._placeToken(token, style, lineHeight, lineTop, lineXLeft, 'left', bgColorDrawn);\n remainedWidth -= token.width;\n lineXLeft += token.width;\n leftIndex++;\n }\n while (rightIndex >= 0\n && (token = tokens[rightIndex], token.align === 'right')) {\n this._placeToken(token, style, lineHeight, lineTop, lineXRight, 'right', bgColorDrawn);\n remainedWidth -= token.width;\n lineXRight -= token.width;\n rightIndex--;\n }\n lineXLeft += (contentWidth - (lineXLeft - xLeft) - (xRight - lineXRight) - remainedWidth) / 2;\n while (leftIndex <= rightIndex) {\n token = tokens[leftIndex];\n this._placeToken(token, style, lineHeight, lineTop, lineXLeft + token.width / 2, 'center', bgColorDrawn);\n lineXLeft += token.width;\n leftIndex++;\n }\n lineTop += lineHeight;\n }\n };\n ZRText.prototype._placeToken = function (token, style, lineHeight, lineTop, x, textAlign, parentBgColorDrawn) {\n var tokenStyle = style.rich[token.styleName] || {};\n tokenStyle.text = token.text;\n var verticalAlign = token.verticalAlign;\n var y = lineTop + lineHeight / 2;\n if (verticalAlign === 'top') {\n y = lineTop + token.height / 2;\n }\n else if (verticalAlign === 'bottom') {\n y = lineTop + lineHeight - token.height / 2;\n }\n var needDrawBg = !token.isLineHolder && needDrawBackground(tokenStyle);\n needDrawBg && this._renderBackground(tokenStyle, style, textAlign === 'right'\n ? x - token.width\n : textAlign === 'center'\n ? x - token.width / 2\n : x, y - token.height / 2, token.width, token.height);\n var bgColorDrawn = !!tokenStyle.backgroundColor;\n var textPadding = token.textPadding;\n if (textPadding) {\n x = getTextXForPadding(x, textAlign, textPadding);\n y -= token.height / 2 - textPadding[0] - token.innerHeight / 2;\n }\n var el = this._getOrCreateChild(TSpan);\n var subElStyle = el.createStyle();\n el.useStyle(subElStyle);\n var defaultStyle = this._defaultStyle;\n var useDefaultFill = false;\n var defaultLineWidth = 0;\n var usingDefaultStroke = false;\n var textFill = getFill('fill' in tokenStyle ? tokenStyle.fill\n : 'fill' in style ? style.fill\n : (useDefaultFill = true, defaultStyle.fill));\n var textStroke = getStroke('stroke' in tokenStyle ? tokenStyle.stroke\n : 'stroke' in style ? style.stroke\n : (!bgColorDrawn\n && !parentBgColorDrawn\n && (!defaultStyle.autoStroke || useDefaultFill)) ? (defaultLineWidth = DEFAULT_STROKE_LINE_WIDTH, usingDefaultStroke = true, defaultStyle.stroke)\n : null);\n var hasShadow = tokenStyle.textShadowBlur > 0\n || style.textShadowBlur > 0;\n subElStyle.text = token.text;\n subElStyle.x = x;\n subElStyle.y = y;\n if (hasShadow) {\n subElStyle.shadowBlur = tokenStyle.textShadowBlur || style.textShadowBlur || 0;\n subElStyle.shadowColor = tokenStyle.textShadowColor || style.textShadowColor || 'transparent';\n subElStyle.shadowOffsetX = tokenStyle.textShadowOffsetX || style.textShadowOffsetX || 0;\n subElStyle.shadowOffsetY = tokenStyle.textShadowOffsetY || style.textShadowOffsetY || 0;\n }\n subElStyle.textAlign = textAlign;\n subElStyle.textBaseline = 'middle';\n subElStyle.font = token.font || DEFAULT_FONT;\n subElStyle.opacity = retrieve3(tokenStyle.opacity, style.opacity, 1);\n setSeparateFont(subElStyle, tokenStyle);\n if (textStroke) {\n subElStyle.lineWidth = retrieve3(tokenStyle.lineWidth, style.lineWidth, defaultLineWidth);\n subElStyle.lineDash = retrieve2(tokenStyle.lineDash, style.lineDash);\n subElStyle.lineDashOffset = style.lineDashOffset || 0;\n subElStyle.stroke = textStroke;\n }\n if (textFill) {\n subElStyle.fill = textFill;\n }\n el.setBoundingRect(tSpanCreateBoundingRect2(subElStyle, token.contentWidth, token.contentHeight, usingDefaultStroke ? 0 : null));\n };\n ZRText.prototype._renderBackground = function (style, topStyle, x, y, width, height) {\n var textBackgroundColor = style.backgroundColor;\n var textBorderWidth = style.borderWidth;\n var textBorderColor = style.borderColor;\n var isImageBg = textBackgroundColor && textBackgroundColor.image;\n var isPlainOrGradientBg = textBackgroundColor && !isImageBg;\n var textBorderRadius = style.borderRadius;\n var self = this;\n var rectEl;\n var imgEl;\n if (isPlainOrGradientBg || style.lineHeight || (textBorderWidth && textBorderColor)) {\n rectEl = this._getOrCreateChild(Rect);\n rectEl.useStyle(rectEl.createStyle());\n rectEl.style.fill = null;\n var rectShape = rectEl.shape;\n rectShape.x = x;\n rectShape.y = y;\n rectShape.width = width;\n rectShape.height = height;\n rectShape.r = textBorderRadius;\n rectEl.dirtyShape();\n }\n if (isPlainOrGradientBg) {\n var rectStyle = rectEl.style;\n rectStyle.fill = textBackgroundColor || null;\n rectStyle.fillOpacity = retrieve2(style.fillOpacity, 1);\n }\n else if (isImageBg) {\n imgEl = this._getOrCreateChild(ZRImage);\n imgEl.onload = function () {\n self.dirtyStyle();\n };\n var imgStyle = imgEl.style;\n imgStyle.image = textBackgroundColor.image;\n imgStyle.x = x;\n imgStyle.y = y;\n imgStyle.width = width;\n imgStyle.height = height;\n }\n if (textBorderWidth && textBorderColor) {\n var rectStyle = rectEl.style;\n rectStyle.lineWidth = textBorderWidth;\n rectStyle.stroke = textBorderColor;\n rectStyle.strokeOpacity = retrieve2(style.strokeOpacity, 1);\n rectStyle.lineDash = style.borderDash;\n rectStyle.lineDashOffset = style.borderDashOffset || 0;\n rectEl.strokeContainThreshold = 0;\n if (rectEl.hasFill() && rectEl.hasStroke()) {\n rectStyle.strokeFirst = true;\n rectStyle.lineWidth *= 2;\n }\n }\n var commonStyle = (rectEl || imgEl).style;\n commonStyle.shadowBlur = style.shadowBlur || 0;\n commonStyle.shadowColor = style.shadowColor || 'transparent';\n commonStyle.shadowOffsetX = style.shadowOffsetX || 0;\n commonStyle.shadowOffsetY = style.shadowOffsetY || 0;\n commonStyle.opacity = retrieve3(style.opacity, topStyle.opacity, 1);\n };\n ZRText.makeFont = function (style) {\n var font = '';\n if (hasSeparateFont(style)) {\n font = [\n style.fontStyle,\n style.fontWeight,\n parseFontSize(style.fontSize),\n style.fontFamily || 'sans-serif'\n ].join(' ');\n }\n return font && trim(font) || style.textFont || style.font;\n };\n return ZRText;\n}(Displayable));\nvar VALID_TEXT_ALIGN = { left: true, right: 1, center: 1 };\nvar VALID_TEXT_VERTICAL_ALIGN = { top: 1, bottom: 1, middle: 1 };\nvar FONT_PARTS = ['fontStyle', 'fontWeight', 'fontSize', 'fontFamily'];\nexport function parseFontSize(fontSize) {\n if (typeof fontSize === 'string'\n && (fontSize.indexOf('px') !== -1\n || fontSize.indexOf('rem') !== -1\n || fontSize.indexOf('em') !== -1)) {\n return fontSize;\n }\n else if (!isNaN(+fontSize)) {\n return fontSize + 'px';\n }\n else {\n return DEFAULT_FONT_SIZE + 'px';\n }\n}\nfunction setSeparateFont(targetStyle, sourceStyle) {\n for (var i = 0; i < FONT_PARTS.length; i++) {\n var fontProp = FONT_PARTS[i];\n var val = sourceStyle[fontProp];\n if (val != null) {\n targetStyle[fontProp] = val;\n }\n }\n}\nexport function hasSeparateFont(style) {\n return style.fontSize != null || style.fontFamily || style.fontWeight;\n}\nexport function normalizeTextStyle(style) {\n normalizeStyle(style);\n each(style.rich, normalizeStyle);\n return style;\n}\nfunction normalizeStyle(style) {\n if (style) {\n style.font = ZRText.makeFont(style);\n var textAlign = style.align;\n textAlign === 'middle' && (textAlign = 'center');\n style.align = (textAlign == null || VALID_TEXT_ALIGN[textAlign]) ? textAlign : 'left';\n var verticalAlign = style.verticalAlign;\n verticalAlign === 'center' && (verticalAlign = 'middle');\n style.verticalAlign = (verticalAlign == null || VALID_TEXT_VERTICAL_ALIGN[verticalAlign]) ? verticalAlign : 'top';\n var textPadding = style.padding;\n if (textPadding) {\n style.padding = normalizeCssArray(style.padding);\n }\n }\n}\nfunction getStroke(stroke, lineWidth) {\n return (stroke == null || lineWidth <= 0 || stroke === 'transparent' || stroke === 'none')\n ? null\n : (stroke.image || stroke.colorStops)\n ? '#000'\n : stroke;\n}\nfunction getFill(fill) {\n return (fill == null || fill === 'none')\n ? null\n : (fill.image || fill.colorStops)\n ? '#000'\n : fill;\n}\nfunction getTextXForPadding(x, textAlign, textPadding) {\n return textAlign === 'right'\n ? (x - textPadding[1])\n : textAlign === 'center'\n ? (x + textPadding[3] / 2 - textPadding[1] / 2)\n : (x + textPadding[3]);\n}\nfunction getStyleText(style) {\n var text = style.text;\n text != null && (text += '');\n return text;\n}\nfunction needDrawBackground(style) {\n return !!(style.backgroundColor\n || style.lineHeight\n || (style.borderWidth && style.borderColor));\n}\nexport default ZRText;\n","import { __extends } from \"tslib\";\nimport * as zrUtil from '../core/util.js';\nimport Element from '../Element.js';\nimport BoundingRect from '../core/BoundingRect.js';\nvar Group = (function (_super) {\n __extends(Group, _super);\n function Group(opts) {\n var _this = _super.call(this) || this;\n _this.isGroup = true;\n _this._children = [];\n _this.attr(opts);\n return _this;\n }\n Group.prototype.childrenRef = function () {\n return this._children;\n };\n Group.prototype.children = function () {\n return this._children.slice();\n };\n Group.prototype.childAt = function (idx) {\n return this._children[idx];\n };\n Group.prototype.childOfName = function (name) {\n var children = this._children;\n for (var i = 0; i < children.length; i++) {\n if (children[i].name === name) {\n return children[i];\n }\n }\n };\n Group.prototype.childCount = function () {\n return this._children.length;\n };\n Group.prototype.add = function (child) {\n if (child) {\n if (child !== this && child.parent !== this) {\n this._children.push(child);\n this._doAdd(child);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (child.__hostTarget) {\n throw 'This elemenet has been used as an attachment';\n }\n }\n }\n return this;\n };\n Group.prototype.addBefore = function (child, nextSibling) {\n if (child && child !== this && child.parent !== this\n && nextSibling && nextSibling.parent === this) {\n var children = this._children;\n var idx = children.indexOf(nextSibling);\n if (idx >= 0) {\n children.splice(idx, 0, child);\n this._doAdd(child);\n }\n }\n return this;\n };\n Group.prototype.replace = function (oldChild, newChild) {\n var idx = zrUtil.indexOf(this._children, oldChild);\n if (idx >= 0) {\n this.replaceAt(newChild, idx);\n }\n return this;\n };\n Group.prototype.replaceAt = function (child, index) {\n var children = this._children;\n var old = children[index];\n if (child && child !== this && child.parent !== this && child !== old) {\n children[index] = child;\n old.parent = null;\n var zr = this.__zr;\n if (zr) {\n old.removeSelfFromZr(zr);\n }\n this._doAdd(child);\n }\n return this;\n };\n Group.prototype._doAdd = function (child) {\n if (child.parent) {\n child.parent.remove(child);\n }\n child.parent = this;\n var zr = this.__zr;\n if (zr && zr !== child.__zr) {\n child.addSelfToZr(zr);\n }\n zr && zr.refresh();\n };\n Group.prototype.remove = function (child) {\n var zr = this.__zr;\n var children = this._children;\n var idx = zrUtil.indexOf(children, child);\n if (idx < 0) {\n return this;\n }\n children.splice(idx, 1);\n child.parent = null;\n if (zr) {\n child.removeSelfFromZr(zr);\n }\n zr && zr.refresh();\n return this;\n };\n Group.prototype.removeAll = function () {\n var children = this._children;\n var zr = this.__zr;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (zr) {\n child.removeSelfFromZr(zr);\n }\n child.parent = null;\n }\n children.length = 0;\n return this;\n };\n Group.prototype.eachChild = function (cb, context) {\n var children = this._children;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n cb.call(context, child, i);\n }\n return this;\n };\n Group.prototype.traverse = function (cb, context) {\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n var stopped = cb.call(context, child);\n if (child.isGroup && !stopped) {\n child.traverse(cb, context);\n }\n }\n return this;\n };\n Group.prototype.addSelfToZr = function (zr) {\n _super.prototype.addSelfToZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n child.addSelfToZr(zr);\n }\n };\n Group.prototype.removeSelfFromZr = function (zr) {\n _super.prototype.removeSelfFromZr.call(this, zr);\n for (var i = 0; i < this._children.length; i++) {\n var child = this._children[i];\n child.removeSelfFromZr(zr);\n }\n };\n Group.prototype.getBoundingRect = function (includeChildren) {\n var tmpRect = new BoundingRect(0, 0, 0, 0);\n var children = includeChildren || this._children;\n var tmpMat = [];\n var rect = null;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (child.ignore || child.invisible) {\n continue;\n }\n var childRect = child.getBoundingRect();\n var transform = child.getLocalTransform(tmpMat);\n if (transform) {\n BoundingRect.applyTransform(tmpRect, childRect, transform);\n rect = rect || tmpRect.clone();\n rect.union(tmpRect);\n }\n else {\n rect = rect || childRect.clone();\n rect.union(childRect);\n }\n }\n return rect || tmpRect;\n };\n return Group;\n}(Element));\nGroup.prototype.type = 'group';\nexport default Group;\n","import { __extends } from \"tslib\";\nimport Path from './Path.js';\nvar CompoundPath = (function (_super) {\n __extends(CompoundPath, _super);\n function CompoundPath() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'compound';\n return _this;\n }\n CompoundPath.prototype._updatePathDirty = function () {\n var paths = this.shape.paths;\n var dirtyPath = this.shapeChanged();\n for (var i = 0; i < paths.length; i++) {\n dirtyPath = dirtyPath || paths[i].shapeChanged();\n }\n if (dirtyPath) {\n this.dirtyShape();\n }\n };\n CompoundPath.prototype.beforeBrush = function () {\n this._updatePathDirty();\n var paths = this.shape.paths || [];\n var scale = this.getGlobalScale();\n for (var i = 0; i < paths.length; i++) {\n if (!paths[i].path) {\n paths[i].createPathProxy();\n }\n paths[i].path.setScale(scale[0], scale[1], paths[i].segmentIgnoreThreshold);\n }\n };\n CompoundPath.prototype.buildPath = function (ctx, shape) {\n var paths = shape.paths || [];\n for (var i = 0; i < paths.length; i++) {\n paths[i].buildPath(ctx, paths[i].shape, true);\n }\n };\n CompoundPath.prototype.afterBrush = function () {\n var paths = this.shape.paths || [];\n for (var i = 0; i < paths.length; i++) {\n paths[i].pathUpdated();\n }\n };\n CompoundPath.prototype.getBoundingRect = function () {\n this._updatePathDirty.call(this);\n return Path.prototype.getBoundingRect.call(this);\n };\n return CompoundPath;\n}(Path));\nexport default CompoundPath;\n","var LN2 = Math.log(2);\nfunction determinant(rows, rank, rowStart, rowMask, colMask, detCache) {\n var cacheKey = rowMask + '-' + colMask;\n var fullRank = rows.length;\n if (detCache.hasOwnProperty(cacheKey)) {\n return detCache[cacheKey];\n }\n if (rank === 1) {\n var colStart = Math.round(Math.log(((1 << fullRank) - 1) & ~colMask) / LN2);\n return rows[rowStart][colStart];\n }\n var subRowMask = rowMask | (1 << rowStart);\n var subRowStart = rowStart + 1;\n while (rowMask & (1 << subRowStart)) {\n subRowStart++;\n }\n var sum = 0;\n for (var j = 0, colLocalIdx = 0; j < fullRank; j++) {\n var colTag = 1 << j;\n if (!(colTag & colMask)) {\n sum += (colLocalIdx % 2 ? -1 : 1) * rows[rowStart][j]\n * determinant(rows, rank - 1, subRowStart, subRowMask, colMask | colTag, detCache);\n colLocalIdx++;\n }\n }\n detCache[cacheKey] = sum;\n return sum;\n}\nexport function buildTransformer(src, dest) {\n var mA = [\n [src[0], src[1], 1, 0, 0, 0, -dest[0] * src[0], -dest[0] * src[1]],\n [0, 0, 0, src[0], src[1], 1, -dest[1] * src[0], -dest[1] * src[1]],\n [src[2], src[3], 1, 0, 0, 0, -dest[2] * src[2], -dest[2] * src[3]],\n [0, 0, 0, src[2], src[3], 1, -dest[3] * src[2], -dest[3] * src[3]],\n [src[4], src[5], 1, 0, 0, 0, -dest[4] * src[4], -dest[4] * src[5]],\n [0, 0, 0, src[4], src[5], 1, -dest[5] * src[4], -dest[5] * src[5]],\n [src[6], src[7], 1, 0, 0, 0, -dest[6] * src[6], -dest[6] * src[7]],\n [0, 0, 0, src[6], src[7], 1, -dest[7] * src[6], -dest[7] * src[7]]\n ];\n var detCache = {};\n var det = determinant(mA, 8, 0, 0, 0, detCache);\n if (det === 0) {\n return;\n }\n var vh = [];\n for (var i = 0; i < 8; i++) {\n for (var j = 0; j < 8; j++) {\n vh[j] == null && (vh[j] = 0);\n vh[j] += ((i + j) % 2 ? -1 : 1)\n * determinant(mA, 7, i === 0 ? 1 : 0, 1 << i, 1 << j, detCache)\n / det * dest[i];\n }\n }\n return function (out, srcPointX, srcPointY) {\n var pk = srcPointX * vh[6] + srcPointY * vh[7] + 1;\n out[0] = (srcPointX * vh[0] + srcPointY * vh[1] + vh[2]) / pk;\n out[1] = (srcPointX * vh[3] + srcPointY * vh[4] + vh[5]) / pk;\n };\n}\n","import env from './env.js';\nimport { buildTransformer } from './fourPointsTransform.js';\nimport { each } from './util.js';\nvar EVENT_SAVED_PROP = '___zrEVENTSAVED';\nvar _calcOut = [];\nexport function transformLocalCoord(out, elFrom, elTarget, inX, inY) {\n return transformCoordWithViewport(_calcOut, elFrom, inX, inY, true)\n && transformCoordWithViewport(out, elTarget, _calcOut[0], _calcOut[1]);\n}\nexport function transformLocalCoordClear(elFrom, elTarget) {\n elFrom && dealClear(elFrom);\n elTarget && dealClear(elTarget);\n function dealClear(el) {\n var saved = el[EVENT_SAVED_PROP];\n if (saved) {\n saved.clearMarkers && saved.clearMarkers();\n delete el[EVENT_SAVED_PROP];\n }\n }\n}\nexport function transformCoordWithViewport(out, el, inX, inY, inverse) {\n if (el.getBoundingClientRect && env.domSupported && !isCanvasEl(el)) {\n var saved = el[EVENT_SAVED_PROP] || (el[EVENT_SAVED_PROP] = {});\n var markers = prepareCoordMarkers(el, saved);\n var transformer = preparePointerTransformer(markers, saved, inverse);\n if (transformer) {\n transformer(out, inX, inY);\n return true;\n }\n }\n return false;\n}\nfunction prepareCoordMarkers(el, saved) {\n var markers = saved.markers;\n if (markers) {\n return markers;\n }\n markers = saved.markers = [];\n var propLR = ['left', 'right'];\n var propTB = ['top', 'bottom'];\n for (var i = 0; i < 4; i++) {\n var marker = document.createElement('div');\n var stl = marker.style;\n var idxLR = i % 2;\n var idxTB = (i >> 1) % 2;\n stl.cssText = [\n 'position: absolute',\n 'visibility: hidden',\n 'padding: 0',\n 'margin: 0',\n 'border-width: 0',\n 'user-select: none',\n 'width:0',\n 'height:0',\n propLR[idxLR] + ':0',\n propTB[idxTB] + ':0',\n propLR[1 - idxLR] + ':auto',\n propTB[1 - idxTB] + ':auto',\n ''\n ].join('!important;');\n el.appendChild(marker);\n markers.push(marker);\n }\n saved.clearMarkers = function () {\n each(markers, function (marker) {\n marker.parentNode && marker.parentNode.removeChild(marker);\n });\n };\n return markers;\n}\nfunction preparePointerTransformer(markers, saved, inverse) {\n var transformerName = inverse ? 'invTrans' : 'trans';\n var transformer = saved[transformerName];\n var oldSrcCoords = saved.srcCoords;\n var srcCoords = [];\n var destCoords = [];\n var oldCoordTheSame = true;\n for (var i = 0; i < 4; i++) {\n var rect = markers[i].getBoundingClientRect();\n var ii = 2 * i;\n var x = rect.left;\n var y = rect.top;\n srcCoords.push(x, y);\n oldCoordTheSame = oldCoordTheSame && oldSrcCoords && x === oldSrcCoords[ii] && y === oldSrcCoords[ii + 1];\n destCoords.push(markers[i].offsetLeft, markers[i].offsetTop);\n }\n return (oldCoordTheSame && transformer)\n ? transformer\n : (saved.srcCoords = srcCoords,\n saved[transformerName] = inverse\n ? buildTransformer(destCoords, srcCoords)\n : buildTransformer(srcCoords, destCoords));\n}\nexport function isCanvasEl(el) {\n return el.nodeName.toUpperCase() === 'CANVAS';\n}\nvar replaceReg = /([&<>\"'])/g;\nvar replaceMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\nexport function encodeHTML(source) {\n return source == null\n ? ''\n : (source + '').replace(replaceReg, function (str, c) {\n return replaceMap[c];\n });\n}\n","var Param = (function () {\n function Param(target, e) {\n this.target = target;\n this.topTarget = e && e.topTarget;\n }\n return Param;\n}());\nvar Draggable = (function () {\n function Draggable(handler) {\n this.handler = handler;\n handler.on('mousedown', this._dragStart, this);\n handler.on('mousemove', this._drag, this);\n handler.on('mouseup', this._dragEnd, this);\n }\n Draggable.prototype._dragStart = function (e) {\n var draggingTarget = e.target;\n while (draggingTarget && !draggingTarget.draggable) {\n draggingTarget = draggingTarget.parent || draggingTarget.__hostTarget;\n }\n if (draggingTarget) {\n this._draggingTarget = draggingTarget;\n draggingTarget.dragging = true;\n this._x = e.offsetX;\n this._y = e.offsetY;\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragstart', e.event);\n }\n };\n Draggable.prototype._drag = function (e) {\n var draggingTarget = this._draggingTarget;\n if (draggingTarget) {\n var x = e.offsetX;\n var y = e.offsetY;\n var dx = x - this._x;\n var dy = y - this._y;\n this._x = x;\n this._y = y;\n draggingTarget.drift(dx, dy, e);\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'drag', e.event);\n var dropTarget = this.handler.findHover(x, y, draggingTarget).target;\n var lastDropTarget = this._dropTarget;\n this._dropTarget = dropTarget;\n if (draggingTarget !== dropTarget) {\n if (lastDropTarget && dropTarget !== lastDropTarget) {\n this.handler.dispatchToElement(new Param(lastDropTarget, e), 'dragleave', e.event);\n }\n if (dropTarget && dropTarget !== lastDropTarget) {\n this.handler.dispatchToElement(new Param(dropTarget, e), 'dragenter', e.event);\n }\n }\n }\n };\n Draggable.prototype._dragEnd = function (e) {\n var draggingTarget = this._draggingTarget;\n if (draggingTarget) {\n draggingTarget.dragging = false;\n }\n this.handler.dispatchToElement(new Param(draggingTarget, e), 'dragend', e.event);\n if (this._dropTarget) {\n this.handler.dispatchToElement(new Param(this._dropTarget, e), 'drop', e.event);\n }\n this._draggingTarget = null;\n this._dropTarget = null;\n };\n return Draggable;\n}());\nexport default Draggable;\n","import Eventful from './Eventful.js';\nimport env from './env.js';\nimport { isCanvasEl, transformCoordWithViewport } from './dom.js';\nvar MOUSE_EVENT_REG = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;\nvar _calcOut = [];\nvar firefoxNotSupportOffsetXY = env.browser.firefox\n && +env.browser.version.split('.')[0] < 39;\nexport function clientToLocal(el, e, out, calculate) {\n out = out || {};\n if (calculate) {\n calculateZrXY(el, e, out);\n }\n else if (firefoxNotSupportOffsetXY\n && e.layerX != null\n && e.layerX !== e.offsetX) {\n out.zrX = e.layerX;\n out.zrY = e.layerY;\n }\n else if (e.offsetX != null) {\n out.zrX = e.offsetX;\n out.zrY = e.offsetY;\n }\n else {\n calculateZrXY(el, e, out);\n }\n return out;\n}\nfunction calculateZrXY(el, e, out) {\n if (env.domSupported && el.getBoundingClientRect) {\n var ex = e.clientX;\n var ey = e.clientY;\n if (isCanvasEl(el)) {\n var box = el.getBoundingClientRect();\n out.zrX = ex - box.left;\n out.zrY = ey - box.top;\n return;\n }\n else {\n if (transformCoordWithViewport(_calcOut, el, ex, ey)) {\n out.zrX = _calcOut[0];\n out.zrY = _calcOut[1];\n return;\n }\n }\n }\n out.zrX = out.zrY = 0;\n}\nexport function getNativeEvent(e) {\n return e\n || window.event;\n}\nexport function normalizeEvent(el, e, calculate) {\n e = getNativeEvent(e);\n if (e.zrX != null) {\n return e;\n }\n var eventType = e.type;\n var isTouch = eventType && eventType.indexOf('touch') >= 0;\n if (!isTouch) {\n clientToLocal(el, e, e, calculate);\n var wheelDelta = getWheelDeltaMayPolyfill(e);\n e.zrDelta = wheelDelta ? wheelDelta / 120 : -(e.detail || 0) / 3;\n }\n else {\n var touch = eventType !== 'touchend'\n ? e.targetTouches[0]\n : e.changedTouches[0];\n touch && clientToLocal(el, touch, e, calculate);\n }\n var button = e.button;\n if (e.which == null && button !== undefined && MOUSE_EVENT_REG.test(e.type)) {\n e.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));\n }\n return e;\n}\nfunction getWheelDeltaMayPolyfill(e) {\n var rawWheelDelta = e.wheelDelta;\n if (rawWheelDelta) {\n return rawWheelDelta;\n }\n var deltaX = e.deltaX;\n var deltaY = e.deltaY;\n if (deltaX == null || deltaY == null) {\n return rawWheelDelta;\n }\n var delta = deltaY !== 0 ? Math.abs(deltaY) : Math.abs(deltaX);\n var sign = deltaY > 0 ? -1\n : deltaY < 0 ? 1\n : deltaX > 0 ? -1\n : 1;\n return 3 * delta * sign;\n}\nexport function addEventListener(el, name, handler, opt) {\n el.addEventListener(name, handler, opt);\n}\nexport function removeEventListener(el, name, handler, opt) {\n el.removeEventListener(name, handler, opt);\n}\nexport var stop = function (e) {\n e.preventDefault();\n e.stopPropagation();\n e.cancelBubble = true;\n};\nexport function isMiddleOrRightButtonOnMouseUpDown(e) {\n return e.which === 2 || e.which === 3;\n}\nexport { Eventful as Dispatcher };\n","import * as eventUtil from './event.js';\nvar GestureMgr = (function () {\n function GestureMgr() {\n this._track = [];\n }\n GestureMgr.prototype.recognize = function (event, target, root) {\n this._doTrack(event, target, root);\n return this._recognize(event);\n };\n GestureMgr.prototype.clear = function () {\n this._track.length = 0;\n return this;\n };\n GestureMgr.prototype._doTrack = function (event, target, root) {\n var touches = event.touches;\n if (!touches) {\n return;\n }\n var trackItem = {\n points: [],\n touches: [],\n target: target,\n event: event\n };\n for (var i = 0, len = touches.length; i < len; i++) {\n var touch = touches[i];\n var pos = eventUtil.clientToLocal(root, touch, {});\n trackItem.points.push([pos.zrX, pos.zrY]);\n trackItem.touches.push(touch);\n }\n this._track.push(trackItem);\n };\n GestureMgr.prototype._recognize = function (event) {\n for (var eventName in recognizers) {\n if (recognizers.hasOwnProperty(eventName)) {\n var gestureInfo = recognizers[eventName](this._track, event);\n if (gestureInfo) {\n return gestureInfo;\n }\n }\n }\n };\n return GestureMgr;\n}());\nexport { GestureMgr };\nfunction dist(pointPair) {\n var dx = pointPair[1][0] - pointPair[0][0];\n var dy = pointPair[1][1] - pointPair[0][1];\n return Math.sqrt(dx * dx + dy * dy);\n}\nfunction center(pointPair) {\n return [\n (pointPair[0][0] + pointPair[1][0]) / 2,\n (pointPair[0][1] + pointPair[1][1]) / 2\n ];\n}\nvar recognizers = {\n pinch: function (tracks, event) {\n var trackLen = tracks.length;\n if (!trackLen) {\n return;\n }\n var pinchEnd = (tracks[trackLen - 1] || {}).points;\n var pinchPre = (tracks[trackLen - 2] || {}).points || pinchEnd;\n if (pinchPre\n && pinchPre.length > 1\n && pinchEnd\n && pinchEnd.length > 1) {\n var pinchScale = dist(pinchEnd) / dist(pinchPre);\n !isFinite(pinchScale) && (pinchScale = 1);\n event.pinchScale = pinchScale;\n var pinchCenter = center(pinchEnd);\n event.pinchX = pinchCenter[0];\n event.pinchY = pinchCenter[1];\n return {\n type: 'pinch',\n target: tracks[0].target,\n event: event\n };\n }\n }\n};\n","import { __extends } from \"tslib\";\nimport * as util from './core/util.js';\nimport * as vec2 from './core/vector.js';\nimport Draggable from './mixin/Draggable.js';\nimport Eventful from './core/Eventful.js';\nimport * as eventTool from './core/event.js';\nimport { GestureMgr } from './core/GestureMgr.js';\nimport BoundingRect from './core/BoundingRect.js';\nvar SILENT = 'silent';\nfunction makeEventPacket(eveType, targetInfo, event) {\n return {\n type: eveType,\n event: event,\n target: targetInfo.target,\n topTarget: targetInfo.topTarget,\n cancelBubble: false,\n offsetX: event.zrX,\n offsetY: event.zrY,\n gestureEvent: event.gestureEvent,\n pinchX: event.pinchX,\n pinchY: event.pinchY,\n pinchScale: event.pinchScale,\n wheelDelta: event.zrDelta,\n zrByTouch: event.zrByTouch,\n which: event.which,\n stop: stopEvent\n };\n}\nfunction stopEvent() {\n eventTool.stop(this.event);\n}\nvar EmptyProxy = (function (_super) {\n __extends(EmptyProxy, _super);\n function EmptyProxy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handler = null;\n return _this;\n }\n EmptyProxy.prototype.dispose = function () { };\n EmptyProxy.prototype.setCursor = function () { };\n return EmptyProxy;\n}(Eventful));\nvar HoveredResult = (function () {\n function HoveredResult(x, y) {\n this.x = x;\n this.y = y;\n }\n return HoveredResult;\n}());\nvar handlerNames = [\n 'click', 'dblclick', 'mousewheel', 'mouseout',\n 'mouseup', 'mousedown', 'mousemove', 'contextmenu'\n];\nvar tmpRect = new BoundingRect(0, 0, 0, 0);\nvar Handler = (function (_super) {\n __extends(Handler, _super);\n function Handler(storage, painter, proxy, painterRoot, pointerSize) {\n var _this = _super.call(this) || this;\n _this._hovered = new HoveredResult(0, 0);\n _this.storage = storage;\n _this.painter = painter;\n _this.painterRoot = painterRoot;\n _this._pointerSize = pointerSize;\n proxy = proxy || new EmptyProxy();\n _this.proxy = null;\n _this.setHandlerProxy(proxy);\n _this._draggingMgr = new Draggable(_this);\n return _this;\n }\n Handler.prototype.setHandlerProxy = function (proxy) {\n if (this.proxy) {\n this.proxy.dispose();\n }\n if (proxy) {\n util.each(handlerNames, function (name) {\n proxy.on && proxy.on(name, this[name], this);\n }, this);\n proxy.handler = this;\n }\n this.proxy = proxy;\n };\n Handler.prototype.mousemove = function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var lastHovered = this._hovered;\n var lastHoveredTarget = lastHovered.target;\n if (lastHoveredTarget && !lastHoveredTarget.__zr) {\n lastHovered = this.findHover(lastHovered.x, lastHovered.y);\n lastHoveredTarget = lastHovered.target;\n }\n var hovered = this._hovered = isOutside ? new HoveredResult(x, y) : this.findHover(x, y);\n var hoveredTarget = hovered.target;\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(hoveredTarget ? hoveredTarget.cursor : 'default');\n if (lastHoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(lastHovered, 'mouseout', event);\n }\n this.dispatchToElement(hovered, 'mousemove', event);\n if (hoveredTarget && hoveredTarget !== lastHoveredTarget) {\n this.dispatchToElement(hovered, 'mouseover', event);\n }\n };\n Handler.prototype.mouseout = function (event) {\n var eventControl = event.zrEventControl;\n if (eventControl !== 'only_globalout') {\n this.dispatchToElement(this._hovered, 'mouseout', event);\n }\n if (eventControl !== 'no_globalout') {\n this.trigger('globalout', { type: 'globalout', event: event });\n }\n };\n Handler.prototype.resize = function () {\n this._hovered = new HoveredResult(0, 0);\n };\n Handler.prototype.dispatch = function (eventName, eventArgs) {\n var handler = this[eventName];\n handler && handler.call(this, eventArgs);\n };\n Handler.prototype.dispose = function () {\n this.proxy.dispose();\n this.storage = null;\n this.proxy = null;\n this.painter = null;\n };\n Handler.prototype.setCursorStyle = function (cursorStyle) {\n var proxy = this.proxy;\n proxy.setCursor && proxy.setCursor(cursorStyle);\n };\n Handler.prototype.dispatchToElement = function (targetInfo, eventName, event) {\n targetInfo = targetInfo || {};\n var el = targetInfo.target;\n if (el && el.silent) {\n return;\n }\n var eventKey = ('on' + eventName);\n var eventPacket = makeEventPacket(eventName, targetInfo, event);\n while (el) {\n el[eventKey]\n && (eventPacket.cancelBubble = !!el[eventKey].call(el, eventPacket));\n el.trigger(eventName, eventPacket);\n el = el.__hostTarget ? el.__hostTarget : el.parent;\n if (eventPacket.cancelBubble) {\n break;\n }\n }\n if (!eventPacket.cancelBubble) {\n this.trigger(eventName, eventPacket);\n if (this.painter && this.painter.eachOtherLayer) {\n this.painter.eachOtherLayer(function (layer) {\n if (typeof (layer[eventKey]) === 'function') {\n layer[eventKey].call(layer, eventPacket);\n }\n if (layer.trigger) {\n layer.trigger(eventName, eventPacket);\n }\n });\n }\n }\n };\n Handler.prototype.findHover = function (x, y, exclude) {\n var list = this.storage.getDisplayList();\n var out = new HoveredResult(x, y);\n setHoverTarget(list, out, x, y, exclude);\n if (this._pointerSize && !out.target) {\n var candidates = [];\n var pointerSize = this._pointerSize;\n var targetSizeHalf = pointerSize / 2;\n var pointerRect = new BoundingRect(x - targetSizeHalf, y - targetSizeHalf, pointerSize, pointerSize);\n for (var i = list.length - 1; i >= 0; i--) {\n var el = list[i];\n if (el !== exclude\n && !el.ignore\n && !el.ignoreCoarsePointer\n && (!el.parent || !el.parent.ignoreCoarsePointer)) {\n tmpRect.copy(el.getBoundingRect());\n if (el.transform) {\n tmpRect.applyTransform(el.transform);\n }\n if (tmpRect.intersect(pointerRect)) {\n candidates.push(el);\n }\n }\n }\n if (candidates.length) {\n var rStep = 4;\n var thetaStep = Math.PI / 12;\n var PI2 = Math.PI * 2;\n for (var r = 0; r < targetSizeHalf; r += rStep) {\n for (var theta = 0; theta < PI2; theta += thetaStep) {\n var x1 = x + r * Math.cos(theta);\n var y1 = y + r * Math.sin(theta);\n setHoverTarget(candidates, out, x1, y1, exclude);\n if (out.target) {\n return out;\n }\n }\n }\n }\n }\n return out;\n };\n Handler.prototype.processGesture = function (event, stage) {\n if (!this._gestureMgr) {\n this._gestureMgr = new GestureMgr();\n }\n var gestureMgr = this._gestureMgr;\n stage === 'start' && gestureMgr.clear();\n var gestureInfo = gestureMgr.recognize(event, this.findHover(event.zrX, event.zrY, null).target, this.proxy.dom);\n stage === 'end' && gestureMgr.clear();\n if (gestureInfo) {\n var type = gestureInfo.type;\n event.gestureEvent = type;\n var res = new HoveredResult();\n res.target = gestureInfo.target;\n this.dispatchToElement(res, type, gestureInfo.event);\n }\n };\n return Handler;\n}(Eventful));\nutil.each(['click', 'mousedown', 'mouseup', 'mousewheel', 'dblclick', 'contextmenu'], function (name) {\n Handler.prototype[name] = function (event) {\n var x = event.zrX;\n var y = event.zrY;\n var isOutside = isOutsideBoundary(this, x, y);\n var hovered;\n var hoveredTarget;\n if (name !== 'mouseup' || !isOutside) {\n hovered = this.findHover(x, y);\n hoveredTarget = hovered.target;\n }\n if (name === 'mousedown') {\n this._downEl = hoveredTarget;\n this._downPoint = [event.zrX, event.zrY];\n this._upEl = hoveredTarget;\n }\n else if (name === 'mouseup') {\n this._upEl = hoveredTarget;\n }\n else if (name === 'click') {\n if (this._downEl !== this._upEl\n || !this._downPoint\n || vec2.dist(this._downPoint, [event.zrX, event.zrY]) > 4) {\n return;\n }\n this._downPoint = null;\n }\n this.dispatchToElement(hovered, name, event);\n };\n});\nfunction isHover(displayable, x, y) {\n if (displayable[displayable.rectHover ? 'rectContain' : 'contain'](x, y)) {\n var el = displayable;\n var isSilent = void 0;\n var ignoreClip = false;\n while (el) {\n if (el.ignoreClip) {\n ignoreClip = true;\n }\n if (!ignoreClip) {\n var clipPath = el.getClipPath();\n if (clipPath && !clipPath.contain(x, y)) {\n return false;\n }\n }\n if (el.silent) {\n isSilent = true;\n }\n var hostEl = el.__hostTarget;\n el = hostEl ? (el.ignoreHostSilent ? null : hostEl) : el.parent;\n }\n return isSilent ? SILENT : true;\n }\n return false;\n}\nfunction setHoverTarget(list, out, x, y, exclude) {\n for (var i = list.length - 1; i >= 0; i--) {\n var el = list[i];\n var hoverCheckResult = void 0;\n if (el !== exclude\n && !el.ignore\n && (hoverCheckResult = isHover(el, x, y))) {\n !out.topTarget && (out.topTarget = el);\n if (hoverCheckResult !== SILENT) {\n out.target = el;\n break;\n }\n }\n }\n}\nfunction isOutsideBoundary(handlerInstance, x, y) {\n var painter = handlerInstance.painter;\n return x < 0 || x > painter.getWidth() || y < 0 || y > painter.getHeight();\n}\nexport default Handler;\n","var DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nfunction minRunLength(n) {\n var r = 0;\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n return n + r;\n}\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n if (runHi === hi) {\n return 1;\n }\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n reverseRun(array, lo, runHi);\n }\n else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n return runHi - lo;\n}\nfunction reverseRun(array, lo, hi) {\n hi--;\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n while (left < right) {\n mid = left + right >>> 1;\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n }\n else {\n left = mid + 1;\n }\n }\n var n = start - left;\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n case 2:\n array[left + 2] = array[left + 1];\n case 1:\n array[left + 1] = array[left];\n break;\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n }\n array[left] = pivot;\n }\n}\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n else {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n }\n else {\n offset = m;\n }\n }\n return offset;\n}\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n else {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n }\n else {\n lastOffset = m + 1;\n }\n }\n return offset;\n}\nfunction TimSort(array, compare) {\n var minGallop = DEFAULT_MIN_GALLOPING;\n var runStart;\n var runLength;\n var stackSize = 0;\n var tmp = [];\n runStart = [];\n runLength = [];\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n if ((n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1])\n || (n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1])) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n }\n else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n mergeAt(n);\n }\n }\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n mergeAt(n);\n }\n }\n function mergeAt(i) {\n var start1 = runStart[i];\n var length1 = runLength[i];\n var start2 = runStart[i + 1];\n var length2 = runLength[i + 1];\n runLength[i] = length1 + length2;\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n if (length1 === 0) {\n return;\n }\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n if (length2 === 0) {\n return;\n }\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n }\n else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n return;\n }\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n return;\n }\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n if (--length2 === 0) {\n exit = true;\n break;\n }\n }\n else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n exit = true;\n break;\n }\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n array[dest++] = tmp[cursor1++];\n if (--length1 === 1) {\n exit = true;\n break;\n }\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n _minGallop += 2;\n }\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n }\n else if (length1 === 0) {\n throw new Error();\n }\n else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n return;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n return;\n }\n var _minGallop = minGallop;\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n if (--length1 === 0) {\n exit = true;\n break;\n }\n }\n else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n array[dest--] = tmp[cursor2--];\n if (--length2 === 1) {\n exit = true;\n break;\n }\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n exit = true;\n break;\n }\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n _minGallop += 2;\n }\n minGallop = _minGallop;\n if (minGallop < 1) {\n minGallop = 1;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n }\n else if (length2 === 0) {\n throw new Error();\n }\n else {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n return {\n mergeRuns: mergeRuns,\n forceMergeRuns: forceMergeRuns,\n pushRun: pushRun\n };\n}\nexport default function sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n if (!hi) {\n hi = array.length;\n }\n var remaining = hi - lo;\n if (remaining < 2) {\n return;\n }\n var runLength = 0;\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n var ts = TimSort(array, compare);\n var minRun = minRunLength(remaining);\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n if (runLength < minRun) {\n var force = remaining;\n if (force > minRun) {\n force = minRun;\n }\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n ts.forceMergeRuns();\n}\n","import * as util from './core/util.js';\nimport timsort from './core/timsort.js';\nimport { REDRAW_BIT } from './graphic/constants.js';\nvar invalidZErrorLogged = false;\nfunction logInvalidZError() {\n if (invalidZErrorLogged) {\n return;\n }\n invalidZErrorLogged = true;\n console.warn('z / z2 / zlevel of displayable is invalid, which may cause unexpected errors');\n}\nfunction shapeCompareFunc(a, b) {\n if (a.zlevel === b.zlevel) {\n if (a.z === b.z) {\n return a.z2 - b.z2;\n }\n return a.z - b.z;\n }\n return a.zlevel - b.zlevel;\n}\nvar Storage = (function () {\n function Storage() {\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n this.displayableSortFunc = shapeCompareFunc;\n }\n Storage.prototype.traverse = function (cb, context) {\n for (var i = 0; i < this._roots.length; i++) {\n this._roots[i].traverse(cb, context);\n }\n };\n Storage.prototype.getDisplayList = function (update, includeIgnore) {\n includeIgnore = includeIgnore || false;\n var displayList = this._displayList;\n if (update || !displayList.length) {\n this.updateDisplayList(includeIgnore);\n }\n return displayList;\n };\n Storage.prototype.updateDisplayList = function (includeIgnore) {\n this._displayListLen = 0;\n var roots = this._roots;\n var displayList = this._displayList;\n for (var i = 0, len = roots.length; i < len; i++) {\n this._updateAndAddDisplayable(roots[i], null, includeIgnore);\n }\n displayList.length = this._displayListLen;\n timsort(displayList, shapeCompareFunc);\n };\n Storage.prototype._updateAndAddDisplayable = function (el, parentClipPaths, includeIgnore) {\n if (el.ignore && !includeIgnore) {\n return;\n }\n el.beforeUpdate();\n el.update();\n el.afterUpdate();\n var userSetClipPath = el.getClipPath();\n var parentHasClipPaths = parentClipPaths && parentClipPaths.length;\n var clipPathIdx = 0;\n var thisClipPaths = el.__clipPaths;\n if (!el.ignoreClip\n && (parentHasClipPaths || userSetClipPath)) {\n if (!thisClipPaths) {\n thisClipPaths = el.__clipPaths = [];\n }\n if (parentHasClipPaths) {\n for (var idx = 0; idx < parentClipPaths.length; idx++) {\n thisClipPaths[clipPathIdx++] = parentClipPaths[idx];\n }\n }\n var currentClipPath = userSetClipPath;\n var parentClipPath = el;\n while (currentClipPath) {\n currentClipPath.parent = parentClipPath;\n currentClipPath.updateTransform();\n thisClipPaths[clipPathIdx++] = currentClipPath;\n parentClipPath = currentClipPath;\n currentClipPath = currentClipPath.getClipPath();\n }\n }\n if (thisClipPaths) {\n thisClipPaths.length = clipPathIdx;\n }\n if (el.childrenRef) {\n var children = el.childrenRef();\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n if (el.__dirty) {\n child.__dirty |= REDRAW_BIT;\n }\n this._updateAndAddDisplayable(child, thisClipPaths, includeIgnore);\n }\n el.__dirty = 0;\n }\n else {\n var disp = el;\n if (isNaN(disp.z)) {\n logInvalidZError();\n disp.z = 0;\n }\n if (isNaN(disp.z2)) {\n logInvalidZError();\n disp.z2 = 0;\n }\n if (isNaN(disp.zlevel)) {\n logInvalidZError();\n disp.zlevel = 0;\n }\n this._displayList[this._displayListLen++] = disp;\n }\n var decalEl = el.getDecalElement && el.getDecalElement();\n if (decalEl) {\n this._updateAndAddDisplayable(decalEl, thisClipPaths, includeIgnore);\n }\n var textGuide = el.getTextGuideLine();\n if (textGuide) {\n this._updateAndAddDisplayable(textGuide, thisClipPaths, includeIgnore);\n }\n var textEl = el.getTextContent();\n if (textEl) {\n this._updateAndAddDisplayable(textEl, thisClipPaths, includeIgnore);\n }\n };\n Storage.prototype.addRoot = function (el) {\n if (el.__zr && el.__zr.storage === this) {\n return;\n }\n this._roots.push(el);\n };\n Storage.prototype.delRoot = function (el) {\n if (el instanceof Array) {\n for (var i = 0, l = el.length; i < l; i++) {\n this.delRoot(el[i]);\n }\n return;\n }\n var idx = util.indexOf(this._roots, el);\n if (idx >= 0) {\n this._roots.splice(idx, 1);\n }\n };\n Storage.prototype.delAllRoots = function () {\n this._roots = [];\n this._displayList = [];\n this._displayListLen = 0;\n return;\n };\n Storage.prototype.getRoots = function () {\n return this._roots;\n };\n Storage.prototype.dispose = function () {\n this._displayList = null;\n this._roots = null;\n };\n return Storage;\n}());\nexport default Storage;\n","import env from '../core/env.js';\nvar requestAnimationFrame;\nrequestAnimationFrame = (env.hasGlobalWindow\n && ((window.requestAnimationFrame && window.requestAnimationFrame.bind(window))\n || (window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window))\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame)) || function (func) {\n return setTimeout(func, 16);\n};\nexport default requestAnimationFrame;\n","import { __extends } from \"tslib\";\nimport Eventful from '../core/Eventful.js';\nimport requestAnimationFrame from './requestAnimationFrame.js';\nimport Animator from './Animator.js';\nexport function getTime() {\n return new Date().getTime();\n}\nvar Animation = (function (_super) {\n __extends(Animation, _super);\n function Animation(opts) {\n var _this = _super.call(this) || this;\n _this._running = false;\n _this._time = 0;\n _this._pausedTime = 0;\n _this._pauseStart = 0;\n _this._paused = false;\n opts = opts || {};\n _this.stage = opts.stage || {};\n return _this;\n }\n Animation.prototype.addClip = function (clip) {\n if (clip.animation) {\n this.removeClip(clip);\n }\n if (!this._head) {\n this._head = this._tail = clip;\n }\n else {\n this._tail.next = clip;\n clip.prev = this._tail;\n clip.next = null;\n this._tail = clip;\n }\n clip.animation = this;\n };\n Animation.prototype.addAnimator = function (animator) {\n animator.animation = this;\n var clip = animator.getClip();\n if (clip) {\n this.addClip(clip);\n }\n };\n Animation.prototype.removeClip = function (clip) {\n if (!clip.animation) {\n return;\n }\n var prev = clip.prev;\n var next = clip.next;\n if (prev) {\n prev.next = next;\n }\n else {\n this._head = next;\n }\n if (next) {\n next.prev = prev;\n }\n else {\n this._tail = prev;\n }\n clip.next = clip.prev = clip.animation = null;\n };\n Animation.prototype.removeAnimator = function (animator) {\n var clip = animator.getClip();\n if (clip) {\n this.removeClip(clip);\n }\n animator.animation = null;\n };\n Animation.prototype.update = function (notTriggerFrameAndStageUpdate) {\n var time = getTime() - this._pausedTime;\n var delta = time - this._time;\n var clip = this._head;\n while (clip) {\n var nextClip = clip.next;\n var finished = clip.step(time, delta);\n if (finished) {\n clip.ondestroy();\n this.removeClip(clip);\n clip = nextClip;\n }\n else {\n clip = nextClip;\n }\n }\n this._time = time;\n if (!notTriggerFrameAndStageUpdate) {\n this.trigger('frame', delta);\n this.stage.update && this.stage.update();\n }\n };\n Animation.prototype._startLoop = function () {\n var self = this;\n this._running = true;\n function step() {\n if (self._running) {\n requestAnimationFrame(step);\n !self._paused && self.update();\n }\n }\n requestAnimationFrame(step);\n };\n Animation.prototype.start = function () {\n if (this._running) {\n return;\n }\n this._time = getTime();\n this._pausedTime = 0;\n this._startLoop();\n };\n Animation.prototype.stop = function () {\n this._running = false;\n };\n Animation.prototype.pause = function () {\n if (!this._paused) {\n this._pauseStart = getTime();\n this._paused = true;\n }\n };\n Animation.prototype.resume = function () {\n if (this._paused) {\n this._pausedTime += getTime() - this._pauseStart;\n this._paused = false;\n }\n };\n Animation.prototype.clear = function () {\n var clip = this._head;\n while (clip) {\n var nextClip = clip.next;\n clip.prev = clip.next = clip.animation = null;\n clip = nextClip;\n }\n this._head = this._tail = null;\n };\n Animation.prototype.isFinished = function () {\n return this._head == null;\n };\n Animation.prototype.animate = function (target, options) {\n options = options || {};\n this.start();\n var animator = new Animator(target, options.loop);\n this.addAnimator(animator);\n return animator;\n };\n return Animation;\n}(Eventful));\nexport default Animation;\n","import { __extends } from \"tslib\";\nimport { addEventListener, removeEventListener, normalizeEvent, getNativeEvent } from '../core/event.js';\nimport * as zrUtil from '../core/util.js';\nimport Eventful from '../core/Eventful.js';\nimport env from '../core/env.js';\nvar TOUCH_CLICK_DELAY = 300;\nvar globalEventSupported = env.domSupported;\nvar localNativeListenerNames = (function () {\n var mouseHandlerNames = [\n 'click', 'dblclick', 'mousewheel', 'wheel', 'mouseout',\n 'mouseup', 'mousedown', 'mousemove', 'contextmenu'\n ];\n var touchHandlerNames = [\n 'touchstart', 'touchend', 'touchmove'\n ];\n var pointerEventNameMap = {\n pointerdown: 1, pointerup: 1, pointermove: 1, pointerout: 1\n };\n var pointerHandlerNames = zrUtil.map(mouseHandlerNames, function (name) {\n var nm = name.replace('mouse', 'pointer');\n return pointerEventNameMap.hasOwnProperty(nm) ? nm : name;\n });\n return {\n mouse: mouseHandlerNames,\n touch: touchHandlerNames,\n pointer: pointerHandlerNames\n };\n})();\nvar globalNativeListenerNames = {\n mouse: ['mousemove', 'mouseup'],\n pointer: ['pointermove', 'pointerup']\n};\nvar wheelEventSupported = false;\nfunction isPointerFromTouch(event) {\n var pointerType = event.pointerType;\n return pointerType === 'pen' || pointerType === 'touch';\n}\nfunction setTouchTimer(scope) {\n scope.touching = true;\n if (scope.touchTimer != null) {\n clearTimeout(scope.touchTimer);\n scope.touchTimer = null;\n }\n scope.touchTimer = setTimeout(function () {\n scope.touching = false;\n scope.touchTimer = null;\n }, 700);\n}\nfunction markTouch(event) {\n event && (event.zrByTouch = true);\n}\nfunction normalizeGlobalEvent(instance, event) {\n return normalizeEvent(instance.dom, new FakeGlobalEvent(instance, event), true);\n}\nfunction isLocalEl(instance, el) {\n var elTmp = el;\n var isLocal = false;\n while (elTmp && elTmp.nodeType !== 9\n && !(isLocal = elTmp.domBelongToZr\n || (elTmp !== el && elTmp === instance.painterRoot))) {\n elTmp = elTmp.parentNode;\n }\n return isLocal;\n}\nvar FakeGlobalEvent = (function () {\n function FakeGlobalEvent(instance, event) {\n this.stopPropagation = zrUtil.noop;\n this.stopImmediatePropagation = zrUtil.noop;\n this.preventDefault = zrUtil.noop;\n this.type = event.type;\n this.target = this.currentTarget = instance.dom;\n this.pointerType = event.pointerType;\n this.clientX = event.clientX;\n this.clientY = event.clientY;\n }\n return FakeGlobalEvent;\n}());\nvar localDOMHandlers = {\n mousedown: function (event) {\n event = normalizeEvent(this.dom, event);\n this.__mayPointerCapture = [event.zrX, event.zrY];\n this.trigger('mousedown', event);\n },\n mousemove: function (event) {\n event = normalizeEvent(this.dom, event);\n var downPoint = this.__mayPointerCapture;\n if (downPoint && (event.zrX !== downPoint[0] || event.zrY !== downPoint[1])) {\n this.__togglePointerCapture(true);\n }\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n event = normalizeEvent(this.dom, event);\n this.__togglePointerCapture(false);\n this.trigger('mouseup', event);\n },\n mouseout: function (event) {\n event = normalizeEvent(this.dom, event);\n var element = event.toElement || event.relatedTarget;\n if (!isLocalEl(this, element)) {\n if (this.__pointerCapturing) {\n event.zrEventControl = 'no_globalout';\n }\n this.trigger('mouseout', event);\n }\n },\n wheel: function (event) {\n wheelEventSupported = true;\n event = normalizeEvent(this.dom, event);\n this.trigger('mousewheel', event);\n },\n mousewheel: function (event) {\n if (wheelEventSupported) {\n return;\n }\n event = normalizeEvent(this.dom, event);\n this.trigger('mousewheel', event);\n },\n touchstart: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.__lastTouchMoment = new Date();\n this.handler.processGesture(event, 'start');\n localDOMHandlers.mousemove.call(this, event);\n localDOMHandlers.mousedown.call(this, event);\n },\n touchmove: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'change');\n localDOMHandlers.mousemove.call(this, event);\n },\n touchend: function (event) {\n event = normalizeEvent(this.dom, event);\n markTouch(event);\n this.handler.processGesture(event, 'end');\n localDOMHandlers.mouseup.call(this, event);\n if (+new Date() - (+this.__lastTouchMoment) < TOUCH_CLICK_DELAY) {\n localDOMHandlers.click.call(this, event);\n }\n },\n pointerdown: function (event) {\n localDOMHandlers.mousedown.call(this, event);\n },\n pointermove: function (event) {\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n localDOMHandlers.mouseup.call(this, event);\n },\n pointerout: function (event) {\n if (!isPointerFromTouch(event)) {\n localDOMHandlers.mouseout.call(this, event);\n }\n }\n};\nzrUtil.each(['click', 'dblclick', 'contextmenu'], function (name) {\n localDOMHandlers[name] = function (event) {\n event = normalizeEvent(this.dom, event);\n this.trigger(name, event);\n };\n});\nvar globalDOMHandlers = {\n pointermove: function (event) {\n if (!isPointerFromTouch(event)) {\n globalDOMHandlers.mousemove.call(this, event);\n }\n },\n pointerup: function (event) {\n globalDOMHandlers.mouseup.call(this, event);\n },\n mousemove: function (event) {\n this.trigger('mousemove', event);\n },\n mouseup: function (event) {\n var pointerCaptureReleasing = this.__pointerCapturing;\n this.__togglePointerCapture(false);\n this.trigger('mouseup', event);\n if (pointerCaptureReleasing) {\n event.zrEventControl = 'only_globalout';\n this.trigger('mouseout', event);\n }\n }\n};\nfunction mountLocalDOMEventListeners(instance, scope) {\n var domHandlers = scope.domHandlers;\n if (env.pointerEventsSupported) {\n zrUtil.each(localNativeListenerNames.pointer, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n domHandlers[nativeEventName].call(instance, event);\n });\n });\n }\n else {\n if (env.touchEventsSupported) {\n zrUtil.each(localNativeListenerNames.touch, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n domHandlers[nativeEventName].call(instance, event);\n setTouchTimer(scope);\n });\n });\n }\n zrUtil.each(localNativeListenerNames.mouse, function (nativeEventName) {\n mountSingleDOMEventListener(scope, nativeEventName, function (event) {\n event = getNativeEvent(event);\n if (!scope.touching) {\n domHandlers[nativeEventName].call(instance, event);\n }\n });\n });\n }\n}\nfunction mountGlobalDOMEventListeners(instance, scope) {\n if (env.pointerEventsSupported) {\n zrUtil.each(globalNativeListenerNames.pointer, mount);\n }\n else if (!env.touchEventsSupported) {\n zrUtil.each(globalNativeListenerNames.mouse, mount);\n }\n function mount(nativeEventName) {\n function nativeEventListener(event) {\n event = getNativeEvent(event);\n if (!isLocalEl(instance, event.target)) {\n event = normalizeGlobalEvent(instance, event);\n scope.domHandlers[nativeEventName].call(instance, event);\n }\n }\n mountSingleDOMEventListener(scope, nativeEventName, nativeEventListener, { capture: true });\n }\n}\nfunction mountSingleDOMEventListener(scope, nativeEventName, listener, opt) {\n scope.mounted[nativeEventName] = listener;\n scope.listenerOpts[nativeEventName] = opt;\n addEventListener(scope.domTarget, nativeEventName, listener, opt);\n}\nfunction unmountDOMEventListeners(scope) {\n var mounted = scope.mounted;\n for (var nativeEventName in mounted) {\n if (mounted.hasOwnProperty(nativeEventName)) {\n removeEventListener(scope.domTarget, nativeEventName, mounted[nativeEventName], scope.listenerOpts[nativeEventName]);\n }\n }\n scope.mounted = {};\n}\nvar DOMHandlerScope = (function () {\n function DOMHandlerScope(domTarget, domHandlers) {\n this.mounted = {};\n this.listenerOpts = {};\n this.touching = false;\n this.domTarget = domTarget;\n this.domHandlers = domHandlers;\n }\n return DOMHandlerScope;\n}());\nvar HandlerDomProxy = (function (_super) {\n __extends(HandlerDomProxy, _super);\n function HandlerDomProxy(dom, painterRoot) {\n var _this = _super.call(this) || this;\n _this.__pointerCapturing = false;\n _this.dom = dom;\n _this.painterRoot = painterRoot;\n _this._localHandlerScope = new DOMHandlerScope(dom, localDOMHandlers);\n if (globalEventSupported) {\n _this._globalHandlerScope = new DOMHandlerScope(document, globalDOMHandlers);\n }\n mountLocalDOMEventListeners(_this, _this._localHandlerScope);\n return _this;\n }\n HandlerDomProxy.prototype.dispose = function () {\n unmountDOMEventListeners(this._localHandlerScope);\n if (globalEventSupported) {\n unmountDOMEventListeners(this._globalHandlerScope);\n }\n };\n HandlerDomProxy.prototype.setCursor = function (cursorStyle) {\n this.dom.style && (this.dom.style.cursor = cursorStyle || 'default');\n };\n HandlerDomProxy.prototype.__togglePointerCapture = function (isPointerCapturing) {\n this.__mayPointerCapture = null;\n if (globalEventSupported\n && ((+this.__pointerCapturing) ^ (+isPointerCapturing))) {\n this.__pointerCapturing = isPointerCapturing;\n var globalHandlerScope = this._globalHandlerScope;\n isPointerCapturing\n ? mountGlobalDOMEventListeners(this, globalHandlerScope)\n : unmountDOMEventListeners(globalHandlerScope);\n }\n };\n return HandlerDomProxy;\n}(Eventful));\nexport default HandlerDomProxy;\n","/*!\n* ZRender, a high performance 2d drawing library.\n*\n* Copyright (c) 2013, Baidu Inc.\n* All rights reserved.\n*\n* LICENSE\n* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt\n*/\nimport env from './core/env.js';\nimport * as zrUtil from './core/util.js';\nimport Handler from './Handler.js';\nimport Storage from './Storage.js';\nimport Animation, { getTime } from './animation/Animation.js';\nimport HandlerProxy from './dom/HandlerProxy.js';\nimport { lum } from './tool/color.js';\nimport { DARK_MODE_THRESHOLD } from './config.js';\nimport Group from './graphic/Group.js';\nvar painterCtors = {};\nvar instances = {};\nfunction delInstance(id) {\n delete instances[id];\n}\nfunction isDarkMode(backgroundColor) {\n if (!backgroundColor) {\n return false;\n }\n if (typeof backgroundColor === 'string') {\n return lum(backgroundColor, 1) < DARK_MODE_THRESHOLD;\n }\n else if (backgroundColor.colorStops) {\n var colorStops = backgroundColor.colorStops;\n var totalLum = 0;\n var len = colorStops.length;\n for (var i = 0; i < len; i++) {\n totalLum += lum(colorStops[i].color, 1);\n }\n totalLum /= len;\n return totalLum < DARK_MODE_THRESHOLD;\n }\n return false;\n}\nvar ZRender = (function () {\n function ZRender(id, dom, opts) {\n var _this = this;\n this._sleepAfterStill = 10;\n this._stillFrameAccum = 0;\n this._needsRefresh = true;\n this._needsRefreshHover = true;\n this._darkMode = false;\n opts = opts || {};\n this.dom = dom;\n this.id = id;\n var storage = new Storage();\n var rendererType = opts.renderer || 'canvas';\n if (!painterCtors[rendererType]) {\n rendererType = zrUtil.keys(painterCtors)[0];\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!painterCtors[rendererType]) {\n throw new Error(\"Renderer '\" + rendererType + \"' is not imported. Please import it first.\");\n }\n }\n opts.useDirtyRect = opts.useDirtyRect == null\n ? false\n : opts.useDirtyRect;\n var painter = new painterCtors[rendererType](dom, storage, opts, id);\n var ssrMode = opts.ssr || painter.ssrOnly;\n this.storage = storage;\n this.painter = painter;\n var handlerProxy = (!env.node && !env.worker && !ssrMode)\n ? new HandlerProxy(painter.getViewportRoot(), painter.root)\n : null;\n var useCoarsePointer = opts.useCoarsePointer;\n var usePointerSize = (useCoarsePointer == null || useCoarsePointer === 'auto')\n ? env.touchEventsSupported\n : !!useCoarsePointer;\n var defaultPointerSize = 44;\n var pointerSize;\n if (usePointerSize) {\n pointerSize = zrUtil.retrieve2(opts.pointerSize, defaultPointerSize);\n }\n this.handler = new Handler(storage, painter, handlerProxy, painter.root, pointerSize);\n this.animation = new Animation({\n stage: {\n update: ssrMode ? null : function () { return _this._flush(true); }\n }\n });\n if (!ssrMode) {\n this.animation.start();\n }\n }\n ZRender.prototype.add = function (el) {\n if (this._disposed || !el) {\n return;\n }\n this.storage.addRoot(el);\n el.addSelfToZr(this);\n this.refresh();\n };\n ZRender.prototype.remove = function (el) {\n if (this._disposed || !el) {\n return;\n }\n this.storage.delRoot(el);\n el.removeSelfFromZr(this);\n this.refresh();\n };\n ZRender.prototype.configLayer = function (zLevel, config) {\n if (this._disposed) {\n return;\n }\n if (this.painter.configLayer) {\n this.painter.configLayer(zLevel, config);\n }\n this.refresh();\n };\n ZRender.prototype.setBackgroundColor = function (backgroundColor) {\n if (this._disposed) {\n return;\n }\n if (this.painter.setBackgroundColor) {\n this.painter.setBackgroundColor(backgroundColor);\n }\n this.refresh();\n this._backgroundColor = backgroundColor;\n this._darkMode = isDarkMode(backgroundColor);\n };\n ZRender.prototype.getBackgroundColor = function () {\n return this._backgroundColor;\n };\n ZRender.prototype.setDarkMode = function (darkMode) {\n this._darkMode = darkMode;\n };\n ZRender.prototype.isDarkMode = function () {\n return this._darkMode;\n };\n ZRender.prototype.refreshImmediately = function (fromInside) {\n if (this._disposed) {\n return;\n }\n if (!fromInside) {\n this.animation.update(true);\n }\n this._needsRefresh = false;\n this.painter.refresh();\n this._needsRefresh = false;\n };\n ZRender.prototype.refresh = function () {\n if (this._disposed) {\n return;\n }\n this._needsRefresh = true;\n this.animation.start();\n };\n ZRender.prototype.flush = function () {\n if (this._disposed) {\n return;\n }\n this._flush(false);\n };\n ZRender.prototype._flush = function (fromInside) {\n var triggerRendered;\n var start = getTime();\n if (this._needsRefresh) {\n triggerRendered = true;\n this.refreshImmediately(fromInside);\n }\n if (this._needsRefreshHover) {\n triggerRendered = true;\n this.refreshHoverImmediately();\n }\n var end = getTime();\n if (triggerRendered) {\n this._stillFrameAccum = 0;\n this.trigger('rendered', {\n elapsedTime: end - start\n });\n }\n else if (this._sleepAfterStill > 0) {\n this._stillFrameAccum++;\n if (this._stillFrameAccum > this._sleepAfterStill) {\n this.animation.stop();\n }\n }\n };\n ZRender.prototype.setSleepAfterStill = function (stillFramesCount) {\n this._sleepAfterStill = stillFramesCount;\n };\n ZRender.prototype.wakeUp = function () {\n if (this._disposed) {\n return;\n }\n this.animation.start();\n this._stillFrameAccum = 0;\n };\n ZRender.prototype.refreshHover = function () {\n this._needsRefreshHover = true;\n };\n ZRender.prototype.refreshHoverImmediately = function () {\n if (this._disposed) {\n return;\n }\n this._needsRefreshHover = false;\n if (this.painter.refreshHover && this.painter.getType() === 'canvas') {\n this.painter.refreshHover();\n }\n };\n ZRender.prototype.resize = function (opts) {\n if (this._disposed) {\n return;\n }\n opts = opts || {};\n this.painter.resize(opts.width, opts.height);\n this.handler.resize();\n };\n ZRender.prototype.clearAnimation = function () {\n if (this._disposed) {\n return;\n }\n this.animation.clear();\n };\n ZRender.prototype.getWidth = function () {\n if (this._disposed) {\n return;\n }\n return this.painter.getWidth();\n };\n ZRender.prototype.getHeight = function () {\n if (this._disposed) {\n return;\n }\n return this.painter.getHeight();\n };\n ZRender.prototype.setCursorStyle = function (cursorStyle) {\n if (this._disposed) {\n return;\n }\n this.handler.setCursorStyle(cursorStyle);\n };\n ZRender.prototype.findHover = function (x, y) {\n if (this._disposed) {\n return;\n }\n return this.handler.findHover(x, y);\n };\n ZRender.prototype.on = function (eventName, eventHandler, context) {\n if (!this._disposed) {\n this.handler.on(eventName, eventHandler, context);\n }\n return this;\n };\n ZRender.prototype.off = function (eventName, eventHandler) {\n if (this._disposed) {\n return;\n }\n this.handler.off(eventName, eventHandler);\n };\n ZRender.prototype.trigger = function (eventName, event) {\n if (this._disposed) {\n return;\n }\n this.handler.trigger(eventName, event);\n };\n ZRender.prototype.clear = function () {\n if (this._disposed) {\n return;\n }\n var roots = this.storage.getRoots();\n for (var i = 0; i < roots.length; i++) {\n if (roots[i] instanceof Group) {\n roots[i].removeSelfFromZr(this);\n }\n }\n this.storage.delAllRoots();\n this.painter.clear();\n };\n ZRender.prototype.dispose = function () {\n if (this._disposed) {\n return;\n }\n this.animation.stop();\n this.clear();\n this.storage.dispose();\n this.painter.dispose();\n this.handler.dispose();\n this.animation =\n this.storage =\n this.painter =\n this.handler = null;\n this._disposed = true;\n delInstance(this.id);\n };\n return ZRender;\n}());\nexport function init(dom, opts) {\n var zr = new ZRender(zrUtil.guid(), dom, opts);\n instances[zr.id] = zr;\n return zr;\n}\nexport function dispose(zr) {\n zr.dispose();\n}\nexport function disposeAll() {\n for (var key in instances) {\n if (instances.hasOwnProperty(key)) {\n instances[key].dispose();\n }\n }\n instances = {};\n}\nexport function getInstance(id) {\n return instances[id];\n}\nexport function registerPainter(name, Ctor) {\n painterCtors[name] = Ctor;\n}\nvar ssrDataGetter;\nexport function getElementSSRData(el) {\n if (typeof ssrDataGetter === 'function') {\n return ssrDataGetter(el);\n }\n}\nexport function registerSSRDataGetter(getter) {\n ssrDataGetter = getter;\n}\nexport var version = '6.0.0';\n;\n","function isSafeNum(num) {\n return isFinite(num);\n}\nexport function createLinearGradient(ctx, obj, rect) {\n var x = obj.x == null ? 0 : obj.x;\n var x2 = obj.x2 == null ? 1 : obj.x2;\n var y = obj.y == null ? 0 : obj.y;\n var y2 = obj.y2 == null ? 0 : obj.y2;\n if (!obj.global) {\n x = x * rect.width + rect.x;\n x2 = x2 * rect.width + rect.x;\n y = y * rect.height + rect.y;\n y2 = y2 * rect.height + rect.y;\n }\n x = isSafeNum(x) ? x : 0;\n x2 = isSafeNum(x2) ? x2 : 1;\n y = isSafeNum(y) ? y : 0;\n y2 = isSafeNum(y2) ? y2 : 0;\n var canvasGradient = ctx.createLinearGradient(x, y, x2, y2);\n return canvasGradient;\n}\nexport function createRadialGradient(ctx, obj, rect) {\n var width = rect.width;\n var height = rect.height;\n var min = Math.min(width, height);\n var x = obj.x == null ? 0.5 : obj.x;\n var y = obj.y == null ? 0.5 : obj.y;\n var r = obj.r == null ? 0.5 : obj.r;\n if (!obj.global) {\n x = x * width + rect.x;\n y = y * height + rect.y;\n r = r * min;\n }\n x = isSafeNum(x) ? x : 0.5;\n y = isSafeNum(y) ? y : 0.5;\n r = r >= 0 && isSafeNum(r) ? r : 0.5;\n var canvasGradient = ctx.createRadialGradient(x, y, 0, x, y, r);\n return canvasGradient;\n}\nexport function getCanvasGradient(ctx, obj, rect) {\n var canvasGradient = obj.type === 'radial'\n ? createRadialGradient(ctx, obj, rect)\n : createLinearGradient(ctx, obj, rect);\n var colorStops = obj.colorStops;\n for (var i = 0; i < colorStops.length; i++) {\n canvasGradient.addColorStop(colorStops[i].offset, colorStops[i].color);\n }\n return canvasGradient;\n}\nexport function isClipPathChanged(clipPaths, prevClipPaths) {\n if (clipPaths === prevClipPaths || (!clipPaths && !prevClipPaths)) {\n return false;\n }\n if (!clipPaths || !prevClipPaths || (clipPaths.length !== prevClipPaths.length)) {\n return true;\n }\n for (var i = 0; i < clipPaths.length; i++) {\n if (clipPaths[i] !== prevClipPaths[i]) {\n return true;\n }\n }\n return false;\n}\nfunction parseInt10(val) {\n return parseInt(val, 10);\n}\nexport function getSize(root, whIdx, opts) {\n var wh = ['width', 'height'][whIdx];\n var cwh = ['clientWidth', 'clientHeight'][whIdx];\n var plt = ['paddingLeft', 'paddingTop'][whIdx];\n var prb = ['paddingRight', 'paddingBottom'][whIdx];\n if (opts[wh] != null && opts[wh] !== 'auto') {\n return parseFloat(opts[wh]);\n }\n var stl = document.defaultView.getComputedStyle(root);\n return ((root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh]))\n - (parseInt10(stl[plt]) || 0)\n - (parseInt10(stl[prb]) || 0)) | 0;\n}\n","import { isArray, isNumber, map } from '../core/util.js';\nexport function normalizeLineDash(lineType, lineWidth) {\n if (!lineType || lineType === 'solid' || !(lineWidth > 0)) {\n return null;\n }\n return lineType === 'dashed'\n ? [4 * lineWidth, 2 * lineWidth]\n : lineType === 'dotted'\n ? [lineWidth]\n : isNumber(lineType)\n ? [lineType] : isArray(lineType) ? lineType : null;\n}\nexport function getLineDash(el) {\n var style = el.style;\n var lineDash = style.lineDash && style.lineWidth > 0 && normalizeLineDash(style.lineDash, style.lineWidth);\n var lineDashOffset = style.lineDashOffset;\n if (lineDash) {\n var lineScale_1 = (style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1;\n if (lineScale_1 && lineScale_1 !== 1) {\n lineDash = map(lineDash, function (rawVal) {\n return rawVal / lineScale_1;\n });\n lineDashOffset /= lineScale_1;\n }\n }\n return [lineDash, lineDashOffset];\n}\n","import { DEFAULT_COMMON_STYLE } from '../graphic/Displayable.js';\nimport PathProxy from '../core/PathProxy.js';\nimport { createOrUpdateImage, isImageReady } from '../graphic/helper/image.js';\nimport { getCanvasGradient, isClipPathChanged } from './helper.js';\nimport Path from '../graphic/Path.js';\nimport ZRImage from '../graphic/Image.js';\nimport TSpan from '../graphic/TSpan.js';\nimport { RADIAN_TO_DEGREE } from '../core/util.js';\nimport { getLineDash } from './dashStyle.js';\nimport { REDRAW_BIT, SHAPE_CHANGED_BIT } from '../graphic/constants.js';\nimport { DEFAULT_FONT } from '../core/platform.js';\nvar pathProxyForDraw = new PathProxy(true);\nfunction styleHasStroke(style) {\n var stroke = style.stroke;\n return !(stroke == null || stroke === 'none' || !(style.lineWidth > 0));\n}\nfunction isValidStrokeFillStyle(strokeOrFill) {\n return typeof strokeOrFill === 'string' && strokeOrFill !== 'none';\n}\nfunction styleHasFill(style) {\n var fill = style.fill;\n return fill != null && fill !== 'none';\n}\nfunction doFillPath(ctx, style) {\n if (style.fillOpacity != null && style.fillOpacity !== 1) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.fillOpacity * style.opacity;\n ctx.fill();\n ctx.globalAlpha = originalGlobalAlpha;\n }\n else {\n ctx.fill();\n }\n}\nfunction doStrokePath(ctx, style) {\n if (style.strokeOpacity != null && style.strokeOpacity !== 1) {\n var originalGlobalAlpha = ctx.globalAlpha;\n ctx.globalAlpha = style.strokeOpacity * style.opacity;\n ctx.stroke();\n ctx.globalAlpha = originalGlobalAlpha;\n }\n else {\n ctx.stroke();\n }\n}\nexport function createCanvasPattern(ctx, pattern, el) {\n var image = createOrUpdateImage(pattern.image, pattern.__image, el);\n if (isImageReady(image)) {\n var canvasPattern = ctx.createPattern(image, pattern.repeat || 'repeat');\n if (typeof DOMMatrix === 'function'\n && canvasPattern\n && canvasPattern.setTransform) {\n var matrix = new DOMMatrix();\n matrix.translateSelf((pattern.x || 0), (pattern.y || 0));\n matrix.rotateSelf(0, 0, (pattern.rotation || 0) * RADIAN_TO_DEGREE);\n matrix.scaleSelf((pattern.scaleX || 1), (pattern.scaleY || 1));\n canvasPattern.setTransform(matrix);\n }\n return canvasPattern;\n }\n}\nfunction brushPath(ctx, el, style, inBatch) {\n var _a;\n var hasStroke = styleHasStroke(style);\n var hasFill = styleHasFill(style);\n var strokePercent = style.strokePercent;\n var strokePart = strokePercent < 1;\n var firstDraw = !el.path;\n if ((!el.silent || strokePart) && firstDraw) {\n el.createPathProxy();\n }\n var path = el.path || pathProxyForDraw;\n var dirtyFlag = el.__dirty;\n if (!inBatch) {\n var fill = style.fill;\n var stroke = style.stroke;\n var hasFillGradient = hasFill && !!fill.colorStops;\n var hasStrokeGradient = hasStroke && !!stroke.colorStops;\n var hasFillPattern = hasFill && !!fill.image;\n var hasStrokePattern = hasStroke && !!stroke.image;\n var fillGradient = void 0;\n var strokeGradient = void 0;\n var fillPattern = void 0;\n var strokePattern = void 0;\n var rect = void 0;\n if (hasFillGradient || hasStrokeGradient) {\n rect = el.getBoundingRect();\n }\n if (hasFillGradient) {\n fillGradient = dirtyFlag\n ? getCanvasGradient(ctx, fill, rect)\n : el.__canvasFillGradient;\n el.__canvasFillGradient = fillGradient;\n }\n if (hasStrokeGradient) {\n strokeGradient = dirtyFlag\n ? getCanvasGradient(ctx, stroke, rect)\n : el.__canvasStrokeGradient;\n el.__canvasStrokeGradient = strokeGradient;\n }\n if (hasFillPattern) {\n fillPattern = (dirtyFlag || !el.__canvasFillPattern)\n ? createCanvasPattern(ctx, fill, el)\n : el.__canvasFillPattern;\n el.__canvasFillPattern = fillPattern;\n }\n if (hasStrokePattern) {\n strokePattern = (dirtyFlag || !el.__canvasStrokePattern)\n ? createCanvasPattern(ctx, stroke, el)\n : el.__canvasStrokePattern;\n el.__canvasStrokePattern = strokePattern;\n }\n if (hasFillGradient) {\n ctx.fillStyle = fillGradient;\n }\n else if (hasFillPattern) {\n if (fillPattern) {\n ctx.fillStyle = fillPattern;\n }\n else {\n hasFill = false;\n }\n }\n if (hasStrokeGradient) {\n ctx.strokeStyle = strokeGradient;\n }\n else if (hasStrokePattern) {\n if (strokePattern) {\n ctx.strokeStyle = strokePattern;\n }\n else {\n hasStroke = false;\n }\n }\n }\n var scale = el.getGlobalScale();\n path.setScale(scale[0], scale[1], el.segmentIgnoreThreshold);\n var lineDash;\n var lineDashOffset;\n if (ctx.setLineDash && style.lineDash) {\n _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1];\n }\n var needsRebuild = true;\n if (firstDraw || (dirtyFlag & SHAPE_CHANGED_BIT)) {\n path.setDPR(ctx.dpr);\n if (strokePart) {\n path.setContext(null);\n }\n else {\n path.setContext(ctx);\n needsRebuild = false;\n }\n path.reset();\n el.buildPath(path, el.shape, inBatch);\n path.toStatic();\n el.pathUpdated();\n }\n if (needsRebuild) {\n path.rebuildPath(ctx, strokePart ? strokePercent : 1);\n }\n if (lineDash) {\n ctx.setLineDash(lineDash);\n ctx.lineDashOffset = lineDashOffset;\n }\n if (!inBatch) {\n if (style.strokeFirst) {\n if (hasStroke) {\n doStrokePath(ctx, style);\n }\n if (hasFill) {\n doFillPath(ctx, style);\n }\n }\n else {\n if (hasFill) {\n doFillPath(ctx, style);\n }\n if (hasStroke) {\n doStrokePath(ctx, style);\n }\n }\n }\n if (lineDash) {\n ctx.setLineDash([]);\n }\n}\nfunction brushImage(ctx, el, style) {\n var image = el.__image = createOrUpdateImage(style.image, el.__image, el, el.onload);\n if (!image || !isImageReady(image)) {\n return;\n }\n var x = style.x || 0;\n var y = style.y || 0;\n var width = el.getWidth();\n var height = el.getHeight();\n var aspect = image.width / image.height;\n if (width == null && height != null) {\n width = height * aspect;\n }\n else if (height == null && width != null) {\n height = width / aspect;\n }\n else if (width == null && height == null) {\n width = image.width;\n height = image.height;\n }\n if (style.sWidth && style.sHeight) {\n var sx = style.sx || 0;\n var sy = style.sy || 0;\n ctx.drawImage(image, sx, sy, style.sWidth, style.sHeight, x, y, width, height);\n }\n else if (style.sx && style.sy) {\n var sx = style.sx;\n var sy = style.sy;\n var sWidth = width - sx;\n var sHeight = height - sy;\n ctx.drawImage(image, sx, sy, sWidth, sHeight, x, y, width, height);\n }\n else {\n ctx.drawImage(image, x, y, width, height);\n }\n}\nfunction brushText(ctx, el, style) {\n var _a;\n var text = style.text;\n text != null && (text += '');\n if (text) {\n ctx.font = style.font || DEFAULT_FONT;\n ctx.textAlign = style.textAlign;\n ctx.textBaseline = style.textBaseline;\n var lineDash = void 0;\n var lineDashOffset = void 0;\n if (ctx.setLineDash && style.lineDash) {\n _a = getLineDash(el), lineDash = _a[0], lineDashOffset = _a[1];\n }\n if (lineDash) {\n ctx.setLineDash(lineDash);\n ctx.lineDashOffset = lineDashOffset;\n }\n if (style.strokeFirst) {\n if (styleHasStroke(style)) {\n ctx.strokeText(text, style.x, style.y);\n }\n if (styleHasFill(style)) {\n ctx.fillText(text, style.x, style.y);\n }\n }\n else {\n if (styleHasFill(style)) {\n ctx.fillText(text, style.x, style.y);\n }\n if (styleHasStroke(style)) {\n ctx.strokeText(text, style.x, style.y);\n }\n }\n if (lineDash) {\n ctx.setLineDash([]);\n }\n }\n}\nvar SHADOW_NUMBER_PROPS = ['shadowBlur', 'shadowOffsetX', 'shadowOffsetY'];\nvar STROKE_PROPS = [\n ['lineCap', 'butt'], ['lineJoin', 'miter'], ['miterLimit', 10]\n];\nfunction bindCommonProps(ctx, style, prevStyle, forceSetAll, scope) {\n var styleChanged = false;\n if (!forceSetAll) {\n prevStyle = prevStyle || {};\n if (style === prevStyle) {\n return false;\n }\n }\n if (forceSetAll || style.opacity !== prevStyle.opacity) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n var opacity = Math.max(Math.min(style.opacity, 1), 0);\n ctx.globalAlpha = isNaN(opacity) ? DEFAULT_COMMON_STYLE.opacity : opacity;\n }\n if (forceSetAll || style.blend !== prevStyle.blend) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.globalCompositeOperation = style.blend || DEFAULT_COMMON_STYLE.blend;\n }\n for (var i = 0; i < SHADOW_NUMBER_PROPS.length; i++) {\n var propName = SHADOW_NUMBER_PROPS[i];\n if (forceSetAll || style[propName] !== prevStyle[propName]) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx[propName] = ctx.dpr * (style[propName] || 0);\n }\n }\n if (forceSetAll || style.shadowColor !== prevStyle.shadowColor) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.shadowColor = style.shadowColor || DEFAULT_COMMON_STYLE.shadowColor;\n }\n return styleChanged;\n}\nfunction bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetAll, scope) {\n var style = getStyle(el, scope.inHover);\n var prevStyle = forceSetAll\n ? null\n : (prevEl && getStyle(prevEl, scope.inHover) || {});\n if (style === prevStyle) {\n return false;\n }\n var styleChanged = bindCommonProps(ctx, style, prevStyle, forceSetAll, scope);\n if (forceSetAll || style.fill !== prevStyle.fill) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n isValidStrokeFillStyle(style.fill) && (ctx.fillStyle = style.fill);\n }\n if (forceSetAll || style.stroke !== prevStyle.stroke) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n isValidStrokeFillStyle(style.stroke) && (ctx.strokeStyle = style.stroke);\n }\n if (forceSetAll || style.opacity !== prevStyle.opacity) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.globalAlpha = style.opacity == null ? 1 : style.opacity;\n }\n if (el.hasStroke()) {\n var lineWidth = style.lineWidth;\n var newLineWidth = lineWidth / ((style.strokeNoScale && el.getLineScale) ? el.getLineScale() : 1);\n if (ctx.lineWidth !== newLineWidth) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx.lineWidth = newLineWidth;\n }\n }\n for (var i = 0; i < STROKE_PROPS.length; i++) {\n var prop = STROKE_PROPS[i];\n var propName = prop[0];\n if (forceSetAll || style[propName] !== prevStyle[propName]) {\n if (!styleChanged) {\n flushPathDrawn(ctx, scope);\n styleChanged = true;\n }\n ctx[propName] = style[propName] || prop[1];\n }\n }\n return styleChanged;\n}\nfunction bindImageStyle(ctx, el, prevEl, forceSetAll, scope) {\n return bindCommonProps(ctx, getStyle(el, scope.inHover), prevEl && getStyle(prevEl, scope.inHover), forceSetAll, scope);\n}\nfunction setContextTransform(ctx, el) {\n var m = el.transform;\n var dpr = ctx.dpr || 1;\n if (m) {\n ctx.setTransform(dpr * m[0], dpr * m[1], dpr * m[2], dpr * m[3], dpr * m[4], dpr * m[5]);\n }\n else {\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n}\nfunction updateClipStatus(clipPaths, ctx, scope) {\n var allClipped = false;\n for (var i = 0; i < clipPaths.length; i++) {\n var clipPath = clipPaths[i];\n allClipped = allClipped || clipPath.isZeroArea();\n setContextTransform(ctx, clipPath);\n ctx.beginPath();\n clipPath.buildPath(ctx, clipPath.shape);\n ctx.clip();\n }\n scope.allClipped = allClipped;\n}\nfunction isTransformChanged(m0, m1) {\n if (m0 && m1) {\n return m0[0] !== m1[0]\n || m0[1] !== m1[1]\n || m0[2] !== m1[2]\n || m0[3] !== m1[3]\n || m0[4] !== m1[4]\n || m0[5] !== m1[5];\n }\n else if (!m0 && !m1) {\n return false;\n }\n return true;\n}\nvar DRAW_TYPE_PATH = 1;\nvar DRAW_TYPE_IMAGE = 2;\nvar DRAW_TYPE_TEXT = 3;\nvar DRAW_TYPE_INCREMENTAL = 4;\nfunction canPathBatch(style) {\n var hasFill = styleHasFill(style);\n var hasStroke = styleHasStroke(style);\n return !(style.lineDash\n || !(+hasFill ^ +hasStroke)\n || (hasFill && typeof style.fill !== 'string')\n || (hasStroke && typeof style.stroke !== 'string')\n || style.strokePercent < 1\n || style.strokeOpacity < 1\n || style.fillOpacity < 1);\n}\nfunction flushPathDrawn(ctx, scope) {\n scope.batchFill && ctx.fill();\n scope.batchStroke && ctx.stroke();\n scope.batchFill = '';\n scope.batchStroke = '';\n}\nfunction getStyle(el, inHover) {\n return inHover ? (el.__hoverStyle || el.style) : el.style;\n}\nexport function brushSingle(ctx, el) {\n brush(ctx, el, { inHover: false, viewWidth: 0, viewHeight: 0 }, true);\n}\nexport function brush(ctx, el, scope, isLast) {\n var m = el.transform;\n if (!el.shouldBePainted(scope.viewWidth, scope.viewHeight, false, false)) {\n el.__dirty &= ~REDRAW_BIT;\n el.__isRendered = false;\n return;\n }\n var clipPaths = el.__clipPaths;\n var prevElClipPaths = scope.prevElClipPaths;\n var forceSetTransform = false;\n var forceSetStyle = false;\n if (!prevElClipPaths || isClipPathChanged(clipPaths, prevElClipPaths)) {\n if (prevElClipPaths && prevElClipPaths.length) {\n flushPathDrawn(ctx, scope);\n ctx.restore();\n forceSetStyle = forceSetTransform = true;\n scope.prevElClipPaths = null;\n scope.allClipped = false;\n scope.prevEl = null;\n }\n if (clipPaths && clipPaths.length) {\n flushPathDrawn(ctx, scope);\n ctx.save();\n updateClipStatus(clipPaths, ctx, scope);\n forceSetTransform = true;\n }\n scope.prevElClipPaths = clipPaths;\n }\n if (scope.allClipped) {\n el.__isRendered = false;\n return;\n }\n el.beforeBrush && el.beforeBrush();\n el.innerBeforeBrush();\n var prevEl = scope.prevEl;\n if (!prevEl) {\n forceSetStyle = forceSetTransform = true;\n }\n var canBatchPath = el instanceof Path\n && el.autoBatch\n && canPathBatch(el.style);\n if (forceSetTransform || isTransformChanged(m, prevEl.transform)) {\n flushPathDrawn(ctx, scope);\n setContextTransform(ctx, el);\n }\n else if (!canBatchPath) {\n flushPathDrawn(ctx, scope);\n }\n var style = getStyle(el, scope.inHover);\n if (el instanceof Path) {\n if (scope.lastDrawType !== DRAW_TYPE_PATH) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_PATH;\n }\n bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\n if (!canBatchPath || (!scope.batchFill && !scope.batchStroke)) {\n ctx.beginPath();\n }\n brushPath(ctx, el, style, canBatchPath);\n if (canBatchPath) {\n scope.batchFill = style.fill || '';\n scope.batchStroke = style.stroke || '';\n }\n }\n else {\n if (el instanceof TSpan) {\n if (scope.lastDrawType !== DRAW_TYPE_TEXT) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_TEXT;\n }\n bindPathAndTextCommonStyle(ctx, el, prevEl, forceSetStyle, scope);\n brushText(ctx, el, style);\n }\n else if (el instanceof ZRImage) {\n if (scope.lastDrawType !== DRAW_TYPE_IMAGE) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_IMAGE;\n }\n bindImageStyle(ctx, el, prevEl, forceSetStyle, scope);\n brushImage(ctx, el, style);\n }\n else if (el.getTemporalDisplayables) {\n if (scope.lastDrawType !== DRAW_TYPE_INCREMENTAL) {\n forceSetStyle = true;\n scope.lastDrawType = DRAW_TYPE_INCREMENTAL;\n }\n brushIncremental(ctx, el, scope);\n }\n }\n if (canBatchPath && isLast) {\n flushPathDrawn(ctx, scope);\n }\n el.innerAfterBrush();\n el.afterBrush && el.afterBrush();\n scope.prevEl = el;\n el.__dirty = 0;\n el.__isRendered = true;\n}\nfunction brushIncremental(ctx, el, scope) {\n var displayables = el.getDisplayables();\n var temporalDisplayables = el.getTemporalDisplayables();\n ctx.save();\n var innerScope = {\n prevElClipPaths: null,\n prevEl: null,\n allClipped: false,\n viewWidth: scope.viewWidth,\n viewHeight: scope.viewHeight,\n inHover: scope.inHover\n };\n var i;\n var len;\n for (i = el.getCursor(), len = displayables.length; i < len; i++) {\n var displayable = displayables[i];\n displayable.beforeBrush && displayable.beforeBrush();\n displayable.innerBeforeBrush();\n brush(ctx, displayable, innerScope, i === len - 1);\n displayable.innerAfterBrush();\n displayable.afterBrush && displayable.afterBrush();\n innerScope.prevEl = displayable;\n }\n for (var i_1 = 0, len_1 = temporalDisplayables.length; i_1 < len_1; i_1++) {\n var displayable = temporalDisplayables[i_1];\n displayable.beforeBrush && displayable.beforeBrush();\n displayable.innerBeforeBrush();\n brush(ctx, displayable, innerScope, i_1 === len_1 - 1);\n displayable.innerAfterBrush();\n displayable.afterBrush && displayable.afterBrush();\n innerScope.prevEl = displayable;\n }\n el.clearTemporalDisplayables();\n el.notClear = true;\n ctx.restore();\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"mappings":"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"}
|