@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.min.cjs","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":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","SuppressedError","App","Leafer","__tag","isApp","constructor","userConfig","data","super","init","parentApp","ground","tree","sky","editor","this","addLeafer","type","add","Creator","__setApp","canvas","realCanvas","view","config","parentView","unrealCanvas","leafer","watcher","disable","layouter","__eventIds","push","on_","PropertyEvent","CHANGE","__onPropertyChange","start","children","forEach","stop","unlockLayout","lockLayout","forceRender","bounds","sync","merge","index","setTimeout","__getChildConfig","undefined","childIndex","__listenChildEvents","Debug","showHitView","forceUpdate","__onCreated","created","every","child","__onReady","ready","__onViewReady","viewReady","__onChildRenderEnd","e","renderer","addBlock","renderBounds","update","__render","options","context","m","matrix","setTransform","a","b","f","copyWorld","__onResize","event","resize","updateLayout","assign","hittable","DataHelper","autoLayout","copyAttrs","canvasSizeAttrs","fill","once","LayoutEvent","END","RenderEvent","START","registerUI","downKeyMap","Keyboard","isHoldSpaceKey","isHold","code","setDownCode","setUpCode","PointerButton","LEFT","RIGHT","MIDDLE","defaultLeft","buttons","left","right","middle","UIEvent","Event","spaceKey","B","params","bubbles","getBoxPoint","relative","current","getInnerPoint","getLocalPoint","getPagePoint","getInner","getLocal","getPage","changeName","oldName","newName","EventCreator","PointerEvent","POINTER","BEFORE_DOWN","BEFORE_MOVE","BEFORE_UP","DOWN","MOVE","UP","OVER","OUT","ENTER","LEAVE","TAP","DOUBLE_TAP","CLICK","DOUBLE_CLICK","LONG_PRESS","LONG_TAP","MENU","MENU_TAP","registerUIEvent","MyPointerEvent","tempMove","DragEvent","setList","list","LeafList","setData","getValidMove","leaf","total","draggable","dragBounds","move","PointHelper","x","y","getMoveInDragBounds","__local","parent","boxBounds","childBox","change","width","bottom","height","boundsRight","boundsBottom","BoundsHelper","includes","getPageMove","assignMove","getInnerMove","getLocalMove","getPageTotal","getInnerTotal","getLocalTotal","getPageBounds","set","unsign","totalX","moveX","totalY","moveY","BEFORE_DRAG","DRAG","MyDragEvent","DropEvent","DROP","MoveEvent","RotateEvent","BEFORE_ROTATE","ROTATE","SwipeEvent","SWIPE","ZoomEvent","BEFORE_ZOOM","ZOOM","KeyEvent","HOLD","InteractionHelper","getDragEventData","startPoint","lastPoint","getDropEventData","getSwipeDirection","angle","getSwipeEventData","lastDragData","I","getAngle","getBase","pointerUpButtons","button","altKey","ctrlKey","shiftKey","metaKey","origin","pathHasEventType","path","len","hasEvent","filterPathByEventType","find","pathCanDrag","some","item","editable","isLeafer","pathHasOutside","isOutside","emptyList","Dragger","interaction","setDragData","animateWait","dragEndReal","downData","dragData","canAnimate","canDragOut","getList","realDraggable","hover","proxy","selector","hasProxyList","dragList","draggableList","dragging","dragHoverExclude","checkDrag","canDrag","moving","pointerCancel","canMove","isHoldRightKey","isMobileDragEmpty","moveType","emit","dragStart","drag","getDraggableList","setDragStartPoints","realDraggableList","dragStartPoints","innerId","hitSelf","locked","throughPath","dragReal","running","dragOverOrOut","dragOverPath","indexAt","dragEnterOrLeave","dragEnterPath","dragEnd","speed","checkDragEndAnimate","endDragData","dropList","swipe","drop","autoMoveCancel","dragReset","animate","getDistance","pointer","swipeDistance","swipeData","dropData","_data","_speed","_func","_off","checkDragOut","autoMoveOnDragOut","destroy","debug","get","allowTypes","emitAppChildren","capture","excludePath","name","startsWith","__","hitChildren","exclude","has","emitEvent","destroyed","State","updateEventStyle","phase","isStop","wheel","zoomSpeed","moveSpeed","rotateSpeed","delta","hitRadius","tapTime","longPressTime","transformTime","dragHover","dragDistance","touch","preventDefault","multiTouch","autoDistance","zoom","cursor","keyEvent","Cursor","value","custom","HitCanvasManager","CanvasManager","maxTotal","pathList","pixelList","getPixelType","__autoClear","hitCanvas","getPathType","clearImageType","__clearLeafList","clearPathType","leafList","__hitCanvas","reset","clear","toInnerRadiusPointOf","copy","setRadius","inner","Leaf","prototype","__hitWorld","point","__world","isSmall","hitBox","hitRadiusPoint","__layout","hitCanvasChanged","__updateHitCanvas","boundsChanged","__hit","__hitFill","_a","hitFill","windingRule","__hitStroke","strokeWidth","hitStroke","__hitPixel","hitPixel","hitScale","__drawHitPath","__drawRenderPath","Matrix","ui","UI","hitCanvasManager","isHitPixelFill","__pixelFill","__isCanvas","isHitPixelStroke","__pixelStroke","isHitPixel","contextSettings","willReadFrequently","h","size","Platform","image","hitCanvasSize","scale","tempBounds","getFitMatrix","pixelRatio","ImageManager","patternLocked","__renderShape","setWith","scaleWith","invertWith","translate","resetTransform","__isHitPixel","setStrokeOptions","needHitFillPath","__strokeWidth","needHitStrokePath","stroke","radiusWidth","radiusX","hitWidth","strokeAlign","rect","Rect","box","Box","cornerRadius","call","Group","pick","hitPoint","emptyData","getSelector","getByPoint","LeaferCanvasBase","fillRule","isPointInPath","isPointInStroke","radiusPoint","offset","radiusY","ceil","getImageData","dragger","transforming","transformer","moveMode","isHoldMiddleKey","isDragEmpty","canHover","p","mobile","dragEmpty","isRootPath","hoverData","isTreePath","holdMiddleKey","holdRightKey","holdSpaceKey","clone","tapCount","defaultPath","createTransformer","default","__listenEvents","receive","_event","pointerDown","useDefaultPath","updateDownData","checkPath","downTime","Date","now","tapWait","longPressWait","waitRightTap","updateCursor","pointerMove","pointerMoveReal","waitTap","pointerWaitCancel","updateHoverData","pointerHover","pointerUp","findPath","upData","addList","touchLeave","isCancel","tap","menuTap","menu","waitMenuTap","rotate","transformEnd","_list","keyDown","cancelHover","keyUp","pointerOverOrOut","pointerEnterOrLeave","overPath","enterPath","pointerType","hasLong","longTap","tapMore","emitTap","useTime","hasDouble","tapWaitCancel","emitDoubleTap","clearTimeout","tapTimer","through","bottomList","app","syncEventer","isDrag","isPress","isHover","isFocus","focusData","setCursor","clientPoint","updateClient","clientBounds","getClientBounds","clientX","clientY","longPressWaitCancel","longPressTimer","longPressed","dragOut","shrinkCanvasBounds","Bounds","spread","ResizeEvent","RESIZE","LeaferEvent","READY","__removeListenEvents","off_","error"],"mappings":"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","x_google_ignoreList":[0]}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@leafer-ui/core",
3
- "version": "1.3.3",
3
+ "version": "1.4.0",
4
4
  "description": "@leafer-ui/core",
5
5
  "author": "Chao (Leafer) Wan",
6
6
  "license": "MIT",
7
7
  "type": "module",
8
- "main": "lib/core.esm.js",
8
+ "main": "lib/core.esm.min.js",
9
9
  "exports": {
10
- "import": "./lib/core.esm.js",
11
- "require": "./lib/core.cjs",
10
+ "import": "./lib/core.esm.min.js",
11
+ "require": "./lib/core.min.cjs",
12
12
  "types": "./types/index.d.ts"
13
13
  },
14
14
  "types": "types/index.d.ts",
@@ -29,10 +29,10 @@
29
29
  "leaferjs"
30
30
  ],
31
31
  "dependencies": {
32
- "@leafer-ui/draw": "1.3.3",
33
- "@leafer-ui/app": "1.3.3",
34
- "@leafer-ui/interaction": "1.3.3",
35
- "@leafer-ui/event": "1.3.3",
36
- "@leafer-ui/hit": "1.3.3"
32
+ "@leafer-ui/draw": "1.4.0",
33
+ "@leafer-ui/app": "1.4.0",
34
+ "@leafer-ui/interaction": "1.4.0",
35
+ "@leafer-ui/event": "1.4.0",
36
+ "@leafer-ui/hit": "1.4.0"
37
37
  }
38
38
  }