@leafer-ui/core 1.3.3 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.esm.js","sources":["../../../../../../node_modules/.pnpm/@rollup+plugin-typescript@11.1.6_rollup@4.31.0_tslib@2.8.1_typescript@5.7.3/node_modules/tslib/tslib.es6.js","../../../../../../../src/ui/packages/app/src/App.ts","../../../../../../../src/ui/packages/event/src/Keyboard.ts","../../../../../../../src/ui/packages/event/src/PointerButton.ts","../../../../../../../src/ui/packages/event/src/UIEvent.ts","../../../../../../../src/ui/packages/event/src/PointerEvent.ts","../../../../../../../src/ui/packages/event/src/DragEvent.ts","../../../../../../../src/ui/packages/event/src/DropEvent.ts","../../../../../../../src/ui/packages/event/src/MoveEvent.ts","../../../../../../../src/ui/packages/event/src/RotateEvent.ts","../../../../../../../src/ui/packages/event/src/SwipeEvent.ts","../../../../../../../src/ui/packages/event/src/ZoomEvent.ts","../../../../../../../src/ui/packages/event/src/KeyEvent.ts","../../../../../../../src/ui/packages/interaction/interaction/src/InteractionHelper.ts","../../../../../../../src/ui/packages/interaction/interaction/src/Dragger.ts","../../../../../../../src/ui/packages/interaction/interaction/src/emit.ts","../../../../../../../src/ui/packages/interaction/interaction/src/config.ts","../../../../../../../src/ui/packages/interaction/interaction/src/Interaction.ts","../../../../../../../src/ui/packages/interaction/interaction/src/Cursor.ts","../../../../../../../src/ui/packages/hit/src/HitCanvasManager.ts","../../../../../../../src/ui/packages/hit/src/LeafHit.ts","../../../../../../../src/ui/packages/hit/src/UIHit.ts","../../../../../../../src/ui/packages/hit/src/RectHit.ts","../../../../../../../src/ui/packages/hit/src/pick.ts","../../../../../../../src/ui/packages/hit/src/canvas.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 { ILeaferConfig, IResizeEvent, ILeaferCanvas, IRenderOptions, ILeaferBase, IBoundsData } from '@leafer/interface'\nimport { Creator, DataHelper, Debug, LayoutEvent, PropertyEvent, RenderEvent, canvasSizeAttrs, registerUI } from '@leafer/core'\n\nimport { IApp, IAppConfig, IAppInputData, IEditorBase, ILeafer } from '@leafer-ui/interface'\n\nimport { Leafer } from '@leafer-ui/draw'\n\n\n@registerUI()\nexport class App extends Leafer implements IApp {\n\n public get __tag() { return 'App' }\n\n public get isApp(): boolean { return true }\n\n declare public children: ILeafer[]\n\n public realCanvas: boolean\n\n public ground: ILeafer\n public tree: ILeafer\n public sky: ILeafer\n\n constructor(userConfig?: IAppConfig, data?: IAppInputData) {\n super(userConfig, data)\n }\n\n override init(userConfig?: IAppConfig, parentApp?: IApp): void {\n super.init(userConfig, parentApp)\n if (userConfig) {\n const { ground, tree, sky, editor } = userConfig\n if (ground) this.ground = this.addLeafer(ground)\n if (tree || editor) this.tree = this.addLeafer(tree || { type: userConfig.type || 'design' })\n if (sky || editor) this.sky = this.addLeafer(sky)\n if (editor) this.sky.add(this.editor = Creator.editor(editor) as IEditorBase)\n }\n }\n\n protected __setApp(): void {\n const { canvas } = this\n const { realCanvas, view } = this.config\n if (realCanvas || view === this.canvas.view || !canvas.parentView) this.realCanvas = true\n else canvas.unrealCanvas()\n\n this.leafer = this\n this.watcher.disable()\n this.layouter.disable()\n\n this.__eventIds.push(this.on_(PropertyEvent.CHANGE, this.__onPropertyChange, this))\n }\n\n override start(): void {\n super.start()\n this.children.forEach(leafer => leafer.start())\n }\n\n override stop(): void {\n this.children.forEach(leafer => leafer.stop())\n super.stop()\n }\n\n override unlockLayout(): void {\n super.unlockLayout()\n this.children.forEach(leafer => leafer.unlockLayout())\n }\n\n override lockLayout(): void {\n super.lockLayout()\n this.children.forEach(leafer => leafer.lockLayout())\n }\n\n override forceRender(bounds?: IBoundsData, sync?: boolean): void {\n this.children.forEach(leafer => leafer.forceRender(bounds, sync))\n }\n\n public addLeafer(merge?: ILeaferConfig): Leafer {\n const leafer = new Leafer(merge)\n this.add(leafer)\n return leafer\n }\n\n override add(leafer: ILeafer, index?: number): void {\n if (!leafer.view) {\n if (this.realCanvas && !this.canvas.bounds) { // wait miniapp select canvas\n setTimeout(() => this.add(leafer, index), 10)\n return\n }\n leafer.init(this.__getChildConfig(leafer.userConfig), this)\n }\n\n super.add(leafer, index)\n if (index !== undefined) leafer.canvas.childIndex = index\n this.__listenChildEvents(leafer)\n }\n\n protected __onPropertyChange(): void {\n if (Debug.showHitView) this.children.forEach(leafer => leafer.forceUpdate('surface'))\n }\n\n protected __onCreated(): void {\n this.created = this.children.every(child => child.created)\n }\n\n protected __onReady(): void {\n if (this.children.every(child => child.ready)) super.__onReady()\n }\n\n protected __onViewReady(): void {\n if (this.children.every(child => child.viewReady)) super.__onViewReady()\n }\n\n protected __onChildRenderEnd(e: RenderEvent): void {\n this.renderer.addBlock(e.renderBounds)\n if (this.viewReady) this.renderer.update()\n }\n\n override __render(canvas: ILeaferCanvas, options: IRenderOptions): void {\n if (canvas.context) {\n const m = options.matrix\n if (m) canvas.setTransform(m.a, m.b, m.c, m.d, m.e, m.f) // screenshot\n this.children.forEach(leafer => canvas.copyWorld(leafer.canvas))\n }\n }\n\n public __onResize(event: IResizeEvent): void {\n this.children.forEach(leafer => leafer.resize(event))\n super.__onResize(event)\n }\n\n public updateLayout(): void {\n this.children.forEach(leafer => leafer.updateLayout())\n }\n\n protected __getChildConfig(userConfig?: ILeaferConfig): ILeaferConfig {\n let config = { ...this.config }\n config.hittable = config.realCanvas = undefined\n if (userConfig) DataHelper.assign(config, userConfig)\n\n // reset\n if (this.autoLayout) DataHelper.copyAttrs(config, this, canvasSizeAttrs)\n config.view = this.realCanvas ? undefined : this.view\n config.fill = undefined\n return config\n }\n\n protected __listenChildEvents(leafer: ILeaferBase): void {\n leafer.once(LayoutEvent.END, () => this.__onReady())\n leafer.once(RenderEvent.START, () => this.__onCreated())\n leafer.once(RenderEvent.END, () => this.__onViewReady())\n if (this.realCanvas) this.__eventIds.push(leafer.on_(RenderEvent.END, this.__onChildRenderEnd, this))\n }\n\n}","import { IBooleanMap } from '@leafer/interface'\n\n\nconst downKeyMap: IBooleanMap = {}\n\nexport const Keyboard = {\n\n isHoldSpaceKey(): boolean {\n return Keyboard.isHold('Space')\n },\n\n isHold(code: string): boolean {\n return downKeyMap[code]\n },\n\n setDownCode(code: string): void {\n if (!downKeyMap[code]) downKeyMap[code] = true\n },\n\n setUpCode(code: string): void {\n downKeyMap[code] = false\n }\n\n}","import { IUIEvent } from '@leafer/interface'\n\n\nexport const PointerButton = {\n\n LEFT: 1,\n\n RIGHT: 2,\n\n MIDDLE: 4,\n\n defaultLeft(event: IUIEvent): void { if (!event.buttons) event.buttons = 1 },\n\n left(event: IUIEvent): boolean { return event.buttons === 1 },\n\n right(event: IUIEvent): boolean { return event.buttons === 2 },\n\n middle(event: IUIEvent): boolean { return event.buttons === 4 }\n\n}","import { ILeaf, ILeafList, IPointData, IUIEvent } from '@leafer/interface'\nimport { Event, EventCreator } from '@leafer/core'\n\nimport { Keyboard } from './Keyboard'\nimport { PointerButton as B } from './PointerButton'\n\n\nexport class UIEvent extends Event implements IUIEvent {\n\n readonly x: number\n readonly y: number\n\n readonly path: ILeafList\n readonly throughPath?: ILeafList\n\n readonly altKey: boolean\n readonly ctrlKey: boolean\n readonly shiftKey: boolean\n readonly metaKey: boolean\n public get spaceKey(): boolean { return Keyboard.isHoldSpaceKey() }\n\n public get left(): boolean { return B.left(this) }\n public get right(): boolean { return B.right(this) }\n public get middle(): boolean { return B.middle(this) }\n readonly buttons: number\n\n declare readonly target: ILeaf\n declare readonly current: ILeaf\n readonly bubbles: boolean = true\n\n constructor(params: IUIEvent) {\n super(params.type)\n Object.assign(this, params)\n }\n\n public getBoxPoint(relative?: ILeaf): IPointData {\n return (relative || this.current).getBoxPoint(this)\n }\n\n public getInnerPoint(relative?: ILeaf): IPointData {\n return (relative || this.current).getInnerPoint(this)\n }\n\n public getLocalPoint(relative?: ILeaf): IPointData {\n return (relative || this.current).getLocalPoint(this)\n }\n\n public getPagePoint(): IPointData {\n return this.current.getPagePoint(this)\n }\n\n // 兼容代码,未来可移除\n public getInner(relative?: ILeaf): IPointData { return this.getInnerPoint(relative) }\n public getLocal(relative?: ILeaf): IPointData { return this.getLocalPoint(relative) }\n public getPage(): IPointData { return this.getPagePoint() }\n // ---\n\n static changeName(oldName: string, newName: string): void {\n EventCreator.changeName(oldName, newName)\n }\n\n}","import { IPointerEvent, PointerType } from '@leafer/interface'\nimport { registerUIEvent } from '@leafer/core'\n\nimport { UIEvent } from './UIEvent'\n\n\n@registerUIEvent()\nexport class PointerEvent extends UIEvent implements IPointerEvent {\n\n static POINTER = 'pointer'\n\n static BEFORE_DOWN = 'pointer.before_down'\n static BEFORE_MOVE = 'pointer.before_move'\n static BEFORE_UP = 'pointer.before_up'\n\n static DOWN = 'pointer.down'\n static MOVE = 'pointer.move'\n static UP = 'pointer.up'\n\n static OVER = 'pointer.over'\n static OUT = 'pointer.out'\n\n static ENTER = 'pointer.enter'\n static LEAVE = 'pointer.leave'\n\n static TAP = 'tap'\n static DOUBLE_TAP = 'double_tap'\n\n static CLICK = 'click'\n static DOUBLE_CLICK = 'double_click'\n\n static LONG_PRESS = 'long_press'\n static LONG_TAP = 'long_tap'\n\n static MENU = 'pointer.menu'\n static MENU_TAP = 'pointer.menu_tap'\n\n public readonly width: number\n public readonly height: number\n public readonly pointerType: PointerType\n public readonly multiTouch?: boolean\n public readonly pressure: number\n public readonly tangentialPressure?: number\n public readonly tiltX?: number\n public readonly tiltY?: number\n public readonly twist?: number\n\n}\n\nexport const MyPointerEvent = PointerEvent","import { IDragEvent, IPointData, ILeaf, ILeafList, IObject, IBoundsData } from '@leafer/interface'\nimport { registerUIEvent, LeafList, BoundsHelper, PointHelper } from '@leafer/core'\n\nimport { PointerEvent } from './PointerEvent'\n\n\nconst tempMove = {} as IPointData\n\n@registerUIEvent()\nexport class DragEvent extends PointerEvent implements IDragEvent {\n\n static BEFORE_DRAG = 'drag.before_drag'\n\n static START = 'drag.start'\n static DRAG = 'drag'\n static END = 'drag.end'\n\n static OVER = 'drag.over'\n static OUT = 'drag.out'\n\n static ENTER = 'drag.enter'\n static LEAVE = 'drag.leave'\n\n readonly moveX: number\n readonly moveY: number\n readonly totalX: number\n readonly totalY: number\n\n static list: ILeafList\n static data: IObject\n\n static setList(data: ILeaf | ILeaf[] | ILeafList): void {\n this.list = data instanceof LeafList ? data : new LeafList(data as ILeaf[])\n }\n\n static setData(data: IObject): void {\n this.data = data\n }\n\n static getValidMove(leaf: ILeaf, start: IPointData, total: IPointData): IPointData {\n const { draggable, dragBounds } = leaf, move = leaf.getLocalPoint(total, null, true)\n PointHelper.move(move, start.x - leaf.x, start.y - leaf.y)\n\n if (dragBounds) this.getMoveInDragBounds(leaf.__local, dragBounds === 'parent' ? leaf.parent.boxBounds : dragBounds, move, true)\n if (draggable === 'x') move.y = 0\n if (draggable === 'y') move.x = 0\n return move\n }\n\n static getMoveInDragBounds(childBox: IBoundsData, dragBounds: IBoundsData, move: IPointData, change?: boolean): IPointData {\n const x = childBox.x + move.x, y = childBox.y + move.y, right = x + childBox.width, bottom = y + childBox.height\n const boundsRight = dragBounds.x + dragBounds.width, boundsBottom = dragBounds.y + dragBounds.height\n\n if (!change) move = { ...move }\n\n if (BoundsHelper.includes(childBox, dragBounds)) { // childBox > dragBounds\n if (x > dragBounds.x) move.x += dragBounds.x - x\n else if (right < boundsRight) move.x += boundsRight - right\n if (y > dragBounds.y) move.y += dragBounds.y - y\n else if (bottom < boundsBottom) move.y += boundsBottom - bottom\n } else {\n if (x < dragBounds.x) move.x += dragBounds.x - x\n else if (right > boundsRight) move.x += boundsRight - right\n if (y < dragBounds.y) move.y += dragBounds.y - y\n else if (bottom > boundsBottom) move.y += boundsBottom - bottom\n }\n\n return move\n }\n\n public getPageMove(total?: boolean): IPointData {\n this.assignMove(total)\n return this.current.getPagePoint(tempMove, null, true)\n }\n\n public getInnerMove(relative?: ILeaf, total?: boolean): IPointData {\n if (!relative) relative = this.current\n this.assignMove(total)\n return relative.getInnerPoint(tempMove, null, true)\n }\n\n public getLocalMove(relative?: ILeaf, total?: boolean): IPointData {\n if (!relative) relative = this.current\n this.assignMove(total)\n return relative.getLocalPoint(tempMove, null, true)\n }\n\n public getPageTotal(): IPointData {\n return this.getPageMove(true)\n }\n\n public getInnerTotal(relative?: ILeaf): IPointData {\n return this.getInnerMove(relative, true)\n }\n\n public getLocalTotal(relative?: ILeaf): IPointData {\n return this.getLocalMove(relative, true)\n }\n\n public getPageBounds(): IBoundsData {\n const total = this.getPageTotal(), start = this.getPagePoint(), bounds = {} as IBoundsData\n BoundsHelper.set(bounds, start.x - total.x, start.y - total.y, total.x, total.y)\n BoundsHelper.unsign(bounds)\n return bounds\n }\n\n protected assignMove(total: boolean): void {\n tempMove.x = total ? this.totalX : this.moveX\n tempMove.y = total ? this.totalY : this.moveY\n }\n\n}\n\nexport const MyDragEvent = DragEvent","import { IDropEvent, ILeaf, ILeafList, IObject } from '@leafer/interface'\nimport { registerUIEvent } from '@leafer/core'\n\nimport { PointerEvent } from './PointerEvent'\nimport { DragEvent } from './DragEvent'\n\n\n@registerUIEvent()\nexport class DropEvent extends PointerEvent implements IDropEvent {\n\n static DROP = 'drop'\n\n readonly list: ILeafList\n readonly data: IObject\n\n static setList(data: ILeaf | ILeaf[] | ILeafList): void {\n DragEvent.setList(data)\n }\n\n static setData(data: IObject): void {\n DragEvent.setData(data)\n }\n\n}","import { IMoveEvent } from '@leafer/interface'\nimport { registerUIEvent } from '@leafer/core'\n\nimport { DragEvent } from './DragEvent'\n\n@registerUIEvent()\nexport class MoveEvent extends DragEvent implements IMoveEvent {\n\n static BEFORE_MOVE = 'move.before_move'\n\n static START = 'move.start'\n static MOVE = 'move'\n static END = 'move.end'\n\n readonly moveType: 'drag' | 'move'\n}","import { IRotateEvent } from '@leafer/interface'\nimport { registerUIEvent } from '@leafer/core'\n\nimport { UIEvent } from './UIEvent'\n\n\n@registerUIEvent()\nexport class RotateEvent extends UIEvent implements IRotateEvent {\n\n static BEFORE_ROTATE = 'rotate.before_rotate'\n\n static START = 'rotate.start'\n static ROTATE = 'rotate'\n static END = 'rotate.end'\n\n readonly rotation: number\n\n}","import { ISwipeEvent } from '@leafer/interface'\nimport { registerUIEvent } from '@leafer/core'\n\nimport { DragEvent } from './DragEvent'\n\n\n@registerUIEvent()\nexport class SwipeEvent extends DragEvent implements ISwipeEvent {\n\n static SWIPE = 'swipe'\n\n static LEFT = 'swipe.left'\n static RIGHT = 'swipe.right'\n static UP = 'swipe.up'\n static DOWN = 'swipe.down'\n\n readonly speed: number\n readonly direction: string\n\n}","import { IZoomEvent } from '@leafer/interface'\nimport { registerUIEvent } from '@leafer/core'\n\nimport { UIEvent } from './UIEvent'\n\n@registerUIEvent()\nexport class ZoomEvent extends UIEvent implements IZoomEvent {\n\n static BEFORE_ZOOM = 'zoom.before_zoom'\n\n static START = 'zoom.start'\n static ZOOM = 'zoom'\n static END = 'zoom.end'\n\n readonly scale: number\n\n}","import { IKeyEvent } from '@leafer/interface'\nimport { registerUIEvent } from '@leafer/core'\n\nimport { UIEvent } from './UIEvent'\n\n\n@registerUIEvent()\nexport class KeyEvent extends UIEvent implements IKeyEvent {\n\n static DOWN = 'key.down'\n static HOLD = 'key.hold'\n static UP = 'key.up'\n\n public readonly code: string\n public readonly key: string\n\n}","import { IPointerEvent, IDragEvent, ISwipeEvent, IUIEvent, IPointData, ILeafList, IDropEvent, IObject } from '@leafer/interface'\nimport { PointHelper, LeafList } from '@leafer/core'\n\nimport { SwipeEvent, DragEvent } from '@leafer-ui/event'\n\n\nexport const InteractionHelper = {\n\n getDragEventData(startPoint: IPointData, lastPoint: IPointData, event: IPointerEvent): IDragEvent {\n return {\n ...event,\n x: event.x,\n y: event.y,\n moveX: event.x - lastPoint.x,\n moveY: event.y - lastPoint.y,\n totalX: event.x - startPoint.x,\n totalY: event.y - startPoint.y,\n } as IDragEvent\n },\n\n getDropEventData(event: IPointerEvent, list: ILeafList, data: IObject): IDropEvent {\n return {\n ...event,\n list,\n data\n }\n },\n\n getSwipeDirection(angle: number): string {\n if (angle < -45 && angle > -135) return SwipeEvent.UP\n else if (angle > 45 && angle < 135) return SwipeEvent.DOWN\n else if (angle <= 45 && angle >= -45) return SwipeEvent.RIGHT\n else return SwipeEvent.LEFT\n },\n\n getSwipeEventData(startPoint: IPointData, lastDragData: IDragEvent, event: IPointerEvent): ISwipeEvent {\n return {\n ...event,\n moveX: lastDragData.moveX,\n moveY: lastDragData.moveY,\n totalX: event.x - startPoint.x,\n totalY: event.y - startPoint.y,\n type: I.getSwipeDirection(PointHelper.getAngle(startPoint, event)),\n }\n },\n\n\n getBase(e: IObject): IUIEvent {\n const pointerUpButtons = e.button === 1 ? 4 : e.button // 0: left, 1: middle, 2: right\n return {\n altKey: e.altKey,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n metaKey: e.metaKey,\n buttons: e.buttons === undefined ? 1 : (e.buttons === 0 ? pointerUpButtons : e.buttons), // touchEvent no button and buttons, set default\n origin: e\n } as IUIEvent\n },\n\n pathHasEventType(path: ILeafList, type: string): boolean {\n const { list } = path\n for (let i = 0, len = list.length; i < len; i++) {\n if (list[i].hasEvent(type)) return true\n }\n return false\n },\n\n filterPathByEventType(path: ILeafList, type: string): ILeafList {\n const find = new LeafList()\n const { list } = path\n for (let i = 0, len = list.length; i < len; i++) {\n if (list[i].hasEvent(type)) find.add(list[i])\n }\n return find\n },\n\n pathCanDrag(path: ILeafList): boolean {\n return path && path.list.some(item => item.draggable || item.editable || (!item.isLeafer && item.hasEvent(DragEvent.DRAG)))\n },\n\n pathHasOutside(path: ILeafList): boolean { // 滚动条元素\n return path && path.list.some(item => item.isOutside)\n },\n}\n\nconst I = InteractionHelper","import { IPointerEvent, IDragEvent, ILeaf, ILeafList, ITimer, IFunction, IPointDataMap, IMoveEvent } from '@leafer/interface'\nimport { PointHelper, LeafList } from '@leafer/core'\n\nimport { MoveEvent, DragEvent, DropEvent, PointerButton } from '@leafer-ui/event'\n\nimport { InteractionHelper } from './InteractionHelper'\nimport { InteractionBase } from './Interaction'\n\n\nconst emptyList = new LeafList()\nconst { getDragEventData, getDropEventData, getSwipeEventData } = InteractionHelper\n\nexport class Dragger {\n\n public interaction: InteractionBase\n\n public moving: boolean\n public dragging: boolean\n\n public dragData: IDragEvent\n public downData: IPointerEvent\n\n public draggableList: ILeafList\n public realDraggableList: ILeafList\n protected dragOverPath: ILeafList\n protected dragEnterPath: ILeafList\n\n public dragStartPoints: IPointDataMap\n public autoMoveTimer: ITimer\n\n public canAnimate: boolean\n public canDragOut: boolean\n public animateWait: IFunction\n\n constructor(interaction: InteractionBase) {\n this.interaction = interaction\n }\n\n public setDragData(data: IPointerEvent): void { // pointer down\n if (this.animateWait) this.dragEndReal()\n this.downData = this.interaction.downData\n this.dragData = getDragEventData(data, data, data)\n this.canAnimate = this.canDragOut = true\n }\n\n public getList(realDraggable?: boolean, hover?: boolean): ILeafList {\n const { proxy } = this.interaction.selector\n const hasProxyList = proxy && proxy.list.length, dragList = DragEvent.list || this.draggableList || emptyList\n return this.dragging && (hasProxyList ? (realDraggable ? emptyList : new LeafList(hover ? [...proxy.list, ...proxy.dragHoverExclude] : proxy.list)) : dragList) // realDraggable 需排除代理选择器,它有自身的拖拽逻辑\n }\n\n public checkDrag(data: IPointerEvent, canDrag: boolean): void {\n const { interaction } = this\n\n if (this.moving && data.buttons < 1) {\n this.canAnimate = false // 防止dragEnd动画\n interaction.pointerCancel() // 按住中键/右键拖出页面后的up事件接收不到\n return\n }\n\n if (!this.moving && canDrag) {\n if (this.moving = interaction.canMove(this.downData) || interaction.isHoldRightKey || interaction.isMobileDragEmpty) {\n (this.dragData as IMoveEvent).moveType = 'drag'\n interaction.emit(MoveEvent.START, this.dragData)\n }\n }\n\n if (!this.moving) this.dragStart(data, canDrag)\n\n this.drag(data)\n }\n\n public dragStart(data: IPointerEvent, canDrag: boolean): void {\n if (!this.dragging) {\n this.dragging = canDrag && PointerButton.left(data)\n if (this.dragging) {\n this.interaction.emit(DragEvent.START, this.dragData)\n this.getDraggableList(this.dragData.path)\n this.setDragStartPoints(this.realDraggableList = this.getList(true))\n }\n }\n }\n\n protected setDragStartPoints(list: ILeafList | ILeaf[]): void {\n this.dragStartPoints = {}\n list.forEach(leaf => this.dragStartPoints[leaf.innerId] = { x: leaf.x, y: leaf.y })\n }\n\n protected getDraggableList(path: ILeafList): void {\n let leaf: ILeaf\n for (let i = 0, len = path.length; i < len; i++) {\n leaf = path.list[i]\n if ((leaf.draggable || leaf.editable) && leaf.hitSelf && !leaf.locked) {\n this.draggableList = new LeafList(leaf)\n break\n }\n }\n }\n\n public drag(data: IPointerEvent): void {\n const { interaction, dragData, downData } = this\n const { path, throughPath } = downData\n this.dragData = getDragEventData(downData, dragData, data)\n if (throughPath) this.dragData.throughPath = throughPath\n this.dragData.path = path\n\n if (this.moving) {\n (this.dragData as IMoveEvent).moveType = 'drag'\n interaction.emit(MoveEvent.BEFORE_MOVE, this.dragData)\n interaction.emit(MoveEvent.MOVE, this.dragData)\n } else if (this.dragging) {\n this.dragReal()\n interaction.emit(DragEvent.BEFORE_DRAG, this.dragData)\n interaction.emit(DragEvent.DRAG, this.dragData)\n }\n }\n\n protected dragReal(): void {\n const { running } = this.interaction\n const list = this.realDraggableList\n if (list.length && running) {\n const { totalX, totalY } = this.dragData\n list.forEach(leaf => leaf.draggable && leaf.move(DragEvent.getValidMove(leaf, this.dragStartPoints[leaf.innerId], { x: totalX, y: totalY })))\n }\n }\n\n public dragOverOrOut(data: IPointerEvent): void {\n const { interaction } = this\n const { dragOverPath } = this\n const { path } = data\n this.dragOverPath = path\n\n if (dragOverPath) {\n if (path.indexAt(0) !== dragOverPath.indexAt(0)) {\n interaction.emit(DragEvent.OUT, data, dragOverPath)\n interaction.emit(DragEvent.OVER, data, path)\n }\n } else interaction.emit(DragEvent.OVER, data, path)\n }\n\n public dragEnterOrLeave(data: IPointerEvent): void {\n const { interaction } = this\n const { dragEnterPath } = this\n const { path } = data\n\n interaction.emit(DragEvent.LEAVE, data, dragEnterPath, path)\n interaction.emit(DragEvent.ENTER, data, path, dragEnterPath)\n this.dragEnterPath = path\n }\n\n public dragEnd(data: IPointerEvent, speed?: number): void {\n if (!this.dragging && !this.moving) return\n if (this.checkDragEndAnimate(data, speed)) return\n this.dragEndReal(data)\n }\n\n protected dragEndReal(data?: IPointerEvent): void {\n const { interaction, downData, dragData } = this\n if (!data) data = dragData\n const { path, throughPath } = downData\n const endDragData = getDragEventData(downData, data, data)\n if (throughPath) endDragData.throughPath = throughPath\n endDragData.path = path\n\n if (this.moving) {\n this.moving = false;\n (endDragData as IMoveEvent).moveType = 'drag'\n interaction.emit(MoveEvent.END, endDragData)\n }\n\n if (this.dragging) {\n const dropList = this.getList()\n\n this.dragging = false\n interaction.emit(DragEvent.END, endDragData)\n\n this.swipe(data, downData, dragData, endDragData)\n this.drop(data, dropList, this.dragEnterPath)\n }\n\n this.autoMoveCancel()\n this.dragReset()\n this.animate(null, 'off')\n }\n\n\n protected swipe(data: IPointerEvent, downData: IPointerEvent, dragData: IDragEvent, endDragData: IDragEvent): void {\n const { interaction } = this\n if (PointHelper.getDistance(downData, data) > interaction.config.pointer.swipeDistance) {\n const swipeData = getSwipeEventData(downData, dragData, endDragData)\n this.interaction.emit(swipeData.type, swipeData)\n }\n }\n\n protected drop(data: IPointerEvent, dropList: ILeafList, dragEnterPath: ILeafList): void {\n const dropData = getDropEventData(data, dropList, DragEvent.data)\n dropData.path = dragEnterPath\n this.interaction.emit(DropEvent.DROP, dropData)\n this.interaction.emit(DragEvent.LEAVE, data, dragEnterPath)\n }\n\n protected dragReset(): void {\n DragEvent.list = DragEvent.data = this.draggableList = this.dragData = this.downData = this.dragOverPath = this.dragEnterPath = null\n }\n\n\n // @leafer-in/viewport will rewrite\n\n public checkDragEndAnimate(_data: IPointerEvent, _speed?: number): boolean { return false }\n\n public animate(_func?: IFunction, _off?: 'off'): void { } // dragEnd animation\n\n public checkDragOut(_data: IPointerEvent): void { }\n\n public autoMoveOnDragOut(_data: IPointerEvent): void { }\n\n public autoMoveCancel(): void { }\n\n // ---\n\n public destroy(): void {\n this.dragReset()\n }\n}","import { IUIEvent, ILeaf, ILeafList } from '@leafer/interface'\nimport { EventCreator, Debug } from '@leafer/core'\nimport { State } from '@leafer-ui/draw'\n\n\nconst debug = Debug.get('emit')\n\nexport function emit(type: string, data: IUIEvent, path?: ILeafList, excludePath?: ILeafList): void {\n if (!path && !data.path) return\n\n let leaf: ILeaf\n data.type = type\n if (path) {\n data = { ...data, path }\n } else {\n path = data.path\n }\n\n data.target = path.indexAt(0)\n\n try {\n\n // capture\n for (let i = path.length - 1; i > -1; i--) {\n leaf = path.list[i]\n if (emitEvent(leaf, type, data, true, excludePath)) return\n if (leaf.isApp) emitAppChildren(leaf, type, data, true, excludePath) // other leafer\n }\n\n // bubble\n for (let i = 0, len = path.length; i < len; i++) {\n leaf = path.list[i]\n if (leaf.isApp) emitAppChildren(leaf, type, data, false, excludePath) // other leafer\n if (emitEvent(leaf, type, data, false, excludePath)) return\n }\n\n } catch (e) {\n debug.error(e)\n }\n}\n\nconst allowTypes = ['move', 'zoom', 'rotate', 'key']\nfunction emitAppChildren(leaf: ILeaf, type: string, data: IUIEvent, capture?: boolean, excludePath?: ILeafList): void {\n if (allowTypes.some(name => type.startsWith(name)) && leaf.__.hitChildren && !exclude(leaf, excludePath)) {\n let child: ILeaf\n for (let i = 0, len = leaf.children.length; i < len; i++) {\n child = leaf.children[i]\n if (!data.path.has(child) && child.__.hittable) emitEvent(child, type, data, capture, excludePath) // other leafer\n }\n }\n}\n\nfunction emitEvent(leaf: ILeaf, type: string, data: IUIEvent, capture?: boolean, excludePath?: ILeafList): boolean {\n if (leaf.destroyed) return false\n if (leaf.__.hitSelf && !exclude(leaf, excludePath)) {\n\n if (State.updateEventStyle && !capture) State.updateEventStyle(leaf, type) // hoverStyle / pressStyle\n\n if (leaf.hasEvent(type, capture)) {\n data.phase = capture ? 1 : ((leaf === data.target) ? 2 : 3)\n const event = EventCreator.get(type, data)\n leaf.emitEvent(event, capture)\n if (event.isStop) return true\n }\n }\n return false\n}\n\nfunction exclude(leaf: ILeaf, excludePath?: ILeafList): boolean {\n return excludePath && excludePath.has(leaf)\n}","import { IInteractionConfig } from '@leafer/interface'\n\nexport const config: IInteractionConfig = {\n wheel: {\n zoomSpeed: 0.5,\n moveSpeed: 0.5,\n rotateSpeed: 0.5,\n delta: { x: 80 / 4, y: 8.0 }, // 基准速度(会影响zoomSpeed),可根据不同系统、浏览器细化定制\n },\n pointer: {\n hitRadius: 5,\n tapTime: 120,\n longPressTime: 800,\n transformTime: 500,\n hover: true,\n dragHover: true,\n dragDistance: 2,\n swipeDistance: 20,\n },\n touch: {\n preventDefault: 'auto'\n },\n multiTouch: {},\n move: { autoDistance: 2 },\n zoom: {},\n cursor: true,\n keyEvent: true\n}","import { IUIEvent, IPointerEvent, ILeaf, IInteraction, IInteractionConfig, ITransformer, ILeafList, IMoveEvent, IZoomEvent, IRotateEvent, IWheelEvent, ISelector, IBounds, IEventListenerId, IInteractionCanvas, ITimer, IKeepTouchData, IKeyEvent, IPickOptions, ICursorType, IBooleanMap, IPickBottom, IClientPointData, IPointData, ILeaferConfig, IMoveConfig, IPointerConfig } from '@leafer/interface'\nimport { LeaferEvent, ResizeEvent, LeafList, Bounds, PointHelper, DataHelper } from '@leafer/core'\n\nimport { IApp } from '@leafer-ui/interface'\nimport { PointerEvent, DropEvent, KeyEvent, PointerButton, Keyboard } from '@leafer-ui/event'\n\nimport { Dragger } from './Dragger'\nimport { emit } from './emit'\nimport { InteractionHelper } from './InteractionHelper'\nimport { config } from './config'\n\n\nconst { pathHasEventType, pathCanDrag, pathHasOutside } = InteractionHelper\nexport class InteractionBase implements IInteraction {\n\n public target: ILeaf\n public canvas: IInteractionCanvas\n public selector: ISelector\n\n public running: boolean\n\n public get dragging(): boolean { return this.dragger.dragging }\n public get transforming(): boolean { return this.transformer.transforming }\n\n public get moveMode(): boolean { return this.m.drag === true || this.isHoldSpaceKey || this.isHoldMiddleKey || (this.isHoldRightKey && this.dragger.moving) || this.isDragEmpty }\n public get canHover(): boolean { return this.p.hover && !(this.config as ILeaferConfig).mobile }\n\n public get isDragEmpty(): boolean { return this.m.dragEmpty && this.isRootPath(this.hoverData) && (!this.downData || this.isRootPath(this.downData)) }\n public get isMobileDragEmpty(): boolean { return this.m.dragEmpty && !this.canHover && this.downData && this.isTreePath(this.downData) }\n public get isHoldMiddleKey(): boolean { return this.m.holdMiddleKey && this.downData && PointerButton.middle(this.downData) }\n public get isHoldRightKey(): boolean { return this.m.holdRightKey && this.downData && PointerButton.right(this.downData) }\n public get isHoldSpaceKey(): boolean { return this.m.holdSpaceKey && Keyboard.isHoldSpaceKey() }\n\n public config: IInteractionConfig = DataHelper.clone(config)\n public get m(): IMoveConfig { return this.config.move }\n public get p(): IPointerConfig { return this.config.pointer }\n\n public cursor: ICursorType | ICursorType[]\n public get hitRadius(): number { return this.p.hitRadius }\n\n public bottomList?: IPickBottom[]\n\n public shrinkCanvasBounds: IBounds\n\n public downData: IPointerEvent\n public hoverData: IPointerEvent\n public focusData: ILeaf\n\n public downTime: number\n\n protected overPath: LeafList\n protected enterPath: LeafList\n\n protected waitMenuTap: boolean\n protected waitRightTap: boolean\n protected waitTap: boolean\n protected longPressTimer: ITimer\n protected longPressed: boolean\n protected tapCount = 0\n protected tapTimer: ITimer\n\n public dragger: Dragger\n public transformer: ITransformer\n\n protected __eventIds: IEventListenerId[]\n protected defaultPath: ILeafList\n\n protected downKeyMap: IBooleanMap = {}\n\n constructor(target: ILeaf, canvas: IInteractionCanvas, selector: ISelector, userConfig?: IInteractionConfig) {\n this.target = target\n this.canvas = canvas\n this.selector = selector\n this.defaultPath = new LeafList(target)\n\n this.createTransformer()\n this.dragger = new Dragger(this)\n\n if (userConfig) this.config = DataHelper.default(userConfig, this.config)\n this.__listenEvents()\n }\n\n\n public start(): void {\n this.running = true\n }\n\n public stop(): void {\n this.running = false\n }\n\n\n public receive(_event: any): void { }\n\n\n public pointerDown(data?: IPointerEvent, useDefaultPath?: boolean): void {\n if (!data) data = this.hoverData\n if (!data) return\n PointerButton.defaultLeft(data)\n\n this.updateDownData(data)\n this.checkPath(data, useDefaultPath)\n\n this.downTime = Date.now()\n\n this.emit(PointerEvent.BEFORE_DOWN, data) // downData maybe changed\n this.emit(PointerEvent.DOWN, data)\n\n if (PointerButton.left(data)) {\n this.tapWait()\n this.longPressWait(data)\n }\n\n this.waitRightTap = PointerButton.right(data)\n\n this.dragger.setDragData(data) // must after down event\n if (!this.isHoldRightKey) this.updateCursor(data)\n }\n\n public pointerMove(data?: IPointerEvent): void {\n if (!data) data = this.hoverData\n if (!data) return\n\n const { downData } = this\n if (downData) PointerButton.defaultLeft(data)\n\n const hit = this.canvas.bounds.hitPoint(data)\n if (hit || downData) {\n this.pointerMoveReal(data)\n if (downData) this.dragger.checkDragOut(data)\n }\n }\n\n public pointerMoveReal(data: IPointerEvent): void {\n this.emit(PointerEvent.BEFORE_MOVE, data, this.defaultPath)\n\n if (this.downData) {\n const canDrag = PointHelper.getDistance(this.downData, data) > this.p.dragDistance\n if (canDrag) {\n if (this.waitTap) this.pointerWaitCancel()\n this.waitRightTap = false\n }\n\n this.dragger.checkDrag(data, canDrag)\n }\n\n if (!this.dragger.moving) {\n this.updateHoverData(data)\n this.checkPath(data)\n\n this.emit(PointerEvent.MOVE, data)\n\n this.pointerHover(data)\n\n if (this.dragging) {\n this.dragger.dragOverOrOut(data)\n this.dragger.dragEnterOrLeave(data)\n }\n }\n\n this.updateCursor(this.downData || data)\n }\n\n public pointerUp(data?: IPointerEvent): void {\n const { downData } = this\n if (!data) data = downData\n if (!downData) return\n\n PointerButton.defaultLeft(data)\n data.multiTouch = downData.multiTouch\n\n this.findPath(data)\n const upData = { ...data, path: data.path.clone() }\n\n data.path.addList(downData.path.list) // downPath必须触发\n\n this.checkPath(data)\n\n this.downData = null // must before pointer.up event\n this.emit(PointerEvent.BEFORE_UP, data)\n this.emit(PointerEvent.UP, data)\n\n this.touchLeave(data)\n\n if (!data.isCancel) {\n this.tap(data)\n this.menuTap(data)\n }\n\n this.dragger.dragEnd(data)\n\n this.updateCursor(upData)\n }\n\n public pointerCancel(): void {\n const data = { ...this.dragger.dragData }\n data.isCancel = true\n this.pointerUp(data)\n }\n\n\n // context menu\n public menu(data: IPointerEvent): void {\n this.findPath(data)\n this.emit(PointerEvent.MENU, data)\n this.waitMenuTap = true\n if (!this.downData && this.waitRightTap) this.menuTap(data) // fix: Windows 触摸屏双击右键菜单事件会在pointer.up之后触发\n }\n\n public menuTap(data: IPointerEvent): void {\n if (this.waitRightTap && this.waitMenuTap) {\n this.emit(PointerEvent.MENU_TAP, data)\n this.waitRightTap = this.waitMenuTap = false\n }\n }\n\n // @leafer-in/viewport will rewrite: transform viewport\n\n public createTransformer(): void { }\n\n public move(_data: IMoveEvent): void { }\n\n public zoom(_data: IZoomEvent): void { }\n\n public rotate(_data: IRotateEvent): void { }\n\n public transformEnd(): void { }\n\n public wheel(_data: IWheelEvent): void { }\n\n public multiTouch(_data: IUIEvent, _list: IKeepTouchData[]): void { }\n\n // ---\n\n // key\n\n public keyDown(data: IKeyEvent): void {\n if (!this.config.keyEvent) return\n\n const { code } = data\n if (!this.downKeyMap[code]) {\n this.downKeyMap[code] = true\n Keyboard.setDownCode(code)\n\n this.emit(KeyEvent.HOLD, data, this.defaultPath)\n if (this.moveMode) {\n this.cancelHover()\n this.updateCursor()\n }\n }\n this.emit(KeyEvent.DOWN, data, this.defaultPath)\n }\n\n public keyUp(data: IKeyEvent): void {\n if (!this.config.keyEvent) return\n\n const { code } = data\n this.downKeyMap[code] = false\n Keyboard.setUpCode(code)\n\n this.emit(KeyEvent.UP, data, this.defaultPath)\n if (this.cursor === 'grab') this.updateCursor()\n }\n\n\n // helper\n protected pointerHover(data: IPointerEvent): void {\n if (this.canHover && !(this.dragging && !this.p.dragHover)) {\n data.path || (data.path = new LeafList()) // 离开画布的情况\n this.pointerOverOrOut(data)\n this.pointerEnterOrLeave(data)\n }\n }\n\n protected pointerOverOrOut(data: IPointerEvent): void {\n const { path } = data\n const { overPath } = this\n this.overPath = path\n\n if (overPath) {\n if (path.indexAt(0) !== overPath.indexAt(0)) {\n this.emit(PointerEvent.OUT, data, overPath)\n this.emit(PointerEvent.OVER, data, path)\n }\n } else {\n this.emit(PointerEvent.OVER, data, path)\n }\n }\n\n protected pointerEnterOrLeave(data: IPointerEvent): void {\n let { path } = data\n\n if (this.downData && !this.moveMode) {\n path = path.clone()\n this.downData.path.forEach(leaf => path.add(leaf))\n }\n\n const { enterPath } = this\n this.enterPath = path\n\n this.emit(PointerEvent.LEAVE, data, enterPath, path)\n this.emit(PointerEvent.ENTER, data, path, enterPath)\n }\n\n protected touchLeave(data: IPointerEvent): void {\n if (data.pointerType === 'touch') {\n if (this.enterPath) {\n this.emit(PointerEvent.LEAVE, data)\n if (this.dragger.dragging) this.emit(DropEvent.LEAVE, data)\n }\n }\n }\n\n protected tap(data: IPointerEvent): void {\n const { pointer } = this.config\n\n const hasLong = this.longTap(data)\n if (!pointer.tapMore && hasLong) return // long_press / long_tap\n\n if (!this.waitTap) return\n if (pointer.tapMore) this.emitTap(data)\n\n const useTime = Date.now() - this.downTime\n\n const hasDouble = [PointerEvent.DOUBLE_TAP, PointerEvent.DOUBLE_CLICK].some(type => pathHasEventType(data.path, type))\n\n if (useTime < pointer.tapTime + 50 && hasDouble) {\n\n this.tapCount++\n if (this.tapCount === 2) {\n this.tapWaitCancel()\n this.emitDoubleTap(data)\n } else {\n clearTimeout(this.tapTimer)\n this.tapTimer = setTimeout(() => {\n if (!pointer.tapMore) {\n this.tapWaitCancel()\n this.emitTap(data)\n }\n }, pointer.tapTime)\n }\n\n } else {\n\n if (!pointer.tapMore) {\n this.tapWaitCancel()\n this.emitTap(data)\n }\n }\n }\n\n\n // update\n public findPath(data: IPointerEvent, options?: IPickOptions): ILeafList {\n const { hitRadius, through } = this.p\n const { bottomList } = this\n const find = this.selector.getByPoint(data, hitRadius, { bottomList, name: data.type, ...(options || { through }) })\n if (find.throughPath) data.throughPath = find.throughPath\n data.path = find.path\n return find.path\n }\n\n public isRootPath(data: IPointerEvent): boolean {\n return data && (data.path.list[0] as ILeaf).isLeafer\n }\n\n public isTreePath(data: IPointerEvent): boolean {\n const app = this.target.app as IApp\n if (!app || !app.isApp) return false\n return app.editor && (!data.path.has(app.editor) && data.path.has(app.tree) && !(data.target as ILeaf).syncEventer) // 当dragEmpty为true时,在手机端(pointer.hover为false)可以拖动tree层(编辑器选中的元素除外)\n }\n\n protected checkPath(data: IPointerEvent, useDefaultPath?: boolean): void {\n if (useDefaultPath || (this.moveMode && !pathHasOutside(data.path))) data.path = this.defaultPath\n }\n\n public canMove(data: IPointerEvent): boolean { // moveMode and path can move\n return data && (this.moveMode || (this.m.drag === 'auto' && !pathCanDrag(data.path))) && !pathHasOutside(data.path)\n }\n\n\n public isDrag(leaf: ILeaf): boolean {\n return this.dragger.getList().has(leaf)\n }\n\n public isPress(leaf: ILeaf): boolean {\n return this.downData && this.downData.path.has(leaf)\n }\n\n public isHover(leaf: ILeaf): boolean {\n return this.enterPath && this.enterPath.has(leaf)\n }\n\n public isFocus(leaf: ILeaf): boolean {\n return this.focusData === leaf\n }\n\n\n public cancelHover(): void {\n const { hoverData } = this\n if (hoverData) {\n hoverData.path = this.defaultPath\n this.pointerHover(hoverData)\n }\n }\n\n\n public updateDownData(data?: IPointerEvent, options?: IPickOptions, merge?: boolean): void {\n const { downData } = this\n if (!data && downData) data = downData\n if (!data) return\n this.findPath(data, options)\n if (merge && downData) data.path.addList(downData.path.list)\n this.downData = data\n }\n\n public updateHoverData(data?: IPointerEvent): void {\n if (!data) data = this.hoverData\n if (!data) return\n this.findPath(data, { exclude: this.dragger.getList(false, true), name: PointerEvent.MOVE })\n this.hoverData = data\n }\n\n public updateCursor(data?: IPointerEvent): void {\n if (!this.config.cursor || !this.canHover) return\n\n if (!data) {\n this.updateHoverData()\n data = this.downData || this.hoverData\n }\n\n if (this.dragger.moving) {\n return this.setCursor('grabbing')\n } else if (this.canMove(data)) {\n return this.setCursor(this.downData ? 'grabbing' : 'grab')\n } else if (!data) return\n\n let leaf: ILeaf, cursor: ICursorType | ICursorType[]\n\n const { path } = data\n for (let i = 0, len = path.length; i < len; i++) {\n leaf = path.list[i]\n cursor = (leaf.syncEventer && leaf.syncEventer.cursor) || leaf.cursor\n if (cursor) break\n }\n\n this.setCursor(cursor)\n }\n\n public setCursor(cursor: ICursorType | ICursorType[]): void {\n this.cursor = cursor\n }\n\n public getLocal(clientPoint: IClientPointData, updateClient?: boolean): IPointData {\n const clientBounds = this.canvas.getClientBounds(updateClient)\n return { x: clientPoint.clientX - clientBounds.x, y: clientPoint.clientY - clientBounds.y }\n }\n\n\n protected emitTap(data: IPointerEvent) {\n this.emit(PointerEvent.TAP, data)\n this.emit(PointerEvent.CLICK, data)\n }\n\n protected emitDoubleTap(data: IPointerEvent) {\n this.emit(PointerEvent.DOUBLE_TAP, data)\n this.emit(PointerEvent.DOUBLE_CLICK, data)\n }\n\n public pointerWaitCancel(): void {\n this.tapWaitCancel()\n this.longPressWaitCancel()\n }\n\n protected tapWait(): void {\n clearTimeout(this.tapTimer)\n this.waitTap = true\n }\n\n protected tapWaitCancel(): void {\n clearTimeout(this.tapTimer)\n this.waitTap = false\n this.tapCount = 0\n }\n\n protected longPressWait(data: IPointerEvent): void {\n clearTimeout(this.longPressTimer)\n this.longPressTimer = setTimeout(() => {\n this.longPressed = true\n this.emit(PointerEvent.LONG_PRESS, data)\n }, this.p.longPressTime)\n }\n\n protected longTap(data: IPointerEvent): boolean {\n let hasLong\n if (this.longPressed) {\n this.emit(PointerEvent.LONG_TAP, data)\n if (pathHasEventType(data.path, PointerEvent.LONG_TAP) || pathHasEventType(data.path, PointerEvent.LONG_PRESS)) hasLong = true\n }\n this.longPressWaitCancel()\n return hasLong\n }\n\n protected longPressWaitCancel(): void {\n clearTimeout(this.longPressTimer)\n this.longPressed = false\n }\n\n protected __onResize(): void {\n const { dragOut } = this.m\n this.shrinkCanvasBounds = new Bounds(this.canvas.bounds)\n this.shrinkCanvasBounds.spread(-(typeof dragOut === 'number' ? dragOut : 2))\n }\n\n protected __listenEvents(): void {\n const { target } = this\n this.__eventIds = [target.on_(ResizeEvent.RESIZE, this.__onResize, this)]\n target.once(LeaferEvent.READY, () => this.__onResize())\n }\n\n protected __removeListenEvents(): void {\n this.target.off_(this.__eventIds)\n this.__eventIds.length = 0\n }\n\n\n public emit(type: string, data: IUIEvent, path?: ILeafList, excludePath?: ILeafList): void {\n if (this.running) emit(type, data, path, excludePath)\n }\n\n\n public destroy(): void {\n if (this.__eventIds.length) {\n this.stop()\n this.__removeListenEvents()\n this.dragger.destroy()\n if (this.transformer) this.transformer.destroy()\n this.downData = this.overPath = this.enterPath = null\n }\n }\n\n}","import { ICursorTypeMap, ICursorType } from '@leafer/interface'\n\n\nexport class Cursor {\n\n static custom: ICursorTypeMap = {}\n\n static set(name: string, value: ICursorType | ICursorType[]): void {\n this.custom[name] = value\n }\n\n static get(name: string): ICursorType | ICursorType[] {\n return this.custom[name]\n }\n\n}","import { IHitCanvasManager, ILeaf, IHitCanvas, ILeafList, ILeaferCanvasConfig } from '@leafer/interface'\nimport { CanvasManager, LeafList, Creator } from '@leafer/core'\n\n\nexport class HitCanvasManager extends CanvasManager implements IHitCanvasManager {\n\n public maxTotal = 1000 // 最多缓存多少张画布\n\n protected pathList: ILeafList = new LeafList()\n protected pixelList: ILeafList = new LeafList()\n\n public getPixelType(leaf: ILeaf, config?: ILeaferCanvasConfig): IHitCanvas {\n this.__autoClear()\n this.pixelList.add(leaf)\n return Creator.hitCanvas(config)\n }\n\n public getPathType(leaf: ILeaf): IHitCanvas {\n this.__autoClear()\n this.pathList.add(leaf)\n return Creator.hitCanvas()\n }\n\n public clearImageType(): void {\n this.__clearLeafList(this.pixelList)\n }\n\n public clearPathType(): void {\n this.__clearLeafList(this.pathList)\n }\n\n protected __clearLeafList(leafList: ILeafList): void {\n if (leafList.length) {\n leafList.forEach(leaf => {\n if (leaf.__hitCanvas) {\n leaf.__hitCanvas.destroy()\n leaf.__hitCanvas = null\n }\n })\n leafList.reset()\n }\n }\n\n protected __autoClear(): void {\n if (this.pathList.length + this.pixelList.length > this.maxTotal) this.clear()\n }\n\n public clear(): void {\n this.clearPathType()\n this.clearImageType()\n }\n\n}","import { IRadiusPointData, ILeaferCanvas } from '@leafer/interface'\nimport { Leaf, PointHelper, BoundsHelper } from '@leafer/core'\n\n\nconst { toInnerRadiusPointOf, copy, setRadius } = PointHelper\nconst inner = {} as IRadiusPointData\n\nconst leaf = Leaf.prototype\n\nleaf.__hitWorld = function (point: IRadiusPointData): boolean {\n if (!this.__.hitSelf) return false\n\n if (this.__.hitRadius) {\n copy(inner, point), point = inner\n setRadius(point, this.__.hitRadius)\n }\n\n toInnerRadiusPointOf(point, this.__world, inner)\n\n const { width, height } = this.__world\n const isSmall = width < 10 && height < 10\n\n if (this.__.hitBox || isSmall) {\n if (BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner)) return true\n if (isSmall) return false\n }\n\n if (this.__layout.hitCanvasChanged || !this.__hitCanvas) {\n this.__updateHitCanvas()\n if (!this.__layout.boundsChanged) this.__layout.hitCanvasChanged = false\n }\n\n return this.__hit(inner)\n}\n\nleaf.__hitFill = function (inner: IRadiusPointData): boolean { return this.__hitCanvas?.hitFill(inner, this.__.windingRule) }\n\nleaf.__hitStroke = function (inner: IRadiusPointData, strokeWidth: number): boolean { return this.__hitCanvas?.hitStroke(inner, strokeWidth) }\n\nleaf.__hitPixel = function (inner: IRadiusPointData): boolean { return this.__hitCanvas?.hitPixel(inner, this.__layout.renderBounds, this.__hitCanvas.hitScale) }\n\nleaf.__drawHitPath = function (canvas: ILeaferCanvas): void { if (canvas) this.__drawRenderPath(canvas) }","import { IRadiusPointData } from '@leafer/interface'\nimport { Platform, Matrix, tempBounds } from '@leafer/core'\nimport { UI, ImageManager } from '@leafer-ui/draw'\n\n\nconst matrix = new Matrix()\nconst ui = UI.prototype\n\nui.__updateHitCanvas = function (): void {\n const data = this.__, { hitCanvasManager } = this.leafer\n\n const isHitPixelFill = (data.__pixelFill || data.__isCanvas) && data.hitFill === 'pixel'\n const isHitPixelStroke = data.__pixelStroke && data.hitStroke === 'pixel'\n const isHitPixel = isHitPixelFill || isHitPixelStroke\n\n if (!this.__hitCanvas) this.__hitCanvas = isHitPixel ? hitCanvasManager.getPixelType(this, { contextSettings: { willReadFrequently: true } }) : hitCanvasManager.getPathType(this)\n\n const h = this.__hitCanvas\n\n if (isHitPixel) {\n const { renderBounds } = this.__layout\n const size = Platform.image.hitCanvasSize\n const scale = h.hitScale = tempBounds.set(0, 0, size, size).getFitMatrix(renderBounds).a\n const { x, y, width, height } = tempBounds.set(renderBounds).scale(scale)\n h.resize({ width, height, pixelRatio: 1 })\n h.clear()\n\n ImageManager.patternLocked = true\n this.__renderShape(h, { matrix: matrix.setWith(this.__world).scaleWith(1 / scale).invertWith().translate(-x, -y) }, !isHitPixelFill, !isHitPixelStroke) // 矩阵\n ImageManager.patternLocked = false\n h.resetTransform()\n\n data.__isHitPixel = true\n } else {\n data.__isHitPixel && (data.__isHitPixel = false)\n }\n\n this.__drawHitPath(h)\n h.setStrokeOptions(data)\n\n}\n\nui.__hit = function (inner: IRadiusPointData): boolean {\n if (Platform.name === 'miniapp') this.__drawHitPath(this.__hitCanvas) // fix: 小程序需要实时更新\n\n // hit pixel\n\n const data = this.__\n if (data.__isHitPixel && this.__hitPixel(inner)) return true\n\n // hit path\n\n const { hitFill } = data\n const needHitFillPath = ((data.fill || data.__isCanvas) && (hitFill === 'path' || (hitFill === 'pixel' && !(data.__pixelFill || data.__isCanvas)))) || hitFill === 'all'\n if (needHitFillPath && this.__hitFill(inner)) return true\n\n const { hitStroke, __strokeWidth } = data\n const needHitStrokePath = (data.stroke && (hitStroke === 'path' || (hitStroke === 'pixel' && !data.__pixelStroke))) || hitStroke === 'all'\n if (!needHitFillPath && !needHitStrokePath) return false\n\n const radiusWidth = inner.radiusX * 2\n let hitWidth = radiusWidth\n\n if (needHitStrokePath) {\n switch (data.strokeAlign) {\n case 'inside':\n hitWidth += __strokeWidth * 2\n if (!needHitFillPath && this.__hitFill(inner) && this.__hitStroke(inner, hitWidth)) return true\n hitWidth = radiusWidth\n break\n case 'center':\n hitWidth += __strokeWidth\n break\n case 'outside':\n hitWidth += __strokeWidth * 2\n if (!needHitFillPath) {\n if (!this.__hitFill(inner) && this.__hitStroke(inner, hitWidth)) return true\n hitWidth = radiusWidth\n }\n break\n }\n }\n\n return hitWidth ? this.__hitStroke(inner, hitWidth) : false\n}","import { IRadiusPointData } from '@leafer/interface'\nimport { BoundsHelper } from '@leafer/core'\nimport { UI, Rect, Box } from '@leafer-ui/draw'\n\n\nconst ui = UI.prototype, rect = Rect.prototype, box = Box.prototype\n\n// hit \n\nrect.__updateHitCanvas = box.__updateHitCanvas = function () {\n if (this.stroke || this.cornerRadius || ((this.fill || this.__.__isCanvas) && this.hitFill === 'pixel') || this.hitStroke === 'all') ui.__updateHitCanvas.call(this)\n else if (this.__hitCanvas) this.__hitCanvas = null\n}\n\nrect.__hitFill = box.__hitFill = function (inner: IRadiusPointData): boolean {\n return this.__hitCanvas ? ui.__hitFill.call(this, inner) : BoundsHelper.hitRadiusPoint(this.__layout.boxBounds, inner)\n}","\nimport { IPointData, IPickOptions, IPickResult, ISelector, IUI } from '@leafer-ui/interface'\nimport { Group, Creator, Platform, emptyData } from '@leafer-ui/draw'\n\nfunction getSelector(ui: IUI): ISelector {\n return ui.leafer ? ui.leafer.selector : (Platform.selector || (Platform.selector = Creator.selector()))\n}\n\nGroup.prototype.pick = function (hitPoint: IPointData, options?: IPickOptions): IPickResult {\n this.leafer || this.updateLayout()\n options || (options = emptyData)\n return getSelector(this).getByPoint(hitPoint, options.hitRadius || 0, { ...options, target: this })\n}","\nimport { IPointData, IRadiusPointData, IWindingRule } from '@leafer/interface'\nimport { LeaferCanvasBase, tempBounds } from '@leafer/core'\n\n\nconst canvas = LeaferCanvasBase.prototype\n\ncanvas.hitFill = function (point: IPointData, fillRule?: IWindingRule): boolean {\n return fillRule ? this.context.isPointInPath(point.x, point.y, fillRule) : this.context.isPointInPath(point.x, point.y)\n}\n\ncanvas.hitStroke = function (point: IPointData, strokeWidth?: number): boolean {\n this.strokeWidth = strokeWidth\n return this.context.isPointInStroke(point.x, point.y)\n}\n\ncanvas.hitPixel = function (radiusPoint: IRadiusPointData, offset?: IPointData, scale = 1): boolean { // 画布必须有alpha通道\n let { x, y, radiusX, radiusY } = radiusPoint\n if (offset) x -= offset.x, y -= offset.y\n tempBounds.set(x - radiusX, y - radiusY, radiusX * 2, radiusY * 2).scale(scale).ceil()\n const { data } = this.context.getImageData(tempBounds.x, tempBounds.y, tempBounds.width || 1, tempBounds.height || 1)\n for (let i = 0, len = data.length; i < len; i += 4) { if (data[i + 3] > 0) return true }\n return data[3] > 0\n}"],"names":["B","ui","Platform","Creator"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1 +1,2 @@
1
- import{Leafer as t,State as e,UI as i,ImageManager as s,Rect as a,Box as r,Group as n,Platform as h,Creator as o,emptyData as d}from"@leafer-ui/draw";export*from"@leafer-ui/draw";import{registerUI as l,Creator as g,PropertyEvent as c,Debug as u,DataHelper as p,canvasSizeAttrs as _,LayoutEvent as v,RenderEvent as m,Event as f,EventCreator as y,registerUIEvent as E,LeafList as D,PointHelper as P,BoundsHelper as w,Bounds as T,ResizeEvent as O,LeaferEvent as C,CanvasManager as R,Leaf as x,Matrix as L,Platform as b,tempBounds as M,LeaferCanvasBase as S}from"@leafer/core";function k(t,e,i,s){var a,r=arguments.length,n=r<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,s);else for(var h=t.length-1;h>=0;h--)(a=t[h])&&(n=(r<3?a(n):r>3?a(e,i,n):a(e,i))||n);return r>3&&n&&Object.defineProperty(e,i,n),n}"function"==typeof SuppressedError&&SuppressedError;let H=class extends t{get __tag(){return"App"}get isApp(){return!0}constructor(t,e){super(t,e)}init(t,e){if(super.init(t,e),t){const{ground:e,tree:i,sky:s,editor:a}=t;e&&(this.ground=this.addLeafer(e)),(i||a)&&(this.tree=this.addLeafer(i||{type:t.type||"design"})),(s||a)&&(this.sky=this.addLeafer(s)),a&&this.sky.add(this.editor=g.editor(a))}}__setApp(){const{canvas:t}=this,{realCanvas:e,view:i}=this.config;e||i===this.canvas.view||!t.parentView?this.realCanvas=!0:t.unrealCanvas(),this.leafer=this,this.watcher.disable(),this.layouter.disable(),this.__eventIds.push(this.on_(c.CHANGE,this.__onPropertyChange,this))}start(){super.start(),this.children.forEach((t=>t.start()))}stop(){this.children.forEach((t=>t.stop())),super.stop()}unlockLayout(){super.unlockLayout(),this.children.forEach((t=>t.unlockLayout()))}lockLayout(){super.lockLayout(),this.children.forEach((t=>t.lockLayout()))}forceRender(t,e){this.children.forEach((i=>i.forceRender(t,e)))}addLeafer(e){const i=new t(e);return this.add(i),i}add(t,e){if(!t.view){if(this.realCanvas&&!this.canvas.bounds)return void setTimeout((()=>this.add(t,e)),10);t.init(this.__getChildConfig(t.userConfig),this)}super.add(t,e),void 0!==e&&(t.canvas.childIndex=e),this.__listenChildEvents(t)}__onPropertyChange(){u.showHitView&&this.children.forEach((t=>t.forceUpdate("surface")))}__onCreated(){this.created=this.children.every((t=>t.created))}__onReady(){this.children.every((t=>t.ready))&&super.__onReady()}__onViewReady(){this.children.every((t=>t.viewReady))&&super.__onViewReady()}__onChildRenderEnd(t){this.renderer.addBlock(t.renderBounds),this.viewReady&&this.renderer.update()}__render(t,e){if(t.context){const i=e.matrix;i&&t.setTransform(i.a,i.b,i.c,i.d,i.e,i.f),this.children.forEach((e=>t.copyWorld(e.canvas)))}}__onResize(t){this.children.forEach((e=>e.resize(t))),super.__onResize(t)}updateLayout(){this.children.forEach((t=>t.updateLayout()))}__getChildConfig(t){let e=Object.assign({},this.config);return e.hittable=e.realCanvas=void 0,t&&p.assign(e,t),this.autoLayout&&p.copyAttrs(e,this,_),e.view=this.realCanvas?void 0:this.view,e.fill=void 0,e}__listenChildEvents(t){t.once(v.END,(()=>this.__onReady())),t.once(m.START,(()=>this.__onCreated())),t.once(m.END,(()=>this.__onViewReady())),this.realCanvas&&this.__eventIds.push(t.on_(m.END,this.__onChildRenderEnd,this))}};H=k([l()],H);const A={},B={isHoldSpaceKey:()=>B.isHold("Space"),isHold:t=>A[t],setDownCode(t){A[t]||(A[t]=!0)},setUpCode(t){A[t]=!1}},I={LEFT:1,RIGHT:2,MIDDLE:4,defaultLeft(t){t.buttons||(t.buttons=1)},left:t=>1===t.buttons,right:t=>2===t.buttons,middle:t=>4===t.buttons};class N extends f{get spaceKey(){return B.isHoldSpaceKey()}get left(){return I.left(this)}get right(){return I.right(this)}get middle(){return I.middle(this)}constructor(t){super(t.type),this.bubbles=!0,Object.assign(this,t)}getBoxPoint(t){return(t||this.current).getBoxPoint(this)}getInnerPoint(t){return(t||this.current).getInnerPoint(this)}getLocalPoint(t){return(t||this.current).getLocalPoint(this)}getPagePoint(){return this.current.getPagePoint(this)}getInner(t){return this.getInnerPoint(t)}getLocal(t){return this.getLocalPoint(t)}getPage(){return this.getPagePoint()}static changeName(t,e){y.changeName(t,e)}}let F=class extends N{};F.POINTER="pointer",F.BEFORE_DOWN="pointer.before_down",F.BEFORE_MOVE="pointer.before_move",F.BEFORE_UP="pointer.before_up",F.DOWN="pointer.down",F.MOVE="pointer.move",F.UP="pointer.up",F.OVER="pointer.over",F.OUT="pointer.out",F.ENTER="pointer.enter",F.LEAVE="pointer.leave",F.TAP="tap",F.DOUBLE_TAP="double_tap",F.CLICK="click",F.DOUBLE_CLICK="double_click",F.LONG_PRESS="long_press",F.LONG_TAP="long_tap",F.MENU="pointer.menu",F.MENU_TAP="pointer.menu_tap",F=k([E()],F);const K=F,W={};let V=class extends F{static setList(t){this.list=t instanceof D?t:new D(t)}static setData(t){this.data=t}static getValidMove(t,e,i){const{draggable:s,dragBounds:a}=t,r=t.getLocalPoint(i,null,!0);return P.move(r,e.x-t.x,e.y-t.y),a&&this.getMoveInDragBounds(t.__local,"parent"===a?t.parent.boxBounds:a,r,!0),"x"===s&&(r.y=0),"y"===s&&(r.x=0),r}static getMoveInDragBounds(t,e,i,s){const a=t.x+i.x,r=t.y+i.y,n=a+t.width,h=r+t.height,o=e.x+e.width,d=e.y+e.height;return s||(i=Object.assign({},i)),w.includes(t,e)?(a>e.x?i.x+=e.x-a:n<o&&(i.x+=o-n),r>e.y?i.y+=e.y-r:h<d&&(i.y+=d-h)):(a<e.x?i.x+=e.x-a:n>o&&(i.x+=o-n),r<e.y?i.y+=e.y-r:h>d&&(i.y+=d-h)),i}getPageMove(t){return this.assignMove(t),this.current.getPagePoint(W,null,!0)}getInnerMove(t,e){return t||(t=this.current),this.assignMove(e),t.getInnerPoint(W,null,!0)}getLocalMove(t,e){return t||(t=this.current),this.assignMove(e),t.getLocalPoint(W,null,!0)}getPageTotal(){return this.getPageMove(!0)}getInnerTotal(t){return this.getInnerMove(t,!0)}getLocalTotal(t){return this.getLocalMove(t,!0)}getPageBounds(){const t=this.getPageTotal(),e=this.getPagePoint(),i={};return w.set(i,e.x-t.x,e.y-t.y,t.x,t.y),w.unsign(i),i}assignMove(t){W.x=t?this.totalX:this.moveX,W.y=t?this.totalY:this.moveY}};V.BEFORE_DRAG="drag.before_drag",V.START="drag.start",V.DRAG="drag",V.END="drag.end",V.OVER="drag.over",V.OUT="drag.out",V.ENTER="drag.enter",V.LEAVE="drag.leave",V=k([E()],V);const U=V;let j=class extends F{static setList(t){V.setList(t)}static setData(t){V.setData(t)}};j.DROP="drop",j=k([E()],j);let z=class extends V{};z.BEFORE_MOVE="move.before_move",z.START="move.start",z.MOVE="move",z.END="move.end",z=k([E()],z);let G=class extends N{};G.BEFORE_ROTATE="rotate.before_rotate",G.START="rotate.start",G.ROTATE="rotate",G.END="rotate.end",G=k([E()],G);let X=class extends V{};X.SWIPE="swipe",X.LEFT="swipe.left",X.RIGHT="swipe.right",X.UP="swipe.up",X.DOWN="swipe.down",X=k([E()],X);let Y=class extends N{};Y.BEFORE_ZOOM="zoom.before_zoom",Y.START="zoom.start",Y.ZOOM="zoom",Y.END="zoom.end",Y=k([E()],Y);let Z=class extends N{};Z.DOWN="key.down",Z.HOLD="key.hold",Z.UP="key.up",Z=k([E()],Z);const q={getDragEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:i.x,y:i.y,moveX:i.x-e.x,moveY:i.y-e.y,totalX:i.x-t.x,totalY:i.y-t.y}),getDropEventData:(t,e,i)=>Object.assign(Object.assign({},t),{list:e,data:i}),getSwipeDirection:t=>t<-45&&t>-135?X.UP:t>45&&t<135?X.DOWN:t<=45&&t>=-45?X.RIGHT:X.LEFT,getSwipeEventData:(t,e,i)=>Object.assign(Object.assign({},i),{moveX:e.moveX,moveY:e.moveY,totalX:i.x-t.x,totalY:i.y-t.y,type:J.getSwipeDirection(P.getAngle(t,i))}),getBase(t){const e=1===t.button?4:t.button;return{altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,metaKey:t.metaKey,buttons:void 0===t.buttons?1:0===t.buttons?e:t.buttons,origin:t}},pathHasEventType(t,e){const{list:i}=t;for(let t=0,s=i.length;t<s;t++)if(i[t].hasEvent(e))return!0;return!1},filterPathByEventType(t,e){const i=new D,{list:s}=t;for(let t=0,a=s.length;t<a;t++)s[t].hasEvent(e)&&i.add(s[t]);return i},pathCanDrag:t=>t&&t.list.some((t=>t.draggable||t.editable||!t.isLeafer&&t.hasEvent(V.DRAG))),pathHasOutside:t=>t&&t.list.some((t=>t.isOutside))},J=q,Q=new D,{getDragEventData:$,getDropEventData:tt,getSwipeEventData:et}=q;class it{constructor(t){this.interaction=t}setDragData(t){this.animateWait&&this.dragEndReal(),this.downData=this.interaction.downData,this.dragData=$(t,t,t),this.canAnimate=this.canDragOut=!0}getList(t,e){const{proxy:i}=this.interaction.selector,s=i&&i.list.length,a=V.list||this.draggableList||Q;return this.dragging&&(s?t?Q:new D(e?[...i.list,...i.dragHoverExclude]:i.list):a)}checkDrag(t,e){const{interaction:i}=this;if(this.moving&&t.buttons<1)return this.canAnimate=!1,void i.pointerCancel();!this.moving&&e&&(this.moving=i.canMove(this.downData)||i.isHoldRightKey||i.isMobileDragEmpty)&&(this.dragData.moveType="drag",i.emit(z.START,this.dragData)),this.moving||this.dragStart(t,e),this.drag(t)}dragStart(t,e){this.dragging||(this.dragging=e&&I.left(t),this.dragging&&(this.interaction.emit(V.START,this.dragData),this.getDraggableList(this.dragData.path),this.setDragStartPoints(this.realDraggableList=this.getList(!0))))}setDragStartPoints(t){this.dragStartPoints={},t.forEach((t=>this.dragStartPoints[t.innerId]={x:t.x,y:t.y}))}getDraggableList(t){let e;for(let i=0,s=t.length;i<s;i++)if(e=t.list[i],(e.draggable||e.editable)&&e.hitSelf&&!e.locked){this.draggableList=new D(e);break}}drag(t){const{interaction:e,dragData:i,downData:s}=this,{path:a,throughPath:r}=s;this.dragData=$(s,i,t),r&&(this.dragData.throughPath=r),this.dragData.path=a,this.moving?(this.dragData.moveType="drag",e.emit(z.BEFORE_MOVE,this.dragData),e.emit(z.MOVE,this.dragData)):this.dragging&&(this.dragReal(),e.emit(V.BEFORE_DRAG,this.dragData),e.emit(V.DRAG,this.dragData))}dragReal(){const{running:t}=this.interaction,e=this.realDraggableList;if(e.length&&t){const{totalX:t,totalY:i}=this.dragData;e.forEach((e=>e.draggable&&e.move(V.getValidMove(e,this.dragStartPoints[e.innerId],{x:t,y:i}))))}}dragOverOrOut(t){const{interaction:e}=this,{dragOverPath:i}=this,{path:s}=t;this.dragOverPath=s,i?s.indexAt(0)!==i.indexAt(0)&&(e.emit(V.OUT,t,i),e.emit(V.OVER,t,s)):e.emit(V.OVER,t,s)}dragEnterOrLeave(t){const{interaction:e}=this,{dragEnterPath:i}=this,{path:s}=t;e.emit(V.LEAVE,t,i,s),e.emit(V.ENTER,t,s,i),this.dragEnterPath=s}dragEnd(t,e){(this.dragging||this.moving)&&(this.checkDragEndAnimate(t,e)||this.dragEndReal(t))}dragEndReal(t){const{interaction:e,downData:i,dragData:s}=this;t||(t=s);const{path:a,throughPath:r}=i,n=$(i,t,t);if(r&&(n.throughPath=r),n.path=a,this.moving&&(this.moving=!1,n.moveType="drag",e.emit(z.END,n)),this.dragging){const a=this.getList();this.dragging=!1,e.emit(V.END,n),this.swipe(t,i,s,n),this.drop(t,a,this.dragEnterPath)}this.autoMoveCancel(),this.dragReset(),this.animate(null,"off")}swipe(t,e,i,s){const{interaction:a}=this;if(P.getDistance(e,t)>a.config.pointer.swipeDistance){const t=et(e,i,s);this.interaction.emit(t.type,t)}}drop(t,e,i){const s=tt(t,e,V.data);s.path=i,this.interaction.emit(j.DROP,s),this.interaction.emit(V.LEAVE,t,i)}dragReset(){V.list=V.data=this.draggableList=this.dragData=this.downData=this.dragOverPath=this.dragEnterPath=null}checkDragEndAnimate(t,e){return!1}animate(t,e){}checkDragOut(t){}autoMoveOnDragOut(t){}autoMoveCancel(){}destroy(){this.dragReset()}}const st=u.get("emit");const at=["move","zoom","rotate","key"];function rt(t,e,i,s,a){if(at.some((t=>e.startsWith(t)))&&t.__.hitChildren&&!ht(t,a)){let r;for(let n=0,h=t.children.length;n<h;n++)r=t.children[n],!i.path.has(r)&&r.__.hittable&&nt(r,e,i,s,a)}}function nt(t,i,s,a,r){if(t.destroyed)return!1;if(t.__.hitSelf&&!ht(t,r)&&(e.updateEventStyle&&!a&&e.updateEventStyle(t,i),t.hasEvent(i,a))){s.phase=a?1:t===s.target?2:3;const e=y.get(i,s);if(t.emitEvent(e,a),e.isStop)return!0}return!1}function ht(t,e){return e&&e.has(t)}const ot={wheel:{zoomSpeed:.5,moveSpeed:.5,rotateSpeed:.5,delta:{x:20,y:8}},pointer:{hitRadius:5,tapTime:120,longPressTime:800,transformTime:500,hover:!0,dragHover:!0,dragDistance:2,swipeDistance:20},touch:{preventDefault:"auto"},multiTouch:{},move:{autoDistance:2},zoom:{},cursor:!0,keyEvent:!0},{pathHasEventType:dt,pathCanDrag:lt,pathHasOutside:gt}=q;class ct{get dragging(){return this.dragger.dragging}get transforming(){return this.transformer.transforming}get moveMode(){return!0===this.m.drag||this.isHoldSpaceKey||this.isHoldMiddleKey||this.isHoldRightKey&&this.dragger.moving||this.isDragEmpty}get canHover(){return this.p.hover&&!this.config.mobile}get isDragEmpty(){return this.m.dragEmpty&&this.isRootPath(this.hoverData)&&(!this.downData||this.isRootPath(this.downData))}get isMobileDragEmpty(){return this.m.dragEmpty&&!this.canHover&&this.downData&&this.isTreePath(this.downData)}get isHoldMiddleKey(){return this.m.holdMiddleKey&&this.downData&&I.middle(this.downData)}get isHoldRightKey(){return this.m.holdRightKey&&this.downData&&I.right(this.downData)}get isHoldSpaceKey(){return this.m.holdSpaceKey&&B.isHoldSpaceKey()}get m(){return this.config.move}get p(){return this.config.pointer}get hitRadius(){return this.p.hitRadius}constructor(t,e,i,s){this.config=p.clone(ot),this.tapCount=0,this.downKeyMap={},this.target=t,this.canvas=e,this.selector=i,this.defaultPath=new D(t),this.createTransformer(),this.dragger=new it(this),s&&(this.config=p.default(s,this.config)),this.__listenEvents()}start(){this.running=!0}stop(){this.running=!1}receive(t){}pointerDown(t,e){t||(t=this.hoverData),t&&(I.defaultLeft(t),this.updateDownData(t),this.checkPath(t,e),this.downTime=Date.now(),this.emit(F.BEFORE_DOWN,t),this.emit(F.DOWN,t),I.left(t)&&(this.tapWait(),this.longPressWait(t)),this.waitRightTap=I.right(t),this.dragger.setDragData(t),this.isHoldRightKey||this.updateCursor(t))}pointerMove(t){if(t||(t=this.hoverData),!t)return;const{downData:e}=this;e&&I.defaultLeft(t);(this.canvas.bounds.hitPoint(t)||e)&&(this.pointerMoveReal(t),e&&this.dragger.checkDragOut(t))}pointerMoveReal(t){const{dragHover:e,dragDistance:i}=this.p;if(this.emit(F.BEFORE_MOVE,t,this.defaultPath),this.downData){const e=P.getDistance(this.downData,t)>i;e&&(this.waitTap&&this.pointerWaitCancel(),this.waitRightTap=!1),this.dragger.checkDrag(t,e)}this.dragger.moving||(this.updateHoverData(t),this.checkPath(t),this.emit(F.MOVE,t),this.dragging&&!e||this.pointerHover(t),this.dragger.dragging&&(this.dragger.dragOverOrOut(t),this.dragger.dragEnterOrLeave(t))),this.updateCursor(this.downData||t)}pointerUp(t){const{downData:e}=this;if(t||(t=e),!e)return;I.defaultLeft(t),t.multiTouch=e.multiTouch,this.findPath(t);const i=Object.assign(Object.assign({},t),{path:t.path.clone()});t.path.addList(e.path.list),this.checkPath(t),this.downData=null,this.emit(F.BEFORE_UP,t),this.emit(F.UP,t),this.touchLeave(t),t.isCancel||(this.tap(t),this.menuTap(t)),this.dragger.dragEnd(t),this.updateCursor(i)}pointerCancel(){const t=Object.assign({},this.dragger.dragData);t.isCancel=!0,this.pointerUp(t)}menu(t){this.findPath(t),this.emit(F.MENU,t),this.waitMenuTap=!0,!this.downData&&this.waitRightTap&&this.menuTap(t)}menuTap(t){this.waitRightTap&&this.waitMenuTap&&(this.emit(F.MENU_TAP,t),this.waitRightTap=this.waitMenuTap=!1)}createTransformer(){}move(t){}zoom(t){}rotate(t){}transformEnd(){}wheel(t){}multiTouch(t,e){}keyDown(t){if(!this.config.keyEvent)return;const{code:e}=t;this.downKeyMap[e]||(this.downKeyMap[e]=!0,B.setDownCode(e),this.emit(Z.HOLD,t,this.defaultPath),this.moveMode&&(this.cancelHover(),this.updateCursor())),this.emit(Z.DOWN,t,this.defaultPath)}keyUp(t){if(!this.config.keyEvent)return;const{code:e}=t;this.downKeyMap[e]=!1,B.setUpCode(e),this.emit(Z.UP,t,this.defaultPath),"grab"===this.cursor&&this.updateCursor()}pointerHover(t){this.canHover&&(this.pointerOverOrOut(t),this.pointerEnterOrLeave(t))}pointerOverOrOut(t){const{path:e}=t,{overPath:i}=this;this.overPath=e,i?e.indexAt(0)!==i.indexAt(0)&&(this.emit(F.OUT,t,i),this.emit(F.OVER,t,e)):this.emit(F.OVER,t,e)}pointerEnterOrLeave(t){let{path:e}=t;this.downData&&!this.moveMode&&(e=e.clone(),this.downData.path.forEach((t=>e.add(t))));const{enterPath:i}=this;this.enterPath=e,this.emit(F.LEAVE,t,i,e),this.emit(F.ENTER,t,e,i)}touchLeave(t){"touch"===t.pointerType&&this.enterPath&&(this.emit(F.LEAVE,t),this.dragger.dragging&&this.emit(j.LEAVE,t))}tap(t){const{pointer:e}=this.config,i=this.longTap(t);if(!e.tapMore&&i)return;if(!this.waitTap)return;e.tapMore&&this.emitTap(t);const s=Date.now()-this.downTime,a=[F.DOUBLE_TAP,F.DOUBLE_CLICK].some((e=>dt(t.path,e)));s<e.tapTime+50&&a?(this.tapCount++,2===this.tapCount?(this.tapWaitCancel(),this.emitDoubleTap(t)):(clearTimeout(this.tapTimer),this.tapTimer=setTimeout((()=>{e.tapMore||(this.tapWaitCancel(),this.emitTap(t))}),e.tapTime))):e.tapMore||(this.tapWaitCancel(),this.emitTap(t))}findPath(t,e){const{hitRadius:i,through:s}=this.p,{bottomList:a}=this,r=this.selector.getByPoint(t,i,Object.assign({bottomList:a,name:t.type},e||{through:s}));return r.throughPath&&(t.throughPath=r.throughPath),t.path=r.path,r.path}isRootPath(t){return t&&t.path.list[0].isLeafer}isTreePath(t){const e=this.target.app;return!(!e||!e.isApp)&&(e.editor&&!t.path.has(e.editor)&&t.path.has(e.tree)&&!t.target.syncEventer)}checkPath(t,e){(e||this.moveMode&&!gt(t.path))&&(t.path=this.defaultPath)}canMove(t){return t&&(this.moveMode||"auto"===this.m.drag&&!lt(t.path))&&!gt(t.path)}isDrag(t){return this.dragger.getList().has(t)}isPress(t){return this.downData&&this.downData.path.has(t)}isHover(t){return this.enterPath&&this.enterPath.has(t)}isFocus(t){return this.focusData===t}cancelHover(){const{hoverData:t}=this;t&&(t.path=this.defaultPath,this.pointerHover(t))}updateDownData(t,e,i){const{downData:s}=this;!t&&s&&(t=s),t&&(this.findPath(t,e),i&&s&&t.path.addList(s.path.list),this.downData=t)}updateHoverData(t){t||(t=this.hoverData),t&&(this.findPath(t,{exclude:this.dragger.getList(!1,!0),name:F.MOVE}),this.hoverData=t)}updateCursor(t){if(!this.config.cursor||!this.canHover)return;if(t||(this.updateHoverData(),t=this.downData||this.hoverData),this.dragger.moving)return this.setCursor("grabbing");if(this.canMove(t))return this.setCursor(this.downData?"grabbing":"grab");if(!t)return;let e,i;const{path:s}=t;for(let t=0,a=s.length;t<a&&(e=s.list[t],i=e.syncEventer&&e.syncEventer.cursor||e.cursor,!i);t++);this.setCursor(i)}setCursor(t){this.cursor=t}getLocal(t,e){const i=this.canvas.getClientBounds(e);return{x:t.clientX-i.x,y:t.clientY-i.y}}emitTap(t){this.emit(F.TAP,t),this.emit(F.CLICK,t)}emitDoubleTap(t){this.emit(F.DOUBLE_TAP,t),this.emit(F.DOUBLE_CLICK,t)}pointerWaitCancel(){this.tapWaitCancel(),this.longPressWaitCancel()}tapWait(){clearTimeout(this.tapTimer),this.waitTap=!0}tapWaitCancel(){clearTimeout(this.tapTimer),this.waitTap=!1,this.tapCount=0}longPressWait(t){clearTimeout(this.longPressTimer),this.longPressTimer=setTimeout((()=>{this.longPressed=!0,this.emit(F.LONG_PRESS,t)}),this.p.longPressTime)}longTap(t){let e;return this.longPressed&&(this.emit(F.LONG_TAP,t),(dt(t.path,F.LONG_TAP)||dt(t.path,F.LONG_PRESS))&&(e=!0)),this.longPressWaitCancel(),e}longPressWaitCancel(){clearTimeout(this.longPressTimer),this.longPressed=!1}__onResize(){const{dragOut:t}=this.m;this.shrinkCanvasBounds=new T(this.canvas.bounds),this.shrinkCanvasBounds.spread(-("number"==typeof t?t:2))}__listenEvents(){const{target:t}=this;this.__eventIds=[t.on_(O.RESIZE,this.__onResize,this)],t.once(C.READY,(()=>this.__onResize()))}__removeListenEvents(){this.target.off_(this.__eventIds),this.__eventIds.length=0}emit(t,e,i,s){this.running&&function(t,e,i,s){if(!i&&!e.path)return;let a;e.type=t,i?e=Object.assign(Object.assign({},e),{path:i}):i=e.path,e.target=i.indexAt(0);try{for(let r=i.length-1;r>-1;r--){if(a=i.list[r],nt(a,t,e,!0,s))return;a.isApp&&rt(a,t,e,!0,s)}for(let r=0,n=i.length;r<n;r++)if(a=i.list[r],a.isApp&&rt(a,t,e,!1,s),nt(a,t,e,!1,s))return}catch(t){st.error(t)}}(t,e,i,s)}destroy(){this.__eventIds.length&&(this.stop(),this.__removeListenEvents(),this.dragger.destroy(),this.transformer&&this.transformer.destroy(),this.downData=this.overPath=this.enterPath=null)}}class ut{static set(t,e){this.custom[t]=e}static get(t){return this.custom[t]}}ut.custom={};class pt extends R{constructor(){super(...arguments),this.maxTotal=1e3,this.pathList=new D,this.pixelList=new D}getPixelType(t,e){return this.__autoClear(),this.pixelList.add(t),g.hitCanvas(e)}getPathType(t){return this.__autoClear(),this.pathList.add(t),g.hitCanvas()}clearImageType(){this.__clearLeafList(this.pixelList)}clearPathType(){this.__clearLeafList(this.pathList)}__clearLeafList(t){t.length&&(t.forEach((t=>{t.__hitCanvas&&(t.__hitCanvas.destroy(),t.__hitCanvas=null)})),t.reset())}__autoClear(){this.pathList.length+this.pixelList.length>this.maxTotal&&this.clear()}clear(){this.clearPathType(),this.clearImageType()}}const{toInnerRadiusPointOf:_t,copy:vt,setRadius:mt}=P,ft={},yt=x.prototype;yt.__hitWorld=function(t){if(!this.__.hitSelf)return!1;this.__.hitRadius&&(vt(ft,t),mt(t=ft,this.__.hitRadius)),_t(t,this.__world,ft);const{width:e,height:i}=this.__world,s=e<10&&i<10;if(this.__.hitBox||s){if(w.hitRadiusPoint(this.__layout.boxBounds,ft))return!0;if(s)return!1}return!this.__layout.hitCanvasChanged&&this.__hitCanvas||(this.__updateHitCanvas(),this.__layout.boundsChanged||(this.__layout.hitCanvasChanged=!1)),this.__hit(ft)},yt.__hitFill=function(t){var e;return null===(e=this.__hitCanvas)||void 0===e?void 0:e.hitFill(t,this.__.windingRule)},yt.__hitStroke=function(t,e){var i;return null===(i=this.__hitCanvas)||void 0===i?void 0:i.hitStroke(t,e)},yt.__hitPixel=function(t){var e;return null===(e=this.__hitCanvas)||void 0===e?void 0:e.hitPixel(t,this.__layout.renderBounds,this.__hitCanvas.hitScale)},yt.__drawHitPath=function(t){t&&this.__drawRenderPath(t)};const Et=new L,Dt=i.prototype;Dt.__updateHitCanvas=function(){const t=this.__,{hitCanvasManager:e}=this.leafer,i=(t.__pixelFill||t.__isCanvas)&&"pixel"===t.hitFill,a=t.__pixelStroke&&"pixel"===t.hitStroke,r=i||a;this.__hitCanvas||(this.__hitCanvas=r?e.getPixelType(this,{contextSettings:{willReadFrequently:!0}}):e.getPathType(this));const n=this.__hitCanvas;if(r){const{renderBounds:e}=this.__layout,r=b.image.hitCanvasSize,h=n.hitScale=M.set(0,0,r,r).getFitMatrix(e).a,{x:o,y:d,width:l,height:g}=M.set(e).scale(h);n.resize({width:l,height:g,pixelRatio:1}),n.clear(),s.patternLocked=!0,this.__renderShape(n,{matrix:Et.setWith(this.__world).scaleWith(1/h).invertWith().translate(-o,-d)},!i,!a),s.patternLocked=!1,n.resetTransform(),t.__isHitPixel=!0}else t.__isHitPixel&&(t.__isHitPixel=!1);this.__drawHitPath(n),n.setStrokeOptions(t)},Dt.__hit=function(t){"miniapp"===b.name&&this.__drawHitPath(this.__hitCanvas);const e=this.__;if(e.__isHitPixel&&this.__hitPixel(t))return!0;const{hitFill:i}=e,s=(e.fill||e.__isCanvas)&&("path"===i||"pixel"===i&&!(e.__pixelFill||e.__isCanvas))||"all"===i;if(s&&this.__hitFill(t))return!0;const{hitStroke:a,__strokeWidth:r}=e,n=e.stroke&&("path"===a||"pixel"===a&&!e.__pixelStroke)||"all"===a;if(!s&&!n)return!1;const h=2*t.radiusX;let o=h;if(n)switch(e.strokeAlign){case"inside":if(o+=2*r,!s&&this.__hitFill(t)&&this.__hitStroke(t,o))return!0;o=h;break;case"center":o+=r;break;case"outside":if(o+=2*r,!s){if(!this.__hitFill(t)&&this.__hitStroke(t,o))return!0;o=h}}return!!o&&this.__hitStroke(t,o)};const Pt=i.prototype,wt=a.prototype,Tt=r.prototype;wt.__updateHitCanvas=Tt.__updateHitCanvas=function(){this.stroke||this.cornerRadius||(this.fill||this.__.__isCanvas)&&"pixel"===this.hitFill||"all"===this.hitStroke?Pt.__updateHitCanvas.call(this):this.__hitCanvas&&(this.__hitCanvas=null)},wt.__hitFill=Tt.__hitFill=function(t){return this.__hitCanvas?Pt.__hitFill.call(this,t):w.hitRadiusPoint(this.__layout.boxBounds,t)},n.prototype.pick=function(t,e){return this.leafer||this.updateLayout(),e||(e=d),function(t){return t.leafer?t.leafer.selector:h.selector||(h.selector=o.selector())}(this).getByPoint(t,e.hitRadius||0,Object.assign(Object.assign({},e),{target:this}))};const Ot=S.prototype;Ot.hitFill=function(t,e){return e?this.context.isPointInPath(t.x,t.y,e):this.context.isPointInPath(t.x,t.y)},Ot.hitStroke=function(t,e){return this.strokeWidth=e,this.context.isPointInStroke(t.x,t.y)},Ot.hitPixel=function(t,e,i=1){let{x:s,y:a,radiusX:r,radiusY:n}=t;e&&(s-=e.x,a-=e.y),M.set(s-r,a-n,2*r,2*n).scale(i).ceil();const{data:h}=this.context.getImageData(M.x,M.y,M.width||1,M.height||1);for(let t=0,e=h.length;t<e;t+=4)if(h[t+3]>0)return!0;return h[3]>0};export{H as App,ut as Cursor,V as DragEvent,it as Dragger,j as DropEvent,pt as HitCanvasManager,ct as InteractionBase,q as InteractionHelper,Z as KeyEvent,B as Keyboard,z as MoveEvent,U as MyDragEvent,K as MyPointerEvent,I as PointerButton,F as PointerEvent,G as RotateEvent,X as SwipeEvent,N as UIEvent,Y as ZoomEvent};
1
+ import{Leafer as t,State as e,UI as i,ImageManager as s,Rect as a,Box as r,Group as n,Platform as h,Creator as o,emptyData as d}from"@leafer-ui/draw";export*from"@leafer-ui/draw";import{registerUI as l,Creator as g,PropertyEvent as c,Debug as u,DataHelper as p,canvasSizeAttrs as _,LayoutEvent as v,RenderEvent as m,Event as f,EventCreator as y,registerUIEvent as E,LeafList as D,PointHelper as P,BoundsHelper as w,Bounds as T,ResizeEvent as O,LeaferEvent as C,CanvasManager as R,Leaf as x,Matrix as L,Platform as b,tempBounds as M,LeaferCanvasBase as S}from"@leafer/core";function k(t,e,i,s){var a,r=arguments.length,n=r<3?e:null===s?s=Object.getOwnPropertyDescriptor(e,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(t,e,i,s);else for(var h=t.length-1;h>=0;h--)(a=t[h])&&(n=(r<3?a(n):r>3?a(e,i,n):a(e,i))||n);return r>3&&n&&Object.defineProperty(e,i,n),n}"function"==typeof SuppressedError&&SuppressedError;let H=class extends t{get __tag(){return"App"}get isApp(){return!0}constructor(t,e){super(t,e)}init(t,e){if(super.init(t,e),t){const{ground:e,tree:i,sky:s,editor:a}=t;e&&(this.ground=this.addLeafer(e)),(i||a)&&(this.tree=this.addLeafer(i||{type:t.type||"design"})),(s||a)&&(this.sky=this.addLeafer(s)),a&&this.sky.add(this.editor=g.editor(a))}}__setApp(){const{canvas:t}=this,{realCanvas:e,view:i}=this.config;e||i===this.canvas.view||!t.parentView?this.realCanvas=!0:t.unrealCanvas(),this.leafer=this,this.watcher.disable(),this.layouter.disable(),this.__eventIds.push(this.on_(c.CHANGE,this.__onPropertyChange,this))}start(){super.start(),this.children.forEach((t=>t.start()))}stop(){this.children.forEach((t=>t.stop())),super.stop()}unlockLayout(){super.unlockLayout(),this.children.forEach((t=>t.unlockLayout()))}lockLayout(){super.lockLayout(),this.children.forEach((t=>t.lockLayout()))}forceRender(t,e){this.children.forEach((i=>i.forceRender(t,e)))}addLeafer(e){const i=new t(e);return this.add(i),i}add(t,e){if(!t.view){if(this.realCanvas&&!this.canvas.bounds)return void setTimeout((()=>this.add(t,e)),10);t.init(this.__getChildConfig(t.userConfig),this)}super.add(t,e),void 0!==e&&(t.canvas.childIndex=e),this.__listenChildEvents(t)}__onPropertyChange(){u.showHitView&&this.children.forEach((t=>t.forceUpdate("surface")))}__onCreated(){this.created=this.children.every((t=>t.created))}__onReady(){this.children.every((t=>t.ready))&&super.__onReady()}__onViewReady(){this.children.every((t=>t.viewReady))&&super.__onViewReady()}__onChildRenderEnd(t){this.renderer.addBlock(t.renderBounds),this.viewReady&&this.renderer.update()}__render(t,e){if(t.context){const i=e.matrix;i&&t.setTransform(i.a,i.b,i.c,i.d,i.e,i.f),this.children.forEach((e=>t.copyWorld(e.canvas)))}}__onResize(t){this.children.forEach((e=>e.resize(t))),super.__onResize(t)}updateLayout(){this.children.forEach((t=>t.updateLayout()))}__getChildConfig(t){let e=Object.assign({},this.config);return e.hittable=e.realCanvas=void 0,t&&p.assign(e,t),this.autoLayout&&p.copyAttrs(e,this,_),e.view=this.realCanvas?void 0:this.view,e.fill=void 0,e}__listenChildEvents(t){t.once(v.END,(()=>this.__onReady())),t.once(m.START,(()=>this.__onCreated())),t.once(m.END,(()=>this.__onViewReady())),this.realCanvas&&this.__eventIds.push(t.on_(m.END,this.__onChildRenderEnd,this))}};H=k([l()],H);const A={},B={isHoldSpaceKey:()=>B.isHold("Space"),isHold:t=>A[t],setDownCode(t){A[t]||(A[t]=!0)},setUpCode(t){A[t]=!1}},I={LEFT:1,RIGHT:2,MIDDLE:4,defaultLeft(t){t.buttons||(t.buttons=1)},left:t=>1===t.buttons,right:t=>2===t.buttons,middle:t=>4===t.buttons};class N extends f{get spaceKey(){return B.isHoldSpaceKey()}get left(){return I.left(this)}get right(){return I.right(this)}get middle(){return I.middle(this)}constructor(t){super(t.type),this.bubbles=!0,Object.assign(this,t)}getBoxPoint(t){return(t||this.current).getBoxPoint(this)}getInnerPoint(t){return(t||this.current).getInnerPoint(this)}getLocalPoint(t){return(t||this.current).getLocalPoint(this)}getPagePoint(){return this.current.getPagePoint(this)}getInner(t){return this.getInnerPoint(t)}getLocal(t){return this.getLocalPoint(t)}getPage(){return this.getPagePoint()}static changeName(t,e){y.changeName(t,e)}}let F=class extends N{};F.POINTER="pointer",F.BEFORE_DOWN="pointer.before_down",F.BEFORE_MOVE="pointer.before_move",F.BEFORE_UP="pointer.before_up",F.DOWN="pointer.down",F.MOVE="pointer.move",F.UP="pointer.up",F.OVER="pointer.over",F.OUT="pointer.out",F.ENTER="pointer.enter",F.LEAVE="pointer.leave",F.TAP="tap",F.DOUBLE_TAP="double_tap",F.CLICK="click",F.DOUBLE_CLICK="double_click",F.LONG_PRESS="long_press",F.LONG_TAP="long_tap",F.MENU="pointer.menu",F.MENU_TAP="pointer.menu_tap",F=k([E()],F);const K=F,W={};let V=class extends F{static setList(t){this.list=t instanceof D?t:new D(t)}static setData(t){this.data=t}static getValidMove(t,e,i){const{draggable:s,dragBounds:a}=t,r=t.getLocalPoint(i,null,!0);return P.move(r,e.x-t.x,e.y-t.y),a&&this.getMoveInDragBounds(t.__local,"parent"===a?t.parent.boxBounds:a,r,!0),"x"===s&&(r.y=0),"y"===s&&(r.x=0),r}static getMoveInDragBounds(t,e,i,s){const a=t.x+i.x,r=t.y+i.y,n=a+t.width,h=r+t.height,o=e.x+e.width,d=e.y+e.height;return s||(i=Object.assign({},i)),w.includes(t,e)?(a>e.x?i.x+=e.x-a:n<o&&(i.x+=o-n),r>e.y?i.y+=e.y-r:h<d&&(i.y+=d-h)):(a<e.x?i.x+=e.x-a:n>o&&(i.x+=o-n),r<e.y?i.y+=e.y-r:h>d&&(i.y+=d-h)),i}getPageMove(t){return this.assignMove(t),this.current.getPagePoint(W,null,!0)}getInnerMove(t,e){return t||(t=this.current),this.assignMove(e),t.getInnerPoint(W,null,!0)}getLocalMove(t,e){return t||(t=this.current),this.assignMove(e),t.getLocalPoint(W,null,!0)}getPageTotal(){return this.getPageMove(!0)}getInnerTotal(t){return this.getInnerMove(t,!0)}getLocalTotal(t){return this.getLocalMove(t,!0)}getPageBounds(){const t=this.getPageTotal(),e=this.getPagePoint(),i={};return w.set(i,e.x-t.x,e.y-t.y,t.x,t.y),w.unsign(i),i}assignMove(t){W.x=t?this.totalX:this.moveX,W.y=t?this.totalY:this.moveY}};V.BEFORE_DRAG="drag.before_drag",V.START="drag.start",V.DRAG="drag",V.END="drag.end",V.OVER="drag.over",V.OUT="drag.out",V.ENTER="drag.enter",V.LEAVE="drag.leave",V=k([E()],V);const U=V;let j=class extends F{static setList(t){V.setList(t)}static setData(t){V.setData(t)}};j.DROP="drop",j=k([E()],j);let z=class extends V{};z.BEFORE_MOVE="move.before_move",z.START="move.start",z.MOVE="move",z.END="move.end",z=k([E()],z);let G=class extends N{};G.BEFORE_ROTATE="rotate.before_rotate",G.START="rotate.start",G.ROTATE="rotate",G.END="rotate.end",G=k([E()],G);let X=class extends V{};X.SWIPE="swipe",X.LEFT="swipe.left",X.RIGHT="swipe.right",X.UP="swipe.up",X.DOWN="swipe.down",X=k([E()],X);let Y=class extends N{};Y.BEFORE_ZOOM="zoom.before_zoom",Y.START="zoom.start",Y.ZOOM="zoom",Y.END="zoom.end",Y=k([E()],Y);let Z=class extends N{};Z.DOWN="key.down",Z.HOLD="key.hold",Z.UP="key.up",Z=k([E()],Z);const q={getDragEventData:(t,e,i)=>Object.assign(Object.assign({},i),{x:i.x,y:i.y,moveX:i.x-e.x,moveY:i.y-e.y,totalX:i.x-t.x,totalY:i.y-t.y}),getDropEventData:(t,e,i)=>Object.assign(Object.assign({},t),{list:e,data:i}),getSwipeDirection:t=>t<-45&&t>-135?X.UP:t>45&&t<135?X.DOWN:t<=45&&t>=-45?X.RIGHT:X.LEFT,getSwipeEventData:(t,e,i)=>Object.assign(Object.assign({},i),{moveX:e.moveX,moveY:e.moveY,totalX:i.x-t.x,totalY:i.y-t.y,type:J.getSwipeDirection(P.getAngle(t,i))}),getBase(t){const e=1===t.button?4:t.button;return{altKey:t.altKey,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,metaKey:t.metaKey,buttons:void 0===t.buttons?1:0===t.buttons?e:t.buttons,origin:t}},pathHasEventType(t,e){const{list:i}=t;for(let t=0,s=i.length;t<s;t++)if(i[t].hasEvent(e))return!0;return!1},filterPathByEventType(t,e){const i=new D,{list:s}=t;for(let t=0,a=s.length;t<a;t++)s[t].hasEvent(e)&&i.add(s[t]);return i},pathCanDrag:t=>t&&t.list.some((t=>t.draggable||t.editable||!t.isLeafer&&t.hasEvent(V.DRAG))),pathHasOutside:t=>t&&t.list.some((t=>t.isOutside))},J=q,Q=new D,{getDragEventData:$,getDropEventData:tt,getSwipeEventData:et}=q;class it{constructor(t){this.interaction=t}setDragData(t){this.animateWait&&this.dragEndReal(),this.downData=this.interaction.downData,this.dragData=$(t,t,t),this.canAnimate=this.canDragOut=!0}getList(t,e){const{proxy:i}=this.interaction.selector,s=i&&i.list.length,a=V.list||this.draggableList||Q;return this.dragging&&(s?t?Q:new D(e?[...i.list,...i.dragHoverExclude]:i.list):a)}checkDrag(t,e){const{interaction:i}=this;if(this.moving&&t.buttons<1)return this.canAnimate=!1,void i.pointerCancel();!this.moving&&e&&(this.moving=i.canMove(this.downData)||i.isHoldRightKey||i.isMobileDragEmpty)&&(this.dragData.moveType="drag",i.emit(z.START,this.dragData)),this.moving||this.dragStart(t,e),this.drag(t)}dragStart(t,e){this.dragging||(this.dragging=e&&I.left(t),this.dragging&&(this.interaction.emit(V.START,this.dragData),this.getDraggableList(this.dragData.path),this.setDragStartPoints(this.realDraggableList=this.getList(!0))))}setDragStartPoints(t){this.dragStartPoints={},t.forEach((t=>this.dragStartPoints[t.innerId]={x:t.x,y:t.y}))}getDraggableList(t){let e;for(let i=0,s=t.length;i<s;i++)if(e=t.list[i],(e.draggable||e.editable)&&e.hitSelf&&!e.locked){this.draggableList=new D(e);break}}drag(t){const{interaction:e,dragData:i,downData:s}=this,{path:a,throughPath:r}=s;this.dragData=$(s,i,t),r&&(this.dragData.throughPath=r),this.dragData.path=a,this.moving?(this.dragData.moveType="drag",e.emit(z.BEFORE_MOVE,this.dragData),e.emit(z.MOVE,this.dragData)):this.dragging&&(this.dragReal(),e.emit(V.BEFORE_DRAG,this.dragData),e.emit(V.DRAG,this.dragData))}dragReal(){const{running:t}=this.interaction,e=this.realDraggableList;if(e.length&&t){const{totalX:t,totalY:i}=this.dragData;e.forEach((e=>e.draggable&&e.move(V.getValidMove(e,this.dragStartPoints[e.innerId],{x:t,y:i}))))}}dragOverOrOut(t){const{interaction:e}=this,{dragOverPath:i}=this,{path:s}=t;this.dragOverPath=s,i?s.indexAt(0)!==i.indexAt(0)&&(e.emit(V.OUT,t,i),e.emit(V.OVER,t,s)):e.emit(V.OVER,t,s)}dragEnterOrLeave(t){const{interaction:e}=this,{dragEnterPath:i}=this,{path:s}=t;e.emit(V.LEAVE,t,i,s),e.emit(V.ENTER,t,s,i),this.dragEnterPath=s}dragEnd(t,e){(this.dragging||this.moving)&&(this.checkDragEndAnimate(t,e)||this.dragEndReal(t))}dragEndReal(t){const{interaction:e,downData:i,dragData:s}=this;t||(t=s);const{path:a,throughPath:r}=i,n=$(i,t,t);if(r&&(n.throughPath=r),n.path=a,this.moving&&(this.moving=!1,n.moveType="drag",e.emit(z.END,n)),this.dragging){const a=this.getList();this.dragging=!1,e.emit(V.END,n),this.swipe(t,i,s,n),this.drop(t,a,this.dragEnterPath)}this.autoMoveCancel(),this.dragReset(),this.animate(null,"off")}swipe(t,e,i,s){const{interaction:a}=this;if(P.getDistance(e,t)>a.config.pointer.swipeDistance){const t=et(e,i,s);this.interaction.emit(t.type,t)}}drop(t,e,i){const s=tt(t,e,V.data);s.path=i,this.interaction.emit(j.DROP,s),this.interaction.emit(V.LEAVE,t,i)}dragReset(){V.list=V.data=this.draggableList=this.dragData=this.downData=this.dragOverPath=this.dragEnterPath=null}checkDragEndAnimate(t,e){return!1}animate(t,e){}checkDragOut(t){}autoMoveOnDragOut(t){}autoMoveCancel(){}destroy(){this.dragReset()}}const st=u.get("emit");const at=["move","zoom","rotate","key"];function rt(t,e,i,s,a){if(at.some((t=>e.startsWith(t)))&&t.__.hitChildren&&!ht(t,a)){let r;for(let n=0,h=t.children.length;n<h;n++)r=t.children[n],!i.path.has(r)&&r.__.hittable&&nt(r,e,i,s,a)}}function nt(t,i,s,a,r){if(t.destroyed)return!1;if(t.__.hitSelf&&!ht(t,r)&&(e.updateEventStyle&&!a&&e.updateEventStyle(t,i),t.hasEvent(i,a))){s.phase=a?1:t===s.target?2:3;const e=y.get(i,s);if(t.emitEvent(e,a),e.isStop)return!0}return!1}function ht(t,e){return e&&e.has(t)}const ot={wheel:{zoomSpeed:.5,moveSpeed:.5,rotateSpeed:.5,delta:{x:20,y:8}},pointer:{hitRadius:5,tapTime:120,longPressTime:800,transformTime:500,hover:!0,dragHover:!0,dragDistance:2,swipeDistance:20},touch:{preventDefault:"auto"},multiTouch:{},move:{autoDistance:2},zoom:{},cursor:!0,keyEvent:!0},{pathHasEventType:dt,pathCanDrag:lt,pathHasOutside:gt}=q;class ct{get dragging(){return this.dragger.dragging}get transforming(){return this.transformer.transforming}get moveMode(){return!0===this.m.drag||this.isHoldSpaceKey||this.isHoldMiddleKey||this.isHoldRightKey&&this.dragger.moving||this.isDragEmpty}get canHover(){return this.p.hover&&!this.config.mobile}get isDragEmpty(){return this.m.dragEmpty&&this.isRootPath(this.hoverData)&&(!this.downData||this.isRootPath(this.downData))}get isMobileDragEmpty(){return this.m.dragEmpty&&!this.canHover&&this.downData&&this.isTreePath(this.downData)}get isHoldMiddleKey(){return this.m.holdMiddleKey&&this.downData&&I.middle(this.downData)}get isHoldRightKey(){return this.m.holdRightKey&&this.downData&&I.right(this.downData)}get isHoldSpaceKey(){return this.m.holdSpaceKey&&B.isHoldSpaceKey()}get m(){return this.config.move}get p(){return this.config.pointer}get hitRadius(){return this.p.hitRadius}constructor(t,e,i,s){this.config=p.clone(ot),this.tapCount=0,this.downKeyMap={},this.target=t,this.canvas=e,this.selector=i,this.defaultPath=new D(t),this.createTransformer(),this.dragger=new it(this),s&&(this.config=p.default(s,this.config)),this.__listenEvents()}start(){this.running=!0}stop(){this.running=!1}receive(t){}pointerDown(t,e){t||(t=this.hoverData),t&&(I.defaultLeft(t),this.updateDownData(t),this.checkPath(t,e),this.downTime=Date.now(),this.emit(F.BEFORE_DOWN,t),this.emit(F.DOWN,t),I.left(t)&&(this.tapWait(),this.longPressWait(t)),this.waitRightTap=I.right(t),this.dragger.setDragData(t),this.isHoldRightKey||this.updateCursor(t))}pointerMove(t){if(t||(t=this.hoverData),!t)return;const{downData:e}=this;e&&I.defaultLeft(t);(this.canvas.bounds.hitPoint(t)||e)&&(this.pointerMoveReal(t),e&&this.dragger.checkDragOut(t))}pointerMoveReal(t){if(this.emit(F.BEFORE_MOVE,t,this.defaultPath),this.downData){const e=P.getDistance(this.downData,t)>this.p.dragDistance;e&&(this.waitTap&&this.pointerWaitCancel(),this.waitRightTap=!1),this.dragger.checkDrag(t,e)}this.dragger.moving||(this.updateHoverData(t),this.checkPath(t),this.emit(F.MOVE,t),this.pointerHover(t),this.dragging&&(this.dragger.dragOverOrOut(t),this.dragger.dragEnterOrLeave(t))),this.updateCursor(this.downData||t)}pointerUp(t){const{downData:e}=this;if(t||(t=e),!e)return;I.defaultLeft(t),t.multiTouch=e.multiTouch,this.findPath(t);const i=Object.assign(Object.assign({},t),{path:t.path.clone()});t.path.addList(e.path.list),this.checkPath(t),this.downData=null,this.emit(F.BEFORE_UP,t),this.emit(F.UP,t),this.touchLeave(t),t.isCancel||(this.tap(t),this.menuTap(t)),this.dragger.dragEnd(t),this.updateCursor(i)}pointerCancel(){const t=Object.assign({},this.dragger.dragData);t.isCancel=!0,this.pointerUp(t)}menu(t){this.findPath(t),this.emit(F.MENU,t),this.waitMenuTap=!0,!this.downData&&this.waitRightTap&&this.menuTap(t)}menuTap(t){this.waitRightTap&&this.waitMenuTap&&(this.emit(F.MENU_TAP,t),this.waitRightTap=this.waitMenuTap=!1)}createTransformer(){}move(t){}zoom(t){}rotate(t){}transformEnd(){}wheel(t){}multiTouch(t,e){}keyDown(t){if(!this.config.keyEvent)return;const{code:e}=t;this.downKeyMap[e]||(this.downKeyMap[e]=!0,B.setDownCode(e),this.emit(Z.HOLD,t,this.defaultPath),this.moveMode&&(this.cancelHover(),this.updateCursor())),this.emit(Z.DOWN,t,this.defaultPath)}keyUp(t){if(!this.config.keyEvent)return;const{code:e}=t;this.downKeyMap[e]=!1,B.setUpCode(e),this.emit(Z.UP,t,this.defaultPath),"grab"===this.cursor&&this.updateCursor()}pointerHover(t){!this.canHover||this.dragging&&!this.p.dragHover||(t.path||(t.path=new D),this.pointerOverOrOut(t),this.pointerEnterOrLeave(t))}pointerOverOrOut(t){const{path:e}=t,{overPath:i}=this;this.overPath=e,i?e.indexAt(0)!==i.indexAt(0)&&(this.emit(F.OUT,t,i),this.emit(F.OVER,t,e)):this.emit(F.OVER,t,e)}pointerEnterOrLeave(t){let{path:e}=t;this.downData&&!this.moveMode&&(e=e.clone(),this.downData.path.forEach((t=>e.add(t))));const{enterPath:i}=this;this.enterPath=e,this.emit(F.LEAVE,t,i,e),this.emit(F.ENTER,t,e,i)}touchLeave(t){"touch"===t.pointerType&&this.enterPath&&(this.emit(F.LEAVE,t),this.dragger.dragging&&this.emit(j.LEAVE,t))}tap(t){const{pointer:e}=this.config,i=this.longTap(t);if(!e.tapMore&&i)return;if(!this.waitTap)return;e.tapMore&&this.emitTap(t);const s=Date.now()-this.downTime,a=[F.DOUBLE_TAP,F.DOUBLE_CLICK].some((e=>dt(t.path,e)));s<e.tapTime+50&&a?(this.tapCount++,2===this.tapCount?(this.tapWaitCancel(),this.emitDoubleTap(t)):(clearTimeout(this.tapTimer),this.tapTimer=setTimeout((()=>{e.tapMore||(this.tapWaitCancel(),this.emitTap(t))}),e.tapTime))):e.tapMore||(this.tapWaitCancel(),this.emitTap(t))}findPath(t,e){const{hitRadius:i,through:s}=this.p,{bottomList:a}=this,r=this.selector.getByPoint(t,i,Object.assign({bottomList:a,name:t.type},e||{through:s}));return r.throughPath&&(t.throughPath=r.throughPath),t.path=r.path,r.path}isRootPath(t){return t&&t.path.list[0].isLeafer}isTreePath(t){const e=this.target.app;return!(!e||!e.isApp)&&(e.editor&&!t.path.has(e.editor)&&t.path.has(e.tree)&&!t.target.syncEventer)}checkPath(t,e){(e||this.moveMode&&!gt(t.path))&&(t.path=this.defaultPath)}canMove(t){return t&&(this.moveMode||"auto"===this.m.drag&&!lt(t.path))&&!gt(t.path)}isDrag(t){return this.dragger.getList().has(t)}isPress(t){return this.downData&&this.downData.path.has(t)}isHover(t){return this.enterPath&&this.enterPath.has(t)}isFocus(t){return this.focusData===t}cancelHover(){const{hoverData:t}=this;t&&(t.path=this.defaultPath,this.pointerHover(t))}updateDownData(t,e,i){const{downData:s}=this;!t&&s&&(t=s),t&&(this.findPath(t,e),i&&s&&t.path.addList(s.path.list),this.downData=t)}updateHoverData(t){t||(t=this.hoverData),t&&(this.findPath(t,{exclude:this.dragger.getList(!1,!0),name:F.MOVE}),this.hoverData=t)}updateCursor(t){if(!this.config.cursor||!this.canHover)return;if(t||(this.updateHoverData(),t=this.downData||this.hoverData),this.dragger.moving)return this.setCursor("grabbing");if(this.canMove(t))return this.setCursor(this.downData?"grabbing":"grab");if(!t)return;let e,i;const{path:s}=t;for(let t=0,a=s.length;t<a&&(e=s.list[t],i=e.syncEventer&&e.syncEventer.cursor||e.cursor,!i);t++);this.setCursor(i)}setCursor(t){this.cursor=t}getLocal(t,e){const i=this.canvas.getClientBounds(e);return{x:t.clientX-i.x,y:t.clientY-i.y}}emitTap(t){this.emit(F.TAP,t),this.emit(F.CLICK,t)}emitDoubleTap(t){this.emit(F.DOUBLE_TAP,t),this.emit(F.DOUBLE_CLICK,t)}pointerWaitCancel(){this.tapWaitCancel(),this.longPressWaitCancel()}tapWait(){clearTimeout(this.tapTimer),this.waitTap=!0}tapWaitCancel(){clearTimeout(this.tapTimer),this.waitTap=!1,this.tapCount=0}longPressWait(t){clearTimeout(this.longPressTimer),this.longPressTimer=setTimeout((()=>{this.longPressed=!0,this.emit(F.LONG_PRESS,t)}),this.p.longPressTime)}longTap(t){let e;return this.longPressed&&(this.emit(F.LONG_TAP,t),(dt(t.path,F.LONG_TAP)||dt(t.path,F.LONG_PRESS))&&(e=!0)),this.longPressWaitCancel(),e}longPressWaitCancel(){clearTimeout(this.longPressTimer),this.longPressed=!1}__onResize(){const{dragOut:t}=this.m;this.shrinkCanvasBounds=new T(this.canvas.bounds),this.shrinkCanvasBounds.spread(-("number"==typeof t?t:2))}__listenEvents(){const{target:t}=this;this.__eventIds=[t.on_(O.RESIZE,this.__onResize,this)],t.once(C.READY,(()=>this.__onResize()))}__removeListenEvents(){this.target.off_(this.__eventIds),this.__eventIds.length=0}emit(t,e,i,s){this.running&&function(t,e,i,s){if(!i&&!e.path)return;let a;e.type=t,i?e=Object.assign(Object.assign({},e),{path:i}):i=e.path,e.target=i.indexAt(0);try{for(let r=i.length-1;r>-1;r--){if(a=i.list[r],nt(a,t,e,!0,s))return;a.isApp&&rt(a,t,e,!0,s)}for(let r=0,n=i.length;r<n;r++)if(a=i.list[r],a.isApp&&rt(a,t,e,!1,s),nt(a,t,e,!1,s))return}catch(t){st.error(t)}}(t,e,i,s)}destroy(){this.__eventIds.length&&(this.stop(),this.__removeListenEvents(),this.dragger.destroy(),this.transformer&&this.transformer.destroy(),this.downData=this.overPath=this.enterPath=null)}}class ut{static set(t,e){this.custom[t]=e}static get(t){return this.custom[t]}}ut.custom={};class pt extends R{constructor(){super(...arguments),this.maxTotal=1e3,this.pathList=new D,this.pixelList=new D}getPixelType(t,e){return this.__autoClear(),this.pixelList.add(t),g.hitCanvas(e)}getPathType(t){return this.__autoClear(),this.pathList.add(t),g.hitCanvas()}clearImageType(){this.__clearLeafList(this.pixelList)}clearPathType(){this.__clearLeafList(this.pathList)}__clearLeafList(t){t.length&&(t.forEach((t=>{t.__hitCanvas&&(t.__hitCanvas.destroy(),t.__hitCanvas=null)})),t.reset())}__autoClear(){this.pathList.length+this.pixelList.length>this.maxTotal&&this.clear()}clear(){this.clearPathType(),this.clearImageType()}}const{toInnerRadiusPointOf:_t,copy:vt,setRadius:mt}=P,ft={},yt=x.prototype;yt.__hitWorld=function(t){if(!this.__.hitSelf)return!1;this.__.hitRadius&&(vt(ft,t),mt(t=ft,this.__.hitRadius)),_t(t,this.__world,ft);const{width:e,height:i}=this.__world,s=e<10&&i<10;if(this.__.hitBox||s){if(w.hitRadiusPoint(this.__layout.boxBounds,ft))return!0;if(s)return!1}return!this.__layout.hitCanvasChanged&&this.__hitCanvas||(this.__updateHitCanvas(),this.__layout.boundsChanged||(this.__layout.hitCanvasChanged=!1)),this.__hit(ft)},yt.__hitFill=function(t){var e;return null===(e=this.__hitCanvas)||void 0===e?void 0:e.hitFill(t,this.__.windingRule)},yt.__hitStroke=function(t,e){var i;return null===(i=this.__hitCanvas)||void 0===i?void 0:i.hitStroke(t,e)},yt.__hitPixel=function(t){var e;return null===(e=this.__hitCanvas)||void 0===e?void 0:e.hitPixel(t,this.__layout.renderBounds,this.__hitCanvas.hitScale)},yt.__drawHitPath=function(t){t&&this.__drawRenderPath(t)};const Et=new L,Dt=i.prototype;Dt.__updateHitCanvas=function(){const t=this.__,{hitCanvasManager:e}=this.leafer,i=(t.__pixelFill||t.__isCanvas)&&"pixel"===t.hitFill,a=t.__pixelStroke&&"pixel"===t.hitStroke,r=i||a;this.__hitCanvas||(this.__hitCanvas=r?e.getPixelType(this,{contextSettings:{willReadFrequently:!0}}):e.getPathType(this));const n=this.__hitCanvas;if(r){const{renderBounds:e}=this.__layout,r=b.image.hitCanvasSize,h=n.hitScale=M.set(0,0,r,r).getFitMatrix(e).a,{x:o,y:d,width:l,height:g}=M.set(e).scale(h);n.resize({width:l,height:g,pixelRatio:1}),n.clear(),s.patternLocked=!0,this.__renderShape(n,{matrix:Et.setWith(this.__world).scaleWith(1/h).invertWith().translate(-o,-d)},!i,!a),s.patternLocked=!1,n.resetTransform(),t.__isHitPixel=!0}else t.__isHitPixel&&(t.__isHitPixel=!1);this.__drawHitPath(n),n.setStrokeOptions(t)},Dt.__hit=function(t){"miniapp"===b.name&&this.__drawHitPath(this.__hitCanvas);const e=this.__;if(e.__isHitPixel&&this.__hitPixel(t))return!0;const{hitFill:i}=e,s=(e.fill||e.__isCanvas)&&("path"===i||"pixel"===i&&!(e.__pixelFill||e.__isCanvas))||"all"===i;if(s&&this.__hitFill(t))return!0;const{hitStroke:a,__strokeWidth:r}=e,n=e.stroke&&("path"===a||"pixel"===a&&!e.__pixelStroke)||"all"===a;if(!s&&!n)return!1;const h=2*t.radiusX;let o=h;if(n)switch(e.strokeAlign){case"inside":if(o+=2*r,!s&&this.__hitFill(t)&&this.__hitStroke(t,o))return!0;o=h;break;case"center":o+=r;break;case"outside":if(o+=2*r,!s){if(!this.__hitFill(t)&&this.__hitStroke(t,o))return!0;o=h}}return!!o&&this.__hitStroke(t,o)};const Pt=i.prototype,wt=a.prototype,Tt=r.prototype;wt.__updateHitCanvas=Tt.__updateHitCanvas=function(){this.stroke||this.cornerRadius||(this.fill||this.__.__isCanvas)&&"pixel"===this.hitFill||"all"===this.hitStroke?Pt.__updateHitCanvas.call(this):this.__hitCanvas&&(this.__hitCanvas=null)},wt.__hitFill=Tt.__hitFill=function(t){return this.__hitCanvas?Pt.__hitFill.call(this,t):w.hitRadiusPoint(this.__layout.boxBounds,t)},n.prototype.pick=function(t,e){return this.leafer||this.updateLayout(),e||(e=d),function(t){return t.leafer?t.leafer.selector:h.selector||(h.selector=o.selector())}(this).getByPoint(t,e.hitRadius||0,Object.assign(Object.assign({},e),{target:this}))};const Ot=S.prototype;Ot.hitFill=function(t,e){return e?this.context.isPointInPath(t.x,t.y,e):this.context.isPointInPath(t.x,t.y)},Ot.hitStroke=function(t,e){return this.strokeWidth=e,this.context.isPointInStroke(t.x,t.y)},Ot.hitPixel=function(t,e,i=1){let{x:s,y:a,radiusX:r,radiusY:n}=t;e&&(s-=e.x,a-=e.y),M.set(s-r,a-n,2*r,2*n).scale(i).ceil();const{data:h}=this.context.getImageData(M.x,M.y,M.width||1,M.height||1);for(let t=0,e=h.length;t<e;t+=4)if(h[t+3]>0)return!0;return h[3]>0};export{H as App,ut as Cursor,V as DragEvent,it as Dragger,j as DropEvent,pt as HitCanvasManager,ct as InteractionBase,q as InteractionHelper,Z as KeyEvent,B as Keyboard,z as MoveEvent,U as MyDragEvent,K as MyPointerEvent,I as PointerButton,F as PointerEvent,G as RotateEvent,X as SwipeEvent,N as UIEvent,Y as ZoomEvent};
2
+ //# sourceMappingURL=core.esm.min.js.map