@leafer-ui/draw 1.9.1 → 1.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"draw.min.cjs","sources":["../../../../../../node_modules/.pnpm/@rollup+plugin-typescript@11.1.6_rollup@4.44.2_tslib@2.8.1_typescript@5.8.3/node_modules/tslib/tslib.es6.js","../../../../../../../src/ui/packages/decorator/src/data.ts","../../../../../../../src/ui/packages/external/src/index.ts","../../../../../../../src/ui/packages/external/src/color.ts","../../../../../../../src/ui/packages/display-module/data/src/UIData.ts","../../../../../../../src/ui/packages/display-module/data/src/GroupData.ts","../../../../../../../src/ui/packages/display-module/data/src/BoxData.ts","../../../../../../../src/ui/packages/display-module/data/src/LeaferData.ts","../../../../../../../src/ui/packages/display-module/data/src/FrameData.ts","../../../../../../../src/ui/packages/display-module/data/src/LineData.ts","../../../../../../../src/ui/packages/display-module/data/src/RectData.ts","../../../../../../../src/ui/packages/display-module/data/src/EllipseData.ts","../../../../../../../src/ui/packages/display-module/data/src/PolygonData.ts","../../../../../../../src/ui/packages/display-module/data/src/StarData.ts","../../../../../../../src/ui/packages/display-module/data/src/PathData.ts","../../../../../../../src/ui/packages/display-module/data/src/PenData.ts","../../../../../../../src/ui/packages/display-module/data/src/TextData.ts","../../../../../../../src/ui/packages/display-module/data/src/ImageData.ts","../../../../../../../src/ui/packages/display-module/data/src/CanvasData.ts","../../../../../../../src/ui/packages/display-module/bounds/src/UIBounds.ts","../../../../../../../src/ui/packages/display-module/render/src/UIRender.ts","../../../../../../../src/ui/packages/display-module/render/src/RectRender.ts","../../../../../../../src/ui/packages/display/src/UI.ts","../../../../../../../src/ui/packages/display/src/Group.ts","../../../../../../../src/ui/packages/display/src/Leafer.ts","../../../../../../../src/ui/packages/display/src/Rect.ts","../../../../../../../src/ui/packages/display/src/Box.ts","../../../../../../../src/ui/packages/display/src/Frame.ts","../../../../../../../src/ui/packages/display/src/Ellipse.ts","../../../../../../../src/ui/packages/display/src/Line.ts","../../../../../../../src/ui/packages/display/src/Polygon.ts","../../../../../../../src/ui/packages/display/src/Star.ts","../../../../../../../src/ui/packages/display/src/Image.ts","../../../../../../../src/ui/packages/display/src/Canvas.ts","../../../../../../../src/ui/packages/display/src/Text.ts","../../../../../../../src/ui/packages/display/src/Path.ts","../../../../../../../src/ui/packages/display/src/Pen.ts"],"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 Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n 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 return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(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\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(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 return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(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\nexport function __decorate(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\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(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\nexport function __generator(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 = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"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 (g && (g = 0, op[0] && (_ = 0)), _) 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\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\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\nexport function __exportStar(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\nexport function __values(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\nexport function __read(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\nexport function __spread() {\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\nexport function __spreadArrays() {\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\nexport function __spreadArray(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 || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(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 = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\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\nexport function __asyncDelegator(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: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(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\nexport function __makeTemplateObject(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\nvar __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\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(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\nexport function __classPrivateFieldSet(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\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { IValue, IObject } from '@leafer/interface'\nimport { defineKey, decorateLeafAttr, attr, createDescriptor } from '@leafer/core'\n\nimport { ICanvas, IUI, IApp } from '@leafer-ui/interface'\n\n\nexport function effectType(defaultValue?: IValue) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: IValue) {\n this.__setAttr(key, value)\n if (value) (this as IUI).__.__useEffect = true\n this.__layout.renderChanged || this.__layout.renderChange()\n }\n }))\n}\n\nexport function resizeType(defaultValue?: IValue) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: IValue) {\n this.__setAttr(key, value)\n this.__layout.boxChanged || this.__layout.boxChange();\n (this as ICanvas).__updateSize()\n }\n }))\n}\n\nexport function zoomLayerType() {\n return (target: IUI, key: string) => {\n const privateKey = '_' + key\n defineKey(target, key, {\n set(value: IUI) { if (this.isLeafer) (this as IObject)[privateKey] = value },\n get() {\n return this.isApp\n ? (this as IApp).tree.zoomLayer\n : (this.isLeafer ? ((this as IObject)[privateKey] || this) : this.leafer && this.leafer.zoomLayer)\n }\n })\n }\n}\n\nexport function createAttr(defaultValue?: IValue) {\n return (target: IUI, key: string) => {\n defineKey(target, key, createDescriptor(key, defaultValue))\n }\n}","// Implemented in partner\nimport { IPaintModule, IPaintImageModule, IPaintGradientModule, IEffectModule, ITextConvertModule, IExportModule, IColorConvertModule, IPathArrowModule, IStateModule, IUnitData, ITransitionModule, ITransitionFunction, IFilterModule } from \"@leafer-ui/interface\"\nimport { Plugin, isObject } from '@leafer/core'\nimport { hasTransparent } from './color'\n\n\nexport const TextConvert = {} as ITextConvertModule\n\nexport const ColorConvert = {\n hasTransparent\n} as IColorConvertModule\n\nexport const UnitConvert = {\n number(value: number | IUnitData, percentRefer?: number): number {\n return isObject(value) ? (value.type === 'percent' ? value.value * percentRefer : value.value) : value\n }\n}\n\n\nexport const PathArrow = {} as IPathArrowModule\n\n\nexport const Paint = {} as IPaintModule\n\nexport const PaintImage = {} as IPaintImageModule\n\nexport const PaintGradient = {} as IPaintGradientModule\n\nexport const Effect = {} as IEffectModule\n\nexport const Filter = {\n apply(): void { Plugin.need('filter') }\n} as unknown as IFilterModule\n\nexport const Export = {} as IExportModule\n\nexport const State = {\n setStyleName(): void { return Plugin.need('state') },\n set(): void { return Plugin.need('state') }\n} as unknown as IStateModule\n\nexport const Transition = {\n list: {},\n register(attrName: string, fn: ITransitionFunction): void { Transition.list[attrName] = fn },\n get(attrName: string): ITransitionFunction { return Transition.list[attrName] }\n} as ITransitionModule","export function hasTransparent(color?: string): boolean {\n\n if (!color || color.length === 7 || color.length === 4) return false\n if (color === 'transparent') return true // transparent keyword\n\n const first = color[0]\n\n if (first === '#') {\n\n // hex\n switch (color.length) {\n case 5: return color[4] !== 'f' && color[4] !== 'F' // #RGBA\n case 9: return (color[7] !== 'f' && color[7] !== 'F') || (color[8] !== 'f' && color[8] !== 'F') // #RRGGBBAA\n }\n\n } else if (first === 'r' || first === 'h') {\n\n // rgba(...) or hsla(...)\n if (color[3] === 'a') {\n const i = color.lastIndexOf(',')\n if (i > -1) return parseFloat(color.slice(i + 1)) < 1\n }\n\n }\n\n return false\n\n}","import { INumber, IValue, IBoolean, IPathCommandData, IPathString, IPointData, IPathCommandObject, IObject, IFilter } from '@leafer/interface'\nimport { PathConvert, DataHelper, LeafData, Debug, isArray, isObject, isString, isUndefined } from '@leafer/core'\n\nimport { IUI, IUIData, ILeafPaint, IStrokeComputedStyle } from '@leafer-ui/interface'\nimport { Paint, PaintImage, ColorConvert } from '@leafer-ui/external'\n\n\nconst { parse, objectToCanvasData } = PathConvert\nconst { stintSet } = DataHelper, { hasTransparent } = ColorConvert\nconst emptyPaint: ILeafPaint = {}\nconst debug = Debug.get('UIData')\nexport class UIData extends LeafData implements IUIData {\n\n declare public __leaf: IUI\n\n public get scale(): INumber | IPointData { const { scaleX, scaleY } = this as IUIData; return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX }\n\n public __blendLayer?: boolean // 非元素属性必须以两个下划线开头\n\n public __isFills?: boolean\n public __isStrokes?: boolean\n\n public get __strokeWidth(): number { return this.__getRealStrokeWidth() }\n\n public get __maxStrokeWidth(): number { const t = this as IUIData; return t.__hasMultiStrokeStyle ? Math.max(t.__hasMultiStrokeStyle, t.strokeWidth) : t.strokeWidth }\n\n public __hasMultiStrokeStyle?: number // 是否存在多个不同的描述样式(同时存储多个描边样式中的最大宽度用于运算)\n\n public get __hasMultiPaint(): boolean { const t = this as IUIData; return (t.fill && this.__useStroke) || (t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect } // fix: opacity\n\n public __isAlphaPixelFill?: boolean // png / svg / webp\n public __isAlphaPixelStroke?: boolean\n\n public __isTransparentFill?: boolean // 半透明的 \n public __isTransparentStroke?: boolean\n\n public get __clipAfterFill(): boolean { const t = this as IUIData; return (t.cornerRadius || t.innerShadow || t.__pathInputed) as unknown as boolean } // 用于 (Box | Canvas | Robot) __drawAfterFill() 时裁剪内容\n public get __hasSurface(): boolean { const t = this as IUIData; return (t.fill || t.stroke) as unknown as boolean }\n\n public __needComputePaint: boolean\n\n protected _visible?: IBoolean\n\n protected _width?: INumber\n protected _height?: INumber\n\n protected _fill?: IValue\n protected _stroke?: IValue\n\n protected _path: IPathCommandData\n\n protected _shadow?: IValue\n protected _innerShadow?: IValue\n\n public get __autoWidth() { return !this._width }\n public get __autoHeight() { return !this._height }\n public get __autoSide() { return !this._width || !this._height }\n public get __autoSize() { return !this._width && !this._height }\n\n\n protected setVisible(value: IBoolean) {\n this._visible = value\n\n const { leafer } = this.__leaf\n if (leafer) leafer.watcher.hasVisible = true\n }\n\n protected setWidth(value: INumber) {\n if (value < 0) {\n this._width = -value\n this.__leaf.scaleX *= -1\n debug.warn('width < 0, instead -scaleX ', this)\n } else this._width = value\n }\n\n protected setHeight(value: INumber) {\n if (value < 0) {\n this._height = -value\n this.__leaf.scaleY *= -1\n debug.warn('height < 0, instead -scaleY', this)\n } else this._height = value\n }\n\n\n protected setFill(value: IValue) {\n if (this.__naturalWidth) this.__removeNaturalSize()\n if (isString(value) || !value) {\n stintSet(this, '__isTransparentFill', hasTransparent(value as string))\n this.__isFills && this.__removePaint('fill', true)\n this._fill = value\n } else if (isObject(value)) {\n this.__setPaint('fill', value)\n }\n }\n\n protected setStroke(value: IValue) {\n if (isString(value) || !value) {\n stintSet(this, '__isTransparentStroke', hasTransparent(value as string))\n this.__isStrokes && this.__removePaint('stroke', true)\n this._stroke = value\n } else if (isObject(value)) {\n this.__setPaint('stroke', value)\n }\n }\n\n\n protected setPath(value: IPathCommandData | IPathCommandObject[] | IPathString) {\n const isStr = isString(value)\n if (isStr || (value && isObject(value[0]))) {\n this.__setInput('path', value)\n this._path = isStr ? parse(value) : objectToCanvasData(value as IPathCommandObject[])\n } else {\n if (this.__input) this.__removeInput('path')\n this._path = value as IPathCommandData\n }\n }\n\n\n protected setShadow(value: IValue) {\n setArray(this, 'shadow', value)\n }\n\n protected setInnerShadow(value: IValue) {\n setArray(this, 'innerShadow', value)\n }\n\n protected setFilter(value: IValue) {\n setArray(this, 'filter', value)\n }\n\n\n // custom\n\n public __computePaint(): void {\n const { fill, stroke } = this.__input\n if (fill) Paint.compute('fill', this.__leaf)\n if (stroke) Paint.compute('stroke', this.__leaf)\n this.__needComputePaint = undefined\n }\n\n\n public __getRealStrokeWidth(childStyle?: IStrokeComputedStyle): number {\n let { strokeWidth, strokeWidthFixed } = this as IUIData\n if (childStyle) {\n if (childStyle.strokeWidth) strokeWidth = childStyle.strokeWidth\n if (!isUndefined(childStyle.strokeWidthFixed)) strokeWidthFixed = childStyle.strokeWidthFixed\n }\n if (strokeWidthFixed) {\n const scale = this.__leaf.getClampRenderScale()\n return scale > 1 ? strokeWidth / scale : strokeWidth\n } else return strokeWidth\n }\n\n\n public __setPaint(attrName: 'fill' | 'stroke', value: IValue): void {\n this.__setInput(attrName, value)\n const layout = this.__leaf.__layout\n layout.boxChanged || layout.boxChange()\n if (isArray(value) && !value.length) {\n this.__removePaint(attrName)\n } else {\n if (attrName === 'fill') this.__isFills = true, this._fill || (this._fill = emptyPaint)\n else this.__isStrokes = true, this._stroke || (this._stroke = emptyPaint)\n }\n }\n\n public __removePaint(attrName: 'fill' | 'stroke', removeInput?: boolean): void {\n if (removeInput) this.__removeInput(attrName)\n PaintImage.recycleImage(attrName, this)\n if (attrName === 'fill') {\n stintSet(this, '__isAlphaPixelFill', undefined)\n this._fill = this.__isFills = undefined\n } else {\n stintSet(this, '__isAlphaPixelStroke', undefined)\n stintSet(this, '__hasMultiStrokeStyle', undefined)\n this._stroke = this.__isStrokes = undefined\n }\n }\n}\n\n\nfunction setArray(data: IUIData, key: string, value: IValue) {\n data.__setInput(key, value)\n if (isArray(value)) {\n if (value.some((item: IFilter) => item.visible === false)) value = value.filter((item: IFilter) => item.visible !== false)\n value.length || (value = undefined)\n } else value = value && (value as IFilter).visible !== false ? [value] : undefined;\n (data as IObject)['_' + key] = value\n}\n","import { IGroupData } from '@leafer-ui/interface'\n\nimport { UIData } from \"./UIData\"\n\n\nexport class GroupData extends UIData implements IGroupData {\n\n}\n","import { IBox, IBoxData } from '@leafer-ui/interface'\n\nimport { GroupData } from \"./GroupData\"\n\n\nexport class BoxData extends GroupData implements IBoxData {\n\n public get __boxStroke(): boolean { return !(this as IBoxData).__pathInputed }\n\n // 当成整体处理\n public get __drawAfterFill(): boolean { const t = this as IBoxData; return t.__single || t.__clipAfterFill }\n\n public get __clipAfterFill(): boolean { const t = this as IBoxData; return t.overflow === 'hide' && t.__leaf.children.length && ((t.__leaf as IBox).isOverflow || super.__clipAfterFill) as unknown as boolean }\n\n}\n","import { canvasSizeAttrs } from '@leafer/core'\n\nimport { ILeaferData, IObject, IJSONOptions } from '@leafer-ui/interface'\n\nimport { GroupData } from './GroupData'\n\nexport class LeaferData extends GroupData implements ILeaferData {\n\n public __getInputData(names?: string[] | IObject, options?: IJSONOptions): IObject {\n const data = super.__getInputData(names, options)\n canvasSizeAttrs.forEach(key => delete (data as IObject)[key])\n return data\n }\n}\n","import { IFrameData } from '@leafer-ui/interface'\n\nimport { BoxData } from './BoxData'\n\n\nexport class FrameData extends BoxData implements IFrameData {\n\n}\n","import { ILineData } from \"@leafer-ui/interface\"\n\nimport { UIData } from \"./UIData\"\n\n\nexport class LineData extends UIData implements ILineData {\n\n}\n","import { IRectData } from \"@leafer-ui/interface\"\n\nimport { UIData } from \"./UIData\"\n\n\nexport class RectData extends UIData implements IRectData {\n get __boxStroke(): boolean { return !(this as IRectData).__pathInputed }\n}","import { IEllipseData } from '@leafer-ui/interface'\n\nimport { UIData } from \"./UIData\"\n\n\nexport class EllipseData extends UIData implements IEllipseData {\n get __boxStroke(): boolean { return !(this as IEllipseData).__pathInputed }\n}","import { IPolygonData } from '@leafer-ui/interface'\n\nimport { UIData } from \"./UIData\"\n\n\nexport class PolygonData extends UIData implements IPolygonData {\n\n}","import { IStarData } from '@leafer-ui/interface'\n\nimport { UIData } from \"./UIData\"\n\n\nexport class StarData extends UIData implements IStarData {\n\n}","import { IPathData } from '@leafer-ui/interface'\n\nimport { UIData } from \"./UIData\"\n\n\nexport class PathData extends UIData implements IPathData {\n public get __pathInputed(): number { return 2 }\n}","import { IPenData } from '@leafer-ui/interface'\n\nimport { GroupData } from './GroupData'\n\n\nexport class PenData extends GroupData implements IPenData {\n\n}\n","import { UICreator, isString } from '@leafer/core'\n\nimport { IFontWeight, ITextData, IUI, IText, IObject, IBackgroundBoxStyle, IFontWeightNumer } from '@leafer-ui/interface'\n\nimport { UIData } from \"./UIData\"\n\n\nconst fontWeightMap = {\n 'thin': 100,\n 'extra-light': 200,\n 'light': 300,\n 'normal': 400,\n 'medium': 500,\n 'semi-bold': 600,\n 'bold': 700,\n 'extra-bold': 800,\n 'black': 900\n}\n\nexport class TextData extends UIData implements ITextData {\n\n public get __useNaturalRatio() { return false }\n\n protected _fontWeight?: number\n protected _boxStyle?: IBackgroundBoxStyle\n\n setFontWeight(value: IFontWeight): void {\n if (isString(value)) {\n this.__setInput('fontWeight', value)\n value = fontWeightMap[value] as IFontWeightNumer || 400\n } else if (this.__input) this.__removeInput('fontWeight')\n this._fontWeight = value\n }\n\n setBoxStyle(value: IUI) {\n let t = this.__leaf as IText, box = t.__box\n\n if (value) {\n\n const { boxStyle } = this as ITextData\n if (box) for (let key in boxStyle) (box as IObject)[key] = undefined\n else box = t.__box = UICreator.get('Rect', 0 as any) as IUI // 传递 0 可以优化内存占用\n\n const layout = t.__layout, boxLayout = box.__layout\n if (!boxStyle) box.parent = t as any, box.__world = t.__world, boxLayout.boxBounds = layout.boxBounds\n\n box.set(value)\n if (boxLayout.strokeChanged) layout.strokeChange()\n if (boxLayout.renderChanged) layout.renderChange()\n box.__updateChange()\n\n } else if (box) {\n t.__box = box.parent = null\n box.destroy()\n }\n\n this._boxStyle = value\n\n }\n\n}","import { IImageData, IImageInputData, IImage, IObject, IJSONOptions } from '@leafer-ui/interface'\n\nimport { RectData } from './RectData'\n\n\nexport class ImageData extends RectData implements IImageData {\n\n declare public __leaf: IImage\n\n protected _url: string\n\n protected setUrl(value: string) {\n this.__setImageFill(value)\n this._url = value\n }\n\n public __setImageFill(value: string): void {\n (this as IImageInputData).fill = value ? { type: 'image', mode: 'stretch', url: value } : undefined\n }\n\n public __getData(): IObject {\n const data = super.__getData()\n delete data.fill\n return data\n }\n\n public __getInputData(names?: string[] | IObject, options?: IJSONOptions): IObject {\n const data = super.__getInputData(names, options)\n delete data.fill\n return data\n }\n}","import { ICanvas, ICanvasData, ICanvasInputData, IObject, IJSONOptions } from '@leafer-ui/interface'\n\nimport { RectData } from './RectData'\n\n\nexport class CanvasData extends RectData implements ICanvasData {\n\n public get __isCanvas(): boolean { return true }\n public get __drawAfterFill(): boolean { return true }\n\n public __getInputData(names?: string[] | IObject, options?: IJSONOptions): IObject {\n const data: ICanvasInputData = super.__getInputData(names, options)\n data.url = (this.__leaf as ICanvas).canvas.toDataURL('image/png') as string\n return data\n }\n}","import { IUIBoundsModule } from \"@leafer-ui/interface\"\n\nimport { Filter } from '@leafer-ui/external'\n\n\nexport const UIBounds: IUIBoundsModule = {\n\n __updateStrokeSpread(): number {\n let width = 0, boxWidth = 0\n const data = this.__, { strokeAlign, __maxStrokeWidth: strokeWidth } = data, box = this.__box\n\n if ((data.stroke || data.hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {\n boxWidth = width = strokeAlign === 'center' ? strokeWidth / 2 : strokeWidth\n\n if (!data.__boxStroke) {\n const miterLimitAddWidth = data.__isLinePath ? 0 : 10 * width // = Math.sin((miterLimit = 10) * OneRadian / 2) * Math.sqrt(strokeWidth) - width 后期需继续精确优化\n const storkeCapAddWidth = data.strokeCap === 'none' ? 0 : strokeWidth\n width += Math.max(miterLimitAddWidth, storkeCapAddWidth)\n }\n }\n\n if (data.__useArrow) width += strokeWidth * 5 // 后期需要精细化\n\n if (box) {\n width = Math.max(box.__layout.strokeSpread = box.__updateStrokeSpread(), width)\n boxWidth = box.__layout.strokeBoxSpread\n }\n\n this.__layout.strokeBoxSpread = boxWidth\n\n return width\n },\n\n __updateRenderSpread(): number {\n let width: number = 0\n const { shadow, innerShadow, blur, backgroundBlur, filter, renderSpread } = this.__\n\n if (shadow) shadow.forEach(item => width = Math.max(width, Math.max(Math.abs(item.y), Math.abs(item.x)) + (item.spread > 0 ? item.spread : 0) + item.blur * 1.5))\n\n if (blur) width = Math.max(width, blur)\n\n if (filter) width += Filter.getSpread(filter)\n\n if (renderSpread) width += renderSpread\n\n let shapeWidth = width = Math.ceil(width)\n\n if (innerShadow) innerShadow.forEach(item => shapeWidth = Math.max(shapeWidth, Math.max(Math.abs(item.y), Math.abs(item.x)) + (item.spread < 0 ? -item.spread : 0) + item.blur * 1.5))\n\n if (backgroundBlur) shapeWidth = Math.max(shapeWidth, backgroundBlur)\n\n this.__layout.renderShapeSpread = shapeWidth\n\n width += this.__layout.strokeSpread || 0\n\n return this.__box ? Math.max(this.__box.__updateRenderSpread(), width) : width\n }\n\n}","import { ILeaferCanvas, IRenderOptions } from '@leafer/interface'\nimport { DataHelper, isArray } from '@leafer/core'\n\nimport { IUIRenderModule, ILeafPaint, ILeafStrokePaint, IUI } from '@leafer-ui/interface'\nimport { Paint, Effect, Filter, ColorConvert } from '@leafer-ui/external'\n\nconst { stintSet } = DataHelper\n\nexport const UIRender: IUIRenderModule = {\n\n __updateChange(): void {\n const data = this.__\n\n if (data.__useStroke) {\n const useStroke = data.__useStroke = !!(data.stroke && data.strokeWidth)\n stintSet(this.__world, 'half', useStroke && data.strokeAlign === 'center' && data.strokeWidth % 2) // 是否存在半逻辑像素渲染(奇数线宽的居中线条),可以半像素为起点绘制,防止模糊\n stintSet(data, '__fillAfterStroke', useStroke && data.strokeAlign === 'outside' && data.fill && !data.__isTransparentFill)\n }\n\n if (data.__useEffect) {\n const { shadow, fill, stroke } = data, otherEffect = data.innerShadow || data.blur || data.backgroundBlur || data.filter\n stintSet(data, '__isFastShadow', shadow && !otherEffect && shadow.length < 2 && !shadow[0].spread && fill && !data.__isTransparentFill && !(isArray(fill) && fill.length > 1) && (this.useFastShadow || !stroke || (stroke && data.strokeAlign === 'inside'))) // 高性能阴影条件, @leafer-ui/image check.ts 中的 allowDraw 逻辑需与此处关联\n data.__useEffect = !!(shadow || otherEffect)\n }\n\n data.__checkSingle()\n\n stintSet(data, '__complex', (data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect) as boolean)\n },\n\n __drawFast(canvas: ILeaferCanvas, options: IRenderOptions): void {\n drawFast(this, canvas, options)\n },\n\n __draw(canvas: ILeaferCanvas, options: IRenderOptions, originCanvas?: ILeaferCanvas): void {\n const data = this.__\n\n if (data.__complex) {\n\n if (data.__needComputePaint) data.__computePaint()\n\n const { fill, stroke, __drawAfterFill, __fillAfterStroke, __isFastShadow } = data\n\n this.__drawRenderPath(canvas)\n\n if (data.__useEffect && !__isFastShadow) {\n\n const shape = Paint.shape(this, canvas, options)\n this.__nowWorld = this.__getNowWorld(options) // restore\n\n const { shadow, innerShadow, filter } = data\n\n if (shadow) Effect.shadow(this, canvas, shape)\n\n if (__fillAfterStroke) data.__isStrokes ? Paint.strokes(stroke as ILeafStrokePaint[], this, canvas) : Paint.stroke(stroke as string, this, canvas)\n\n if (fill) data.__isFills ? Paint.fills(fill as ILeafPaint[], this, canvas) : Paint.fill(fill as string, this, canvas)\n\n if (__drawAfterFill) this.__drawAfterFill(canvas, options)\n\n if (innerShadow) Effect.innerShadow(this, canvas, shape)\n\n if (stroke && !__fillAfterStroke) data.__isStrokes ? Paint.strokes(stroke as ILeafStrokePaint[], this, canvas) : Paint.stroke(stroke as string, this, canvas)\n\n if (filter) Filter.apply(filter, this, this.__nowWorld, canvas, originCanvas, shape)\n\n if (shape.worldCanvas) shape.worldCanvas.recycle()\n shape.canvas.recycle()\n\n } else {\n\n if (__fillAfterStroke) data.__isStrokes ? Paint.strokes(stroke as ILeafStrokePaint[], this, canvas) : Paint.stroke(stroke as string, this, canvas)\n\n if (__isFastShadow) {\n const shadow = data.shadow[0], { scaleX, scaleY } = this.getRenderScaleData(true, shadow.scaleFixed)\n canvas.save(), canvas.setWorldShadow(shadow.x * scaleX, shadow.y * scaleY, shadow.blur * scaleX, ColorConvert.string(shadow.color))\n }\n\n if (fill) data.__isFills ? Paint.fills(fill as ILeafPaint[], this, canvas) : Paint.fill(fill as string, this, canvas)\n\n if (__isFastShadow) canvas.restore()\n\n if (__drawAfterFill) this.__drawAfterFill(canvas, options)\n\n if (stroke && !__fillAfterStroke) data.__isStrokes ? Paint.strokes(stroke as ILeafStrokePaint[], this, canvas) : Paint.stroke(stroke as string, this, canvas)\n\n }\n\n } else {\n\n if (data.__pathInputed) drawFast(this, canvas, options)\n else this.__drawFast(canvas, options)\n\n }\n },\n\n __drawShape(canvas: ILeaferCanvas, options: IRenderOptions): void {\n this.__drawRenderPath(canvas)\n\n const data = this.__, { fill, stroke } = data\n\n if (fill && !options.ignoreFill) data.__isAlphaPixelFill ? Paint.fills(fill as ILeafPaint[], this, canvas) : Paint.fill('#000000', this, canvas)\n if (data.__isCanvas) this.__drawAfterFill(canvas, options)\n if (stroke && !options.ignoreStroke) data.__isAlphaPixelStroke ? Paint.strokes(stroke as ILeafStrokePaint[], this, canvas) : Paint.stroke('#000000', this, canvas)\n },\n\n __drawAfterFill(canvas: ILeaferCanvas, options: IRenderOptions): void {\n if (this.__.__clipAfterFill) {\n canvas.save()\n canvas.clipUI(this)\n this.__drawContent(canvas, options)\n canvas.restore()\n } else this.__drawContent(canvas, options)\n }\n\n}\n\n\nfunction drawFast(ui: IUI, canvas: ILeaferCanvas, options: IRenderOptions): void {\n const { fill, stroke, __drawAfterFill, __fillAfterStroke } = ui.__\n\n ui.__drawRenderPath(canvas)\n\n if (__fillAfterStroke) Paint.stroke(stroke as string, ui, canvas)\n\n if (fill) Paint.fill(fill as string, ui, canvas)\n if (__drawAfterFill) ui.__drawAfterFill(canvas, options)\n\n if (stroke && !__fillAfterStroke) Paint.stroke(stroke as string, ui, canvas)\n}","import { ILeaferCanvas, IRenderOptions } from '@leafer/interface'\n\nimport { IRectRenderModule } from '@leafer-ui/interface'\n\n\nexport const RectRender: IRectRenderModule = {\n\n __drawFast(canvas: ILeaferCanvas, options: IRenderOptions): void {\n\n let { x, y, width, height } = this.__layout.boxBounds\n const { fill, stroke, __drawAfterFill } = this.__\n\n if (fill) {\n canvas.fillStyle = fill\n canvas.fillRect(x, y, width, height)\n }\n\n if (__drawAfterFill) this.__drawAfterFill(canvas, options)\n\n if (stroke) {\n\n const { strokeAlign, __strokeWidth: strokeWidth } = this.__\n if (!strokeWidth) return\n\n canvas.setStroke(stroke, strokeWidth, this.__)\n const half = strokeWidth / 2\n\n switch (strokeAlign) {\n case 'center':\n canvas.strokeRect(0, 0, width, height)\n break\n case 'inside':\n width -= strokeWidth, height -= strokeWidth\n if (width < 0 || height < 0) {\n canvas.save()\n this.__clip(canvas, options)\n canvas.strokeRect(x + half, y + half, width, height)\n canvas.restore()\n } else canvas.strokeRect(x + half, y + half, width, height)\n break\n case 'outside':\n canvas.strokeRect(x - half, y - half, width + strokeWidth, height + strokeWidth)\n break\n }\n\n }\n\n }\n}\n","import { ILeaferCanvas, IPathDrawer, IPathCommandData, IHitType, INumber, IBoolean, IString, IPathString, IExportFileType, IPointData, ICursorType, IMaskType, IEraserType, IValue, IWindingRule, IPathCreator, IFourNumber, IBoundsData, IFlowType, IGap, IFlowWrap, IAxis, IConstraint, IAutoBoxData, IFlowBoxType, IPointGap, IFlowAlign, IFlowAxisAlign, IFindCondition, IAutoSize, IRangeSize, IAlign, IUnitPointData, IObject, IScaleData, IUnitData, IPathCommandObject, ITransition, IFilter, ILeaferImage, IScaleFixed } from '@leafer/interface'\nimport { Leaf, PathDrawer, surfaceType, dataType, positionType, boundsType, pathType, scaleType, rotationType, opacityType, visibleType, sortType, maskType, dataProcessor, registerUI, useModule, rewrite, rewriteAble, UICreator, PathCorner, hitType, strokeType, PathConvert, eraserType, cursorType, autoLayoutType, pen, naturalBoundsType, pathInputType, MathHelper, Plugin, DataHelper, affectRenderBoundsType, isString, isNumber } from '@leafer/core'\n\nimport { IUI, IShadowEffect, IBlurEffect, IStrokeAlign, IStrokeJoin, IStrokeCap, IBlendMode, IDashPatternString, IShadowString, IGrayscaleEffect, IUIData, IGroup, IStrokeWidthString, ICornerRadiusString, IUIInputData, IExportOptions, IExportResult, IFill, IStroke, IArrowType, IFindUIMethod, ILeafer, IEditorConfig, IEditorConfigFunction, IEditToolFunction, IKeyframe, IAnimation, IAnimate, IStates, IStateName, IAnimateType, IStateStyle, IColorString, IAnimateList } from '@leafer-ui/interface'\nimport { effectType, zoomLayerType } from '@leafer-ui/decorator'\n\nimport { UIData } from '@leafer-ui/data'\nimport { UIBounds, UIRender } from '@leafer-ui/display-module'\n\nimport { Export, Paint, PathArrow } from '@leafer-ui/external'\n\n\n@useModule(UIBounds)\n@useModule(UIRender)\n@rewriteAble()\nexport class UI extends Leaf implements IUI { // tip: rewrited Box\n\n @dataProcessor(UIData)\n declare public __: IUIData\n\n declare public proxyData?: IUIInputData // need rewrite getter\n declare public __proxyData?: IUIInputData\n\n public get app(): ILeafer { return this.leafer && this.leafer.app }\n\n declare public leafer?: ILeafer\n declare public parent?: IGroup\n\n @zoomLayerType()\n public zoomLayer: IGroup\n\n public get isFrame(): boolean { return false }\n\n declare public children?: IUI[]\n\n // ---\n\n // id\n @dataType('')\n public id?: IString\n\n @dataType('')\n public name?: IString\n\n @dataType('')\n public className?: IString\n\n\n // layer\n @surfaceType('pass-through')\n public blendMode?: IBlendMode\n\n @opacityType(1)\n public opacity?: INumber\n\n @visibleType(true)\n public visible?: IBoolean | 0\n\n\n @surfaceType(false)\n public locked?: IBoolean\n\n\n @surfaceType(false)\n public dim?: IBoolean | INumber // 是否弱化内容,可设置具体透明度\n\n @surfaceType(false)\n public dimskip?: IBoolean // 跳过弱化,突出显示内容,不受dim影响\n\n\n @sortType(0)\n public zIndex?: INumber\n\n\n @maskType(false)\n public mask?: IBoolean | IMaskType\n\n @eraserType(false)\n public eraser?: IBoolean | IEraserType\n\n\n // position\n @positionType(0, true)\n public x?: INumber\n\n @positionType(0, true)\n public y?: INumber\n\n // size\n @boundsType(100, true)\n public width?: INumber\n\n @boundsType(100, true)\n public height?: INumber\n\n // scale\n @scaleType(1, true)\n public scaleX?: INumber\n\n @scaleType(1, true)\n public scaleY?: INumber\n\n // rotate\n @rotationType(0, true)\n public rotation?: INumber\n\n // skew\n @rotationType(0, true)\n public skewX?: INumber\n\n @rotationType(0, true)\n public skewY?: INumber\n\n\n // offset\n @positionType(0, true)\n public offsetX?: INumber\n\n @positionType(0, true)\n public offsetY?: INumber\n\n // scroll\n @positionType(0, true)\n public scrollX?: INumber\n\n @positionType(0, true)\n public scrollY?: INumber\n\n\n // center\n @autoLayoutType()\n public origin?: IAlign | IUnitPointData\n\n @autoLayoutType()\n public around?: IAlign | IUnitPointData\n\n\n // image\n @dataType(false)\n public lazy?: IBoolean // load image / compute paint\n\n @naturalBoundsType(1)\n public pixelRatio?: INumber\n\n\n @affectRenderBoundsType(0)\n public renderSpread?: INumber // 强行扩大渲染边界\n\n\n // path\n @pathInputType()\n public path?: IPathCommandData | IPathCommandObject[] | IPathString\n\n @pathType()\n public windingRule?: IWindingRule\n\n @pathType(true)\n public closed?: boolean\n\n\n // @leafer-in/flow rewrite\n public flow?: IFlowType\n\n @boundsType(0)\n public padding?: IFourNumber\n\n public gap?: IGap | IPointGap\n\n public flowAlign?: IFlowAlign | IFlowAxisAlign\n\n public flowWrap?: IFlowWrap\n\n\n public itemBox?: IFlowBoxType\n\n public inFlow?: IBoolean\n\n\n public autoWidth?: IAutoSize\n\n public autoHeight?: IAutoSize\n\n @boundsType(false)\n public lockRatio?: IBoolean\n\n public autoBox?: IAutoBoxData | IConstraint\n\n @boundsType()\n public widthRange?: IRangeSize\n\n @boundsType()\n public heightRange?: IRangeSize\n\n\n // drag\n @dataType(false)\n public draggable?: IBoolean | IAxis\n\n @dataType()\n public dragBounds?: IBoundsData | 'parent'\n\n\n @dataType(false)\n public editable?: IBoolean\n\n\n // hit\n @hitType(true)\n public hittable?: IBoolean\n\n @hitType('path')\n public hitFill?: IHitType\n\n @strokeType('path')\n public hitStroke?: IHitType\n\n @hitType(false)\n public hitBox?: IBoolean\n\n @hitType(true)\n public hitChildren?: IBoolean\n\n @hitType(true)\n public hitSelf?: IBoolean\n\n @hitType()\n public hitRadius?: INumber\n\n @cursorType('')\n public cursor?: ICursorType | ICursorType[]\n\n // ---\n\n\n // fill\n\n @surfaceType()\n public fill?: IFill\n\n // stroke\n\n @strokeType(undefined, true)\n public stroke?: IStroke\n\n @strokeType('inside')\n public strokeAlign?: IStrokeAlign\n\n @strokeType(1, true)\n public strokeWidth?: IFourNumber | IStrokeWidthString\n\n @strokeType(false)\n public strokeWidthFixed?: IScaleFixed\n\n @strokeType('none')\n public strokeCap?: IStrokeCap\n\n @strokeType('miter')\n public strokeJoin?: IStrokeJoin\n\n @strokeType()\n public dashPattern?: INumber[] | IDashPatternString\n\n @strokeType(0)\n public dashOffset?: INumber\n\n @strokeType(10)\n public miterLimit?: INumber\n\n\n // @leafer-in/arrow rewrite\n\n public startArrow?: IArrowType\n\n public endArrow?: IArrowType\n\n // corner\n\n @pathType(0)\n public cornerRadius?: IFourNumber | ICornerRadiusString\n\n @pathType()\n public cornerSmoothing?: INumber\n\n // effect\n\n @effectType()\n public shadow?: IShadowEffect | IShadowEffect[] | IShadowString\n\n @effectType()\n public innerShadow?: IShadowEffect | IShadowEffect[] | IShadowString\n\n @effectType()\n public blur?: INumber | IBlurEffect\n\n @effectType()\n public backgroundBlur?: INumber | IBlurEffect\n\n @effectType()\n public grayscale?: INumber | IGrayscaleEffect\n\n @effectType()\n public filter?: IFilter | IFilter[]\n\n\n // @leafer-in/animate rewrite\n\n public animation?: IAnimation | IAnimation[]\n\n public animationOut?: IAnimation | IAnimation[]\n\n\n public transition?: ITransition\n\n public transitionOut?: ITransition\n\n\n // @leafer-in/motion-path rewrite\n\n public motionPath?: boolean\n\n public motionPrecision?: INumber\n\n\n public motion?: INumber | IUnitData\n\n public motionRotation?: INumber | IBoolean\n\n\n // @leafer-in/state rewrite\n\n public states?: IStates\n\n public state?: IStateName\n\n\n public selected?: IBoolean\n\n public disabled?: IBoolean\n\n\n public normalStyle?: IStateStyle\n\n public hoverStyle?: IStateStyle\n\n public pressStyle?: IStateStyle\n\n public focusStyle?: IStateStyle\n\n public selectedStyle?: IStateStyle\n\n public disabledStyle?: IStateStyle\n\n\n public placeholderStyle?: IStateStyle\n\n @surfaceType()\n public placeholderColor?: IColorString\n\n @dataType(100)\n public placeholderDelay?: INumber\n\n\n public button?: IBoolean\n\n\n // @leafer-in/editor rewrite\n\n public editConfig: IEditorConfig\n\n public editOuter: string\n\n public editInner: string\n\n\n // 预留给用户使用的数据对象\n @dataType({})\n public data: IObject\n\n\n public set scale(value: INumber | IPointData) { MathHelper.assignScale(this as IScaleData, value) }\n public get scale(): INumber | IPointData { return this.__.scale }\n\n public get isAutoWidth(): boolean { const t = this.__; return t.__autoWidth || t.autoWidth as boolean }\n public get isAutoHeight(): boolean { const t = this.__; return t.__autoHeight || t.autoHeight as boolean }\n\n public useFastShadow?: boolean // 将忽略 stroke 产生的阴影,只对单个 fill 有效\n\n public __box?: IUI // 背景box, 一般用于文本背景框\n public __animate?: IAnimate | IAnimateList\n\n public get pen(): IPathCreator {\n const { path } = this.__\n pen.set(this.path = path || [])\n if (!path) this.__drawPathByBox(pen)\n return pen\n }\n\n\n constructor(data?: IUIInputData) {\n super(data)\n }\n\n\n // data\n\n @rewrite(Leaf.prototype.reset)\n public reset(_data?: IUIInputData): void { }\n\n\n public set(data: IUIInputData, transition?: ITransition | 'temp'): void {\n if (data) {\n if (transition) {\n if (transition === 'temp') {\n this.lockNormalStyle = true\n Object.assign(this, data)\n this.lockNormalStyle = false\n } else this.animate(data, transition)\n } else Object.assign(this, data)\n }\n }\n\n public get(name?: string | string[] | IUIInputData): IUIInputData | IValue {\n return isString(name) ? this.__.__getInput(name) : this.__.__getInputData(name)\n }\n\n public createProxyData(): IUIInputData { return undefined }\n\n\n // hit rewrite\n\n public find(_condition: number | string | IFindCondition | IFindUIMethod, _options?: any): IUI[] { return Plugin.need('find') }\n\n public findTag(tag: string | string[]): IUI[] { return this.find({ tag }) }\n\n public findOne(_condition: number | string | IFindCondition | IFindUIMethod, _options?: any): IUI | undefined { return Plugin.need('find') }\n\n public findId(id: number | string): IUI | undefined { return this.findOne({ id }) }\n\n\n // path\n\n public getPath(curve?: boolean, pathForRender?: boolean): IPathCommandData {\n this.__layout.update()\n let path = pathForRender ? this.__.__pathForRender : this.__.path\n if (!path) pen.set(path = []), this.__drawPathByBox(pen)\n return curve ? PathConvert.toCanvasData(path, true) : path\n }\n\n public getPathString(curve?: boolean, pathForRender?: boolean, floatLength?: number): IPathString {\n return PathConvert.stringify(this.getPath(curve, pathForRender), floatLength)\n }\n\n\n public load(): void {\n this.__.__computePaint() // 手动加载图片\n }\n\n public __onUpdateSize(): void {\n if (this.__.__input) {\n const data = this.__;\n (data.lazy && !this.__inLazyBounds && !Export.running) ? data.__needComputePaint = true : data.__computePaint()\n }\n }\n\n public __updateRenderPath(): void {\n const data = this.__\n if (data.path) {\n data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path\n if (data.__useArrow) PathArrow.addArrows(this, !data.cornerRadius)\n } else data.__pathForRender && (data.__pathForRender = undefined)\n }\n\n public __drawRenderPath(canvas: ILeaferCanvas): void {\n canvas.beginPath()\n this.__drawPathByData(canvas, this.__.__pathForRender)\n }\n\n public __drawPath(canvas: ILeaferCanvas): void {\n canvas.beginPath()\n this.__drawPathByData(canvas, this.__.path)\n }\n\n public __drawPathByData(drawer: IPathDrawer, data: IPathCommandData): void {\n data ? PathDrawer.drawPathByData(drawer, data) : this.__drawPathByBox(drawer)\n }\n\n public __drawPathByBox(drawer: IPathDrawer): void {\n const { x, y, width, height } = this.__layout.boxBounds\n if (this.__.cornerRadius) {\n const { cornerRadius } = this.__\n drawer.roundRect(x, y, width, height, isNumber(cornerRadius) ? [cornerRadius] : cornerRadius) // 修复微信浏览器bug, 后续需进一步优化\n } else drawer.rect(x, y, width, height)\n }\n\n public drawImagePlaceholder(canvas: ILeaferCanvas, _image?: ILeaferImage): void {\n Paint.fill(this.__.placeholderColor, this, canvas) // 图片占位符\n }\n\n // @leafer-in/animate rewrite\n\n public animate(_keyframe?: IUIInputData | IKeyframe[] | IAnimation | IAnimation[], _options?: ITransition, _type?: IAnimateType, _isTemp?: boolean): IAnimate {\n return Plugin.need('animate')\n }\n\n public killAnimate(_type?: IAnimateType, _nextStyle?: IUIInputData): void { }\n\n\n // create\n\n // @leafer-in/export will rewrite\n public export(_filename: IExportFileType | string, _options?: IExportOptions | number | boolean): Promise<IExportResult> {\n return Plugin.need('export')\n }\n\n public syncExport(_filename: IExportFileType | string, _options?: IExportOptions | number | boolean): IExportResult {\n return Plugin.need('export')\n }\n\n public clone(data?: IUIInputData): IUI {\n const json = DataHelper.clone(this.toJSON())\n if (data) Object.assign(json, data)\n return UI.one(json)\n }\n\n static one(data: IUIInputData, x?: number, y?: number, width?: number, height?: number): IUI {\n return UICreator.get(data.tag || this.prototype.__tag, data, x, y, width, height) as IUI\n }\n\n static registerUI(): void {\n registerUI()(this)\n }\n\n static registerData(data: IUIData): void {\n dataProcessor(data)(this.prototype)\n }\n\n\n // @leafer-in/editor rewrite\n\n static setEditConfig(_config: IEditorConfig | IEditorConfigFunction): void { }\n\n static setEditOuter(_toolName: string | IEditToolFunction): void { }\n\n static setEditInner(_editorName: string | IEditToolFunction): void { }\n\n\n public destroy(): void {\n this.fill = this.stroke = null\n if (this.__animate) this.killAnimate()\n super.destroy()\n }\n\n}\n","import { IJSONOptions, IPickOptions, IPickResult, IPointData, INumber, ITransition } from '@leafer/interface'\nimport { Branch, useModule, dataProcessor, registerUI, boundsType } from '@leafer/core'\n\nimport { IGroup, IGroupData, IGroupInputData, IUI, IUIInputData, IUIJSONData, IFindCondition, IFindUIMethod } from '@leafer-ui/interface'\nimport { GroupData } from '@leafer-ui/data'\n\nimport { UI } from './UI'\n\n\n@useModule(Branch)\n@registerUI()\nexport class Group extends UI implements IGroup { // tip: rewrited Box\n\n public get __tag() { return 'Group' }\n\n public get isBranch(): boolean { return true }\n\n @dataProcessor(GroupData)\n declare public __: IGroupData\n\n // size\n @boundsType(0)\n declare public width?: INumber\n\n @boundsType(0)\n declare public height?: INumber\n\n declare public children: IUI[]\n\n public childlessJSON?: boolean\n\n constructor(data?: IGroupInputData) {\n super(data)\n }\n\n public reset(data?: IGroupInputData): void {\n this.__setBranch()\n super.reset(data)\n }\n\n public __setBranch(): void {\n if (!this.children) this.children = []\n }\n\n\n // data\n\n override set(data: IUIInputData, transition?: ITransition | 'temp'): void {\n if (data) {\n if (data.children) {\n const { children } = data\n\n delete data.children\n this.children ? this.clear() : this.__setBranch()\n\n super.set(data, transition)\n\n children.forEach(child => this.add(child))\n data.children = children\n\n } else super.set(data, transition)\n }\n }\n\n override toJSON(options?: IJSONOptions): IUIJSONData {\n const data = super.toJSON(options)\n if (!this.childlessJSON) data.children = this.children.map(child => child.toJSON(options))\n return data\n }\n\n\n // hit rewrite\n\n public pick(_hitPoint: IPointData, _options?: IPickOptions): IPickResult { return undefined }\n\n\n // add\n\n public addAt(child: IUI | IUI[] | IUIInputData | IUIInputData[], index: number): void {\n this.add(child, index)\n }\n\n public addAfter(child: IUI | IUI[] | IUIInputData | IUIInputData[], after: IUI): void {\n this.add(child, this.children.indexOf(after) + 1)\n }\n\n public addBefore(child: IUI | IUI[] | IUIInputData | IUIInputData[], before: IUI): void {\n this.add(child, this.children.indexOf(before))\n }\n\n // Branch rewrite\n\n public add(_child: IUI | IUI[] | IUIInputData | IUIInputData[], _index?: number): void { }\n\n public addMany(..._children: IUI[] | IUIInputData[]): void { }\n\n public remove(_child?: IUI | number | string | IFindCondition | IFindUIMethod, _destroy?: boolean): void { }\n\n public removeAll(_destroy?: boolean): void { }\n\n public clear(): void { }\n\n}","import { ILeaferCanvas, IRenderer, ILayouter, ISelector, IWatcher, IInteraction, ILeaferConfig, ICanvasManager, IHitCanvasManager, IAutoBounds, IScreenSizeData, IResizeEvent, IEventListenerId, ITimer, IValue, IObject, IControl, IPointData, ILeaferType, ICursorType, IBoundsData, INumber, IZoomType, IZoomOptions, IFourNumber, IBounds, IClientPointData, ITransition } from '@leafer/interface'\nimport { AutoBounds, LayoutEvent, ResizeEvent, LeaferEvent, CanvasManager, ImageManager, Resource, DataHelper, Creator, Run, Debug, RenderEvent, registerUI, boundsType, canvasSizeAttrs, dataProcessor, WaitHelper, WatchEvent, Bounds, LeafList, Plugin, getBoundsData } from '@leafer/core'\n\nimport { ILeaferInputData, ILeaferData, IFunction, IUIInputData, ILeafer, IApp, IEditorBase } from '@leafer-ui/interface'\nimport { LeaferData } from '@leafer-ui/data'\n\nimport { Group } from './Group'\n\n\nconst debug = Debug.get('Leafer')\n\n@registerUI()\nexport class Leafer extends Group implements ILeafer {\n\n static list = new LeafList() // 所有leafer实例\n\n\n public get __tag() { return 'Leafer' }\n\n @dataProcessor(LeaferData)\n declare public __: ILeaferData\n\n @boundsType()\n declare public pixelRatio?: INumber\n\n public get isApp(): boolean { return false }\n public get app(): ILeafer { return this.parent || this }\n\n public get isLeafer(): boolean { return true }\n\n public parentApp?: IApp\n declare public parent?: IApp\n\n public running: boolean\n public created: boolean\n public ready: boolean\n public viewReady: boolean\n public viewCompleted: boolean\n public get imageReady(): boolean { return this.viewReady && Resource.isComplete }\n public get layoutLocked() { return !this.layouter.running }\n\n public transforming: boolean\n\n public view: unknown\n\n // manager\n public canvas: ILeaferCanvas\n public renderer: IRenderer\n\n public watcher: IWatcher\n public layouter: ILayouter\n\n public selector?: ISelector\n public interaction?: IInteraction\n\n public canvasManager: ICanvasManager\n public hitCanvasManager?: IHitCanvasManager\n\n // plugin\n public editor: IEditorBase\n\n public userConfig: ILeaferConfig\n public config: ILeaferConfig = {\n start: true,\n hittable: true,\n smooth: true,\n lazySpeard: 100,\n // pixelSnap: false // 是否对齐像素,避免图片存在浮点坐标导致模糊\n }\n\n public autoLayout?: IAutoBounds\n public lazyBounds: IBounds\n\n public get FPS(): number { return this.renderer ? this.renderer.FPS : 60 }\n public get cursorPoint(): IPointData { return (this.interaction && this.interaction.hoverData) || { x: this.width / 2, y: this.height / 2 } }\n public get clientBounds(): IBoundsData { return (this.canvas && this.canvas.getClientBounds(true)) || getBoundsData() }\n public leafs = 0\n\n public __eventIds: IEventListenerId[] = []\n protected __startTimer: ITimer\n protected __controllers: IControl[] = []\n\n protected __initWait: IFunction[] // assign in waitInit()\n protected __readyWait: IFunction[] = []\n protected __viewReadyWait: IFunction[] = []\n protected __viewCompletedWait: IFunction[] = []\n public __nextRenderWait: IFunction[] = []\n\n constructor(userConfig?: ILeaferConfig, data?: ILeaferInputData) {\n super(data)\n this.userConfig = userConfig\n if (userConfig && (userConfig.view || userConfig.width)) this.init(userConfig)\n Leafer.list.add(this)\n }\n\n public init(userConfig?: ILeaferConfig, parentApp?: IApp): void {\n if (this.canvas) return\n\n let start: boolean\n const { config } = this\n\n this.__setLeafer(this)\n\n if (parentApp) {\n this.parentApp = parentApp\n this.__bindApp(parentApp)\n start = parentApp.running\n }\n\n if (userConfig) {\n this.parent = parentApp\n this.initType(userConfig.type) // LeaferType\n this.parent = undefined\n DataHelper.assign(config, userConfig)\n }\n\n // render / layout\n const canvas = this.canvas = Creator.canvas(config)\n this.__controllers.push(\n this.renderer = Creator.renderer(this, canvas, config),\n this.watcher = Creator.watcher(this, config),\n this.layouter = Creator.layouter(this, config)\n )\n\n if (this.isApp) this.__setApp()\n this.__checkAutoLayout(config, parentApp)\n this.view = canvas.view\n\n // interaction / manager\n if (!parentApp) {\n this.selector = Creator.selector(this)\n this.interaction = Creator.interaction(this, canvas, this.selector, config)\n\n if (this.interaction) {\n this.__controllers.unshift(this.interaction)\n this.hitCanvasManager = Creator.hitCanvasManager()\n }\n\n this.canvasManager = new CanvasManager()\n\n start = config.start\n }\n\n this.hittable = config.hittable\n this.fill = config.fill\n this.canvasManager.add(canvas)\n\n\n this.__listenEvents()\n\n if (start) this.__startTimer = setTimeout(this.start.bind(this))\n\n WaitHelper.run(this.__initWait)\n this.onInit() // can rewrite init event\n }\n\n public onInit(): void { }\n\n public initType(_type: ILeaferType): void { } // rewrite in @leafer-ui/viewport\n\n public set(data: IUIInputData, transition?: ITransition | 'temp'): void {\n this.waitInit(() => { super.set(data, transition) })\n }\n\n public start(): void {\n clearTimeout(this.__startTimer)\n if (!this.running && this.canvas) {\n this.running = true\n this.ready ? this.emitLeafer(LeaferEvent.RESTART) : this.emitLeafer(LeaferEvent.START)\n this.__controllers.forEach(item => item.start())\n if (!this.isApp) this.renderer.render()\n }\n }\n\n public stop(): void {\n clearTimeout(this.__startTimer)\n if (this.running && this.canvas) {\n this.__controllers.forEach(item => item.stop())\n this.running = false\n this.emitLeafer(LeaferEvent.STOP)\n }\n }\n\n public unlockLayout(): void {\n this.layouter.start()\n this.updateLayout()\n }\n\n public lockLayout(): void {\n this.updateLayout()\n this.layouter.stop()\n }\n\n public resize(size: IScreenSizeData): void {\n const data = DataHelper.copyAttrs({}, size, canvasSizeAttrs)\n Object.keys(data).forEach(key => (this as any)[key] = data[key])\n }\n\n override forceRender(bounds?: IBoundsData, sync?: boolean): void {\n const { renderer } = this\n if (renderer) {\n renderer.addBlock(bounds ? new Bounds(bounds) : this.canvas.bounds)\n if (this.viewReady) sync ? renderer.render() : renderer.update()\n }\n }\n\n public requestRender(change = false): void {\n if (this.renderer) this.renderer.update(change)\n }\n\n public updateCursor(cursor?: ICursorType): void {\n const i = this.interaction\n if (i) cursor ? i.setCursor(cursor) : i.updateCursor()\n }\n\n public updateLazyBounds(): void {\n this.lazyBounds = this.canvas.bounds.clone().spread(this.config.lazySpeard)\n }\n\n protected __doResize(size: IScreenSizeData): void {\n const { canvas } = this\n if (!canvas || canvas.isSameSize(size)) return\n const old = DataHelper.copyAttrs({}, this.canvas, canvasSizeAttrs) as IScreenSizeData\n canvas.resize(size)\n this.updateLazyBounds()\n this.__onResize(new ResizeEvent(size, old))\n }\n\n protected __onResize(event: IResizeEvent): void {\n this.emitEvent(event)\n DataHelper.copyAttrs(this.__, event, canvasSizeAttrs)\n setTimeout(() => { if (this.canvasManager) this.canvasManager.clearRecycled() }, 0)\n }\n\n protected __setApp(): void { }\n\n protected __bindApp(app: IApp): void {\n this.selector = app.selector\n this.interaction = app.interaction\n\n this.canvasManager = app.canvasManager\n this.hitCanvasManager = app.hitCanvasManager\n }\n\n public __setLeafer(leafer: ILeafer): void {\n this.leafer = leafer\n this.__level = 1\n }\n\n protected __checkAutoLayout(config: ILeaferConfig, parentApp?: IApp): void {\n if (!parentApp) {\n if (!config.width || !config.height) this.autoLayout = new AutoBounds(config)\n this.canvas.startAutoLayout(this.autoLayout, this.__onResize.bind(this))\n }\n }\n\n override __setAttr(attrName: string, newValue: IValue): boolean {\n if (this.canvas) {\n if (canvasSizeAttrs.includes(attrName)) {\n // if (!newValue) debug.warn(attrName + ' is 0')\n this.__changeCanvasSize(attrName, newValue as number)\n } else if (attrName === 'fill') {\n this.__changeFill(newValue as string)\n } else if (attrName === 'hittable') {\n if (!this.parent) this.canvas.hittable = newValue as boolean\n } else if (attrName === 'zIndex') {\n this.canvas.zIndex = newValue as any\n setTimeout(() => this.parent && this.parent.__updateSortChildren())\n }\n }\n return super.__setAttr(attrName, newValue)\n }\n\n override __getAttr(attrName: string): IValue {\n if (this.canvas && canvasSizeAttrs.includes(attrName)) return this.canvas[attrName]\n return super.__getAttr(attrName)\n }\n\n protected __changeCanvasSize(attrName: string, newValue: number): void {\n const data = DataHelper.copyAttrs({}, this.canvas, canvasSizeAttrs)\n data[attrName] = (this.config as IObject)[attrName] = newValue\n if (newValue) this.canvas.stopAutoLayout()\n this.__doResize(data as IScreenSizeData)\n }\n\n protected __changeFill(newValue: string): void {\n this.config.fill = newValue as string\n if (this.canvas.allowBackgroundColor) this.canvas.backgroundColor = newValue as string\n else this.forceRender()\n }\n\n protected __onCreated(): void {\n this.created = true\n }\n\n protected __onReady(): void {\n this.ready = true\n this.emitLeafer(LeaferEvent.BEFORE_READY)\n this.emitLeafer(LeaferEvent.READY)\n this.emitLeafer(LeaferEvent.AFTER_READY)\n WaitHelper.run(this.__readyWait)\n }\n\n protected __onViewReady(): void {\n if (this.viewReady) return\n this.viewReady = true\n this.emitLeafer(LeaferEvent.VIEW_READY)\n WaitHelper.run(this.__viewReadyWait)\n }\n\n protected __onLayoutEnd(): void {\n const { grow, width: fixedWidth, height: fixedHeight } = this.config\n if (grow) {\n let { width, height, pixelRatio } = this\n const bounds = grow === 'box' ? this.worldBoxBounds : this.__world\n if (!fixedWidth) width = Math.max(1, bounds.x + bounds.width)\n if (!fixedHeight) height = Math.max(1, bounds.y + bounds.height)\n this.__doResize({ width, height, pixelRatio })\n }\n\n if (!this.ready) this.__onReady()\n }\n\n protected __onNextRender(): void {\n if (this.viewReady) {\n WaitHelper.run(this.__nextRenderWait)\n\n const { imageReady } = this\n if (imageReady && !this.viewCompleted) this.__checkViewCompleted()\n if (!imageReady) {\n this.viewCompleted = false\n this.requestRender()\n }\n } else this.requestRender() // fix: 小程序等需要异步获取 view 的情况\n }\n\n protected __checkViewCompleted(emit: boolean = true): void {\n this.nextRender(() => {\n if (this.imageReady) {\n if (emit) this.emitLeafer(LeaferEvent.VIEW_COMPLETED)\n WaitHelper.run(this.__viewCompletedWait)\n this.viewCompleted = true\n }\n })\n }\n\n protected __onWatchData(): void {\n if (this.watcher.childrenChanged && this.interaction) {\n this.nextRender(() => this.interaction.updateCursor())\n }\n }\n\n public waitInit(item: IFunction, bind?: IObject): void {\n if (bind) item = item.bind(bind)\n if (!this.__initWait) this.__initWait = [] // set() use\n this.canvas ? item() : this.__initWait.push(item)\n }\n\n public waitReady(item: IFunction, bind?: IObject): void {\n if (bind) item = item.bind(bind)\n this.ready ? item() : this.__readyWait.push(item)\n }\n\n public waitViewReady(item: IFunction, bind?: IObject): void {\n if (bind) item = item.bind(bind)\n this.viewReady ? item() : this.__viewReadyWait.push(item)\n }\n\n public waitViewCompleted(item: IFunction, bind?: IObject): void {\n if (bind) item = item.bind(bind)\n this.__viewCompletedWait.push(item)\n if (this.viewCompleted) this.__checkViewCompleted(false)\n else if (!this.running) this.start()\n }\n\n public nextRender(item: IFunction, bind?: IObject, off?: 'off'): void {\n if (bind) item = item.bind(bind)\n const list = this.__nextRenderWait\n if (off) {\n for (let i = 0; i < list.length; i++) {\n if (list[i] === item) { list.splice(i, 1); break }\n }\n } else list.push(item)\n this.requestRender()\n }\n\n // need view plugin\n public zoom(_zoomType: IZoomType, _optionsOrPadding?: IZoomOptions | IFourNumber, _scroll?: 'x' | 'y' | boolean, _transition?: ITransition): IBoundsData {\n return Plugin.need('view')\n }\n\n\n // interaction window rewrite\n public getValidMove(moveX: number, moveY: number): IPointData { return { x: moveX, y: moveY } }\n public getValidScale(changeScale: number): number { return changeScale }\n\n\n public getWorldPointByClient(clientPoint: IClientPointData, updateClient?: boolean): IPointData {\n return this.interaction && this.interaction.getLocal(clientPoint, updateClient)\n }\n\n public getPagePointByClient(clientPoint: IClientPointData, updateClient?: boolean): IPointData {\n return this.getPagePoint(this.getWorldPointByClient(clientPoint, updateClient))\n }\n\n public getClientPointByWorld(worldPoint: IPointData): IPointData {\n const { x, y } = this.clientBounds\n return { x: x + worldPoint.x, y: y + worldPoint.y }\n }\n\n public updateClientBounds(): void {\n this.canvas && this.canvas.updateClientBounds()\n }\n\n // miniapp rewrite\n public receiveEvent(_event: any): void { }\n\n protected emitLeafer(type: string): void {\n this.emitEvent(new LeaferEvent(type, this))\n }\n\n protected __listenEvents(): void {\n const runId = Run.start('FirstCreate ' + this.innerName)\n this.once([\n [LeaferEvent.START, () => Run.end(runId)],\n [LayoutEvent.START, this.updateLazyBounds, this],\n [RenderEvent.START, this.__onCreated, this],\n [RenderEvent.END, this.__onViewReady, this]\n ])\n this.__eventIds.push(\n this.on_([\n [WatchEvent.DATA, this.__onWatchData, this],\n [LayoutEvent.END, this.__onLayoutEnd, this],\n [RenderEvent.NEXT, this.__onNextRender, this]\n ])\n )\n }\n\n protected __removeListenEvents(): void {\n this.off_(this.__eventIds)\n }\n\n override destroy(sync?: boolean): void {\n const doDestory = () => {\n if (!this.destroyed) {\n Leafer.list.remove(this)\n try {\n this.stop()\n this.emitLeafer(LeaferEvent.END)\n this.__removeListenEvents()\n\n this.__controllers.forEach(item => !(this.parent && item === this.interaction) && item.destroy())\n this.__controllers.length = 0\n\n if (!this.parent) {\n if (this.selector) this.selector.destroy()\n if (this.hitCanvasManager) this.hitCanvasManager.destroy()\n this.canvasManager.destroy()\n }\n\n this.canvas.destroy()\n\n this.config.view = this.view = this.parentApp = null\n if (this.userConfig) this.userConfig.view = null\n\n super.destroy()\n\n setTimeout(() => { ImageManager.clearRecycled() }, 100)\n } catch (e) {\n debug.error(e)\n }\n }\n }\n sync ? doDestory() : setTimeout(doDestory)\n }\n}\n","import { dataProcessor, registerUI, rewriteAble, useModule } from '@leafer/core'\n\nimport { IRect, IRectInputData, IRectData } from '@leafer-ui/interface'\nimport { RectData } from '@leafer-ui/data'\nimport { RectRender } from '@leafer-ui/display-module'\n\nimport { UI } from './UI'\n\n\n@useModule(RectRender)\n@rewriteAble()\n@registerUI()\nexport class Rect extends UI implements IRect { // tip: rewrited Box\n\n public get __tag() { return 'Rect' }\n\n @dataProcessor(RectData)\n declare public __: IRectData\n\n constructor(data?: IRectInputData) {\n super(data)\n }\n\n}","import { ILeaferCanvas, IRenderOptions, IBoundsData, IBoolean, INumber } from '@leafer/interface'\nimport { rewrite, rewriteAble, registerUI, BoundsHelper, dataProcessor, affectRenderBoundsType, dataType, boundsType, DataHelper } from '@leafer/core'\n\nimport { IBox, IBoxData, IBoxInputData, IGroup, IOverflow } from '@leafer-ui/interface'\nimport { BoxData } from '@leafer-ui/data'\n\nimport { Group } from './Group'\nimport { Rect } from './Rect'\n\n\nconst { copy, add, includes } = BoundsHelper\nconst rect = Rect.prototype, group = Group.prototype\nconst childrenRenderBounds = {} as IBoundsData\n\n@rewriteAble()\n@registerUI()\nexport class Box extends Group implements IBox {\n\n public get __tag() { return 'Box' }\n\n public get isBranchLeaf(): boolean { return true }\n\n @dataProcessor(BoxData)\n declare public __: IBoxData\n\n // size\n @boundsType(100)\n declare public width?: INumber\n\n @boundsType(100)\n declare public height?: INumber\n\n @dataType(false)\n public resizeChildren?: IBoolean\n\n // @leafer-in/editor rewrite\n public textBox?: IBoolean\n\n @affectRenderBoundsType('show')\n declare public overflow?: IOverflow\n\n public isOverflow: boolean\n\n public scrollBar?: IGroup\n\n constructor(data?: IBoxInputData) {\n super(data)\n this.__layout.renderChanged || this.__layout.renderChange()\n }\n\n @rewrite(rect.__updateStrokeSpread)\n public __updateStrokeSpread(): number { return 0 }\n\n @rewrite(rect.__updateRenderSpread)\n public __updateRectRenderSpread(): number { return 0 }\n\n public __updateRenderSpread(): number { return this.__updateRectRenderSpread() || -1 }\n\n\n @rewrite(rect.__updateBoxBounds)\n public __updateRectBoxBounds(): void { }\n\n\n // @leafer-in/flow will rewrite\n public __updateBoxBounds(_secondLayout?: boolean): void {\n if (this.children.length && !this.pathInputed) {\n\n const data = this.__\n\n if (data.__autoSide) {\n\n if (data.__hasSurface) this.__extraUpdate() // Box自身存在样式,需要额外更新\n\n super.__updateBoxBounds()\n\n const { boxBounds } = this.__layout\n\n if (!data.__autoSize) {\n if (data.__autoWidth) {\n boxBounds.width += boxBounds.x, boxBounds.x = 0\n boxBounds.height = data.height, boxBounds.y = 0\n } else {\n boxBounds.height += boxBounds.y, boxBounds.y = 0\n boxBounds.width = data.width, boxBounds.x = 0\n }\n }\n\n this.__updateNaturalSize()\n\n } else this.__updateRectBoxBounds()\n\n } else this.__updateRectBoxBounds()\n }\n\n @rewrite(rect.__updateStrokeBounds)\n public __updateStrokeBounds(): void { }\n\n public __updateRenderBounds(): void {\n let isOverflow: boolean\n\n if (this.children.length) {\n const data = this.__, { renderBounds, boxBounds } = this.__layout\n\n super.__updateRenderBounds()\n copy(childrenRenderBounds, renderBounds)\n this.__updateRectRenderBounds()\n\n // 增加滚动逻辑\n if (data.scrollY || data.scrollX) {\n childrenRenderBounds.x += data.scrollX\n childrenRenderBounds.y += data.scrollY\n }\n\n isOverflow = !includes(boxBounds, childrenRenderBounds)\n if (isOverflow && data.overflow !== 'hide') add(renderBounds, childrenRenderBounds)\n } else this.__updateRectRenderBounds()\n\n DataHelper.stintSet(this, 'isOverflow', isOverflow)\n\n this.__updateScrollBar()\n }\n\n @rewrite(rect.__updateRenderBounds)\n public __updateRectRenderBounds(): void { }\n\n // need rewrite\n public __updateScrollBar(): void { }\n\n\n @rewrite(rect.__updateChange)\n public __updateRectChange(): void { }\n\n public __updateChange(): void {\n super.__updateChange()\n this.__updateRectChange()\n }\n\n\n @rewrite(rect.__render)\n public __renderRect(_canvas: ILeaferCanvas, _options: IRenderOptions): void { }\n\n @rewrite(group.__render)\n public __renderGroup(_canvas: ILeaferCanvas, _options: IRenderOptions): void { }\n\n\n public __render(canvas: ILeaferCanvas, options: IRenderOptions): void {\n if (this.__.__drawAfterFill) {\n this.__renderRect(canvas, options)\n } else {\n this.__renderRect(canvas, options)\n if (this.children.length) this.__renderGroup(canvas, options)\n }\n if (this.scrollBar) this.scrollBar.__render(canvas, options)\n }\n\n // in __drawAfterFill()\n public __drawContent(canvas: ILeaferCanvas, options: IRenderOptions): void {\n this.__renderGroup(canvas, options)\n\n if (this.__.__useStroke || this.__.__useEffect) { // 还原绘制路径\n canvas.setWorld(this.__nowWorld)\n this.__drawRenderPath(canvas)\n }\n }\n\n}\n","import { dataProcessor, registerUI, affectRenderBoundsType, surfaceType } from '@leafer/core'\n\nimport { IFrame, IFrameData, IFrameInputData, IFill, IOverflow } from '@leafer-ui/interface'\nimport { FrameData } from '@leafer-ui/data'\n\nimport { Box } from './Box'\n\n\n@registerUI()\nexport class Frame extends Box implements IFrame {\n\n public get __tag() { return 'Frame' }\n\n public get isFrame(): boolean { return true }\n\n @dataProcessor(FrameData)\n declare public __: IFrameData\n\n @surfaceType('#FFFFFF')\n declare public fill?: IFill\n\n @affectRenderBoundsType('hide')\n declare public overflow?: IOverflow\n\n constructor(data?: IFrameInputData) {\n super(data)\n }\n}\n","import { INumber } from '@leafer/interface'\nimport { PathCommandDataHelper, Platform, dataProcessor, pathType, registerUI } from '@leafer/core'\n\nimport { IEllipse, IEllipseInputData, IEllipseData } from '@leafer-ui/interface'\nimport { EllipseData } from '@leafer-ui/data'\n\nimport { UI } from './UI'\n\n\nconst { moveTo, closePath, ellipse } = PathCommandDataHelper\n\n@registerUI()\nexport class Ellipse extends UI implements IEllipse {\n\n public get __tag() { return 'Ellipse' }\n\n @dataProcessor(EllipseData)\n declare public __: IEllipseData\n\n @pathType(0)\n public innerRadius?: INumber\n\n @pathType(0)\n public startAngle?: INumber\n\n @pathType(0)\n public endAngle?: INumber\n\n constructor(data?: IEllipseInputData) {\n super(data)\n }\n\n public __updatePath(): void {\n\n const { width, height, innerRadius, startAngle, endAngle } = this.__\n const rx = width / 2, ry = height / 2\n\n const path: number[] = this.__.path = []\n\n if (innerRadius) {\n\n if (startAngle || endAngle) {\n if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false)\n ellipse(path, rx, ry, rx, ry, 0, endAngle, startAngle, true)\n if (innerRadius < 1) closePath(path)\n } else {\n if (innerRadius < 1) {\n ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius)\n moveTo(path, width, ry)\n }\n ellipse(path, rx, ry, rx, ry, 0, 360, 0, true)\n }\n\n // fix node\n if (Platform.ellipseToCurve) this.__.path = this.getPath(true)\n\n } else {\n\n if (startAngle || endAngle) {\n moveTo(path, rx, ry)\n ellipse(path, rx, ry, rx, ry, 0, startAngle, endAngle, false)\n closePath(path)\n } else {\n ellipse(path, rx, ry, rx, ry)\n }\n\n }\n\n }\n\n}","import { IPointData, INumber } from '@leafer/interface'\nimport { PathBounds, PathCommandDataHelper, PointHelper, boundsType, pathType, affectStrokeBoundsType, dataProcessor, registerUI, getPointData } from '@leafer/core'\n\nimport { ILine, ILineData, ILineInputData, IStrokeAlign } from '@leafer-ui/interface'\nimport { LineData } from '@leafer-ui/data'\n\nimport { UI } from './UI'\nimport { PathArrow } from '@leafer-ui/external'\n\n\nconst { moveTo, lineTo, drawPoints } = PathCommandDataHelper\nconst { rotate, getAngle, getDistance, defaultPoint } = PointHelper\nconst { toBounds } = PathBounds\n\n\n@registerUI()\nexport class Line extends UI implements ILine { // tip: rewrited Polygon\n\n public get __tag() { return 'Line' }\n\n @dataProcessor(LineData)\n declare public __: ILineData\n\n @affectStrokeBoundsType('center')\n declare public strokeAlign?: IStrokeAlign\n\n @boundsType(0)\n declare public height?: INumber\n\n @pathType()\n public points?: number[] | IPointData[]\n\n @pathType(0)\n public curve?: boolean | number\n\n @pathType(false)\n declare public closed?: boolean\n\n public get toPoint(): IPointData {\n const { width, rotation } = this.__\n const to: IPointData = getPointData()\n\n if (width) to.x = width\n if (rotation) rotate(to, rotation)\n\n return to\n }\n\n public set toPoint(value: IPointData) {\n this.width = getDistance(defaultPoint, value)\n this.rotation = getAngle(defaultPoint, value)\n if (this.height) this.height = 0\n }\n\n\n constructor(data?: ILineInputData) {\n super(data)\n }\n\n public __updatePath(): void {\n\n const data = this.__\n const path: number[] = data.path = []\n\n if (data.points) {\n\n drawPoints(path, data.points, false, data.closed)\n\n } else {\n\n moveTo(path, 0, 0)\n lineTo(path, this.width, 0)\n }\n\n }\n\n public __updateRenderPath(): void {\n const data = this.__\n if (!this.pathInputed && data.points && data.curve) {\n drawPoints(data.__pathForRender = [], data.points, data.curve, data.closed)\n if (data.__useArrow) PathArrow.addArrows(this, false)\n } else super.__updateRenderPath()\n }\n\n public __updateBoxBounds(): void {\n if (this.points) {\n toBounds(this.__.__pathForRender, this.__layout.boxBounds)\n } else super.__updateBoxBounds()\n }\n\n}","import { INumber, IPointData } from '@leafer/interface'\nimport { PathCommandDataHelper, dataProcessor, pathType, registerUI, rewrite, rewriteAble } from '@leafer/core'\n\nimport { IPolygon, IPolygonData, IPolygonInputData } from '@leafer-ui/interface'\nimport { PolygonData } from '@leafer-ui/data'\n\nimport { UI } from './UI'\nimport { Line } from './Line'\n\n\nconst { sin, cos, PI } = Math\nconst { moveTo, lineTo, closePath, drawPoints } = PathCommandDataHelper\nconst line = Line.prototype\n\n@rewriteAble()\n@registerUI()\nexport class Polygon extends UI implements IPolygon {\n\n public get __tag() { return 'Polygon' }\n\n @dataProcessor(PolygonData)\n declare public __: IPolygonData\n\n @pathType(3)\n public sides?: INumber\n\n @pathType()\n public points?: number[] | IPointData[]\n\n @pathType(0)\n public curve?: boolean | number\n\n constructor(data?: IPolygonInputData) {\n super(data)\n }\n\n public __updatePath(): void {\n\n const path: number[] = this.__.path = []\n\n if (this.__.points) {\n\n drawPoints(path, this.__.points, false, true)\n\n } else {\n\n const { width, height, sides } = this.__\n const rx = width / 2, ry = height / 2\n\n moveTo(path, rx, 0)\n\n for (let i = 1; i < sides; i++) {\n lineTo(path, rx + rx * sin((i * 2 * PI) / sides), ry - ry * cos((i * 2 * PI) / sides))\n }\n\n closePath(path)\n\n }\n\n }\n\n @rewrite(line.__updateRenderPath)\n public __updateRenderPath(): void { }\n\n @rewrite(line.__updateBoxBounds)\n public __updateBoxBounds(): void { }\n\n}","import { INumber } from '@leafer/interface'\nimport { PathCommandDataHelper, dataProcessor, pathType, registerUI } from '@leafer/core'\n\nimport { IStar, IStarData, IStarInputData } from '@leafer-ui/interface'\nimport { StarData } from '@leafer-ui/data'\n\nimport { UI } from './UI'\n\n\nconst { sin, cos, PI } = Math\nconst { moveTo, lineTo, closePath } = PathCommandDataHelper\n\n\n@registerUI()\nexport class Star extends UI implements IStar {\n\n public get __tag() { return 'Star' }\n\n @dataProcessor(StarData)\n declare public __: IStarData\n\n @pathType(5)\n public corners?: INumber\n\n @pathType(0.382)\n public innerRadius?: INumber\n\n constructor(data?: IStarInputData) {\n super(data)\n }\n\n public __updatePath() {\n\n const { width, height, corners, innerRadius } = this.__\n const rx = width / 2, ry = height / 2\n\n const path: number[] = this.__.path = []\n moveTo(path, rx, 0)\n\n for (let i = 1; i < corners * 2; i++) {\n lineTo(path, rx + (i % 2 === 0 ? rx : rx * innerRadius) * sin((i * PI) / corners), ry - (i % 2 === 0 ? ry : ry * innerRadius) * cos((i * PI) / corners))\n }\n\n closePath(path)\n\n }\n\n}","import { ILeaferImage, IString } from '@leafer/interface'\nimport { boundsType, dataProcessor, registerUI, isArray } from '@leafer/core'\n\nimport { IImage, IImageInputData, IImageData } from '@leafer-ui/interface'\nimport { ImageData } from '@leafer-ui/data'\n\nimport { Rect } from './Rect'\n\n\n@registerUI()\nexport class Image extends Rect implements IImage {\n\n public get __tag() { return 'Image' }\n\n @dataProcessor(ImageData)\n declare public __: IImageData\n\n @boundsType('')\n public url: IString\n\n public get ready(): boolean { const { image } = this; return image && image.ready }\n\n public get image(): ILeaferImage { const { fill } = this.__; return isArray(fill) && fill[0].image }\n\n constructor(data?: IImageInputData) {\n super(data)\n }\n\n}\n\nexport const MyImage = Image","import { ILeaferCanvas, ILeaferCanvasConfig, INumber, IRenderOptions, IPointData, ICanvasContext2D, ICanvasContext2DSettings, IScreenSizeData } from '@leafer/interface'\nimport { Creator, ImageEvent, LeaferImage, Matrix, dataProcessor, dataType, registerUI, isNumber } from '@leafer/core'\n\nimport { ICanvas, ICanvasData, ICanvasInputData, IUI } from '@leafer-ui/interface'\nimport { CanvasData } from '@leafer-ui/data'\nimport { resizeType } from '@leafer-ui/decorator'\n\nimport { Rect } from './Rect'\n\n\n@registerUI()\nexport class Canvas extends Rect implements ICanvas {\n\n public get __tag() { return 'Canvas' }\n\n @dataProcessor(CanvasData)\n declare public __: ICanvasData\n\n @resizeType(100)\n declare public width?: INumber\n\n @resizeType(100)\n declare public height?: INumber\n\n @resizeType(1)\n declare public pixelRatio?: INumber\n\n @resizeType(true)\n public smooth?: boolean\n\n @dataType(false)\n public safeResize?: boolean\n\n @resizeType()\n public contextSettings?: ICanvasContext2DSettings\n\n public canvas?: ILeaferCanvas\n\n public get context(): ICanvasContext2D { return this.canvas.context }\n\n public get ready(): boolean { return !this.url }\n\n public url?: string // 用于临时加载canvas的base64数据,完成后会置空\n\n constructor(data?: ICanvasInputData) {\n super(data)\n this.canvas = Creator.canvas(this.__ as ILeaferCanvasConfig)\n if (data && data.url) this.drawImage(data.url)\n }\n\n public drawImage(url: string): void {\n new LeaferImage({ url }).load((image: LeaferImage) => {\n this.context.drawImage(image.view, 0, 0)\n this.url = undefined\n this.paint()\n this.emitEvent(new ImageEvent(ImageEvent.LOADED, { image }))\n })\n }\n\n public draw(ui: IUI, offset?: IPointData, scale?: number | IPointData, rotation?: number): void {\n const matrix = new Matrix(ui.worldTransform).invert()\n\n const m = new Matrix()\n if (offset) m.translate(offset.x, offset.y)\n if (scale) isNumber(scale) ? m.scale(scale) : m.scale(scale.x, scale.y)\n if (rotation) m.rotate(rotation)\n matrix.multiplyParent(m)\n\n ui.__render(this.canvas, { matrix: matrix.withScale() })\n this.paint()\n }\n\n public paint(): void {\n this.forceRender()\n }\n\n // in __drawAfterFill()\n public __drawContent(canvas: ILeaferCanvas, _options: IRenderOptions): void {\n const { width, height } = this.__, { view } = this.canvas\n canvas.drawImage(view, 0, 0, view.width, view.height, 0, 0, width, height)\n }\n\n public __updateSize(): void {\n const { canvas } = this\n if (canvas) {\n const { smooth, safeResize } = this.__\n canvas.resize(this.__ as IScreenSizeData, safeResize)\n if (canvas.smooth !== smooth) canvas.smooth = smooth\n }\n }\n\n public destroy(): void {\n if (this.canvas) {\n this.canvas.destroy()\n this.canvas = null\n }\n super.destroy()\n }\n\n}","import { ILeaferCanvas, IBoolean, INumber, IString, IBoundsData, IUnitData, IRenderOptions } from '@leafer/interface'\nimport { BoundsHelper, boundsType, surfaceType, dataProcessor, registerUI, affectStrokeBoundsType, dataType, hitType, MathHelper, DataHelper } from '@leafer/core'\n\nimport { IFill, IText, IFontWeight, ITextCase, ITextDecoration, ITextData, ITextInputData, ITextAlign, IVerticalAlign, ITextDrawData, IOverflow, IStrokeAlign, IHitType, ITextWrap, IWritingMode, IBackgroundBoxStyle } from '@leafer-ui/interface'\nimport { TextData } from '@leafer-ui/data'\n\nimport { TextConvert, UnitConvert } from '@leafer-ui/external'\n\nimport { UI } from './UI'\n\n\nconst { copyAndSpread, includes, spread, setList } = BoundsHelper\n\n@registerUI()\nexport class Text extends UI implements IText {\n\n public get __tag() { return 'Text' }\n\n @dataProcessor(TextData)\n declare public __: ITextData\n\n // size\n @boundsType(0)\n declare public width?: INumber\n\n @boundsType(0)\n declare public height?: INumber\n\n @surfaceType()\n public boxStyle: IBackgroundBoxStyle\n\n @dataType(false)\n public resizeFontSize?: IBoolean\n\n @surfaceType('#000000')\n declare public fill?: IFill\n\n @affectStrokeBoundsType('outside')\n declare public strokeAlign?: IStrokeAlign\n\n @hitType('all')\n declare public hitFill?: IHitType\n\n @boundsType('')\n public text?: IString | INumber\n\n @boundsType('')\n public placeholder?: IString\n\n @boundsType('caption')\n public fontFamily?: IString\n\n @boundsType(12)\n public fontSize?: INumber\n\n @boundsType('normal')\n public fontWeight?: IFontWeight\n\n @boundsType(false)\n public italic?: IBoolean\n\n @boundsType('none')\n public textCase?: ITextCase\n\n @boundsType('none')\n public textDecoration?: ITextDecoration\n\n @boundsType(0)\n public letterSpacing?: INumber | IUnitData\n\n @boundsType({ type: 'percent', value: 1.5 } as IUnitData)\n public lineHeight?: INumber | IUnitData\n\n @boundsType(0)\n public paraIndent?: INumber\n\n @boundsType(0)\n public paraSpacing?: INumber\n\n @boundsType('x')\n public writingMode?: IWritingMode\n\n @boundsType('left')\n public textAlign?: ITextAlign\n\n @boundsType('top')\n public verticalAlign?: IVerticalAlign\n\n @boundsType(true)\n public autoSizeAlign?: IBoolean\n\n @boundsType('normal')\n public textWrap?: ITextWrap\n\n @boundsType('show')\n public textOverflow?: IOverflow | string\n\n @surfaceType(false)\n public textEditing: boolean\n\n public isOverflow: boolean\n\n public get textDrawData(): ITextDrawData { this.updateLayout(); return this.__.__textDrawData }\n\n\n constructor(data?: ITextInputData) {\n super(data)\n }\n\n public __updateTextDrawData(): void {\n const data = this.__\n const { lineHeight, letterSpacing, fontFamily, fontSize, fontWeight, italic, textCase, textOverflow, padding } = data\n\n data.__lineHeight = UnitConvert.number(lineHeight, fontSize)\n data.__letterSpacing = UnitConvert.number(letterSpacing, fontSize)\n data.__padding = padding ? MathHelper.fourNumber(padding) : undefined\n data.__baseLine = data.__lineHeight - (data.__lineHeight - fontSize * 0.7) / 2 // 基线位置\n data.__font = `${italic ? 'italic ' : ''}${textCase === 'small-caps' ? 'small-caps ' : ''}${fontWeight !== 'normal' ? fontWeight + ' ' : ''}${fontSize || 12}px ${fontFamily || 'caption'}`\n data.__clipText = textOverflow !== 'show' && !data.__autoSize\n\n data.__textDrawData = TextConvert.getDrawData((data.__isPlacehold = data.placeholder && data.text === '') ? data.placeholder : data.text, this.__)\n }\n\n override __updateBoxBounds(): void {\n\n const data = this.__\n const layout = this.__layout\n const { fontSize, italic, padding, __autoWidth: autoWidth, __autoHeight: autoHeight } = data\n\n this.__updateTextDrawData() // layout text\n\n const { bounds: contentBounds } = data.__textDrawData\n const b = layout.boxBounds\n\n layout.contentBounds = contentBounds\n\n if (data.__lineHeight < fontSize) spread(contentBounds, fontSize / 2)\n\n if (autoWidth || autoHeight) {\n b.x = autoWidth ? contentBounds.x : 0\n b.y = autoHeight ? contentBounds.y : 0\n b.width = autoWidth ? contentBounds.width : data.width\n b.height = autoHeight ? contentBounds.height : data.height\n\n if (padding) {\n const [top, right, bottom, left] = data.__padding\n if (autoWidth) b.x -= left, b.width += (right + left)\n if (autoHeight) b.y -= top, b.height += (bottom + top)\n }\n this.__updateNaturalSize()\n } else super.__updateBoxBounds()\n\n if (italic) b.width += fontSize * 0.16 // 倾斜会导致文本的bounds增大\n\n DataHelper.stintSet(this, 'isOverflow', !includes(b, contentBounds))\n\n if (this.isOverflow) setList(data.__textBoxBounds = {} as IBoundsData, [b, contentBounds]), layout.renderChanged = true\n else data.__textBoxBounds = b\n }\n\n override __onUpdateSize(): void {\n if (this.__box) this.__box.__onUpdateSize()\n super.__onUpdateSize()\n }\n\n override __updateRenderSpread(): number {\n let width = super.__updateRenderSpread()\n if (!width) width = this.isOverflow ? 1 : 0\n return width\n }\n\n override __updateRenderBounds(): void {\n const { renderBounds, renderSpread } = this.__layout\n copyAndSpread(renderBounds, this.__.__textBoxBounds, renderSpread)\n if (this.__box) this.__box.__layout.renderBounds = renderBounds\n }\n\n override __drawRenderPath(canvas: ILeaferCanvas): void {\n canvas.font = this.__.__font\n }\n\n override __draw(canvas: ILeaferCanvas, options: IRenderOptions, originCanvas?: ILeaferCanvas): void {\n const box = this.__box\n if (box) box.__nowWorld = this.__nowWorld, box.__draw(canvas, options, originCanvas)\n if (this.textEditing && !options.exporting) return\n super.__draw(canvas, options, originCanvas)\n }\n\n override __drawShape(canvas: ILeaferCanvas, options: IRenderOptions): void {\n if (options.shape) this.__box && this.__box.__drawShape(canvas, options)\n super.__drawShape(canvas, options)\n }\n\n override destroy(): void {\n if (this.boxStyle) this.boxStyle = null\n super.destroy()\n }\n\n}","import { dataProcessor, affectStrokeBoundsType, registerUI } from '@leafer/core'\n\nimport { IPath, IPathData, IPathInputData, IStrokeAlign } from '@leafer-ui/interface'\nimport { PathData } from '@leafer-ui/data'\n\nimport { UI } from './UI'\n\n\n@registerUI()\nexport class Path extends UI implements IPath {\n\n public get __tag() { return 'Path' }\n\n @dataProcessor(PathData)\n declare public __: IPathData\n\n @affectStrokeBoundsType('center')\n declare public strokeAlign?: IStrokeAlign\n\n constructor(data?: IPathInputData) {\n super(data)\n }\n\n}","import { PathCreator, dataProcessor, defineKey, registerUI, useModule } from '@leafer/core'\n\nimport { IPenData, IPenInputData, IPathInputData, IPathCommandData, IPath, IPen, IPointData } from '@leafer-ui/interface'\nimport { PenData } from '@leafer-ui/data'\n\nimport { Group } from './Group'\nimport { Path } from './Path'\n\n@useModule(PathCreator, ['set', 'path', 'paint'])\n@registerUI()\nexport class Pen extends Group implements IPen {\n\n public get __tag() { return 'Pen' }\n\n @dataProcessor(PenData)\n declare public __: IPenData\n\n public pathElement: IPath\n public pathStyle: IPathInputData\n\n @penPathType()\n declare public path: IPathCommandData // use __path, readonly\n\n public __path: IPathCommandData\n\n constructor(data?: IPenInputData) {\n super(data)\n }\n\n public setStyle(data: IPathInputData): Pen {\n const path = this.pathElement = new Path(data)\n this.pathStyle = data\n this.__path = path.path as IPathCommandData || (path.path = [])\n this.add(path)\n return this\n }\n\n // svg and canvas\n\n public beginPath(): Pen { return this }\n\n public moveTo(_x: number, _y: number): Pen { return this }\n\n public lineTo(_x: number, _y: number): Pen { return this }\n\n public bezierCurveTo(_x1: number, _y1: number, _x2: number, _y2: number, _x: number, _y: number): Pen { return this }\n\n public quadraticCurveTo(_x1: number, _y1: number, _x: number, _y: number): Pen { return this }\n\n public closePath(): Pen { return this }\n\n\n // canvas\n\n public rect(_x: number, _y: number, _width: number, _height: number): Pen { return this }\n\n public roundRect(_x: number, _y: number, _width: number, _height: number, _cornerRadius: number | number[]): Pen { return this }\n\n public ellipse(_x: number, _y: number, _radiusX: number, _radiusY: number, _rotation?: number, _startAngle?: number, _endAngle?: number, _anticlockwise?: boolean): Pen { return this }\n\n public arc(_x: number, _y: number, _radius: number, _startAngle?: number, _endAngle?: number, _anticlockwise?: boolean): Pen { return this }\n\n public arcTo(_x1: number, _y1: number, _x2: number, _y2: number, _radius: number): Pen { return this }\n\n\n // moveTo, then draw\n\n public drawEllipse(_x: number, _y: number, _radiusX: number, _radiusY: number, _rotation?: number, _startAngle?: number, _endAngle?: number, _anticlockwise?: boolean): Pen { return this }\n\n public drawArc(_x: number, _y: number, _radius: number, _startAngle?: number, _endAngle?: number, _anticlockwise?: boolean): Pen { return this }\n\n public drawPoints(_points: number[] | IPointData[], _curve?: boolean | number, _close?: boolean): Pen { return this }\n\n public clearPath(): Pen { return this } // = beginPath()\n\n\n public paint(): void {\n if (!this.pathElement.__layout.boxChanged) this.pathElement.forceUpdate('path')\n }\n\n}\n\nfunction penPathType() {\n return (target: IPen, key: string) => {\n defineKey(target, key, {\n get() { return this.__path }\n })\n }\n}"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","effectType","defaultValue","decorateLeafAttr","attr","set","value","this","__setAttr","__","__useEffect","__layout","renderChanged","renderChange","resizeType","boxChanged","boxChange","__updateSize","zoomLayerType","privateKey","defineKey","isLeafer","get","isApp","tree","zoomLayer","leafer","SuppressedError","TextConvert","ColorConvert","color","first","lastIndexOf","parseFloat","slice","UnitConvert","number","percentRefer","isObject","type","PathArrow","Paint","PaintImage","Effect","Filter","apply","Plugin","need","Export","State","setStyleName","Transition","list","register","attrName","fn","parse","objectToCanvasData","PathConvert","stintSet","DataHelper","hasTransparent","emptyPaint","debug","Debug","UIData","LeafData","scale","scaleX","scaleY","x","y","__strokeWidth","__getRealStrokeWidth","__maxStrokeWidth","t","__hasMultiStrokeStyle","Math","max","strokeWidth","__hasMultiPaint","fill","__useStroke","__isFills","__isStrokes","stroke","__clipAfterFill","cornerRadius","innerShadow","__pathInputed","__hasSurface","__autoWidth","_width","__autoHeight","_height","__autoSide","__autoSize","setVisible","_visible","__leaf","watcher","hasVisible","setWidth","warn","setHeight","setFill","__naturalWidth","__removeNaturalSize","isString","__removePaint","_fill","__setPaint","setStroke","_stroke","setPath","isStr","__setInput","_path","__input","__removeInput","setShadow","setArray","setInnerShadow","setFilter","__computePaint","compute","__needComputePaint","undefined","childStyle","strokeWidthFixed","isUndefined","getClampRenderScale","layout","isArray","removeInput","recycleImage","data","some","item","visible","filter","GroupData","BoxData","__boxStroke","__drawAfterFill","__single","overflow","children","isOverflow","super","LeaferData","__getInputData","names","options","canvasSizeAttrs","forEach","FrameData","LineData","RectData","EllipseData","PolygonData","StarData","PathData","PenData","fontWeightMap","thin","light","normal","medium","bold","black","TextData","__useNaturalRatio","setFontWeight","_fontWeight","setBoxStyle","box","__box","boxStyle","UICreator","boxLayout","parent","__world","boxBounds","strokeChanged","strokeChange","__updateChange","destroy","_boxStyle","ImageData","setUrl","__setImageFill","_url","mode","url","__getData","CanvasData","__isCanvas","canvas","toDataURL","UIBounds","__updateStrokeSpread","width","boxWidth","strokeAlign","hitStroke","miterLimitAddWidth","__isLinePath","storkeCapAddWidth","strokeCap","__useArrow","strokeSpread","strokeBoxSpread","__updateRenderSpread","shadow","blur","backgroundBlur","renderSpread","abs","spread","getSpread","shapeWidth","ceil","renderShapeSpread","UIRender","useStroke","__isTransparentFill","otherEffect","useFastShadow","__checkSingle","__drawFast","drawFast","__draw","originCanvas","__complex","__fillAfterStroke","__isFastShadow","__drawRenderPath","shape","__nowWorld","__getNowWorld","strokes","fills","worldCanvas","recycle","getRenderScaleData","scaleFixed","save","setWorldShadow","string","restore","__drawShape","ignoreFill","__isAlphaPixelFill","ignoreStroke","__isAlphaPixelStroke","clipUI","__drawContent","ui","RectRender","height","fillStyle","fillRect","half","strokeRect","__clip","UI","UI_1","Leaf","app","isFrame","MathHelper","assignScale","isAutoWidth","autoWidth","isAutoHeight","autoHeight","pen","path","__drawPathByBox","constructor","reset","_data","transition","lockNormalStyle","assign","animate","name","__getInput","createProxyData","find","_condition","_options","findTag","tag","findOne","findId","id","getPath","curve","pathForRender","update","__pathForRender","toCanvasData","getPathString","floatLength","stringify","load","__onUpdateSize","lazy","__inLazyBounds","running","__updateRenderPath","PathCorner","smooth","cornerSmoothing","addArrows","beginPath","__drawPathByData","__drawPath","drawer","PathDrawer","drawPathByData","roundRect","isNumber","rect","drawImagePlaceholder","_image","placeholderColor","_keyframe","_type","_isTemp","killAnimate","_nextStyle","_filename","syncExport","clone","json","toJSON","one","prototype","__tag","registerUI","registerData","dataProcessor","setEditConfig","_config","setEditOuter","_toolName","setEditInner","_editorName","__animate","dataType","surfaceType","opacityType","visibleType","sortType","maskType","eraserType","positionType","boundsType","scaleType","rotationType","autoLayoutType","naturalBoundsType","affectRenderBoundsType","pathInputType","pathType","hitType","strokeType","cursorType","rewrite","useModule","rewriteAble","Group","isBranch","__setBranch","clear","child","add","childlessJSON","map","pick","_hitPoint","addAt","index","addAfter","after","indexOf","addBefore","before","_child","_index","addMany","_children","remove","_destroy","removeAll","Branch","Leafer","Leafer_1","imageReady","viewReady","Resource","isComplete","layoutLocked","layouter","FPS","renderer","cursorPoint","interaction","hoverData","clientBounds","getClientBounds","getBoundsData","userConfig","config","start","hittable","lazySpeard","leafs","__eventIds","__controllers","__readyWait","__viewReadyWait","__viewCompletedWait","__nextRenderWait","view","init","parentApp","__setLeafer","__bindApp","initType","Creator","push","__setApp","__checkAutoLayout","selector","unshift","hitCanvasManager","canvasManager","CanvasManager","__listenEvents","__startTimer","setTimeout","bind","WaitHelper","run","__initWait","onInit","waitInit","clearTimeout","ready","emitLeafer","LeaferEvent","RESTART","START","render","stop","STOP","unlockLayout","updateLayout","lockLayout","resize","size","copyAttrs","keys","forceRender","bounds","sync","addBlock","Bounds","requestRender","change","updateCursor","cursor","setCursor","updateLazyBounds","lazyBounds","__doResize","isSameSize","old","__onResize","ResizeEvent","event","emitEvent","clearRecycled","__level","autoLayout","AutoBounds","startAutoLayout","newValue","includes","__changeCanvasSize","__changeFill","zIndex","__updateSortChildren","__getAttr","stopAutoLayout","allowBackgroundColor","backgroundColor","__onCreated","created","__onReady","BEFORE_READY","READY","AFTER_READY","__onViewReady","VIEW_READY","__onLayoutEnd","grow","fixedWidth","fixedHeight","pixelRatio","worldBoxBounds","__onNextRender","viewCompleted","__checkViewCompleted","emit","nextRender","VIEW_COMPLETED","__onWatchData","childrenChanged","waitReady","waitViewReady","waitViewCompleted","off","splice","zoom","_zoomType","_optionsOrPadding","_scroll","_transition","getValidMove","moveX","moveY","getValidScale","changeScale","getWorldPointByClient","clientPoint","updateClient","getLocal","getPagePointByClient","getPagePoint","getClientPointByWorld","worldPoint","updateClientBounds","receiveEvent","_event","runId","Run","innerName","once","end","LayoutEvent","RenderEvent","END","on_","WatchEvent","DATA","NEXT","__removeListenEvents","off_","doDestory","destroyed","ImageManager","e","error","LeafList","Rect","copy","BoundsHelper","group","childrenRenderBounds","Box","isBranchLeaf","__updateRectRenderSpread","__updateRectBoxBounds","__updateBoxBounds","_secondLayout","pathInputed","__extraUpdate","__updateNaturalSize","__updateStrokeBounds","__updateRenderBounds","renderBounds","__updateRectRenderBounds","scrollY","scrollX","__updateScrollBar","__updateRectChange","__renderRect","_canvas","__renderGroup","__render","scrollBar","setWorld","Frame","moveTo","closePath","ellipse","PathCommandDataHelper","Ellipse","__updatePath","innerRadius","startAngle","endAngle","rx","ry","Platform","ellipseToCurve","lineTo","drawPoints","rotate","getAngle","getDistance","defaultPoint","PointHelper","toBounds","PathBounds","Line","toPoint","rotation","to","getPointData","points","closed","affectStrokeBoundsType","sin","cos","PI","line","Polygon","sides","Star","corners","Image","image","MyImage","Canvas","context","drawImage","LeaferImage","paint","ImageEvent","LOADED","draw","offset","matrix","Matrix","worldTransform","invert","m","translate","multiplyParent","withScale","safeResize","copyAndSpread","setList","Text","textDrawData","__textDrawData","__updateTextDrawData","lineHeight","letterSpacing","fontFamily","fontSize","fontWeight","italic","textCase","textOverflow","padding","__lineHeight","__letterSpacing","__padding","fourNumber","__baseLine","__font","__clipText","getDrawData","__isPlacehold","placeholder","text","contentBounds","b","top","right","bottom","left","__textBoxBounds","font","textEditing","exporting","Path","Pen","setStyle","pathElement","pathStyle","__path","_x","_y","bezierCurveTo","_x1","_y1","_x2","_y2","quadraticCurveTo","_cornerRadius","_radiusX","_radiusY","_rotation","_startAngle","_endAngle","_anticlockwise","arc","_radius","arcTo","drawEllipse","drawArc","_points","_curve","_close","clearPath","forceUpdate","PathCreator","createDescriptor"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"draw.min.cjs","sources":["../../../../../../node_modules/.pnpm/@rollup+plugin-typescript@11.1.6_rollup@4.44.2_tslib@2.8.1_typescript@5.8.3/node_modules/tslib/tslib.es6.js","../../../../../../../src/ui/packages/decorator/src/data.ts","../../../../../../../src/ui/packages/external/src/index.ts","../../../../../../../src/ui/packages/external/src/color.ts","../../../../../../../src/ui/packages/display-module/data/src/UIData.ts","../../../../../../../src/ui/packages/display-module/data/src/GroupData.ts","../../../../../../../src/ui/packages/display-module/data/src/BoxData.ts","../../../../../../../src/ui/packages/display-module/data/src/LeaferData.ts","../../../../../../../src/ui/packages/display-module/data/src/FrameData.ts","../../../../../../../src/ui/packages/display-module/data/src/LineData.ts","../../../../../../../src/ui/packages/display-module/data/src/RectData.ts","../../../../../../../src/ui/packages/display-module/data/src/EllipseData.ts","../../../../../../../src/ui/packages/display-module/data/src/PolygonData.ts","../../../../../../../src/ui/packages/display-module/data/src/StarData.ts","../../../../../../../src/ui/packages/display-module/data/src/PathData.ts","../../../../../../../src/ui/packages/display-module/data/src/PenData.ts","../../../../../../../src/ui/packages/display-module/data/src/TextData.ts","../../../../../../../src/ui/packages/display-module/data/src/ImageData.ts","../../../../../../../src/ui/packages/display-module/data/src/CanvasData.ts","../../../../../../../src/ui/packages/display-module/bounds/src/UIBounds.ts","../../../../../../../src/ui/packages/display-module/bounds/src/DragBoundsHelper.ts","../../../../../../../src/ui/packages/display-module/render/src/UIRender.ts","../../../../../../../src/ui/packages/display-module/render/src/RectRender.ts","../../../../../../../src/ui/packages/display/src/UI.ts","../../../../../../../src/ui/packages/display/src/Group.ts","../../../../../../../src/ui/packages/display/src/Leafer.ts","../../../../../../../src/ui/packages/display/src/Rect.ts","../../../../../../../src/ui/packages/display/src/Box.ts","../../../../../../../src/ui/packages/display/src/Frame.ts","../../../../../../../src/ui/packages/display/src/Ellipse.ts","../../../../../../../src/ui/packages/display/src/Line.ts","../../../../../../../src/ui/packages/display/src/Polygon.ts","../../../../../../../src/ui/packages/display/src/Star.ts","../../../../../../../src/ui/packages/display/src/Image.ts","../../../../../../../src/ui/packages/display/src/Canvas.ts","../../../../../../../src/ui/packages/display/src/Text.ts","../../../../../../../src/ui/packages/display/src/Path.ts","../../../../../../../src/ui/packages/display/src/Pen.ts"],"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 Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n 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 return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(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\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(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 return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(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\nexport function __decorate(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\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(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\nexport function __generator(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 = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"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 (g && (g = 0, op[0] && (_ = 0)), _) 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\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\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\nexport function __exportStar(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\nexport function __values(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\nexport function __read(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\nexport function __spread() {\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\nexport function __spreadArrays() {\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\nexport function __spreadArray(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 || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(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 = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\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\nexport function __asyncDelegator(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: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(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\nexport function __makeTemplateObject(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\nvar __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\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(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\nexport function __classPrivateFieldSet(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\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { IValue, IObject } from '@leafer/interface'\nimport { defineKey, decorateLeafAttr, attr, createDescriptor } from '@leafer/core'\n\nimport { ICanvas, IUI, IApp } from '@leafer-ui/interface'\n\n\nexport function effectType(defaultValue?: IValue) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: IValue) {\n this.__setAttr(key, value)\n if (value) (this as IUI).__.__useEffect = true\n this.__layout.renderChanged || this.__layout.renderChange()\n }\n }))\n}\n\nexport function resizeType(defaultValue?: IValue) {\n return decorateLeafAttr(defaultValue, (key: string) => attr({\n set(value: IValue) {\n this.__setAttr(key, value)\n this.__layout.boxChanged || this.__layout.boxChange();\n (this as ICanvas).__updateSize()\n }\n }))\n}\n\nexport function zoomLayerType() {\n return (target: IUI, key: string) => {\n const privateKey = '_' + key\n defineKey(target, key, {\n set(value: IUI) { if (this.isLeafer) (this as IObject)[privateKey] = value },\n get() {\n return this.isApp\n ? (this as IApp).tree.zoomLayer\n : (this.isLeafer ? ((this as IObject)[privateKey] || this) : this.leafer && this.leafer.zoomLayer)\n }\n })\n }\n}\n\nexport function createAttr(defaultValue?: IValue) {\n return (target: IUI, key: string) => {\n defineKey(target, key, createDescriptor(key, defaultValue))\n }\n}","// Implemented in partner\nimport { IPaintModule, IPaintImageModule, IPaintGradientModule, IEffectModule, ITextConvertModule, IExportModule, IColorConvertModule, IPathArrowModule, IStateModule, IUnitData, ITransitionModule, ITransitionFunction, IFilterModule } from \"@leafer-ui/interface\"\nimport { Plugin, isObject } from '@leafer/core'\nimport { hasTransparent } from './color'\n\n\nexport const TextConvert = {} as ITextConvertModule\n\nexport const ColorConvert = {\n hasTransparent\n} as IColorConvertModule\n\nexport const UnitConvert = {\n number(value: number | IUnitData, percentRefer?: number): number {\n return isObject(value) ? (value.type === 'percent' ? value.value * percentRefer : value.value) : value\n }\n}\n\n\nexport const PathArrow = {} as IPathArrowModule\n\n\nexport const Paint = {} as IPaintModule\n\nexport const PaintImage = {} as IPaintImageModule\n\nexport const PaintGradient = {} as IPaintGradientModule\n\nexport const Effect = {} as IEffectModule\n\nexport const Filter = {\n apply(): void { Plugin.need('filter') }\n} as unknown as IFilterModule\n\nexport const Export = {} as IExportModule\n\nexport const State = {\n setStyleName(): void { return Plugin.need('state') },\n set(): void { return Plugin.need('state') }\n} as unknown as IStateModule\n\nexport const Transition = {\n list: {},\n register(attrName: string, fn: ITransitionFunction): void { Transition.list[attrName] = fn },\n get(attrName: string): ITransitionFunction { return Transition.list[attrName] }\n} as ITransitionModule","export function hasTransparent(color?: string): boolean {\n\n if (!color || color.length === 7 || color.length === 4) return false\n if (color === 'transparent') return true // transparent keyword\n\n const first = color[0]\n\n if (first === '#') {\n\n // hex\n switch (color.length) {\n case 5: return color[4] !== 'f' && color[4] !== 'F' // #RGBA\n case 9: return (color[7] !== 'f' && color[7] !== 'F') || (color[8] !== 'f' && color[8] !== 'F') // #RRGGBBAA\n }\n\n } else if (first === 'r' || first === 'h') {\n\n // rgba(...) or hsla(...)\n if (color[3] === 'a') {\n const i = color.lastIndexOf(',')\n if (i > -1) return parseFloat(color.slice(i + 1)) < 1\n }\n\n }\n\n return false\n\n}","import { INumber, IValue, IBoolean, IPathCommandData, IPathString, IPointData, IPathCommandObject, IObject, IFilter } from '@leafer/interface'\nimport { PathConvert, DataHelper, LeafData, Debug, isArray, isObject, isString, isUndefined } from '@leafer/core'\n\nimport { IUI, IUIData, ILeafPaint, IStrokeComputedStyle } from '@leafer-ui/interface'\nimport { Paint, PaintImage, ColorConvert } from '@leafer-ui/external'\n\n\nconst { parse, objectToCanvasData } = PathConvert\nconst { stintSet } = DataHelper, { hasTransparent } = ColorConvert\nconst emptyPaint: ILeafPaint = {}\nconst debug = Debug.get('UIData')\nexport class UIData extends LeafData implements IUIData {\n\n declare public __leaf: IUI\n\n public get scale(): INumber | IPointData { const { scaleX, scaleY } = this as IUIData; return scaleX !== scaleY ? { x: scaleX, y: scaleY } : scaleX }\n\n public __blendLayer?: boolean // 非元素属性必须以两个下划线开头\n\n public __isFills?: boolean\n public __isStrokes?: boolean\n\n public get __strokeWidth(): number { return this.__getRealStrokeWidth() }\n\n public get __maxStrokeWidth(): number { const t = this as IUIData; return t.__hasMultiStrokeStyle ? Math.max(t.__hasMultiStrokeStyle, t.strokeWidth) : t.strokeWidth }\n\n public __hasMultiStrokeStyle?: number // 是否存在多个不同的描述样式(同时存储多个描边样式中的最大宽度用于运算)\n\n public get __hasMultiPaint(): boolean { const t = this as IUIData; return (t.fill && this.__useStroke) || (t.__isFills && t.fill.length > 1) || (t.__isStrokes && t.stroke.length > 1) || t.__useEffect } // fix: opacity\n\n public __isAlphaPixelFill?: boolean // png / svg / webp\n public __isAlphaPixelStroke?: boolean\n\n public __isTransparentFill?: boolean // 半透明的 \n public __isTransparentStroke?: boolean\n\n public get __clipAfterFill(): boolean { const t = this as IUIData; return (t.cornerRadius || t.innerShadow || t.__pathInputed) as unknown as boolean } // 用于 (Box | Canvas | Robot) __drawAfterFill() 时裁剪内容\n public get __hasSurface(): boolean { const t = this as IUIData; return (t.fill || t.stroke) as unknown as boolean }\n\n public __needComputePaint: boolean\n\n protected _visible?: IBoolean\n\n protected _width?: INumber\n protected _height?: INumber\n\n protected _fill?: IValue\n protected _stroke?: IValue\n\n protected _path: IPathCommandData\n\n protected _shadow?: IValue\n protected _innerShadow?: IValue\n\n public get __autoWidth() { return !this._width }\n public get __autoHeight() { return !this._height }\n public get __autoSide() { return !this._width || !this._height }\n public get __autoSize() { return !this._width && !this._height }\n\n\n protected setVisible(value: IBoolean) {\n this._visible = value\n\n const { leafer } = this.__leaf\n if (leafer) leafer.watcher.hasVisible = true\n }\n\n protected setWidth(value: INumber) {\n if (value < 0) {\n this._width = -value\n this.__leaf.scaleX *= -1\n debug.warn('width < 0, instead -scaleX ', this)\n } else this._width = value\n }\n\n protected setHeight(value: INumber) {\n if (value < 0) {\n this._height = -value\n this.__leaf.scaleY *= -1\n debug.warn('height < 0, instead -scaleY', this)\n } else this._height = value\n }\n\n\n protected setFill(value: IValue) {\n if (this.__naturalWidth) this.__removeNaturalSize()\n if (isString(value) || !value) {\n stintSet(this, '__isTransparentFill', hasTransparent(value as string))\n this.__isFills && this.__removePaint('fill', true)\n this._fill = value\n } else if (isObject(value)) {\n this.__setPaint('fill', value)\n }\n }\n\n protected setStroke(value: IValue) {\n if (isString(value) || !value) {\n stintSet(this, '__isTransparentStroke', hasTransparent(value as string))\n this.__isStrokes && this.__removePaint('stroke', true)\n this._stroke = value\n } else if (isObject(value)) {\n this.__setPaint('stroke', value)\n }\n }\n\n\n protected setPath(value: IPathCommandData | IPathCommandObject[] | IPathString) {\n const isStr = isString(value)\n if (isStr || (value && isObject(value[0]))) {\n this.__setInput('path', value)\n this._path = isStr ? parse(value) : objectToCanvasData(value as IPathCommandObject[])\n } else {\n if (this.__input) this.__removeInput('path')\n this._path = value as IPathCommandData\n }\n }\n\n\n protected setShadow(value: IValue) {\n setArray(this, 'shadow', value)\n }\n\n protected setInnerShadow(value: IValue) {\n setArray(this, 'innerShadow', value)\n }\n\n protected setFilter(value: IValue) {\n setArray(this, 'filter', value)\n }\n\n\n // custom\n\n public __computePaint(): void {\n const { fill, stroke } = this.__input\n if (fill) Paint.compute('fill', this.__leaf)\n if (stroke) Paint.compute('stroke', this.__leaf)\n this.__needComputePaint = undefined\n }\n\n\n public __getRealStrokeWidth(childStyle?: IStrokeComputedStyle): number {\n let { strokeWidth, strokeWidthFixed } = this as IUIData\n if (childStyle) {\n if (childStyle.strokeWidth) strokeWidth = childStyle.strokeWidth\n if (!isUndefined(childStyle.strokeWidthFixed)) strokeWidthFixed = childStyle.strokeWidthFixed\n }\n if (strokeWidthFixed) {\n const scale = this.__leaf.getClampRenderScale()\n return scale > 1 ? strokeWidth / scale : strokeWidth\n } else return strokeWidth\n }\n\n\n public __setPaint(attrName: 'fill' | 'stroke', value: IValue): void {\n this.__setInput(attrName, value)\n const layout = this.__leaf.__layout\n layout.boxChanged || layout.boxChange()\n if (isArray(value) && !value.length) {\n this.__removePaint(attrName)\n } else {\n if (attrName === 'fill') this.__isFills = true, this._fill || (this._fill = emptyPaint)\n else this.__isStrokes = true, this._stroke || (this._stroke = emptyPaint)\n }\n }\n\n public __removePaint(attrName: 'fill' | 'stroke', removeInput?: boolean): void {\n if (removeInput) this.__removeInput(attrName)\n PaintImage.recycleImage(attrName, this)\n if (attrName === 'fill') {\n stintSet(this, '__isAlphaPixelFill', undefined)\n this._fill = this.__isFills = undefined\n } else {\n stintSet(this, '__isAlphaPixelStroke', undefined)\n stintSet(this, '__hasMultiStrokeStyle', undefined)\n this._stroke = this.__isStrokes = undefined\n }\n }\n}\n\n\nfunction setArray(data: IUIData, key: string, value: IValue) {\n data.__setInput(key, value)\n if (isArray(value)) {\n if (value.some((item: IFilter) => item.visible === false)) value = value.filter((item: IFilter) => item.visible !== false)\n value.length || (value = undefined)\n } else value = value && (value as IFilter).visible !== false ? [value] : undefined;\n (data as IObject)['_' + key] = value\n}\n","import { IGroupData } from '@leafer-ui/interface'\n\nimport { UIData } from \"./UIData\"\n\n\nexport class GroupData extends UIData implements IGroupData {\n\n}\n","import { IBox, IBoxData } from '@leafer-ui/interface'\n\nimport { GroupData } from \"./GroupData\"\n\n\nexport class BoxData extends GroupData implements IBoxData {\n\n public get __boxStroke(): boolean { return !(this as IBoxData).__pathInputed }\n\n // 当成整体处理\n public get __drawAfterFill(): boolean { const t = this as IBoxData; return t.__single || t.__clipAfterFill }\n\n public get __clipAfterFill(): boolean { const t = this as IBoxData; return t.overflow !== 'show' && t.__leaf.children.length && ((t.__leaf as IBox).isOverflow || super.__clipAfterFill) as unknown as boolean }\n\n}\n","import { canvasSizeAttrs } from '@leafer/core'\n\nimport { ILeaferData, IObject, IJSONOptions } from '@leafer-ui/interface'\n\nimport { GroupData } from './GroupData'\n\nexport class LeaferData extends GroupData implements ILeaferData {\n\n public __getInputData(names?: string[] | IObject, options?: IJSONOptions): IObject {\n const data = super.__getInputData(names, options)\n canvasSizeAttrs.forEach(key => delete (data as IObject)[key])\n return data\n }\n}\n","import { IFrameData } from '@leafer-ui/interface'\n\nimport { BoxData } from './BoxData'\n\n\nexport class FrameData extends BoxData implements IFrameData {\n\n}\n","import { ILineData } from \"@leafer-ui/interface\"\n\nimport { UIData } from \"./UIData\"\n\n\nexport class LineData extends UIData implements ILineData {\n\n}\n","import { IRectData } from \"@leafer-ui/interface\"\n\nimport { UIData } from \"./UIData\"\n\n\nexport class RectData extends UIData implements IRectData {\n get __boxStroke(): boolean { return !(this as IRectData).__pathInputed }\n}","import { IEllipseData } from '@leafer-ui/interface'\n\nimport { UIData } from \"./UIData\"\n\n\nexport class EllipseData extends UIData implements IEllipseData {\n get __boxStroke(): boolean { return !(this as IEllipseData).__pathInputed }\n}","import { IPolygonData } from '@leafer-ui/interface'\n\nimport { UIData } from \"./UIData\"\n\n\nexport class PolygonData extends UIData implements IPolygonData {\n\n}","import { IStarData } from '@leafer-ui/interface'\n\nimport { UIData } from \"./UIData\"\n\n\nexport class StarData extends UIData implements IStarData {\n\n}","import { IPathData } from '@leafer-ui/interface'\n\nimport { UIData } from \"./UIData\"\n\n\nexport class PathData extends UIData implements IPathData {\n public get __pathInputed(): number { return 2 }\n}","import { IPenData } from '@leafer-ui/interface'\n\nimport { GroupData } from './GroupData'\n\n\nexport class PenData extends GroupData implements IPenData {\n\n}\n","import { UICreator, isString } from '@leafer/core'\n\nimport { IFontWeight, ITextData, IUI, IText, IObject, IBackgroundBoxStyle, IFontWeightNumer } from '@leafer-ui/interface'\n\nimport { UIData } from \"./UIData\"\n\n\nconst fontWeightMap = {\n 'thin': 100,\n 'extra-light': 200,\n 'light': 300,\n 'normal': 400,\n 'medium': 500,\n 'semi-bold': 600,\n 'bold': 700,\n 'extra-bold': 800,\n 'black': 900\n}\n\nexport class TextData extends UIData implements ITextData {\n\n public get __useNaturalRatio() { return false }\n\n protected _fontWeight?: number\n protected _boxStyle?: IBackgroundBoxStyle\n\n setFontWeight(value: IFontWeight): void {\n if (isString(value)) {\n this.__setInput('fontWeight', value)\n value = fontWeightMap[value] as IFontWeightNumer || 400\n } else if (this.__input) this.__removeInput('fontWeight')\n this._fontWeight = value\n }\n\n setBoxStyle(value: IUI) {\n let t = this.__leaf as IText, box = t.__box\n\n if (value) {\n\n const { boxStyle } = this as ITextData\n if (box) for (let key in boxStyle) (box as IObject)[key] = undefined\n else box = t.__box = UICreator.get('Rect', 0 as any) as IUI // 传递 0 可以优化内存占用\n\n const layout = t.__layout, boxLayout = box.__layout\n if (!boxStyle) box.parent = t as any, box.__world = t.__world, boxLayout.boxBounds = layout.boxBounds\n\n box.set(value)\n if (boxLayout.strokeChanged) layout.strokeChange()\n if (boxLayout.renderChanged) layout.renderChange()\n box.__updateChange()\n\n } else if (box) {\n t.__box = box.parent = null\n box.destroy()\n }\n\n this._boxStyle = value\n\n }\n\n}","import { IImageData, IImageInputData, IImage, IObject, IJSONOptions } from '@leafer-ui/interface'\n\nimport { RectData } from './RectData'\n\n\nexport class ImageData extends RectData implements IImageData {\n\n declare public __leaf: IImage\n\n protected _url: string\n\n protected setUrl(value: string) {\n this.__setImageFill(value)\n this._url = value\n }\n\n public __setImageFill(value: string): void {\n (this as IImageInputData).fill = value ? { type: 'image', mode: 'stretch', url: value } : undefined\n }\n\n public __getData(): IObject {\n const data = super.__getData()\n delete data.fill\n return data\n }\n\n public __getInputData(names?: string[] | IObject, options?: IJSONOptions): IObject {\n const data = super.__getInputData(names, options)\n delete data.fill\n return data\n }\n}","import { ICanvas, ICanvasData, ICanvasInputData, IObject, IJSONOptions } from '@leafer-ui/interface'\n\nimport { RectData } from './RectData'\n\n\nexport class CanvasData extends RectData implements ICanvasData {\n\n public get __isCanvas(): boolean { return true }\n public get __drawAfterFill(): boolean { return true }\n\n public __getInputData(names?: string[] | IObject, options?: IJSONOptions): IObject {\n const data: ICanvasInputData = super.__getInputData(names, options)\n data.url = (this.__leaf as ICanvas).canvas.toDataURL('image/png') as string\n return data\n }\n}","import { IUIBoundsModule } from \"@leafer-ui/interface\"\n\nimport { Filter } from '@leafer-ui/external'\n\n\nexport const UIBounds: IUIBoundsModule = {\n\n __updateStrokeSpread(): number {\n let width = 0, boxWidth = 0\n const data = this.__, { strokeAlign, __maxStrokeWidth: strokeWidth } = data, box = this.__box\n\n if ((data.stroke || data.hitStroke === 'all') && strokeWidth && strokeAlign !== 'inside') {\n boxWidth = width = strokeAlign === 'center' ? strokeWidth / 2 : strokeWidth\n\n if (!data.__boxStroke) {\n const miterLimitAddWidth = data.__isLinePath ? 0 : 10 * width // = Math.sin((miterLimit = 10) * OneRadian / 2) * Math.sqrt(strokeWidth) - width 后期需继续精确优化\n const storkeCapAddWidth = data.strokeCap === 'none' ? 0 : strokeWidth\n width += Math.max(miterLimitAddWidth, storkeCapAddWidth)\n }\n }\n\n if (data.__useArrow) width += strokeWidth * 5 // 后期需要精细化\n\n if (box) {\n width = Math.max(box.__layout.strokeSpread = box.__updateStrokeSpread(), width)\n boxWidth = box.__layout.strokeBoxSpread\n }\n\n this.__layout.strokeBoxSpread = boxWidth\n\n return width\n },\n\n __updateRenderSpread(): number {\n let width: number = 0\n const { shadow, innerShadow, blur, backgroundBlur, filter, renderSpread } = this.__\n\n if (shadow) shadow.forEach(item => width = Math.max(width, Math.max(Math.abs(item.y), Math.abs(item.x)) + (item.spread > 0 ? item.spread : 0) + item.blur * 1.5))\n\n if (blur) width = Math.max(width, blur)\n\n if (filter) width += Filter.getSpread(filter)\n\n if (renderSpread) width += renderSpread\n\n let shapeWidth = width = Math.ceil(width)\n\n if (innerShadow) innerShadow.forEach(item => shapeWidth = Math.max(shapeWidth, Math.max(Math.abs(item.y), Math.abs(item.x)) + (item.spread < 0 ? -item.spread : 0) + item.blur * 1.5))\n\n if (backgroundBlur) shapeWidth = Math.max(shapeWidth, backgroundBlur)\n\n this.__layout.renderShapeSpread = shapeWidth\n\n width += this.__layout.strokeSpread || 0\n\n return this.__box ? Math.max(this.__box.__updateRenderSpread(), width) : width\n }\n\n}","import { IPointData, IBoundsData, IDragBoundsType, ILeaf } from '@leafer/interface'\nimport { MathHelper } from '@leafer/core'\n\n\nexport const DragBoundsHelper = {\n\n getValidMove(content: IBoundsData, dragBounds: IBoundsData, dragBoundsType: IDragBoundsType, move: IPointData, change?: boolean): IPointData {\n const x = content.x + move.x, y = content.y + move.y, right = x + content.width, bottom = y + content.height\n const boundsRight = dragBounds.x + dragBounds.width, boundsBottom = dragBounds.y + dragBounds.height\n\n if (!change) move = { ...move }\n\n const isBiggerWidth = content.width > dragBounds.width\n const isBiggerHeight = content.height > dragBounds.height\n\n if (isBiggerWidth && dragBoundsType !== 'outer') { // inner / auto 模式\n if (x > dragBounds.x) move.x += dragBounds.x - x\n else if (right < boundsRight) move.x += boundsRight - right\n } else {\n if (x < dragBounds.x) move.x += dragBounds.x - x\n else if (right > boundsRight) move.x += boundsRight - right\n }\n\n if (isBiggerHeight && dragBoundsType !== 'outer') { // inner / auto 模式\n if (y > dragBounds.y) move.y += dragBounds.y - y\n else if (bottom < boundsBottom) move.y += boundsBottom - bottom\n } else {\n if (y < dragBounds.y) move.y += dragBounds.y - y\n else if (bottom > boundsBottom) move.y += boundsBottom - bottom\n }\n\n // 避免出现很小为0的小数\n move.x = MathHelper.float(move.x)\n move.y = MathHelper.float(move.y)\n\n return move\n },\n\n // 按轴移动\n axisMove(leaf: ILeaf, move: IPointData) {\n const { draggable } = leaf\n if (draggable === 'x') move.y = 0\n if (draggable === 'y') move.x = 0\n },\n\n // 拖拽区域内移动\n limitMove(leaf: ILeaf, move: IPointData): void {\n const { dragBounds, dragBoundsType } = leaf\n if (dragBounds) D.getValidMove(leaf.__localBoxBounds, dragBounds === 'parent' ? leaf.parent.boxBounds : dragBounds, dragBoundsType, move, true)\n D.axisMove(leaf, move)\n }\n}\n\nconst D = DragBoundsHelper","import { ILeaferCanvas, IRenderOptions } from '@leafer/interface'\nimport { DataHelper, isArray } from '@leafer/core'\n\nimport { IUIRenderModule, ILeafPaint, ILeafStrokePaint, IUI } from '@leafer-ui/interface'\nimport { Paint, Effect, Filter, ColorConvert } from '@leafer-ui/external'\n\nconst { stintSet } = DataHelper\n\nexport const UIRender: IUIRenderModule = {\n\n __updateChange(): void {\n const data = this.__\n\n if (data.__useStroke) {\n const useStroke = data.__useStroke = !!(data.stroke && data.strokeWidth)\n stintSet(this.__world, 'half', useStroke && data.strokeAlign === 'center' && data.strokeWidth % 2) // 是否存在半逻辑像素渲染(奇数线宽的居中线条),可以半像素为起点绘制,防止模糊\n stintSet(data, '__fillAfterStroke', useStroke && data.strokeAlign === 'outside' && data.fill && !data.__isTransparentFill)\n }\n\n if (data.__useEffect) {\n const { shadow, fill, stroke } = data, otherEffect = data.innerShadow || data.blur || data.backgroundBlur || data.filter\n stintSet(data, '__isFastShadow', shadow && !otherEffect && shadow.length < 2 && !shadow[0].spread && fill && !data.__isTransparentFill && !(isArray(fill) && fill.length > 1) && (this.useFastShadow || !stroke || (stroke && data.strokeAlign === 'inside'))) // 高性能阴影条件, @leafer-ui/image check.ts 中的 allowDraw 逻辑需与此处关联\n data.__useEffect = !!(shadow || otherEffect)\n }\n\n data.__checkSingle()\n\n stintSet(data, '__complex', (data.__isFills || data.__isStrokes || data.cornerRadius || data.__useEffect) as boolean)\n },\n\n __drawFast(canvas: ILeaferCanvas, options: IRenderOptions): void {\n drawFast(this, canvas, options)\n },\n\n __draw(canvas: ILeaferCanvas, options: IRenderOptions, originCanvas?: ILeaferCanvas): void {\n const data = this.__\n\n if (data.__complex) {\n\n if (data.__needComputePaint) data.__computePaint()\n\n const { fill, stroke, __drawAfterFill, __fillAfterStroke, __isFastShadow } = data\n\n this.__drawRenderPath(canvas)\n\n if (data.__useEffect && !__isFastShadow) {\n\n const shape = Paint.shape(this, canvas, options)\n this.__nowWorld = this.__getNowWorld(options) // restore\n\n const { shadow, innerShadow, filter } = data\n\n if (shadow) Effect.shadow(this, canvas, shape)\n\n if (__fillAfterStroke) data.__isStrokes ? Paint.strokes(stroke as ILeafStrokePaint[], this, canvas) : Paint.stroke(stroke as string, this, canvas)\n\n if (fill) data.__isFills ? Paint.fills(fill as ILeafPaint[], this, canvas) : Paint.fill(fill as string, this, canvas)\n\n if (__drawAfterFill) this.__drawAfterFill(canvas, options)\n\n if (innerShadow) Effect.innerShadow(this, canvas, shape)\n\n if (stroke && !__fillAfterStroke) data.__isStrokes ? Paint.strokes(stroke as ILeafStrokePaint[], this, canvas) : Paint.stroke(stroke as string, this, canvas)\n\n if (filter) Filter.apply(filter, this, this.__nowWorld, canvas, originCanvas, shape)\n\n if (shape.worldCanvas) shape.worldCanvas.recycle()\n shape.canvas.recycle()\n\n } else {\n\n if (__fillAfterStroke) data.__isStrokes ? Paint.strokes(stroke as ILeafStrokePaint[], this, canvas) : Paint.stroke(stroke as string, this, canvas)\n\n if (__isFastShadow) {\n const shadow = data.shadow[0], { scaleX, scaleY } = this.getRenderScaleData(true, shadow.scaleFixed)\n canvas.save(), canvas.setWorldShadow(shadow.x * scaleX, shadow.y * scaleY, shadow.blur * scaleX, ColorConvert.string(shadow.color))\n }\n\n if (fill) data.__isFills ? Paint.fills(fill as ILeafPaint[], this, canvas) : Paint.fill(fill as string, this, canvas)\n\n if (__isFastShadow) canvas.restore()\n\n if (__drawAfterFill) this.__drawAfterFill(canvas, options)\n\n if (stroke && !__fillAfterStroke) data.__isStrokes ? Paint.strokes(stroke as ILeafStrokePaint[], this, canvas) : Paint.stroke(stroke as string, this, canvas)\n\n }\n\n } else {\n\n if (data.__pathInputed) drawFast(this, canvas, options)\n else this.__drawFast(canvas, options)\n\n }\n },\n\n __drawShape(canvas: ILeaferCanvas, options: IRenderOptions): void {\n this.__drawRenderPath(canvas)\n\n const data = this.__, { fill, stroke } = data\n\n if (fill && !options.ignoreFill) data.__isAlphaPixelFill ? Paint.fills(fill as ILeafPaint[], this, canvas) : Paint.fill('#000000', this, canvas)\n if (data.__isCanvas) this.__drawAfterFill(canvas, options)\n if (stroke && !options.ignoreStroke) data.__isAlphaPixelStroke ? Paint.strokes(stroke as ILeafStrokePaint[], this, canvas) : Paint.stroke('#000000', this, canvas)\n },\n\n __drawAfterFill(canvas: ILeaferCanvas, options: IRenderOptions): void {\n if (this.__.__clipAfterFill) {\n canvas.save()\n canvas.clipUI(this)\n this.__drawContent(canvas, options)\n canvas.restore()\n } else this.__drawContent(canvas, options)\n }\n\n}\n\n\nfunction drawFast(ui: IUI, canvas: ILeaferCanvas, options: IRenderOptions): void {\n const { fill, stroke, __drawAfterFill, __fillAfterStroke } = ui.__\n\n ui.__drawRenderPath(canvas)\n\n if (__fillAfterStroke) Paint.stroke(stroke as string, ui, canvas)\n\n if (fill) Paint.fill(fill as string, ui, canvas)\n if (__drawAfterFill) ui.__drawAfterFill(canvas, options)\n\n if (stroke && !__fillAfterStroke) Paint.stroke(stroke as string, ui, canvas)\n}","import { ILeaferCanvas, IRenderOptions } from '@leafer/interface'\n\nimport { IRectRenderModule } from '@leafer-ui/interface'\n\n\nexport const RectRender: IRectRenderModule = {\n\n __drawFast(canvas: ILeaferCanvas, options: IRenderOptions): void {\n\n let { x, y, width, height } = this.__layout.boxBounds\n const { fill, stroke, __drawAfterFill } = this.__\n\n if (fill) {\n canvas.fillStyle = fill\n canvas.fillRect(x, y, width, height)\n }\n\n if (__drawAfterFill) this.__drawAfterFill(canvas, options)\n\n if (stroke) {\n\n const { strokeAlign, __strokeWidth: strokeWidth } = this.__\n if (!strokeWidth) return\n\n canvas.setStroke(stroke, strokeWidth, this.__)\n const half = strokeWidth / 2\n\n switch (strokeAlign) {\n case 'center':\n canvas.strokeRect(0, 0, width, height)\n break\n case 'inside':\n width -= strokeWidth, height -= strokeWidth\n if (width < 0 || height < 0) {\n canvas.save()\n this.__clip(canvas, options)\n canvas.strokeRect(x + half, y + half, width, height)\n canvas.restore()\n } else canvas.strokeRect(x + half, y + half, width, height)\n break\n case 'outside':\n canvas.strokeRect(x - half, y - half, width + strokeWidth, height + strokeWidth)\n break\n }\n\n }\n\n }\n}\n","import { ILeaferCanvas, IPathDrawer, IPathCommandData, IHitType, INumber, IBoolean, IString, IPathString, IExportFileType, IPointData, ICursorType, IMaskType, IEraserType, IValue, IWindingRule, IPathCreator, IFourNumber, IBoundsData, IFlowType, IGap, IFlowWrap, IAxis, IConstraint, IAutoBoxData, IFlowBoxType, IPointGap, IFlowAlign, IFlowAxisAlign, IFindCondition, IAutoSize, IRangeSize, IAlign, IUnitPointData, IObject, IScaleData, IUnitData, IPathCommandObject, ITransition, IFilter, ILeaferImage, IScaleFixed, IDragBoundsType } from '@leafer/interface'\nimport { Leaf, PathDrawer, surfaceType, dataType, positionType, scrollType, boundsType, pathType, scaleType, rotationType, opacityType, visibleType, sortType, maskType, dataProcessor, registerUI, useModule, rewrite, rewriteAble, UICreator, PathCorner, hitType, strokeType, PathConvert, eraserType, cursorType, autoLayoutType, pen, naturalBoundsType, pathInputType, MathHelper, Plugin, DataHelper, affectRenderBoundsType, isString, isNumber } from '@leafer/core'\n\nimport { IUI, IShadowEffect, IBlurEffect, IStrokeAlign, IStrokeJoin, IStrokeCap, IBlendMode, IDashPatternString, IShadowString, IGrayscaleEffect, IUIData, IGroup, IStrokeWidthString, ICornerRadiusString, IUIInputData, IExportOptions, IExportResult, IFill, IStroke, IArrowType, IFindUIMethod, ILeafer, IEditorConfig, IEditorConfigFunction, IEditToolFunction, IKeyframe, IAnimation, IAnimate, IStates, IStateName, IAnimateType, IStateStyle, IColorString, IAnimateList } from '@leafer-ui/interface'\nimport { effectType, zoomLayerType } from '@leafer-ui/decorator'\n\nimport { UIData } from '@leafer-ui/data'\nimport { UIBounds, UIRender } from '@leafer-ui/display-module'\n\nimport { Export, Paint, PathArrow } from '@leafer-ui/external'\n\n\n@useModule(UIBounds)\n@useModule(UIRender)\n@rewriteAble()\nexport class UI extends Leaf implements IUI { // tip: rewrited Box\n\n @dataProcessor(UIData)\n declare public __: IUIData\n\n declare public proxyData?: IUIInputData // need rewrite getter\n declare public __proxyData?: IUIInputData\n\n public get app(): ILeafer { return this.leafer && this.leafer.app }\n\n declare public leafer?: ILeafer\n declare public parent?: IGroup\n\n @zoomLayerType()\n public zoomLayer: IGroup\n\n public get isFrame(): boolean { return false }\n\n declare public children?: IUI[]\n\n // ---\n\n // id\n @dataType('')\n public id?: IString\n\n @dataType('')\n public name?: IString\n\n @dataType('')\n public className?: IString\n\n\n // layer\n @surfaceType('pass-through')\n public blendMode?: IBlendMode\n\n @opacityType(1)\n public opacity?: INumber\n\n @visibleType(true)\n public visible?: IBoolean | 0\n\n\n @surfaceType(false)\n public locked?: IBoolean\n\n\n @surfaceType(false)\n public dim?: IBoolean | INumber // 是否弱化内容,可设置具体透明度\n\n @surfaceType(false)\n public dimskip?: IBoolean // 跳过弱化,突出显示内容,不受dim影响\n\n\n @sortType(0)\n public zIndex?: INumber\n\n\n @maskType(false)\n public mask?: IBoolean | IMaskType\n\n @eraserType(false)\n public eraser?: IBoolean | IEraserType\n\n\n // position\n @positionType(0, true)\n public x?: INumber\n\n @positionType(0, true)\n public y?: INumber\n\n // size\n @boundsType(100, true)\n public width?: INumber\n\n @boundsType(100, true)\n public height?: INumber\n\n // scale\n @scaleType(1, true)\n public scaleX?: INumber\n\n @scaleType(1, true)\n public scaleY?: INumber\n\n // rotate\n @rotationType(0, true)\n public rotation?: INumber\n\n // skew\n @rotationType(0, true)\n public skewX?: INumber\n\n @rotationType(0, true)\n public skewY?: INumber\n\n\n // offset\n @positionType(0, true)\n public offsetX?: INumber\n\n @positionType(0, true)\n public offsetY?: INumber\n\n // scroll\n @scrollType(0, true)\n public scrollX?: INumber\n\n @scrollType(0, true)\n public scrollY?: INumber\n\n\n // center\n @autoLayoutType()\n public origin?: IAlign | IUnitPointData\n\n @autoLayoutType()\n public around?: IAlign | IUnitPointData\n\n\n // image\n @dataType(false)\n public lazy?: IBoolean // load image / compute paint\n\n @naturalBoundsType(1)\n public pixelRatio?: INumber\n\n\n @affectRenderBoundsType(0)\n public renderSpread?: INumber // 强行扩大渲染边界\n\n\n // path\n @pathInputType()\n public path?: IPathCommandData | IPathCommandObject[] | IPathString\n\n @pathType()\n public windingRule?: IWindingRule\n\n @pathType(true)\n public closed?: boolean\n\n\n // @leafer-in/flow rewrite\n public flow?: IFlowType\n\n @boundsType(0)\n public padding?: IFourNumber\n\n public gap?: IGap | IPointGap\n\n public flowAlign?: IFlowAlign | IFlowAxisAlign\n\n public flowWrap?: IFlowWrap\n\n\n public itemBox?: IFlowBoxType\n\n public inFlow?: IBoolean\n\n\n public autoWidth?: IAutoSize\n\n public autoHeight?: IAutoSize\n\n @boundsType(false)\n public lockRatio?: IBoolean\n\n public autoBox?: IAutoBoxData | IConstraint\n\n @boundsType()\n public widthRange?: IRangeSize\n\n @boundsType()\n public heightRange?: IRangeSize\n\n\n // drag\n @dataType(false)\n public draggable?: IBoolean | IAxis\n\n @dataType()\n public dragBounds?: IBoundsData | 'parent'\n\n @dataType('auto')\n dragBoundsType?: IDragBoundsType\n\n\n @dataType(false)\n public editable?: IBoolean\n\n\n // hit\n @hitType(true)\n public hittable?: IBoolean\n\n @hitType('path')\n public hitFill?: IHitType\n\n @strokeType('path')\n public hitStroke?: IHitType\n\n @hitType(false)\n public hitBox?: IBoolean\n\n @hitType(true)\n public hitChildren?: IBoolean\n\n @hitType(true)\n public hitSelf?: IBoolean\n\n @hitType()\n public hitRadius?: INumber\n\n @cursorType('')\n public cursor?: ICursorType | ICursorType[]\n\n // ---\n\n\n // fill\n\n @surfaceType()\n public fill?: IFill\n\n // stroke\n\n @strokeType(undefined, true)\n public stroke?: IStroke\n\n @strokeType('inside')\n public strokeAlign?: IStrokeAlign\n\n @strokeType(1, true)\n public strokeWidth?: IFourNumber | IStrokeWidthString\n\n @strokeType(false)\n public strokeWidthFixed?: IScaleFixed\n\n @strokeType('none')\n public strokeCap?: IStrokeCap\n\n @strokeType('miter')\n public strokeJoin?: IStrokeJoin\n\n @strokeType()\n public dashPattern?: INumber[] | IDashPatternString\n\n @strokeType(0)\n public dashOffset?: INumber\n\n @strokeType(10)\n public miterLimit?: INumber\n\n\n // @leafer-in/arrow rewrite\n\n public startArrow?: IArrowType\n\n public endArrow?: IArrowType\n\n // corner\n\n @pathType(0)\n public cornerRadius?: IFourNumber | ICornerRadiusString\n\n @pathType()\n public cornerSmoothing?: INumber\n\n // effect\n\n @effectType()\n public shadow?: IShadowEffect | IShadowEffect[] | IShadowString\n\n @effectType()\n public innerShadow?: IShadowEffect | IShadowEffect[] | IShadowString\n\n @effectType()\n public blur?: INumber | IBlurEffect\n\n @effectType()\n public backgroundBlur?: INumber | IBlurEffect\n\n @effectType()\n public grayscale?: INumber | IGrayscaleEffect\n\n @effectType()\n public filter?: IFilter | IFilter[]\n\n\n // @leafer-in/animate rewrite\n\n public animation?: IAnimation | IAnimation[]\n\n public animationOut?: IAnimation | IAnimation[]\n\n\n public transition?: ITransition\n\n public transitionOut?: ITransition\n\n\n // @leafer-in/motion-path rewrite\n\n public motionPath?: boolean\n\n public motionPrecision?: INumber\n\n\n public motion?: INumber | IUnitData\n\n public motionRotation?: INumber | IBoolean\n\n\n // @leafer-in/state rewrite\n\n public states?: IStates\n\n public state?: IStateName\n\n\n public selected?: IBoolean\n\n public disabled?: IBoolean\n\n\n public normalStyle?: IStateStyle\n\n public hoverStyle?: IStateStyle\n\n public pressStyle?: IStateStyle\n\n public focusStyle?: IStateStyle\n\n public selectedStyle?: IStateStyle\n\n public disabledStyle?: IStateStyle\n\n\n public placeholderStyle?: IStateStyle\n\n @surfaceType()\n public placeholderColor?: IColorString\n\n @dataType(100)\n public placeholderDelay?: INumber\n\n\n public button?: IBoolean\n\n\n // @leafer-in/editor rewrite\n\n public editConfig: IEditorConfig\n\n public editOuter: string\n\n public editInner: string\n\n\n // 预留给用户使用的数据对象\n @dataType({})\n public data: IObject\n\n\n public set scale(value: INumber | IPointData) { MathHelper.assignScale(this as IScaleData, value) }\n public get scale(): INumber | IPointData { return this.__.scale }\n\n public get isAutoWidth(): boolean { const t = this.__; return t.__autoWidth || t.autoWidth as boolean }\n public get isAutoHeight(): boolean { const t = this.__; return t.__autoHeight || t.autoHeight as boolean }\n\n public useFastShadow?: boolean // 将忽略 stroke 产生的阴影,只对单个 fill 有效\n\n public __box?: IUI // 背景box, 一般用于文本背景框\n public __animate?: IAnimate | IAnimateList\n\n public get pen(): IPathCreator {\n const { path } = this.__\n pen.set(this.path = path || [])\n if (!path) this.__drawPathByBox(pen)\n return pen\n }\n\n\n constructor(data?: IUIInputData) {\n super(data)\n }\n\n\n // data\n\n @rewrite(Leaf.prototype.reset)\n public reset(_data?: IUIInputData): void { }\n\n\n public set(data: IUIInputData, transition?: ITransition | 'temp'): void {\n if (data) {\n if (transition) {\n if (transition === 'temp') {\n this.lockNormalStyle = true\n Object.assign(this, data)\n this.lockNormalStyle = false\n } else this.animate(data, transition)\n } else Object.assign(this, data)\n }\n }\n\n public get(name?: string | string[] | IUIInputData): IUIInputData | IValue {\n return isString(name) ? this.__.__getInput(name) : this.__.__getInputData(name)\n }\n\n public createProxyData(): IUIInputData { return undefined }\n\n\n // hit rewrite\n\n public find(_condition: number | string | IFindCondition | IFindUIMethod, _options?: any): IUI[] { return Plugin.need('find') }\n\n public findTag(tag: string | string[]): IUI[] { return this.find({ tag }) }\n\n public findOne(_condition: number | string | IFindCondition | IFindUIMethod, _options?: any): IUI | undefined { return Plugin.need('find') }\n\n public findId(id: number | string): IUI | undefined { return this.findOne({ id }) }\n\n\n // path\n\n public getPath(curve?: boolean, pathForRender?: boolean): IPathCommandData {\n this.__layout.update()\n let path = pathForRender ? this.__.__pathForRender : this.__.path\n if (!path) pen.set(path = []), this.__drawPathByBox(pen)\n return curve ? PathConvert.toCanvasData(path, true) : path\n }\n\n public getPathString(curve?: boolean, pathForRender?: boolean, floatLength?: number): IPathString {\n return PathConvert.stringify(this.getPath(curve, pathForRender), floatLength)\n }\n\n\n public load(): void {\n this.__.__computePaint() // 手动加载图片\n }\n\n public __onUpdateSize(): void {\n if (this.__.__input) {\n const data = this.__;\n (data.lazy && !this.__inLazyBounds && !Export.running) ? data.__needComputePaint = true : data.__computePaint()\n }\n }\n\n public __updateRenderPath(): void {\n const data = this.__\n if (data.path) {\n data.__pathForRender = data.cornerRadius ? PathCorner.smooth(data.path, data.cornerRadius, data.cornerSmoothing) : data.path\n if (data.__useArrow) PathArrow.addArrows(this, !data.cornerRadius)\n } else data.__pathForRender && (data.__pathForRender = undefined)\n }\n\n public __drawRenderPath(canvas: ILeaferCanvas): void {\n canvas.beginPath()\n this.__drawPathByData(canvas, this.__.__pathForRender)\n }\n\n public __drawPath(canvas: ILeaferCanvas): void {\n canvas.beginPath()\n this.__drawPathByData(canvas, this.__.path)\n }\n\n public __drawPathByData(drawer: IPathDrawer, data: IPathCommandData): void {\n data ? PathDrawer.drawPathByData(drawer, data) : this.__drawPathByBox(drawer)\n }\n\n public __drawPathByBox(drawer: IPathDrawer): void {\n const { x, y, width, height } = this.__layout.boxBounds\n if (this.__.cornerRadius) {\n const { cornerRadius } = this.__\n drawer.roundRect(x, y, width, height, isNumber(cornerRadius) ? [cornerRadius] : cornerRadius) // 修复微信浏览器bug, 后续需进一步优化\n } else drawer.rect(x, y, width, height)\n }\n\n public drawImagePlaceholder(canvas: ILeaferCanvas, _image?: ILeaferImage): void {\n Paint.fill(this.__.placeholderColor, this, canvas) // 图片占位符\n }\n\n // @leafer-in/animate rewrite\n\n public animate(_keyframe?: IUIInputData | IKeyframe[] | IAnimation | IAnimation[], _options?: ITransition, _type?: IAnimateType, _isTemp?: boolean): IAnimate {\n return Plugin.need('animate')\n }\n\n public killAnimate(_type?: IAnimateType, _nextStyle?: IUIInputData): void { }\n\n\n // create\n\n // @leafer-in/export will rewrite\n public export(_filename: IExportFileType | string, _options?: IExportOptions | number | boolean): Promise<IExportResult> {\n return Plugin.need('export')\n }\n\n public syncExport(_filename: IExportFileType | string, _options?: IExportOptions | number | boolean): IExportResult {\n return Plugin.need('export')\n }\n\n public clone(data?: IUIInputData): this {\n const json = DataHelper.clone(this.toJSON())\n if (data) Object.assign(json, data)\n return UI.one(json) as this\n }\n\n // this 参数定义,在编译的时候会移除\n static one<T extends UI>(this: new (...args: any[]) => T, data: IUIInputData, x?: number, y?: number, width?: number, height?: number): T {\n return UICreator.get(data.tag || this.prototype.__tag, data, x, y, width, height) as T\n }\n\n static registerUI(): void {\n registerUI()(this)\n }\n\n static registerData(data: IUIData): void {\n dataProcessor(data)(this.prototype)\n }\n\n\n // @leafer-in/editor rewrite\n\n static setEditConfig(_config: IEditorConfig | IEditorConfigFunction): void { }\n\n static setEditOuter(_toolName: string | IEditToolFunction): void { }\n\n static setEditInner(_editorName: string | IEditToolFunction): void { }\n\n\n public destroy(): void {\n this.fill = this.stroke = null\n if (this.__animate) this.killAnimate()\n super.destroy()\n }\n\n}\n","import { IJSONOptions, IPickOptions, IPickResult, IPointData, INumber, ITransition } from '@leafer/interface'\nimport { Branch, useModule, dataProcessor, registerUI, boundsType } from '@leafer/core'\n\nimport { IGroup, IGroupData, IGroupInputData, IUI, IUIInputData, IUIJSONData, IFindCondition, IFindUIMethod } from '@leafer-ui/interface'\nimport { GroupData } from '@leafer-ui/data'\n\nimport { UI } from './UI'\n\n\n@useModule(Branch)\n@registerUI()\nexport class Group extends UI implements IGroup { // tip: rewrited Box\n\n public get __tag() { return 'Group' }\n\n public get isBranch(): boolean { return true }\n\n @dataProcessor(GroupData)\n declare public __: IGroupData\n\n // size\n @boundsType(0)\n declare public width?: INumber\n\n @boundsType(0)\n declare public height?: INumber\n\n declare public children: IUI[]\n\n declare public topChildren?: IUI[]\n\n public childlessJSON?: boolean\n\n constructor(data?: IGroupInputData) {\n super(data)\n }\n\n public reset(data?: IGroupInputData): void {\n this.__setBranch()\n super.reset(data)\n }\n\n public __setBranch(): void {\n if (!this.children) this.children = []\n }\n\n\n // data\n\n override set(data: IUIInputData, transition?: ITransition | 'temp'): void {\n if (data) {\n if (data.children) {\n const { children } = data\n\n delete data.children\n this.children ? this.clear() : this.__setBranch()\n\n super.set(data, transition)\n\n children.forEach(child => this.add(child))\n data.children = children\n\n } else super.set(data, transition)\n }\n }\n\n override toJSON(options?: IJSONOptions): IUIJSONData {\n const data = super.toJSON(options)\n if (!this.childlessJSON) data.children = this.children.map(child => child.toJSON(options))\n return data\n }\n\n\n // hit rewrite\n\n public pick(_hitPoint: IPointData, _options?: IPickOptions): IPickResult { return undefined }\n\n\n // add\n\n public addAt(child: IUI | IUI[] | IUIInputData | IUIInputData[], index: number): void {\n this.add(child, index)\n }\n\n public addAfter(child: IUI | IUI[] | IUIInputData | IUIInputData[], after: IUI): void {\n this.add(child, this.children.indexOf(after) + 1)\n }\n\n public addBefore(child: IUI | IUI[] | IUIInputData | IUIInputData[], before: IUI): void {\n this.add(child, this.children.indexOf(before))\n }\n\n // Branch rewrite\n\n public add(_child: IUI | IUI[] | IUIInputData | IUIInputData[], _index?: number): void { }\n\n public addMany(..._children: IUI[] | IUIInputData[]): void { }\n\n public remove(_child?: IUI | number | string | IFindCondition | IFindUIMethod, _destroy?: boolean): void { }\n\n public removeAll(_destroy?: boolean): void { }\n\n public clear(): void { }\n\n}","import { ILeaferCanvas, IRenderer, ILayouter, ISelector, IWatcher, IInteraction, ILeaferConfig, ICanvasManager, IHitCanvasManager, IAutoBounds, IScreenSizeData, IResizeEvent, IEventListenerId, ITimer, IValue, IObject, IControl, IPointData, ILeaferType, ICursorType, IBoundsData, INumber, IZoomType, IZoomOptions, IFourNumber, IBounds, IClientPointData, ITransition } from '@leafer/interface'\nimport { AutoBounds, LayoutEvent, ResizeEvent, LeaferEvent, CanvasManager, ImageManager, Resource, DataHelper, Creator, Run, Debug, RenderEvent, registerUI, boundsType, canvasSizeAttrs, dataProcessor, WaitHelper, WatchEvent, Bounds, LeafList, Plugin, getBoundsData } from '@leafer/core'\n\nimport { ILeaferInputData, ILeaferData, IFunction, IUIInputData, ILeafer, IApp, IEditorBase } from '@leafer-ui/interface'\nimport { LeaferData } from '@leafer-ui/data'\n\nimport { Group } from './Group'\n\n\nconst debug = Debug.get('Leafer')\n\n@registerUI()\nexport class Leafer extends Group implements ILeafer {\n\n static list = new LeafList() // 所有leafer实例\n\n\n public get __tag() { return 'Leafer' }\n\n @dataProcessor(LeaferData)\n declare public __: ILeaferData\n\n @boundsType()\n declare public pixelRatio?: INumber\n\n public get isApp(): boolean { return false }\n public get app(): ILeafer { return this.parent || this }\n\n public get isLeafer(): boolean { return true }\n\n public parentApp?: IApp\n declare public parent?: IApp\n\n public running: boolean\n public created: boolean\n public ready: boolean\n public viewReady: boolean\n public viewCompleted: boolean\n public get imageReady(): boolean { return this.viewReady && Resource.isComplete }\n public get layoutLocked() { return !this.layouter.running }\n\n public transforming: boolean\n\n public view: unknown\n\n // manager\n public canvas: ILeaferCanvas\n public renderer: IRenderer\n\n public watcher: IWatcher\n public layouter: ILayouter\n\n public selector?: ISelector\n public interaction?: IInteraction\n\n public canvasManager: ICanvasManager\n public hitCanvasManager?: IHitCanvasManager\n\n // plugin\n public editor: IEditorBase\n\n public userConfig: ILeaferConfig\n public config: ILeaferConfig = {\n start: true,\n hittable: true,\n smooth: true,\n lazySpeard: 100,\n // pixelSnap: false // 是否对齐像素,避免图片存在浮点坐标导致模糊\n }\n\n public autoLayout?: IAutoBounds\n public lazyBounds: IBounds\n\n public get FPS(): number { return this.renderer ? this.renderer.FPS : 60 }\n public get cursorPoint(): IPointData { return (this.interaction && this.interaction.hoverData) || { x: this.width / 2, y: this.height / 2 } }\n public get clientBounds(): IBoundsData { return (this.canvas && this.canvas.getClientBounds(true)) || getBoundsData() }\n public leafs = 0\n\n public __eventIds: IEventListenerId[] = []\n protected __startTimer: ITimer\n protected __controllers: IControl[] = []\n\n protected __initWait: IFunction[] // assign in waitInit()\n protected __readyWait: IFunction[] = []\n protected __viewReadyWait: IFunction[] = []\n protected __viewCompletedWait: IFunction[] = []\n public __nextRenderWait: IFunction[] = []\n\n constructor(userConfig?: ILeaferConfig, data?: ILeaferInputData) {\n super(data)\n this.userConfig = userConfig\n if (userConfig && (userConfig.view || userConfig.width)) this.init(userConfig)\n Leafer.list.add(this)\n }\n\n public init(userConfig?: ILeaferConfig, parentApp?: IApp): void {\n if (this.canvas) return\n\n let start: boolean\n const { config } = this\n\n this.__setLeafer(this)\n\n if (parentApp) {\n this.parentApp = parentApp\n this.__bindApp(parentApp)\n start = parentApp.running\n }\n\n if (userConfig) {\n this.parent = parentApp\n this.initType(userConfig.type) // LeaferType\n this.parent = undefined\n DataHelper.assign(config, userConfig)\n }\n\n // render / layout\n const canvas = this.canvas = Creator.canvas(config)\n this.__controllers.push(\n this.renderer = Creator.renderer(this, canvas, config),\n this.watcher = Creator.watcher(this, config),\n this.layouter = Creator.layouter(this, config)\n )\n\n if (this.isApp) this.__setApp()\n this.__checkAutoLayout(config, parentApp)\n this.view = canvas.view\n\n // interaction / manager\n if (!parentApp) {\n this.selector = Creator.selector(this)\n this.interaction = Creator.interaction(this, canvas, this.selector, config)\n\n if (this.interaction) {\n this.__controllers.unshift(this.interaction)\n this.hitCanvasManager = Creator.hitCanvasManager()\n }\n\n this.canvasManager = new CanvasManager()\n\n start = config.start\n }\n\n this.hittable = config.hittable\n this.fill = config.fill\n this.canvasManager.add(canvas)\n\n\n this.__listenEvents()\n\n if (start) this.__startTimer = setTimeout(this.start.bind(this))\n\n WaitHelper.run(this.__initWait)\n this.onInit() // can rewrite init event\n }\n\n public onInit(): void { }\n\n public initType(_type: ILeaferType): void { } // rewrite in @leafer-ui/viewport\n\n public set(data: IUIInputData, transition?: ITransition | 'temp'): void {\n this.waitInit(() => { super.set(data, transition) })\n }\n\n public start(): void {\n clearTimeout(this.__startTimer)\n if (!this.running && this.canvas) {\n this.running = true\n this.ready ? this.emitLeafer(LeaferEvent.RESTART) : this.emitLeafer(LeaferEvent.START)\n this.__controllers.forEach(item => item.start())\n if (!this.isApp) this.renderer.render()\n }\n }\n\n public stop(): void {\n clearTimeout(this.__startTimer)\n if (this.running && this.canvas) {\n this.__controllers.forEach(item => item.stop())\n this.running = false\n this.emitLeafer(LeaferEvent.STOP)\n }\n }\n\n public unlockLayout(): void {\n this.layouter.start()\n this.updateLayout()\n }\n\n public lockLayout(): void {\n this.updateLayout()\n this.layouter.stop()\n }\n\n public resize(size: IScreenSizeData): void {\n const data = DataHelper.copyAttrs({}, size, canvasSizeAttrs)\n Object.keys(data).forEach(key => (this as any)[key] = data[key])\n }\n\n override forceRender(bounds?: IBoundsData, sync?: boolean): void {\n const { renderer } = this\n if (renderer) {\n renderer.addBlock(bounds ? new Bounds(bounds) : this.canvas.bounds)\n if (this.viewReady) sync ? renderer.render() : renderer.update()\n }\n }\n\n public requestRender(change = false): void {\n if (this.renderer) this.renderer.update(change)\n }\n\n public updateCursor(cursor?: ICursorType): void {\n const i = this.interaction\n if (i) cursor ? i.setCursor(cursor) : i.updateCursor()\n }\n\n public updateLazyBounds(): void {\n this.lazyBounds = this.canvas.bounds.clone().spread(this.config.lazySpeard)\n }\n\n protected __doResize(size: IScreenSizeData): void {\n const { canvas } = this\n if (!canvas || canvas.isSameSize(size)) return\n const old = DataHelper.copyAttrs({}, this.canvas, canvasSizeAttrs) as IScreenSizeData\n canvas.resize(size)\n this.updateLazyBounds()\n this.__onResize(new ResizeEvent(size, old))\n }\n\n protected __onResize(event: IResizeEvent): void {\n this.emitEvent(event)\n DataHelper.copyAttrs(this.__, event, canvasSizeAttrs)\n setTimeout(() => { if (this.canvasManager) this.canvasManager.clearRecycled() }, 0)\n }\n\n protected __setApp(): void { }\n\n protected __bindApp(app: IApp): void {\n this.selector = app.selector\n this.interaction = app.interaction\n\n this.canvasManager = app.canvasManager\n this.hitCanvasManager = app.hitCanvasManager\n }\n\n public __setLeafer(leafer: ILeafer): void {\n this.leafer = leafer\n this.__level = 1\n }\n\n protected __checkAutoLayout(config: ILeaferConfig, parentApp?: IApp): void {\n if (!parentApp) {\n if (!config.width || !config.height) this.autoLayout = new AutoBounds(config)\n this.canvas.startAutoLayout(this.autoLayout, this.__onResize.bind(this))\n }\n }\n\n override __setAttr(attrName: string, newValue: IValue): boolean {\n if (this.canvas) {\n if (canvasSizeAttrs.includes(attrName)) {\n // if (!newValue) debug.warn(attrName + ' is 0')\n this.__changeCanvasSize(attrName, newValue as number)\n } else if (attrName === 'fill') {\n this.__changeFill(newValue as string)\n } else if (attrName === 'hittable') {\n if (!this.parent) this.canvas.hittable = newValue as boolean\n } else if (attrName === 'zIndex') {\n this.canvas.zIndex = newValue as any\n setTimeout(() => this.parent && this.parent.__updateSortChildren())\n }\n }\n return super.__setAttr(attrName, newValue)\n }\n\n override __getAttr(attrName: string): IValue {\n if (this.canvas && canvasSizeAttrs.includes(attrName)) return this.canvas[attrName]\n return super.__getAttr(attrName)\n }\n\n protected __changeCanvasSize(attrName: string, newValue: number): void {\n const data = DataHelper.copyAttrs({}, this.canvas, canvasSizeAttrs)\n data[attrName] = (this.config as IObject)[attrName] = newValue\n if (newValue) this.canvas.stopAutoLayout()\n this.__doResize(data as IScreenSizeData)\n }\n\n protected __changeFill(newValue: string): void {\n this.config.fill = newValue as string\n if (this.canvas.allowBackgroundColor) this.canvas.backgroundColor = newValue as string\n else this.forceRender()\n }\n\n protected __onCreated(): void {\n this.created = true\n }\n\n protected __onReady(): void {\n this.ready = true\n this.emitLeafer(LeaferEvent.BEFORE_READY)\n this.emitLeafer(LeaferEvent.READY)\n this.emitLeafer(LeaferEvent.AFTER_READY)\n WaitHelper.run(this.__readyWait)\n }\n\n protected __onViewReady(): void {\n if (this.viewReady) return\n this.viewReady = true\n this.emitLeafer(LeaferEvent.VIEW_READY)\n WaitHelper.run(this.__viewReadyWait)\n }\n\n protected __onLayoutEnd(): void {\n const { grow, width: fixedWidth, height: fixedHeight } = this.config\n if (grow) {\n let { width, height, pixelRatio } = this\n const bounds = grow === 'box' ? this.worldBoxBounds : this.__world\n if (!fixedWidth) width = Math.max(1, bounds.x + bounds.width)\n if (!fixedHeight) height = Math.max(1, bounds.y + bounds.height)\n this.__doResize({ width, height, pixelRatio })\n }\n\n if (!this.ready) this.__onReady()\n }\n\n protected __onNextRender(): void {\n if (this.viewReady) {\n WaitHelper.run(this.__nextRenderWait)\n\n const { imageReady } = this\n if (imageReady && !this.viewCompleted) this.__checkViewCompleted()\n if (!imageReady) {\n this.viewCompleted = false\n this.requestRender()\n }\n } else this.requestRender() // fix: 小程序等需要异步获取 view 的情况\n }\n\n protected __checkViewCompleted(emit: boolean = true): void {\n this.nextRender(() => {\n if (this.imageReady) {\n if (emit) this.emitLeafer(LeaferEvent.VIEW_COMPLETED)\n WaitHelper.run(this.__viewCompletedWait)\n this.viewCompleted = true\n }\n })\n }\n\n protected __onWatchData(): void {\n if (this.watcher.childrenChanged && this.interaction) {\n this.nextRender(() => this.interaction.updateCursor())\n }\n }\n\n public waitInit(item: IFunction, bind?: IObject): void {\n if (bind) item = item.bind(bind)\n if (!this.__initWait) this.__initWait = [] // set() use\n this.canvas ? item() : this.__initWait.push(item)\n }\n\n public waitReady(item: IFunction, bind?: IObject): void {\n if (bind) item = item.bind(bind)\n this.ready ? item() : this.__readyWait.push(item)\n }\n\n public waitViewReady(item: IFunction, bind?: IObject): void {\n if (bind) item = item.bind(bind)\n this.viewReady ? item() : this.__viewReadyWait.push(item)\n }\n\n public waitViewCompleted(item: IFunction, bind?: IObject): void {\n if (bind) item = item.bind(bind)\n this.__viewCompletedWait.push(item)\n if (this.viewCompleted) this.__checkViewCompleted(false)\n else if (!this.running) this.start()\n }\n\n public nextRender(item: IFunction, bind?: IObject, off?: 'off'): void {\n if (bind) item = item.bind(bind)\n const list = this.__nextRenderWait\n if (off) {\n for (let i = 0; i < list.length; i++) {\n if (list[i] === item) { list.splice(i, 1); break }\n }\n } else list.push(item)\n this.requestRender()\n }\n\n // need view plugin\n public zoom(_zoomType: IZoomType, _optionsOrPadding?: IZoomOptions | IFourNumber, _scroll?: 'x' | 'y' | boolean, _transition?: ITransition): IBoundsData {\n return Plugin.need('view')\n }\n\n\n // interaction window rewrite\n public getValidMove(moveX: number, moveY: number, _checkLimit?: boolean): IPointData { return { x: moveX, y: moveY } }\n public getValidScale(changeScale: number): number { return changeScale }\n\n\n public getWorldPointByClient(clientPoint: IClientPointData, updateClient?: boolean): IPointData {\n return this.interaction && this.interaction.getLocal(clientPoint, updateClient)\n }\n\n public getPagePointByClient(clientPoint: IClientPointData, updateClient?: boolean): IPointData {\n return this.getPagePoint(this.getWorldPointByClient(clientPoint, updateClient))\n }\n\n public getClientPointByWorld(worldPoint: IPointData): IPointData {\n const { x, y } = this.clientBounds\n return { x: x + worldPoint.x, y: y + worldPoint.y }\n }\n\n public updateClientBounds(): void {\n this.canvas && this.canvas.updateClientBounds()\n }\n\n // miniapp rewrite\n public receiveEvent(_event: any): void { }\n\n protected emitLeafer(type: string): void {\n this.emitEvent(new LeaferEvent(type, this))\n }\n\n protected __listenEvents(): void {\n const runId = Run.start('FirstCreate ' + this.innerName)\n this.once([\n [LeaferEvent.START, () => Run.end(runId)],\n [LayoutEvent.START, this.updateLazyBounds, this],\n [RenderEvent.START, this.__onCreated, this],\n [RenderEvent.END, this.__onViewReady, this]\n ])\n this.__eventIds.push(\n this.on_([\n [WatchEvent.DATA, this.__onWatchData, this],\n [LayoutEvent.END, this.__onLayoutEnd, this],\n [RenderEvent.NEXT, this.__onNextRender, this]\n ])\n )\n }\n\n protected __removeListenEvents(): void {\n this.off_(this.__eventIds)\n }\n\n override destroy(sync?: boolean): void {\n const doDestory = () => {\n if (!this.destroyed) {\n Leafer.list.remove(this)\n try {\n this.stop()\n this.emitLeafer(LeaferEvent.END)\n this.__removeListenEvents()\n\n this.__controllers.forEach(item => !(this.parent && item === this.interaction) && item.destroy())\n this.__controllers.length = 0\n\n if (!this.parent) {\n if (this.selector) this.selector.destroy()\n if (this.hitCanvasManager) this.hitCanvasManager.destroy()\n this.canvasManager.destroy()\n }\n\n this.canvas.destroy()\n\n this.config.view = this.view = this.parentApp = null\n if (this.userConfig) this.userConfig.view = null\n\n super.destroy()\n\n setTimeout(() => { ImageManager.clearRecycled() }, 100)\n } catch (e) {\n debug.error(e)\n }\n }\n }\n sync ? doDestory() : setTimeout(doDestory)\n }\n}\n","import { dataProcessor, registerUI, rewriteAble, useModule } from '@leafer/core'\n\nimport { IRect, IRectInputData, IRectData } from '@leafer-ui/interface'\nimport { RectData } from '@leafer-ui/data'\nimport { RectRender } from '@leafer-ui/display-module'\n\nimport { UI } from './UI'\n\n\n@useModule(RectRender)\n@rewriteAble()\n@registerUI()\nexport class Rect extends UI implements IRect { // tip: rewrited Box\n\n public get __tag() { return 'Rect' }\n\n @dataProcessor(RectData)\n declare public __: IRectData\n\n constructor(data?: IRectInputData) {\n super(data)\n }\n\n}","import { ILeaferCanvas, IRenderOptions, IBoolean, INumber, IScrollPointData } from '@leafer/interface'\nimport { rewrite, rewriteAble, registerUI, BoundsHelper, dataProcessor, affectRenderBoundsType, dataType, boundsType, DataHelper, getBoundsData } from '@leafer/core'\n\nimport { IBox, IBoxData, IBoxInputData, IOverflow, IScrollConfig, IScroller } from '@leafer-ui/interface'\nimport { BoxData } from '@leafer-ui/data'\n\nimport { Group } from './Group'\nimport { Rect } from './Rect'\n\n\nconst { add, includes, scroll } = BoundsHelper\nconst rect = Rect.prototype, group = Group.prototype\n\n@rewriteAble()\n@registerUI()\nexport class Box extends Group implements IBox {\n\n public get __tag() { return 'Box' }\n\n public get isBranchLeaf(): boolean { return true }\n\n @dataProcessor(BoxData)\n declare public __: IBoxData\n\n // size\n @boundsType(100)\n declare public width?: INumber\n\n @boundsType(100)\n declare public height?: INumber\n\n @dataType(false)\n public resizeChildren?: IBoolean\n\n // @leafer-in/editor rewrite\n public textBox?: IBoolean\n\n @affectRenderBoundsType('show')\n declare public overflow?: IOverflow\n\n public isOverflow?: boolean\n\n // scroller rewrite\n public scrollConfig?: IScrollConfig\n\n public scroller?: IScroller\n public hasScroller?: boolean\n\n constructor(data?: IBoxInputData) {\n super(data)\n this.__layout.renderChanged || this.__layout.renderChange()\n }\n\n @rewrite(rect.__updateStrokeSpread)\n public __updateStrokeSpread(): number { return 0 }\n\n @rewrite(rect.__updateRenderSpread)\n public __updateRectRenderSpread(): number { return 0 }\n\n public __updateRenderSpread(): number { return this.__updateRectRenderSpread() || -1 }\n\n\n @rewrite(rect.__updateBoxBounds)\n public __updateRectBoxBounds(): void { }\n\n\n // @leafer-in/flow will rewrite\n public __updateBoxBounds(_secondLayout?: boolean): void {\n if (this.children.length && !this.pathInputed) {\n\n const data = this.__\n\n if (data.__autoSide) {\n\n if (data.__hasSurface) this.__extraUpdate() // Box自身存在样式,需要额外更新\n\n super.__updateBoxBounds()\n\n const { boxBounds } = this.__layout\n\n if (!data.__autoSize) {\n if (data.__autoWidth) {\n boxBounds.width += boxBounds.x, boxBounds.x = 0\n boxBounds.height = data.height, boxBounds.y = 0\n } else {\n boxBounds.height += boxBounds.y, boxBounds.y = 0\n boxBounds.width = data.width, boxBounds.x = 0\n }\n }\n\n this.__updateNaturalSize()\n\n } else this.__updateRectBoxBounds()\n\n } else this.__updateRectBoxBounds()\n }\n\n @rewrite(rect.__updateStrokeBounds)\n public __updateStrokeBounds(): void { }\n\n public __updateRenderBounds(): void {\n let isOverflow: boolean\n\n if (this.children.length) {\n const data = this.__, layout = this.__layout, { renderBounds, boxBounds } = layout\n\n const childrenRenderBounds = layout.childrenRenderBounds || (layout.childrenRenderBounds = getBoundsData())\n super.__updateRenderBounds(childrenRenderBounds)\n scroll(childrenRenderBounds, data as IScrollPointData) // 增加滚动逻辑\n\n this.__updateRectRenderBounds()\n\n isOverflow = !includes(boxBounds, childrenRenderBounds)\n if (isOverflow && data.overflow === 'show') add(renderBounds, childrenRenderBounds)\n } else this.__updateRectRenderBounds()\n\n DataHelper.stintSet(this, 'isOverflow', isOverflow)\n\n this.__checkScroll()\n }\n\n @rewrite(rect.__updateRenderBounds)\n public __updateRectRenderBounds(): void { }\n\n public __updateWorldBounds(): void {\n if (this.hasScroller) this.__updateScroll()\n super.__updateWorldBounds()\n }\n\n\n // scroller will rewrite\n public __checkScroll(): void { }\n\n public __updateScroll(): void { }\n\n\n @rewrite(rect.__updateChange)\n public __updateRectChange(): void { }\n\n public __updateChange(): void {\n super.__updateChange()\n this.__updateRectChange()\n }\n\n\n @rewrite(rect.__render)\n public __renderRect(_canvas: ILeaferCanvas, _options: IRenderOptions): void { }\n\n @rewrite(group.__render)\n public __renderGroup(_canvas: ILeaferCanvas, _options: IRenderOptions): void { }\n\n\n public __render(canvas: ILeaferCanvas, options: IRenderOptions): void {\n if (this.__.__drawAfterFill) {\n this.__renderRect(canvas, options)\n } else {\n this.__renderRect(canvas, options)\n if (this.children.length) this.__renderGroup(canvas, options)\n }\n if (this.hasScroller) this.scroller.__render(canvas, options)\n }\n\n // in __drawAfterFill()\n public __drawContent(canvas: ILeaferCanvas, options: IRenderOptions): void {\n this.__renderGroup(canvas, options)\n\n if (this.__.__useStroke || this.__.__useEffect) { // 还原绘制路径\n canvas.setWorld(this.__nowWorld)\n this.__drawRenderPath(canvas)\n }\n }\n\n}\n","import { dataProcessor, registerUI, affectRenderBoundsType, surfaceType } from '@leafer/core'\n\nimport { IFrame, IFrameData, IFrameInputData, IFill, IOverflow } from '@leafer-ui/interface'\nimport { FrameData } from '@leafer-ui/data'\n\nimport { Box } from './Box'\n\n\n@registerUI()\nexport class Frame extends Box implements IFrame {\n\n public get __tag() { return 'Frame' }\n\n public get isFrame(): boolean { return true }\n\n @dataProcessor(FrameData)\n declare public __: IFrameData\n\n @surfaceType('#FFFFFF')\n declare public fill?: IFill\n\n @affectRenderBoundsType('hide')\n declare public overflow?: IOverflow\n\n constructor(data?: IFrameInputData) {\n super(data)\n }\n}\n","import { INumber } from '@leafer/interface'\nimport { PathCommandDataHelper, Platform, dataProcessor, pathType, registerUI } from '@leafer/core'\n\nimport { IEllipse, IEllipseInputData, IEllipseData } from '@leafer-ui/interface'\nimport { EllipseData } from '@leafer-ui/data'\n\nimport { UI } from './UI'\n\n\nconst { moveTo, closePath, ellipse } = PathCommandDataHelper\n\n@registerUI()\nexport class Ellipse extends UI implements IEllipse {\n\n public get __tag() { return 'Ellipse' }\n\n @dataProcessor(EllipseData)\n declare public __: IEllipseData\n\n @pathType(0)\n public innerRadius?: INumber\n\n @pathType(0)\n public startAngle?: INumber\n\n @pathType(0)\n public endAngle?: INumber\n\n constructor(data?: IEllipseInputData) {\n super(data)\n }\n\n public __updatePath(): void {\n\n const { width, height, innerRadius, startAngle, endAngle } = this.__\n const rx = width / 2, ry = height / 2\n\n const path: number[] = this.__.path = []\n\n if (innerRadius) {\n\n if (startAngle || endAngle) {\n if (innerRadius < 1) ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius, 0, startAngle, endAngle, false)\n ellipse(path, rx, ry, rx, ry, 0, endAngle, startAngle, true)\n if (innerRadius < 1) closePath(path)\n } else {\n if (innerRadius < 1) {\n ellipse(path, rx, ry, rx * innerRadius, ry * innerRadius)\n moveTo(path, width, ry)\n }\n ellipse(path, rx, ry, rx, ry, 0, 360, 0, true)\n }\n\n // fix node\n if (Platform.ellipseToCurve) this.__.path = this.getPath(true)\n\n } else {\n\n if (startAngle || endAngle) {\n moveTo(path, rx, ry)\n ellipse(path, rx, ry, rx, ry, 0, startAngle, endAngle, false)\n closePath(path)\n } else {\n ellipse(path, rx, ry, rx, ry)\n }\n\n }\n\n }\n\n}","import { IPointData, INumber } from '@leafer/interface'\nimport { PathBounds, PathCommandDataHelper, PointHelper, boundsType, pathType, affectStrokeBoundsType, dataProcessor, registerUI, getPointData } from '@leafer/core'\n\nimport { ILine, ILineData, ILineInputData, IStrokeAlign } from '@leafer-ui/interface'\nimport { LineData } from '@leafer-ui/data'\n\nimport { UI } from './UI'\nimport { PathArrow } from '@leafer-ui/external'\n\n\nconst { moveTo, lineTo, drawPoints } = PathCommandDataHelper\nconst { rotate, getAngle, getDistance, defaultPoint } = PointHelper\nconst { toBounds } = PathBounds\n\n\n@registerUI()\nexport class Line extends UI implements ILine { // tip: rewrited Polygon\n\n public get __tag() { return 'Line' }\n\n @dataProcessor(LineData)\n declare public __: ILineData\n\n @affectStrokeBoundsType('center')\n declare public strokeAlign?: IStrokeAlign\n\n @boundsType(0)\n declare public height?: INumber\n\n @pathType()\n public points?: number[] | IPointData[]\n\n @pathType(0)\n public curve?: boolean | number\n\n @pathType(false)\n declare public closed?: boolean\n\n public get toPoint(): IPointData {\n const { width, rotation } = this.__\n const to: IPointData = getPointData()\n\n if (width) to.x = width\n if (rotation) rotate(to, rotation)\n\n return to\n }\n\n public set toPoint(value: IPointData) {\n this.width = getDistance(defaultPoint, value)\n this.rotation = getAngle(defaultPoint, value)\n if (this.height) this.height = 0\n }\n\n\n constructor(data?: ILineInputData) {\n super(data)\n }\n\n public __updatePath(): void {\n\n const data = this.__\n const path: number[] = data.path = []\n\n if (data.points) {\n\n drawPoints(path, data.points, false, data.closed)\n\n } else {\n\n moveTo(path, 0, 0)\n lineTo(path, this.width, 0)\n }\n\n }\n\n public __updateRenderPath(): void {\n const data = this.__\n if (!this.pathInputed && data.points && data.curve) {\n drawPoints(data.__pathForRender = [], data.points, data.curve, data.closed)\n if (data.__useArrow) PathArrow.addArrows(this, false)\n } else super.__updateRenderPath()\n }\n\n public __updateBoxBounds(): void {\n if (this.points) {\n toBounds(this.__.__pathForRender, this.__layout.boxBounds)\n } else super.__updateBoxBounds()\n }\n\n}","import { INumber, IPointData } from '@leafer/interface'\nimport { PathCommandDataHelper, dataProcessor, pathType, registerUI, rewrite, rewriteAble } from '@leafer/core'\n\nimport { IPolygon, IPolygonData, IPolygonInputData } from '@leafer-ui/interface'\nimport { PolygonData } from '@leafer-ui/data'\n\nimport { UI } from './UI'\nimport { Line } from './Line'\n\n\nconst { sin, cos, PI } = Math\nconst { moveTo, lineTo, closePath, drawPoints } = PathCommandDataHelper\nconst line = Line.prototype\n\n@rewriteAble()\n@registerUI()\nexport class Polygon extends UI implements IPolygon {\n\n public get __tag() { return 'Polygon' }\n\n @dataProcessor(PolygonData)\n declare public __: IPolygonData\n\n @pathType(3)\n public sides?: INumber\n\n @pathType()\n public points?: number[] | IPointData[]\n\n @pathType(0)\n public curve?: boolean | number\n\n constructor(data?: IPolygonInputData) {\n super(data)\n }\n\n public __updatePath(): void {\n\n const path: number[] = this.__.path = []\n\n if (this.__.points) {\n\n drawPoints(path, this.__.points, false, true)\n\n } else {\n\n const { width, height, sides } = this.__\n const rx = width / 2, ry = height / 2\n\n moveTo(path, rx, 0)\n\n for (let i = 1; i < sides; i++) {\n lineTo(path, rx + rx * sin((i * 2 * PI) / sides), ry - ry * cos((i * 2 * PI) / sides))\n }\n\n closePath(path)\n\n }\n\n }\n\n @rewrite(line.__updateRenderPath)\n public __updateRenderPath(): void { }\n\n @rewrite(line.__updateBoxBounds)\n public __updateBoxBounds(): void { }\n\n}","import { INumber } from '@leafer/interface'\nimport { PathCommandDataHelper, dataProcessor, pathType, registerUI } from '@leafer/core'\n\nimport { IStar, IStarData, IStarInputData } from '@leafer-ui/interface'\nimport { StarData } from '@leafer-ui/data'\n\nimport { UI } from './UI'\n\n\nconst { sin, cos, PI } = Math\nconst { moveTo, lineTo, closePath } = PathCommandDataHelper\n\n\n@registerUI()\nexport class Star extends UI implements IStar {\n\n public get __tag() { return 'Star' }\n\n @dataProcessor(StarData)\n declare public __: IStarData\n\n @pathType(5)\n public corners?: INumber\n\n @pathType(0.382)\n public innerRadius?: INumber\n\n constructor(data?: IStarInputData) {\n super(data)\n }\n\n public __updatePath() {\n\n const { width, height, corners, innerRadius } = this.__\n const rx = width / 2, ry = height / 2\n\n const path: number[] = this.__.path = []\n moveTo(path, rx, 0)\n\n for (let i = 1; i < corners * 2; i++) {\n lineTo(path, rx + (i % 2 === 0 ? rx : rx * innerRadius) * sin((i * PI) / corners), ry - (i % 2 === 0 ? ry : ry * innerRadius) * cos((i * PI) / corners))\n }\n\n closePath(path)\n\n }\n\n}","import { ILeaferImage, IString } from '@leafer/interface'\nimport { boundsType, dataProcessor, registerUI, isArray } from '@leafer/core'\n\nimport { IImage, IImageInputData, IImageData } from '@leafer-ui/interface'\nimport { ImageData } from '@leafer-ui/data'\n\nimport { Rect } from './Rect'\n\n\n@registerUI()\nexport class Image extends Rect implements IImage {\n\n public get __tag() { return 'Image' }\n\n @dataProcessor(ImageData)\n declare public __: IImageData\n\n @boundsType('')\n public url: IString\n\n public get ready(): boolean { const { image } = this; return image && image.ready }\n\n public get image(): ILeaferImage { const { fill } = this.__; return isArray(fill) && fill[0].image }\n\n constructor(data?: IImageInputData) {\n super(data)\n }\n\n}\n\nexport const MyImage = Image","import { ILeaferCanvas, ILeaferCanvasConfig, INumber, IRenderOptions, IPointData, ICanvasContext2D, ICanvasContext2DSettings, IScreenSizeData } from '@leafer/interface'\nimport { Creator, ImageEvent, LeaferImage, Matrix, dataProcessor, dataType, registerUI, isNumber } from '@leafer/core'\n\nimport { ICanvas, ICanvasData, ICanvasInputData, IUI } from '@leafer-ui/interface'\nimport { CanvasData } from '@leafer-ui/data'\nimport { resizeType } from '@leafer-ui/decorator'\n\nimport { Rect } from './Rect'\n\n\n@registerUI()\nexport class Canvas extends Rect implements ICanvas {\n\n public get __tag() { return 'Canvas' }\n\n @dataProcessor(CanvasData)\n declare public __: ICanvasData\n\n @resizeType(100)\n declare public width?: INumber\n\n @resizeType(100)\n declare public height?: INumber\n\n @resizeType(1)\n declare public pixelRatio?: INumber\n\n @resizeType(true)\n public smooth?: boolean\n\n @dataType(false)\n public safeResize?: boolean\n\n @resizeType()\n public contextSettings?: ICanvasContext2DSettings\n\n public canvas?: ILeaferCanvas\n\n public get context(): ICanvasContext2D { return this.canvas.context }\n\n public get ready(): boolean { return !this.url }\n\n public url?: string // 用于临时加载canvas的base64数据,完成后会置空\n\n constructor(data?: ICanvasInputData) {\n super(data)\n this.canvas = Creator.canvas(this.__ as ILeaferCanvasConfig)\n if (data && data.url) this.drawImage(data.url)\n }\n\n public drawImage(url: string): void {\n new LeaferImage({ url }).load((image: LeaferImage) => {\n this.context.drawImage(image.view, 0, 0)\n this.url = undefined\n this.paint()\n this.emitEvent(new ImageEvent(ImageEvent.LOADED, { image }))\n })\n }\n\n public draw(ui: IUI, offset?: IPointData, scale?: number | IPointData, rotation?: number): void {\n const matrix = new Matrix(ui.worldTransform).invert()\n\n const m = new Matrix()\n if (offset) m.translate(offset.x, offset.y)\n if (scale) isNumber(scale) ? m.scale(scale) : m.scale(scale.x, scale.y)\n if (rotation) m.rotate(rotation)\n matrix.multiplyParent(m)\n\n ui.__render(this.canvas, { matrix: matrix.withScale() })\n this.paint()\n }\n\n public paint(): void {\n this.forceRender()\n }\n\n // in __drawAfterFill()\n public __drawContent(canvas: ILeaferCanvas, _options: IRenderOptions): void {\n const { width, height } = this.__, { view } = this.canvas\n canvas.drawImage(view, 0, 0, view.width, view.height, 0, 0, width, height)\n }\n\n public __updateSize(): void {\n const { canvas } = this\n if (canvas) {\n const { smooth, safeResize } = this.__\n canvas.resize(this.__ as IScreenSizeData, safeResize)\n if (canvas.smooth !== smooth) canvas.smooth = smooth\n }\n }\n\n public destroy(): void {\n if (this.canvas) {\n this.canvas.destroy()\n this.canvas = null\n }\n super.destroy()\n }\n\n}","import { ILeaferCanvas, IBoolean, INumber, IString, IBoundsData, IUnitData, IRenderOptions } from '@leafer/interface'\nimport { BoundsHelper, boundsType, surfaceType, dataProcessor, registerUI, affectStrokeBoundsType, dataType, hitType, MathHelper, DataHelper } from '@leafer/core'\n\nimport { IFill, IText, IFontWeight, ITextCase, ITextDecoration, ITextData, ITextInputData, ITextAlign, IVerticalAlign, ITextDrawData, ITextOverflow, IStrokeAlign, IHitType, ITextWrap, IWritingMode, IBackgroundBoxStyle } from '@leafer-ui/interface'\nimport { TextData } from '@leafer-ui/data'\n\nimport { TextConvert, UnitConvert } from '@leafer-ui/external'\n\nimport { UI } from './UI'\n\n\nconst { copyAndSpread, includes, spread, setList } = BoundsHelper\n\n@registerUI()\nexport class Text extends UI implements IText {\n\n public get __tag() { return 'Text' }\n\n @dataProcessor(TextData)\n declare public __: ITextData\n\n // size\n @boundsType(0)\n declare public width?: INumber\n\n @boundsType(0)\n declare public height?: INumber\n\n @surfaceType()\n public boxStyle: IBackgroundBoxStyle\n\n @dataType(false)\n public resizeFontSize?: IBoolean\n\n @surfaceType('#000000')\n declare public fill?: IFill\n\n @affectStrokeBoundsType('outside')\n declare public strokeAlign?: IStrokeAlign\n\n @hitType('all')\n declare public hitFill?: IHitType\n\n @boundsType('')\n public text?: IString | INumber\n\n @boundsType('')\n public placeholder?: IString\n\n @boundsType('caption')\n public fontFamily?: IString\n\n @boundsType(12)\n public fontSize?: INumber\n\n @boundsType('normal')\n public fontWeight?: IFontWeight\n\n @boundsType(false)\n public italic?: IBoolean\n\n @boundsType('none')\n public textCase?: ITextCase\n\n @boundsType('none')\n public textDecoration?: ITextDecoration\n\n @boundsType(0)\n public letterSpacing?: INumber | IUnitData\n\n @boundsType({ type: 'percent', value: 1.5 } as IUnitData)\n public lineHeight?: INumber | IUnitData\n\n @boundsType(0)\n public paraIndent?: INumber\n\n @boundsType(0)\n public paraSpacing?: INumber\n\n @boundsType('x')\n public writingMode?: IWritingMode\n\n @boundsType('left')\n public textAlign?: ITextAlign\n\n @boundsType('top')\n public verticalAlign?: IVerticalAlign\n\n @boundsType(true)\n public autoSizeAlign?: IBoolean\n\n @boundsType('normal')\n public textWrap?: ITextWrap\n\n @boundsType('show')\n public textOverflow?: ITextOverflow\n\n @surfaceType(false)\n public textEditing: boolean\n\n public isOverflow: boolean\n\n public get textDrawData(): ITextDrawData { this.updateLayout(); return this.__.__textDrawData }\n\n\n constructor(data?: ITextInputData) {\n super(data)\n }\n\n public __updateTextDrawData(): void {\n const data = this.__\n const { lineHeight, letterSpacing, fontFamily, fontSize, fontWeight, italic, textCase, textOverflow, padding } = data\n\n data.__lineHeight = UnitConvert.number(lineHeight, fontSize)\n data.__letterSpacing = UnitConvert.number(letterSpacing, fontSize)\n data.__padding = padding ? MathHelper.fourNumber(padding) : undefined\n data.__baseLine = data.__lineHeight - (data.__lineHeight - fontSize * 0.7) / 2 // 基线位置\n data.__font = `${italic ? 'italic ' : ''}${textCase === 'small-caps' ? 'small-caps ' : ''}${fontWeight !== 'normal' ? fontWeight + ' ' : ''}${fontSize || 12}px ${fontFamily || 'caption'}`\n data.__clipText = textOverflow !== 'show' && !data.__autoSize\n\n data.__textDrawData = TextConvert.getDrawData((data.__isPlacehold = data.placeholder && data.text === '') ? data.placeholder : data.text, this.__)\n }\n\n override __updateBoxBounds(): void {\n\n const data = this.__\n const layout = this.__layout\n const { fontSize, italic, padding, __autoWidth: autoWidth, __autoHeight: autoHeight } = data\n\n this.__updateTextDrawData() // layout text\n\n const { bounds: contentBounds } = data.__textDrawData\n const b = layout.boxBounds\n\n layout.contentBounds = contentBounds\n\n if (data.__lineHeight < fontSize) spread(contentBounds, fontSize / 2)\n\n if (autoWidth || autoHeight) {\n b.x = autoWidth ? contentBounds.x : 0\n b.y = autoHeight ? contentBounds.y : 0\n b.width = autoWidth ? contentBounds.width : data.width\n b.height = autoHeight ? contentBounds.height : data.height\n\n if (padding) {\n const [top, right, bottom, left] = data.__padding\n if (autoWidth) b.x -= left, b.width += (right + left)\n if (autoHeight) b.y -= top, b.height += (bottom + top)\n }\n this.__updateNaturalSize()\n } else super.__updateBoxBounds()\n\n if (italic) b.width += fontSize * 0.16 // 倾斜会导致文本的bounds增大\n\n DataHelper.stintSet(this, 'isOverflow', !includes(b, contentBounds))\n\n if (this.isOverflow) setList(data.__textBoxBounds = {} as IBoundsData, [b, contentBounds]), layout.renderChanged = true\n else data.__textBoxBounds = b\n }\n\n override __onUpdateSize(): void {\n if (this.__box) this.__box.__onUpdateSize()\n super.__onUpdateSize()\n }\n\n override __updateRenderSpread(): number {\n let width = super.__updateRenderSpread()\n if (!width) width = this.isOverflow ? 1 : 0\n return width\n }\n\n override __updateRenderBounds(): void {\n const { renderBounds, renderSpread } = this.__layout\n copyAndSpread(renderBounds, this.__.__textBoxBounds, renderSpread)\n if (this.__box) this.__box.__layout.renderBounds = renderBounds\n }\n\n override __drawRenderPath(canvas: ILeaferCanvas): void {\n canvas.font = this.__.__font\n }\n\n override __draw(canvas: ILeaferCanvas, options: IRenderOptions, originCanvas?: ILeaferCanvas): void {\n const box = this.__box\n if (box) box.__nowWorld = this.__nowWorld, box.__draw(canvas, options, originCanvas)\n if (this.textEditing && !options.exporting) return\n super.__draw(canvas, options, originCanvas)\n }\n\n override __drawShape(canvas: ILeaferCanvas, options: IRenderOptions): void {\n if (options.shape) this.__box && this.__box.__drawShape(canvas, options)\n super.__drawShape(canvas, options)\n }\n\n override destroy(): void {\n if (this.boxStyle) this.boxStyle = null\n super.destroy()\n }\n\n}","import { dataProcessor, affectStrokeBoundsType, registerUI } from '@leafer/core'\n\nimport { IPath, IPathData, IPathInputData, IStrokeAlign } from '@leafer-ui/interface'\nimport { PathData } from '@leafer-ui/data'\n\nimport { UI } from './UI'\n\n\n@registerUI()\nexport class Path extends UI implements IPath {\n\n public get __tag() { return 'Path' }\n\n @dataProcessor(PathData)\n declare public __: IPathData\n\n @affectStrokeBoundsType('center')\n declare public strokeAlign?: IStrokeAlign\n\n constructor(data?: IPathInputData) {\n super(data)\n }\n\n}","import { PathCreator, dataProcessor, defineKey, registerUI, useModule } from '@leafer/core'\n\nimport { IPenData, IPenInputData, IPathInputData, IPathCommandData, IPath, IPen, IPointData } from '@leafer-ui/interface'\nimport { PenData } from '@leafer-ui/data'\n\nimport { Group } from './Group'\nimport { Path } from './Path'\n\n@useModule(PathCreator, ['set', 'path', 'paint'])\n@registerUI()\nexport class Pen extends Group implements IPen {\n\n public get __tag() { return 'Pen' }\n\n @dataProcessor(PenData)\n declare public __: IPenData\n\n public pathElement: IPath\n public pathStyle: IPathInputData\n\n @penPathType()\n declare public path: IPathCommandData // use __path, readonly\n\n public __path: IPathCommandData\n\n constructor(data?: IPenInputData) {\n super(data)\n }\n\n public setStyle(data: IPathInputData): Pen {\n const path = this.pathElement = new Path(data)\n this.pathStyle = data\n this.__path = path.path as IPathCommandData || (path.path = [])\n this.add(path)\n return this\n }\n\n // svg and canvas\n\n public beginPath(): Pen { return this }\n\n public moveTo(_x: number, _y: number): Pen { return this }\n\n public lineTo(_x: number, _y: number): Pen { return this }\n\n public bezierCurveTo(_x1: number, _y1: number, _x2: number, _y2: number, _x: number, _y: number): Pen { return this }\n\n public quadraticCurveTo(_x1: number, _y1: number, _x: number, _y: number): Pen { return this }\n\n public closePath(): Pen { return this }\n\n\n // canvas\n\n public rect(_x: number, _y: number, _width: number, _height: number): Pen { return this }\n\n public roundRect(_x: number, _y: number, _width: number, _height: number, _cornerRadius: number | number[]): Pen { return this }\n\n public ellipse(_x: number, _y: number, _radiusX: number, _radiusY: number, _rotation?: number, _startAngle?: number, _endAngle?: number, _anticlockwise?: boolean): Pen { return this }\n\n public arc(_x: number, _y: number, _radius: number, _startAngle?: number, _endAngle?: number, _anticlockwise?: boolean): Pen { return this }\n\n public arcTo(_x1: number, _y1: number, _x2: number, _y2: number, _radius: number): Pen { return this }\n\n\n // moveTo, then draw\n\n public drawEllipse(_x: number, _y: number, _radiusX: number, _radiusY: number, _rotation?: number, _startAngle?: number, _endAngle?: number, _anticlockwise?: boolean): Pen { return this }\n\n public drawArc(_x: number, _y: number, _radius: number, _startAngle?: number, _endAngle?: number, _anticlockwise?: boolean): Pen { return this }\n\n public drawPoints(_points: number[] | IPointData[], _curve?: boolean | number, _close?: boolean): Pen { return this }\n\n public clearPath(): Pen { return this } // = beginPath()\n\n\n public paint(): void {\n if (!this.pathElement.__layout.boxChanged) this.pathElement.forceUpdate('path')\n }\n\n}\n\nfunction penPathType() {\n return (target: IPen, key: string) => {\n defineKey(target, key, {\n get() { return this.__path }\n })\n }\n}"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","effectType","defaultValue","decorateLeafAttr","attr","set","value","this","__setAttr","__","__useEffect","__layout","renderChanged","renderChange","resizeType","boxChanged","boxChange","__updateSize","zoomLayerType","privateKey","defineKey","isLeafer","get","isApp","tree","zoomLayer","leafer","SuppressedError","TextConvert","ColorConvert","color","first","lastIndexOf","parseFloat","slice","UnitConvert","number","percentRefer","isObject","type","PathArrow","Paint","PaintImage","Effect","Filter","apply","Plugin","need","Export","State","setStyleName","Transition","list","register","attrName","fn","parse","objectToCanvasData","PathConvert","stintSet","DataHelper","hasTransparent","emptyPaint","debug","Debug","UIData","LeafData","scale","scaleX","scaleY","x","y","__strokeWidth","__getRealStrokeWidth","__maxStrokeWidth","t","__hasMultiStrokeStyle","Math","max","strokeWidth","__hasMultiPaint","fill","__useStroke","__isFills","__isStrokes","stroke","__clipAfterFill","cornerRadius","innerShadow","__pathInputed","__hasSurface","__autoWidth","_width","__autoHeight","_height","__autoSide","__autoSize","setVisible","_visible","__leaf","watcher","hasVisible","setWidth","warn","setHeight","setFill","__naturalWidth","__removeNaturalSize","isString","__removePaint","_fill","__setPaint","setStroke","_stroke","setPath","isStr","__setInput","_path","__input","__removeInput","setShadow","setArray","setInnerShadow","setFilter","__computePaint","compute","__needComputePaint","undefined","childStyle","strokeWidthFixed","isUndefined","getClampRenderScale","layout","isArray","removeInput","recycleImage","data","some","item","visible","filter","GroupData","BoxData","__boxStroke","__drawAfterFill","__single","overflow","children","isOverflow","super","LeaferData","__getInputData","names","options","canvasSizeAttrs","forEach","FrameData","LineData","RectData","EllipseData","PolygonData","StarData","PathData","PenData","fontWeightMap","thin","light","normal","medium","bold","black","TextData","__useNaturalRatio","setFontWeight","_fontWeight","setBoxStyle","box","__box","boxStyle","UICreator","boxLayout","parent","__world","boxBounds","strokeChanged","strokeChange","__updateChange","destroy","_boxStyle","ImageData","setUrl","__setImageFill","_url","mode","url","__getData","CanvasData","__isCanvas","canvas","toDataURL","UIBounds","__updateStrokeSpread","width","boxWidth","strokeAlign","hitStroke","miterLimitAddWidth","__isLinePath","storkeCapAddWidth","strokeCap","__useArrow","strokeSpread","strokeBoxSpread","__updateRenderSpread","shadow","blur","backgroundBlur","renderSpread","abs","spread","getSpread","shapeWidth","ceil","renderShapeSpread","DragBoundsHelper","getValidMove","content","dragBounds","dragBoundsType","move","change","right","bottom","height","boundsRight","boundsBottom","assign","isBiggerWidth","isBiggerHeight","MathHelper","float","axisMove","leaf","draggable","limitMove","D","__localBoxBounds","UIRender","useStroke","__isTransparentFill","otherEffect","useFastShadow","__checkSingle","__drawFast","drawFast","__draw","originCanvas","__complex","__fillAfterStroke","__isFastShadow","__drawRenderPath","shape","__nowWorld","__getNowWorld","strokes","fills","worldCanvas","recycle","getRenderScaleData","scaleFixed","save","setWorldShadow","string","restore","__drawShape","ignoreFill","__isAlphaPixelFill","ignoreStroke","__isAlphaPixelStroke","clipUI","__drawContent","ui","RectRender","fillStyle","fillRect","half","strokeRect","__clip","UI","UI_1","Leaf","app","isFrame","assignScale","isAutoWidth","autoWidth","isAutoHeight","autoHeight","pen","path","__drawPathByBox","constructor","reset","_data","transition","lockNormalStyle","animate","name","__getInput","createProxyData","find","_condition","_options","findTag","tag","findOne","findId","id","getPath","curve","pathForRender","update","__pathForRender","toCanvasData","getPathString","floatLength","stringify","load","__onUpdateSize","lazy","__inLazyBounds","running","__updateRenderPath","PathCorner","smooth","cornerSmoothing","addArrows","beginPath","__drawPathByData","__drawPath","drawer","PathDrawer","drawPathByData","roundRect","isNumber","rect","drawImagePlaceholder","_image","placeholderColor","_keyframe","_type","_isTemp","killAnimate","_nextStyle","_filename","syncExport","clone","json","toJSON","one","prototype","__tag","registerUI","registerData","dataProcessor","setEditConfig","_config","setEditOuter","_toolName","setEditInner","_editorName","__animate","dataType","surfaceType","opacityType","visibleType","sortType","maskType","eraserType","positionType","boundsType","scaleType","rotationType","scrollType","autoLayoutType","naturalBoundsType","affectRenderBoundsType","pathInputType","pathType","hitType","strokeType","cursorType","rewrite","useModule","rewriteAble","Group","isBranch","__setBranch","clear","child","add","childlessJSON","map","pick","_hitPoint","addAt","index","addAfter","after","indexOf","addBefore","before","_child","_index","addMany","_children","remove","_destroy","removeAll","Branch","Leafer","Leafer_1","imageReady","viewReady","Resource","isComplete","layoutLocked","layouter","FPS","renderer","cursorPoint","interaction","hoverData","clientBounds","getClientBounds","getBoundsData","userConfig","config","start","hittable","lazySpeard","leafs","__eventIds","__controllers","__readyWait","__viewReadyWait","__viewCompletedWait","__nextRenderWait","view","init","parentApp","__setLeafer","__bindApp","initType","Creator","push","__setApp","__checkAutoLayout","selector","unshift","hitCanvasManager","canvasManager","CanvasManager","__listenEvents","__startTimer","setTimeout","bind","WaitHelper","run","__initWait","onInit","waitInit","clearTimeout","ready","emitLeafer","LeaferEvent","RESTART","START","render","stop","STOP","unlockLayout","updateLayout","lockLayout","resize","size","copyAttrs","keys","forceRender","bounds","sync","addBlock","Bounds","requestRender","updateCursor","cursor","setCursor","updateLazyBounds","lazyBounds","__doResize","isSameSize","old","__onResize","ResizeEvent","event","emitEvent","clearRecycled","__level","autoLayout","AutoBounds","startAutoLayout","newValue","includes","__changeCanvasSize","__changeFill","zIndex","__updateSortChildren","__getAttr","stopAutoLayout","allowBackgroundColor","backgroundColor","__onCreated","created","__onReady","BEFORE_READY","READY","AFTER_READY","__onViewReady","VIEW_READY","__onLayoutEnd","grow","fixedWidth","fixedHeight","pixelRatio","worldBoxBounds","__onNextRender","viewCompleted","__checkViewCompleted","emit","nextRender","VIEW_COMPLETED","__onWatchData","childrenChanged","waitReady","waitViewReady","waitViewCompleted","off","splice","zoom","_zoomType","_optionsOrPadding","_scroll","_transition","moveX","moveY","_checkLimit","getValidScale","changeScale","getWorldPointByClient","clientPoint","updateClient","getLocal","getPagePointByClient","getPagePoint","getClientPointByWorld","worldPoint","updateClientBounds","receiveEvent","_event","runId","Run","innerName","once","end","LayoutEvent","RenderEvent","END","on_","WatchEvent","DATA","NEXT","__removeListenEvents","off_","doDestory","destroyed","ImageManager","e","error","LeafList","Rect","scroll","BoundsHelper","group","Box","isBranchLeaf","__updateRectRenderSpread","__updateRectBoxBounds","__updateBoxBounds","_secondLayout","pathInputed","__extraUpdate","__updateNaturalSize","__updateStrokeBounds","__updateRenderBounds","renderBounds","childrenRenderBounds","__updateRectRenderBounds","__checkScroll","__updateWorldBounds","hasScroller","__updateScroll","__updateRectChange","__renderRect","_canvas","__renderGroup","__render","scroller","setWorld","Frame","moveTo","closePath","ellipse","PathCommandDataHelper","Ellipse","__updatePath","innerRadius","startAngle","endAngle","rx","ry","Platform","ellipseToCurve","lineTo","drawPoints","rotate","getAngle","getDistance","defaultPoint","PointHelper","toBounds","PathBounds","Line","toPoint","rotation","to","getPointData","points","closed","affectStrokeBoundsType","sin","cos","PI","line","Polygon","sides","Star","corners","Image","image","MyImage","Canvas","context","drawImage","LeaferImage","paint","ImageEvent","LOADED","draw","offset","matrix","Matrix","worldTransform","invert","m","translate","multiplyParent","withScale","safeResize","copyAndSpread","setList","Text","textDrawData","__textDrawData","__updateTextDrawData","lineHeight","letterSpacing","fontFamily","fontSize","fontWeight","italic","textCase","textOverflow","padding","__lineHeight","__letterSpacing","__padding","fourNumber","__baseLine","__font","__clipText","getDrawData","__isPlacehold","placeholder","text","contentBounds","b","top","left","__textBoxBounds","font","textEditing","exporting","Path","Pen","setStyle","pathElement","pathStyle","__path","_x","_y","bezierCurveTo","_x1","_y1","_x2","_y2","quadraticCurveTo","_cornerRadius","_radiusX","_radiusY","_rotation","_startAngle","_endAngle","_anticlockwise","arc","_radius","arcTo","drawEllipse","drawArc","_points","_curve","_close","clearPath","forceUpdate","PathCreator","createDescriptor"],"mappings":"2CAsDO,SAASA,EAAWC,EAAYC,EAAQC,EAAKC,GAChD,IAA2HC,EAAvHC,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIJ,EAAkB,OAATE,EAAgBA,EAAOM,OAAOC,yBAAyBT,EAAQC,GAAOC,EACrH,GAAuB,iBAAZQ,SAAoD,mBAArBA,QAAQC,SAAyBJ,EAAIG,QAAQC,SAASZ,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIU,EAAIb,EAAWO,OAAS,EAAGM,GAAK,EAAGA,KAAST,EAAIJ,EAAWa,MAAIL,GAAKH,EAAI,EAAID,EAAEI,GAAKH,EAAI,EAAID,EAAEH,EAAQC,EAAKM,GAAKJ,EAAEH,EAAQC,KAASM,GAChJ,OAAOH,EAAI,GAAKG,GAAKC,OAAOK,eAAeb,EAAQC,EAAKM,GAAIA,CAChE,CCrDM,SAAUO,EAAWC,GACvB,OAAOC,mBAAiBD,EAAed,GAAgBgB,EAAAA,KAAK,CACxD,GAAAC,CAAIC,GACAC,KAAKC,UAAUpB,EAAKkB,GAChBA,IAAQC,KAAaE,GAAGC,aAAc,GAC1CH,KAAKI,SAASC,eAAiBL,KAAKI,SAASE,cACjD,IAER,CAEM,SAAUC,EAAWZ,GACvB,OAAOC,mBAAiBD,EAAed,GAAgBgB,EAAAA,KAAK,CACxD,GAAAC,CAAIC,GACAC,KAAKC,UAAUpB,EAAKkB,GACpBC,KAAKI,SAASI,YAAcR,KAAKI,SAASK,YACzCT,KAAiBU,cACtB,IAER,UAEgBC,IACZ,MAAO,CAAC/B,EAAaC,KACjB,MAAM+B,EAAa,IAAM/B,EACzBgC,EAAAA,UAAUjC,EAAQC,EAAK,CACnB,GAAAiB,CAAIC,GAAkBC,KAAKc,WAAWd,KAAiBY,GAAcb,EAAM,EAC3E,GAAAgB,GACI,OAAOf,KAAKgB,MACLhB,KAAciB,KAAKC,UACnBlB,KAAKc,SAAad,KAAiBY,IAAeZ,KAAQA,KAAKmB,QAAUnB,KAAKmB,OAAOD,SAChG,IAGZ,CDkSkD,mBAApBE,iBAAiCA,gBElUxD,MAAMC,EAAc,CAAA,EAEdC,EAAe,gBCRtB,SAAyBC,GAE3B,IAAKA,GAA0B,IAAjBA,EAAMrC,QAAiC,IAAjBqC,EAAMrC,OAAc,OAAO,EAC/D,GAAc,gBAAVqC,EAAyB,OAAO,EAEpC,MAAMC,EAAQD,EAAM,GAEpB,GAAc,MAAVC,EAGA,OAAQD,EAAMrC,QACV,KAAK,EAAG,MAAoB,MAAbqC,EAAM,IAA2B,MAAbA,EAAM,GACzC,KAAK,EAAG,MAAqB,MAAbA,EAAM,IAA2B,MAAbA,EAAM,IAA6B,MAAbA,EAAM,IAA2B,MAAbA,EAAM,QAGrF,IAAc,MAAVC,GAA2B,MAAVA,IAGP,MAAbD,EAAM,GAAY,CAClB,MAAM/B,EAAI+B,EAAME,YAAY,KAC5B,GAAIjC,GAAI,EAAI,OAAOkC,WAAWH,EAAMI,MAAMnC,EAAI,IAAM,CACxD,CAIJ,OAAO,CAEX,GDfaoC,EAAc,CACvBC,OAAM,CAAC9B,EAA2B+B,IACvBC,WAAShC,GAAyB,YAAfA,EAAMiC,KAAqBjC,EAAMA,MAAQ+B,EAAe/B,EAAMA,MAASA,GAK5FkC,EAAY,CAAA,EAGZC,EAAQ,CAAA,EAERC,EAAa,CAAA,EAIbC,EAAS,CAAA,EAETC,EAAS,CAClB,KAAAC,GAAgBC,EAAAA,OAAOC,KAAK,SAAU,GAG7BC,EAAS,CAAA,EAETC,EAAQ,CACjBC,aAAY,IAAkBJ,EAAAA,OAAOC,KAAK,SAC1C1C,IAAG,IAAkByC,EAAAA,OAAOC,KAAK,UAGxBI,EAAa,CACtBC,KAAM,CAAA,EACN,QAAAC,CAASC,EAAkBC,GAAiCJ,EAAWC,KAAKE,GAAYC,CAAG,EAC3FjC,IAAIgC,GAAgDH,EAAWC,KAAKE,KErClEE,MAAEA,EAAKC,mBAAEA,GAAuBC,EAAAA,aAChCC,SAAEA,GAAaC,EAAAA,YAAYC,eAAEA,GAAmBhC,EAChDiC,EAAyB,CAAA,EACzBC,EAAQC,EAAAA,MAAM1C,IAAI,UAClB,MAAO2C,UAAeC,EAAAA,SAIxB,SAAWC,GAAgC,MAAMC,OAAEA,EAAMC,OAAEA,GAAW9D,KAAiB,OAAO6D,IAAWC,EAAS,CAAEC,EAAGF,EAAQG,EAAGF,GAAWD,CAAO,CAOpJ,iBAAWI,GAA0B,OAAOjE,KAAKkE,sBAAuB,CAExE,oBAAWC,GAA6B,MAAMC,EAAIpE,KAAiB,OAAOoE,EAAEC,sBAAwBC,KAAKC,IAAIH,EAAEC,sBAAuBD,EAAEI,aAAeJ,EAAEI,WAAY,CAIrK,mBAAWC,GAA6B,MAAML,EAAIpE,KAAiB,OAAQoE,EAAEM,MAAQ1E,KAAK2E,aAAiBP,EAAEQ,WAAaR,EAAEM,KAAKxF,OAAS,GAAOkF,EAAES,aAAeT,EAAEU,OAAO5F,OAAS,GAAMkF,EAAEjE,WAAY,CAQxM,mBAAW4E,GAA6B,MAAMX,EAAIpE,KAAiB,OAAQoE,EAAEY,cAAgBZ,EAAEa,aAAeb,EAAEc,aAAqC,CACrJ,gBAAWC,GAAqD,OAAjBnF,KAA2B0E,MAA3B1E,KAAqC8E,MAA8B,CAiBlH,eAAWM,GAAgB,OAAQpF,KAAKqF,MAAO,CAC/C,gBAAWC,GAAiB,OAAQtF,KAAKuF,OAAQ,CACjD,cAAWC,GAAe,OAAQxF,KAAKqF,SAAWrF,KAAKuF,OAAQ,CAC/D,cAAWE,GAAe,OAAQzF,KAAKqF,SAAWrF,KAAKuF,OAAQ,CAGrD,UAAAG,CAAW3F,GACjBC,KAAK2F,SAAW5F,EAEhB,MAAMoB,OAAEA,GAAWnB,KAAK4F,OACpBzE,IAAQA,EAAO0E,QAAQC,YAAa,EAC5C,CAEU,QAAAC,CAAShG,GACXA,EAAQ,GACRC,KAAKqF,QAAUtF,EACfC,KAAK4F,OAAO/B,SAAU,EACtBL,EAAMwC,KAAK,8BAA+BhG,OACvCA,KAAKqF,OAAStF,CACzB,CAEU,SAAAkG,CAAUlG,GACZA,EAAQ,GACRC,KAAKuF,SAAWxF,EAChBC,KAAK4F,OAAO9B,SAAU,EACtBN,EAAMwC,KAAK,8BAA+BhG,OACvCA,KAAKuF,QAAUxF,CAC1B,CAGU,OAAAmG,CAAQnG,GACVC,KAAKmG,gBAAgBnG,KAAKoG,sBAC1BC,WAAStG,KAAWA,GACpBqD,EAASpD,KAAM,sBAAuBsD,EAAevD,IACrDC,KAAK4E,WAAa5E,KAAKsG,cAAc,QAAQ,GAC7CtG,KAAKuG,MAAQxG,GACNgC,EAAAA,SAAShC,IAChBC,KAAKwG,WAAW,OAAQzG,EAEhC,CAEU,SAAA0G,CAAU1G,GACZsG,WAAStG,KAAWA,GACpBqD,EAASpD,KAAM,wBAAyBsD,EAAevD,IACvDC,KAAK6E,aAAe7E,KAAKsG,cAAc,UAAU,GACjDtG,KAAK0G,QAAU3G,GACRgC,EAAAA,SAAShC,IAChBC,KAAKwG,WAAW,SAAUzG,EAElC,CAGU,OAAA4G,CAAQ5G,GACd,MAAM6G,EAAQP,EAAAA,SAAStG,GACnB6G,GAAU7G,GAASgC,EAAAA,SAAShC,EAAM,KAClCC,KAAK6G,WAAW,OAAQ9G,GACxBC,KAAK8G,MAAQF,EAAQ3D,EAAMlD,GAASmD,EAAmBnD,KAEnDC,KAAK+G,SAAS/G,KAAKgH,cAAc,QACrChH,KAAK8G,MAAQ/G,EAErB,CAGU,SAAAkH,CAAUlH,GAChBmH,EAASlH,KAAM,SAAUD,EAC7B,CAEU,cAAAoH,CAAepH,GACrBmH,EAASlH,KAAM,cAAeD,EAClC,CAEU,SAAAqH,CAAUrH,GAChBmH,EAASlH,KAAM,SAAUD,EAC7B,CAKO,cAAAsH,GACH,MAAM3C,KAAEA,EAAII,OAAEA,GAAW9E,KAAK+G,QAC1BrC,GAAMxC,EAAMoF,QAAQ,OAAQtH,KAAK4F,QACjCd,GAAQ5C,EAAMoF,QAAQ,SAAUtH,KAAK4F,QACzC5F,KAAKuH,wBAAqBC,CAC9B,CAGO,oBAAAtD,CAAqBuD,GACxB,IAAIjD,YAAEA,EAAWkD,iBAAEA,GAAqB1H,KAKxC,GAJIyH,IACIA,EAAWjD,cAAaA,EAAciD,EAAWjD,aAChDmD,EAAAA,YAAYF,EAAWC,oBAAmBA,EAAmBD,EAAWC,mBAE7EA,EAAkB,CAClB,MAAM9D,EAAQ5D,KAAK4F,OAAOgC,sBAC1B,OAAOhE,EAAQ,EAAIY,EAAcZ,EAAQY,CAC7C,CAAO,OAAOA,CAClB,CAGO,UAAAgC,CAAWzD,EAA6BhD,GAC3CC,KAAK6G,WAAW9D,EAAUhD,GAC1B,MAAM8H,EAAS7H,KAAK4F,OAAOxF,SAC3ByH,EAAOrH,YAAcqH,EAAOpH,YACxBqH,EAAAA,QAAQ/H,KAAWA,EAAMb,OACzBc,KAAKsG,cAAcvD,GAEF,SAAbA,GAAqB/C,KAAK4E,WAAY,EAAM5E,KAAKuG,QAAUvG,KAAKuG,MAAQhD,KACvEvD,KAAK6E,aAAc,EAAM7E,KAAK0G,UAAY1G,KAAK0G,QAAUnD,GAEtE,CAEO,aAAA+C,CAAcvD,EAA6BgF,GAC1CA,GAAa/H,KAAKgH,cAAcjE,GACpCZ,EAAW6F,aAAajF,EAAU/C,MACjB,SAAb+C,GACAK,EAASpD,KAAM,0BAAsBwH,GACrCxH,KAAKuG,MAAQvG,KAAK4E,eAAY4C,IAE9BpE,EAASpD,KAAM,4BAAwBwH,GACvCpE,EAASpD,KAAM,6BAAyBwH,GACxCxH,KAAK0G,QAAU1G,KAAK6E,iBAAc2C,EAE1C,EAIJ,SAASN,EAASe,EAAepJ,EAAakB,GAC1CkI,EAAKpB,WAAWhI,EAAKkB,GACjB+H,EAAAA,QAAQ/H,IACJA,EAAMmI,KAAMC,IAAmC,IAAjBA,EAAKC,WAAoBrI,EAAQA,EAAMsI,OAAQF,IAAmC,IAAjBA,EAAKC,UACxGrI,EAAMb,SAAWa,OAAQyH,IACtBzH,EAAQA,IAAwC,IAA9BA,EAAkBqI,QAAoB,CAACrI,QAASyH,EACxES,EAAiB,IAAMpJ,GAAOkB,CACnC,CCvLM,MAAOuI,UAAkB5E,GCAzB,MAAO6E,UAAgBD,EAEzB,eAAWE,GAAyB,OAASxI,KAAkBkF,aAAc,CAG7E,mBAAWuD,GAAyD,OAAlBzI,KAA2B0I,UAA3B1I,KAAyC+E,eAAgB,CAE3G,mBAAWA,GAA6B,MAAMX,EAAIpE,KAAkB,MAAsB,SAAfoE,EAAEuE,UAAuBvE,EAAEwB,OAAOgD,SAAS1J,SAAYkF,EAAEwB,OAAgBiD,YAAcC,MAAM/D,gBAAuC,ECN7M,MAAOgE,UAAmBT,EAErB,cAAAU,CAAeC,EAA4BC,GAC9C,MAAMjB,EAAOa,MAAME,eAAeC,EAAOC,GAEzC,OADAC,EAAAA,gBAAgBC,QAAQvK,UAAeoJ,EAAiBpJ,IACjDoJ,CACX,ECPE,MAAOoB,UAAkBd,GCAzB,MAAOe,UAAiB5F,GCAxB,MAAO6F,UAAiB7F,EAC1B,eAAI8E,GAAyB,OAASxI,KAAmBkF,aAAc,ECDrE,MAAOsE,UAAoB9F,EAC7B,eAAI8E,GAAyB,OAASxI,KAAsBkF,aAAc,ECDxE,MAAOuE,UAAoB/F,GCA3B,MAAOgG,UAAiBhG,GCAxB,MAAOiG,UAAiBjG,EAC1B,iBAAWwB,GAA0B,OAAO,CAAE,ECD5C,MAAO0E,UAAgBtB,GCE7B,MAAMuB,EAAgB,CAClBC,KAAQ,IACR,cAAe,IACfC,MAAS,IACTC,OAAU,IACVC,OAAU,IACV,YAAa,IACbC,KAAQ,IACR,aAAc,IACdC,MAAS,KAGP,MAAOC,UAAiB1G,EAE1B,qBAAW2G,GAAsB,OAAO,CAAM,CAK9C,aAAAC,CAAcvK,GACNsG,EAAAA,SAAStG,IACTC,KAAK6G,WAAW,aAAc9G,GAC9BA,EAAQ8J,EAAc9J,IAA8B,KAC7CC,KAAK+G,SAAS/G,KAAKgH,cAAc,cAC5ChH,KAAKuK,YAAcxK,CACvB,CAEA,WAAAyK,CAAYzK,GACR,IAAIqE,EAAIpE,KAAK4F,OAAiB6E,EAAMrG,EAAEsG,MAEtC,GAAI3K,EAAO,CAEP,MAAM4K,SAAEA,GAAa3K,KACrB,GAAIyK,EAAK,IAAK,IAAI5L,KAAO8L,EAAWF,EAAgB5L,QAAO2I,OACtDiD,EAAMrG,EAAEsG,MAAQE,EAAAA,UAAU7J,IAAI,OAAQ,GAE3C,MAAM8G,EAASzD,EAAEhE,SAAUyK,EAAYJ,EAAIrK,SACtCuK,IAAUF,EAAIK,OAAS1G,EAAUqG,EAAIM,QAAU3G,EAAE2G,QAASF,EAAUG,UAAYnD,EAAOmD,WAE5FP,EAAI3K,IAAIC,GACJ8K,EAAUI,eAAepD,EAAOqD,eAChCL,EAAUxK,eAAewH,EAAOvH,eACpCmK,EAAIU,gBAER,MAAWV,IACPrG,EAAEsG,MAAQD,EAAIK,OAAS,KACvBL,EAAIW,WAGRpL,KAAKqL,UAAYtL,CAErB,ECrDE,MAAOuL,UAAkB/B,EAMjB,MAAAgC,CAAOxL,GACbC,KAAKwL,eAAezL,GACpBC,KAAKyL,KAAO1L,CAChB,CAEO,cAAAyL,CAAezL,GACjBC,KAAyB0E,KAAO3E,EAAQ,CAAEiC,KAAM,QAAS0J,KAAM,UAAWC,IAAK5L,QAAUyH,CAC9F,CAEO,SAAAoE,GACH,MAAM3D,EAAOa,MAAM8C,YAEnB,cADO3D,EAAKvD,KACLuD,CACX,CAEO,cAAAe,CAAeC,EAA4BC,GAC9C,MAAMjB,EAAOa,MAAME,eAAeC,EAAOC,GAEzC,cADOjB,EAAKvD,KACLuD,CACX,ECzBE,MAAO4D,UAAmBtC,EAE5B,cAAWuC,GAAwB,OAAO,CAAK,CAC/C,mBAAWrD,GAA6B,OAAO,CAAK,CAE7C,cAAAO,CAAeC,EAA4BC,GAC9C,MAAMjB,EAAyBa,MAAME,eAAeC,EAAOC,GAE3D,OADAjB,EAAK0D,IAAO3L,KAAK4F,OAAmBmG,OAAOC,UAAU,aAC9C/D,CACX,ECTG,MAAMgE,EAA4B,CAErC,oBAAAC,GACI,IAAIC,EAAQ,EAAGC,EAAW,EAC1B,MAAMnE,EAAOjI,KAAKE,IAAImM,YAAEA,EAAalI,iBAAkBK,GAAgByD,EAAMwC,EAAMzK,KAAK0K,MAExF,IAAKzC,EAAKnD,QAA6B,QAAnBmD,EAAKqE,YAAwB9H,GAA+B,WAAhB6H,IAC5DD,EAAWD,EAAwB,WAAhBE,EAA2B7H,EAAc,EAAIA,GAE3DyD,EAAKO,aAAa,CACnB,MAAM+D,EAAqBtE,EAAKuE,aAAe,EAAI,GAAKL,EAClDM,EAAuC,SAAnBxE,EAAKyE,UAAuB,EAAIlI,EAC1D2H,GAAS7H,KAAKC,IAAIgI,EAAoBE,EAC1C,CAYJ,OATIxE,EAAK0E,aAAYR,GAAuB,EAAd3H,GAE1BiG,IACA0B,EAAQ7H,KAAKC,IAAIkG,EAAIrK,SAASwM,aAAenC,EAAIyB,uBAAwBC,GACzEC,EAAW3B,EAAIrK,SAASyM,iBAG5B7M,KAAKI,SAASyM,gBAAkBT,EAEzBD,CACX,EAEA,oBAAAW,GACI,IAAIX,EAAgB,EACpB,MAAMY,OAAEA,EAAM9H,YAAEA,EAAW+H,KAAEA,EAAIC,eAAEA,EAAc5E,OAAEA,EAAM6E,aAAEA,GAAiBlN,KAAKE,GAE7E6M,GAAQA,EAAO3D,QAAQjB,GAAQgE,EAAQ7H,KAAKC,IAAI4H,EAAO7H,KAAKC,IAAID,KAAK6I,IAAIhF,EAAKnE,GAAIM,KAAK6I,IAAIhF,EAAKpE,KAAOoE,EAAKiF,OAAS,EAAIjF,EAAKiF,OAAS,GAAiB,IAAZjF,EAAK6E,OAEjJA,IAAMb,EAAQ7H,KAAKC,IAAI4H,EAAOa,IAE9B3E,IAAQ8D,GAAS9J,EAAOgL,UAAUhF,IAElC6E,IAAcf,GAASe,GAE3B,IAAII,EAAanB,EAAQ7H,KAAKiJ,KAAKpB,GAUnC,OARIlH,GAAaA,EAAYmE,QAAQjB,GAAQmF,EAAahJ,KAAKC,IAAI+I,EAAYhJ,KAAKC,IAAID,KAAK6I,IAAIhF,EAAKnE,GAAIM,KAAK6I,IAAIhF,EAAKpE,KAAOoE,EAAKiF,OAAS,GAAKjF,EAAKiF,OAAS,GAAiB,IAAZjF,EAAK6E,OAEtKC,IAAgBK,EAAahJ,KAAKC,IAAI+I,EAAYL,IAEtDjN,KAAKI,SAASoN,kBAAoBF,EAElCnB,GAASnM,KAAKI,SAASwM,cAAgB,EAEhC5M,KAAK0K,MAAQpG,KAAKC,IAAIvE,KAAK0K,MAAMoC,uBAAwBX,GAASA,CAC7E,GCpDSsB,EAAmB,CAE5B,YAAAC,CAAaC,EAAsBC,EAAyBC,EAAiCC,EAAkBC,GAC3G,MAAMhK,EAAI4J,EAAQ5J,EAAI+J,EAAK/J,EAAGC,EAAI2J,EAAQ3J,EAAI8J,EAAK9J,EAAGgK,EAAQjK,EAAI4J,EAAQxB,MAAO8B,EAASjK,EAAI2J,EAAQO,OAChGC,EAAcP,EAAW7J,EAAI6J,EAAWzB,MAAOiC,EAAeR,EAAW5J,EAAI4J,EAAWM,OAEzFH,IAAQD,EAAI1O,OAAAiP,OAAA,CAAA,EAAQP,IAEzB,MAAMQ,EAAgBX,EAAQxB,MAAQyB,EAAWzB,MAC3CoC,EAAiBZ,EAAQO,OAASN,EAAWM,OAsBnD,OApBII,GAAoC,UAAnBT,EACb9J,EAAI6J,EAAW7J,EAAG+J,EAAK/J,GAAK6J,EAAW7J,EAAIA,EACtCiK,EAAQG,IAAaL,EAAK/J,GAAKoK,EAAcH,GAElDjK,EAAI6J,EAAW7J,EAAG+J,EAAK/J,GAAK6J,EAAW7J,EAAIA,EACtCiK,EAAQG,IAAaL,EAAK/J,GAAKoK,EAAcH,GAGtDO,GAAqC,UAAnBV,EACd7J,EAAI4J,EAAW5J,EAAG8J,EAAK9J,GAAK4J,EAAW5J,EAAIA,EACtCiK,EAASG,IAAcN,EAAK9J,GAAKoK,EAAeH,GAErDjK,EAAI4J,EAAW5J,EAAG8J,EAAK9J,GAAK4J,EAAW5J,EAAIA,EACtCiK,EAASG,IAAcN,EAAK9J,GAAKoK,EAAeH,GAI7DH,EAAK/J,EAAIyK,EAAAA,WAAWC,MAAMX,EAAK/J,GAC/B+J,EAAK9J,EAAIwK,EAAAA,WAAWC,MAAMX,EAAK9J,GAExB8J,CACX,EAGA,QAAAY,CAASC,EAAab,GAClB,MAAMc,UAAEA,GAAcD,EACJ,MAAdC,IAAmBd,EAAK9J,EAAI,GACd,MAAd4K,IAAmBd,EAAK/J,EAAI,EACpC,EAGA,SAAA8K,CAAUF,EAAab,GACnB,MAAMF,WAAEA,EAAUC,eAAEA,GAAmBc,EACnCf,GAAYkB,EAAEpB,aAAaiB,EAAKI,iBAAiC,WAAfnB,EAA0Be,EAAK7D,OAAOE,UAAY4C,EAAYC,EAAgBC,GAAM,GAC1IgB,EAAEJ,SAASC,EAAMb,EACrB,GAGEgB,EAAIrB,GC/CJrK,SAAEA,GAAaC,EAAAA,WAER2L,EAA4B,CAErC,cAAA7D,GACI,MAAMlD,EAAOjI,KAAKE,GAElB,GAAI+H,EAAKtD,YAAa,CAClB,MAAMsK,EAAYhH,EAAKtD,eAAiBsD,EAAKnD,SAAUmD,EAAKzD,aAC5DpB,EAASpD,KAAK+K,QAAS,OAAQkE,GAAkC,WAArBhH,EAAKoE,aAA4BpE,EAAKzD,YAAc,GAChGpB,EAAS6E,EAAM,oBAAqBgH,GAAkC,YAArBhH,EAAKoE,aAA6BpE,EAAKvD,OAASuD,EAAKiH,oBAC1G,CAEA,GAAIjH,EAAK9H,YAAa,CAClB,MAAM4M,OAAEA,EAAMrI,KAAEA,EAAII,OAAEA,GAAWmD,EAAMkH,EAAclH,EAAKhD,aAAegD,EAAK+E,MAAQ/E,EAAKgF,gBAAkBhF,EAAKI,OAClHjF,EAAS6E,EAAM,iBAAkB8E,IAAWoC,GAAepC,EAAO7N,OAAS,IAAM6N,EAAO,GAAGK,QAAU1I,IAASuD,EAAKiH,uBAAyBpH,EAAAA,QAAQpD,IAASA,EAAKxF,OAAS,KAAOc,KAAKoP,gBAAkBtK,GAAWA,GAA+B,WAArBmD,EAAKoE,cACnOpE,EAAK9H,eAAiB4M,IAAUoC,EACpC,CAEAlH,EAAKoH,gBAELjM,EAAS6E,EAAM,YAAcA,EAAKrD,WAAaqD,EAAKpD,aAAeoD,EAAKjD,cAAgBiD,EAAK9H,YACjG,EAEA,UAAAmP,CAAWvD,EAAuB7C,GAC9BqG,EAASvP,KAAM+L,EAAQ7C,EAC3B,EAEA,MAAAsG,CAAOzD,EAAuB7C,EAAyBuG,GACnD,MAAMxH,EAAOjI,KAAKE,GAElB,GAAI+H,EAAKyH,UAAW,CAEZzH,EAAKV,oBAAoBU,EAAKZ,iBAElC,MAAM3C,KAAEA,EAAII,OAAEA,EAAM2D,gBAAEA,EAAekH,kBAAEA,EAAiBC,eAAEA,GAAmB3H,EAI7E,GAFAjI,KAAK6P,iBAAiB9D,GAElB9D,EAAK9H,cAAgByP,EAAgB,CAErC,MAAME,EAAQ5N,EAAM4N,MAAM9P,KAAM+L,EAAQ7C,GACxClJ,KAAK+P,WAAa/P,KAAKgQ,cAAc9G,GAErC,MAAM6D,OAAEA,EAAM9H,YAAEA,EAAWoD,OAAEA,GAAWJ,EAEpC8E,GAAQ3K,EAAO2K,OAAO/M,KAAM+L,EAAQ+D,GAEpCH,IAAmB1H,EAAKpD,YAAc3C,EAAM+N,QAAQnL,EAA8B9E,KAAM+L,GAAU7J,EAAM4C,OAAOA,EAAkB9E,KAAM+L,IAEvIrH,IAAMuD,EAAKrD,UAAY1C,EAAMgO,MAAMxL,EAAsB1E,KAAM+L,GAAU7J,EAAMwC,KAAKA,EAAgB1E,KAAM+L,IAE1GtD,GAAiBzI,KAAKyI,gBAAgBsD,EAAQ7C,GAE9CjE,GAAa7C,EAAO6C,YAAYjF,KAAM+L,EAAQ+D,GAE9ChL,IAAW6K,IAAmB1H,EAAKpD,YAAc3C,EAAM+N,QAAQnL,EAA8B9E,KAAM+L,GAAU7J,EAAM4C,OAAOA,EAAkB9E,KAAM+L,IAElJ1D,GAAQhG,EAAOC,MAAM+F,EAAQrI,KAAMA,KAAK+P,WAAYhE,EAAQ0D,EAAcK,GAE1EA,EAAMK,aAAaL,EAAMK,YAAYC,UACzCN,EAAM/D,OAAOqE,SAEjB,KAAO,CAIH,GAFIT,IAAmB1H,EAAKpD,YAAc3C,EAAM+N,QAAQnL,EAA8B9E,KAAM+L,GAAU7J,EAAM4C,OAAOA,EAAkB9E,KAAM+L,IAEvI6D,EAAgB,CAChB,MAAM7C,EAAS9E,EAAK8E,OAAO,IAAIlJ,OAAEA,EAAMC,OAAEA,GAAW9D,KAAKqQ,oBAAmB,EAAMtD,EAAOuD,YACzFvE,EAAOwE,OAAQxE,EAAOyE,eAAezD,EAAOhJ,EAAIF,EAAQkJ,EAAO/I,EAAIF,EAAQiJ,EAAOC,KAAOnJ,EAAQvC,EAAamP,OAAO1D,EAAOxL,OAChI,CAEImD,IAAMuD,EAAKrD,UAAY1C,EAAMgO,MAAMxL,EAAsB1E,KAAM+L,GAAU7J,EAAMwC,KAAKA,EAAgB1E,KAAM+L,IAE1G6D,GAAgB7D,EAAO2E,UAEvBjI,GAAiBzI,KAAKyI,gBAAgBsD,EAAQ7C,GAE9CpE,IAAW6K,IAAmB1H,EAAKpD,YAAc3C,EAAM+N,QAAQnL,EAA8B9E,KAAM+L,GAAU7J,EAAM4C,OAAOA,EAAkB9E,KAAM+L,GAE1J,CAEJ,MAEQ9D,EAAK/C,cAAeqK,EAASvP,KAAM+L,EAAQ7C,GAC1ClJ,KAAKsP,WAAWvD,EAAQ7C,EAGrC,EAEA,WAAAyH,CAAY5E,EAAuB7C,GAC/BlJ,KAAK6P,iBAAiB9D,GAEtB,MAAM9D,EAAOjI,KAAKE,IAAIwE,KAAEA,EAAII,OAAEA,GAAWmD,EAErCvD,IAASwE,EAAQ0H,aAAY3I,EAAK4I,mBAAqB3O,EAAMgO,MAAMxL,EAAsB1E,KAAM+L,GAAU7J,EAAMwC,KAAK,UAAW1E,KAAM+L,IACrI9D,EAAK6D,YAAY9L,KAAKyI,gBAAgBsD,EAAQ7C,GAC9CpE,IAAWoE,EAAQ4H,eAAc7I,EAAK8I,qBAAuB7O,EAAM+N,QAAQnL,EAA8B9E,KAAM+L,GAAU7J,EAAM4C,OAAO,UAAW9E,KAAM+L,GAC/J,EAEA,eAAAtD,CAAgBsD,EAAuB7C,GAC/BlJ,KAAKE,GAAG6E,iBACRgH,EAAOwE,OACPxE,EAAOiF,OAAOhR,MACdA,KAAKiR,cAAclF,EAAQ7C,GAC3B6C,EAAO2E,WACJ1Q,KAAKiR,cAAclF,EAAQ7C,EACtC,GAKJ,SAASqG,EAAS2B,EAASnF,EAAuB7C,GAC9C,MAAMxE,KAAEA,EAAII,OAAEA,EAAM2D,gBAAEA,EAAekH,kBAAEA,GAAsBuB,EAAGhR,GAEhEgR,EAAGrB,iBAAiB9D,GAEhB4D,GAAmBzN,EAAM4C,OAAOA,EAAkBoM,EAAInF,GAEtDrH,GAAMxC,EAAMwC,KAAKA,EAAgBwM,EAAInF,GACrCtD,GAAiByI,EAAGzI,gBAAgBsD,EAAQ7C,GAE5CpE,IAAW6K,GAAmBzN,EAAM4C,OAAOA,EAAkBoM,EAAInF,EACzE,CC5HO,MAAMoF,EAAgC,CAEzC,UAAA7B,CAAWvD,EAAuB7C,GAE9B,IAAInF,EAAEA,EAACC,EAAEA,EAACmI,MAAEA,EAAK+B,OAAEA,GAAWlO,KAAKI,SAAS4K,UAC5C,MAAMtG,KAAEA,EAAII,OAAEA,EAAM2D,gBAAEA,GAAoBzI,KAAKE,GAS/C,GAPIwE,IACAqH,EAAOqF,UAAY1M,EACnBqH,EAAOsF,SAAStN,EAAGC,EAAGmI,EAAO+B,IAG7BzF,GAAiBzI,KAAKyI,gBAAgBsD,EAAQ7C,GAE9CpE,EAAQ,CAER,MAAMuH,YAAEA,EAAapI,cAAeO,GAAgBxE,KAAKE,GACzD,IAAKsE,EAAa,OAElBuH,EAAOtF,UAAU3B,EAAQN,EAAaxE,KAAKE,IAC3C,MAAMoR,EAAO9M,EAAc,EAE3B,OAAQ6H,GACJ,IAAK,SACDN,EAAOwF,WAAW,EAAG,EAAGpF,EAAO+B,GAC/B,MACJ,IAAK,SACD/B,GAAS3H,EAAa0J,GAAU1J,EAC5B2H,EAAQ,GAAK+B,EAAS,GACtBnC,EAAOwE,OACPvQ,KAAKwR,OAAOzF,EAAQ7C,GACpB6C,EAAOwF,WAAWxN,EAAIuN,EAAMtN,EAAIsN,EAAMnF,EAAO+B,GAC7CnC,EAAO2E,WACJ3E,EAAOwF,WAAWxN,EAAIuN,EAAMtN,EAAIsN,EAAMnF,EAAO+B,GACpD,MACJ,IAAK,UACDnC,EAAOwF,WAAWxN,EAAIuN,EAAMtN,EAAIsN,EAAMnF,EAAQ3H,EAAa0J,EAAS1J,GAIhF,CAEJ,WChCSiN,QAAAA,GAAEC,EAAR,cAAiBC,OAQpB,OAAWC,GAAiB,OAAO5R,KAAKmB,QAAUnB,KAAKmB,OAAOyQ,GAAI,CAQlE,WAAWC,GAAqB,OAAO,CAAM,CA+V7C,SAAWjO,CAAM7D,GAA+ByO,EAAAA,WAAWsD,YAAY9R,KAAoBD,EAAO,CAClG,SAAW6D,GAAgC,OAAO5D,KAAKE,GAAG0D,KAAM,CAEhE,eAAWmO,GAAyB,MAAM3N,EAAIpE,KAAKE,GAAI,OAAOkE,EAAEgB,aAAehB,EAAE4N,SAAqB,CACtG,gBAAWC,GAA0B,MAAM7N,EAAIpE,KAAKE,GAAI,OAAOkE,EAAEkB,cAAgBlB,EAAE8N,UAAsB,CAOzG,OAAWC,GACP,MAAMC,KAAEA,GAASpS,KAAKE,GAGtB,OAFAiS,EAAAA,IAAIrS,IAAIE,KAAKoS,KAAOA,GAAQ,IACvBA,GAAMpS,KAAKqS,gBAAgBF,OACzBA,EAAAA,GACX,CAGA,WAAAG,CAAYrK,GACRa,MAAMb,EACV,CAMO,KAAAsK,CAAMC,GAA8B,CAGpC,GAAA1S,CAAImI,EAAoBwK,GACvBxK,IACIwK,EACmB,SAAfA,GACAzS,KAAK0S,iBAAkB,EACvBtT,OAAOiP,OAAOrO,KAAMiI,GACpBjI,KAAK0S,iBAAkB,GACpB1S,KAAK2S,QAAQ1K,EAAMwK,GACvBrT,OAAOiP,OAAOrO,KAAMiI,GAEnC,CAEO,GAAAlH,CAAI6R,GACP,OAAOvM,WAASuM,GAAQ5S,KAAKE,GAAG2S,WAAWD,GAAQ5S,KAAKE,GAAG8I,eAAe4J,EAC9E,CAEO,eAAAE,GAAmD,CAKnD,IAAAC,CAAKC,EAA8DC,GAAyB,OAAO1Q,EAAAA,OAAOC,KAAK,OAAQ,CAEvH,OAAA0Q,CAAQC,GAAiC,OAAOnT,KAAK+S,KAAK,CAAEI,OAAO,CAEnE,OAAAC,CAAQJ,EAA8DC,GAAmC,OAAO1Q,EAAAA,OAAOC,KAAK,OAAQ,CAEpI,MAAA6Q,CAAOC,GAAwC,OAAOtT,KAAKoT,QAAQ,CAAEE,MAAM,CAK3E,OAAAC,CAAQC,EAAiBC,GAC5BzT,KAAKI,SAASsT,SACd,IAAItB,EAAOqB,EAAgBzT,KAAKE,GAAGyT,gBAAkB3T,KAAKE,GAAGkS,KAE7D,OADKA,IAAMD,EAAAA,IAAIrS,IAAIsS,EAAO,IAAKpS,KAAKqS,gBAAgBF,QAC7CqB,EAAQrQ,EAAAA,YAAYyQ,aAAaxB,GAAM,GAAQA,CAC1D,CAEO,aAAAyB,CAAcL,EAAiBC,EAAyBK,GAC3D,OAAO3Q,EAAAA,YAAY4Q,UAAU/T,KAAKuT,QAAQC,EAAOC,GAAgBK,EACrE,CAGO,IAAAE,GACHhU,KAAKE,GAAGmH,gBACZ,CAEO,cAAA4M,GACH,GAAIjU,KAAKE,GAAG6G,QAAS,CACjB,MAAMkB,EAAOjI,KAAKE,IACjB+H,EAAKiM,MAASlU,KAAKmU,gBAAmB1R,EAAO2R,QAA4CnM,EAAKZ,iBAAtCY,EAAKV,oBAAqB,CACvF,CACJ,CAEO,kBAAA8M,GACH,MAAMpM,EAAOjI,KAAKE,GACd+H,EAAKmK,MACLnK,EAAK0L,gBAAkB1L,EAAKjD,aAAesP,EAAAA,WAAWC,OAAOtM,EAAKmK,KAAMnK,EAAKjD,aAAciD,EAAKuM,iBAAmBvM,EAAKmK,KACpHnK,EAAK0E,YAAY1K,EAAUwS,UAAUzU,MAAOiI,EAAKjD,eAClDiD,EAAK0L,kBAAoB1L,EAAK0L,qBAAkBnM,EAC3D,CAEO,gBAAAqI,CAAiB9D,GACpBA,EAAO2I,YACP1U,KAAK2U,iBAAiB5I,EAAQ/L,KAAKE,GAAGyT,gBAC1C,CAEO,UAAAiB,CAAW7I,GACdA,EAAO2I,YACP1U,KAAK2U,iBAAiB5I,EAAQ/L,KAAKE,GAAGkS,KAC1C,CAEO,gBAAAuC,CAAiBE,EAAqB5M,GACzCA,EAAO6M,EAAAA,WAAWC,eAAeF,EAAQ5M,GAAQjI,KAAKqS,gBAAgBwC,EAC1E,CAEO,eAAAxC,CAAgBwC,GACnB,MAAM9Q,EAAEA,EAACC,EAAEA,EAACmI,MAAEA,EAAK+B,OAAEA,GAAWlO,KAAKI,SAAS4K,UAC9C,GAAIhL,KAAKE,GAAG8E,aAAc,CACtB,MAAMA,aAAEA,GAAiBhF,KAAKE,GAC9B2U,EAAOG,UAAUjR,EAAGC,EAAGmI,EAAO+B,EAAQ+G,EAAAA,SAASjQ,GAAgB,CAACA,GAAgBA,EACpF,MAAO6P,EAAOK,KAAKnR,EAAGC,EAAGmI,EAAO+B,EACpC,CAEO,oBAAAiH,CAAqBpJ,EAAuBqJ,GAC/ClT,EAAMwC,KAAK1E,KAAKE,GAAGmV,iBAAkBrV,KAAM+L,EAC/C,CAIO,OAAA4G,CAAQ2C,EAAoErC,EAAwBsC,EAAsBC,GAC7H,OAAOjT,EAAAA,OAAOC,KAAK,UACvB,CAEO,WAAAiT,CAAYF,EAAsBG,GAAmC,CAMrE,OAAOC,EAAqC1C,GAC/C,OAAO1Q,EAAAA,OAAOC,KAAK,SACvB,CAEO,UAAAoT,CAAWD,EAAqC1C,GACnD,OAAO1Q,EAAAA,OAAOC,KAAK,SACvB,CAEO,KAAAqT,CAAM5N,GACT,MAAM6N,EAAOzS,EAAAA,WAAWwS,MAAM7V,KAAK+V,UAEnC,OADI9N,GAAM7I,OAAOiP,OAAOyH,EAAM7N,GACvByJ,EAAGsE,IAAIF,EAClB,CAGA,UAAOE,CAAmD/N,EAAoBlE,EAAYC,EAAYmI,EAAgB+B,GAClH,OAAOtD,EAAAA,UAAU7J,IAAIkH,EAAKkL,KAAOnT,KAAKiW,UAAUC,MAAOjO,EAAMlE,EAAGC,EAAGmI,EAAO+B,EAC9E,CAEA,iBAAOiI,GACHA,EAAAA,YAAAA,CAAanW,KACjB,CAEA,mBAAOoW,CAAanO,GAChBoO,EAAAA,cAAcpO,EAAdoO,CAAoBrW,KAAKiW,UAC7B,CAKA,oBAAOK,CAAcC,GAAwD,CAE7E,mBAAOC,CAAaC,GAA+C,CAEnE,mBAAOC,CAAaC,GAAiD,CAG9D,OAAAvL,GACHpL,KAAK0E,KAAO1E,KAAK8E,OAAS,KACtB9E,KAAK4W,WAAW5W,KAAKyV,cACzB3M,MAAMsC,SACV,GAxhBe1M,EAAA,CADd2X,EAAAA,cAAc3S,IACW+N,WAAAwE,UAAA,UAAA,GAWnBvX,EAAA,CADNiC,KACuB8Q,WAAAwE,UAAA,iBAAA,GAUjBvX,EAAA,CADNmY,EAAAA,SAAS,KACSpF,WAAAwE,UAAA,UAAA,GAGZvX,EAAA,CADNmY,EAAAA,SAAS,KACWpF,WAAAwE,UAAA,YAAA,GAGdvX,EAAA,CADNmY,EAAAA,SAAS,KACgBpF,WAAAwE,UAAA,iBAAA,GAKnBvX,EAAA,CADNoY,EAAAA,YAAY,iBACgBrF,WAAAwE,UAAA,iBAAA,GAGtBvX,EAAA,CADNqY,EAAAA,YAAY,IACWtF,WAAAwE,UAAA,eAAA,GAGjBvX,EAAA,CADNsY,EAAAA,aAAY,IACgBvF,WAAAwE,UAAA,eAAA,GAItBvX,EAAA,CADNoY,EAAAA,aAAY,IACWrF,WAAAwE,UAAA,cAAA,GAIjBvX,EAAA,CADNoY,EAAAA,aAAY,IACkBrF,WAAAwE,UAAA,WAAA,GAGxBvX,EAAA,CADNoY,EAAAA,aAAY,IACYrF,WAAAwE,UAAA,eAAA,GAIlBvX,EAAA,CADNuY,EAAAA,SAAS,IACaxF,WAAAwE,UAAA,cAAA,GAIhBvX,EAAA,CADNwY,EAAAA,UAAS,IACwBzF,WAAAwE,UAAA,YAAA,GAG3BvX,EAAA,CADNyY,EAAAA,YAAW,IAC0B1F,WAAAwE,UAAA,cAAA,GAK/BvX,EAAA,CADN0Y,EAAAA,aAAa,GAAG,IACC3F,WAAAwE,UAAA,SAAA,GAGXvX,EAAA,CADN0Y,EAAAA,aAAa,GAAG,IACC3F,WAAAwE,UAAA,SAAA,GAIXvX,EAAA,CADN2Y,EAAAA,WAAW,KAAK,IACK5F,WAAAwE,UAAA,aAAA,GAGfvX,EAAA,CADN2Y,EAAAA,WAAW,KAAK,IACM5F,WAAAwE,UAAA,cAAA,GAIhBvX,EAAA,CADN4Y,EAAAA,UAAU,GAAG,IACS7F,WAAAwE,UAAA,cAAA,GAGhBvX,EAAA,CADN4Y,EAAAA,UAAU,GAAG,IACS7F,WAAAwE,UAAA,cAAA,GAIhBvX,EAAA,CADN6Y,EAAAA,aAAa,GAAG,IACQ9F,WAAAwE,UAAA,gBAAA,GAIlBvX,EAAA,CADN6Y,EAAAA,aAAa,GAAG,IACK9F,WAAAwE,UAAA,aAAA,GAGfvX,EAAA,CADN6Y,EAAAA,aAAa,GAAG,IACK9F,WAAAwE,UAAA,aAAA,GAKfvX,EAAA,CADN0Y,EAAAA,aAAa,GAAG,IACO3F,WAAAwE,UAAA,eAAA,GAGjBvX,EAAA,CADN0Y,EAAAA,aAAa,GAAG,IACO3F,WAAAwE,UAAA,eAAA,GAIjBvX,EAAA,CADN8Y,EAAAA,WAAW,GAAG,IACS/F,WAAAwE,UAAA,eAAA,GAGjBvX,EAAA,CADN8Y,EAAAA,WAAW,GAAG,IACS/F,WAAAwE,UAAA,eAAA,GAKjBvX,EAAA,CADN+Y,EAAAA,kBACsChG,WAAAwE,UAAA,cAAA,GAGhCvX,EAAA,CADN+Y,EAAAA,kBACsChG,WAAAwE,UAAA,cAAA,GAKhCvX,EAAA,CADNmY,EAAAA,UAAS,IACYpF,WAAAwE,UAAA,YAAA,GAGfvX,EAAA,CADNgZ,EAAAA,kBAAkB,IACQjG,WAAAwE,UAAA,kBAAA,GAIpBvX,EAAA,CADNiZ,EAAAA,uBAAuB,IACKlG,WAAAwE,UAAA,oBAAA,GAKtBvX,EAAA,CADNkZ,EAAAA,iBACkEnG,WAAAwE,UAAA,YAAA,GAG5DvX,EAAA,CADNmZ,EAAAA,YACgCpG,WAAAwE,UAAA,mBAAA,GAG1BvX,EAAA,CADNmZ,EAAAA,UAAS,IACapG,WAAAwE,UAAA,cAAA,GAOhBvX,EAAA,CADN2Y,EAAAA,WAAW,IACgB5F,WAAAwE,UAAA,eAAA,GAmBrBvX,EAAA,CADN2Y,EAAAA,YAAW,IACe5F,WAAAwE,UAAA,iBAAA,GAKpBvX,EAAA,CADN2Y,EAAAA,cAC6B5F,WAAAwE,UAAA,kBAAA,GAGvBvX,EAAA,CADN2Y,EAAAA,cAC8B5F,WAAAwE,UAAA,mBAAA,GAKxBvX,EAAA,CADNmY,EAAAA,UAAS,IACyBpF,WAAAwE,UAAA,iBAAA,GAG5BvX,EAAA,CADNmY,EAAAA,YACyCpF,WAAAwE,UAAA,kBAAA,GAG1CvX,EAAA,CADCmY,EAAAA,SAAS,SACsBpF,WAAAwE,UAAA,sBAAA,GAIzBvX,EAAA,CADNmY,EAAAA,UAAS,IACgBpF,WAAAwE,UAAA,gBAAA,GAKnBvX,EAAA,CADNoZ,EAAAA,SAAQ,IACiBrG,WAAAwE,UAAA,gBAAA,GAGnBvX,EAAA,CADNoZ,EAAAA,QAAQ,SACgBrG,WAAAwE,UAAA,eAAA,GAGlBvX,EAAA,CADNqZ,EAAAA,WAAW,SACetG,WAAAwE,UAAA,iBAAA,GAGpBvX,EAAA,CADNoZ,EAAAA,SAAQ,IACerG,WAAAwE,UAAA,cAAA,GAGjBvX,EAAA,CADNoZ,EAAAA,SAAQ,IACoBrG,WAAAwE,UAAA,mBAAA,GAGtBvX,EAAA,CADNoZ,EAAAA,SAAQ,IACgBrG,WAAAwE,UAAA,eAAA,GAGlBvX,EAAA,CADNoZ,EAAAA,WACyBrG,WAAAwE,UAAA,iBAAA,GAGnBvX,EAAA,CADNsZ,EAAAA,WAAW,KAC+BvG,WAAAwE,UAAA,cAAA,GAQpCvX,EAAA,CADNoY,EAAAA,eACkBrF,WAAAwE,UAAA,YAAA,GAKZvX,EAAA,CADNqZ,EAAAA,gBAAWvQ,GAAW,IACAiK,WAAAwE,UAAA,cAAA,GAGhBvX,EAAA,CADNqZ,EAAAA,WAAW,WACqBtG,WAAAwE,UAAA,mBAAA,GAG1BvX,EAAA,CADNqZ,EAAAA,WAAW,GAAG,IACsCtG,WAAAwE,UAAA,mBAAA,GAG9CvX,EAAA,CADNqZ,EAAAA,YAAW,IACyBtG,WAAAwE,UAAA,wBAAA,GAG9BvX,EAAA,CADNqZ,EAAAA,WAAW,SACiBtG,WAAAwE,UAAA,iBAAA,GAGtBvX,EAAA,CADNqZ,EAAAA,WAAW,UACmBtG,WAAAwE,UAAA,kBAAA,GAGxBvX,EAAA,CADNqZ,EAAAA,cACkDtG,WAAAwE,UAAA,mBAAA,GAG5CvX,EAAA,CADNqZ,EAAAA,WAAW,IACetG,WAAAwE,UAAA,kBAAA,GAGpBvX,EAAA,CADNqZ,EAAAA,WAAW,KACetG,WAAAwE,UAAA,kBAAA,GAYpBvX,EAAA,CADNmZ,EAAAA,SAAS,IAC6CpG,WAAAwE,UAAA,oBAAA,GAGhDvX,EAAA,CADNmZ,EAAAA,YAC+BpG,WAAAwE,UAAA,uBAAA,GAKzBvX,EAAA,CADNgB,KAC8D+R,WAAAwE,UAAA,cAAA,GAGxDvX,EAAA,CADNgB,KACmE+R,WAAAwE,UAAA,mBAAA,GAG7DvX,EAAA,CADNgB,KACkC+R,WAAAwE,UAAA,YAAA,GAG5BvX,EAAA,CADNgB,KAC4C+R,WAAAwE,UAAA,sBAAA,GAGtCvX,EAAA,CADNgB,KAC4C+R,WAAAwE,UAAA,iBAAA,GAGtCvX,EAAA,CADNgB,KACkC+R,WAAAwE,UAAA,cAAA,GAuD5BvX,EAAA,CADNoY,EAAAA,eACqCrF,WAAAwE,UAAA,wBAAA,GAG/BvX,EAAA,CADNmY,EAAAA,SAAS,MACuBpF,WAAAwE,UAAA,wBAAA,GAiB1BvX,EAAA,CADNmY,EAAAA,SAAS,CAAA,IACUpF,WAAAwE,UAAA,YAAA,GA8BbvX,EAAA,CADNuZ,UAAQtG,EAAAA,KAAKsE,UAAU1D,QACoBd,WAAAwE,UAAA,QAAA,MA1YnCxE,QAAAA,GAAEC,EAAAhT,EAAA,CAHdwZ,EAAAA,UAAUjM,GACViM,EAAAA,UAAUlJ,GACVmJ,EAAAA,eACY1G,YCJA2G,QAAAA,MAAN,cAAoB3G,WAEvB,SAAWyE,GAAU,MAAO,OAAQ,CAEpC,YAAWmC,GAAsB,OAAO,CAAK,CAkB7C,WAAA/F,CAAYrK,GACRa,MAAMb,EACV,CAEO,KAAAsK,CAAMtK,GACTjI,KAAKsY,cACLxP,MAAMyJ,MAAMtK,EAChB,CAEO,WAAAqQ,GACEtY,KAAK4I,WAAU5I,KAAK4I,SAAW,GACxC,CAKS,GAAA9I,CAAImI,EAAoBwK,GAC7B,GAAIxK,EACA,GAAIA,EAAKW,SAAU,CACf,MAAMA,SAAEA,GAAaX,SAEdA,EAAKW,SACZ5I,KAAK4I,SAAW5I,KAAKuY,QAAUvY,KAAKsY,cAEpCxP,MAAMhJ,IAAImI,EAAMwK,GAEhB7J,EAASQ,QAAQoP,GAASxY,KAAKyY,IAAID,IACnCvQ,EAAKW,SAAWA,CAEpB,MAAOE,MAAMhJ,IAAImI,EAAMwK,EAE/B,CAES,MAAAsD,CAAO7M,GACZ,MAAMjB,EAAOa,MAAMiN,OAAO7M,GAE1B,OADKlJ,KAAK0Y,gBAAezQ,EAAKW,SAAW5I,KAAK4I,SAAS+P,IAAIH,GAASA,EAAMzC,OAAO7M,KAC1EjB,CACX,CAKO,IAAA2Q,CAAKC,EAAuB5F,GAAyD,CAKrF,KAAA6F,CAAMN,EAAoDO,GAC7D/Y,KAAKyY,IAAID,EAAOO,EACpB,CAEO,QAAAC,CAASR,EAAoDS,GAChEjZ,KAAKyY,IAAID,EAAOxY,KAAK4I,SAASsQ,QAAQD,GAAS,EACnD,CAEO,SAAAE,CAAUX,EAAoDY,GACjEpZ,KAAKyY,IAAID,EAAOxY,KAAK4I,SAASsQ,QAAQE,GAC1C,CAIO,GAAAX,CAAIY,EAAqDC,GAAyB,CAElF,OAAAC,IAAWC,GAA2C,CAEtD,MAAAC,CAAOJ,EAAiEK,GAA4B,CAEpG,SAAAC,CAAUD,GAA4B,CAEtC,KAAAnB,GAAgB,GApFR7Z,EAAA,CADd2X,EAAAA,cAAc/N,IACc8P,cAAAnC,UAAA,UAAA,GAIdvX,EAAA,CADd2Y,EAAAA,WAAW,IACkBe,cAAAnC,UAAA,aAAA,GAGfvX,EAAA,CADd2Y,EAAAA,WAAW,IACmBe,cAAAnC,UAAA,cAAA,GAdtBmC,QAAAA,MAAK1Z,EAAA,CAFjBwZ,EAAAA,UAAU0B,EAAAA,QACVzD,EAAAA,cACYiC,eCFb,MAAM5U,EAAQC,EAAAA,MAAM1C,IAAI,UAGX8Y,QAAAA,OAAMC,EAAZ,cAAqB1B,cAKxB,SAAWlC,GAAU,MAAO,QAAS,CAQrC,SAAWlV,GAAmB,OAAO,CAAM,CAC3C,OAAW4Q,GAAiB,OAAO5R,KAAK8K,QAAU9K,IAAK,CAEvD,YAAWc,GAAsB,OAAO,CAAK,CAU7C,cAAWiZ,GAAwB,OAAO/Z,KAAKga,WAAaC,EAAAA,SAASC,UAAW,CAChF,gBAAWC,GAAiB,OAAQna,KAAKoa,SAAShG,OAAQ,CAkC1D,OAAWiG,GAAgB,OAAOra,KAAKsa,SAAWta,KAAKsa,SAASD,IAAM,EAAG,CACzE,eAAWE,GAA4B,OAAQva,KAAKwa,aAAexa,KAAKwa,YAAYC,WAAc,CAAE1W,EAAG/D,KAAKmM,MAAQ,EAAGnI,EAAGhE,KAAKkO,OAAS,EAAI,CAC5I,gBAAWwM,GAA8B,OAAQ1a,KAAK+L,QAAU/L,KAAK+L,OAAO4O,iBAAgB,IAAUC,EAAAA,eAAgB,CAatH,WAAAtI,CAAYuI,EAA4B5S,GACpCa,MAAMb,GA3BHjI,KAAA8a,OAAwB,CAC3BC,OAAO,EACPC,UAAU,EACVzG,QAAQ,EACR0G,WAAY,KAUTjb,KAAAkb,MAAQ,EAERlb,KAAAmb,WAAiC,GAE9Bnb,KAAAob,cAA4B,GAG5Bpb,KAAAqb,YAA2B,GAC3Brb,KAAAsb,gBAA+B,GAC/Btb,KAAAub,oBAAmC,GACtCvb,KAAAwb,iBAAgC,GAInCxb,KAAK6a,WAAaA,EACdA,IAAeA,EAAWY,MAAQZ,EAAW1O,QAAQnM,KAAK0b,KAAKb,GACnEf,EAAOjX,KAAK4V,IAAIzY,KACpB,CAEO,IAAA0b,CAAKb,EAA4Bc,GACpC,GAAI3b,KAAK+L,OAAQ,OAEjB,IAAIgP,EACJ,MAAMD,OAAEA,GAAW9a,KAEnBA,KAAK4b,YAAY5b,MAEb2b,IACA3b,KAAK2b,UAAYA,EACjB3b,KAAK6b,UAAUF,GACfZ,EAAQY,EAAUvH,SAGlByG,IACA7a,KAAK8K,OAAS6Q,EACd3b,KAAK8b,SAASjB,EAAW7Y,MACzBhC,KAAK8K,YAAStD,EACdnE,aAAWgL,OAAOyM,EAAQD,IAI9B,MAAM9O,EAAS/L,KAAK+L,OAASgQ,EAAAA,QAAQhQ,OAAO+O,GAC5C9a,KAAKob,cAAcY,KACfhc,KAAKsa,SAAWyB,UAAQzB,SAASta,KAAM+L,EAAQ+O,GAC/C9a,KAAK6F,QAAUkW,EAAAA,QAAQlW,QAAQ7F,KAAM8a,GACrC9a,KAAKoa,SAAW2B,UAAQ3B,SAASpa,KAAM8a,IAGvC9a,KAAKgB,OAAOhB,KAAKic,WACrBjc,KAAKkc,kBAAkBpB,EAAQa,GAC/B3b,KAAKyb,KAAO1P,EAAO0P,KAGdE,IACD3b,KAAKmc,SAAWJ,UAAQI,SAASnc,MACjCA,KAAKwa,YAAcuB,EAAAA,QAAQvB,YAAYxa,KAAM+L,EAAQ/L,KAAKmc,SAAUrB,GAEhE9a,KAAKwa,cACLxa,KAAKob,cAAcgB,QAAQpc,KAAKwa,aAChCxa,KAAKqc,iBAAmBN,EAAAA,QAAQM,oBAGpCrc,KAAKsc,cAAgB,IAAIC,gBAEzBxB,EAAQD,EAAOC,OAGnB/a,KAAKgb,SAAWF,EAAOE,SACvBhb,KAAK0E,KAAOoW,EAAOpW,KACnB1E,KAAKsc,cAAc7D,IAAI1M,GAGvB/L,KAAKwc,iBAEDzB,IAAO/a,KAAKyc,aAAeC,WAAW1c,KAAK+a,MAAM4B,KAAK3c,QAE1D4c,aAAWC,IAAI7c,KAAK8c,YACpB9c,KAAK+c,QACT,CAEO,MAAAA,GAAiB,CAEjB,QAAAjB,CAASvG,GAA4B,CAErC,GAAAzV,CAAImI,EAAoBwK,GAC3BzS,KAAKgd,SAAS,KAAQlU,MAAMhJ,IAAImI,EAAMwK,IAC1C,CAEO,KAAAsI,GACHkC,aAAajd,KAAKyc,eACbzc,KAAKoU,SAAWpU,KAAK+L,SACtB/L,KAAKoU,SAAU,EACfpU,KAAKkd,MAAQld,KAAKmd,WAAWC,EAAAA,YAAYC,SAAWrd,KAAKmd,WAAWC,EAAAA,YAAYE,OAChFtd,KAAKob,cAAchS,QAAQjB,GAAQA,EAAK4S,SACnC/a,KAAKgB,OAAOhB,KAAKsa,SAASiD,SAEvC,CAEO,IAAAC,GACHP,aAAajd,KAAKyc,cACdzc,KAAKoU,SAAWpU,KAAK+L,SACrB/L,KAAKob,cAAchS,QAAQjB,GAAQA,EAAKqV,QACxCxd,KAAKoU,SAAU,EACfpU,KAAKmd,WAAWC,EAAAA,YAAYK,MAEpC,CAEO,YAAAC,GACH1d,KAAKoa,SAASW,QACd/a,KAAK2d,cACT,CAEO,UAAAC,GACH5d,KAAK2d,eACL3d,KAAKoa,SAASoD,MAClB,CAEO,MAAAK,CAAOC,GACV,MAAM7V,EAAO5E,EAAAA,WAAW0a,UAAU,CAAA,EAAID,EAAM3U,EAAAA,iBAC5C/J,OAAO4e,KAAK/V,GAAMmB,QAAQvK,GAAQmB,KAAanB,GAAOoJ,EAAKpJ,GAC/D,CAES,WAAAof,CAAYC,EAAsBC,GACvC,MAAM7D,SAAEA,GAAata,KACjBsa,IACAA,EAAS8D,SAASF,EAAS,IAAIG,EAAAA,OAAOH,GAAUle,KAAK+L,OAAOmS,QACxDle,KAAKga,YAAWmE,EAAO7D,EAASiD,SAAWjD,EAAS5G,UAEhE,CAEO,aAAA4K,CAAcvQ,GAAS,GACtB/N,KAAKsa,UAAUta,KAAKsa,SAAS5G,OAAO3F,EAC5C,CAEO,YAAAwQ,CAAaC,GAChB,MAAMhf,EAAIQ,KAAKwa,YACXhb,IAAGgf,EAAShf,EAAEif,UAAUD,GAAUhf,EAAE+e,eAC5C,CAEO,gBAAAG,GACH1e,KAAK2e,WAAa3e,KAAK+L,OAAOmS,OAAOrI,QAAQzI,OAAOpN,KAAK8a,OAAOG,WACpE,CAEU,UAAA2D,CAAWd,GACjB,MAAM/R,OAAEA,GAAW/L,KACnB,IAAK+L,GAAUA,EAAO8S,WAAWf,GAAO,OACxC,MAAMgB,EAAMzb,EAAAA,WAAW0a,UAAU,CAAA,EAAI/d,KAAK+L,OAAQ5C,mBAClD4C,EAAO8R,OAAOC,GACd9d,KAAK0e,mBACL1e,KAAK+e,WAAW,IAAIC,EAAAA,YAAYlB,EAAMgB,GAC1C,CAEU,UAAAC,CAAWE,GACjBjf,KAAKkf,UAAUD,GACf5b,EAAAA,WAAW0a,UAAU/d,KAAKE,GAAI+e,EAAO9V,EAAAA,iBACrCuT,WAAW,KAAY1c,KAAKsc,eAAetc,KAAKsc,cAAc6C,iBAAmB,EACrF,CAEU,QAAAlD,GAAmB,CAEnB,SAAAJ,CAAUjK,GAChB5R,KAAKmc,SAAWvK,EAAIuK,SACpBnc,KAAKwa,YAAc5I,EAAI4I,YAEvBxa,KAAKsc,cAAgB1K,EAAI0K,cACzBtc,KAAKqc,iBAAmBzK,EAAIyK,gBAChC,CAEO,WAAAT,CAAYza,GACfnB,KAAKmB,OAASA,EACdnB,KAAKof,QAAU,CACnB,CAEU,iBAAAlD,CAAkBpB,EAAuBa,GAC1CA,IACIb,EAAO3O,OAAU2O,EAAO5M,SAAQlO,KAAKqf,WAAa,IAAIC,EAAAA,WAAWxE,IACtE9a,KAAK+L,OAAOwT,gBAAgBvf,KAAKqf,WAAYrf,KAAK+e,WAAWpC,KAAK3c,OAE1E,CAES,SAAAC,CAAU8C,EAAkByc,GAcjC,OAbIxf,KAAK+L,SACD5C,EAAAA,gBAAgBsW,SAAS1c,GAEzB/C,KAAK0f,mBAAmB3c,EAAUyc,GACd,SAAbzc,EACP/C,KAAK2f,aAAaH,GACE,aAAbzc,EACF/C,KAAK8K,SAAQ9K,KAAK+L,OAAOiP,SAAWwE,GACrB,WAAbzc,IACP/C,KAAK+L,OAAO6T,OAASJ,EACrB9C,WAAW,IAAM1c,KAAK8K,QAAU9K,KAAK8K,OAAO+U,0BAG7C/W,MAAM7I,UAAU8C,EAAUyc,EACrC,CAES,SAAAM,CAAU/c,GACf,OAAI/C,KAAK+L,QAAU5C,kBAAgBsW,SAAS1c,GAAkB/C,KAAK+L,OAAOhJ,GACnE+F,MAAMgX,UAAU/c,EAC3B,CAEU,kBAAA2c,CAAmB3c,EAAkByc,GAC3C,MAAMvX,EAAO5E,EAAAA,WAAW0a,UAAU,CAAA,EAAI/d,KAAK+L,OAAQ5C,mBACnDlB,EAAKlF,GAAa/C,KAAK8a,OAAmB/X,GAAYyc,EAClDA,GAAUxf,KAAK+L,OAAOgU,iBAC1B/f,KAAK4e,WAAW3W,EACpB,CAEU,YAAA0X,CAAaH,GACnBxf,KAAK8a,OAAOpW,KAAO8a,EACfxf,KAAK+L,OAAOiU,qBAAsBhgB,KAAK+L,OAAOkU,gBAAkBT,EAC/Dxf,KAAKie,aACd,CAEU,WAAAiC,GACNlgB,KAAKmgB,SAAU,CACnB,CAEU,SAAAC,GACNpgB,KAAKkd,OAAQ,EACbld,KAAKmd,WAAWC,EAAAA,YAAYiD,cAC5BrgB,KAAKmd,WAAWC,EAAAA,YAAYkD,OAC5BtgB,KAAKmd,WAAWC,EAAAA,YAAYmD,aAC5B3D,aAAWC,IAAI7c,KAAKqb,YACxB,CAEU,aAAAmF,GACFxgB,KAAKga,YACTha,KAAKga,WAAY,EACjBha,KAAKmd,WAAWC,EAAAA,YAAYqD,YAC5B7D,aAAWC,IAAI7c,KAAKsb,iBACxB,CAEU,aAAAoF,GACN,MAAMC,KAAEA,EAAMxU,MAAOyU,EAAY1S,OAAQ2S,GAAgB7gB,KAAK8a,OAC9D,GAAI6F,EAAM,CACN,IAAIxU,MAAEA,EAAK+B,OAAEA,EAAM4S,WAAEA,GAAe9gB,KACpC,MAAMke,EAAkB,QAATyC,EAAiB3gB,KAAK+gB,eAAiB/gB,KAAK+K,QACtD6V,IAAYzU,EAAQ7H,KAAKC,IAAI,EAAG2Z,EAAOna,EAAIma,EAAO/R,QAClD0U,IAAa3S,EAAS5J,KAAKC,IAAI,EAAG2Z,EAAOla,EAAIka,EAAOhQ,SACzDlO,KAAK4e,WAAW,CAAEzS,QAAO+B,SAAQ4S,cACrC,CAEK9gB,KAAKkd,OAAOld,KAAKogB,WAC1B,CAEU,cAAAY,GACN,GAAIhhB,KAAKga,UAAW,CAChB4C,aAAWC,IAAI7c,KAAKwb,kBAEpB,MAAMzB,WAAEA,GAAe/Z,KACnB+Z,IAAe/Z,KAAKihB,eAAejhB,KAAKkhB,uBACvCnH,IACD/Z,KAAKihB,eAAgB,EACrBjhB,KAAKse,gBAEb,MAAOte,KAAKse,eAChB,CAEU,oBAAA4C,CAAqBC,GAAgB,GAC3CnhB,KAAKohB,WAAW,KACRphB,KAAK+Z,aACDoH,GAAMnhB,KAAKmd,WAAWC,EAAAA,YAAYiE,gBACtCzE,aAAWC,IAAI7c,KAAKub,qBACpBvb,KAAKihB,eAAgB,IAGjC,CAEU,aAAAK,GACFthB,KAAK6F,QAAQ0b,iBAAmBvhB,KAAKwa,aACrCxa,KAAKohB,WAAW,IAAMphB,KAAKwa,YAAY+D,eAE/C,CAEO,QAAAvB,CAAS7U,EAAiBwU,GACzBA,IAAMxU,EAAOA,EAAKwU,KAAKA,IACtB3c,KAAK8c,aAAY9c,KAAK8c,WAAa,IACxC9c,KAAK+L,OAAS5D,IAASnI,KAAK8c,WAAWd,KAAK7T,EAChD,CAEO,SAAAqZ,CAAUrZ,EAAiBwU,GAC1BA,IAAMxU,EAAOA,EAAKwU,KAAKA,IAC3B3c,KAAKkd,MAAQ/U,IAASnI,KAAKqb,YAAYW,KAAK7T,EAChD,CAEO,aAAAsZ,CAActZ,EAAiBwU,GAC9BA,IAAMxU,EAAOA,EAAKwU,KAAKA,IAC3B3c,KAAKga,UAAY7R,IAASnI,KAAKsb,gBAAgBU,KAAK7T,EACxD,CAEO,iBAAAuZ,CAAkBvZ,EAAiBwU,GAClCA,IAAMxU,EAAOA,EAAKwU,KAAKA,IAC3B3c,KAAKub,oBAAoBS,KAAK7T,GAC1BnI,KAAKihB,cAAejhB,KAAKkhB,sBAAqB,GACxClhB,KAAKoU,SAASpU,KAAK+a,OACjC,CAEO,UAAAqG,CAAWjZ,EAAiBwU,EAAgBgF,GAC3ChF,IAAMxU,EAAOA,EAAKwU,KAAKA,IAC3B,MAAM9Z,EAAO7C,KAAKwb,iBAClB,GAAImG,GACA,IAAK,IAAIniB,EAAI,EAAGA,EAAIqD,EAAK3D,OAAQM,IAC7B,GAAIqD,EAAKrD,KAAO2I,EAAM,CAAEtF,EAAK+e,OAAOpiB,EAAG,GAAI,KAAM,OAElDqD,EAAKmZ,KAAK7T,GACjBnI,KAAKse,eACT,CAGO,IAAAuD,CAAKC,EAAsBC,EAAgDC,EAA+BC,GAC7G,OAAO1f,EAAAA,OAAOC,KAAK,OACvB,CAIO,YAAAkL,CAAawU,EAAeC,EAAeC,GAAqC,MAAO,CAAEre,EAAGme,EAAOle,EAAGme,EAAQ,CAC9G,aAAAE,CAAcC,GAA+B,OAAOA,CAAY,CAGhE,qBAAAC,CAAsBC,EAA+BC,GACxD,OAAOziB,KAAKwa,aAAexa,KAAKwa,YAAYkI,SAASF,EAAaC,EACtE,CAEO,oBAAAE,CAAqBH,EAA+BC,GACvD,OAAOziB,KAAK4iB,aAAa5iB,KAAKuiB,sBAAsBC,EAAaC,GACrE,CAEO,qBAAAI,CAAsBC,GACzB,MAAM/e,EAAEA,EAACC,EAAEA,GAAMhE,KAAK0a,aACtB,MAAO,CAAE3W,EAAGA,EAAI+e,EAAW/e,EAAGC,EAAGA,EAAI8e,EAAW9e,EACpD,CAEO,kBAAA+e,GACH/iB,KAAK+L,QAAU/L,KAAK+L,OAAOgX,oBAC/B,CAGO,YAAAC,CAAaC,GAAqB,CAE/B,UAAA9F,CAAWnb,GACjBhC,KAAKkf,UAAU,IAAI9B,EAAAA,YAAYpb,EAAMhC,MACzC,CAEU,cAAAwc,GACN,MAAM0G,EAAQC,EAAAA,IAAIpI,MAAM,eAAiB/a,KAAKojB,WAC9CpjB,KAAKqjB,KAAK,CACN,CAACjG,EAAAA,YAAYE,MAAO,IAAM6F,EAAAA,IAAIG,IAAIJ,IAClC,CAACK,EAAAA,YAAYjG,MAAOtd,KAAK0e,iBAAkB1e,MAC3C,CAACwjB,EAAAA,YAAYlG,MAAOtd,KAAKkgB,YAAalgB,MACtC,CAACwjB,cAAYC,IAAKzjB,KAAKwgB,cAAexgB,QAE1CA,KAAKmb,WAAWa,KACZhc,KAAK0jB,IAAI,CACL,CAACC,EAAAA,WAAWC,KAAM5jB,KAAKshB,cAAethB,MACtC,CAACujB,EAAAA,YAAYE,IAAKzjB,KAAK0gB,cAAe1gB,MACtC,CAACwjB,cAAYK,KAAM7jB,KAAKghB,eAAgBhhB,QAGpD,CAEU,oBAAA8jB,GACN9jB,KAAK+jB,KAAK/jB,KAAKmb,WACnB,CAES,OAAA/P,CAAQ+S,GACb,MAAM6F,EAAY,KACd,IAAKhkB,KAAKikB,UAAW,CACjBnK,EAAOjX,KAAK4W,OAAOzZ,MACnB,IACIA,KAAKwd,OACLxd,KAAKmd,WAAWC,EAAAA,YAAYqG,KAC5BzjB,KAAK8jB,uBAEL9jB,KAAKob,cAAchS,QAAQjB,KAAUnI,KAAK8K,QAAU3C,IAASnI,KAAKwa,cAAgBrS,EAAKiD,WACvFpL,KAAKob,cAAclc,OAAS,EAEvBc,KAAK8K,SACF9K,KAAKmc,UAAUnc,KAAKmc,SAAS/Q,UAC7BpL,KAAKqc,kBAAkBrc,KAAKqc,iBAAiBjR,UACjDpL,KAAKsc,cAAclR,WAGvBpL,KAAK+L,OAAOX,UAEZpL,KAAK8a,OAAOW,KAAOzb,KAAKyb,KAAOzb,KAAK2b,UAAY,KAC5C3b,KAAK6a,aAAY7a,KAAK6a,WAAWY,KAAO,MAE5C3S,MAAMsC,UAENsR,WAAW,KAAQwH,EAAAA,aAAa/E,iBAAmB,IACvD,CAAE,MAAOgF,GACL3gB,EAAM4gB,MAAMD,EAChB,CACJ,GAEJhG,EAAO6F,IAActH,WAAWsH,EACpC,GA5cOnK,QAAAA,OAAAhX,KAAO,IAAIwhB,EAAAA,SAMH3lB,EAAA,CADd2X,EAAAA,cAActN,IACe8Q,eAAA5D,UAAA,UAAA,GAGfvX,EAAA,CADd2Y,EAAAA,cACkCwC,eAAA5D,UAAA,kBAAA,GAX1B4D,QAAAA,OAAMC,EAAApb,EAAA,CADlByX,EAAAA,cACY0D,gBCAAyK,QAAAA,KAAN,cAAmB7S,WAEtB,SAAWyE,GAAU,MAAO,MAAO,CAKnC,WAAA5D,CAAYrK,GACRa,MAAMb,EACV,GAJevJ,EAAA,CADd2X,EAAAA,cAAc9M,IACa+a,aAAArO,UAAA,UAAA,GALnBqO,QAAAA,KAAI5lB,EAAA,CAHhBwZ,EAAAA,UAAU/G,GACVgH,gBACAhC,EAAAA,cACYmO,cCFb,MAAM7L,IAAEA,EAAGgH,SAAEA,EAAQ8E,OAAEA,GAAWC,EAAAA,aAC5BtP,EAAOoP,QAAAA,KAAKrO,UAAWwO,EAAQrM,QAAAA,MAAMnC,UAI9ByO,QAAAA,IAAN,cAAkBtM,cAErB,SAAWlC,GAAU,MAAO,KAAM,CAElC,gBAAWyO,GAA0B,OAAO,CAAK,CA6BjD,WAAArS,CAAYrK,GACRa,MAAMb,GACNjI,KAAKI,SAASC,eAAiBL,KAAKI,SAASE,cACjD,CAGO,oBAAA4L,GAAiC,OAAO,CAAE,CAG1C,wBAAA0Y,GAAqC,OAAO,CAAE,CAE9C,oBAAA9X,GAAiC,OAAO9M,KAAK4kB,6BAA8B,CAAG,CAI9E,qBAAAC,GAAgC,CAIhC,iBAAAC,CAAkBC,GACrB,GAAI/kB,KAAK4I,SAAS1J,SAAWc,KAAKglB,YAAa,CAE3C,MAAM/c,EAAOjI,KAAKE,GAElB,GAAI+H,EAAKzC,WAAY,CAEbyC,EAAK9C,cAAcnF,KAAKilB,gBAE5Bnc,MAAMgc,oBAEN,MAAM9Z,UAAEA,GAAchL,KAAKI,SAEtB6H,EAAKxC,aACFwC,EAAK7C,aACL4F,EAAUmB,OAASnB,EAAUjH,EAAGiH,EAAUjH,EAAI,EAC9CiH,EAAUkD,OAASjG,EAAKiG,OAAQlD,EAAUhH,EAAI,IAE9CgH,EAAUkD,QAAUlD,EAAUhH,EAAGgH,EAAUhH,EAAI,EAC/CgH,EAAUmB,MAAQlE,EAAKkE,MAAOnB,EAAUjH,EAAI,IAIpD/D,KAAKklB,qBAET,MAAOllB,KAAK6kB,uBAEhB,MAAO7kB,KAAK6kB,uBAChB,CAGO,oBAAAM,GAA+B,CAE/B,oBAAAC,GACH,IAAIvc,EAEJ,GAAI7I,KAAK4I,SAAS1J,OAAQ,CACtB,MAAM+I,EAAOjI,KAAKE,GAAI2H,EAAS7H,KAAKI,UAAUilB,aAAEA,EAAYra,UAAEA,GAAcnD,EAEtEyd,EAAuBzd,EAAOyd,uBAAyBzd,EAAOyd,qBAAuB1K,EAAAA,iBAC3F9R,MAAMsc,qBAAqBE,GAC3Bf,EAAOe,EAAsBrd,GAE7BjI,KAAKulB,2BAEL1c,GAAc4W,EAASzU,EAAWsa,GAC9Bzc,GAAgC,SAAlBZ,EAAKU,UAAqB8P,EAAI4M,EAAcC,EAClE,MAAOtlB,KAAKulB,2BAEZliB,EAAAA,WAAWD,SAASpD,KAAM,aAAc6I,GAExC7I,KAAKwlB,eACT,CAGO,wBAAAD,GAAmC,CAEnC,mBAAAE,GACCzlB,KAAK0lB,aAAa1lB,KAAK2lB,iBAC3B7c,MAAM2c,qBACV,CAIO,aAAAD,GAAwB,CAExB,cAAAG,GAAyB,CAIzB,kBAAAC,GAA6B,CAE7B,cAAAza,GACHrC,MAAMqC,iBACNnL,KAAK4lB,oBACT,CAIO,YAAAC,CAAaC,EAAwB7S,GAAkC,CAGvE,aAAA8S,CAAcD,EAAwB7S,GAAkC,CAGxE,QAAA+S,CAASja,EAAuB7C,GAC/BlJ,KAAKE,GAAGuI,gBACRzI,KAAK6lB,aAAa9Z,EAAQ7C,IAE1BlJ,KAAK6lB,aAAa9Z,EAAQ7C,GACtBlJ,KAAK4I,SAAS1J,QAAQc,KAAK+lB,cAAcha,EAAQ7C,IAErDlJ,KAAK0lB,aAAa1lB,KAAKimB,SAASD,SAASja,EAAQ7C,EACzD,CAGO,aAAA+H,CAAclF,EAAuB7C,GACxClJ,KAAK+lB,cAAcha,EAAQ7C,IAEvBlJ,KAAKE,GAAGyE,aAAe3E,KAAKE,GAAGC,eAC/B4L,EAAOma,SAASlmB,KAAK+P,YACrB/P,KAAK6P,iBAAiB9D,GAE9B,GApJerN,EAAA,CADd2X,EAAAA,cAAc9N,IACYmc,YAAAzO,UAAA,UAAA,GAIZvX,EAAA,CADd2Y,EAAAA,WAAW,MACkBqN,YAAAzO,UAAA,aAAA,GAGfvX,EAAA,CADd2Y,EAAAA,WAAW,MACmBqN,YAAAzO,UAAA,cAAA,GAGxBvX,EAAA,CADNmY,EAAAA,UAAS,IACsB6N,YAAAzO,UAAA,sBAAA,GAMjBvX,EAAA,CADdiZ,EAAAA,uBAAuB,SACW+M,YAAAzO,UAAA,gBAAA,GAgB5BvX,EAAA,CADNuZ,EAAAA,QAAQ/C,EAAKhJ,uBACoCwY,YAAAzO,UAAA,uBAAA,MAG3CvX,EAAA,CADNuZ,EAAAA,QAAQ/C,EAAKpI,uBACwC4X,YAAAzO,UAAA,2BAAA,MAM/CvX,EAAA,CADNuZ,EAAAA,QAAQ/C,EAAK4P,oBAC0BJ,YAAAzO,UAAA,wBAAA,MAmCjCvX,EAAA,CADNuZ,EAAAA,QAAQ/C,EAAKiQ,uBACyBT,YAAAzO,UAAA,uBAAA,MAwBhCvX,EAAA,CADNuZ,EAAAA,QAAQ/C,EAAKkQ,uBAC6BV,YAAAzO,UAAA,2BAAA,MAepCvX,EAAA,CADNuZ,EAAAA,QAAQ/C,EAAK/J,iBACuBuZ,YAAAzO,UAAA,qBAAA,MAS9BvX,EAAA,CADNuZ,EAAAA,QAAQ/C,EAAK8Q,WACiEtB,YAAAzO,UAAA,eAAA,MAGxEvX,EAAA,CADNuZ,EAAAA,QAAQwM,EAAMuB,WACiEtB,YAAAzO,UAAA,gBAAA,MAtIvEyO,QAAAA,IAAGhmB,EAAA,CAFfyZ,gBACAhC,EAAAA,cACYuO,aCNAyB,QAAAA,MAAN,cAAoBzB,YAEvB,SAAWxO,GAAU,MAAO,OAAQ,CAEpC,WAAWrE,GAAqB,OAAO,CAAK,CAW5C,WAAAS,CAAYrK,GACRa,MAAMb,EACV,GAVevJ,EAAA,CADd2X,EAAAA,cAAchN,IACc8c,cAAAlQ,UAAA,UAAA,GAGdvX,EAAA,CADdoY,EAAAA,YAAY,YACcqP,cAAAlQ,UAAA,YAAA,GAGZvX,EAAA,CADdiZ,EAAAA,uBAAuB,SACWwO,cAAAlQ,UAAA,gBAAA,GAb1BkQ,QAAAA,MAAKznB,EAAA,CADjByX,EAAAA,cACYgQ,eCAb,MAAMC,OAAEA,GAAMC,UAAEA,GAASC,QAAEA,IAAYC,EAAAA,sBAG1BC,QAAAA,QAAN,cAAsB/U,WAEzB,SAAWyE,GAAU,MAAO,SAAU,CActC,WAAA5D,CAAYrK,GACRa,MAAMb,EACV,CAEO,YAAAwe,GAEH,MAAMta,MAAEA,EAAK+B,OAAEA,EAAMwY,YAAEA,EAAWC,WAAEA,EAAUC,SAAEA,GAAa5mB,KAAKE,GAC5D2mB,EAAK1a,EAAQ,EAAG2a,EAAK5Y,EAAS,EAE9BkE,EAAiBpS,KAAKE,GAAGkS,KAAO,GAElCsU,GAEIC,GAAcC,GACVF,EAAc,GAAGJ,GAAQlU,EAAMyU,EAAIC,EAAID,EAAKH,EAAaI,EAAKJ,EAAa,EAAGC,EAAYC,GAAU,GACxGN,GAAQlU,EAAMyU,EAAIC,EAAID,EAAIC,EAAI,EAAGF,EAAUD,GAAY,GACnDD,EAAc,GAAGL,GAAUjU,KAE3BsU,EAAc,IACdJ,GAAQlU,EAAMyU,EAAIC,EAAID,EAAKH,EAAaI,EAAKJ,GAC7CN,GAAOhU,EAAMjG,EAAO2a,IAExBR,GAAQlU,EAAMyU,EAAIC,EAAID,EAAIC,EAAI,EAAG,IAAK,GAAG,IAIzCC,EAAAA,SAASC,iBAAgBhnB,KAAKE,GAAGkS,KAAOpS,KAAKuT,SAAQ,KAIrDoT,GAAcC,GACdR,GAAOhU,EAAMyU,EAAIC,GACjBR,GAAQlU,EAAMyU,EAAIC,EAAID,EAAIC,EAAI,EAAGH,EAAYC,GAAU,GACvDP,GAAUjU,IAEVkU,GAAQlU,EAAMyU,EAAIC,EAAID,EAAIC,EAKtC,GAnDepoB,EAAA,CADd2X,EAAAA,cAAc7M,IACgBgd,gBAAAvQ,UAAA,UAAA,GAGxBvX,EAAA,CADNmZ,EAAAA,SAAS,IACkB2O,gBAAAvQ,UAAA,mBAAA,GAGrBvX,EAAA,CADNmZ,EAAAA,SAAS,IACiB2O,gBAAAvQ,UAAA,kBAAA,GAGpBvX,EAAA,CADNmZ,EAAAA,SAAS,IACe2O,gBAAAvQ,UAAA,gBAAA,GAdhBuQ,QAAAA,QAAO9nB,EAAA,CADnByX,EAAAA,cACYqQ,iBCFb,MAAMJ,OAAEA,GAAMa,OAAEA,cAAQC,IAAeX,EAAAA,uBACjCY,OAAEA,GAAMC,SAAEA,GAAQC,YAAEA,GAAWC,aAAEA,IAAiBC,EAAAA,aAClDC,SAAEA,IAAaC,EAAAA,WAIRC,QAAAA,KAAN,cAAmBjW,WAEtB,SAAWyE,GAAU,MAAO,MAAO,CAoBnC,WAAWyR,GACP,MAAMxb,MAAEA,EAAKyb,SAAEA,GAAa5nB,KAAKE,GAC3B2nB,EAAiBC,EAAAA,eAKvB,OAHI3b,IAAO0b,EAAG9jB,EAAIoI,GACdyb,GAAUT,GAAOU,EAAID,GAElBC,CACX,CAEA,WAAWF,CAAQ5nB,GACfC,KAAKmM,MAAQkb,GAAYC,GAAcvnB,GACvCC,KAAK4nB,SAAWR,GAASE,GAAcvnB,GACnCC,KAAKkO,SAAQlO,KAAKkO,OAAS,EACnC,CAGA,WAAAoE,CAAYrK,GACRa,MAAMb,EACV,CAEO,YAAAwe,GAEH,MAAMxe,EAAOjI,KAAKE,GACZkS,EAAiBnK,EAAKmK,KAAO,GAE/BnK,EAAK8f,OAELb,GAAW9U,EAAMnK,EAAK8f,QAAQ,EAAO9f,EAAK+f,SAI1C5B,GAAOhU,EAAM,EAAG,GAChB6U,GAAO7U,EAAMpS,KAAKmM,MAAO,GAGjC,CAEO,kBAAAkI,GACH,MAAMpM,EAAOjI,KAAKE,IACbF,KAAKglB,aAAe/c,EAAK8f,QAAU9f,EAAKuL,OACzC0T,GAAWjf,EAAK0L,gBAAkB,GAAI1L,EAAK8f,OAAQ9f,EAAKuL,MAAOvL,EAAK+f,QAChE/f,EAAK0E,YAAY1K,EAAUwS,UAAUzU,MAAM,IAC5C8I,MAAMuL,oBACjB,CAEO,iBAAAyQ,GACC9kB,KAAK+nB,OACLP,GAASxnB,KAAKE,GAAGyT,gBAAiB3T,KAAKI,SAAS4K,WAC7ClC,MAAMgc,mBACjB,GAnEepmB,EAAA,CADd2X,EAAAA,cAAc/M,IACaoe,aAAAzR,UAAA,UAAA,GAGbvX,EAAA,CADdupB,EAAAA,uBAAuB,WACiBP,aAAAzR,UAAA,mBAAA,GAG1BvX,EAAA,CADd2Y,EAAAA,WAAW,IACmBqQ,aAAAzR,UAAA,cAAA,GAGxBvX,EAAA,CADNmZ,EAAAA,YACsC6P,aAAAzR,UAAA,cAAA,GAGhCvX,EAAA,CADNmZ,EAAAA,SAAS,IACqB6P,aAAAzR,UAAA,aAAA,GAGhBvX,EAAA,CADdmZ,EAAAA,UAAS,IACqB6P,aAAAzR,UAAA,cAAA,GApBtByR,QAAAA,KAAIhpB,EAAA,CADhByX,EAAAA,cACYuR,cCNb,MAAMQ,IAAEA,GAAGC,IAAEA,MAAKC,IAAO9jB,MACnB8hB,OAAEA,GAAMa,OAAEA,GAAMZ,UAAEA,GAASa,WAAEA,IAAeX,EAAAA,sBAC5C8B,GAAOX,QAAAA,KAAKzR,UAILqS,QAAAA,QAAN,cAAsB7W,WAEzB,SAAWyE,GAAU,MAAO,SAAU,CActC,WAAA5D,CAAYrK,GACRa,MAAMb,EACV,CAEO,YAAAwe,GAEH,MAAMrU,EAAiBpS,KAAKE,GAAGkS,KAAO,GAEtC,GAAIpS,KAAKE,GAAG6nB,OAERb,GAAW9U,EAAMpS,KAAKE,GAAG6nB,QAAQ,GAAO,OAErC,CAEH,MAAM5b,MAAEA,EAAK+B,OAAEA,EAAMqa,MAAEA,GAAUvoB,KAAKE,GAChC2mB,EAAK1a,EAAQ,EAAG2a,EAAK5Y,EAAS,EAEpCkY,GAAOhU,EAAMyU,EAAI,GAEjB,IAAK,IAAIrnB,EAAI,EAAGA,EAAI+oB,EAAO/oB,IACvBynB,GAAO7U,EAAMyU,EAAKA,EAAKqB,GAAS,EAAJ1oB,EAAQ4oB,GAAMG,GAAQzB,EAAKA,EAAKqB,GAAS,EAAJ3oB,EAAQ4oB,GAAMG,IAGnFlC,GAAUjU,EAEd,CAEJ,CAGO,kBAAAiC,GAA6B,CAG7B,iBAAAyQ,GAA4B,GA5CpBpmB,EAAA,CADd2X,EAAAA,cAAc5M,IACgB6e,gBAAArS,UAAA,UAAA,GAGxBvX,EAAA,CADNmZ,EAAAA,SAAS,IACYyQ,gBAAArS,UAAA,aAAA,GAGfvX,EAAA,CADNmZ,EAAAA,YACsCyQ,gBAAArS,UAAA,cAAA,GAGhCvX,EAAA,CADNmZ,EAAAA,SAAS,IACqByQ,gBAAArS,UAAA,aAAA,GAgCxBvX,EAAA,CADNuZ,EAAAA,QAAQoQ,GAAKhU,qBACuBiU,gBAAArS,UAAA,qBAAA,MAG9BvX,EAAA,CADNuZ,EAAAA,QAAQoQ,GAAKvD,oBACsBwD,gBAAArS,UAAA,oBAAA,MAjD3BqS,QAAAA,QAAO5pB,EAAA,CAFnByZ,gBACAhC,EAAAA,cACYmS,iBCPb,MAAMJ,IAAEA,GAAGC,IAAEA,GAAGC,GAAEA,IAAO9jB,MACnB8hB,OAAEA,GAAMa,OAAEA,GAAMZ,UAAEA,IAAcE,EAAAA,sBAIzBiC,QAAAA,KAAN,cAAmB/W,WAEtB,SAAWyE,GAAU,MAAO,MAAO,CAWnC,WAAA5D,CAAYrK,GACRa,MAAMb,EACV,CAEO,YAAAwe,GAEH,MAAMta,MAAEA,EAAK+B,OAAEA,EAAMua,QAAEA,EAAO/B,YAAEA,GAAgB1mB,KAAKE,GAC/C2mB,EAAK1a,EAAQ,EAAG2a,EAAK5Y,EAAS,EAE9BkE,EAAiBpS,KAAKE,GAAGkS,KAAO,GACtCgU,GAAOhU,EAAMyU,EAAI,GAEjB,IAAK,IAAIrnB,EAAI,EAAGA,EAAc,EAAVipB,EAAajpB,IAC7BynB,GAAO7U,EAAMyU,GAAMrnB,EAAI,GAAM,EAAIqnB,EAAKA,EAAKH,GAAewB,GAAK1oB,EAAI4oB,GAAMK,GAAU3B,GAAMtnB,EAAI,GAAM,EAAIsnB,EAAKA,EAAKJ,GAAeyB,GAAK3oB,EAAI4oB,GAAMK,IAGnJpC,GAAUjU,EAEd,GA1Be1T,EAAA,CADd2X,EAAAA,cAAc3M,IACa8e,aAAAvS,UAAA,UAAA,GAGrBvX,EAAA,CADNmZ,EAAAA,SAAS,IACc2Q,aAAAvS,UAAA,eAAA,GAGjBvX,EAAA,CADNmZ,EAAAA,SAAS,OACkB2Q,aAAAvS,UAAA,mBAAA,GAXnBuS,QAAAA,KAAI9pB,EAAA,CADhByX,EAAAA,cACYqS,cCJAE,QAAAA,MAAN,cAAoBpE,aAEvB,SAAWpO,GAAU,MAAO,OAAQ,CAQpC,SAAWgH,GAAmB,MAAMyL,MAAEA,GAAU3oB,KAAM,OAAO2oB,GAASA,EAAMzL,KAAM,CAElF,SAAWyL,GAAwB,MAAMjkB,KAAEA,GAAS1E,KAAKE,GAAI,OAAO4H,EAAAA,QAAQpD,IAASA,EAAK,GAAGikB,KAAM,CAEnG,WAAArW,CAAYrK,GACRa,MAAMb,EACV,GAXevJ,EAAA,CADd2X,EAAAA,cAAc/K,IACcod,cAAAzS,UAAA,UAAA,GAGtBvX,EAAA,CADN2Y,EAAAA,WAAW,KACOqR,cAAAzS,UAAA,WAAA,GARVyS,QAAAA,MAAKhqB,EAAA,CADjByX,EAAAA,cACYuS,eAoBN,MAAME,GAAUF,QAAAA,MCnBVG,QAAAA,OAAN,cAAqBvE,aAExB,SAAWpO,GAAU,MAAO,QAAS,CAyBrC,WAAW4S,GAA8B,OAAO9oB,KAAK+L,OAAO+c,OAAQ,CAEpE,SAAW5L,GAAmB,OAAQld,KAAK2L,GAAI,CAI/C,WAAA2G,CAAYrK,GACRa,MAAMb,GACNjI,KAAK+L,OAASgQ,EAAAA,QAAQhQ,OAAO/L,KAAKE,IAC9B+H,GAAQA,EAAK0D,KAAK3L,KAAK+oB,UAAU9gB,EAAK0D,IAC9C,CAEO,SAAAod,CAAUpd,GACb,IAAIqd,EAAAA,YAAY,CAAErd,QAAOqI,KAAM2U,IAC3B3oB,KAAK8oB,QAAQC,UAAUJ,EAAMlN,KAAM,EAAG,GACtCzb,KAAK2L,SAAMnE,EACXxH,KAAKipB,QACLjpB,KAAKkf,UAAU,IAAIgK,EAAAA,WAAWA,EAAAA,WAAWC,OAAQ,CAAER,YAE3D,CAEO,IAAAS,CAAKlY,EAASmY,EAAqBzlB,EAA6BgkB,GACnE,MAAM0B,EAAS,IAAIC,EAAAA,OAAOrY,EAAGsY,gBAAgBC,SAEvCC,EAAI,IAAIH,SACVF,GAAQK,EAAEC,UAAUN,EAAOtlB,EAAGslB,EAAOrlB,GACrCJ,IAAOqR,EAAAA,SAASrR,GAAS8lB,EAAE9lB,MAAMA,GAAS8lB,EAAE9lB,MAAMA,EAAMG,EAAGH,EAAMI,IACjE4jB,GAAU8B,EAAEvC,OAAOS,GACvB0B,EAAOM,eAAeF,GAEtBxY,EAAG8U,SAAShmB,KAAK+L,OAAQ,CAAEud,OAAQA,EAAOO,cAC1C7pB,KAAKipB,OACT,CAEO,KAAAA,GACHjpB,KAAKie,aACT,CAGO,aAAAhN,CAAclF,EAAuBkH,GACxC,MAAM9G,MAAEA,EAAK+B,OAAEA,GAAWlO,KAAKE,IAAIub,KAAEA,GAASzb,KAAK+L,OACnDA,EAAOgd,UAAUtN,EAAM,EAAG,EAAGA,EAAKtP,MAAOsP,EAAKvN,OAAQ,EAAG,EAAG/B,EAAO+B,EACvE,CAEO,YAAAxN,GACH,MAAMqL,OAAEA,GAAW/L,KACnB,GAAI+L,EAAQ,CACR,MAAMwI,OAAEA,EAAMuV,WAAEA,GAAe9pB,KAAKE,GACpC6L,EAAO8R,OAAO7d,KAAKE,GAAuB4pB,GACtC/d,EAAOwI,SAAWA,IAAQxI,EAAOwI,OAASA,EAClD,CACJ,CAEO,OAAAnJ,GACCpL,KAAK+L,SACL/L,KAAK+L,OAAOX,UACZpL,KAAK+L,OAAS,MAElBjD,MAAMsC,SACV,GAjFe1M,EAAA,CADd2X,EAAAA,cAAcxK,IACegd,eAAA5S,UAAA,UAAA,GAGfvX,EAAA,CADd6B,EAAW,MACkBsoB,eAAA5S,UAAA,aAAA,GAGfvX,EAAA,CADd6B,EAAW,MACmBsoB,eAAA5S,UAAA,cAAA,GAGhBvX,EAAA,CADd6B,EAAW,IACuBsoB,eAAA5S,UAAA,kBAAA,GAG5BvX,EAAA,CADN6B,GAAW,IACWsoB,eAAA5S,UAAA,cAAA,GAGhBvX,EAAA,CADNmY,EAAAA,UAAS,IACiBgS,eAAA5S,UAAA,kBAAA,GAGpBvX,EAAA,CADN6B,KACgDsoB,eAAA5S,UAAA,uBAAA,GAvBxC4S,QAAAA,OAAMnqB,EAAA,CADlByX,EAAAA,cACY0S,gBCAb,MAAMkB,cAAEA,GAAatK,SAAEA,GAAQrS,OAAEA,GAAM4c,QAAEA,IAAYxF,EAAAA,aAGxCyF,QAAAA,KAAN,cAAmBxY,WAEtB,SAAWyE,GAAU,MAAO,MAAO,CAsFnC,gBAAWgU,GAAqD,OAArBlqB,KAAK2d,eAAuB3d,KAAKE,GAAGiqB,cAAe,CAG9F,WAAA7X,CAAYrK,GACRa,MAAMb,EACV,CAEO,oBAAAmiB,GACH,MAAMniB,EAAOjI,KAAKE,IACZmqB,WAAEA,EAAUC,cAAEA,EAAaC,WAAEA,EAAUC,SAAEA,EAAQC,WAAEA,EAAUC,OAAEA,EAAMC,SAAEA,EAAQC,aAAEA,EAAYC,QAAEA,GAAY5iB,EAEjHA,EAAK6iB,aAAelpB,EAAYC,OAAOwoB,EAAYG,GACnDviB,EAAK8iB,gBAAkBnpB,EAAYC,OAAOyoB,EAAeE,GACzDviB,EAAK+iB,UAAYH,EAAUrc,EAAAA,WAAWyc,WAAWJ,QAAWrjB,EAC5DS,EAAKijB,WAAajjB,EAAK6iB,cAAgB7iB,EAAK6iB,aAA0B,GAAXN,GAAkB,EAC7EviB,EAAKkjB,OAAS,GAAGT,EAAS,UAAY,KAAkB,eAAbC,EAA4B,cAAgB,KAAoB,WAAfF,EAA0BA,EAAa,IAAM,KAAKD,GAAY,QAAQD,GAAc,YAChLtiB,EAAKmjB,WAA8B,SAAjBR,IAA4B3iB,EAAKxC,WAEnDwC,EAAKkiB,eAAiB9oB,EAAYgqB,aAAapjB,EAAKqjB,cAAgBrjB,EAAKsjB,aAA6B,KAAdtjB,EAAKujB,MAAevjB,EAAKsjB,YAActjB,EAAKujB,KAAMxrB,KAAKE,GACnJ,CAES,iBAAA4kB,GAEL,MAAM7c,EAAOjI,KAAKE,GACZ2H,EAAS7H,KAAKI,UACdoqB,SAAEA,EAAQE,OAAEA,EAAMG,QAAEA,EAASzlB,YAAa4M,EAAW1M,aAAc4M,GAAejK,EAExFjI,KAAKoqB,uBAEL,MAAQlM,OAAQuN,GAAkBxjB,EAAKkiB,eACjCuB,EAAI7jB,EAAOmD,UAMjB,GAJAnD,EAAO4jB,cAAgBA,EAEnBxjB,EAAK6iB,aAAeN,GAAUpd,GAAOqe,EAAejB,EAAW,GAE/DxY,GAAaE,EAAY,CAMzB,GALAwZ,EAAE3nB,EAAIiO,EAAYyZ,EAAc1nB,EAAI,EACpC2nB,EAAE1nB,EAAIkO,EAAauZ,EAAcznB,EAAI,EACrC0nB,EAAEvf,MAAQ6F,EAAYyZ,EAActf,MAAQlE,EAAKkE,MACjDuf,EAAExd,OAASgE,EAAauZ,EAAcvd,OAASjG,EAAKiG,OAEhD2c,EAAS,CACT,MAAOc,EAAK3d,EAAOC,EAAQ2d,GAAQ3jB,EAAK+iB,UACpChZ,IAAW0Z,EAAE3nB,GAAK6nB,EAAMF,EAAEvf,OAAU6B,EAAQ4d,GAC5C1Z,IAAYwZ,EAAE1nB,GAAK2nB,EAAKD,EAAExd,QAAWD,EAAS0d,EACtD,CACA3rB,KAAKklB,qBACT,MAAOpc,MAAMgc,oBAET4F,IAAQgB,EAAEvf,OAAoB,IAAXqe,GAEvBnnB,EAAAA,WAAWD,SAASpD,KAAM,cAAeyf,GAASiM,EAAGD,IAEjDzrB,KAAK6I,YAAYmhB,GAAQ/hB,EAAK4jB,gBAAkB,GAAmB,CAACH,EAAGD,IAAiB5jB,EAAOxH,eAAgB,GAC9G4H,EAAK4jB,gBAAkBH,CAChC,CAES,cAAAzX,GACDjU,KAAK0K,OAAO1K,KAAK0K,MAAMuJ,iBAC3BnL,MAAMmL,gBACV,CAES,oBAAAnH,GACL,IAAIX,EAAQrD,MAAMgE,uBAElB,OADKX,IAAOA,EAAQnM,KAAK6I,WAAa,EAAI,GACnCsD,CACX,CAES,oBAAAiZ,GACL,MAAMC,aAAEA,EAAYnY,aAAEA,GAAiBlN,KAAKI,SAC5C2pB,GAAc1E,EAAcrlB,KAAKE,GAAG2rB,gBAAiB3e,GACjDlN,KAAK0K,QAAO1K,KAAK0K,MAAMtK,SAASilB,aAAeA,EACvD,CAES,gBAAAxV,CAAiB9D,GACtBA,EAAO+f,KAAO9rB,KAAKE,GAAGirB,MAC1B,CAES,MAAA3b,CAAOzD,EAAuB7C,EAAyBuG,GAC5D,MAAMhF,EAAMzK,KAAK0K,MACbD,IAAKA,EAAIsF,WAAa/P,KAAK+P,WAAYtF,EAAI+E,OAAOzD,EAAQ7C,EAASuG,IACnEzP,KAAK+rB,cAAgB7iB,EAAQ8iB,WACjCljB,MAAM0G,OAAOzD,EAAQ7C,EAASuG,EAClC,CAEU,WAAAkB,CAAY5E,EAAuB7C,GACrCA,EAAQ4G,OAAO9P,KAAK0K,OAAS1K,KAAK0K,MAAMiG,YAAY5E,EAAQ7C,GAChEJ,MAAM6H,YAAY5E,EAAQ7C,EAC9B,CAES,OAAAkC,GACDpL,KAAK2K,WAAU3K,KAAK2K,SAAW,MACnC7B,MAAMsC,SACV,GAjLe1M,EAAA,CADd2X,EAAAA,cAAcjM,IACa6f,aAAAhU,UAAA,UAAA,GAIbvX,EAAA,CADd2Y,EAAAA,WAAW,IACkB4S,aAAAhU,UAAA,aAAA,GAGfvX,EAAA,CADd2Y,EAAAA,WAAW,IACmB4S,aAAAhU,UAAA,cAAA,GAGxBvX,EAAA,CADNoY,EAAAA,eACmCmT,aAAAhU,UAAA,gBAAA,GAG7BvX,EAAA,CADNmY,EAAAA,UAAS,IACsBoT,aAAAhU,UAAA,sBAAA,GAGjBvX,EAAA,CADdoY,EAAAA,YAAY,YACcmT,aAAAhU,UAAA,YAAA,GAGZvX,EAAA,CADdupB,EAAAA,uBAAuB,YACiBgC,aAAAhU,UAAA,mBAAA,GAG1BvX,EAAA,CADdoZ,EAAAA,QAAQ,QACwBmS,aAAAhU,UAAA,eAAA,GAG1BvX,EAAA,CADN2Y,EAAAA,WAAW,KACmB4S,aAAAhU,UAAA,YAAA,GAGxBvX,EAAA,CADN2Y,EAAAA,WAAW,KACgB4S,aAAAhU,UAAA,mBAAA,GAGrBvX,EAAA,CADN2Y,EAAAA,WAAW,YACe4S,aAAAhU,UAAA,kBAAA,GAGpBvX,EAAA,CADN2Y,EAAAA,WAAW,KACa4S,aAAAhU,UAAA,gBAAA,GAGlBvX,EAAA,CADN2Y,EAAAA,WAAW,WACmB4S,aAAAhU,UAAA,kBAAA,GAGxBvX,EAAA,CADN2Y,EAAAA,YAAW,IACY4S,aAAAhU,UAAA,cAAA,GAGjBvX,EAAA,CADN2Y,EAAAA,WAAW,SACe4S,aAAAhU,UAAA,gBAAA,GAGpBvX,EAAA,CADN2Y,EAAAA,WAAW,SAC2B4S,aAAAhU,UAAA,sBAAA,GAGhCvX,EAAA,CADN2Y,EAAAA,WAAW,IAC8B4S,aAAAhU,UAAA,qBAAA,GAGnCvX,EAAA,CADN2Y,EAAAA,WAAW,CAAErV,KAAM,UAAWjC,MAAO,OACCkqB,aAAAhU,UAAA,kBAAA,GAGhCvX,EAAA,CADN2Y,EAAAA,WAAW,IACe4S,aAAAhU,UAAA,kBAAA,GAGpBvX,EAAA,CADN2Y,EAAAA,WAAW,IACgB4S,aAAAhU,UAAA,mBAAA,GAGrBvX,EAAA,CADN2Y,EAAAA,WAAW,MACqB4S,aAAAhU,UAAA,mBAAA,GAG1BvX,EAAA,CADN2Y,EAAAA,WAAW,SACiB4S,aAAAhU,UAAA,iBAAA,GAGtBvX,EAAA,CADN2Y,EAAAA,WAAW,QACyB4S,aAAAhU,UAAA,qBAAA,GAG9BvX,EAAA,CADN2Y,EAAAA,YAAW,IACmB4S,aAAAhU,UAAA,qBAAA,GAGxBvX,EAAA,CADN2Y,EAAAA,WAAW,WACe4S,aAAAhU,UAAA,gBAAA,GAGpBvX,EAAA,CADN2Y,EAAAA,WAAW,SACuB4S,aAAAhU,UAAA,oBAAA,GAG5BvX,EAAA,CADNoY,EAAAA,aAAY,IACcmT,aAAAhU,UAAA,mBAAA,GApFlBgU,QAAAA,KAAIvrB,EAAA,CADhByX,EAAAA,cACY8T,cCLAgC,QAAAA,KAAN,cAAmBxa,WAEtB,SAAWyE,GAAU,MAAO,MAAO,CAQnC,WAAA5D,CAAYrK,GACRa,MAAMb,EACV,GAPevJ,EAAA,CADd2X,EAAAA,cAAc1M,IACasiB,aAAAhW,UAAA,UAAA,GAGbvX,EAAA,CADdupB,EAAAA,uBAAuB,WACiBgE,aAAAhW,UAAA,mBAAA,GARhCgW,QAAAA,KAAIvtB,EAAA,CADhByX,EAAAA,cACY8V,cCCAC,QAAAA,IAAN,cAAkB9T,cAErB,SAAWlC,GAAU,MAAO,KAAM,CAalC,WAAA5D,CAAYrK,GACRa,MAAMb,EACV,CAEO,QAAAkkB,CAASlkB,GACZ,MAAMmK,EAAOpS,KAAKosB,YAAc,IAAIH,QAAAA,KAAKhkB,GAIzC,OAHAjI,KAAKqsB,UAAYpkB,EACjBjI,KAAKssB,OAASla,EAAKA,OAA6BA,EAAKA,KAAO,IAC5DpS,KAAKyY,IAAIrG,GACFpS,IACX,CAIO,SAAA0U,GAAmB,OAAO1U,IAAK,CAE/B,MAAAomB,CAAOmG,EAAYC,GAAmB,OAAOxsB,IAAK,CAElD,MAAAinB,CAAOsF,EAAYC,GAAmB,OAAOxsB,IAAK,CAElD,aAAAysB,CAAcC,EAAaC,EAAaC,EAAaC,EAAaN,EAAYC,GAAmB,OAAOxsB,IAAK,CAE7G,gBAAA8sB,CAAiBJ,EAAaC,EAAaJ,EAAYC,GAAmB,OAAOxsB,IAAK,CAEtF,SAAAqmB,GAAmB,OAAOrmB,IAAK,CAK/B,IAAAkV,CAAKqX,EAAYC,EAAYnnB,EAAgBE,GAAwB,OAAOvF,IAAK,CAEjF,SAAAgV,CAAUuX,EAAYC,EAAYnnB,EAAgBE,EAAiBwnB,GAAyC,OAAO/sB,IAAK,CAExH,OAAAsmB,CAAQiG,EAAYC,EAAYQ,EAAkBC,EAAkBC,EAAoBC,EAAsBC,EAAoBC,GAAiC,OAAOrtB,IAAK,CAE/K,GAAAstB,CAAIf,EAAYC,EAAYe,EAAiBJ,EAAsBC,EAAoBC,GAAiC,OAAOrtB,IAAK,CAEpI,KAAAwtB,CAAMd,EAAaC,EAAaC,EAAaC,EAAaU,GAAwB,OAAOvtB,IAAK,CAK9F,WAAAytB,CAAYlB,EAAYC,EAAYQ,EAAkBC,EAAkBC,EAAoBC,EAAsBC,EAAoBC,GAAiC,OAAOrtB,IAAK,CAEnL,OAAA0tB,CAAQnB,EAAYC,EAAYe,EAAiBJ,EAAsBC,EAAoBC,GAAiC,OAAOrtB,IAAK,CAExI,UAAAknB,CAAWyG,EAAkCC,EAA2BC,GAAyB,OAAO7tB,IAAK,CAE7G,SAAA8tB,GAAmB,OAAO9tB,IAAK,CAG/B,KAAAipB,GACEjpB,KAAKosB,YAAYhsB,SAASI,YAAYR,KAAKosB,YAAY2B,YAAY,OAC5E,GA/DervB,EAAA,CADd2X,EAAAA,cAAczM,IACYsiB,YAAAjW,UAAA,UAAA,GAMZvX,EAAA,CA8DR,CAACE,EAAcC,KAClBgC,EAAAA,UAAUjC,EAAQC,EAAK,CACnB,GAAAkC,GAAQ,OAAOf,KAAKssB,MAAO,MAhEEJ,YAAAjW,UAAA,YAAA,GAX5BiW,QAAAA,IAAGxtB,EAAA,CAFfwZ,EAAAA,UAAU8V,EAAAA,YAAa,CAAC,MAAO,OAAQ,UACvC7X,EAAAA,cACY+V,4UnCgBgB,CAAA,+UDcvB,SAAqBvsB,GACvB,MAAO,CAACf,EAAaC,KACjBgC,EAAAA,UAAUjC,EAAQC,EAAKovB,EAAAA,iBAAiBpvB,EAAKc,IAErD","x_google_ignoreList":[0]}