@formulaxjs/kity-runtime 0.2.0 → 0.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.
package/README.md CHANGED
@@ -1,42 +1,41 @@
1
- # @formulaxjs/kity-runtime
2
-
3
- Legacy KityFormula runtime adapter for FormulaX.
4
-
5
- `@formulaxjs/kity-runtime` packages the compatibility runtime that powers FormulaX's Kity-based editing and rendering flows. It now includes the legacy fonts, toolbar images, and stylesheet assets needed by the runtime, and provides helpers for mounting the editor in browser applications.
6
-
7
- > Status: experimental. Public APIs may change before the first stable release.
8
-
9
- ## Install
10
-
11
- ```bash
12
- pnpm add @formulaxjs/kity-runtime
13
- ```
14
-
15
- ## Highlights
16
-
17
- - `ensureKityRuntime` for lazy runtime bootstrapping
18
- - `createKityEditor` and `mountKityEditor` for mounting a Kity editor into the DOM
19
- - `FormulaXEditor` as a small wrapper around the mounted runtime
20
- - Legacy compatibility exports used by existing KityFormula-oriented integrations
21
-
22
- ## Example
23
-
24
- ```ts
25
- import { mountKityEditor } from '@formulaxjs/kity-runtime';
26
-
27
- const root = document.getElementById('editor');
28
-
29
- if (!root) {
30
- throw new Error('Missing #editor');
31
- }
32
-
33
- const handle = await mountKityEditor(root, {
34
- value: 'x=\\frac{-b\\pm\\sqrt{b^2-4ac}}{2a}',
35
- });
36
-
37
- console.log(handle.getLatex());
38
- ```
39
-
40
- ## Package role
41
-
42
- Use this package when you need the legacy Kity editing experience or compatibility with historical KityFormula behavior. For host-editor integrations, prefer the dedicated adapter packages that already depend on this runtime.
1
+ # @formulaxjs/kity-runtime
2
+
3
+ Legacy KityFormula runtime adapter for FormulaX.
4
+
5
+ `@formulaxjs/kity-runtime` packages the compatibility runtime that powers FormulaX's Kity-based editing and rendering flows. It now includes the legacy fonts, toolbar images, and stylesheet assets needed by the runtime, and provides low-level helpers for mounting the editor in browser applications.
6
+
7
+ > Status: experimental. Public APIs may change before the first stable release.
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ npm install @formulaxjs/kity-runtime
13
+ ```
14
+
15
+ ## Highlights
16
+
17
+ - `ensureKityRuntime` for lazy runtime bootstrapping
18
+ - `createKityEditor` and `mountKityEditor` for mounting a Kity editor into the DOM
19
+ - Legacy compatibility exports used by existing KityFormula-oriented integrations
20
+
21
+ ## Example
22
+
23
+ ```ts
24
+ import { mountKityEditor } from '@formulaxjs/kity-runtime';
25
+
26
+ const root = document.getElementById('editor');
27
+
28
+ if (!root) {
29
+ throw new Error('Missing #editor');
30
+ }
31
+
32
+ const handle = await mountKityEditor(root, {
33
+ value: 'x=\\frac{-b\\pm\\sqrt{b^2-4ac}}{2a}',
34
+ });
35
+
36
+ console.log(handle.getLatex());
37
+ ```
38
+
39
+ ## Package role
40
+
41
+ Use this package when you need the low-level legacy Kity editing runtime or compatibility with historical KityFormula behavior. For application-facing editor usage, prefer importing `FormulaXEditor` from `@formulaxjs/editor`. For host-editor integrations, prefer the dedicated adapter packages that already depend on this runtime.
@@ -1,3 +1,48 @@
1
+ // public/assets/images/toolbar/btn.png
2
+ var btn_default = "./btn-5DANP6JY.png";
3
+
4
+ // public/assets/images/toolbar/other.png
5
+ var other_default = "./other-OMWJFGL5.png";
6
+
7
+ // public/assets/styles/editor.css?url
8
+ var editor_default = "./editor-JT5KLVXX.css?url";
9
+
10
+ // public/resource/KF_AMS_BB.woff
11
+ var KF_AMS_BB_default = "./KF_AMS_BB-5QF7FUSO.woff";
12
+
13
+ // public/resource/KF_AMS_CAL.woff
14
+ var KF_AMS_CAL_default = "./KF_AMS_CAL-NXRNLAZN.woff";
15
+
16
+ // public/resource/KF_AMS_FRAK.woff
17
+ var KF_AMS_FRAK_default = "./KF_AMS_FRAK-CO33WWN4.woff";
18
+
19
+ // public/resource/KF_AMS_MAIN.woff
20
+ var KF_AMS_MAIN_default = "./KF_AMS_MAIN-25QJVAWY.woff";
21
+
22
+ // public/resource/KF_AMS_ROMAN.woff
23
+ var KF_AMS_ROMAN_default = "./KF_AMS_ROMAN-243BR7HH.woff";
24
+
25
+ // src/asset-manifest.ts
26
+ var kityFontAssets = {
27
+ KF_AMS_BB: KF_AMS_BB_default,
28
+ KF_AMS_CAL: KF_AMS_CAL_default,
29
+ KF_AMS_FRAK: KF_AMS_FRAK_default,
30
+ KF_AMS_MAIN: KF_AMS_MAIN_default,
31
+ KF_AMS_ROMAN: KF_AMS_ROMAN_default
32
+ };
33
+ var kityToolbarAssets = {
34
+ btn: btn_default,
35
+ other: other_default
36
+ };
37
+ var kityStyleAssets = {
38
+ editor: editor_default
39
+ };
40
+ var kityAssetManifest = {
41
+ fonts: kityFontAssets,
42
+ toolbar: kityToolbarAssets,
43
+ styles: kityStyleAssets
44
+ };
45
+
1
46
  // src/vendor/legacy-box-type.ts
2
47
  var legacyBoxType = {
3
48
  DETACHED: 1,
@@ -385,24 +430,35 @@ function getClassList(node) {
385
430
  }
386
431
 
387
432
  // src/vendor/legacy-ui-utils.ts
433
+ var legacyUiUtils = {
434
+ ele: createElement,
435
+ getRectBox,
436
+ on(target, type, fn) {
437
+ addEvent(target, type, fn);
438
+ return this;
439
+ },
440
+ delegate(target, selector, type, fn) {
441
+ delegateEvent(target, selector, type, fn);
442
+ return this;
443
+ },
444
+ publish(topic, ...args) {
445
+ publish(topic, ...args);
446
+ },
447
+ subscribe,
448
+ getClassList
449
+ };
388
450
  function createLegacyUiUtils() {
389
- return {
390
- ele: createElement,
391
- getRectBox,
392
- on(target, type, fn) {
393
- addEvent(target, type, fn);
394
- return this;
395
- },
396
- delegate(target, selector, type, fn) {
397
- delegateEvent(target, selector, type, fn);
398
- return this;
399
- },
400
- publish(topic, ...args) {
401
- publish(topic, ...args);
402
- },
403
- subscribe,
404
- getClassList
405
- };
451
+ return legacyUiUtils;
452
+ }
453
+
454
+ // src/i18n.ts
455
+ var FORMULAX_LOCALES = ["en_US", "zh_CN"];
456
+ var DEFAULT_FORMULAX_LOCALE = "en_US";
457
+ function normalizeFormulaXLocale(locale) {
458
+ if (locale === "zh_CN") {
459
+ return "zh_CN";
460
+ }
461
+ return DEFAULT_FORMULAX_LOCALE;
406
462
  }
407
463
 
408
464
  // src/vendor/other-position.ts
@@ -850,7 +906,10 @@ var legacyOtherPosition = {
850
906
  };
851
907
 
852
908
  // src/toolbar-assets.ts
853
- var toolbarAssetFileMap = {};
909
+ var toolbarAssetFileMap = {
910
+ "btn.png": kityToolbarAssets.btn,
911
+ "other.png": kityToolbarAssets.other
912
+ };
854
913
  function setToolbarAssetUrls(assets) {
855
914
  toolbarAssetFileMap = {
856
915
  "btn.png": assets.btn,
@@ -867,6 +926,10 @@ function resolveToolbarAssetPath(fileName, preferSvg = false) {
867
926
  }
868
927
 
869
928
  export {
929
+ kityFontAssets,
930
+ kityToolbarAssets,
931
+ kityStyleAssets,
932
+ kityAssetManifest,
870
933
  legacyBoxType,
871
934
  legacyOtherPosition,
872
935
  utils_default,
@@ -889,8 +952,12 @@ export {
889
952
  subscribe,
890
953
  getRectBox,
891
954
  getClassList,
955
+ legacyUiUtils,
892
956
  createLegacyUiUtils,
893
957
  setToolbarAssetUrls,
894
- resolveToolbarAssetPath
958
+ resolveToolbarAssetPath,
959
+ FORMULAX_LOCALES,
960
+ DEFAULT_FORMULAX_LOCALE,
961
+ normalizeFormulaXLocale
895
962
  };
896
- //# sourceMappingURL=chunk-EKIJQ64F.js.map
963
+ //# sourceMappingURL=chunk-LIDQRZXL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/asset-manifest.ts","../src/vendor/legacy-box-type.ts","../src/vendor/legacy-kfevent.ts","../src/vendor/legacy-event.ts","../src/vendor/legacy-utils.ts","../src/kity/utils.ts","../src/vendor/legacy-component.ts","../src/vendor/legacy-ele-type.ts","../src/vendor/legacy-group-type.ts","../src/vendor/legacy-input-filter.ts","../src/vendor/legacy-item-type.ts","../src/vendor/legacy-kf-ext-def.ts","../src/vendor/legacy-sysconf.ts","../src/vendor/legacy-ui-def.ts","../src/dom-utils.ts","../src/vendor/legacy-ui-utils.ts","../src/i18n.ts","../src/vendor/other-position.ts","../src/toolbar-assets.ts"],"sourcesContent":["import btnUrl from '../public/assets/images/toolbar/btn.png';\nimport otherUrl from '../public/assets/images/toolbar/other.png';\nimport editorCssUrl from '../public/assets/styles/editor.css?url';\nimport kfAmsBbUrl from '../public/resource/KF_AMS_BB.woff';\nimport kfAmsCalUrl from '../public/resource/KF_AMS_CAL.woff';\nimport kfAmsFrakUrl from '../public/resource/KF_AMS_FRAK.woff';\nimport kfAmsMainUrl from '../public/resource/KF_AMS_MAIN.woff';\nimport kfAmsRomanUrl from '../public/resource/KF_AMS_ROMAN.woff';\n\nexport type KityFontAssets = {\n KF_AMS_BB: string;\n KF_AMS_CAL: string;\n KF_AMS_FRAK: string;\n KF_AMS_MAIN: string;\n KF_AMS_ROMAN: string;\n};\n\nexport type KityToolbarAssets = {\n btn: string;\n other: string;\n};\n\nexport type KityStyleAssets = {\n editor: string;\n};\n\nexport type KityAssetManifest = {\n fonts: KityFontAssets;\n toolbar: KityToolbarAssets;\n styles: KityStyleAssets;\n};\n\nexport const kityFontAssets = {\n KF_AMS_BB: kfAmsBbUrl,\n KF_AMS_CAL: kfAmsCalUrl,\n KF_AMS_FRAK: kfAmsFrakUrl,\n KF_AMS_MAIN: kfAmsMainUrl,\n KF_AMS_ROMAN: kfAmsRomanUrl,\n} satisfies KityFontAssets;\n\nexport const kityToolbarAssets = {\n btn: btnUrl,\n other: otherUrl,\n} satisfies KityToolbarAssets;\n\nexport const kityStyleAssets = {\n editor: editorCssUrl,\n} satisfies KityStyleAssets;\n\nexport const kityAssetManifest = {\n fonts: kityFontAssets,\n toolbar: kityToolbarAssets,\n styles: kityStyleAssets,\n} satisfies KityAssetManifest;\n","export const legacyBoxType = {\n DETACHED: 1,\n OVERLAP: 2,\n} as const;\n","export const legacyKfEvent = {\n createEvent(type: string) {\n return new Event(type, {\n bubbles: true,\n cancelable: true,\n });\n },\n};\n","import { legacyKfEvent } from './legacy-kfevent';\n\ntype KfEventHandler<T extends Event = Event> = (event: T) => boolean | void;\nconst eventListenerStore: Record<number, Record<string, any[]>> = {};\nlet eventId = 0;\nlet beforeResult = true;\n\ntype LegacyEventTarget = EventTarget & {\n __kfeEventId?: number;\n __kfe_eid?: number;\n};\n\nfunction getLegacyEventId(target: LegacyEventTarget) {\n return target.__kfeEventId ?? target.__kfe_eid;\n}\n\nfunction setLegacyEventId(target: LegacyEventTarget, resolvedEventId: number) {\n target.__kfeEventId = resolvedEventId;\n\n if (Object.prototype.hasOwnProperty.call(target, '__kfe_eid')) {\n target.__kfe_eid = resolvedEventId;\n return;\n }\n\n Object.defineProperty(target, '__kfe_eid', {\n configurable: true,\n enumerable: true,\n get() {\n return target.__kfeEventId;\n },\n set(value: number) {\n target.__kfeEventId = value;\n },\n });\n}\n\nconst eventHandler = function eventHandler(this: LegacyEventTarget, event: Event) {\n const type = event.type;\n const target = event.target as EventTarget;\n const eid = getLegacyEventId(this) as number;\n const hasAutoTrigger = /^(?:before|after)/.test(type);\n const handlerList: KfEventHandler[] = eventListenerStore[eid]?.[type] ?? [];\n\n if (!hasAutoTrigger) {\n legacyEventListener.trigger(target, `before${type}`);\n\n if (beforeResult === false) {\n beforeResult = true;\n return false;\n }\n }\n\n for (const handler of handlerList) {\n if (handler.call(target, event) === false) {\n beforeResult = false;\n break;\n }\n }\n\n if (!hasAutoTrigger) {\n legacyEventListener.trigger(target, `after${type}`);\n }\n\n return true;\n};\n\nexport const legacyEventListener = {\n addEvent<T extends Event = Event>(target: LegacyEventTarget, type: string, handler: (event: T) => boolean | void) {\n let hasHandler = true;\n\n if (!getLegacyEventId(target)) {\n hasHandler = false;\n setLegacyEventId(target, ++eventId);\n eventListenerStore[getLegacyEventId(target) as number] = {};\n }\n\n const eventCache = eventListenerStore[getLegacyEventId(target) as number];\n\n if (!eventCache[type]) {\n hasHandler = false;\n eventCache[type] = [];\n }\n\n eventCache[type].push(handler);\n\n if (hasHandler) {\n return;\n }\n\n target.addEventListener(type, eventHandler as EventListener, false);\n },\n\n trigger(target: EventTarget, type: string, event?: Event) {\n const resolvedEvent = event || legacyKfEvent.createEvent(type);\n target.dispatchEvent(resolvedEvent);\n },\n};\n","import { bind, isArray, isString } from 'lodash-es';\nimport utils from '../kity/utils';\nimport { legacyEventListener } from './legacy-event';\n\nexport type LegacyBaseUtils = {\n addEvent: typeof legacyEventListener.addEvent;\n trigger: typeof legacyEventListener.trigger;\n each: typeof utils.each;\n extend: typeof utils.extend;\n clone: typeof utils.clone;\n copy: typeof utils.copy;\n isArray: typeof isArray;\n isString: typeof isString;\n proxy: typeof bind;\n contains(parent: Node, target: Node): boolean;\n getRect(node: Element): DOMRect;\n};\n\nconst legacyBaseUtils: LegacyBaseUtils = {\n addEvent: legacyEventListener.addEvent,\n trigger: legacyEventListener.trigger,\n each: utils.each,\n extend: utils.extend,\n clone: utils.clone,\n copy: utils.copy,\n isArray,\n isString,\n proxy: bind,\n contains(parent: Node, target: Node) {\n if (parent.contains) {\n return parent.contains(target);\n }\n if (parent.compareDocumentPosition) {\n return !!(parent.compareDocumentPosition(target) & 16);\n }\n return false;\n },\n getRect(node: Element) {\n return node.getBoundingClientRect();\n },\n};\n\nexport { legacyBaseUtils };\n","import {\n assign,\n cloneDeep,\n forEach,\n isArray,\n isBoolean,\n isFunction,\n isNumber,\n isObject,\n isRegExp,\n isString,\n flattenDeep,\n get,\n defaultTo,\n merge,\n} from 'lodash-es';\n\nexport type KityUtils = {\n each: typeof forEach;\n extend: typeof assign;\n deepExtend: typeof merge;\n clone: typeof cloneDeep;\n copy: typeof cloneDeep;\n queryPath: typeof get;\n getValue: typeof defaultTo;\n flatten: typeof flattenDeep;\n parallel: (v1: unknown, v2: unknown, op: (a: unknown, b: unknown) => unknown) => unknown;\n paralle: (v1: unknown, v2: unknown, op: (a: unknown, b: unknown) => unknown) => unknown;\n parallelize: (op: (a: unknown, b: unknown) => unknown) => (v1: unknown, v2: unknown) => unknown;\n isString: typeof isString;\n isFunction: typeof isFunction;\n isArray: typeof isArray;\n isNumber: typeof isNumber;\n isRegExp: typeof isRegExp;\n isObject: typeof isObject;\n isBoolean: typeof isBoolean;\n};\n\nconst utils: KityUtils = {\n each: forEach,\n extend: assign,\n deepExtend: merge,\n clone: cloneDeep,\n copy: cloneDeep,\n queryPath: get,\n getValue: defaultTo,\n flatten: flattenDeep,\n\n parallel: function parallel(v1: unknown, v2: unknown, op: (a: unknown, b: unknown) => unknown): unknown {\n if (isArray(v1) && isArray(v2)) {\n return (v1 as unknown[]).map((item, i) => parallel(item, (v2 as unknown[])[i], op));\n }\n\n if (isObject(v1) && isObject(v1) && isObject(v2)) {\n const Class = (v1 as { getClass?: () => { parse?: (val: unknown) => unknown } }).getClass?.();\n if (Class?.parse) {\n const v1Val = (v1 as { valueOf: () => unknown[] }).valueOf();\n const v2Val = (v2 as { valueOf: () => unknown[] }).valueOf();\n const result = parallel(v1Val, v2Val, op);\n return Class.parse(result);\n }\n const result: Record<string, unknown> = {};\n for (const name in v1 as object) {\n if (\n Object.prototype.hasOwnProperty.call(v1, name) &&\n Object.prototype.hasOwnProperty.call(v2, name)\n ) {\n result[name] = parallel(\n (v1 as Record<string, unknown>)[name],\n (v2 as Record<string, unknown>)[name],\n op,\n );\n }\n }\n return result;\n }\n\n if (!isNaN(Number(v1))) {\n return op(v1, v2);\n }\n\n return undefined;\n },\n\n paralle: null as unknown as KityUtils['paralle'],\n\n parallelize(op: (a: unknown, b: unknown) => unknown) {\n return (v1: unknown, v2: unknown) => utils.parallel(v1, v2, op);\n },\n\n isString,\n isFunction,\n isArray,\n isNumber,\n isRegExp,\n isObject,\n isBoolean,\n};\n\nutils.paralle = utils.parallel;\n\nexport default utils;\n","export function createLegacyBaseComponent(kity: { createClass: (name: string, definition: object) => unknown }) {\r\n return kity.createClass('Component', {\r\n constructor() {},\r\n });\r\n}\r\n","export const legacyEleType = {\n DRAPDOWN_BOX: 1,\n AREA: 2,\n DELIMITER: 3,\n} as const;\n","export const legacyGroupType = {\n GROUP: 'kf-editor-group',\n VIRTUAL: 'kf-editor-virtual-group',\n} as const;\n","const replacementMap: Record<string, string> = {\n '32': '\\\\,',\n 's+219': '\\\\{',\n 's+221': '\\\\}',\n '220': '\\\\backslash',\n 's+51': '\\\\#',\n 's+52': '\\\\$',\n 's+53': '\\\\%',\n 's+54': '\\\\^',\n 's+55': '\\\\&',\n 's+189': '\\\\_',\n 's+192': '\\\\~',\n};\n\nexport const legacyInputFilter = {\n getReplaceString(key: string | number) {\n return replacementMap[String(key)] || null;\n },\n};\n","export const legacyItemType = {\n BIG: 1,\n SMALL: 2,\n} as const;\n","export const legacyKfExtDef = {\n selectColor: 'rgba(42, 106, 189, 0.2)',\n allSelectColor: 'rgba(42, 106, 189, 0.6)',\n} as const;\n","export const legacySysconf = {\n cursorCharacter: '\\uF155',\n rootPlaceholder: {\n color: '#666',\n content: 'Type formula here',\n fontsize: 16,\n },\n scrollbar: {\n padding: 5,\n step: 150,\n },\n} as const;\n","export const legacyUiDef = {\n VIEW_STATE: {\n NO_OVERFLOW: 0,\n OVERFLOW: 1,\n },\n scrollbar: {\n step: 50,\n thumbMinSize: 50,\n },\n} as const;\n","export type TopicCallback = (...args: unknown[]) => void;\r\n\r\nexport type ElementOptions =\r\n | string\r\n | {\r\n className?: string;\r\n content?: string;\r\n };\r\n\r\nexport type NormalizedMouseEvent = MouseEvent & {\r\n originalEvent: MouseEvent | WheelEvent;\r\n wheelDelta: number;\r\n which: number;\r\n};\r\n\r\nconst topicPool = new Map<string, TopicCallback[]>();\r\n\r\nfunction getMouseButtonCode(event: MouseEvent | WheelEvent) {\r\n if (typeof event.which === 'number' && event.which > 0) {\r\n return event.which;\r\n }\r\n\r\n switch (event.button) {\r\n case 0:\r\n return 1;\r\n case 1:\r\n return 2;\r\n case 2:\r\n return 3;\r\n default:\r\n return 0;\r\n }\r\n}\r\n\r\nfunction getWheelDelta(event: MouseEvent | WheelEvent) {\r\n if ('wheelDelta' in event && typeof event.wheelDelta === 'number') {\r\n return event.wheelDelta;\r\n }\r\n\r\n if ('deltaY' in event && typeof event.deltaY === 'number') {\r\n return -event.deltaY * 40;\r\n }\r\n\r\n return 0;\r\n}\r\n\r\nexport function normalizeMouseEvent(event: MouseEvent | WheelEvent): NormalizedMouseEvent {\r\n const wrappedEvent = Object.create(event) as NormalizedMouseEvent;\r\n\r\n Object.defineProperties(wrappedEvent, {\r\n originalEvent: {\r\n value: event,\r\n enumerable: false,\r\n configurable: true,\r\n },\r\n wheelDelta: {\r\n value: getWheelDelta(event),\r\n enumerable: false,\r\n configurable: true,\r\n },\r\n which: {\r\n value: getMouseButtonCode(event),\r\n enumerable: false,\r\n configurable: true,\r\n },\r\n preventDefault: {\r\n value: event.preventDefault.bind(event),\r\n enumerable: false,\r\n configurable: true,\r\n },\r\n stopPropagation: {\r\n value: event.stopPropagation.bind(event),\r\n enumerable: false,\r\n configurable: true,\r\n },\r\n stopImmediatePropagation: {\r\n value: event.stopImmediatePropagation.bind(event),\r\n enumerable: false,\r\n configurable: true,\r\n },\r\n });\r\n\r\n return wrappedEvent;\r\n}\r\n\r\nexport function createElement(doc: Document, name: 'text', options: string): Text;\r\n// eslint-disable-next-line no-redeclare\r\nexport function createElement(doc: Document, name: string, options?: Exclude<ElementOptions, string>): HTMLElement;\r\n// eslint-disable-next-line no-redeclare\r\nexport function createElement(doc: Document, name: string, options?: ElementOptions) {\r\n if (name === 'text') {\r\n return doc.createTextNode(typeof options === 'string' ? options : '');\r\n }\r\n\r\n const node = doc.createElement(name);\r\n\r\n if (options && typeof options !== 'string') {\r\n if (options.className) {\r\n node.className = options.className;\r\n }\r\n\r\n if (options.content) {\r\n node.innerHTML = options.content;\r\n }\r\n }\r\n\r\n return node;\r\n}\r\n\r\nexport function addEvent(target: EventTarget | null, type: string, listener: (event: NormalizedMouseEvent) => void) {\r\n if (!target) {\r\n return;\r\n }\r\n\r\n target.addEventListener(type, (event) => {\r\n listener(normalizeMouseEvent(event as MouseEvent | WheelEvent));\r\n });\r\n}\r\n\r\nexport function delegateEvent(\r\n target: EventTarget | null,\r\n selector: string,\r\n type: string,\r\n listener: (this: Element, event: NormalizedMouseEvent) => void,\r\n) {\r\n if (!target) {\r\n return;\r\n }\r\n\r\n target.addEventListener(type, (event) => {\r\n const normalizedEvent = normalizeMouseEvent(event as MouseEvent | WheelEvent);\r\n let current = event.target instanceof Element ? event.target : null;\r\n\r\n while (current && current !== target) {\r\n if (current.matches(selector)) {\r\n listener.call(current, normalizedEvent);\r\n return;\r\n }\r\n current = current.parentElement;\r\n }\r\n });\r\n}\r\n\r\nexport function publish(topic: string, ...args: unknown[]) {\r\n const callbackList = topicPool.get(topic);\r\n\r\n if (!callbackList) {\r\n return;\r\n }\r\n\r\n callbackList.forEach((callback) => callback(...args));\r\n}\r\n\r\nexport function subscribe(topic: string, callback: TopicCallback) {\r\n const callbackList = topicPool.get(topic) ?? [];\r\n callbackList.push(callback);\r\n topicPool.set(topic, callbackList);\r\n}\r\n\r\nexport function getRectBox(node: Element) {\r\n return node.getBoundingClientRect();\r\n}\r\n\r\nexport function getClassList(node: Element) {\r\n return node.classList;\r\n}\r\n","import { addEvent, createElement, delegateEvent, getClassList, getRectBox, publish, subscribe } from '../dom-utils';\n\nexport const legacyUiUtils = {\n ele: createElement,\n getRectBox,\n on(target: EventTarget | null, type: string, fn: (event: Event) => void) {\n addEvent(target, type, fn);\n return this;\n },\n delegate(target: EventTarget | null, selector: string, type: string, fn: (event: Event) => void) {\n delegateEvent(target, selector, type, fn);\n return this;\n },\n publish(topic: string, ...args: unknown[]) {\n publish(topic, ...args);\n },\n subscribe,\n getClassList,\n};\n\nexport function createLegacyUiUtils() {\n return legacyUiUtils;\n}\n","export const FORMULAX_LOCALES = ['en_US', 'zh_CN'] as const;\n\nexport type FormulaXLocale = (typeof FORMULAX_LOCALES)[number];\n\nexport const DEFAULT_FORMULAX_LOCALE: FormulaXLocale = 'en_US';\n\nexport function normalizeFormulaXLocale(locale?: string): FormulaXLocale {\n if (locale === 'zh_CN') {\n return 'zh_CN';\n }\n\n return DEFAULT_FORMULAX_LOCALE;\n}\n","export const legacyOtherPosition = {\r\n \"x=\\\\frac {-b\\\\pm\\\\sqrt {b^2-4ac}}{2a}\": {\r\n \"pos\": {\r\n \"x\": 0,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 310,\r\n \"height\": 73\r\n }\r\n },\r\n \"{\\\\placeholder/\\\\placeholder}\": {\r\n \"pos\": {\r\n \"x\": 315,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\frac \\\\placeholder\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 376,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"a^2+b^2=c^2\": {\r\n \"pos\": {\r\n \"x\": 437,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 310,\r\n \"height\": 73\r\n }\r\n },\r\n \"{\\\\left(x+a\\\\right)}^2=\\\\sum^n_{k=0}{\\\\left(^n_k\\\\right)x^ka^{n-k}}\": {\r\n \"pos\": {\r\n \"x\": 752,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 310,\r\n \"height\": 73\r\n }\r\n },\r\n \"\\\\frac {dy}{dx}\": {\r\n \"pos\": {\r\n \"x\": 1067,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\frac {\\\\Delta y}{\\\\Delta x}\": {\r\n \"pos\": {\r\n \"x\": 1128,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\frac {\\\\delta y}{\\\\delta x}\": {\r\n \"pos\": {\r\n \"x\": 1189,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\frac \\\\pi 2\": {\r\n \"pos\": {\r\n \"x\": 1250,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\placeholder^\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 1311,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\placeholder^\\\\placeholder_\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 1372,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\placeholder_\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 1433,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"{^\\\\placeholder_\\\\placeholder\\\\placeholder}\": {\r\n \"pos\": {\r\n \"x\": 1494,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"e^{-i\\\\omega t}\": {\r\n \"pos\": {\r\n \"x\": 1555,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"x^2\": {\r\n \"pos\": {\r\n \"x\": 1616,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"{}^n_1Y\": {\r\n \"pos\": {\r\n \"x\": 1677,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\sqrt \\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 1738,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\sqrt [\\\\placeholder] \\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 1799,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\sqrt [2] \\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 1860,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\sqrt [3] \\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 1921,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\frac {-b\\\\pm\\\\sqrt{b^2-4ac}}{2a}\": {\r\n \"pos\": {\r\n \"x\": 1982,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 137,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\sqrt {a^2+b^2}\": {\r\n \"pos\": {\r\n \"x\": 2124,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 137,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\int \\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 2266,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\int^\\\\placeholder_\\\\placeholder\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 2327,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\iint\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 2388,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\iint^\\\\placeholder_\\\\placeholder\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 2449,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\iiint\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 2510,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\iiint^\\\\placeholder_\\\\placeholder\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 2571,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\sum\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 2632,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\sum^\\\\placeholder_\\\\placeholder\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 2693,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\sum_\\\\placeholder\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 2754,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\left(\\\\placeholder\\\\right)\": {\r\n \"pos\": {\r\n \"x\": 2815,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\left[\\\\placeholder\\\\right]\": {\r\n \"pos\": {\r\n \"x\": 2876,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\left\\\\{\\\\placeholder\\\\right\\\\}\": {\r\n \"pos\": {\r\n \"x\": 2937,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\left|\\\\placeholder\\\\right|\": {\r\n \"pos\": {\r\n \"x\": 2998,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\sin\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 3059,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\cos\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 3120,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\tan\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 3181,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\csc\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 3242,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\sec\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 3303,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\cot\\\\placeholder\": {\r\n \"pos\": {\r\n \"x\": 3364,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\sin\\\\theta\": {\r\n \"pos\": {\r\n \"x\": 3425,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\cos{2x}\": {\r\n \"pos\": {\r\n \"x\": 3486,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 56,\r\n \"height\": 75\r\n }\r\n },\r\n \"\\\\tan\\\\theta=\\\\frac {\\\\sin\\\\theta}{\\\\cos\\\\theta}\": {\r\n \"pos\": {\r\n \"x\": 3547,\r\n \"y\": 0\r\n },\r\n \"size\": {\r\n \"width\": 137,\r\n \"height\": 75\r\n }\r\n }\r\n } as const;\r\n","import { kityToolbarAssets } from './asset-manifest';\n\nlet toolbarAssetFileMap: Record<string, string> = {\n 'btn.png': kityToolbarAssets.btn,\n 'other.png': kityToolbarAssets.other,\n};\n\nexport function setToolbarAssetUrls(assets: { btn: string; other: string }): void {\n toolbarAssetFileMap = {\n 'btn.png': assets.btn,\n 'other.png': assets.other,\n };\n}\n\nexport function resolveToolbarAssetPath(fileName: string, preferSvg = false): string {\n const normalizedFileName =\n preferSvg && fileName.toLowerCase().endsWith('.png')\n ? `${fileName.slice(0, -4)}.svg`\n : fileName;\n\n const mapped = toolbarAssetFileMap[normalizedFileName];\n if (mapped) {\n return mapped;\n }\n\n throw new Error(`Missing Kity toolbar asset URL for \"${normalizedFileName}\".`);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAgCO,IAAM,iBAAiB;AAAA,EAC5B,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAChB;AAEO,IAAM,oBAAoB;AAAA,EAC/B,KAAK;AAAA,EACL,OAAO;AACT;AAEO,IAAM,kBAAkB;AAAA,EAC7B,QAAQ;AACV;AAEO,IAAM,oBAAoB;AAAA,EAC/B,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AACV;;;ACrDO,IAAM,gBAAgB;AAAA,EAC3B,UAAU;AAAA,EACV,SAAS;AACX;;;ACHO,IAAM,gBAAgB;AAAA,EAC3B,YAAY,MAAc;AACxB,WAAO,IAAI,MAAM,MAAM;AAAA,MACrB,SAAS;AAAA,MACT,YAAY;AAAA,IACd,CAAC;AAAA,EACH;AACF;;;ACJA,IAAM,qBAA4D,CAAC;AACnE,IAAI,UAAU;AACd,IAAI,eAAe;AAOnB,SAAS,iBAAiB,QAA2B;AACnD,SAAO,OAAO,gBAAgB,OAAO;AACvC;AAEA,SAAS,iBAAiB,QAA2B,iBAAyB;AAC5E,SAAO,eAAe;AAEtB,MAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,WAAW,GAAG;AAC7D,WAAO,YAAY;AACnB;AAAA,EACF;AAEA,SAAO,eAAe,QAAQ,aAAa;AAAA,IACzC,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,MAAM;AACJ,aAAO,OAAO;AAAA,IAChB;AAAA,IACA,IAAI,OAAe;AACjB,aAAO,eAAe;AAAA,IACxB;AAAA,EACF,CAAC;AACH;AAEA,IAAM,eAAe,SAASA,cAAsC,OAAc;AAChF,QAAM,OAAO,MAAM;AACnB,QAAM,SAAS,MAAM;AACrB,QAAM,MAAM,iBAAiB,IAAI;AACjC,QAAM,iBAAiB,oBAAoB,KAAK,IAAI;AACpD,QAAM,cAAgC,mBAAmB,GAAG,IAAI,IAAI,KAAK,CAAC;AAE1E,MAAI,CAAC,gBAAgB;AACnB,wBAAoB,QAAQ,QAAQ,SAAS,IAAI,EAAE;AAEnD,QAAI,iBAAiB,OAAO;AAC1B,qBAAe;AACf,aAAO;AAAA,IACT;AAAA,EACF;AAEA,aAAW,WAAW,aAAa;AACjC,QAAI,QAAQ,KAAK,QAAQ,KAAK,MAAM,OAAO;AACzC,qBAAe;AACf;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,gBAAgB;AACnB,wBAAoB,QAAQ,QAAQ,QAAQ,IAAI,EAAE;AAAA,EACpD;AAEA,SAAO;AACT;AAEO,IAAM,sBAAsB;AAAA,EACjC,SAAkC,QAA2B,MAAc,SAAuC;AAChH,QAAI,aAAa;AAEjB,QAAI,CAAC,iBAAiB,MAAM,GAAG;AAC7B,mBAAa;AACb,uBAAiB,QAAQ,EAAE,OAAO;AAClC,yBAAmB,iBAAiB,MAAM,CAAW,IAAI,CAAC;AAAA,IAC5D;AAEA,UAAM,aAAa,mBAAmB,iBAAiB,MAAM,CAAW;AAExE,QAAI,CAAC,WAAW,IAAI,GAAG;AACrB,mBAAa;AACb,iBAAW,IAAI,IAAI,CAAC;AAAA,IACtB;AAEA,eAAW,IAAI,EAAE,KAAK,OAAO;AAE7B,QAAI,YAAY;AACd;AAAA,IACF;AAEA,WAAO,iBAAiB,MAAM,cAA+B,KAAK;AAAA,EACpE;AAAA,EAEA,QAAQ,QAAqB,MAAc,OAAe;AACxD,UAAM,gBAAgB,SAAS,cAAc,YAAY,IAAI;AAC7D,WAAO,cAAc,aAAa;AAAA,EACpC;AACF;;;AChGA,SAAS,MAAM,WAAAC,UAAS,YAAAC,iBAAgB;;;ACAxC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAuBP,IAAM,QAAmB;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,MAAM;AAAA,EACN,WAAW;AAAA,EACX,UAAU;AAAA,EACV,SAAS;AAAA,EAET,UAAU,SAAS,SAAS,IAAa,IAAa,IAAkD;AACtG,QAAI,QAAQ,EAAE,KAAK,QAAQ,EAAE,GAAG;AAC9B,aAAQ,GAAiB,IAAI,CAAC,MAAM,MAAM,SAAS,MAAO,GAAiB,CAAC,GAAG,EAAE,CAAC;AAAA,IACpF;AAEA,QAAI,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,GAAG;AAChD,YAAM,QAAS,GAAkE,WAAW;AAC5F,UAAI,OAAO,OAAO;AAChB,cAAM,QAAS,GAAoC,QAAQ;AAC3D,cAAM,QAAS,GAAoC,QAAQ;AAC3D,cAAMC,UAAS,SAAS,OAAO,OAAO,EAAE;AACxC,eAAO,MAAM,MAAMA,OAAM;AAAA,MAC3B;AACA,YAAM,SAAkC,CAAC;AACzC,iBAAW,QAAQ,IAAc;AAC/B,YACE,OAAO,UAAU,eAAe,KAAK,IAAI,IAAI,KAC7C,OAAO,UAAU,eAAe,KAAK,IAAI,IAAI,GAC7C;AACA,iBAAO,IAAI,IAAI;AAAA,YACZ,GAA+B,IAAI;AAAA,YACnC,GAA+B,IAAI;AAAA,YACpC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,MAAM,OAAO,EAAE,CAAC,GAAG;AACtB,aAAO,GAAG,IAAI,EAAE;AAAA,IAClB;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,SAAS;AAAA,EAET,YAAY,IAAyC;AACnD,WAAO,CAAC,IAAa,OAAgB,MAAM,SAAS,IAAI,IAAI,EAAE;AAAA,EAChE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,UAAU,MAAM;AAEtB,IAAO,gBAAQ;;;ADnFf,IAAM,kBAAmC;AAAA,EACvC,UAAU,oBAAoB;AAAA,EAC9B,SAAS,oBAAoB;AAAA,EAC7B,MAAM,cAAM;AAAA,EACZ,QAAQ,cAAM;AAAA,EACd,OAAO,cAAM;AAAA,EACb,MAAM,cAAM;AAAA,EACZ,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAO;AAAA,EACP,SAAS,QAAc,QAAc;AACnC,QAAI,OAAO,UAAU;AACnB,aAAO,OAAO,SAAS,MAAM;AAAA,IAC/B;AACA,QAAI,OAAO,yBAAyB;AAClC,aAAO,CAAC,EAAE,OAAO,wBAAwB,MAAM,IAAI;AAAA,IACrD;AACA,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,MAAe;AACrB,WAAO,KAAK,sBAAsB;AAAA,EACpC;AACF;;;AExCO,SAAS,0BAA0B,MAAsE;AAC9G,SAAO,KAAK,YAAY,aAAa;AAAA,IACnC,cAAc;AAAA,IAAC;AAAA,EACjB,CAAC;AACH;;;ACJO,IAAM,gBAAgB;AAAA,EAC3B,cAAc;AAAA,EACd,MAAM;AAAA,EACN,WAAW;AACb;;;ACJO,IAAM,kBAAkB;AAAA,EAC7B,OAAO;AAAA,EACP,SAAS;AACX;;;ACHA,IAAM,iBAAyC;AAAA,EAC7C,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,SAAS;AACX;AAEO,IAAM,oBAAoB;AAAA,EAC/B,iBAAiB,KAAsB;AACrC,WAAO,eAAe,OAAO,GAAG,CAAC,KAAK;AAAA,EACxC;AACF;;;AClBO,IAAM,iBAAiB;AAAA,EAC5B,KAAK;AAAA,EACL,OAAO;AACT;;;ACHO,IAAM,iBAAiB;AAAA,EAC5B,aAAa;AAAA,EACb,gBAAgB;AAClB;;;ACHO,IAAM,gBAAgB;AAAA,EAC3B,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,IACf,OAAO;AAAA,IACP,SAAS;AAAA,IACT,UAAU;AAAA,EACZ;AAAA,EACA,WAAW;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACF;;;ACXO,IAAM,cAAc;AAAA,EACzB,YAAY;AAAA,IACV,aAAa;AAAA,IACb,UAAU;AAAA,EACZ;AAAA,EACA,WAAW;AAAA,IACT,MAAM;AAAA,IACN,cAAc;AAAA,EAChB;AACF;;;ACMA,IAAM,YAAY,oBAAI,IAA6B;AAEnD,SAAS,mBAAmB,OAAgC;AAC1D,MAAI,OAAO,MAAM,UAAU,YAAY,MAAM,QAAQ,GAAG;AACtD,WAAO,MAAM;AAAA,EACf;AAEA,UAAQ,MAAM,QAAQ;AAAA,IACpB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,cAAc,OAAgC;AACrD,MAAI,gBAAgB,SAAS,OAAO,MAAM,eAAe,UAAU;AACjE,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,YAAY,SAAS,OAAO,MAAM,WAAW,UAAU;AACzD,WAAO,CAAC,MAAM,SAAS;AAAA,EACzB;AAEA,SAAO;AACT;AAEO,SAAS,oBAAoB,OAAsD;AACxF,QAAM,eAAe,OAAO,OAAO,KAAK;AAExC,SAAO,iBAAiB,cAAc;AAAA,IACpC,eAAe;AAAA,MACb,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB;AAAA,IACA,YAAY;AAAA,MACV,OAAO,cAAc,KAAK;AAAA,MAC1B,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB;AAAA,IACA,OAAO;AAAA,MACL,OAAO,mBAAmB,KAAK;AAAA,MAC/B,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB;AAAA,IACA,gBAAgB;AAAA,MACd,OAAO,MAAM,eAAe,KAAK,KAAK;AAAA,MACtC,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB;AAAA,IACA,iBAAiB;AAAA,MACf,OAAO,MAAM,gBAAgB,KAAK,KAAK;AAAA,MACvC,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB;AAAA,IACA,0BAA0B;AAAA,MACxB,OAAO,MAAM,yBAAyB,KAAK,KAAK;AAAA,MAChD,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAMO,SAAS,cAAc,KAAe,MAAc,SAA0B;AACnF,MAAI,SAAS,QAAQ;AACnB,WAAO,IAAI,eAAe,OAAO,YAAY,WAAW,UAAU,EAAE;AAAA,EACtE;AAEA,QAAM,OAAO,IAAI,cAAc,IAAI;AAEnC,MAAI,WAAW,OAAO,YAAY,UAAU;AAC1C,QAAI,QAAQ,WAAW;AACrB,WAAK,YAAY,QAAQ;AAAA,IAC3B;AAEA,QAAI,QAAQ,SAAS;AACnB,WAAK,YAAY,QAAQ;AAAA,IAC3B;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,SAAS,QAA4B,MAAc,UAAiD;AAClH,MAAI,CAAC,QAAQ;AACX;AAAA,EACF;AAEA,SAAO,iBAAiB,MAAM,CAAC,UAAU;AACvC,aAAS,oBAAoB,KAAgC,CAAC;AAAA,EAChE,CAAC;AACH;AAEO,SAAS,cACd,QACA,UACA,MACA,UACA;AACA,MAAI,CAAC,QAAQ;AACX;AAAA,EACF;AAEA,SAAO,iBAAiB,MAAM,CAAC,UAAU;AACvC,UAAM,kBAAkB,oBAAoB,KAAgC;AAC5E,QAAI,UAAU,MAAM,kBAAkB,UAAU,MAAM,SAAS;AAE/D,WAAO,WAAW,YAAY,QAAQ;AACpC,UAAI,QAAQ,QAAQ,QAAQ,GAAG;AAC7B,iBAAS,KAAK,SAAS,eAAe;AACtC;AAAA,MACF;AACA,gBAAU,QAAQ;AAAA,IACpB;AAAA,EACF,CAAC;AACH;AAEO,SAAS,QAAQ,UAAkB,MAAiB;AACzD,QAAM,eAAe,UAAU,IAAI,KAAK;AAExC,MAAI,CAAC,cAAc;AACjB;AAAA,EACF;AAEA,eAAa,QAAQ,CAAC,aAAa,SAAS,GAAG,IAAI,CAAC;AACtD;AAEO,SAAS,UAAU,OAAe,UAAyB;AAChE,QAAM,eAAe,UAAU,IAAI,KAAK,KAAK,CAAC;AAC9C,eAAa,KAAK,QAAQ;AAC1B,YAAU,IAAI,OAAO,YAAY;AACnC;AAEO,SAAS,WAAW,MAAe;AACxC,SAAO,KAAK,sBAAsB;AACpC;AAEO,SAAS,aAAa,MAAe;AAC1C,SAAO,KAAK;AACd;;;ACnKO,IAAM,gBAAgB;AAAA,EAC3B,KAAK;AAAA,EACL;AAAA,EACA,GAAG,QAA4B,MAAc,IAA4B;AACvE,aAAS,QAAQ,MAAM,EAAE;AACzB,WAAO;AAAA,EACT;AAAA,EACA,SAAS,QAA4B,UAAkB,MAAc,IAA4B;AAC/F,kBAAc,QAAQ,UAAU,MAAM,EAAE;AACxC,WAAO;AAAA,EACT;AAAA,EACA,QAAQ,UAAkB,MAAiB;AACzC,YAAQ,OAAO,GAAG,IAAI;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,sBAAsB;AACpC,SAAO;AACT;;;ACtBO,IAAM,mBAAmB,CAAC,SAAS,OAAO;AAI1C,IAAM,0BAA0C;AAEhD,SAAS,wBAAwB,QAAiC;AACvE,MAAI,WAAW,SAAS;AACtB,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;ACZO,IAAM,sBAAsB;AAAA,EAC3B,yCAAyC;AAAA,IACrC,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,iCAAiC;AAAA,IAC7B,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,qCAAqC;AAAA,IACjC,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,eAAe;AAAA,IACX,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,uEAAuE;AAAA,IACnE,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,mBAAmB;AAAA,IACf,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,iCAAiC;AAAA,IAC7B,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,iCAAiC;AAAA,IAC7B,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,iBAAiB;AAAA,IACb,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,+BAA+B;AAAA,IAC3B,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,6CAA6C;AAAA,IACzC,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,+BAA+B;AAAA,IAC3B,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,+CAA+C;AAAA,IAC3C,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,mBAAmB;AAAA,IACf,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,OAAO;AAAA,IACH,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,WAAW;AAAA,IACP,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,wBAAwB;AAAA,IACpB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,wCAAwC;AAAA,IACpC,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,4BAA4B;AAAA,IACxB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,4BAA4B;AAAA,IACxB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,sCAAsC;AAAA,IAClC,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,oBAAoB;AAAA,IAChB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,uBAAuB;AAAA,IACnB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,kDAAkD;AAAA,IAC9C,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,uBAAuB;AAAA,IACnB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,mDAAmD;AAAA,IAC/C,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,wBAAwB;AAAA,IACpB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,oDAAoD;AAAA,IAChD,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,sBAAsB;AAAA,IAClB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,kDAAkD;AAAA,IAC9C,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,oCAAoC;AAAA,IAChC,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,gCAAgC;AAAA,IAC5B,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,gCAAgC;AAAA,IAC5B,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,oCAAoC;AAAA,IAChC,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,gCAAgC;AAAA,IAC5B,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,sBAAsB;AAAA,IAClB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,sBAAsB;AAAA,IAClB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,sBAAsB;AAAA,IAClB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,sBAAsB;AAAA,IAClB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,sBAAsB;AAAA,IAClB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,sBAAsB;AAAA,IAClB,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,gBAAgB;AAAA,IACZ,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,aAAa;AAAA,IACT,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AAAA,EACA,oDAAoD;AAAA,IAChD,OAAO;AAAA,MACH,KAAK;AAAA,MACL,KAAK;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,MACJ,SAAS;AAAA,MACT,UAAU;AAAA,IACd;AAAA,EACJ;AACJ;;;ACvbJ,IAAI,sBAA8C;AAAA,EAChD,WAAW,kBAAkB;AAAA,EAC7B,aAAa,kBAAkB;AACjC;AAEO,SAAS,oBAAoB,QAA8C;AAChF,wBAAsB;AAAA,IACpB,WAAW,OAAO;AAAA,IAClB,aAAa,OAAO;AAAA,EACtB;AACF;AAEO,SAAS,wBAAwB,UAAkB,YAAY,OAAe;AACnF,QAAM,qBACJ,aAAa,SAAS,YAAY,EAAE,SAAS,MAAM,IAC/C,GAAG,SAAS,MAAM,GAAG,EAAE,CAAC,SACxB;AAEN,QAAM,SAAS,oBAAoB,kBAAkB;AACrD,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AAEA,QAAM,IAAI,MAAM,uCAAuC,kBAAkB,IAAI;AAC/E;","names":["eventHandler","isArray","isString","result","isArray","isString"]}