glass-easel 0.1.0 → 0.2.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/dist/glass_easel.all.js +1 -1
- package/dist/glass_easel.all.js.map +1 -1
- package/dist/glass_easel.domlike.global.js +1 -1
- package/dist/glass_easel.domlike.global.js.map +1 -1
- package/dist/types/src/backend/backend_protocol.d.ts +57 -35
- package/dist/types/src/backend/backend_protocol.d.ts.map +1 -1
- package/dist/types/src/backend/composed_backend_protocol.d.ts +34 -22
- package/dist/types/src/backend/composed_backend_protocol.d.ts.map +1 -1
- package/dist/types/src/backend/domlike_backend_protocol.d.ts +31 -7
- package/dist/types/src/backend/domlike_backend_protocol.d.ts.map +1 -1
- package/dist/types/src/backend/mode.d.ts +21 -2
- package/dist/types/src/backend/mode.d.ts.map +1 -1
- package/dist/types/src/backend/suggested_backend_protocol.d.ts +3 -3
- package/dist/types/src/behavior.d.ts +19 -13
- package/dist/types/src/behavior.d.ts.map +1 -1
- package/dist/types/src/class_list.d.ts +6 -2
- package/dist/types/src/class_list.d.ts.map +1 -1
- package/dist/types/src/component.d.ts +42 -8
- package/dist/types/src/component.d.ts.map +1 -1
- package/dist/types/src/component_params.d.ts +17 -20
- package/dist/types/src/component_params.d.ts.map +1 -1
- package/dist/types/src/component_space.d.ts +55 -8
- package/dist/types/src/component_space.d.ts.map +1 -1
- package/dist/types/src/data_path.d.ts.map +1 -1
- package/dist/types/src/data_proxy.d.ts.map +1 -1
- package/dist/types/src/element.d.ts +112 -22
- package/dist/types/src/element.d.ts.map +1 -1
- package/dist/types/src/element_iterator.d.ts +1 -1
- package/dist/types/src/element_iterator.d.ts.map +1 -1
- package/dist/types/src/event.d.ts +5 -4
- package/dist/types/src/event.d.ts.map +1 -1
- package/dist/types/src/external_shadow_tree.d.ts.map +1 -1
- package/dist/types/src/func_arr.d.ts.map +1 -1
- package/dist/types/src/global_options.d.ts +9 -0
- package/dist/types/src/global_options.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +20 -20
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/mutation_observer.d.ts +4 -4
- package/dist/types/src/mutation_observer.d.ts.map +1 -1
- package/dist/types/src/native_node.d.ts +4 -1
- package/dist/types/src/native_node.d.ts.map +1 -1
- package/dist/types/src/node.d.ts +2 -3
- package/dist/types/src/node.d.ts.map +1 -1
- package/dist/types/src/relation.d.ts +1 -2
- package/dist/types/src/relation.d.ts.map +1 -1
- package/dist/types/src/render.d.ts.map +1 -1
- package/dist/types/src/selector.d.ts.map +1 -1
- package/dist/types/src/shadow_root.d.ts +70 -32
- package/dist/types/src/shadow_root.d.ts.map +1 -1
- package/dist/types/src/template_engine.d.ts +40 -2
- package/dist/types/src/template_engine.d.ts.map +1 -1
- package/dist/types/src/text_node.d.ts +14 -2
- package/dist/types/src/text_node.d.ts.map +1 -1
- package/dist/types/src/tmpl/index.d.ts +2 -1
- package/dist/types/src/tmpl/index.d.ts.map +1 -1
- package/dist/types/src/tmpl/native_rendering.d.ts.map +1 -1
- package/dist/types/src/tmpl/proc_gen_wrapper.d.ts +17 -8
- package/dist/types/src/tmpl/proc_gen_wrapper.d.ts.map +1 -1
- package/dist/types/src/tmpl/proc_gen_wrapper_dom.d.ts +2 -2
- package/dist/types/src/tmpl/proc_gen_wrapper_dom.d.ts.map +1 -1
- package/dist/types/src/tmpl/range_list_diff.d.ts.map +1 -1
- package/dist/types/src/trait_behaviors.d.ts.map +1 -1
- package/dist/types/src/virtual_node.d.ts +2 -2
- package/dist/types/src/virtual_node.d.ts.map +1 -1
- package/dist/types/tests/base/composed_backend.d.ts +123 -0
- package/dist/types/tests/base/composed_backend.d.ts.map +1 -0
- package/dist/types/tests/base/env.d.ts +2 -1
- package/dist/types/tests/base/env.d.ts.map +1 -1
- package/dist/types/tests/base/match.d.ts.map +1 -1
- package/guide/zh_CN/advanced/component_filter.md +1 -1
- package/guide/zh_CN/advanced/component_space.md +29 -1
- package/guide/zh_CN/appendix/backend_protocol.md +11 -1
- package/guide/zh_CN/basic/component.md +17 -0
- package/guide/zh_CN/data_management/data_observer.md +6 -4
- package/guide/zh_CN/index.md +1 -1
- package/guide/zh_CN/interaction/behavior.md +1 -1
- package/guide/zh_CN/interaction/slot.md +2 -2
- package/guide/zh_CN/interaction/template_import.md +49 -1
- package/jest.config.js +1 -4
- package/jest.unit.config.js +1 -3
- package/package.json +2 -2
- package/src/backend/backend_protocol.ts +149 -64
- package/src/backend/composed_backend_protocol.ts +102 -48
- package/src/backend/domlike_backend_protocol.ts +308 -118
- package/src/backend/mode.ts +24 -2
- package/src/backend/suggested_backend_protocol.ts +13 -13
- package/src/behavior.ts +264 -222
- package/src/class_list.ts +56 -38
- package/src/component.ts +311 -235
- package/src/component_params.ts +152 -202
- package/src/component_space.ts +138 -73
- package/src/data_path.ts +16 -8
- package/src/data_proxy.ts +106 -108
- package/src/element.ts +1344 -596
- package/src/element_iterator.ts +26 -45
- package/src/event.ts +104 -92
- package/src/external_shadow_tree.ts +2 -7
- package/src/func_arr.ts +16 -21
- package/src/global_options.ts +52 -71
- package/src/index.ts +33 -77
- package/src/mutation_observer.ts +35 -47
- package/src/native_node.ts +58 -30
- package/src/node.ts +12 -36
- package/src/relation.ts +68 -107
- package/src/render.ts +3 -9
- package/src/selector.ts +2 -11
- package/src/shadow_root.ts +594 -374
- package/src/template_engine.ts +50 -33
- package/src/text_node.ts +38 -46
- package/src/tmpl/index.ts +54 -36
- package/src/tmpl/native_rendering.ts +23 -32
- package/src/tmpl/proc_gen_wrapper.ts +351 -235
- package/src/tmpl/proc_gen_wrapper_dom.ts +32 -49
- package/src/tmpl/range_list_diff.ts +40 -40
- package/src/trait_behaviors.ts +7 -8
- package/src/virtual_node.ts +17 -29
- package/tests/backend/domlike.test.ts +22 -19
- package/tests/base/composed_backend.ts +583 -0
- package/tests/base/env.ts +9 -4
- package/tests/base/match.ts +118 -80
- package/tests/core/backend.test.ts +34 -25
- package/tests/core/behavior.test.ts +153 -84
- package/tests/core/component_space.test.ts +78 -22
- package/tests/core/data_update.test.ts +239 -61
- package/tests/core/misc.test.ts +277 -104
- package/tests/core/placeholder.test.ts +232 -4
- package/tests/core/slot.test.ts +163 -100
- package/tests/core/trait_behaviors.test.ts +18 -12
- package/tests/legacy/behavior.test.js +86 -66
- package/tests/legacy/component.test.js +1451 -1247
- package/tests/legacy/data_path.test.js +47 -49
- package/tests/legacy/data_proxy.test.js +169 -161
- package/tests/legacy/element_iterator.test.js +111 -60
- package/tests/legacy/event.test.js +481 -280
- package/tests/legacy/external.test.js +184 -129
- package/tests/legacy/extra_info.test.js +46 -28
- package/tests/legacy/generics.test.js +48 -43
- package/tests/legacy/mutation_observer.test.js +37 -36
- package/tests/legacy/relation.test.js +178 -74
- package/tests/legacy/selector.test.js +100 -60
- package/tests/legacy/slot.test.js +136 -72
- package/tests/legacy/virtual.test.js +236 -94
- package/tests/tmpl/binding_map.test.ts +38 -19
- package/tests/tmpl/event.test.ts +120 -8
- package/tests/tmpl/expression.test.ts +163 -133
- package/tests/tmpl/lvalue.test.ts +92 -15
- package/tests/tmpl/native_rendering.test.ts +20 -4
- package/tests/tmpl/structure.test.ts +859 -330
- package/tests/types/chaining.test.ts +31 -23
- package/tests/types/createElement.test.ts +11 -9
- package/tests/types/definition.test.ts +15 -1
- package/webpack.config.js +30 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glass_easel.all.js","mappings":"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","sources":["webpack://glass-easel/webpack/bootstrap","webpack://glass-easel/webpack/runtime/define property getters","webpack://glass-easel/webpack/runtime/hasOwnProperty shorthand","webpack://glass-easel/webpack/runtime/make namespace object","webpack://glass-easel/./src/backend/backend_protocol.ts","webpack://glass-easel/./src/backend/mode.ts","webpack://glass-easel/./src/backend/composed_backend_protocol.ts","webpack://glass-easel/./src/backend/domlike_backend_protocol.ts","webpack://glass-easel/./src/class_list.ts","webpack://glass-easel/./src/data_proxy.ts","webpack://glass-easel/./src/data_path.ts","webpack://glass-easel/./src/data_utils.ts","webpack://glass-easel/./src/event.ts","webpack://glass-easel/./src/selector.ts","webpack://glass-easel/./src/element.ts","webpack://glass-easel/./src/virtual_node.ts","webpack://glass-easel/./src/relation.ts","webpack://glass-easel/./src/component_params.ts","webpack://glass-easel/./src/trait_behaviors.ts","webpack://glass-easel/./src/behavior.ts","webpack://glass-easel/./src/component.ts","webpack://glass-easel/./src/tmpl/index.ts","webpack://glass-easel/./src/component_space.ts","webpack://glass-easel/./src/tmpl/range_list_diff.ts","webpack://glass-easel/./src/tmpl/proc_gen_wrapper.ts","webpack://glass-easel/./src/tmpl/proc_gen_wrapper_dom.ts","webpack://glass-easel/./src/tmpl/native_rendering.ts","webpack://glass-easel/./src/global_options.ts","webpack://glass-easel/./src/func_arr.ts","webpack://glass-easel/./src/shadow_root.ts","webpack://glass-easel/./src/mutation_observer.ts","webpack://glass-easel/./src/text_node.ts","webpack://glass-easel/./src/native_node.ts","webpack://glass-easel/./src/element_iterator.ts","webpack://glass-easel/./src/node.ts","webpack://glass-easel/./src/render.ts","webpack://glass-easel/./src/index.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* eslint-disable class-methods-use-this */\nimport { safeCallback, } from '../func_arr';\nvar EmptyBackendElementType;\n(function (EmptyBackendElementType) {\n EmptyBackendElementType[EmptyBackendElementType[\"Fragment\"] = 0] = \"Fragment\";\n EmptyBackendElementType[EmptyBackendElementType[\"Element\"] = 1] = \"Element\";\n EmptyBackendElementType[EmptyBackendElementType[\"TextNode\"] = 2] = \"TextNode\";\n EmptyBackendElementType[EmptyBackendElementType[\"Component\"] = 3] = \"Component\";\n EmptyBackendElementType[EmptyBackendElementType[\"VirtualNode\"] = 4] = \"VirtualNode\";\n})(EmptyBackendElementType || (EmptyBackendElementType = {}));\n/** An empty backend implementation */\nvar EmptyBackendContext = /** @class */ (function () {\n function EmptyBackendContext() {\n this.mode = 1 /* BackendMode.Shadow */;\n this._$styleSheetIdInc = 1;\n this._$renderCallbacks = null;\n this._$rootNode = new EmptyBackendElement(3 /* EmptyBackendElementType.Component */);\n }\n EmptyBackendContext.prototype.destroy = function () {\n // empty\n };\n EmptyBackendContext.prototype.getWindowWidth = function () {\n return 1;\n };\n EmptyBackendContext.prototype.getWindowHeight = function () {\n return 1;\n };\n EmptyBackendContext.prototype.getDevicePixelRatio = function () {\n return 1;\n };\n EmptyBackendContext.prototype.getTheme = function () {\n return 'light';\n };\n EmptyBackendContext.prototype.registerStyleSheetContent = function (_path, _content) {\n // empty\n };\n EmptyBackendContext.prototype.appendStyleSheetPath = function (_path, _styleScope) {\n var id = this._$styleSheetIdInc;\n this._$styleSheetIdInc += 1;\n return id;\n };\n EmptyBackendContext.prototype.disableStyleSheet = function (_index) {\n // empty\n };\n EmptyBackendContext.prototype.render = function (cb) {\n var _this = this;\n if (this._$renderCallbacks) {\n this._$renderCallbacks.push(cb);\n }\n else {\n var callbacks_1 = this._$renderCallbacks = [cb];\n setTimeout(function () {\n _this._$renderCallbacks = null;\n callbacks_1.forEach(function (cb) {\n safeCallback('Render Callback', cb, _this, [null]);\n });\n }, 16);\n }\n };\n EmptyBackendContext.prototype.getRootNode = function () {\n return this._$rootNode;\n };\n EmptyBackendContext.prototype.createFragment = function () {\n return new EmptyBackendElement(0 /* EmptyBackendElementType.Fragment */);\n };\n EmptyBackendContext.prototype.onEvent = function (_listener) {\n // empty\n };\n return EmptyBackendContext;\n}());\nexport { EmptyBackendContext };\n/** An element for empty backend implementation */\nvar EmptyBackendElement = /** @class */ (function () {\n function EmptyBackendElement(type) {\n this.__wxElement = undefined;\n if (type === 3 /* EmptyBackendElementType.Component */) {\n this._$shadowRoot = new EmptyBackendShadowRootContext();\n }\n else {\n this._$shadowRoot = null;\n }\n }\n EmptyBackendElement.prototype.release = function () {\n // empty\n };\n EmptyBackendElement.prototype.associateValue = function (_v) {\n // empty\n };\n EmptyBackendElement.prototype.getShadowRoot = function () {\n return this._$shadowRoot || undefined;\n };\n EmptyBackendElement.prototype.appendChild = function (_child) {\n // empty\n };\n EmptyBackendElement.prototype.removeChild = function (_child, _index) {\n // empty\n };\n EmptyBackendElement.prototype.insertBefore = function (_child, _before, _index) {\n // empty\n };\n EmptyBackendElement.prototype.replaceChild = function (_child, _oldChild, _index) {\n // empty\n };\n EmptyBackendElement.prototype.spliceBefore = function (_before, _deleteCount, _list) {\n // empty\n };\n EmptyBackendElement.prototype.spliceAppend = function (_list) {\n // empty\n };\n EmptyBackendElement.prototype.spliceRemove = function (_before, _deleteCount) {\n // empty\n };\n EmptyBackendElement.prototype.setId = function (_id) {\n // empty\n };\n EmptyBackendElement.prototype.setSlotName = function (_name) {\n // empty\n };\n EmptyBackendElement.prototype.setSlot = function (_name, _$inheritSlots) {\n // empty\n };\n EmptyBackendElement.prototype.setInheritSlots = function () {\n // empty\n };\n EmptyBackendElement.prototype.setStyleScope = function (_styleScope) {\n // empty\n };\n EmptyBackendElement.prototype.setStyle = function (_styleText) {\n // empty\n };\n EmptyBackendElement.prototype.addClass = function (_elementClass, _styleScope) {\n // empty\n };\n EmptyBackendElement.prototype.removeClass = function (_elementClass, _styleScope) {\n // empty\n };\n EmptyBackendElement.prototype.clearClasses = function () {\n // empty\n };\n EmptyBackendElement.prototype.setAttribute = function (_name, _value) {\n // empty\n };\n EmptyBackendElement.prototype.removeAttribute = function (_name) {\n // empty\n };\n EmptyBackendElement.prototype.setText = function (_content) {\n // empty\n };\n EmptyBackendElement.prototype.getBoundingClientRect = function (cb) {\n setTimeout(function () {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n };\n EmptyBackendElement.prototype.getScrollOffset = function (cb) {\n setTimeout(function () {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n };\n EmptyBackendElement.prototype.setEventDefaultPrevented = function (_type, _enabled) {\n // empty\n };\n return EmptyBackendElement;\n}());\nexport { EmptyBackendElement };\n/** A shadow root for empty backend implementation */\nvar EmptyBackendShadowRootContext = /** @class */ (function () {\n function EmptyBackendShadowRootContext() {\n this._$rootNode = new EmptyBackendElement(4 /* EmptyBackendElementType.VirtualNode */);\n }\n EmptyBackendShadowRootContext.prototype.getRootNode = function () {\n return this._$rootNode;\n };\n EmptyBackendShadowRootContext.prototype.createElement = function (_tagName) {\n return new EmptyBackendElement(1 /* EmptyBackendElementType.Element */);\n };\n EmptyBackendShadowRootContext.prototype.createTextNode = function (_content) {\n return new EmptyBackendElement(2 /* EmptyBackendElementType.TextNode */);\n };\n EmptyBackendShadowRootContext.prototype.createComponent = function (_tagName, _isVirtual) {\n return new EmptyBackendElement(3 /* EmptyBackendElementType.Component */);\n };\n EmptyBackendShadowRootContext.prototype.createVirtualNode = function () {\n return new EmptyBackendElement(4 /* EmptyBackendElementType.VirtualNode */);\n };\n return EmptyBackendShadowRootContext;\n}());\nexport { EmptyBackendShadowRootContext };\n","export var BM = {\n DYNAMIC: true,\n SHADOW: false,\n COMPOSED: false,\n DOMLIKE: false,\n};\nexport var BackendMode;\n(function (BackendMode) {\n BackendMode[BackendMode[\"Shadow\"] = 1] = \"Shadow\";\n BackendMode[BackendMode[\"Composed\"] = 2] = \"Composed\";\n BackendMode[BackendMode[\"Domlike\"] = 3] = \"Domlike\";\n})(BackendMode || (BackendMode = {}));\n","/* eslint-disable class-methods-use-this */\nimport { safeCallback, } from '../func_arr';\n/** An empty backend implementation */\nvar EmptyComposedBackendContext = /** @class */ (function () {\n function EmptyComposedBackendContext() {\n this.mode = 2 /* BackendMode.Composed */;\n this._$styleSheetIdInc = 1;\n this._$renderCallbacks = null;\n this._$rootNode = new EmptyComposedBackendElement();\n }\n EmptyComposedBackendContext.prototype.destroy = function () {\n // empty\n };\n EmptyComposedBackendContext.prototype.getWindowWidth = function () {\n return 1;\n };\n EmptyComposedBackendContext.prototype.getWindowHeight = function () {\n return 1;\n };\n EmptyComposedBackendContext.prototype.getDevicePixelRatio = function () {\n return 1;\n };\n EmptyComposedBackendContext.prototype.getTheme = function () {\n return 'light';\n };\n EmptyComposedBackendContext.prototype.registerStyleSheetContent = function (_path, _content) {\n // empty\n };\n EmptyComposedBackendContext.prototype.appendStyleSheetPath = function (_path, _styleScope) {\n var id = this._$styleSheetIdInc;\n this._$styleSheetIdInc += 1;\n return id;\n };\n EmptyComposedBackendContext.prototype.disableStyleSheet = function (_index) {\n // empty\n };\n EmptyComposedBackendContext.prototype.render = function (cb) {\n var _this = this;\n if (this._$renderCallbacks) {\n this._$renderCallbacks.push(cb);\n }\n else {\n var callbacks_1 = this._$renderCallbacks = [cb];\n setTimeout(function () {\n _this._$renderCallbacks = null;\n callbacks_1.forEach(function (cb) {\n safeCallback('Render Callback', cb, _this, [null]);\n });\n }, 16);\n }\n };\n EmptyComposedBackendContext.prototype.getRootNode = function () {\n return this._$rootNode;\n };\n EmptyComposedBackendContext.prototype.createElement = function (_tagName) {\n return new EmptyComposedBackendElement();\n };\n EmptyComposedBackendContext.prototype.createTextNode = function (_tagName) {\n return new EmptyComposedBackendElement();\n };\n EmptyComposedBackendContext.prototype.createFragment = function () {\n return new EmptyComposedBackendElement();\n };\n EmptyComposedBackendContext.prototype.onEvent = function (_listener) {\n // empty\n };\n return EmptyComposedBackendContext;\n}());\nexport { EmptyComposedBackendContext };\n/** An element for empty backend implementation */\nvar EmptyComposedBackendElement = /** @class */ (function () {\n function EmptyComposedBackendElement() {\n this.__wxElement = undefined;\n }\n EmptyComposedBackendElement.prototype.release = function () {\n // empty\n };\n EmptyComposedBackendElement.prototype.associateValue = function (_v) {\n // empty\n };\n EmptyComposedBackendElement.prototype.appendChild = function (_child) {\n // empty\n };\n EmptyComposedBackendElement.prototype.removeChild = function (_child, _index) {\n // empty\n };\n EmptyComposedBackendElement.prototype.insertBefore = function (_child, _before, _index) {\n // empty\n };\n EmptyComposedBackendElement.prototype.replaceChild = function (_child, _oldChild, _index) {\n // empty\n };\n EmptyComposedBackendElement.prototype.spliceBefore = function (_before, _deleteCount, _list) {\n // empty\n };\n EmptyComposedBackendElement.prototype.spliceAppend = function (_list) {\n // empty\n };\n EmptyComposedBackendElement.prototype.spliceRemove = function (_before, _deleteCount) {\n // empty\n };\n EmptyComposedBackendElement.prototype.setId = function (_id) {\n // empty\n };\n EmptyComposedBackendElement.prototype.setStyleScope = function (_styleScope) {\n // empty\n };\n EmptyComposedBackendElement.prototype.setStyle = function (_styleText) {\n // empty\n };\n EmptyComposedBackendElement.prototype.addClass = function (_elementClass, _styleScope) {\n // empty\n };\n EmptyComposedBackendElement.prototype.removeClass = function (_elementClass, _styleScope) {\n // empty\n };\n EmptyComposedBackendElement.prototype.clearClasses = function () {\n // empty\n };\n EmptyComposedBackendElement.prototype.setAttribute = function (_name, _value) {\n // empty\n };\n EmptyComposedBackendElement.prototype.removeAttribute = function (_name) {\n // empty\n };\n EmptyComposedBackendElement.prototype.setText = function (_content) {\n // empty\n };\n EmptyComposedBackendElement.prototype.getBoundingClientRect = function (cb) {\n setTimeout(function () {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n };\n EmptyComposedBackendElement.prototype.getScrollOffset = function (cb) {\n setTimeout(function () {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n };\n EmptyComposedBackendElement.prototype.setEventDefaultPrevented = function (_type, _enabled) {\n // empty\n };\n return EmptyComposedBackendElement;\n}());\nexport { EmptyComposedBackendElement };\n","/* eslint-disable class-methods-use-this */\n/* global window, document */\nimport { safeCallback, } from '../func_arr';\nvar DELEGATE_EVENTS = [\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'mousedown',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'click',\n];\nvar CurrentWindowBackendContext = /** @class */ (function () {\n function CurrentWindowBackendContext() {\n this.mode = 3 /* BackendMode.Domlike */;\n this.document = document;\n this._$styleSheets = [];\n this._$styleSheetRegistry = Object.create(null);\n this._$delegatedEventListeners = Object.create(null);\n this._$elementEventListeners = new WeakMap();\n this._$triggedEvents = new WeakSet();\n }\n CurrentWindowBackendContext.prototype.destroy = function () {\n /* empty */\n };\n CurrentWindowBackendContext.prototype.getWindowWidth = function () {\n return document.documentElement.clientWidth;\n };\n CurrentWindowBackendContext.prototype.getWindowHeight = function () {\n return document.documentElement.clientHeight;\n };\n CurrentWindowBackendContext.prototype.getDevicePixelRatio = function () {\n return window.devicePixelRatio;\n };\n CurrentWindowBackendContext.prototype.getTheme = function () {\n return 'light';\n };\n CurrentWindowBackendContext.prototype.registerStyleSheetContent = function (path, content) {\n this._$styleSheetRegistry[path] = String(content);\n };\n CurrentWindowBackendContext.prototype.appendStyleSheetPath = function (path, styleScope) {\n var styleText = this._$styleSheetRegistry[path];\n if (styleText === undefined)\n throw new Error(\"No style sheet registry \\\"\".concat(path, \"\\\"\"));\n var s = document.createElement('style');\n s.innerText = styleText;\n if (styleScope !== undefined)\n s.setAttribute('wx-style-scope', String(styleScope));\n document.head.appendChild(s);\n var id = this._$styleSheets.length;\n this._$styleSheets.push(s);\n return id;\n };\n CurrentWindowBackendContext.prototype.disableStyleSheet = function (index) {\n var ss = this._$styleSheets[index];\n if (ss)\n document.head.removeChild(ss);\n };\n CurrentWindowBackendContext.prototype.render = function (cb) {\n var _this = this;\n window.requestAnimationFrame(function () {\n safeCallback('Render Callback', cb, _this, [null]);\n });\n };\n CurrentWindowBackendContext.prototype.getRootNode = function () {\n return document.body;\n };\n CurrentWindowBackendContext.prototype.onEvent = function (listener) {\n if (!this._$eventListener) {\n this._$initEvent();\n }\n this._$eventListener = listener;\n };\n CurrentWindowBackendContext.prototype._$getEventDetail = function (ev) {\n var detail = {};\n var e = ev;\n while (Object.getPrototypeOf(e) !== Event.prototype) {\n var keys = Object.keys(e);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n if (typeof ev[key] === 'function')\n continue;\n detail[key] = ev[key];\n }\n e = Object.getPrototypeOf(e);\n }\n return detail;\n };\n CurrentWindowBackendContext.prototype._$trigger = function (ev, type, detail, bubbles, composed) {\n if (!this._$eventListener)\n return;\n var target = ev.target;\n var bubbleStatus = this._$eventListener(target, type, detail, {\n originalEvent: ev,\n bubbles: bubbles,\n composed: composed,\n });\n if (bubbleStatus === 1 /* EventBubbleStatus.NoDefault */) {\n ev.preventDefault();\n }\n };\n CurrentWindowBackendContext.prototype._$initEvent = function () {\n var _this = this;\n var TAP_DIST = 10;\n var possibleTaps = Object.create(null);\n var SIMULATED_MOUSE_ID = -1;\n var disableMouseEvents = false;\n var handleTapStart = function (_ev, t) {\n possibleTaps[t.identifier] = {\n x: t.clientX,\n y: t.clientY,\n };\n };\n var handleTapMove = function (ev, t) {\n var id = t.identifier;\n if (possibleTaps[id]) {\n var u = possibleTaps[id];\n if (Math.abs(u.x - t.clientX) > TAP_DIST\n || Math.abs(u.y - t.clientY) > TAP_DIST) {\n delete possibleTaps[id];\n _this._$trigger(ev, 'canceltap', u, true, true);\n }\n }\n };\n var handleTapEnd = function (ev, t) {\n var id = t.identifier;\n if (possibleTaps[id]) {\n var u = possibleTaps[id];\n delete possibleTaps[id];\n if (Math.abs(u.x - t.clientX) > TAP_DIST\n || Math.abs(u.y - t.clientY) > TAP_DIST) {\n _this._$trigger(ev, 'canceltap', u, true, true);\n }\n else {\n _this._$trigger(ev, 'tap', u, true, true);\n }\n }\n };\n var handleTapCancel = function (ev, t) {\n var id = t.identifier;\n if (possibleTaps[id]) {\n var u = possibleTaps[id];\n delete possibleTaps[id];\n _this._$trigger(ev, 'canceltap', u, true, true);\n }\n };\n document.body.addEventListener('touchstart', function (ev) {\n _this._$trigger(ev, 'touchstart', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n disableMouseEvents = true;\n var changedTouches = ev.changedTouches;\n for (var i = 0; i < changedTouches.length; i += 1) {\n handleTapStart(ev, changedTouches[i]);\n }\n }, { capture: true });\n document.body.addEventListener('touchmove', function (ev) {\n _this._$trigger(ev, 'touchmove', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n var changedTouches = ev.changedTouches;\n for (var i = 0; i < changedTouches.length; i += 1) {\n handleTapMove(ev, changedTouches[i]);\n }\n }, { capture: true });\n document.body.addEventListener('touchend', function (ev) {\n _this._$trigger(ev, 'touchend', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n var changedTouches = ev.changedTouches;\n for (var i = 0; i < changedTouches.length; i += 1) {\n handleTapEnd(ev, changedTouches[i]);\n }\n }, { capture: true });\n document.body.addEventListener('touchcancel', function (ev) {\n _this._$trigger(ev, 'touchcancel', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n var changedTouches = ev.changedTouches;\n for (var i = 0; i < changedTouches.length; i += 1) {\n handleTapCancel(ev, changedTouches[i]);\n }\n }, { capture: true });\n document.body.addEventListener('mousedown', function (ev) {\n _this._$trigger(ev, 'mousedown', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n if (disableMouseEvents)\n return;\n handleTapStart(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n }, { capture: true });\n document.body.addEventListener('mousemove', function (ev) {\n _this._$trigger(ev, 'mousemove', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n if (disableMouseEvents)\n return;\n handleTapMove(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n }, { capture: true });\n document.body.addEventListener('mouseup', function (ev) {\n _this._$trigger(ev, 'mouseup', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n if (disableMouseEvents)\n return;\n handleTapEnd(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n }, { capture: true });\n var listeners = this._$delegatedEventListeners;\n listeners.touchstart = true;\n listeners.touchmove = true;\n listeners.touchend = true;\n listeners.mousedown = true;\n listeners.mousemove = true;\n listeners.mouseup = true;\n };\n CurrentWindowBackendContext.prototype.setElementEventDefaultPrevented = function (element, type, _enabled) {\n var _this = this;\n // for non-passive events,\n // the default-prevented status can also be found in `EventBubbleStatus` ,\n // so there is nothing to do with non-passive events.\n if (!element)\n return;\n var shouldDelegate = DELEGATE_EVENTS.includes(type);\n if (shouldDelegate) {\n if (this._$delegatedEventListeners[type])\n return;\n this._$delegatedEventListeners[type] = true;\n document.body.addEventListener(type, function (ev) {\n _this._$trigger(ev, type, _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n }, { capture: true });\n return;\n }\n if (!this._$elementEventListeners.has(element)) {\n this._$elementEventListeners.set(element, Object.create(null));\n }\n var listeners = this._$elementEventListeners.get(element);\n if (listeners[type])\n return;\n listeners[type] = true;\n element.addEventListener(type, function (ev) {\n if (_this._$triggedEvents.has(ev))\n return;\n _this._$triggedEvents.add(ev);\n _this._$trigger(ev, type, _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n });\n };\n return CurrentWindowBackendContext;\n}());\nexport { CurrentWindowBackendContext };\n","import { BM, } from './backend/mode';\nimport { Element, } from '.';\nimport { MutationObserverTarget } from './mutation_observer';\nvar CLASS_NAME_REG_EXP = /(~|\\^+)?-?[_0-9a-z][-_0-9a-z]*/ig;\n/**\n * Style scope manager\n */\nvar StyleScopeManager = /** @class */ (function () {\n function StyleScopeManager() {\n /** @internal */\n this._$names = [''];\n }\n StyleScopeManager.globalScope = function () {\n return 0;\n };\n StyleScopeManager.prototype.register = function (name) {\n var ret = this._$names.length;\n this._$names.push(name);\n return ret;\n };\n StyleScopeManager.prototype.queryName = function (id) {\n return this._$names[id];\n };\n return StyleScopeManager;\n}());\nexport { StyleScopeManager };\n/**\n * Class manager for non-virtual `Element`\n */\nvar ClassList = /** @class */ (function () {\n function ClassList(elem, externalNameAlias) {\n var _a, _b;\n /** @internal */\n this._$aliasDirty = false;\n /** @internal */\n this._$rawNames = [];\n /** @internal */\n this._$hasResolvedNames = false;\n this._$elem = elem;\n var ownerComp = (_a = elem.ownerShadowRoot) === null || _a === void 0 ? void 0 : _a.getHostNode();\n if (ownerComp) {\n var compOptions = ownerComp.getComponentOptions();\n this._$owner = ownerComp.classList;\n this._$defaultScope = compOptions.styleScope;\n this._$extraScope = compOptions.extraStyleScope === null\n ? undefined\n : compOptions.extraStyleScope;\n }\n else {\n this._$owner = null;\n this._$defaultScope = StyleScopeManager.globalScope();\n this._$extraScope = undefined;\n }\n this._$alias = externalNameAlias;\n if (externalNameAlias) {\n var resolved_1 = Object.create(null);\n Object.keys(externalNameAlias).forEach(function (k) {\n resolved_1[k] = null;\n });\n this._$resolvedAlias = resolved_1;\n }\n else {\n this._$resolvedAlias = null;\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && elem.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n this._$prefixManager = (_b = elem.ownerShadowRoot) === null || _b === void 0 ? void 0 : _b.getHostNode().getRootBehavior().ownerSpace.styleScopeManager;\n }\n }\n /** @internal */\n ClassList.prototype._$resolvePrefixes = function (name, cb) {\n var _a;\n var resolvedAlias = (_a = this._$owner) === null || _a === void 0 ? void 0 : _a._$resolvedAlias;\n if (resolvedAlias && resolvedAlias[name] !== undefined) {\n var targets = resolvedAlias[name];\n this._$hasResolvedNames = true;\n if (targets) {\n for (var i = 0; i < targets.length; i += 1) {\n var target = targets[i];\n cb(target.scopeId, target.className);\n }\n }\n }\n else if (name[0] === '~') {\n cb(this._$extraScope, name.slice(1));\n }\n else if (name[0] === '^') {\n var n = name.slice(1);\n var owner = this._$owner;\n while (owner && n[0] === '^') {\n n = n.slice(1);\n owner = owner._$owner;\n }\n var scopeId = owner ? owner._$defaultScope : this._$extraScope;\n cb(scopeId, n);\n }\n else {\n if (this._$extraScope !== undefined) {\n cb(this._$extraScope, name);\n }\n cb(this._$defaultScope, name);\n }\n };\n /** @internal */\n ClassList.prototype._$updateResolvedAliases = function (name) {\n var _this = this;\n var slices = this._$alias[name];\n var resolved = [];\n if (slices) {\n slices.forEach(function (name) {\n _this._$resolvePrefixes(name, function (scopeId, className) {\n resolved.push({\n scopeId: scopeId,\n className: className,\n });\n });\n });\n }\n var changed = false;\n var prevResolved = this._$resolvedAlias[name];\n if (prevResolved) {\n if (prevResolved.length !== resolved.length) {\n changed = true;\n }\n else {\n for (var i = 0; i < prevResolved.length; i += 1) {\n var a = prevResolved[i];\n var b = resolved[i];\n if (a.scopeId !== b.scopeId || a.className !== b.className) {\n changed = true;\n break;\n }\n }\n }\n }\n else if (resolved.length > 0) {\n changed = true;\n }\n this._$resolvedAlias[name] = resolved;\n return changed;\n };\n /** @internal */\n ClassList.prototype._$hasAlias = function (name) {\n if (this._$alias && this._$alias[name] !== undefined) {\n return true;\n }\n return false;\n };\n /** @internal */\n ClassList.prototype._$setAlias = function (name, target) {\n if (this._$alias) {\n var slices = String(target).match(CLASS_NAME_REG_EXP) || null;\n this._$alias[name] = slices;\n var changed = this._$updateResolvedAliases(name);\n if (changed)\n this._$aliasDirty = true;\n }\n };\n /** @internal */\n ClassList.prototype._$spreadAliasUpdate = function () {\n if (this._$aliasDirty) {\n this._$aliasDirty = false;\n var callClassListUpdate_1 = function (elem) {\n var classList = elem.classList;\n if (classList) {\n var alias = classList._$alias;\n if (alias) {\n var changed_1 = false;\n Object.keys(alias).forEach(function (name) {\n if (classList._$updateResolvedAliases(name)) {\n changed_1 = true;\n }\n });\n if (changed_1) {\n var comp_1 = elem;\n if (comp_1._$external === false) {\n callClassListUpdate_1(comp_1.shadowRoot);\n }\n }\n }\n if (classList._$hasResolvedNames) {\n classList._$updateResolvedNames();\n }\n }\n var children = elem.childNodes;\n children.forEach(function (child) {\n if (child instanceof Element)\n callClassListUpdate_1(child);\n });\n };\n var comp = this._$elem;\n if (comp._$external === false) {\n callClassListUpdate_1(comp.shadowRoot);\n }\n }\n };\n /** @internal */\n ClassList.prototype._$updateResolvedNames = function () {\n var _this = this;\n var backendElement = this._$elem.getBackendElement();\n if (!backendElement)\n return;\n this._$hasResolvedNames = false;\n if (BM.DOMLIKE || (BM.DYNAMIC && this._$elem.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n backendElement.setAttribute('class', '');\n }\n else {\n backendElement.clearClasses();\n }\n this._$rawNames.forEach(function (name) {\n _this._$addClassToBackend(name, backendElement);\n });\n };\n /** @internal */\n ClassList.prototype._$classListAdd = function (name, scope, e) {\n var _a;\n if (BM.DOMLIKE || (BM.DYNAMIC && this._$elem.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n var prefix = scope === undefined ? '' : (_a = this._$prefixManager) === null || _a === void 0 ? void 0 : _a.queryName(scope);\n var val = prefix ? \"\".concat(prefix, \"--\").concat(name) : name;\n e.classList.add(val);\n }\n else {\n e\n .addClass(name, scope);\n }\n };\n /** @internal */\n ClassList.prototype._$classListRemove = function (name, scope, e) {\n var _a;\n if (BM.DOMLIKE || (BM.DYNAMIC && this._$elem.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n var prefix = scope && ((_a = this._$prefixManager) === null || _a === void 0 ? void 0 : _a.queryName(scope));\n var val = prefix ? \"\".concat(prefix, \"--\").concat(name) : name;\n e.classList.remove(val);\n }\n else {\n e\n .removeClass(name, scope);\n }\n };\n /** @internal */\n ClassList.prototype._$addClassToBackend = function (name, backendElement) {\n var _this = this;\n this._$resolvePrefixes(name, function (scopeId, className) {\n _this._$classListAdd(className, scopeId, backendElement);\n });\n };\n /** @internal */\n ClassList.prototype._$removeClassFromBackend = function (name, backendElement) {\n var _this = this;\n this._$resolvePrefixes(name, function (scopeId, className) {\n _this._$classListRemove(className, scopeId, backendElement);\n });\n };\n ClassList.prototype.toggle = function (name, force) {\n var _this = this;\n var slices = String(name).match(CLASS_NAME_REG_EXP) || null;\n if (slices) {\n var backendElement_1 = this._$elem.getBackendElement();\n slices.forEach(function (slice) {\n var index = _this._$rawNames.indexOf(name);\n var isAdd;\n if (force === undefined) {\n if (index < 0)\n isAdd = true;\n else\n isAdd = false;\n }\n else {\n isAdd = !!force;\n }\n var changed = false;\n if (isAdd) {\n if (index < 0) {\n _this._$rawNames.push(slice);\n if (backendElement_1)\n _this._$addClassToBackend(slice, backendElement_1);\n changed = true;\n }\n }\n else if (index >= 0) {\n _this._$rawNames.splice(index, 1);\n if (backendElement_1)\n _this._$removeClassFromBackend(slice, backendElement_1);\n changed = true;\n }\n if (changed) {\n var elem = _this._$elem;\n if (elem._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(elem, {\n type: 'properties',\n target: elem,\n attributeName: 'class',\n });\n }\n }\n });\n }\n };\n ClassList.prototype.contains = function (name) {\n for (var i = 0; i < this._$rawNames.length; i += 1) {\n var rn = this._$rawNames[i];\n if (rn[0] === '~') {\n var n = rn.slice(1);\n if (n === name)\n return true;\n }\n else if (rn[0] === '^') {\n var n = rn.slice(1);\n while (n[0] === '^') {\n n = n.slice(1);\n }\n if (n === name)\n return true;\n }\n else {\n if (rn === name)\n return true;\n }\n }\n return false;\n };\n /** Set class string */\n ClassList.prototype.setClassNames = function (names) {\n var n;\n if (names === undefined || names === null)\n n = '';\n else\n n = String(names);\n this._$rawNames = n.match(CLASS_NAME_REG_EXP) || [];\n this._$updateResolvedNames();\n var elem = this._$elem;\n if (elem._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(elem, {\n type: 'properties',\n target: elem,\n attributeName: 'class',\n });\n }\n };\n /** Returns space separated class string */\n ClassList.prototype.getClassNames = function () {\n return this._$rawNames ? this._$rawNames.join(' ') : '';\n };\n return ClassList;\n}());\nexport { ClassList };\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { safeCallback, triggerWarning, } from './func_arr';\nimport { convertValueToType, } from './behavior';\nimport { deepCopy, simpleDeepCopy, } from './data_utils';\nimport { DeepCopyKind, } from './global_options';\nimport { MutationObserverTarget, } from './mutation_observer';\n// eslint-disable-next-line @typescript-eslint/unbound-method\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport var DeepCopyStrategy;\n(function (DeepCopyStrategy) {\n DeepCopyStrategy[DeepCopyStrategy[\"None\"] = 0] = \"None\";\n DeepCopyStrategy[DeepCopyStrategy[\"Simple\"] = 1] = \"Simple\";\n DeepCopyStrategy[DeepCopyStrategy[\"SimpleWithRecursion\"] = 2] = \"SimpleWithRecursion\";\n})(DeepCopyStrategy || (DeepCopyStrategy = {}));\nvar DataGroupObserverTree = /** @class */ (function () {\n function DataGroupObserverTree(propFields) {\n this.observerTree = { sub: {} };\n this.observers = [];\n this.propFields = propFields;\n }\n DataGroupObserverTree.prototype.cloneSub = function () {\n var ret = new DataGroupObserverTree(this.propFields);\n if (this.observers.length > 0) {\n ret.observerTree = simpleDeepCopy(this.observerTree);\n ret.observers = this.observers.slice();\n }\n return ret;\n };\n DataGroupObserverTree.prototype.addObserver = function (func, dataPath) {\n var id = this.observers.length;\n this.observers.push({\n path: dataPath,\n f: func,\n });\n for (var i = 0; i < dataPath.length; i += 1) {\n var singlePath = dataPath[i];\n var cur = this.observerTree;\n var wildcard = false;\n for (var j = 0; j < singlePath.length; j += 1) {\n var pathSlice = singlePath[j];\n if (pathSlice === '**') {\n wildcard = true;\n break;\n }\n if (!cur.sub[pathSlice])\n cur.sub[pathSlice] = { sub: {} };\n cur = cur.sub[pathSlice];\n }\n if (wildcard) {\n if (!cur.wildcard)\n cur.wildcard = [id];\n else\n cur.wildcard.push(id);\n }\n else {\n if (!cur.listener)\n cur.listener = [id];\n else\n cur.listener.push(id);\n }\n }\n };\n return DataGroupObserverTree;\n}());\nexport { DataGroupObserverTree };\nvar callObserver = function (comp, data, path, f) {\n var args = new Array(path.length);\n for (var i = 0; i < path.length; i += 1) {\n var singlePath = path[i];\n var cur = data;\n for (var j = 0; j < singlePath.length; j += 1) {\n var slice = singlePath[j];\n if (slice === '**')\n break;\n if (typeof cur === 'object' && cur !== null) {\n cur = cur[slice];\n }\n else {\n cur = undefined;\n break;\n }\n }\n args[i] = cur;\n }\n safeCallback('Data Observer', f, comp.getMethodCaller(), args, comp || undefined);\n};\nvar dfsMarkTriggerBitOnPath = function (node, observerStatus) {\n if (node.listener) {\n for (var i = 0; i < node.listener.length; i += 1) {\n var observerId = node.listener[i];\n observerStatus[observerId] = true;\n }\n }\n if (node.wildcard) {\n for (var i = 0; i < node.wildcard.length; i += 1) {\n var observerId = node.wildcard[i];\n observerStatus[observerId] = true;\n }\n }\n var keys = Object.keys(node.sub);\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n dfsMarkTriggerBitOnPath(node.sub[k], observerStatus);\n }\n};\nvar markTriggerBitOnPath = function (root, observerStatus, singlePath) {\n var cur = root;\n var found = true;\n for (var i = 0; i < singlePath.length; i += 1) {\n var slice = singlePath[i];\n if (cur.wildcard) {\n var arr = cur.wildcard;\n for (var i_1 = 0; i_1 < arr.length; i_1 += 1) {\n var observerId = arr[i_1];\n observerStatus[observerId] = true;\n }\n }\n if (!hasOwnProperty.call(cur.sub, slice)) {\n found = false;\n break;\n }\n cur = cur.sub[slice];\n }\n if (found)\n dfsMarkTriggerBitOnPath(cur, observerStatus);\n};\nvar triggerAndCleanTriggerBit = function (observers, observerStatus, comp, data) {\n for (var i = 0; i < observers.length; i += 1) {\n var _a = observers[i], path = _a.path, f = _a.f;\n var status_1 = observerStatus[i];\n if (status_1) {\n observerStatus[i] = false;\n if (comp)\n callObserver(comp, data, path, f);\n }\n }\n};\nexport var getDeepCopyStrategy = function (level) {\n if (level === DeepCopyKind.Simple)\n return 1 /* DeepCopyStrategy.Simple */;\n if (level === DeepCopyKind.SimpleWithRecursion)\n return 2 /* DeepCopyStrategy.SimpleWithRecursion */;\n return 0 /* DeepCopyStrategy.None */;\n};\n/** A data wrapper for data operations such as `setData` */\nvar DataGroup = /** @class */ (function () {\n function DataGroup(associatedComponent, data, pureDataPattern, dataDeepCopy, propertyPassingDeepCopy, reflectToAttributes, observerTree) {\n this._$modelBindingListener = null;\n this._$pendingChanges = [];\n this._$doingUpdates = null;\n this._$comp = associatedComponent;\n this.data = data;\n this._$pureDataPattern = pureDataPattern;\n this._$dataDeepCopy = dataDeepCopy;\n this._$propertyPassingDeepCopy = propertyPassingDeepCopy;\n this._$reflectToAttributes = reflectToAttributes && !!associatedComponent;\n this._$propFields = observerTree.propFields;\n this._$observerTree = observerTree.observerTree;\n this._$observers = observerTree.observers;\n this._$observerStatus = new Array(observerTree.observers.length);\n this.innerData = this._$generateInnerData(data);\n }\n DataGroup.prototype._$generateInnerData = function (data) {\n var pureDataPattern = this._$pureDataPattern;\n var dataDeepCopy = this._$dataDeepCopy;\n if (pureDataPattern || dataDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n var innerData = {};\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n var v = data[k];\n if (pureDataPattern && pureDataPattern.test(k))\n continue;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n innerData[k] = v;\n }\n else if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n innerData[k] = deepCopy(v, true);\n }\n else {\n innerData[k] = simpleDeepCopy(v);\n }\n }\n return innerData;\n }\n return null;\n };\n /** Create a simple data group */\n DataGroup.create = function (data) {\n return new DataGroup(null, data, null, 0 /* DeepCopyStrategy.None */, 0 /* DeepCopyStrategy.None */, false, new DataGroupObserverTree({}));\n };\n /** Set a callback for every grouped update */\n DataGroup.prototype.setUpdateListener = function (updateListener) {\n this._$updateListener = updateListener;\n };\n /** Replace the underlying data */\n DataGroup.prototype.replaceWholeData = function (data) {\n this.data = data;\n this.innerData = this._$generateInnerData(data);\n };\n /** Add a new common data change to queue */\n DataGroup.prototype.replaceDataOnPath = function (path, newData) {\n this._$pendingChanges.push([path, newData, undefined, undefined]);\n };\n /** Add a new array splice operation to queue */\n DataGroup.prototype.spliceArrayDataOnPath = function (path, index, del, inserts) {\n if (!Array.isArray(inserts)) {\n triggerWarning(\"The splice insertion must be a string (on path \\\"\".concat(path.join('.'), \"\\\"). The change is ignored.\"));\n return;\n }\n this._$pendingChanges.push([path, inserts, index !== null && index !== void 0 ? index : -1, del || 0]);\n };\n /**\n * Add a new property change to queue\n *\n * (Generally designed for template engines.)\n * If the `propName` is a property,\n * the `newData` will be deep-copied according to the `propertyPassingDeepCopy` configuration.\n * Otherwise, it returns false.\n */\n DataGroup.prototype.replaceProperty = function (propName, newData) {\n var data = newData;\n if (!this._$propFields[propName])\n return false;\n if (this._$propertyPassingDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n if (this._$propertyPassingDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n data = deepCopy(newData, true);\n }\n else {\n data = simpleDeepCopy(newData);\n }\n }\n this._$pendingChanges.push([[propName], data, undefined, undefined]);\n return true;\n };\n /** Discard changes in queue and generate a new queue with specified changes */\n DataGroup.prototype.setChanges = function (changes) {\n this._$pendingChanges = changes;\n };\n /** Get the data change queue */\n DataGroup.prototype.getChanges = function () {\n return this._$pendingChanges;\n };\n /**\n * Set a callback when a specified property changes\n *\n * (Generally designed for template engines.)\n */\n DataGroup.prototype.setModelBindingListener = function (propName, listener) {\n if (this._$modelBindingListener) {\n this._$modelBindingListener[propName] = listener;\n }\n else {\n var map = this._$modelBindingListener = Object.create(null);\n map[propName] = listener;\n }\n };\n /** Apply all changes in queue */\n DataGroup.prototype.applyDataUpdates = function (skipModelListener) {\n var _a, _b;\n var _c;\n if (skipModelListener === void 0) { skipModelListener = false; }\n var propFields = this._$propFields;\n var comp = this._$comp;\n var pureDataPattern = this._$pureDataPattern;\n var dataDeepCopy = this._$dataDeepCopy;\n // handling chained updates if observers are used\n var isChainedUpdates = !!this._$doingUpdates;\n var combinedChanges;\n var propChanges;\n if (this._$observers.length > 0) {\n if (this._$doingUpdates) {\n combinedChanges = this._$doingUpdates.combined;\n propChanges = this._$doingUpdates.prop;\n }\n else {\n this._$doingUpdates = {\n prop: [],\n combined: [],\n count: 0,\n };\n combinedChanges = this._$doingUpdates.combined;\n propChanges = this._$doingUpdates.prop;\n }\n }\n else {\n combinedChanges = [];\n propChanges = [];\n }\n // find all changes\n var changes = this._$pendingChanges;\n this._$pendingChanges = [];\n // apply changes and collect changing information\n for (var i = 0; i < changes.length; i += 1) {\n var change = changes[i];\n var path = change[0], newData = change[1], spliceIndex = change[2], spliceDel = change[3];\n var isSplice = spliceDel !== undefined;\n var propName = String(path[0]);\n var excluded = pureDataPattern ? pureDataPattern.test(propName) : false;\n var prop = propFields[propName];\n if (prop && path.length === 1) {\n // do update for 1-level fields\n var oldData = this.data[propName];\n var normalizedSpliceIndex = void 0;\n var filteredData = void 0;\n if (isSplice) {\n if (Array.isArray(oldData)) {\n var c = change;\n normalizedSpliceIndex = spliceIndex >= 0 && spliceIndex < oldData.length\n ? spliceIndex\n : oldData.length;\n c[2] = normalizedSpliceIndex;\n oldData.splice.apply(oldData, __spreadArray([normalizedSpliceIndex, spliceDel], newData, false));\n }\n else {\n triggerWarning(\"An array splice change cannot be applied to a non-array value (on path \\\"\".concat(path.join('.'), \"\\\"). The change is ignored.\"));\n }\n filteredData = oldData;\n }\n else {\n filteredData = convertValueToType(newData, propName, prop);\n }\n if (!excluded) {\n if (this.innerData) {\n var innerNewData = void 0;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n change[1] = innerNewData = filteredData;\n }\n else if (normalizedSpliceIndex !== undefined) {\n innerNewData = this.innerData[propName];\n var inserts = void 0;\n if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = inserts = deepCopy(newData, true);\n }\n else {\n change[1] = inserts = simpleDeepCopy(newData);\n }\n (_a = innerNewData).splice.apply(_a, __spreadArray([normalizedSpliceIndex, spliceDel], inserts, false));\n }\n else if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = innerNewData = deepCopy(filteredData, true);\n }\n else {\n change[1] = innerNewData = simpleDeepCopy(filteredData);\n }\n this.innerData[propName] = innerNewData;\n }\n }\n this.data[propName] = filteredData;\n if (this._$reflectToAttributes) {\n var be = comp.getBackendElement();\n if (be) {\n var attrValue = filteredData;\n if (prop.reflectIdPrefix) {\n var owner = comp.ownerShadowRoot;\n if (owner) {\n var idPrefix = owner.getHostNode()._$idPrefix;\n if (idPrefix) {\n attrValue = \"\".concat(idPrefix, \"--\").concat(filteredData);\n }\n }\n }\n var attrName = propName.replace(/[A-Z]/g, function (c) { return \"-\".concat(c.toLowerCase()); });\n var type = typeof attrValue;\n if (type === 'boolean') {\n if (filteredData)\n be.setAttribute(attrName, '');\n else\n be.removeAttribute(attrName);\n }\n else if (type === 'object') {\n be.setAttribute(attrName, JSON.stringify(attrValue));\n }\n else {\n be.setAttribute(attrName, attrValue);\n }\n }\n }\n if (!excluded && oldData !== filteredData) {\n propChanges.push({\n propName: propName,\n prop: prop,\n oldValue: oldData,\n newValue: filteredData,\n skipModelListener: skipModelListener,\n });\n }\n }\n else {\n // do update for multi-level fields\n var curData = this.data;\n var curSlice = propName;\n for (var i_2 = 1; i_2 < path.length; i_2 += 1) {\n var nextSlice = path[i_2];\n if (Number.isFinite(nextSlice)) {\n if (!hasOwnProperty.call(curData, curSlice)\n || !Array.isArray(curData[curSlice])) {\n curData[curSlice] = [];\n }\n }\n else {\n if (!hasOwnProperty.call(curData, curSlice)\n || curData[curSlice] === null\n || typeof curData[curSlice] !== 'object'\n || Array.isArray(curData[curSlice])) {\n curData[curSlice] = {};\n }\n }\n curData = curData[curSlice];\n curSlice = nextSlice;\n }\n var normalizedSpliceIndex = void 0;\n if (isSplice) {\n var oldData = curData[curSlice];\n if (Array.isArray(oldData)) {\n var c = change;\n normalizedSpliceIndex = spliceIndex >= 0 && spliceIndex < oldData.length\n ? spliceIndex\n : oldData.length;\n c[2] = normalizedSpliceIndex;\n oldData.splice.apply(oldData, __spreadArray([normalizedSpliceIndex, spliceDel], newData, false));\n }\n else {\n triggerWarning(\"An array splice change cannot be applied to a non-array value (on path \\\"\".concat(path.join('.'), \"\\\"). The change is ignored.\"));\n }\n }\n else {\n curData[curSlice] = newData;\n }\n if (!excluded && this.innerData) {\n curData = this.innerData;\n curSlice = propName;\n for (var i_3 = 1; i_3 < path.length; i_3 += 1) {\n var nextSlice = path[i_3];\n if (Number.isFinite(nextSlice)) {\n if (!hasOwnProperty.call(curData, curSlice)\n || !Array.isArray(curData[curSlice])) {\n curData[curSlice] = [];\n }\n }\n else {\n if (!hasOwnProperty.call(curData, curSlice)\n || curData[curSlice] === null\n || typeof curData[curSlice] !== 'object'\n || Array.isArray(curData[curSlice])) {\n curData[curSlice] = {};\n }\n }\n curData = curData[curSlice];\n curSlice = nextSlice;\n }\n var innerNewData = void 0;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n change[1] = innerNewData = newData;\n }\n else if (normalizedSpliceIndex !== undefined) {\n innerNewData = curData[curSlice];\n var inserts = void 0;\n if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = inserts = deepCopy(newData, true);\n }\n else {\n change[1] = inserts = simpleDeepCopy(newData);\n }\n (_b = innerNewData).splice.apply(_b, __spreadArray([normalizedSpliceIndex, spliceDel], inserts, false));\n }\n else if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = innerNewData = deepCopy(newData, true);\n }\n else {\n change[1] = innerNewData = simpleDeepCopy(newData);\n }\n curData[curSlice] = innerNewData;\n }\n if (!excluded && prop) {\n // NOTE for prop observers, oldVal will be undefined when doing a sub-path update\n propChanges.push({\n propName: propName,\n prop: prop,\n oldValue: undefined,\n newValue: newData,\n skipModelListener: skipModelListener || false,\n });\n }\n }\n markTriggerBitOnPath(this._$observerTree, this._$observerStatus, path);\n if (!excluded) {\n combinedChanges.push(change);\n }\n if (this._$doingUpdates) {\n this._$doingUpdates.count += 1;\n }\n }\n // trigger data observers\n if (isChainedUpdates)\n return;\n if (this._$doingUpdates) {\n var changesCount = void 0;\n do {\n changesCount = this._$doingUpdates.count;\n triggerAndCleanTriggerBit(this._$observers, this._$observerStatus, comp, this.data);\n } while (changesCount !== this._$doingUpdates.count);\n this._$doingUpdates = null;\n }\n // tell template engine what changed\n (_c = this._$updateListener) === null || _c === void 0 ? void 0 : _c.call(this, this.innerData || this.data, combinedChanges);\n // trigger prop observers (to simulating legacy behaviors)\n if (comp) {\n for (var i = 0; i < propChanges.length; i += 1) {\n var _d = propChanges[i], propName = _d.propName, prop = _d.prop, oldValue = _d.oldValue, newValue = _d.newValue, skipModelListener_1 = _d.skipModelListener;\n if (!skipModelListener_1 && this._$modelBindingListener) {\n var listener = this._$modelBindingListener[propName];\n if (listener)\n listener(newValue);\n }\n if (prop.observer) {\n safeCallback('Property Observer', prop.observer, comp.getMethodCaller(), [newValue, oldValue], comp);\n }\n if (comp._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(comp, {\n type: 'properties',\n target: comp,\n propertyName: propName,\n });\n }\n }\n }\n };\n return DataGroup;\n}());\nexport { DataGroup };\n","import { triggerWarning, } from './func_arr';\nvar skipWhiteSpace = function (state) {\n var str = state.str;\n while (state.cur < str.length) {\n var next = str[state.cur];\n if (next === ' ' || next === '\\n' || next === '\\r' || next === '\\t' || next === '\\f') {\n state.cur += 1;\n }\n else {\n break;\n }\n }\n return state.cur < str.length;\n};\nvar parseInteger = function (state) {\n var str = state.str;\n var ret = '';\n while (state.cur < str.length) {\n var next = str[state.cur];\n if (next >= '0' && next <= '9') {\n ret += next;\n }\n else {\n break;\n }\n state.cur += 1;\n }\n if (!ret) {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(state.cur, \" (illegal index)\"));\n }\n return parseInt(ret, 10);\n};\nvar parseFieldName = function (state) {\n var str = state.str;\n var ret = '';\n while (state.cur < str.length) {\n var next = str[state.cur];\n if (next === '\\\\') {\n // in this mode, `\\\\` always translate the next char to field name\n if (state.cur + 1 === str.length) {\n // empty\n }\n else {\n var next2 = str[state.cur + 1];\n ret += next2;\n state.cur += 1;\n }\n }\n else if (/^[_a-zA-Z]$/.test(next)) {\n ret += next;\n }\n else if (next >= '0' && next <= '9') {\n if (ret === '') {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(state.cur, \" (field name cannot start with digits)\"));\n }\n ret += next;\n }\n else {\n break;\n }\n state.cur += 1;\n }\n return ret;\n};\nvar parseFieldNameWithSpecialChars = function (state) {\n var str = state.str;\n var ret = '';\n while (state.cur < str.length) {\n var next = str[state.cur];\n if (next === '\\\\') {\n // in this mode, `\\\\` only escape recognized special chars. It is `\\\\` itself otherwise\n if (state.cur + 1 === str.length) {\n ret += '\\\\';\n state.cur += 1;\n }\n else {\n var next2 = str[state.cur + 1];\n if (next2 === '.' || next2 === '[' || next2 === ']' || next2 === '\\\\') {\n ret += next2;\n state.cur += 2;\n }\n else {\n ret += '\\\\';\n state.cur += 1;\n }\n }\n }\n else if (next === '.' || next === '[') {\n break;\n }\n else {\n ret += next;\n state.cur += 1;\n }\n }\n return ret;\n};\nvar parsePath = function (state) {\n var str = state.str;\n skipWhiteSpace(state);\n if (str[state.cur] === '*' && str[state.cur + 1] === '*') {\n state.cur += 2;\n return ['**'];\n }\n var seg = parseFieldName(state);\n if (!seg) {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(state.cur, \" (first field name illegal)\"));\n }\n var ret = [seg];\n while (state.cur < str.length) {\n if (!skipWhiteSpace(state))\n break;\n var next = str[state.cur];\n if (next === '.') {\n state.cur += 1;\n skipWhiteSpace(state);\n if (str[state.cur] === '*' && str[state.cur + 1] === '*') {\n ret.push('**');\n state.cur += 2;\n break;\n }\n var seg_1 = parseFieldName(state);\n if (!seg_1) {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(state.cur, \" (field name illegal)\"));\n }\n ret.push(seg_1);\n }\n else if (next === '[') {\n state.cur += 1;\n skipWhiteSpace(state);\n var index = parseInteger(state);\n skipWhiteSpace(state);\n var next2 = str[state.cur];\n if (next2 !== ']') {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(state.cur, \" (illegal index)\"));\n }\n state.cur += 1;\n ret.push(index);\n }\n else {\n break;\n }\n }\n return ret;\n};\nvar parsePathWithSpecialChars = function (state) {\n var str = state.str;\n var ret = [];\n while (state.cur < str.length) {\n var next = str[state.cur];\n if (next === '.') {\n state.cur += 1;\n var seg = parseFieldNameWithSpecialChars(state);\n if (seg !== '')\n ret.push(seg);\n }\n else if (next === '[') {\n state.cur += 1;\n var index = parseInteger(state);\n var next2 = str[state.cur];\n if (next2 !== ']' && state.cur < str.length) {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(state.cur, \" (illegal index)\"));\n }\n state.cur += 1;\n ret.push(index);\n }\n else {\n var seg = parseFieldNameWithSpecialChars(state);\n ret.push(seg);\n }\n }\n if (ret.length === 0)\n ret.push('');\n return ret;\n};\nvar parseCommaSepPaths = function (state) {\n var ret = [];\n ret.push(parsePath(state));\n skipWhiteSpace(state);\n while (state.str[state.cur] === ',') {\n state.cur += 1;\n ret.push(parsePath(state));\n skipWhiteSpace(state);\n }\n return ret;\n};\nexport var parseSinglePath = function (str) {\n try {\n var parseState = {\n str: str,\n cur: 0,\n };\n var ret = parsePathWithSpecialChars(parseState);\n // NOTE currently the end check is not required here, because prev calls always eats all chars\n // if (parseState.cur !== str.length) {\n // throw new Error(`data path descriptor \"${str}\" is illegal at char ${parseState.cur}`)\n // }\n return ret;\n }\n catch (err) {\n triggerWarning(err.message);\n return null;\n }\n};\nexport var parseMultiPaths = function (str) {\n try {\n if (Array.isArray(str)) {\n return str.map(function (str) { return parsePath({ str: str, cur: 0 }); });\n }\n var parseState = {\n str: str,\n cur: 0,\n };\n var ret = parseCommaSepPaths(parseState);\n if (parseState.cur !== str.length) {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(parseState.cur));\n }\n return ret;\n }\n catch (err) {\n triggerWarning(err.message);\n return [];\n }\n};\n","var deepCopyWithRecursion = function (src, visited) {\n if (typeof src === 'object' && src !== null) {\n var v = visited.get(src);\n if (v !== undefined)\n return v;\n if (Array.isArray(src)) {\n var dest_1 = [];\n visited.set(src, dest_1);\n for (var i = 0; i < src.length; i += 1) {\n dest_1[i] = deepCopyWithRecursion(src[i], visited);\n }\n return dest_1;\n }\n var dest = {};\n visited.set(src, dest);\n var keys = Object.keys(src);\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n dest[k] = deepCopyWithRecursion(src[k], visited);\n }\n return dest;\n }\n if (typeof src === 'symbol')\n return Symbol(src.description);\n return src;\n};\nexport var simpleDeepCopy = function (src) {\n if (typeof src === 'object' && src !== null) {\n if (Array.isArray(src)) {\n var dest_2 = [];\n for (var i = 0; i < src.length; i += 1) {\n dest_2[i] = simpleDeepCopy(src[i]);\n }\n return dest_2;\n }\n var dest = {};\n var keys = Object.keys(src);\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n dest[k] = simpleDeepCopy(src[k]);\n }\n return dest;\n }\n if (typeof src === 'symbol')\n return Symbol(src.description);\n return src;\n};\nexport var deepCopy = function (src, withRecursion) {\n if (withRecursion)\n return deepCopyWithRecursion(src, new WeakMap());\n return simpleDeepCopy(src);\n};\n","import { FuncArrWithMeta, } from './func_arr';\nimport { Component, ShadowRoot, } from '.';\n/**\n * Event bubbling control\n */\nexport var EventBubbleStatus;\n(function (EventBubbleStatus) {\n EventBubbleStatus[EventBubbleStatus[\"Normal\"] = 0] = \"Normal\";\n EventBubbleStatus[EventBubbleStatus[\"NoDefault\"] = 1] = \"NoDefault\";\n})(EventBubbleStatus || (EventBubbleStatus = {}));\nvar relativeTimeStamp = Date.now();\nvar prevTimeStamp = relativeTimeStamp;\nvar getCurrentTimeStamp = function () {\n var ts = Date.now();\n if (ts < prevTimeStamp) {\n relativeTimeStamp += ts - prevTimeStamp;\n }\n prevTimeStamp = ts;\n return ts - relativeTimeStamp;\n};\nvar MutLevel;\n(function (MutLevel) {\n MutLevel[MutLevel[\"None\"] = 0] = \"None\";\n MutLevel[MutLevel[\"Mut\"] = 1] = \"Mut\";\n MutLevel[MutLevel[\"Final\"] = 2] = \"Final\";\n})(MutLevel || (MutLevel = {}));\nexport var FinalChanged;\n(function (FinalChanged) {\n FinalChanged[FinalChanged[\"NotChanged\"] = 0] = \"NotChanged\";\n FinalChanged[FinalChanged[\"Failed\"] = 1] = \"Failed\";\n FinalChanged[FinalChanged[\"Init\"] = 2] = \"Init\";\n FinalChanged[FinalChanged[\"Added\"] = 3] = \"Added\";\n FinalChanged[FinalChanged[\"Removed\"] = 4] = \"Removed\";\n})(FinalChanged || (FinalChanged = {}));\n/** The target of an event */\nvar EventTarget = /** @class */ (function () {\n function EventTarget() {\n this.listeners = Object.create(null);\n this.captureListeners = null;\n }\n EventTarget.prototype.addListener = function (name, func, options) {\n if (options === void 0) { options = {}; }\n // eslint-disable-next-line no-nested-ternary\n var mutLevel = options.final\n ? 2 /* MutLevel.Final */\n : (options.mutated ? 1 /* MutLevel.Mut */ : 0 /* MutLevel.None */);\n var listeners;\n if (options.capture || options.useCapture) {\n if (this.captureListeners) {\n listeners = this.captureListeners;\n }\n else {\n listeners = Object.create(null);\n this.captureListeners = listeners;\n }\n }\n else {\n listeners = this.listeners;\n }\n var efa;\n var initialized;\n if (listeners[name]) {\n initialized = true;\n efa = listeners[name];\n }\n else {\n initialized = false;\n efa = listeners[name] = {\n mutCount: 0,\n finalCount: 0,\n funcArr: new FuncArrWithMeta(),\n };\n }\n efa.funcArr.add(func, mutLevel);\n if (mutLevel === 2 /* MutLevel.Final */)\n efa.finalCount += 1;\n else if (mutLevel === 1 /* MutLevel.Mut */)\n efa.mutCount += 1;\n if (initialized) {\n return mutLevel === 2 /* MutLevel.Final */ && efa.finalCount === 1\n ? 3 /* FinalChanged.Added */\n : 0 /* FinalChanged.NotChanged */;\n }\n return 2 /* MutLevel.Final */ ? 3 /* FinalChanged.Added */ : 2 /* FinalChanged.Init */;\n };\n EventTarget.prototype.removeListener = function (name, func, options) {\n if (options === void 0) { options = {}; }\n var listeners = (options.capture || options.useCapture)\n ? this.captureListeners\n : this.listeners;\n if (!listeners)\n return 1 /* FinalChanged.Failed */;\n var efa = listeners[name];\n if (!efa)\n return 1 /* FinalChanged.Failed */;\n var mutLevel = efa.funcArr.remove(func);\n if (mutLevel === null)\n return 1 /* FinalChanged.Failed */;\n if (mutLevel === 2 /* MutLevel.Final */)\n efa.finalCount -= 1;\n else if (mutLevel === 1 /* MutLevel.Mut */)\n efa.mutCount -= 1;\n return mutLevel === 2 /* MutLevel.Final */ && efa.finalCount === 0\n ? 4 /* FinalChanged.Removed */\n : 0 /* FinalChanged.NotChanged */;\n };\n return EventTarget;\n}());\nexport { EventTarget };\nvar Event = /** @class */ (function () {\n function Event(name, detail, options) {\n if (options === void 0) { options = {}; }\n var ts = getCurrentTimeStamp();\n this.type = name;\n this.timeStamp = ts;\n this.detail = detail;\n this.bubbles = options.bubbles || false;\n this.composed = options.composed || false;\n this._$capturePhase = options.capturePhase || false;\n this._$eventBubblingControl = {\n stopped: false,\n mutated: false,\n noDefault: false,\n };\n this._$originalEvent = options.originalEvent;\n this._$dispatched = false;\n if (options.extraFields) {\n Object.assign(this, options.extraFields);\n }\n }\n Event.prototype.getEventBubbleStatus = function () {\n if (this._$eventBubblingControl.noDefault)\n return 1 /* EventBubbleStatus.NoDefault */;\n return 0 /* EventBubbleStatus.Normal */;\n };\n Event.prototype.wrapShadowedEvent = function (targetCaller, mark, currentTargetCaller) {\n var ret = Object.create(this);\n ret.target = targetCaller;\n ret.mark = mark;\n ret.currentTarget = currentTargetCaller;\n return ret;\n };\n Event.prototype.getOriginalEvent = function () {\n return this._$originalEvent;\n };\n Event.prototype.preventDefault = function () {\n this._$eventBubblingControl.noDefault = true;\n };\n Event.prototype.defaultPrevented = function () {\n return this._$eventBubblingControl.noDefault;\n };\n Event.prototype.stopPropagation = function () {\n this._$eventBubblingControl.stopped = true;\n };\n Event.prototype.propagationStopped = function () {\n return this._$eventBubblingControl.stopped;\n };\n Event.prototype.markMutated = function () {\n this._$eventBubblingControl.mutated = true;\n };\n Event.prototype.mutatedMarked = function () {\n return this._$eventBubblingControl.mutated;\n };\n Event.prototype.dispatch = function (target, externalTarget) {\n var _this = this;\n if (this._$dispatched) {\n throw new Error('Event cannot be dispatched twice');\n }\n this._$dispatched = true;\n var evName = this.type;\n var crossShadow = this.composed;\n var bubbles = this.bubbles;\n var inExternalOnly = externalTarget && !crossShadow;\n var eventBubblingControl = this._$eventBubblingControl;\n // calls listeners on a single element\n var callEventFuncArr = function (targetCaller, mark, cur, isCapture) {\n var eventTarget = cur._$eventTarget;\n if (!eventTarget)\n return;\n var listeners = isCapture ? eventTarget.captureListeners : eventTarget.listeners;\n if (!listeners)\n return;\n var efa = listeners[evName];\n if (!efa)\n return;\n var skipMut = _this.mutatedMarked();\n var isComp = cur instanceof Component;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var curCaller = isComp ? cur.getMethodCaller() : cur;\n var ev = _this.wrapShadowedEvent(targetCaller, mark, curCaller);\n var ret = efa.funcArr.call(curCaller, [ev], function (mulLevel) { return !skipMut || mulLevel !== 1 /* MutLevel.Mut */; }, isComp ? cur : undefined);\n if (ret === false || efa.finalCount > 0) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n else if (efa.mutCount > 0) {\n ev.markMutated();\n }\n };\n var forEachBubblePath = function (target, f) {\n var recShadow = function (target) {\n var cur = target;\n var targetCaller = target instanceof Component\n ? target.getMethodCaller()\n : target;\n var mark = target.collectMarks();\n for (;;) {\n if (f(cur, targetCaller, mark) === false)\n return null;\n var next = void 0;\n if (crossShadow) {\n if (cur instanceof ShadowRoot)\n return cur.getHostNode();\n next = cur.parentNode;\n while (next === null || next === void 0 ? void 0 : next._$inheritSlots) {\n next = next.parentNode;\n }\n if (next instanceof Component && !next._$external) {\n var slot = next.shadowRoot.getContainingSlot(cur);\n if (!slot)\n return null;\n next = recShadow(slot);\n }\n }\n else {\n next = cur.parentNode;\n }\n if (!next)\n return null;\n cur = next;\n }\n };\n var cur = target;\n for (;;) {\n var next = recShadow(cur);\n if (!next)\n break;\n cur = next;\n }\n };\n // capture phase\n if (this._$capturePhase && !eventBubblingControl.stopped && !inExternalOnly) {\n var bubblingPath_1 = [];\n forEachBubblePath(target, function (target, targetCaller, mark) {\n bubblingPath_1.push([target, targetCaller, mark]);\n });\n for (var i = bubblingPath_1.length - 1; i >= 0; i -= 1) {\n var _a = bubblingPath_1[i], cur = _a[0], targetCaller = _a[1], mark = _a[2];\n if (cur._$eventTarget) {\n callEventFuncArr(targetCaller, mark, cur, true);\n if (eventBubblingControl.stopped)\n break;\n }\n }\n }\n // bubble phase in external component\n if (!eventBubblingControl.stopped && externalTarget) {\n if (target instanceof Component && target._$external) {\n target.shadowRoot.handleEvent(externalTarget, this);\n }\n }\n // bubble phase\n if (!eventBubblingControl.stopped && !inExternalOnly) {\n var atTarget_1 = true;\n forEachBubblePath(target, function (target, targetCaller, mark) {\n if (!atTarget_1 && target instanceof Component && target._$external) {\n var sr = target.shadowRoot;\n sr.handleEvent(sr.slot, _this);\n }\n atTarget_1 = false;\n if (target._$eventTarget) {\n callEventFuncArr(targetCaller, mark, target, false);\n }\n return bubbles && !eventBubblingControl.stopped;\n });\n }\n };\n Event.dispatchEvent = function (target, event) {\n return event.dispatch(target);\n };\n Event.dispatchExternalEvent = function (component, target, event) {\n return event.dispatch(component, target);\n };\n Event.triggerEvent = function (target, name, detail, options) {\n var ev = new Event(name, detail, options);\n Event.dispatchEvent(target, ev);\n };\n Event.triggerExternalEvent = function (component, target, name, detail, options) {\n var ev = new Event(name, detail, options);\n Event.dispatchExternalEvent(component, target, ev);\n };\n return Event;\n}());\nexport { Event };\n","import { Element, Component, VirtualNode, ShadowRoot, } from '.';\nvar SegmentRelation;\n(function (SegmentRelation) {\n SegmentRelation[SegmentRelation[\"Child\"] = 0] = \"Child\";\n SegmentRelation[SegmentRelation[\"Descendant\"] = 1] = \"Descendant\";\n SegmentRelation[SegmentRelation[\"CrossShadowDescendant\"] = 2] = \"CrossShadowDescendant\";\n})(SegmentRelation || (SegmentRelation = {}));\n// eslint-disable-next-line arrow-body-style\nvar getOwnerSpace = function (node) {\n var _a;\n return (_a = node.ownerShadowRoot) === null || _a === void 0 ? void 0 : _a.getHostNode().getRootBehavior().ownerSpace;\n};\n/** A parsed selector that can be used in selector queries */\nvar ParsedSelector = /** @class */ (function () {\n function ParsedSelector(str) {\n this.unions = [];\n var union = String(str || '').split(',');\n for (var i = 0; i < union.length; i += 1) {\n var segments = union[i].split(/( |\\t|>+)/g);\n var parsedSegs = [];\n var relation = 1 /* SegmentRelation.Descendant */;\n var j = 0;\n for (; j < segments.length; j += 1) {\n var seg = segments[j];\n if (!seg || seg === ' ' || seg === '\\t' || seg === '>>')\n continue;\n if (seg[0] === '>') {\n if (relation !== 1 /* SegmentRelation.Descendant */)\n break;\n if (seg.length === 3) {\n relation = 2 /* SegmentRelation.CrossShadowDescendant */;\n }\n else {\n relation = 0 /* SegmentRelation.Child */;\n }\n continue;\n }\n var parsedSeg = ParsedSelector._$parseSegment(seg, relation);\n relation = 1 /* SegmentRelation.Descendant */;\n if (!parsedSeg)\n break;\n parsedSegs.push(parsedSeg);\n }\n if (j !== segments.length)\n continue;\n if (parsedSegs.length)\n this.unions.push(parsedSegs);\n }\n }\n ParsedSelector._$parseSegment = function (str, relation) {\n var matches = /^(#[_a-zA-Z][-_a-zA-Z0-9:]*|)((?:\\.-?[_a-zA-Z][-_a-zA-Z0-9]*)+|)$/.exec(str);\n if (!matches)\n return null;\n var id = matches[1].slice(1);\n var classes = matches[2].split('.');\n classes.shift();\n if (!id && !classes.length)\n return null;\n return {\n id: id,\n classes: classes,\n relation: relation,\n };\n };\n /** Whether the selector is empty */\n ParsedSelector.prototype.isEmpty = function () {\n return this.unions.length === 0;\n };\n ParsedSelector._$testSelectorSegment = function (root, ownerSpace, node, segments, offset, relation) {\n var _a;\n if (node === root)\n return false;\n var segment = segments[offset];\n // test whether current node matches\n var match = true;\n if (getOwnerSpace(node) !== ownerSpace)\n match = false;\n else if (segment.id && segment.id !== node.id)\n match = false;\n var classes = segment.classes;\n for (var i = 0; match && i < classes.length; i += 1) {\n if (!((_a = node.classList) === null || _a === void 0 ? void 0 : _a.contains(classes[i])))\n match = false;\n }\n if (!match && relation === 0 /* SegmentRelation.Child */)\n return false;\n var nextNode = node;\n if (match && offset === 0) {\n // if matches the first segment, check whether root is in the same shadow tree\n if (root === null)\n return true;\n for (nextNode = nextNode.parentNode; nextNode; nextNode = nextNode.parentNode) {\n if (nextNode === root)\n return true;\n }\n if (relation !== 2 /* SegmentRelation.CrossShadowDescendant */)\n return false;\n nextNode = node;\n match = false;\n }\n // check whether ancestors matches\n var nextRelation = match ? segment.relation : relation;\n do {\n if (!nextNode.parentNode) {\n if (nextRelation === 2 /* SegmentRelation.CrossShadowDescendant */) {\n nextNode = nextNode instanceof ShadowRoot ? nextNode.getHostNode() : null;\n }\n else if (relation === 2 /* SegmentRelation.CrossShadowDescendant */) {\n match = false;\n nextNode = nextNode instanceof ShadowRoot ? nextNode.getHostNode() : null;\n }\n else {\n nextNode = null;\n }\n }\n else {\n nextNode = nextNode.parentNode;\n }\n if (nextNode === root)\n nextNode = null;\n } while (nextNode instanceof VirtualNode);\n if (!nextNode)\n return false;\n if (match) {\n // if matches, try match ancestors\n var matchRes = ParsedSelector._$testSelectorSegment(root, ownerSpace, nextNode, segments, offset - 1, nextRelation);\n if (matchRes)\n return true;\n if (relation !== 2 /* SegmentRelation.CrossShadowDescendant */)\n return false;\n }\n return ParsedSelector._$testSelectorSegment(root, ownerSpace, nextNode, segments, offset, relation);\n };\n /**\n * Test whether the specified node matches the selector\n *\n * If `root` is specified, than the selector is match inside this subtree;\n * otherwise it match in the whole tree.\n */\n ParsedSelector.prototype.testSelector = function (root, node) {\n if (node instanceof VirtualNode)\n return false;\n var union = this.unions;\n var ownerSpace;\n if (root !== null) {\n ownerSpace = getOwnerSpace(root) || getOwnerSpace(node);\n }\n else {\n ownerSpace = getOwnerSpace(node);\n }\n if (ownerSpace === undefined)\n return false;\n for (var i = 0; i < union.length; i += 1) {\n var segments = union[i];\n var matched = ParsedSelector._$testSelectorSegment(root, ownerSpace, node, segments, segments.length - 1, 0 /* SegmentRelation.Child */);\n if (matched)\n return true;\n }\n return false;\n };\n /** Queries an element or elements that matches this selector */\n ParsedSelector.prototype.query = function (root, findOne) {\n var _this = this;\n var ret = [];\n var rec = function (root, node, findOne) {\n if (_this.testSelector(root, node)) {\n if (findOne)\n return node;\n ret.push(node);\n }\n if (node instanceof Component) {\n var shadowRoot = node.getShadowRoot();\n if (shadowRoot) {\n var r_1 = rec(root, shadowRoot, findOne);\n if (r_1 && findOne) {\n return r_1;\n }\n }\n }\n var children = node.childNodes;\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n if (child instanceof Element) {\n var r_2 = rec(root, child, findOne);\n if (r_2 && findOne) {\n return r_2;\n }\n }\n }\n return null;\n };\n var r = rec(root, root, findOne);\n if (findOne)\n return r;\n return ret;\n };\n return ParsedSelector;\n}());\nexport { ParsedSelector };\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { globalOptions, } from './global_options';\nimport { MutationObserverTarget, } from './mutation_observer';\nimport { Event, EventTarget, } from './event';\nimport { triggerWarning, } from './func_arr';\nimport { ParsedSelector, } from './selector';\nimport { BM, } from './backend/mode';\nimport { NativeNode, VirtualNode, ShadowRoot, Component, } from '.';\n/**\n * The \"style\" attributes segments\n *\n * This allows different modules set the \"style\" attribute of an element\n * without overriding each other.\n * The final \"style\" attribute value is the concat of all segments.\n * When calling `setNodeStyle` on an element,\n * a segment can be specified.\n */\nexport var StyleSegmentIndex;\n(function (StyleSegmentIndex) {\n /** The main style segment, generally managed by the template engine */\n StyleSegmentIndex[StyleSegmentIndex[\"MAIN\"] = 0] = \"MAIN\";\n /** The template style segment, preserved for template engine */\n StyleSegmentIndex[StyleSegmentIndex[\"TEMPLATE_EXTRA\"] = 1] = \"TEMPLATE_EXTRA\";\n /** The animation style segment, preserved for temporary transition */\n StyleSegmentIndex[StyleSegmentIndex[\"ANIMATION_EXTRA\"] = 2] = \"ANIMATION_EXTRA\";\n /** The temporary style segment, preserved for high priority styles */\n StyleSegmentIndex[StyleSegmentIndex[\"TEMP_EXTRA\"] = 3] = \"TEMP_EXTRA\";\n})(StyleSegmentIndex || (StyleSegmentIndex = {}));\n/**\n * A general element\n *\n * An element can be a `NativeNode` , a `Component` , or a `VirtualNode` .\n */\nvar Element = /** @class */ (function () {\n function Element() {\n throw new Error('Element cannot be constructed directly');\n }\n Element.prototype._$initialize = function (virtual, backendElement, owner, nodeTreeContext) {\n this._$backendElement = backendElement;\n if (backendElement) {\n backendElement.__wxElement = this;\n }\n this._$destroyOnDetach = false;\n this._$nodeTreeContext = nodeTreeContext || owner._$nodeTreeContext;\n this._$nodeId = '';\n this._$nodeAttributes = null;\n this._$nodeSlot = '';\n this._$slotName = null;\n this._$slotValues = null;\n this._$nodeSlotElement = null;\n this._$subtreeSlotCount = 0;\n this._$inheritSlots = false;\n this._$placeholderHandler = undefined;\n this._$virtual = virtual;\n this.dataset = null;\n this._$marks = null;\n this._$attached = false;\n this.classList = null;\n this._$styleSegments = [];\n this.parentNode = null;\n this.childNodes = [];\n this.ownerShadowRoot = owner;\n this._$mutationObserverTarget = null;\n this._$eventTarget = new EventTarget();\n };\n Object.defineProperty(Element.prototype, \"$$\", {\n get: function () {\n return this._$backendElement;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"id\", {\n get: function () {\n return this._$nodeId;\n },\n set: function (x) {\n var _a, _b;\n var newId = String(x);\n if (this._$nodeId === newId)\n return;\n this._$nodeId = newId;\n if (this.ownerShadowRoot) {\n var host = this.ownerShadowRoot.getHostNode();\n this.ownerShadowRoot._$markIdCacheDirty();\n if (!this._$virtual && host.getComponentOptions().writeIdToDOM) {\n var idPrefix = host._$idPrefix;\n var val = idPrefix ? \"\".concat(idPrefix, \"--\").concat(newId) : newId;\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n var e = this._$backendElement;\n if (e)\n e.id = val;\n }\n else {\n (_a = this._$backendElement) === null || _a === void 0 ? void 0 : _a.setId(val);\n }\n }\n }\n if (globalOptions.writeExtraInfoToAttr) {\n (_b = this._$backendElement) === null || _b === void 0 ? void 0 : _b.setAttribute('exparser:info-attr-id', newId);\n }\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'id',\n });\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"slot\", {\n get: function () {\n return this._$nodeSlot;\n },\n set: function (x) {\n var newSlot = String(x);\n var oldSlot = this._$nodeSlot;\n if (oldSlot === newSlot)\n return;\n if (this._$inheritSlots) {\n triggerWarning('slots-inherited nodes do not support \"slot\" attribute.');\n return;\n }\n this._$nodeSlot = newSlot;\n if (BM.SHADOW || (BM.DYNAMIC && this.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n this._$backendElement.setSlot(newSlot, this._$inheritSlots);\n }\n else {\n var parent_1 = this.parentNode;\n if (parent_1) {\n var slotParent = parent_1;\n while (slotParent === null || slotParent === void 0 ? void 0 : slotParent._$inheritSlots) {\n slotParent = slotParent.parentNode;\n }\n if (slotParent instanceof Component && !slotParent._$external) {\n var slotParentShadowRoot = slotParent.shadowRoot;\n if (slotParentShadowRoot.isDynamicSlots()) {\n triggerWarning('nodes inside dynamic slots should change binding slots through Element#setSlotElement.');\n return;\n }\n var oldSlotElement = slotParentShadowRoot\n .getSlotElementFromName(oldSlot);\n var newSlotElement = slotParentShadowRoot\n .getSlotElementFromName(newSlot);\n Element.insertChildReassignComposed(parent_1, this, oldSlotElement, newSlotElement, parent_1.childNodes.indexOf(this) + 1);\n }\n }\n }\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'slot',\n });\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"attributes\", {\n get: function () {\n var ret = [];\n if (this._$nodeAttributes) {\n Object.entries(this._$nodeAttributes).forEach(function (_a) {\n var name = _a[0], value = _a[1];\n ret.push({\n name: name,\n value: value,\n });\n });\n }\n return ret;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"class\", {\n get: function () {\n if (this.classList) {\n return this.classList.getClassNames();\n }\n return '';\n },\n set: function (classNames) {\n if (this.classList) {\n this.classList.setClassNames(classNames);\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"style\", {\n get: function () {\n return this._$styleSegments[0 /* StyleSegmentIndex.MAIN */] || '';\n },\n set: function (styleText) {\n this.setNodeStyle(styleText, 0 /* StyleSegmentIndex.MAIN */);\n },\n enumerable: false,\n configurable: true\n });\n // eslint-disable-next-line class-methods-use-this\n Element.prototype.asTextNode = function () {\n return null;\n };\n Element.prototype.asElement = function () {\n return this;\n };\n Element.prototype.asNativeNode = function () {\n if (this instanceof NativeNode) {\n return this;\n }\n return null;\n };\n Element.prototype.asVirtualNode = function () {\n if (this instanceof VirtualNode) {\n return this;\n }\n return null;\n };\n Element.prototype.asInstanceOf = function (componentDefinition) {\n if (this instanceof Component) {\n return this.asInstanceOf(componentDefinition);\n }\n return null;\n };\n /** Get the backend context */\n Element.prototype.getBackendContext = function () {\n return this._$nodeTreeContext;\n };\n /** Get the backend mode */\n Element.prototype.getBackendMode = function () {\n return this._$nodeTreeContext.mode;\n };\n /** Get the backend element */\n Element.prototype.getBackendElement = function () {\n return this._$backendElement;\n };\n /** Destroy the backend element */\n Element.prototype.destroyBackendElement = function () {\n if (this._$backendElement) {\n if (!(BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n this._$backendElement.release();\n }\n this._$backendElement = null;\n }\n };\n /** Destroy the backend element on next detach */\n Element.prototype.destroyBackendElementOnDetach = function () {\n this._$destroyOnDetach = true;\n };\n /** Get whether the node is virtual or not */\n Element.prototype.isVirtual = function () {\n return this._$virtual;\n };\n /** Set the node style */\n Element.prototype.setNodeStyle = function (styleSegment, index) {\n if (index === void 0) { index = 0; }\n if (this._$styleSegments[index] === styleSegment)\n return;\n this._$styleSegments[index] = styleSegment;\n var style = this._$styleSegments.join(';');\n if (this._$backendElement) {\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n this._$backendElement.setAttribute('style', style);\n }\n else {\n this._$backendElement.setStyle(style);\n }\n }\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'style',\n });\n }\n };\n Element.checkAndCallAttached = function (node) {\n var callFunc = function callFunc(node) {\n var _a;\n if (node instanceof Element && !node._$attached) {\n node._$attached = true;\n if (node instanceof Component) {\n (_a = node._$lifetimeFuncs.attached) === null || _a === void 0 ? void 0 : _a.call(node.getMethodCaller(), []);\n if (node._$relation) {\n node._$relation.triggerLinkEvent(2 /* RelationType.ParentNonVirtualNode */, false);\n node._$relation.triggerLinkEvent(4 /* RelationType.ParentComponent */, false);\n node._$relation.triggerLinkEvent(0 /* RelationType.Ancestor */, false);\n }\n if (node._$mutationObserverTarget) {\n MutationObserverTarget.callAttachObservers(node, {\n type: 'attachStatus',\n target: node,\n status: 'attached',\n });\n }\n var shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n }\n node.childNodes.forEach(callFunc);\n }\n };\n callFunc(node);\n };\n Element.checkAndCallDetached = function (node) {\n var callFunc = function callFunc(node) {\n var _a;\n if (node instanceof Element && node._$attached) {\n node.childNodes.forEach(callFunc);\n if (node instanceof Component) {\n var f = node._$placeholderHandler;\n if (f)\n f();\n var shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n node._$attached = false;\n (_a = node._$lifetimeFuncs.detached) === null || _a === void 0 ? void 0 : _a.call(node.getMethodCaller(), []);\n if (node._$relation) {\n node._$relation.triggerLinkEvent(2 /* RelationType.ParentNonVirtualNode */, true);\n node._$relation.triggerLinkEvent(4 /* RelationType.ParentComponent */, true);\n node._$relation.triggerLinkEvent(0 /* RelationType.Ancestor */, true);\n }\n if (node._$mutationObserverTarget) {\n MutationObserverTarget.callAttachObservers(node, {\n type: 'attachStatus',\n target: node,\n status: 'detached',\n });\n }\n }\n else {\n node._$attached = false;\n }\n }\n if (node._$destroyOnDetach) {\n node.destroyBackendElement();\n }\n };\n callFunc(node);\n };\n Element.checkAndCallMoved = function (node) {\n var callFunc = function callFunc(node) {\n var _a;\n if (node instanceof Element && node._$attached) {\n node.childNodes.forEach(callFunc);\n if (node instanceof Component) {\n var shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n (_a = node._$lifetimeFuncs.moved) === null || _a === void 0 ? void 0 : _a.call(node.getMethodCaller(), []);\n if (node._$relation) {\n node._$relation.triggerLinkEvent(2 /* RelationType.ParentNonVirtualNode */, false);\n node._$relation.triggerLinkEvent(4 /* RelationType.ParentComponent */, false);\n node._$relation.triggerLinkEvent(0 /* RelationType.Ancestor */, false);\n }\n }\n }\n };\n callFunc(node);\n };\n Element.checkChildObservers = function (node, type, child) {\n var _a;\n var observer = node._$mutationObserverTarget;\n if (observer && (!((_a = observer.childObservers) === null || _a === void 0 ? void 0 : _a.empty) || observer.hasSubtreeListeners())) {\n var childList = [child];\n var childEventObj = void 0;\n if (type === 'add') {\n childEventObj = {\n type: 'childList',\n target: node,\n addedNodes: childList,\n };\n }\n else if (type === 'remove') {\n childEventObj = {\n type: 'childList',\n target: node,\n removedNodes: childList,\n };\n }\n else {\n childEventObj = {\n type: 'childList',\n target: node,\n addedNodes: childList,\n removedNodes: childList,\n };\n }\n MutationObserverTarget.callChildObservers(node, childEventObj);\n }\n };\n /**\n * Get whether a node has any subtree `MutationObserver` attached to it\n *\n * If there is, then tree update may have more performance impact.\n */\n Element.hasSubtreeMutationObservers = function (node) {\n var _a;\n return ((_a = node._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.hasSubtreeListeners()) || false;\n };\n Element.updateSlotCount = function (element, diff) {\n var cur = element;\n for (;;) {\n cur._$subtreeSlotCount += diff;\n var next = cur.parentNode;\n if (next) {\n cur = next;\n }\n else {\n if (cur instanceof ShadowRoot) {\n cur._$markSlotCacheDirty();\n }\n break;\n }\n }\n };\n /** @internal */\n Element._$insertChildReassignSlot = function (shadowRoot, name, oldSlot, newSlot) {\n var host = shadowRoot.getHostNode();\n var ideaPosIndex = host.childNodes.length;\n shadowRoot.forEachNodeInSpecifiedSlot(name, function (node, _posIndex) {\n if (node instanceof Element && node._$inheritSlots)\n return;\n // a special use of composing process:\n // the child node might not be the direct child of the host;\n // there may be slot-inherit nodes between them.\n Element.insertChildReassignComposed(host, node, oldSlot, newSlot, ideaPosIndex);\n });\n };\n Element.insertChildReassignComposed = function (shadowParent, child, oldSlot, newSlot, ideaPosIndex) {\n if (oldSlot) {\n if (newSlot\n && (BM.DOMLIKE || (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n // removal of in-tree elements are not needed for DOM backend\n // do nothing\n }\n else {\n var backendParent = Element.findNearestNonVirtual(oldSlot);\n if (backendParent) {\n var d = Element.countNonVirtual(child);\n if (d) {\n var before = d[0], removeCount = d[1];\n if (BM.DOMLIKE\n || (BM.DYNAMIC && shadowParent.getBackendContext().mode === 3 /* BackendMode.Domlike */)) {\n var rel = before._$backendElement;\n for (var i = 1; i < removeCount; i += 1) {\n var next = rel.nextSibling;\n if (next)\n backendParent.removeChild(next);\n }\n if (removeCount > 0)\n backendParent.removeChild(rel);\n }\n else {\n backendParent.spliceRemove(before._$backendElement, removeCount);\n }\n }\n }\n }\n }\n if (newSlot) {\n Element.insertChildComposed(shadowParent, child, undefined, false, ideaPosIndex);\n }\n };\n // a helper for searching the nearest non-virtual ancestor\n Element.findNearestNonVirtual = function (p) {\n var cur = p;\n for (;;) {\n if (!cur._$virtual)\n return cur._$backendElement;\n if (cur instanceof ShadowRoot) {\n cur = cur.getHostNode();\n continue;\n }\n var next = cur.parentNode;\n if (!next)\n return null;\n if (next instanceof Component && !next._$external) {\n var slot = next.shadowRoot.getContainingSlot(cur);\n if (!slot)\n return null;\n cur = slot;\n }\n else {\n cur = next;\n }\n }\n };\n Element.countNonVirtual = function (target) {\n var firstNode = null;\n var removeCount = 0;\n var recRelVirtual = function (c) {\n if (c instanceof Element) {\n if (c._$virtual) {\n c.forEachComposedChild(recRelVirtual);\n return;\n }\n }\n if (removeCount === 0) {\n firstNode = c;\n }\n removeCount += 1;\n };\n recRelVirtual(target);\n return firstNode ? [firstNode, removeCount] : null;\n };\n Element.insertChildComposed = function (shadowParent, newChild, relChild, removal, newPosIndex) {\n var _a, _b, _c;\n var parentConverted = false;\n var cur = shadowParent;\n while (cur === null || cur === void 0 ? void 0 : cur._$inheritSlots) {\n parentConverted = true;\n cur = cur.parentNode;\n }\n if (!cur)\n return;\n var slotParent = cur;\n var context = slotParent._$nodeTreeContext;\n // detect whether it is in single-slot mode\n var sharedNonVirtualParent;\n var dynamicSlotting = false;\n if (slotParent instanceof Component) {\n if (slotParent._$external) {\n var singleSlot = slotParent.shadowRoot.slot;\n sharedNonVirtualParent = singleSlot;\n }\n else {\n parentConverted = true;\n var singleSlot = slotParent.shadowRoot.getSingleSlotElement();\n if (singleSlot !== undefined) {\n sharedNonVirtualParent = singleSlot\n ? Element.findNearestNonVirtual(singleSlot)\n : undefined;\n }\n else {\n if (slotParent.shadowRoot.isDynamicSlots())\n dynamicSlotting = true;\n sharedNonVirtualParent = undefined;\n }\n }\n }\n else {\n if (slotParent._$virtual)\n parentConverted = true;\n sharedNonVirtualParent = Element.findNearestNonVirtual(slotParent);\n }\n // a helper for listing children in specified slot\n var forEachChildInSlot = function (node, slot, slotName, f) {\n var recInheritedSlot = function (c) {\n if (c instanceof Element && c._$inheritSlots) {\n return c.childNodes.every(recInheritedSlot);\n }\n return f(c);\n };\n var recv = function (c) {\n if (sharedNonVirtualParent) {\n // single slot\n if (c instanceof Element && c._$inheritSlots) {\n return c.childNodes.every(recInheritedSlot);\n }\n }\n else if (!dynamicSlotting) {\n // multiple slots\n if (c instanceof Element && c._$inheritSlots) {\n return c.childNodes.every(recv);\n }\n if (slotName !== (c instanceof Element ? c._$nodeSlot : ''))\n return true;\n }\n else {\n // dynamic slots\n if (slot !== c._$nodeSlotElement)\n return true;\n if (c instanceof Element && c._$inheritSlots) {\n return c.childNodes.every(recInheritedSlot);\n }\n }\n return f(c);\n };\n recv(node);\n };\n // a helper for searching the first non-virtual node\n var findFirstNonVirtual = function (shadowParent, index, slot, slotName) {\n var children = shadowParent.childNodes;\n if (index >= 0) {\n var _loop_1 = function (i) {\n var ret = null;\n var recVirtual = function (c) {\n if (c instanceof Element && c._$virtual) {\n return c.forEachComposedChild(recVirtual);\n }\n ret = c;\n return ret === null;\n };\n forEachChildInSlot(children[i], slot, slotName, recVirtual);\n if (ret)\n return { value: ret };\n };\n for (var i = index; i < children.length; i += 1) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n }\n var cur;\n if (shadowParent instanceof ShadowRoot) {\n var host = shadowParent.getHostNode();\n cur = host;\n }\n else if (shadowParent instanceof Component && !shadowParent._$external) {\n var slotElem = slot === null\n ? shadowParent.shadowRoot.getSlotElementFromName(slotName)\n : slot;\n if (!slotElem)\n return null;\n cur = slotElem;\n }\n else {\n cur = shadowParent;\n }\n if (!cur._$virtual)\n return null;\n var p = cur.parentNode;\n if (p) {\n var i = p.childNodes.lastIndexOf(cur);\n var nextSlot = void 0;\n var nextSlotName = void 0;\n if (cur._$inheritSlots) {\n nextSlot = slot;\n nextSlotName = slotName;\n }\n else if (p instanceof Component && !p._$external) {\n var singleSlot = p.shadowRoot.getSingleSlotElement();\n if (singleSlot !== undefined) {\n nextSlot = null;\n nextSlotName = '';\n }\n else {\n nextSlot = p.shadowRoot.getContainingSlot(cur);\n nextSlotName = cur._$slotName || '';\n }\n }\n else {\n nextSlot = null;\n nextSlotName = '';\n }\n var ret = findFirstNonVirtual(p, i + 1, nextSlot, nextSlotName);\n if (ret)\n return ret;\n }\n return null;\n };\n // a helper for grouping and slicing update\n var sharedFrag = null;\n var groupUpdate = function (slot, slotName) {\n // find the proper element of the backend\n var backendParent;\n if (slotName === undefined) {\n // `sharedNonVirtualParent` must be valid if `null`\n backendParent = sharedNonVirtualParent;\n }\n else {\n // `slotParent` must be `Component` if slot not `null`\n var p = slotParent;\n if (p._$external) {\n var s = p.shadowRoot.slot;\n backendParent = s;\n }\n else {\n backendParent = slot ? Element.findNearestNonVirtual(slot) : null;\n }\n }\n if (!(BM.DOMLIKE || (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n if (!backendParent) {\n return;\n }\n }\n var slotNameLimit = slotName || '';\n var removeCount = 0;\n var before = null;\n // get the new child nodes of the backend\n var frag = null;\n if (newChild) {\n var f_1 = sharedFrag || (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)\n ? context.document.createDocumentFragment()\n : context.createFragment());\n sharedFrag = frag;\n var recNewVirtual_1 = function (c) {\n if (c instanceof Element && c._$virtual) {\n c.forEachComposedChild(recNewVirtual_1);\n }\n else {\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n // domlike backend also\n f_1\n .appendChild(c._$backendElement);\n frag = f_1;\n }\n return true;\n };\n forEachChildInSlot(newChild, slot, slotNameLimit, recNewVirtual_1);\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n if (!backendParent) {\n sharedFrag = null;\n return;\n }\n }\n // get the proper relative node of the backend\n if (relChild || parentConverted) {\n if (removal && relChild) {\n forEachChildInSlot(relChild, slot, slotNameLimit, function (c) {\n if (c instanceof Element) {\n var d = Element.countNonVirtual(c);\n if (d) {\n if (!before)\n before = d[0];\n removeCount += d[1];\n }\n }\n else {\n if (!before)\n before = c;\n removeCount += 1;\n }\n return true;\n });\n if (removeCount === 0 && frag) {\n before = findFirstNonVirtual(shadowParent, newPosIndex + 1, slot, slotNameLimit);\n }\n }\n else if (frag) {\n before = findFirstNonVirtual(shadowParent, newPosIndex, slot, slotNameLimit);\n }\n }\n // actually do the backend operation\n if (frag) {\n if (before) {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n var rel = before._$backendElement;\n backendParent.insertBefore(frag, rel);\n for (var i = 1; i < removeCount; i += 1) {\n var next = rel.nextSibling;\n if (next)\n backendParent.removeChild(next);\n }\n if (removeCount > 0)\n backendParent.removeChild(rel);\n }\n else {\n backendParent.spliceBefore(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n before._$backendElement, removeCount, frag);\n }\n }\n else {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n backendParent.appendChild(frag);\n }\n else {\n backendParent.spliceAppend(frag);\n }\n }\n }\n else if (removeCount > 0) {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n var rel = before._$backendElement;\n for (var i = 1; i < removeCount; i += 1) {\n var next = rel.nextSibling;\n if (next)\n backendParent.removeChild(next);\n }\n if (removeCount > 0)\n backendParent.removeChild(rel);\n }\n else {\n backendParent.spliceRemove(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n before._$backendElement, removeCount);\n }\n }\n };\n // in single-slot mode, use a simpler update logic; otherwise use a slower one\n if (sharedNonVirtualParent !== undefined) {\n if (sharedNonVirtualParent === null) {\n // for nodes with no valid non-virtual parent, do nothing\n }\n else if (!parentConverted\n && (!(newChild instanceof Element) || !newChild._$virtual)\n && (!(relChild instanceof Element) || !relChild._$virtual)) {\n // for non-virtual children, use single child operation\n if (removal) {\n if (newChild) {\n sharedNonVirtualParent.replaceChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n // domlike backend also\n newChild._$backendElement, relChild._$backendElement);\n }\n else {\n sharedNonVirtualParent.removeChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n // domlike backend also\n relChild._$backendElement);\n }\n }\n else if (relChild) {\n sharedNonVirtualParent.insertBefore(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n // domlike backend also\n newChild._$backendElement, relChild._$backendElement);\n }\n else {\n sharedNonVirtualParent.appendChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n // domlike backend also\n newChild._$backendElement);\n }\n }\n else {\n // for virtual children in a single slot, group the children and use splice\n groupUpdate(null);\n }\n }\n else {\n // for multi-slots, find out each slot that needs update, and update them one by one\n var slots_1 = [];\n var recInheritedSlots_1 = function (c) {\n var slot;\n if (c._$nodeSlotElement) {\n slot = c._$nodeSlotElement;\n }\n else if (c instanceof Element) {\n if (c._$inheritSlots) {\n c.childNodes.forEach(recInheritedSlots_1);\n return;\n }\n slot = c._$nodeSlot;\n }\n else {\n slot = '';\n }\n if (slots_1.indexOf(slot) < 0)\n slots_1.push(slot);\n };\n if (removal && relChild)\n recInheritedSlots_1(relChild);\n if (newChild)\n recInheritedSlots_1(newChild);\n for (var i = 0; i < slots_1.length; i += 1) {\n var slot = slots_1[i];\n if (typeof slot === 'string') {\n var s = slotParent.shadowRoot\n .getSlotElementFromName(slot);\n groupUpdate(s, slot);\n }\n else {\n groupUpdate(slot, '');\n }\n }\n }\n if (!(BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */))) {\n if (sharedFrag)\n sharedFrag.release();\n }\n // write extra info if needed\n if (globalOptions.writeExtraInfoToAttr) {\n if (removal && relChild instanceof Element) {\n (_a = relChild._$backendElement) === null || _a === void 0 ? void 0 : _a.removeAttribute('exparser:info-in-slot-of');\n }\n if (newChild instanceof Element) {\n if (shadowParent instanceof Component) {\n (_b = newChild._$backendElement) === null || _b === void 0 ? void 0 : _b.setAttribute('exparser:info-in-slot-of', shadowParent._$componentInstanceId);\n }\n else {\n (_c = newChild._$backendElement) === null || _c === void 0 ? void 0 : _c.removeAttribute('exparser:info-in-slot-of');\n }\n }\n }\n };\n Element.insertChildSingleOperation = function (parent, newChild, oriPosIndex, replace) {\n var _a, _b, _c, _d, _e, _f;\n if (newChild && parent.ownerShadowRoot !== newChild.ownerShadowRoot) {\n throw new Error('Cannot move the node from one shadow tree to another shadow tree.');\n }\n var posIndex = oriPosIndex;\n var relChild = posIndex >= 0 ? parent.childNodes[posIndex] : undefined;\n var removal;\n if (replace) {\n if (!relChild) {\n removal = false;\n }\n else if (newChild === relChild) {\n removal = false;\n }\n else {\n removal = true;\n }\n }\n else {\n removal = false;\n }\n if (!removal && !newChild)\n return;\n var needUpdateSlotCount = false;\n var slotCountDiff = 0;\n // change the parent of newChild\n var oldParent;\n if (newChild) {\n oldParent = newChild.parentNode;\n if (oldParent) {\n var oldPosIndex = oldParent.childNodes.indexOf(newChild);\n oldParent.childNodes.splice(oldPosIndex, 1);\n if (oldParent === parent && oldPosIndex < posIndex)\n posIndex -= 1;\n if (BM.DOMLIKE || (BM.DYNAMIC && parent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n // removal of in-tree elements are not needed for DOM backend\n // do nothing\n }\n else if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n (_a = oldParent._$backendElement) === null || _a === void 0 ? void 0 : _a.removeChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n newChild._$backendElement, oldPosIndex);\n }\n else {\n Element.insertChildComposed(parent, null, newChild, true, oldPosIndex);\n }\n }\n newChild.parentNode = parent;\n if (newChild instanceof Element) {\n if (oldParent !== parent) {\n if (oldParent) {\n (_b = oldParent._$mutationObserverTarget) === null || _b === void 0 ? void 0 : _b.detachChild(newChild);\n if (newChild._$subtreeSlotCount > 0) {\n Element.updateSlotCount(oldParent, -newChild._$subtreeSlotCount);\n }\n }\n (_c = parent._$mutationObserverTarget) === null || _c === void 0 ? void 0 : _c.attachChild(newChild);\n if (newChild._$subtreeSlotCount > 0) {\n needUpdateSlotCount = true;\n slotCountDiff += newChild._$subtreeSlotCount;\n }\n }\n else if (newChild._$subtreeSlotCount > 0) {\n needUpdateSlotCount = true;\n }\n }\n }\n else {\n oldParent = null;\n }\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n if (removal) {\n if (newChild) {\n parent._$backendElement.replaceChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n newChild._$backendElement, relChild._$backendElement, posIndex);\n }\n else {\n parent._$backendElement.removeChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n relChild._$backendElement, posIndex);\n }\n }\n else if (relChild) {\n parent._$backendElement.insertBefore(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n newChild._$backendElement, relChild._$backendElement, posIndex);\n }\n else {\n parent._$backendElement.appendChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n newChild._$backendElement);\n }\n }\n }\n else {\n Element.insertChildComposed(parent, newChild, relChild, removal, posIndex);\n }\n // remove parent of relChild if needed\n if (removal && relChild instanceof Element) {\n (_d = parent._$mutationObserverTarget) === null || _d === void 0 ? void 0 : _d.detachChild(relChild);\n relChild.parentNode = null;\n if (relChild._$subtreeSlotCount > 0) {\n needUpdateSlotCount = true;\n slotCountDiff -= relChild._$subtreeSlotCount;\n }\n }\n // handling child nodes list\n if (newChild) {\n if (posIndex < 0)\n parent.childNodes.push(newChild);\n else if (removal)\n parent.childNodes[posIndex] = newChild;\n else\n parent.childNodes.splice(posIndex, 0, newChild);\n }\n else if (removal) {\n parent.childNodes.splice(posIndex, 1);\n }\n // update id and slot cache if needed\n (_e = parent.ownerShadowRoot) === null || _e === void 0 ? void 0 : _e._$markIdCacheDirty();\n if (needUpdateSlotCount) {\n Element.updateSlotCount(parent, slotCountDiff);\n (_f = parent.ownerShadowRoot) === null || _f === void 0 ? void 0 : _f._$checkSlotChanges();\n }\n // call life-times\n if (removal) {\n Element.checkAndCallDetached(relChild);\n Element.checkChildObservers(parent, 'remove', relChild);\n }\n if (newChild) {\n if (oldParent === null || oldParent === void 0 ? void 0 : oldParent._$attached) {\n if (parent._$attached) {\n Element.checkAndCallMoved(newChild);\n }\n else {\n Element.checkAndCallDetached(newChild);\n }\n }\n else if (parent._$attached) {\n Element.checkAndCallAttached(newChild);\n }\n if (oldParent === parent) {\n Element.checkChildObservers(parent, 'move', newChild);\n }\n else {\n if (oldParent) {\n Element.checkChildObservers(oldParent, 'remove', newChild);\n }\n Element.checkChildObservers(parent, 'add', newChild);\n }\n }\n };\n Element.insertChildBatchRemoval = function (parent, posIndex, count) {\n var _a, _b, _c;\n var relChild = parent.childNodes[posIndex];\n var needUpdateSlotCount = false;\n var slotCountDiff = 0;\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n parent._$backendElement.spliceRemove(relChild._$backendElement, count);\n }\n }\n else {\n for (var i = 0; i < count; i += 1) {\n Element.insertChildComposed(parent, null, parent.childNodes[posIndex + i], true, posIndex + i);\n }\n }\n // remove parent\n for (var i = 0; i < count; i += 1) {\n var relChild_1 = parent.childNodes[posIndex + i];\n relChild_1.parentNode = null;\n if (relChild_1 instanceof Element) {\n (_a = parent._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.detachChild(relChild_1);\n if (relChild_1._$subtreeSlotCount > 0) {\n needUpdateSlotCount = true;\n slotCountDiff -= relChild_1._$subtreeSlotCount;\n }\n }\n }\n // handling child nodes list\n var relChildren = parent.childNodes.splice(posIndex, count);\n // update id and slot cache if needed\n (_b = parent.ownerShadowRoot) === null || _b === void 0 ? void 0 : _b._$markIdCacheDirty();\n if (needUpdateSlotCount) {\n Element.updateSlotCount(parent, slotCountDiff);\n (_c = parent.ownerShadowRoot) === null || _c === void 0 ? void 0 : _c._$checkSlotChanges();\n }\n // call life-times\n for (var i = 0; i < count; i += 1) {\n var relChild_2 = relChildren[i];\n Element.checkAndCallDetached(relChild_2);\n Element.checkChildObservers(parent, 'remove', relChild_2);\n }\n };\n Element.insertChildBatchInsertion = function (parent, newChildList, posIndex) {\n var _a, _b;\n var _c, _d, _e;\n var relChild = posIndex >= 0 ? parent.childNodes[posIndex] : undefined;\n var needUpdateSlotCount = false;\n var slotCountDiff = 0;\n // change the parent of newChild\n var frag;\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n var backendContext = parent.getBackendContext();\n frag = backendContext.createFragment();\n }\n else {\n frag = null;\n }\n for (var i = 0; i < newChildList.length; i += 1) {\n var newChild = newChildList[i];\n if (parent.ownerShadowRoot !== newChild.ownerShadowRoot) {\n throw new Error('Cannot move the node from one shadow tree to another shadow tree.');\n }\n var oldParent = newChild.parentNode;\n if (oldParent) {\n throw new Error('Cannot batch-insert the node which already has a parent.');\n }\n newChild.parentNode = parent;\n if (newChild instanceof Element) {\n (_c = parent._$mutationObserverTarget) === null || _c === void 0 ? void 0 : _c.attachChild(newChild);\n if (newChild._$subtreeSlotCount > 0) {\n needUpdateSlotCount = true;\n slotCountDiff += newChild._$subtreeSlotCount;\n }\n }\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n var be = newChild._$backendElement;\n frag.appendChild(be);\n }\n }\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n if (relChild) {\n parent._$backendElement.spliceBefore(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n relChild._$backendElement, 0, frag);\n }\n else {\n parent._$backendElement.spliceAppend(frag);\n }\n }\n frag.release();\n }\n else {\n for (var i = 0; i < newChildList.length; i += 1) {\n var newChild = newChildList[i];\n Element.insertChildComposed(parent, newChild, relChild, false, posIndex >= 0 ? posIndex : parent.childNodes.length);\n }\n }\n // handling child nodes list\n if (relChild) {\n (_a = parent.childNodes).splice.apply(_a, __spreadArray([posIndex, 0], newChildList, false));\n }\n else {\n (_b = parent.childNodes).push.apply(_b, newChildList);\n }\n // update id and slot cache if needed\n (_d = parent.ownerShadowRoot) === null || _d === void 0 ? void 0 : _d._$markIdCacheDirty();\n if (needUpdateSlotCount) {\n Element.updateSlotCount(parent, slotCountDiff);\n (_e = parent.ownerShadowRoot) === null || _e === void 0 ? void 0 : _e._$checkSlotChanges();\n }\n // call life-times\n for (var i = 0; i < newChildList.length; i += 1) {\n var newChild = newChildList[i];\n if (parent._$attached) {\n Element.checkAndCallAttached(newChild);\n }\n Element.checkChildObservers(parent, 'add', newChild);\n }\n };\n Element.insertChildPlaceholerReplace = function (parent, posIndex, replacer) {\n var _a;\n var _b, _c, _d, _e, _f, _g, _h;\n if (replacer && parent.ownerShadowRoot !== replacer.ownerShadowRoot) {\n throw new Error('Cannot move the node from one shadow tree to another shadow tree.');\n }\n if (replacer.parentNode) {\n throw new Error('Cannot replace with the node which already has a parent.');\n }\n var placeholder = parent.childNodes[posIndex];\n if (!(placeholder instanceof Element)) {\n throw new Error('Cannot replace on text nodes.');\n }\n if (placeholder === replacer)\n return;\n // change the parent of replacer's children\n var frag;\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n var backendContext = parent.getBackendContext();\n frag = backendContext.createFragment();\n }\n else {\n frag = null;\n }\n var replacedChildren = placeholder.childNodes;\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (replacedChildren.length > 0) {\n (_b = placeholder._$backendElement) === null || _b === void 0 ? void 0 : _b.spliceRemove(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n replacedChildren[0]._$backendElement, replacedChildren.length);\n }\n }\n for (var i = 0; i < replacedChildren.length; i += 1) {\n var child = replacedChildren[i];\n if (BM.DOMLIKE || (BM.DYNAMIC && parent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n // removal of in-tree elements are not needed for DOM backend\n // do nothing\n }\n else if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n var be = child._$backendElement;\n frag.appendChild(be);\n }\n else {\n Element.insertChildComposed(placeholder, null, child, true, i);\n }\n child.parentNode = replacer;\n if (child instanceof Element) {\n (_c = placeholder._$mutationObserverTarget) === null || _c === void 0 ? void 0 : _c.detachChild(child);\n (_d = parent._$mutationObserverTarget) === null || _d === void 0 ? void 0 : _d.attachChild(child);\n }\n }\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n parent._$backendElement.replaceChild(replacer._$backendElement, placeholder._$backendElement, posIndex);\n // eslint-disable-next-line arrow-body-style\n (_e = replacer._$backendElement) === null || _e === void 0 ? void 0 : _e.spliceAppend(frag);\n }\n frag.release();\n }\n else {\n Element.insertChildComposed(parent, replacer, placeholder, true, posIndex);\n for (var i = 0; i < replacedChildren.length; i += 1) {\n var child = replacedChildren[i];\n Element.insertChildComposed(replacer, child, undefined, false, i);\n }\n }\n // change the parent of placeholder\n (_f = parent._$mutationObserverTarget) === null || _f === void 0 ? void 0 : _f.detachChild(placeholder);\n placeholder.parentNode = null;\n // change the parent of replacer\n replacer.parentNode = parent;\n (_g = parent._$mutationObserverTarget) === null || _g === void 0 ? void 0 : _g.attachChild(replacer);\n // handling child nodes list for parent\n parent.childNodes[posIndex] = replacer;\n // handling child nodes list for replacer\n (_a = replacer.childNodes).push.apply(_a, placeholder.childNodes);\n // handling child nodes list for placeholder\n placeholder.childNodes = [];\n // update id and slot cache if needed\n (_h = parent.ownerShadowRoot) === null || _h === void 0 ? void 0 : _h._$markIdCacheDirty();\n // call life-times\n if (parent._$attached) {\n Element.checkAndCallDetached(placeholder);\n Element.checkChildObservers(parent, 'remove', placeholder);\n Element.checkAndCallAttached(replacer);\n Element.checkChildObservers(parent, 'add', replacer);\n for (var i = 0; i < replacedChildren.length; i += 1) {\n var child = replacedChildren[i];\n Element.checkAndCallMoved(child);\n Element.checkChildObservers(parent, 'move', child);\n }\n }\n };\n Element.prototype.appendChild = function (child) {\n Element.insertChildSingleOperation(this, child, this.childNodes.length, false);\n };\n Element.prototype.insertChildAt = function (child, index) {\n Element.insertChildSingleOperation(this, child, index, false);\n };\n Element.prototype.insertBefore = function (child, before) {\n var index = this.childNodes.indexOf(before);\n Element.insertChildSingleOperation(this, child, index, false);\n };\n Element.prototype.removeChildAt = function (index) {\n Element.insertChildSingleOperation(this, null, index, true);\n };\n Element.prototype.removeChild = function (child) {\n var index = this.childNodes.indexOf(child);\n Element.insertChildSingleOperation(this, null, index, true);\n };\n Element.prototype.replaceChildAt = function (child, index) {\n Element.insertChildSingleOperation(this, child, index, true);\n };\n Element.prototype.replaceChild = function (child, relChild) {\n var index = this.childNodes.indexOf(relChild);\n Element.insertChildSingleOperation(this, child, index, true);\n };\n Element.prototype.insertChildren = function (children, index) {\n Element.insertChildBatchInsertion(this, children, index);\n };\n Element.prototype.removeChildren = function (index, count) {\n Element.insertChildBatchRemoval(this, index, count);\n };\n Element.prototype.selfReplaceWith = function (replaceWith) {\n var parent = this.parentNode;\n if (parent) {\n Element.insertChildPlaceholerReplace(parent, parent.childNodes.indexOf(this), replaceWith);\n }\n };\n /** @internal */\n Element._$generateIdMap = function (node) {\n var idMap = Object.create(null);\n var dfs = function dfs(node) {\n if (node instanceof Element) {\n var nodeId = node._$nodeId;\n if (nodeId) {\n if (!idMap[nodeId])\n idMap[nodeId] = node;\n }\n node.childNodes.forEach(dfs);\n }\n };\n dfs(node);\n return idMap;\n };\n /** Trigger an event on the element */\n Element.prototype.triggerEvent = function (name, detail, options) {\n Event.triggerEvent(this, name, detail, options);\n };\n /** Trigger an event with specified event object on the element */\n Element.prototype.dispatchEvent = function (ev) {\n Event.dispatchEvent(this, ev);\n };\n Element.prototype._$updateEventDefaultPrevented = function (name, enabled) {\n if (!this._$backendElement)\n return;\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n this._$nodeTreeContext.setElementEventDefaultPrevented(this._$backendElement, name, enabled);\n }\n else {\n this._$backendElement.setEventDefaultPrevented(name, enabled);\n }\n };\n /** Add an event listener on the element */\n Element.prototype.addListener = function (name, func, options) {\n var finalChanged = this._$eventTarget.addListener(name, func, options);\n if (finalChanged === 2 /* FinalChanged.Init */)\n this._$updateEventDefaultPrevented(name, false);\n else if (finalChanged === 3 /* FinalChanged.Added */)\n this._$updateEventDefaultPrevented(name, true);\n if (this instanceof Component && this._$definition._$options.listenerChangeLifetimes) {\n this.triggerLifetime('listenerChanged', [true, name, func, options]);\n }\n };\n /** Remove an event listener on the element */\n Element.prototype.removeListener = function (name, func, options) {\n var finalChanged = this._$eventTarget.removeListener(name, func, options);\n if (finalChanged === 1 /* FinalChanged.Failed */)\n return;\n if (finalChanged !== 0 /* FinalChanged.NotChanged */)\n this._$updateEventDefaultPrevented(name, false);\n if (this instanceof Component && this._$definition._$options.listenerChangeLifetimes) {\n this.triggerLifetime('listenerChanged', [false, name, func, options]);\n }\n };\n /** Get an attribute value ( `null` if not set or removed) */\n Element.prototype.getAttribute = function (name) {\n if (this._$nodeAttributes)\n return this._$nodeAttributes[name];\n return null;\n };\n /** Update an attribute value */\n Element.prototype.updateAttribute = function (name, value) {\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n if (typeof value === 'boolean') {\n if (value === true) {\n this.setAttribute(name, '');\n }\n else {\n this.removeAttribute(name);\n }\n }\n else {\n this.setAttribute(name, value === undefined || value === null ? '' : String(value));\n }\n }\n else {\n if (value === undefined) {\n this.removeAttribute(name);\n }\n else {\n this.setAttribute(name, value);\n }\n }\n };\n /** Set an attribute value */\n Element.prototype.setAttribute = function (name, value) {\n var attrs;\n if (this._$nodeAttributes) {\n attrs = this._$nodeAttributes;\n }\n else {\n attrs = Object.create(null);\n this._$nodeAttributes = attrs;\n }\n attrs[name] = value;\n if (this._$backendElement) {\n this._$backendElement.setAttribute(name, value);\n }\n };\n /** Remove an attribute */\n Element.prototype.removeAttribute = function (name) {\n if (this._$nodeAttributes) {\n delete this._$nodeAttributes[name];\n }\n if (this._$backendElement)\n this._$backendElement.removeAttribute(name);\n };\n /** Set a mark on the element */\n Element.prototype.setMark = function (name, value) {\n if (!this._$marks) {\n var marks = {};\n marks[name] = value;\n this._$marks = marks;\n }\n else {\n this._$marks[name] = value;\n }\n };\n /**\n * Collect the marks on the element\n *\n * The marks includes the marks on ancestors (in shadow tree) of the element.\n * If multiple marks on different elements shares the same name,\n * the mark value on the child-most element is accepted.\n */\n Element.prototype.collectMarks = function () {\n var ret = {};\n var cur;\n var _loop_2 = function () {\n var marks = cur._$marks;\n if (marks) {\n Object.keys(marks).forEach(function (name) {\n if (!Object.prototype.hasOwnProperty.call(ret, name)) {\n ret[name] = marks[name];\n }\n });\n }\n };\n for (cur = this; cur; cur = cur.parentNode) {\n _loop_2();\n }\n return ret;\n };\n /**\n * Attach the element into the backend, swapping out a placeholder element in the backend.\n *\n * The `element` must not be a child node of another element,\n * must not be attached before,\n * and must not have a `ownerShadowRoot` .\n * The `element` `targetParent` and `targetNode` must be in the same backend context.\n * The `element` replaces the `targetNode` in the `targetParent` .\n */\n Element.replaceDocumentElement = function (element, targetParent, targetNode) {\n if (element._$attached) {\n throw new Error('An attached element cannot be attached again');\n }\n if (element._$backendElement) {\n if (BM.DOMLIKE || (BM.DYNAMIC && element.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n targetParent.replaceChild(element._$backendElement, targetNode);\n }\n else {\n targetParent.replaceChild(element._$backendElement, targetNode);\n }\n }\n Element.checkAndCallAttached(element);\n };\n /**\n * Make the element looks like attached.\n *\n * If the element will never be attached to backend or it has no backend element at all,\n * this can be used to trigger `attached` life-time.\n */\n Element.pretendAttached = function (element) {\n if (!element._$attached) {\n Element.checkAndCallAttached(element);\n }\n };\n /**\n * Make the element looks like detached.\n *\n * This can be used to trigger `detached` life-time without remove the element in the backend.\n */\n Element.pretendDetached = function (element) {\n if (element._$attached) {\n Element.checkAndCallDetached(element);\n }\n };\n /** Check the element is attached or not */\n Element.isAttached = function (element) {\n return element._$attached;\n };\n /**\n * Set the slot name of the element\n *\n * Once this method is called for an `element` ,\n * it will be treated as a slot which can contain child nodes in composed tree.\n * This method should not be used in components,\n * otherwise the slot content will always be dangled.\n */\n Element.setSlotName = function (element, name) {\n var _a;\n if (element._$inheritSlots) {\n throw new Error('Slot-inherit mode is not usable in slot element');\n }\n if (element._$inheritSlots) {\n throw new Error('Component cannot be used as slot element');\n }\n var slotName = name ? String(name) : '';\n if (element._$slotName === slotName)\n return;\n var needIncSlotCount = element._$slotName === null;\n element._$slotName = slotName;\n if (BM.SHADOW || (BM.DYNAMIC && element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n (_a = element._$backendElement) === null || _a === void 0 ? void 0 : _a.setSlotName(slotName);\n }\n var owner = element.ownerShadowRoot;\n if (owner) {\n if (needIncSlotCount && owner.isDynamicSlots()) {\n element._$slotValues = Object.create(null);\n }\n Element.updateSlotCount(element, needIncSlotCount ? 1 : 0);\n owner._$checkSlotChanges();\n }\n };\n /**\n * Get the slot name of the element\n */\n Element.getSlotName = function (element) {\n var sn = element._$slotName;\n return sn === null ? undefined : sn;\n };\n /**\n * Set the virtual node to slot-inherit mode\n *\n * In slot-inherit mode of an element,\n * the child nodes of the element will be treated as siblings and can have different target slot.\n */\n Element.setInheritSlots = function (element) {\n var _a;\n if (element._$slotName !== null || element.childNodes.length !== 0) {\n throw new Error('Slot-inherit mode cannot be set when the element has any child node');\n }\n if (BM.SHADOW || (BM.DYNAMIC && element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n (_a = element._$backendElement) === null || _a === void 0 ? void 0 : _a.setSlot(element._$nodeSlot, element._$inheritSlots);\n }\n element._$inheritSlots = true;\n };\n /** Get whether the slot-inherit mode is set or not */\n Element.getInheritSlots = function (element) {\n return element._$inheritSlots;\n };\n /**\n * Set the binding slot of specific node\n *\n * Necessary if node belongs to a dynamic slot, which cannot be identified by slot name.\n */\n Element.setSlotElement = function (node, slot) {\n var oldSlotElement = node._$nodeSlotElement;\n if (oldSlotElement === slot)\n return;\n node._$nodeSlotElement = slot;\n if (node instanceof Element) {\n node._$nodeSlot = slot._$slotName || '';\n }\n // TODO shadow mode\n var parent = node.parentNode;\n var slotParent = parent;\n while (slotParent === null || slotParent === void 0 ? void 0 : slotParent._$inheritSlots) {\n slotParent = slotParent.parentNode;\n }\n if (slotParent instanceof Component && !slotParent._$external) {\n Element.insertChildReassignComposed(parent, node, oldSlotElement, slot, parent.childNodes.indexOf(node) + 1);\n }\n };\n Element.getSlotElement = function (node) {\n if (node._$nodeSlotElement)\n return node._$nodeSlotElement;\n var parent = node.parentNode;\n while (parent === null || parent === void 0 ? void 0 : parent._$inheritSlots) {\n parent = parent.parentNode;\n }\n if (parent instanceof Component && !parent._$external) {\n var slot = parent.shadowRoot.getContainingSlot(node);\n return slot;\n }\n return undefined;\n };\n /** Get composed parent (including virtual nodes) */\n Element.prototype.getComposedParent = function () {\n if (this instanceof ShadowRoot) {\n return this.getHostNode();\n }\n var parent = this.parentNode;\n while (parent === null || parent === void 0 ? void 0 : parent._$inheritSlots) {\n parent = parent.parentNode;\n }\n if (parent instanceof Component && !parent._$external) {\n return parent.shadowRoot.getContainingSlot(this);\n }\n return parent;\n };\n /**\n * Get the composed children\n *\n * This method always returns a new array.\n * It is convinient but less performant.\n * For better performance, consider using `forEachComposedChild` .\n */\n Element.prototype.getComposedChildren = function () {\n var ret = [];\n this.forEachComposedChild(function (child) {\n ret.push(child);\n });\n return ret;\n };\n /**\n * Iterate composed child nodes (including virtual nodes)\n *\n * if `f` returns `false` then the iteration is interrupted.\n * Returns `true` if that happens.\n */\n Element.prototype.forEachComposedChild = function (f) {\n if (this._$inheritSlots)\n return true;\n if (this instanceof Component && !this._$external) {\n return f(this.shadowRoot) !== false;\n }\n if (this._$slotName !== null) {\n var notEnded_1 = true;\n if (this.ownerShadowRoot) {\n this.ownerShadowRoot.forEachNodeInSpecifiedSlot(this, function (node) {\n if (f(node) === false)\n notEnded_1 = false;\n return notEnded_1;\n });\n }\n return notEnded_1;\n }\n var recInheritSlots = function (children) {\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n if (f(child) === false)\n return false;\n if (child instanceof Element && child._$inheritSlots) {\n if (!recInheritSlots(child.childNodes))\n return false;\n }\n }\n return true;\n };\n if (!recInheritSlots(this.childNodes))\n return false;\n return true;\n };\n /** Parse a selector string so that it can be used multiple queries */\n Element.parseSelector = function (str) {\n return new ParsedSelector(str);\n };\n /** Select the first descendant which matches the selector */\n Element.prototype.querySelector = function (selectorStr) {\n var parsedSelector = selectorStr instanceof ParsedSelector\n ? selectorStr\n : new ParsedSelector(selectorStr);\n var ret = parsedSelector.query(this, true);\n return ret;\n };\n /** Select all descendants which matches the selector */\n Element.prototype.querySelectorAll = function (selectorStr) {\n var parsedSelector = selectorStr instanceof ParsedSelector\n ? selectorStr\n : new ParsedSelector(selectorStr);\n var ret = parsedSelector.query(this, false);\n return ret;\n };\n /** Test whether the target matches the selector */\n Element.matchSelector = function (selectorStr, target) {\n var parsedSelector = selectorStr instanceof ParsedSelector\n ? selectorStr\n : new ParsedSelector(selectorStr);\n return parsedSelector.testSelector(null, target);\n };\n /** Test whether the target in this subtree matches the selector */\n Element.prototype.matchSelector = function (selectorStr, target) {\n var parsedSelector = selectorStr instanceof ParsedSelector\n ? selectorStr\n : new ParsedSelector(selectorStr);\n return parsedSelector.testSelector(this, target);\n };\n /**\n * Get the bounding client rect\n *\n * Return zero values when the backend element is invalid or it does not have layout information.\n */\n Element.prototype.getBoundingClientRect = function (cb) {\n var backendElement = this._$backendElement;\n if (backendElement) {\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n var e = backendElement;\n var res_1 = e.getBoundingClientRect();\n setTimeout(function () {\n cb(res_1);\n }, 0);\n }\n else {\n backendElement.getBoundingClientRect(cb);\n }\n }\n else {\n setTimeout(function () {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n }\n };\n /**\n * Get the bounding client rect\n *\n * Return zero values when the backend element is invalid or it does not have layout information.\n */\n Element.prototype.getScrollOffset = function (cb) {\n var backendElement = this._$backendElement;\n if (backendElement) {\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n var e = backendElement;\n var res_2 = {\n scrollLeft: e.scrollLeft,\n scrollTop: e.scrollTop,\n scrollWidth: e.scrollWidth,\n scrollHeight: e.scrollHeight,\n };\n setTimeout(function () {\n cb(res_2);\n }, 0);\n }\n else {\n backendElement.getScrollOffset(cb);\n }\n }\n else {\n setTimeout(function () {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n }\n };\n return Element;\n}());\nexport { Element };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Element, } from './element';\nimport { BM, } from './backend/mode';\nvar VirtualNode = /** @class */ (function (_super) {\n __extends(VirtualNode, _super);\n function VirtualNode() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n return _super.call(this) || this;\n }\n VirtualNode.prototype._$initializeVirtual = function (virtualName, owner, nodeTreeContext) {\n this.is = String(virtualName);\n var backendElement = null;\n if (owner) {\n if (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */)) {\n var shadowRoot = owner._$backendShadowRoot;\n backendElement = (shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.createVirtualNode()) || null;\n this._$initialize(true, backendElement, owner);\n backendElement === null || backendElement === void 0 ? void 0 : backendElement.associateValue(this);\n }\n else {\n this._$initialize(true, null, owner);\n }\n }\n };\n VirtualNode.create = function (virtualName, owner) {\n var node = Object.create(VirtualNode.prototype);\n node._$initializeVirtual(virtualName, owner, owner._$nodeTreeContext);\n return node;\n };\n return VirtualNode;\n}(Element));\nexport { VirtualNode };\n","import { VirtualNode, } from './virtual_node';\nimport { Behavior, } from './behavior';\nimport { Component, } from './component';\nimport { Element, } from './element';\nimport { safeCallback, triggerWarning, } from './func_arr';\nimport { TraitBehavior } from './trait_behaviors';\nexport var RelationType;\n(function (RelationType) {\n RelationType[RelationType[\"Ancestor\"] = 0] = \"Ancestor\";\n RelationType[RelationType[\"Descendant\"] = 1] = \"Descendant\";\n RelationType[RelationType[\"ParentNonVirtualNode\"] = 2] = \"ParentNonVirtualNode\";\n RelationType[RelationType[\"ChildNonVirtualNode\"] = 3] = \"ChildNonVirtualNode\";\n RelationType[RelationType[\"ParentComponent\"] = 4] = \"ParentComponent\";\n RelationType[RelationType[\"ChildComponent\"] = 5] = \"ChildComponent\";\n})(RelationType || (RelationType = {}));\nvar RELATION_TYPE_COUNT = 6;\nexport var generateRelationDefinitionGroup = function (relations) {\n if (relations === undefined)\n return null;\n var group = {\n definitions: new Array(RELATION_TYPE_COUNT),\n keyMap: Object.create(null),\n };\n var defs = group.definitions;\n var keyMap = group.keyMap;\n var keys = Object.keys(relations);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var relation = relations[key];\n var relationType = relation.type;\n if (defs[relationType]) {\n keyMap[key] = [relationType, defs[relationType].length];\n defs[relationType].push(relation);\n }\n else {\n keyMap[key] = [relationType, 0];\n defs[relationType] = [relation];\n }\n }\n return group;\n};\nexport var cloneRelationDefinitionGroup = function (group) {\n var newGroup = {\n definitions: group.definitions.slice(),\n keyMap: Object.assign(Object.create(null), group.keyMap),\n };\n return newGroup;\n};\nvar Relation = /** @class */ (function () {\n function Relation(associatedComponent, group) {\n this._$comp = associatedComponent;\n var links = new Array(RELATION_TYPE_COUNT);\n if (group) {\n for (var type = 0; type < RELATION_TYPE_COUNT; type += 1) {\n var definitions = group.definitions[type];\n if (definitions) {\n var link = new Array(definitions.length);\n for (var i = 0; i < definitions.length; i += 1) {\n link[i] = null;\n }\n links[type] = link;\n }\n }\n }\n this._$group = group;\n this._$sharedGroup = true;\n this._$links = links;\n }\n Relation.prototype.add = function (relation) {\n if (this._$sharedGroup) {\n this._$sharedGroup = false;\n var group = this._$group;\n if (group) {\n this._$group = {\n definitions: group.definitions.slice(),\n keyMap: Object.assign(Object.create(null), group.keyMap),\n };\n }\n else {\n this._$group = {\n definitions: new Array(RELATION_TYPE_COUNT),\n keyMap: Object.create(null),\n };\n }\n }\n var key = Symbol('');\n var defs = this._$group.definitions;\n var keyMap = this._$group.keyMap;\n var relationType = relation.type;\n if (defs[relationType]) {\n keyMap[key] = [relationType, defs[relationType].length];\n defs[relationType].push(relation);\n }\n else {\n keyMap[key] = [relationType, 0];\n defs[relationType] = [relation];\n }\n var linksGroup = this._$links;\n if (linksGroup[relationType] === undefined) {\n linksGroup[relationType] = [null];\n }\n else {\n linksGroup[relationType].push(null);\n }\n return key;\n };\n Relation.prototype.triggerLinkEvent = function (parentType, isDetach) {\n var _a, _b;\n var comp = this._$comp;\n var linksGroup = this._$links;\n var selfDefs = (_a = this._$group) === null || _a === void 0 ? void 0 : _a.definitions[parentType];\n if (!selfDefs)\n return;\n for (var i = 0; i < selfDefs.length; i += 1) {\n var links = linksGroup[parentType];\n var oldLink = links[i];\n var newLink = null;\n var def = selfDefs[i];\n var parentBeheviorTest = void 0;\n if (def.target instanceof Behavior || def.target instanceof TraitBehavior) {\n parentBeheviorTest = def.target;\n }\n else {\n var space = comp.getRootBehavior().ownerSpace;\n if (space) {\n parentBeheviorTest = space._$getBehavior(def.target, def.domain) || null;\n }\n else {\n parentBeheviorTest = null;\n }\n }\n if (parentBeheviorTest) {\n var parentBehevior = parentBeheviorTest;\n if (!isDetach) {\n var cur = comp;\n for (;;) {\n var next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (cur instanceof VirtualNode) {\n continue;\n }\n if (cur instanceof Component) {\n if (cur.hasBehavior(parentBehevior)) {\n var parentRelation = cur._$relation;\n if (parentRelation) {\n var rt = void 0;\n if (parentType === 4 /* RelationType.ParentComponent */) {\n rt = 5 /* RelationType.ChildComponent */;\n }\n else if (parentType === 0 /* RelationType.Ancestor */) {\n rt = 1 /* RelationType.Descendant */;\n }\n else {\n rt = 3 /* RelationType.ChildNonVirtualNode */;\n }\n var parentDefs = (_b = parentRelation._$group) === null || _b === void 0 ? void 0 : _b.definitions[rt];\n if (parentDefs) {\n for (var j = 0; j < parentDefs.length; j += 1) {\n var def_1 = parentDefs[j];\n var requiredBehavior = void 0;\n if (def_1.target instanceof Behavior || def_1.target instanceof TraitBehavior) {\n requiredBehavior = def_1.target;\n }\n else {\n var space = cur.getRootBehavior().ownerSpace;\n if (space) {\n requiredBehavior = space._$getBehavior(def_1.target, def_1.domain) || null;\n }\n else {\n requiredBehavior = null;\n }\n }\n if (requiredBehavior && this._$comp.hasBehavior(requiredBehavior)) {\n newLink = {\n target: cur,\n def: def_1,\n };\n break;\n }\n }\n }\n }\n }\n if (parentType === 4 /* RelationType.ParentComponent */)\n break;\n }\n if (parentType === 2 /* RelationType.ParentNonVirtualNode */)\n break;\n }\n }\n }\n links[i] = newLink;\n if (oldLink) {\n var oldTarget = oldLink.target;\n var oldDef = oldLink.def;\n if ((!newLink || oldLink.target !== newLink.target || oldLink.def !== newLink.def)) {\n if (oldDef.unlinked) {\n safeCallback('Relation Unlinked Callback', oldDef.unlinked, oldTarget.getMethodCaller(), [comp.getMethodCaller()], oldTarget);\n }\n if (def.unlinked) {\n safeCallback('Relation Unlinked Callback', def.unlinked, comp.getMethodCaller(), [oldTarget.getMethodCaller()], comp);\n }\n }\n else {\n if (oldDef.linkChanged) {\n safeCallback('Relation Link Changed Callback', oldDef.linkChanged, oldTarget.getMethodCaller(), [comp.getMethodCaller()], oldTarget);\n }\n if (def.linkChanged) {\n safeCallback('Relation Link Changed Callback', def.linkChanged, comp.getMethodCaller(), [oldTarget.getMethodCaller()], comp);\n }\n }\n }\n if (newLink) {\n var newTarget = newLink.target;\n var newDef = newLink.def;\n if (!oldLink || oldLink.target !== newLink.target || oldLink.def !== newLink.def) {\n if (newDef.linked) {\n safeCallback('Relation Linked Callback', newDef.linked, newTarget.getMethodCaller(), [comp.getMethodCaller()], newTarget);\n }\n if (def.linked) {\n safeCallback('Relation Linked Callback', def.linked, comp.getMethodCaller(), [newTarget.getMethodCaller()], comp);\n }\n }\n }\n if (!isDetach && !newLink && def.linkFailed) {\n safeCallback('Relation Link Failed Callback', def.linkFailed, comp.getMethodCaller(), [], comp);\n }\n }\n };\n Relation.prototype.getLinkedTargets = function (key) {\n var _a, _b, _c, _d;\n var typeWithIndex = (_a = this._$group) === null || _a === void 0 ? void 0 : _a.keyMap[key];\n if (!typeWithIndex) {\n triggerWarning(\"no relation \\\"\".concat(String(key), \"\\\" found.\"));\n return [];\n }\n var type = typeWithIndex[0], index = typeWithIndex[1];\n if (type === 4 /* RelationType.ParentComponent */\n || type === 2 /* RelationType.ParentNonVirtualNode */\n || type === 0 /* RelationType.Ancestor */) {\n var link = (_b = this._$links[type]) === null || _b === void 0 ? void 0 : _b[index];\n if (link)\n return [link.target];\n return [];\n }\n var ret = [];\n var comp = this._$comp;\n var def = (_d = (_c = this._$group) === null || _c === void 0 ? void 0 : _c.definitions[type]) === null || _d === void 0 ? void 0 : _d[index];\n var dfs = function (node) {\n var children = node.childNodes;\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n if (!(child instanceof Element))\n continue;\n if (child instanceof VirtualNode) {\n dfs(child);\n continue;\n }\n if (child instanceof Component) {\n if (child._$relation) {\n var links = void 0;\n if (type === 5 /* RelationType.ChildComponent */) {\n links = child._$relation._$links[4 /* RelationType.ParentComponent */];\n }\n else if (type === 1 /* RelationType.Descendant */) {\n links = child._$relation._$links[0 /* RelationType.Ancestor */];\n }\n else {\n links = child._$relation._$links[2 /* RelationType.ParentNonVirtualNode */];\n }\n if (links) {\n for (var i_1 = 0; i_1 < links.length; i_1 += 1) {\n var link = links[i_1];\n if (link && link.target === comp && link.def === def) {\n ret.push(child);\n break;\n }\n }\n }\n }\n if (type === 1 /* RelationType.Descendant */)\n dfs(child);\n }\n else {\n if (type === 5 /* RelationType.ChildComponent */ || type === 1 /* RelationType.Descendant */)\n dfs(child);\n }\n }\n };\n dfs(this._$comp);\n return ret;\n };\n return Relation;\n}());\nexport { Relation };\n","export var METHOD_TAG = Symbol('method');\n","/**\n * Interface that can be implement dynamically\n *\n * A `TraitBehavior` is like a TypeScript interface, but can be implemented dynamically.\n * It requires the implementors to implement `TIn` .\n * Also, it can provide do a transform from `TIn` to `TOut` as common logic of the trait.\n */\nvar TraitBehavior = /** @class */ (function () {\n /** @internal */\n // eslint-disable-next-line no-useless-constructor\n function TraitBehavior(ownerSpace, trans) {\n this.ownerSpace = ownerSpace;\n this._$trans = trans;\n }\n /** @internal */\n TraitBehavior.prototype._$implement = function (impl) {\n var _a;\n return ((_a = this._$trans) === null || _a === void 0 ? void 0 : _a.call(this, impl)) || impl;\n };\n return TraitBehavior;\n}());\nexport { TraitBehavior };\n/**\n * A manager that can implement multiple different trait behaviors\n */\nvar TraitGroup = /** @class */ (function () {\n function TraitGroup() {\n this._$traits = new WeakMap();\n }\n TraitGroup.prototype.implement = function (traitBehavior, impl) {\n var traitImpl = traitBehavior._$implement(impl);\n this._$traits.set(traitBehavior, traitImpl);\n };\n TraitGroup.prototype.get = function (traitBehavior) {\n return this._$traits.get(traitBehavior);\n };\n return TraitGroup;\n}());\nexport { TraitGroup };\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { FuncArr, triggerWarning, } from './func_arr';\nimport { getDefaultComponentSpace, } from './global_options';\nimport { parseMultiPaths, } from './data_path';\nimport { DataGroupObserverTree, } from './data_proxy';\nimport { ComponentDefinition, } from './component';\nimport { normalizeUrl, } from './component_space';\nimport { TraitBehavior } from './trait_behaviors';\nimport { simpleDeepCopy } from './data_utils';\nexport var NormalizedPropertyType;\n(function (NormalizedPropertyType) {\n NormalizedPropertyType[NormalizedPropertyType[\"Invalid\"] = 0] = \"Invalid\";\n NormalizedPropertyType[NormalizedPropertyType[\"Any\"] = 1] = \"Any\";\n NormalizedPropertyType[NormalizedPropertyType[\"String\"] = 2] = \"String\";\n NormalizedPropertyType[NormalizedPropertyType[\"Number\"] = 3] = \"Number\";\n NormalizedPropertyType[NormalizedPropertyType[\"Boolean\"] = 4] = \"Boolean\";\n NormalizedPropertyType[NormalizedPropertyType[\"Object\"] = 5] = \"Object\";\n NormalizedPropertyType[NormalizedPropertyType[\"Array\"] = 6] = \"Array\";\n NormalizedPropertyType[NormalizedPropertyType[\"Function\"] = 7] = \"Function\";\n})(NormalizedPropertyType || (NormalizedPropertyType = {}));\nvar shallowMerge = function (dest, src) {\n var keys = Object.keys(src);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n if (Object.prototype.hasOwnProperty.call(dest, key)) {\n if (key[0] === '_') {\n triggerWarning(\"data field \\\"\".concat(key, \"\\\" from different behaviors is overriding or merging.\"));\n }\n if (typeof dest[key] === 'object'\n && typeof src[key] === 'object'\n && src[key] !== null\n && !Array.isArray(src[key])) {\n if (Array.isArray(dest[key])) {\n dest[key] = dest[key].slice();\n }\n else {\n var oldDest = dest[key];\n var newDest = {};\n var subKeys = Object.keys(oldDest);\n for (var i_1 = 0; i_1 < subKeys.length; i_1 += 1) {\n var subKey = subKeys[i_1];\n newDest[subKey] = oldDest[subKey];\n }\n dest[key] = newDest;\n }\n shallowMerge(dest[key], src[key]);\n }\n else {\n dest[key] = src[key];\n }\n }\n else {\n dest[key] = src[key];\n }\n }\n};\nvar normalizePropertyTypeShortHand = function (propDef) {\n if (propDef === String) {\n return {\n type: 2 /* NormalizedPropertyType.String */,\n optionalTypes: null,\n value: '',\n default: undefined,\n observer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === Number) {\n return {\n type: 3 /* NormalizedPropertyType.Number */,\n optionalTypes: null,\n value: 0,\n default: undefined,\n observer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === Boolean) {\n return {\n type: 4 /* NormalizedPropertyType.Boolean */,\n optionalTypes: null,\n value: false,\n default: undefined,\n observer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === Object) {\n return {\n type: 5 /* NormalizedPropertyType.Object */,\n optionalTypes: null,\n value: null,\n default: undefined,\n observer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === Array) {\n return {\n type: 6 /* NormalizedPropertyType.Array */,\n optionalTypes: null,\n value: [],\n default: undefined,\n observer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === Function) {\n return {\n type: 7 /* NormalizedPropertyType.Function */,\n optionalTypes: null,\n value: function () { },\n default: undefined,\n observer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === null || propDef === undefined) {\n return {\n type: 1 /* NormalizedPropertyType.Any */,\n optionalTypes: null,\n value: null,\n default: undefined,\n observer: null,\n reflectIdPrefix: false,\n };\n }\n return null;\n};\nvar normalizePropertyType = function (t) {\n if (t === String) {\n return 2 /* NormalizedPropertyType.String */;\n }\n if (t === Number) {\n return 3 /* NormalizedPropertyType.Number */;\n }\n if (t === Boolean) {\n return 4 /* NormalizedPropertyType.Boolean */;\n }\n if (t === Object) {\n return 5 /* NormalizedPropertyType.Object */;\n }\n if (t === Array) {\n return 6 /* NormalizedPropertyType.Array */;\n }\n if (t === Function) {\n return 7 /* NormalizedPropertyType.Function */;\n }\n if (t === null || t === undefined) {\n return 1 /* NormalizedPropertyType.Any */;\n }\n return 0 /* NormalizedPropertyType.Invalid */;\n};\nexport var convertValueToType = function (value, propName, prop) {\n var type = prop.type;\n var defaultFn = prop.default;\n // try match optional types\n var optionalTypes = prop.optionalTypes;\n if (optionalTypes) {\n for (var i = 0; i < optionalTypes.length; i += 1) {\n if (matchTypeWithValue(optionalTypes[i], value)) {\n return value;\n }\n }\n }\n // for string\n if (type === 2 /* NormalizedPropertyType.String */) {\n if (value === null || value === undefined) {\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <String> but get null value. Used default value instead.\"));\n return defaultFn === undefined ? '' : defaultFn();\n }\n if (typeof value === 'object') {\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <String> but got object-typed value. Force converted.\"));\n }\n return String(value);\n }\n // for number\n if (type === 3 /* NormalizedPropertyType.Number */) {\n // eslint-disable-next-line no-restricted-globals\n if (isFinite(value))\n return Number(value);\n if (typeof value === 'number') {\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <Number> but got NaN or Infinity. Used default value instead.\"));\n }\n else {\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <Number> but got non-number value. Used default value instead.\"));\n }\n return defaultFn === undefined ? 0 : defaultFn();\n }\n // for boolean\n if (type === 4 /* NormalizedPropertyType.Boolean */) {\n return !!value;\n }\n // for array\n if (type === 6 /* NormalizedPropertyType.Array */) {\n if (Array.isArray(value))\n return value;\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <Array> but got non-array value. Used default value instead.\"));\n return defaultFn === undefined ? [] : defaultFn();\n }\n // for object\n if (type === 5 /* NormalizedPropertyType.Object */) {\n if (typeof value === 'object')\n return value;\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <Object> but got non-object value. Used default value instead.\"));\n return defaultFn === undefined ? null : defaultFn();\n }\n // for function\n if (type === 7 /* NormalizedPropertyType.Function */) {\n if (typeof value === 'function')\n return value;\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <Function> but got non-function value. Used default value instead.\"));\n // eslint-disable-next-line func-names\n return defaultFn === undefined ? function () { } : defaultFn();\n }\n // for any-typed, just return the value and avoid undefined\n if (value === undefined)\n return defaultFn === undefined ? null : defaultFn();\n return value;\n};\nexport var matchTypeWithValue = function (type, value) {\n if (type === 2 /* NormalizedPropertyType.String */) {\n if (typeof value !== 'string')\n return false;\n }\n else if (type === 3 /* NormalizedPropertyType.Number */) {\n if (!Number.isFinite(value))\n return false;\n }\n else if (type === 4 /* NormalizedPropertyType.Boolean */) {\n if (typeof value !== 'boolean')\n return false;\n }\n else if (type === 5 /* NormalizedPropertyType.Object */) {\n if (typeof value !== 'object' || Array.isArray(value))\n return false;\n }\n else if (type === 6 /* NormalizedPropertyType.Array */) {\n if (typeof value !== 'object' || !Array.isArray(value))\n return false;\n }\n else if (type === 7 /* NormalizedPropertyType.Function */) {\n if (typeof value !== 'function')\n return false;\n }\n else if (value === undefined) {\n return false;\n }\n return true;\n};\nexport var normalizeRelation = function (is, key, relation) {\n var checkRelationFunc = function (f) {\n if (typeof f === 'function') {\n return f;\n }\n if (f !== undefined) {\n triggerWarning(\"the \\\"\".concat(key, \"\\\" relation listener is not a function (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n return null;\n };\n var type;\n if (relation.type === 'parent') {\n type = 4 /* RelationType.ParentComponent */;\n }\n else if (relation.type === 'child') {\n type = 5 /* RelationType.ChildComponent */;\n }\n else if (relation.type === 'parent-common-node') {\n type = 2 /* RelationType.ParentNonVirtualNode */;\n }\n else if (relation.type === 'child-common-node') {\n type = 3 /* RelationType.ChildNonVirtualNode */;\n }\n else if (relation.type === 'ancestor') {\n type = 0 /* RelationType.Ancestor */;\n }\n else if (relation.type === 'descendant') {\n type = 1 /* RelationType.Descendant */;\n }\n else {\n var type_1 = relation.type;\n triggerWarning(\"the \\\"\".concat(key, \"\\\" relation has an invalid relation type \\\"\").concat(type_1, \"\\\" (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n return null;\n }\n var target;\n var domain = null;\n if (relation.target instanceof ComponentDefinition) {\n target = relation.target.behavior;\n }\n else if (relation.target instanceof Behavior || relation.target instanceof TraitBehavior) {\n target = relation.target;\n }\n else {\n var _a = normalizeUrl(relation.target || key, is), d = _a.domain, absPath = _a.absPath;\n target = absPath;\n domain = d;\n }\n if (!target) {\n triggerWarning(\"the target of relation \\\"\".concat(key, \"\\\" is not a valid behavior or component (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n return null;\n }\n return {\n target: target,\n domain: domain,\n type: type,\n linked: checkRelationFunc(relation.linked),\n linkChanged: checkRelationFunc(relation.linkChanged),\n unlinked: checkRelationFunc(relation.unlinked),\n linkFailed: checkRelationFunc(relation.linkFailed),\n };\n};\nvar BehaviorBuilder = /** @class */ (function () {\n /** @internal */\n function BehaviorBuilder(is, ownerSpace) {\n /** @internal */\n this._$behaviors = [];\n /** @internal */\n this._$traitBehaviors = [];\n /** @internal */\n this._$staticData = undefined;\n /** @internal */\n this._$data = [];\n /** @internal */\n this._$methods = [];\n /** @internal */\n this._$lifetimes = [];\n /** @internal */\n this._$pageLifetimes = [];\n /** @internal */\n this._$init = [];\n this._$is = is;\n this._$ownerSpace = ownerSpace;\n }\n /**\n * Set a front-most init function\n *\n * It should return the method caller (the `this` value for various callbacks)\n * that will be used in future.\n */\n BehaviorBuilder.prototype.methodCallerInit = function (func) {\n this._$methodCallerInit = func;\n return this;\n };\n /**\n * Add a behavior\n *\n * If the behavior contains a chaining filter, the chaining filter is called.\n */\n BehaviorBuilder.prototype.behavior = function (behavior) {\n this._$behaviors.push(behavior);\n if (behavior._$chainingFilter) {\n return behavior._$chainingFilter(this);\n }\n return this;\n };\n /**\n * Set the chaining filter\n *\n * The chaining filter is the definition filter for chaining API.\n * It SHOULD return another chainable object for further chaining.\n */\n BehaviorBuilder.prototype.chainingFilter = function (func) {\n this._$chainingFilter = func;\n return this;\n };\n /**\n * Set component options\n *\n * The options will be merged with previous settings.\n */\n BehaviorBuilder.prototype.options = function (options) {\n var oldOptions = this._$options;\n if (oldOptions) {\n this._$options = __assign(__assign({}, oldOptions), options);\n }\n else {\n this._$options = options;\n }\n return this;\n };\n /**\n * Implement a trait behavior\n */\n BehaviorBuilder.prototype.implement = function (traitBehavior, impl) {\n this._$traitBehaviors.push({ traitBehavior: traitBehavior, impl: impl });\n return this;\n };\n /**\n * Set the compiled template object\n */\n BehaviorBuilder.prototype.template = function (template) {\n this._$template = template;\n return this;\n };\n /**\n * Add other components to the component using list\n */\n BehaviorBuilder.prototype.usingComponents = function (list) {\n if (this._$using)\n this._$using = __assign(__assign({}, this._$using), list);\n else\n this._$using = list;\n return this;\n };\n /**\n * Add some placeholders\n *\n * The alias SHOULD be in the using list, otherwise it will be ignored.\n */\n BehaviorBuilder.prototype.placeholders = function (list) {\n if (this._$placeholders)\n this._$placeholders = __assign(__assign({}, this._$placeholders), list);\n else\n this._$placeholders = list;\n return this;\n };\n /**\n * Add other generics\n *\n * The alias SHOULD NOT be in the using list, otherwise it will be ignored.\n */\n BehaviorBuilder.prototype.generics = function (list) {\n if (this._$generics)\n this._$generics = __assign(__assign({}, this._$generics), list);\n else\n this._$generics = list;\n return this;\n };\n /**\n * Add external classes\n */\n BehaviorBuilder.prototype.externalClasses = function (list) {\n if (this._$externalClasses)\n this._$externalClasses = this._$externalClasses.concat(list);\n else\n this._$externalClasses = list;\n return this;\n };\n /**\n * Add some template data fields\n *\n * It does not support raw data, but a `gen` function which returns the new data fields.\n * The `gen` function executes once during component creation.\n */\n BehaviorBuilder.prototype.data = function (gen) {\n this._$data.push(gen);\n return this;\n };\n /**\n * Set the static template data fields\n *\n * The data will be cloned once during component creation.\n * If called multiple times, the static data will be overwritten but not merged!\n * Usually, the `data()` method is preferred.\n */\n BehaviorBuilder.prototype.staticData = function (data) {\n this._$staticData = data;\n return this;\n };\n /**\n * Add a single property\n *\n * The property name should be different from other properties.\n */\n BehaviorBuilder.prototype.property = function (name, def) {\n if (!this._$properties)\n this._$properties = [];\n this._$properties.push({ name: name, def: def });\n return this;\n };\n /**\n * Add a single public method\n *\n * The public method can be used as an event handler, and can be visited in component instance.\n */\n BehaviorBuilder.prototype.methods = function (funcs) {\n var keys = Object.keys(funcs);\n for (var i = 0; i < keys.length; i += 1) {\n var name_1 = keys[i];\n var func = funcs[name_1];\n this._$methods.push({ name: name_1, func: func });\n }\n return this;\n };\n BehaviorBuilder.prototype.observer = function (paths, func, once) {\n if (once === void 0) { once = false; }\n if (!this._$observers)\n this._$observers = [];\n this._$observers.push({ dataPaths: parseMultiPaths(paths), func: func, once: once });\n return this;\n };\n /**\n * Add a lifetime callback\n */\n BehaviorBuilder.prototype.lifetime = function (name, func, once) {\n if (once === void 0) { once = false; }\n this._$lifetimes.push({ name: name, func: func, once: once });\n return this;\n };\n /**\n * Add a page-lifetime callback\n */\n BehaviorBuilder.prototype.pageLifetime = function (name, func, once) {\n if (once === void 0) { once = false; }\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n this._$pageLifetimes.push({ name: name, func: func, once: once });\n return this;\n };\n /**\n * Add a relation\n */\n BehaviorBuilder.prototype.relation = function (name, rel) {\n if (!this._$relations)\n this._$relations = [];\n this._$relations.push({ name: name, rel: rel });\n return this;\n };\n /**\n * Execute a function while component instance creation\n *\n * A `BuilderContext` is provided to tweak the component creation progress.\n * The return value is used as the \"export\" value of the behavior,\n * which can be imported by other behaviors.\n */\n BehaviorBuilder.prototype.init = function (func) {\n this._$init.push(func);\n return this;\n };\n /**\n * Apply a classic-style definition\n */\n BehaviorBuilder.prototype.definition = function (def) {\n var _a;\n if (def.behaviors)\n (_a = this._$behaviors).push.apply(_a, def.behaviors);\n if (def.options)\n this.options(def.options);\n if (def.template)\n this.template(def.template);\n if (def.using)\n this.usingComponents(def.using);\n if (def.placeholders)\n this.placeholders(def.placeholders);\n if (def.generics)\n this.generics(def.generics);\n if (def.externalClasses)\n this.externalClasses(def.externalClasses);\n var rawData = def.data;\n if (rawData !== undefined) {\n if (typeof rawData === 'function') {\n this._$data.push(rawData);\n }\n else {\n this._$staticData = rawData;\n }\n }\n var rawProperties = def.properties;\n if (rawProperties !== undefined) {\n if (!this._$properties)\n this._$properties = [];\n var keys = Object.keys(rawProperties);\n for (var i = 0; i < keys.length; i += 1) {\n var name_2 = keys[i];\n var def_1 = rawProperties[name_2];\n this._$properties.push({ name: name_2, def: def_1 });\n }\n }\n var rawMethods = def.methods;\n if (rawMethods !== undefined) {\n var keys = Object.keys(rawMethods);\n for (var i = 0; i < keys.length; i += 1) {\n var name_3 = keys[i];\n var func = rawMethods[name_3];\n this._$methods.push({ name: name_3, func: func });\n }\n }\n var rawObservers = def.observers;\n if (rawObservers !== undefined) {\n if (!this._$observers)\n this._$observers = [];\n if (Array.isArray(rawObservers)) {\n for (var i = 0; i < rawObservers.length; i += 1) {\n var _b = rawObservers[i], fields = _b.fields, observer = _b.observer;\n this._$observers.push({ dataPaths: parseMultiPaths(fields !== null && fields !== void 0 ? fields : '**'), func: observer, once: false });\n }\n }\n else {\n var keys = Object.keys(rawObservers);\n for (var i = 0; i < keys.length; i += 1) {\n var fields = keys[i];\n var observer = rawObservers[fields];\n this._$observers.push({ dataPaths: parseMultiPaths(fields), func: observer, once: false });\n }\n }\n }\n var rawLifetimes = def.lifetimes;\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.created) === undefined && typeof def.created === 'function') {\n this._$lifetimes.push({ name: 'created', func: def.created, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.attached) === undefined && typeof def.attached === 'function') {\n this._$lifetimes.push({ name: 'attached', func: def.attached, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.moved) === undefined && typeof def.moved === 'function') {\n this._$lifetimes.push({ name: 'moved', func: def.moved, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.detached) === undefined && typeof def.detached === 'function') {\n this._$lifetimes.push({ name: 'detached', func: def.detached, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.ready) === undefined && typeof def.ready === 'function') {\n this._$lifetimes.push({ name: 'ready', func: def.ready, once: true });\n }\n if (rawLifetimes) {\n var keys = Object.keys(rawLifetimes);\n for (var i = 0; i < keys.length; i += 1) {\n var name_4 = keys[i];\n var func = rawLifetimes[name_4];\n this._$lifetimes.push({ name: name_4, func: func, once: true });\n }\n }\n var rawPageLifetimes = def.pageLifetimes;\n if (rawPageLifetimes) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n var keys = Object.keys(rawPageLifetimes);\n for (var i = 0; i < keys.length; i += 1) {\n var name_5 = keys[i];\n var func = rawPageLifetimes[name_5];\n this._$pageLifetimes.push({ name: name_5, func: func, once: true });\n }\n }\n this._$listeners = def.listeners;\n var rawRelations = def.relations;\n if (rawRelations) {\n if (!this._$relations)\n this._$relations = [];\n var keys = Object.keys(rawRelations);\n for (var i = 0; i < keys.length; i += 1) {\n var name_6 = keys[i];\n var rel = rawRelations[name_6];\n this._$relations.push({ name: name_6, rel: rel });\n }\n }\n return this;\n };\n /**\n * Finish build, generate a behavior, and register it in the component space\n */\n BehaviorBuilder.prototype.registerBehavior = function () {\n var is = this._$is;\n var behavior = new Behavior(this);\n if (is !== undefined) {\n this._$ownerSpace._$registerBehavior(is, behavior);\n }\n return behavior;\n };\n /**\n * Finish build, generate a component definition, and register it in the component space\n */\n BehaviorBuilder.prototype.registerComponent = function () {\n var is = this._$is;\n var behavior = new Behavior(this);\n var compDef = new ComponentDefinition(behavior);\n if (is !== undefined) {\n this._$ownerSpace._$registerComponent(is, compDef);\n }\n return compDef;\n };\n return BehaviorBuilder;\n}());\nexport { BehaviorBuilder };\n/**\n * Common mixin-like behavior\n *\n * Each component definition contains a single *root* behavior.\n * A behavior can mixin other behaviors.\n */\nvar Behavior = /** @class */ (function () {\n /** @internal */\n function Behavior(builder) {\n this._$unprepared = true;\n this.is = builder._$is || '';\n this.ownerSpace = builder._$ownerSpace;\n this._$builder = builder;\n this._$flatAncestors = new Set();\n this._$chainingFilter = builder._$chainingFilter;\n this._$options = builder._$options;\n this._$traitBehaviors = undefined;\n this._$template = builder._$template;\n this._$using = Object.create(null);\n this._$generics = undefined;\n this._$genericDefaults = undefined;\n this._$externalClasses = builder._$externalClasses;\n this._$staticData = undefined;\n this._$data = [];\n this._$propertyMap = Object.create(null);\n this._$methodMap = Object.create(null);\n this._$observers = [];\n this._$lifetimes = [];\n this._$pageLifetimes = undefined;\n this._$listeners = undefined;\n this._$relationMap = undefined;\n this._$init = [];\n this._$methodCallerInit = builder._$methodCallerInit;\n }\n /**\n * Create a behavior with classic-style definition\n */\n Behavior.create = function (def, ownerSpace) {\n return new BehaviorBuilder(def.is, ownerSpace || getDefaultComponentSpace())\n .definition(def)\n .registerBehavior();\n };\n Behavior.prototype.general = function () {\n return this;\n };\n /**\n * List all component dependencies (recursively)\n *\n * This method will prepare the underlying behavior.\n */\n Behavior.prototype.getComponentDependencies = function (genericTargets) {\n var ret = new Set();\n var rec = function (beh) {\n if (beh._$unprepared)\n beh.prepare();\n var keys = Object.keys(beh._$using);\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n var v = beh._$using[k];\n var dep = v.final;\n if (dep && !ret.has(dep)) {\n ret.add(dep);\n rec(dep.behavior);\n }\n }\n };\n rec(this.general());\n if (genericTargets) {\n var list = Object.values(genericTargets);\n for (var i = 0; i < list.length; i += 1) {\n var dep = list[i];\n if (!ret.has(dep)) {\n ret.add(dep);\n rec(dep.behavior);\n }\n }\n }\n return ret;\n };\n /** Same as `prepare` method in the prototype (for backward compatibility) */\n Behavior.prepare = function (behavior) {\n behavior.prepare();\n };\n /**\n * Execute the prepare phase (an optimization phase) of this behavior\n *\n * Every behavior needs this phase for better future performance.\n * However, this phase requires a little time for execution,\n * and requires its all dependent behaviors created.\n * If a dependent behavior is not prepared, then its prepare phase is also executed.\n */\n Behavior.prototype.prepare = function () {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n var _k;\n if (!this._$unprepared)\n return;\n this._$unprepared = false;\n var is = this.is;\n var space = this.ownerSpace;\n var builder = this._$builder;\n // mixin dependent behaviors\n var flatAncestors = this._$flatAncestors;\n if (Array.isArray(builder._$behaviors)) {\n for (var i = 0; i < builder._$behaviors.length; i += 1) {\n var parentName = builder._$behaviors[i];\n var parent_1 = null;\n if (parentName instanceof Behavior) {\n parent_1 = parentName;\n }\n else {\n var parentNameStr = String(parentName);\n if (space) {\n parent_1 = space.getBehaviorByUrl(parentNameStr, is);\n }\n if (!parent_1) {\n triggerWarning(\"behavior \\\"\".concat(parentNameStr, \"\\\" is not found (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n }\n if (!parent_1)\n continue;\n if (parent_1._$unprepared)\n Behavior.prepare(parent_1);\n // merge trait behaviors\n var traitBehaviors_1 = parent_1._$traitBehaviors;\n if (traitBehaviors_1 !== undefined) {\n if (!this._$traitBehaviors)\n this._$traitBehaviors = [];\n (_a = this._$traitBehaviors).push.apply(_a, traitBehaviors_1);\n }\n // merge static data\n var staticData_1 = parent_1._$staticData;\n if (staticData_1) {\n if (!this._$staticData)\n this._$staticData = {};\n shallowMerge(this._$staticData, staticData_1);\n }\n // merge methods\n Object.assign(this._$methodMap, parent_1._$methodMap);\n // merge properties\n Object.assign(this._$propertyMap, parent_1._$propertyMap);\n // merge dynamic data\n (_b = this._$data).push.apply(_b, parent_1._$data);\n // merge observers\n var observers_1 = parent_1._$observers;\n for (var i_2 = 0; i_2 < observers_1.length; i_2 += 1) {\n var item = observers_1[i_2];\n if (item.once) {\n if (this._$observers.indexOf(item) >= 0)\n continue;\n }\n this._$observers.push(item);\n }\n // merge lifetimes\n var lifetimes_1 = parent_1._$lifetimes;\n for (var i_3 = 0; i_3 < lifetimes_1.length; i_3 += 1) {\n var item = lifetimes_1[i_3];\n if (item.once) {\n if (this._$lifetimes.indexOf(item) >= 0)\n continue;\n }\n this._$lifetimes.push(item);\n }\n // merge page lifetimes\n var pageLifetimes_1 = parent_1._$pageLifetimes;\n if (pageLifetimes_1 !== undefined) {\n if (this._$pageLifetimes) {\n for (var i_4 = 0; i_4 < pageLifetimes_1.length; i_4 += 1) {\n var item = pageLifetimes_1[i_4];\n if (item.once) {\n if (this._$pageLifetimes.indexOf(item) >= 0)\n continue;\n }\n this._$pageLifetimes.push(item);\n }\n }\n else {\n this._$pageLifetimes = pageLifetimes_1.slice();\n }\n }\n // merge legacy listeners\n var listeners_1 = parent_1._$listeners;\n if (listeners_1 !== undefined) {\n if (!this._$listeners)\n this._$listeners = [];\n (_c = this._$listeners).push.apply(_c, listeners_1);\n }\n // merge relations\n var relations_1 = parent_1._$relationMap;\n if (relations_1 !== undefined) {\n if (!this._$relationMap) {\n this._$relationMap = Object.create(null);\n }\n Object.assign(this._$relationMap, relations_1);\n }\n // merge init\n (_d = this._$init).push.apply(_d, parent_1._$init);\n // construct flat ancestors\n parent_1._$flatAncestors.forEach(function (p) {\n flatAncestors.add(p);\n });\n }\n }\n // init trait behaviors\n var traitBehaviors = builder._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n if (!this._$traitBehaviors)\n this._$traitBehaviors = [];\n (_e = this._$traitBehaviors).push.apply(_e, traitBehaviors);\n }\n // init using\n if (typeof builder._$using === 'object' && builder._$using !== null) {\n var hasPlaceholders = typeof builder._$placeholders === 'object' && builder._$placeholders !== null;\n var keys = Object.keys(builder._$using);\n var _loop_1 = function (i) {\n var k = keys[i];\n var v = builder._$using[k];\n var placeholder = null;\n if (hasPlaceholders) {\n placeholder = (_k = builder._$placeholders[k]) !== null && _k !== void 0 ? _k : null;\n }\n if (v instanceof ComponentDefinition) {\n this_1._$using[k] = {\n final: v,\n placeholder: placeholder,\n waiting: null,\n };\n }\n else if (space) {\n var path = String(v);\n var final = space.getComponentByUrlWithoutDefault(path, is);\n if (final) {\n this_1._$using[k] = {\n final: final,\n placeholder: null,\n waiting: null,\n };\n }\n else if (placeholder !== null) {\n var p_1 = {\n final: null,\n placeholder: placeholder,\n waiting: null,\n };\n var wl = space._$componentWaitingList(path, is);\n if (wl) {\n wl.add(function (c) {\n p_1.final = c;\n p_1.placeholder = null;\n p_1.waiting = null;\n });\n p_1.waiting = wl;\n }\n this_1._$using[k] = p_1;\n }\n else {\n this_1._$using[k] = {\n final: space.getDefaultComponent(),\n placeholder: null,\n waiting: null,\n };\n }\n }\n else {\n triggerWarning(\"cannot find component \\\"\".concat(String(v), \"\\\" (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n };\n var this_1 = this;\n for (var i = 0; i < keys.length; i += 1) {\n _loop_1(i);\n }\n }\n // init generics\n if (typeof builder._$generics === 'object' && builder._$generics !== null) {\n var generics = this._$generics = [];\n var genericDefaults = Object.create(null);\n this._$genericDefaults = genericDefaults;\n var genericKeys = Object.keys(builder._$generics);\n for (var i = 0; i < genericKeys.length; i += 1) {\n var k = genericKeys[i];\n var genericDef = builder._$generics[k];\n var defaultComp = null;\n var d = genericDef === true ? undefined : genericDef === null || genericDef === void 0 ? void 0 : genericDef.default;\n if (d !== undefined) {\n if (d instanceof ComponentDefinition) {\n defaultComp = d;\n }\n else if (space) {\n defaultComp = space.getComponentByUrl(String(d), is);\n }\n else {\n triggerWarning(\"cannot define generic \\\"\".concat(k, \"\\\" without a default implementor (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n }\n generics.push(k);\n genericDefaults[k] = defaultComp;\n }\n }\n // init static data\n var staticData = builder._$staticData;\n if (staticData) {\n if (!this._$staticData) {\n this._$staticData = staticData;\n }\n else {\n shallowMerge(this._$staticData, staticData);\n }\n }\n // init methods (methods should be initialized before others with function refs)\n var methods = builder._$methods;\n for (var i = 0; i < methods.length; i += 1) {\n var _l = methods[i], name_7 = _l.name, func = _l.func;\n this._$methodMap[name_7] = func;\n }\n // init properties\n var properties = builder._$properties;\n if (properties !== undefined) {\n var initValueFuncs_1 = [];\n var _loop_2 = function (i) {\n var _p = properties[i], name_8 = _p.name, def = _p.def;\n var shortHandDef = normalizePropertyTypeShortHand(def);\n var d;\n if (shortHandDef !== null) {\n d = shortHandDef;\n }\n else {\n var propDef = def;\n var type = normalizePropertyType(propDef.type);\n var optionalTypes = null;\n if (Array.isArray(propDef.optionalTypes)) {\n optionalTypes = propDef.optionalTypes.map(normalizePropertyType);\n if (optionalTypes.length > 0) {\n if (type === 0 /* NormalizedPropertyType.Invalid */ || type === 1 /* NormalizedPropertyType.Any */) {\n type = optionalTypes[0];\n }\n }\n }\n if (type === 0 /* NormalizedPropertyType.Invalid */) {\n triggerWarning(\"the type of property \\\"\".concat(name_8, \"\\\" is illegal (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n var value = propDef.value;\n if (propDef.value === undefined) {\n if (type === 2 /* NormalizedPropertyType.String */)\n value = '';\n else if (type === 3 /* NormalizedPropertyType.Number */)\n value = 0;\n else if (type === 4 /* NormalizedPropertyType.Boolean */)\n value = false;\n else if (type === 6 /* NormalizedPropertyType.Array */)\n value = [];\n else\n value = null;\n }\n var observer = void 0;\n if (typeof propDef.observer === 'function') {\n observer = propDef.observer;\n }\n else if (propDef.observer) {\n observer = this_2._$methodMap[propDef.observer] || null;\n }\n else {\n observer = null;\n if (propDef.observer !== undefined) {\n triggerWarning(\"the observer of property \\\"\".concat(name_8, \"\\\" is not a function (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n }\n var reflectIdPrefix = !!propDef.reflectIdPrefix;\n d = {\n type: type,\n optionalTypes: optionalTypes,\n value: value,\n default: propDef.default,\n observer: observer,\n reflectIdPrefix: reflectIdPrefix,\n };\n }\n this_2._$propertyMap[name_8] = d;\n initValueFuncs_1.push({\n name: name_8,\n func: d.default === undefined ? function () { return simpleDeepCopy(d.value); } : d.default,\n });\n };\n var this_2 = this;\n for (var i = 0; i < properties.length; i += 1) {\n _loop_2(i);\n }\n this._$data.push(function () {\n var ret = {};\n for (var i = 0; i < initValueFuncs_1.length; i += 1) {\n var _a = initValueFuncs_1[i], name_9 = _a.name, func = _a.func;\n ret[name_9] = func();\n }\n return ret;\n });\n }\n // init dynamic data\n (_f = this._$data).push.apply(_f, builder._$data);\n // observers\n var observers = builder._$observers;\n if (observers !== undefined) {\n for (var i = 0; i < observers.length; i += 1) {\n var _m = observers[i], dataPaths = _m.dataPaths, func = _m.func, once = _m.once;\n var observer = typeof func === 'function' ? func : this._$methodMap[func];\n if (typeof observer === 'function') {\n this._$observers.push({ dataPaths: dataPaths, observer: observer, once: once });\n }\n else {\n triggerWarning(\"the \\\"\".concat(String(observer), \"\\\" observer is not a function (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n }\n }\n // lifetimes\n var lifetimes = builder._$lifetimes;\n (_g = this._$lifetimes).push.apply(_g, lifetimes);\n // page lifetimes\n var pageLifetimes = builder._$pageLifetimes;\n if (pageLifetimes) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n (_h = this._$pageLifetimes).push.apply(_h, pageLifetimes);\n }\n // listeners\n var listeners = builder._$listeners;\n if (listeners !== undefined) {\n var keys = Object.keys(listeners);\n if (keys.length > 0) {\n this._$listeners = [];\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n var v = listeners[k];\n var listener = typeof v === 'function' ? v : this._$methodMap[v];\n if (listener) {\n var dot = k.indexOf('.');\n var id = void 0;\n var ev = void 0;\n if (dot >= 0) {\n id = k.slice(0, dot);\n ev = k.slice(dot + 1);\n }\n else {\n id = '';\n ev = k;\n }\n this._$listeners.push({ id: id, ev: ev, listener: listener });\n }\n else {\n triggerWarning(\"the \\\"\".concat(k, \"\\\" listener is not a function or a method name (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n }\n }\n }\n // relations\n var relations = builder._$relations;\n if (relations !== undefined) {\n if (!this._$relationMap) {\n this._$relationMap = Object.create(null);\n }\n for (var i = 0; i < relations.length; i += 1) {\n var _o = relations[i], key = _o.name, relation = _o.rel;\n if (relation === undefined || relation === null)\n continue;\n var rel = normalizeRelation(is, key, relation);\n if (rel)\n this._$relationMap[key] = rel;\n }\n }\n // init funcs\n (_j = this._$init).push.apply(_j, builder._$init);\n flatAncestors.add(this);\n };\n /**\n * Get the template content\n *\n * This method is usually used by the template engine.\n */\n Behavior.prototype.getTemplate = function () {\n return this._$template;\n };\n /** Check whether the `other` behavior is a dependent behavior of this behavior */\n Behavior.prototype.hasBehavior = function (other) {\n if (this._$unprepared)\n this.prepare();\n if (other instanceof Behavior) {\n return this._$flatAncestors.has(other);\n }\n if (this.ownerSpace) {\n var b = this.ownerSpace.getBehaviorByUrl(other, this.is);\n if (!b) {\n return false;\n }\n return this._$flatAncestors.has(b);\n }\n return false;\n };\n /**\n * Get the methods\n *\n * Only valid after `prepare` .\n */\n Behavior.prototype.getMethods = function () {\n return this._$methodMap;\n };\n /** @internal */\n Behavior.prototype._$generateObserverTree = function () {\n var ot = new DataGroupObserverTree(this._$propertyMap);\n var observers = this._$observers;\n for (var i = 0; i < observers.length; i += 1) {\n var _a = observers[i], dataPaths = _a.dataPaths, observer = _a.observer;\n ot.addObserver(observer, dataPaths);\n }\n return ot;\n };\n /** @internal */\n Behavior.prototype._$getAllLifetimeFuncs = function () {\n var ret = Object.create(null);\n var lifetimes = this._$lifetimes;\n for (var i = 0; i < lifetimes.length; i += 1) {\n var _a = lifetimes[i], name_10 = _a.name, func = _a.func;\n if (ret[name_10]) {\n ret[name_10].add(func);\n }\n else {\n var fa = ret[name_10] = new FuncArr();\n fa.add(func);\n }\n }\n return ret;\n };\n /** @internal */\n Behavior.prototype._$getAllPageLifetimeFuncs = function () {\n var ret = Object.create(null);\n var pageLifetimes = this._$pageLifetimes;\n if (!pageLifetimes)\n return ret;\n for (var i = 0; i < pageLifetimes.length; i += 1) {\n var _a = pageLifetimes[i], name_11 = _a.name, func = _a.func;\n if (ret[name_11]) {\n ret[name_11].add(func);\n }\n else {\n var fa = ret[name_11] = new FuncArr();\n fa.add(func);\n }\n }\n return ret;\n };\n return Behavior;\n}());\nexport { Behavior };\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { FuncArr, triggerWarning, } from './func_arr';\nimport { Element, } from './element';\nimport { globalOptions, normalizeComponentOptions, getDefaultComponentSpace, getDefaultBackendContext, } from './global_options';\nimport { METHOD_TAG, } from './component_params';\nimport { normalizeRelation, } from './behavior';\nimport { simpleDeepCopy, } from './data_utils';\nimport { DataGroup, getDeepCopyStrategy, } from './data_proxy';\nimport { Relation, generateRelationDefinitionGroup, } from './relation';\nimport { ClassList, } from './class_list';\nimport { parseSinglePath, parseMultiPaths, } from './data_path';\nimport { BM, } from './backend/mode';\nimport { TraitBehavior, TraitGroup } from './trait_behaviors';\nexport var convertGenerics = function (compDef, space, owner, genericTargets) {\n var hostUsing = owner === null || owner === void 0 ? void 0 : owner._$behavior._$using;\n var hostGenericImpls = owner === null || owner === void 0 ? void 0 : owner._$genericImpls;\n if (!compDef._$detail)\n compDef.prepare();\n var childBeh = compDef.behavior;\n var genericImpls;\n var generics = childBeh._$generics;\n if (generics) {\n var genericDefaults = childBeh._$genericDefaults;\n genericImpls = Object.create(null);\n for (var i = 0; i < generics.length; i += 1) {\n var key = generics[i];\n if (genericTargets && Object.prototype.hasOwnProperty.call(genericTargets, key)) {\n var target = genericTargets[key];\n if (typeof target === 'string') {\n if (hostUsing === null || hostUsing === void 0 ? void 0 : hostUsing[target]) {\n genericImpls[key] = hostUsing[target];\n }\n else if (hostGenericImpls && hostGenericImpls[target]) {\n genericImpls[key] = hostGenericImpls[target];\n }\n else {\n var comp = space.getComponentByUrlWithoutDefault(target, '');\n if (comp) {\n genericImpls[key] = {\n final: comp,\n placeholder: null,\n waiting: null,\n };\n }\n else {\n triggerWarning(\"Generic \\\"\".concat(key, \"\\\" value \\\"\").concat(target, \"\\\" is not valid (on component \\\"\").concat(compDef.is, \"\\\").\"));\n var defaultComp = space.getDefaultComponent();\n if (!defaultComp) {\n throw new Error(\"Cannot find default component for generic \\\"\".concat(key, \"\\\" (on component \\\"\").concat(compDef.is, \"\\\")\"));\n }\n genericImpls[key] = {\n final: defaultComp,\n placeholder: null,\n waiting: null,\n };\n }\n }\n }\n else {\n genericImpls[key] = target;\n }\n }\n else {\n var defaultComp = genericDefaults[key] || space.getDefaultComponent();\n if (!defaultComp) {\n throw new Error(\"Cannot find default component for generic \\\"\".concat(key, \"\\\" (on component \\\"\").concat(compDef.is, \"\\\")\"));\n }\n genericImpls[key] = {\n final: defaultComp,\n placeholder: null,\n waiting: null,\n };\n }\n }\n }\n else {\n genericImpls = null;\n }\n return genericImpls;\n};\nexport var resolvePlaceholder = function (placeholder, space, behavior, genericImpls) {\n var using = behavior._$using;\n var usingTarget = using[placeholder] || (genericImpls && genericImpls[placeholder]);\n var ret = null;\n if (usingTarget) {\n if (usingTarget.placeholder === null) {\n ret = usingTarget.final;\n }\n else {\n triggerWarning(\"Placeholder on generic implementation is not valid (on component \\\"\".concat(behavior.is, \"\\\")\"));\n }\n }\n if (ret)\n return ret;\n var defaultComp = space.getDefaultComponent();\n if (!defaultComp) {\n throw new Error(\"Cannot find default component for placeholder target \\\"\".concat(placeholder, \"\\\" (on component \\\"\").concat(behavior.is, \"\\\")\"));\n }\n return defaultComp;\n};\nvar ComponentDefinition = /** @class */ (function () {\n /** @internal */\n function ComponentDefinition(behavior) {\n this.behavior = behavior;\n this.is = this.behavior.is;\n this._$detail = null;\n this._$options = normalizeComponentOptions(behavior._$options, behavior.ownerSpace.getComponentOptions());\n var templateEngine = this._$options.templateEngine;\n this._$templateEngine = templateEngine;\n }\n ComponentDefinition.prototype.general = function () {\n return this;\n };\n /** Get the normalized component options */\n ComponentDefinition.prototype.getComponentOptions = function () {\n return this._$options;\n };\n /**\n * List all component dependencies (recursively)\n *\n * This method will prepare the underlying behavior.\n * The caller component is not included in the result.\n */\n ComponentDefinition.prototype.getComponentDependencies = function () {\n return this.behavior.getComponentDependencies();\n };\n ComponentDefinition.prototype.isPrepared = function () {\n return !!this._$detail;\n };\n ComponentDefinition.prototype.prepare = function () {\n if (this._$detail)\n return;\n this.behavior.prepare();\n var behavior = this.behavior;\n var options = this._$options;\n var propSetters = {};\n // add properties to component prototype if needed\n if (options.writeFieldsToNode) {\n var keys = Object.keys(behavior._$propertyMap);\n var _loop_1 = function (i) {\n var propName = keys[i];\n propSetters[propName] = {\n enumerable: true,\n get: function () {\n return this._$dataGroup.data[propName];\n },\n set: function (v) {\n var dataGroup = this._$dataGroup;\n dataGroup.replaceDataOnPath([propName], v);\n dataGroup.applyDataUpdates();\n },\n };\n };\n for (var i = 0; i < keys.length; i += 1) {\n _loop_1(i);\n }\n var methodKeys = Object.keys(behavior._$methodMap);\n for (var i = 0; i < methodKeys.length; i += 1) {\n var methodName = methodKeys[i];\n propSetters[methodName] = {\n enumerable: true,\n value: behavior._$methodMap[methodName],\n };\n }\n }\n // create prototype\n var protoFunc = function ComponentInst() { };\n protoFunc.prototype = Object.create(Component.prototype, propSetters);\n var proto = protoFunc.prototype;\n proto._$behavior = behavior;\n proto._$definition = this;\n proto._$methodMap = behavior._$methodMap;\n // init other helpers\n var dataGroupObserverTree = behavior._$generateObserverTree();\n proto._$lifetimeFuncs = behavior._$getAllLifetimeFuncs();\n proto._$pageLifetimeFuncs = behavior._$getAllPageLifetimeFuncs();\n var relationDefinitionGroup = generateRelationDefinitionGroup(behavior._$relationMap);\n var dataDeepCopy = getDeepCopyStrategy(options.dataDeepCopy);\n var propertyPassingDeepCopy = getDeepCopyStrategy(options.propertyPassingDeepCopy);\n // call template engine\n var template = this._$templateEngine.create(behavior, options);\n this._$detail = {\n proto: proto,\n template: template,\n dataGroupObserverTree: dataGroupObserverTree,\n dataDeepCopy: dataDeepCopy,\n propertyPassingDeepCopy: propertyPassingDeepCopy,\n relationDefinitionGroup: relationDefinitionGroup,\n };\n };\n return ComponentDefinition;\n}());\nexport { ComponentDefinition };\nvar componentInstanceIdInc = 1;\n/**\n * A node that has a shadow tree attached to it\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n function Component() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n return _super.call(this) || this;\n }\n Component.prototype.general = function () {\n return this;\n };\n /**\n * Cast a general component node to the instance of the specified component\n *\n * Returns `null` if the component node is not the instance of the specified component.\n */\n Component.prototype.asInstanceOf = function (componentDefinition) {\n if (this._$behavior !== componentDefinition.behavior) {\n return null;\n }\n return this;\n };\n Component.register = function (def, space) {\n return (space || getDefaultComponentSpace()).defineComponent(def);\n };\n /** @internal */\n Component._$tagMethod = function (func) {\n var taggedMethod = func;\n taggedMethod[METHOD_TAG] = true;\n return taggedMethod;\n };\n /** @internal */\n Component._$isTaggedMethod = function (func) {\n return typeof func === 'function' && !!func[METHOD_TAG];\n };\n /** @internal */\n Component._$advancedCreate = function (tagName, def, owner, backendContext, genericImpls, placeholderHandler, initPropValues) {\n var _a, _b;\n if (!def._$detail)\n def.prepare();\n var _c = def._$detail, proto = _c.proto, template = _c.template, dataDeepCopy = _c.dataDeepCopy, propertyPassingDeepCopy = _c.propertyPassingDeepCopy, relationDefinitionGroup = _c.relationDefinitionGroup;\n var dataGroupObserverTree = def._$detail.dataGroupObserverTree;\n var options = def._$options;\n var behavior = def.behavior;\n var nodeTreeContext = owner\n ? owner._$nodeTreeContext\n : backendContext || globalOptions.backendContext || getDefaultBackendContext();\n var external = options.externalComponent;\n var propEarlyInit = options.propertyEarlyInit;\n var writeExtraInfoToAttr = globalOptions.writeExtraInfoToAttr;\n // initialize component instance object\n var comp = Object.create(proto);\n comp._$genericImpls = genericImpls;\n comp._$placeholderHandler = placeholderHandler;\n comp._$external = external;\n comp.tagName = tagName;\n comp._$methodCaller = comp;\n // create backend element\n var backendElement;\n if (options.virtualHost) {\n backendElement = null;\n comp._$initialize(true, null, owner, nodeTreeContext);\n if (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */)) {\n if (owner) {\n var backend_1 = owner._$backendShadowRoot;\n backendElement = (backend_1 === null || backend_1 === void 0 ? void 0 : backend_1.createComponent(tagName, true)) || null;\n }\n else {\n var sr = nodeTreeContext.getRootNode().getShadowRoot();\n if (!sr)\n throw new Error('Failed getting backend shadow tree');\n backendElement = sr.createComponent(tagName, false) || null;\n }\n }\n }\n else if (owner) {\n if (BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */)) {\n backendElement = owner._$nodeTreeContext\n .document.createElement(tagName);\n }\n else if (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */)) {\n var backend_2 = owner._$backendShadowRoot;\n backendElement = (backend_2 === null || backend_2 === void 0 ? void 0 : backend_2.createComponent(tagName, false)) || null;\n }\n else {\n var backend_3 = owner._$nodeTreeContext;\n backendElement = backend_3.createElement(tagName);\n }\n comp._$initialize(false, backendElement, owner, nodeTreeContext);\n }\n else {\n if (BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */)) {\n backendElement = nodeTreeContext\n .document.createElement(tagName);\n }\n else if (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */)) {\n var sr = nodeTreeContext.getRootNode().getShadowRoot();\n if (!sr)\n throw new Error('Failed getting backend shadow tree');\n backendElement = sr.createComponent(tagName, false) || null;\n }\n else {\n backendElement = nodeTreeContext.createElement(tagName) || null;\n }\n comp._$initialize(false, backendElement, owner, nodeTreeContext);\n }\n // init class list\n var externalClassAlias = {};\n if (behavior._$externalClasses) {\n var externalClasses = behavior._$externalClasses;\n for (var i = 0; i < externalClasses.length; i += 1) {\n externalClassAlias[externalClasses[i]] = null;\n }\n }\n comp.classList = new ClassList(comp, externalClassAlias);\n if (owner && backendElement) {\n var styleScope = owner.getHostNode()._$definition._$options.styleScope;\n if (styleScope) {\n if (!(BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */))) {\n backendElement.setStyleScope(styleScope);\n }\n }\n if (writeExtraInfoToAttr) {\n var prefix = (_a = owner.getHostNode()\n ._$behavior.ownerSpace) === null || _a === void 0 ? void 0 : _a.styleScopeManager.queryName(styleScope);\n if (prefix) {\n backendElement.setAttribute('exparser:info-class-prefix', \"\".concat(prefix, \"--\"));\n }\n }\n }\n // associate in backend\n if (!(BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */))) {\n if (backendElement) {\n backendElement.associateValue(comp);\n }\n }\n // write attr\n if (writeExtraInfoToAttr && backendElement) {\n var componentInstanceId = componentInstanceIdInc;\n componentInstanceIdInc += 1;\n comp._$componentInstanceId = componentInstanceId;\n backendElement.setAttribute('exparser:info-component-id', componentInstanceId);\n }\n comp._$idPrefix = options.idPrefixGenerator ? options.idPrefixGenerator.call(comp) : '';\n // combine initial data\n var staticData = behavior._$staticData;\n var dataGenFuncs = behavior._$data;\n var data;\n if (staticData === undefined) {\n if (dataGenFuncs.length === 1) {\n var f = dataGenFuncs[0];\n data = f();\n }\n else {\n data = {};\n for (var i = 0; i < dataGenFuncs.length; i += 1) {\n var f = dataGenFuncs[i];\n Object.assign(data, f());\n }\n }\n }\n else {\n data = simpleDeepCopy(staticData);\n for (var i = 0; i < dataGenFuncs.length; i += 1) {\n var f = dataGenFuncs[i];\n Object.assign(data, f());\n }\n }\n // init relations\n var relation = comp._$relation = new Relation(comp, relationDefinitionGroup);\n // init trait group\n comp._$traitGroup = new TraitGroup();\n var traitBehaviors = behavior._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n for (var i = 0; i < traitBehaviors.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var _d = traitBehaviors[i], traitBehavior = _d.traitBehavior, impl = _d.impl;\n comp._$traitGroup.implement(traitBehavior, impl);\n }\n }\n // call method caller init\n if (behavior._$methodCallerInit) {\n var methodCaller = behavior._$methodCallerInit.call(comp);\n comp._$methodCaller = methodCaller;\n }\n // call init functions\n var initDone = false;\n function relationInit(def) {\n if (initDone)\n throw new Error('Cannot execute init-time functions after initialization');\n var target = def.target;\n var normalizedRel = normalizeRelation(behavior.is, 'undefined', def);\n var key;\n if (normalizedRel) {\n key = relation.add(normalizedRel);\n }\n else {\n key = Symbol('invalid');\n }\n var list = function () {\n var targetNodes = relation.getLinkedTargets(key);\n return targetNodes.map(function (x) { return x.getMethodCaller(); });\n };\n var listAsTrait = target instanceof TraitBehavior ? function () {\n var targetNodes = relation.getLinkedTargets(key);\n return targetNodes.map(function (x) { return x.traitBehavior(target); });\n } : undefined;\n return { list: list, listAsTrait: listAsTrait };\n }\n if (behavior._$init.length > 0) {\n var cowObserver_1 = true;\n var cowLifetime_1 = true;\n var cowPageLifetime_1 = true;\n var cowMethodMap = true;\n var methodCaller = comp.getMethodCaller();\n var builderContext = {\n self: methodCaller,\n data: data,\n setData: comp.setData.bind(comp),\n implement: function (traitBehavior, impl) {\n if (initDone)\n throw new Error('Cannot execute init-time functions after initialization');\n comp._$traitGroup.implement(traitBehavior, impl);\n },\n relation: relationInit,\n observer: function (dataPaths, func) {\n if (initDone)\n throw new Error('Cannot execute init-time functions after initialization');\n if (cowObserver_1) {\n cowObserver_1 = false;\n dataGroupObserverTree = dataGroupObserverTree.cloneSub();\n }\n dataGroupObserverTree.addObserver(func, parseMultiPaths(dataPaths));\n },\n lifetime: function (name, func) {\n if (initDone)\n throw new Error('Cannot execute init-time functions after initialization');\n if (cowLifetime_1) {\n cowLifetime_1 = false;\n comp._$lifetimeFuncs = behavior._$getAllLifetimeFuncs();\n }\n var fag = comp._$lifetimeFuncs;\n if (fag[name]) {\n fag[name].add(func);\n }\n else {\n var fa = fag[name] = new FuncArr();\n fa.add(func);\n }\n },\n pageLifetime: function (name, func) {\n if (initDone)\n throw new Error('Cannot execute init-time functions after initialization');\n if (cowPageLifetime_1) {\n cowPageLifetime_1 = false;\n comp._$pageLifetimeFuncs = behavior._$getAllPageLifetimeFuncs();\n }\n var fag = comp._$pageLifetimeFuncs;\n if (fag[name]) {\n fag[name].add(func);\n }\n else {\n var fa = fag[name] = new FuncArr();\n fa.add(func);\n }\n },\n method: function (func) { return Component._$tagMethod(func); },\n listener: function (func) { return Component._$tagMethod(func); },\n };\n var initFuncs = behavior._$init;\n for (var i = 0; i < initFuncs.length; i += 1) {\n var init = initFuncs[i];\n var exported = init.call(methodCaller, builderContext);\n if (exported) {\n var exportedKeys = Object.keys(exported);\n for (var j = 0; j < exportedKeys.length; j += 1) {\n var exportedKey = exportedKeys[j];\n var exportItem = exported[exportedKey];\n if (Component._$isTaggedMethod(exportItem)) {\n if (cowMethodMap) {\n cowMethodMap = false;\n comp._$methodMap = Object.create(comp._$methodMap);\n }\n comp._$methodMap[exportedKey] = exportItem;\n }\n }\n }\n }\n }\n initDone = true;\n // init data\n var tmplInst = template.createInstance(comp);\n var shadowRoot = tmplInst.shadowRoot;\n comp.shadowRoot = shadowRoot;\n var dataGroup = new DataGroup(comp, data, options.pureDataPattern || null, dataDeepCopy, propertyPassingDeepCopy, options.reflectToAttributes, dataGroupObserverTree);\n comp._$dataGroup = dataGroup;\n // init template with init data\n if (propEarlyInit && initPropValues !== undefined)\n initPropValues(comp);\n tmplInst.initValues(dataGroup.innerData || dataGroup.data);\n dataGroup.setUpdateListener(tmplInst.updateValues.bind(tmplInst));\n // bind behavior listeners\n var listeners = behavior._$listeners;\n if (listeners !== undefined) {\n var _loop_2 = function (i) {\n var _e = listeners[i], id = _e.id, ev = _e.ev, gf = _e.listener;\n var listener = gf;\n if (id === 'this') {\n comp.addListener(ev, function (ev) { return listener.call(comp._$methodCaller, ev); });\n }\n else if (!external) {\n var sr = shadowRoot;\n var elem = id ? sr.getElementById(id) : sr;\n if (elem) {\n elem.addListener(ev, function (ev) { return listener.call(comp._$methodCaller, ev); });\n }\n }\n else {\n var sr = shadowRoot;\n var elem = id ? sr.getIdMap()[id] : sr.root;\n if (elem) {\n sr.setListener(elem, ev, function (ev) { return listener.call(comp._$methodCaller, ev); });\n }\n }\n };\n for (var i = 0; i < listeners.length; i += 1) {\n _loop_2(i);\n }\n }\n // trigger created lifetimes\n (_b = comp._$lifetimeFuncs.created) === null || _b === void 0 ? void 0 : _b.call(comp._$methodCaller, [], comp);\n if (!propEarlyInit && initPropValues !== undefined)\n initPropValues(comp);\n return comp;\n };\n Component.createWithGenericsAndContext = function (tagName, componentDefinition, genericTargets, backendContext, initPropValues) {\n var collectGenericImpls = function (def) {\n var space = def.behavior.ownerSpace;\n var genericImpls;\n if (genericTargets) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n genericImpls = Object.create(null);\n Object.entries(genericTargets).forEach(function (_a) {\n var key = _a[0], g = _a[1];\n genericImpls[key] = {\n final: g,\n placeholder: null,\n waiting: null,\n };\n });\n }\n return convertGenerics(def, space, undefined, genericImpls);\n };\n if (componentDefinition) {\n return Component._$advancedCreate(String(tagName), componentDefinition, null, backendContext, collectGenericImpls(componentDefinition), undefined, initPropValues);\n }\n if (tagName instanceof ComponentDefinition) {\n return Component._$advancedCreate(tagName.is, tagName, null, backendContext, collectGenericImpls(tagName), undefined);\n }\n var compDef = getDefaultComponentSpace().getComponentByUrl(tagName, '');\n return Component._$advancedCreate(tagName, compDef, null, backendContext, collectGenericImpls(compDef), undefined);\n };\n Component.createWithGenerics = function (tagName, componentDefinition, genericImpls, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, genericImpls, null, initPropValues);\n };\n Component.createWithContext = function (tagName, componentDefinition, backendContext, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, null, backendContext, initPropValues);\n };\n Component.create = function (tagName, componentDefinition, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, null, null, initPropValues);\n };\n Object.defineProperty(Component.prototype, \"is\", {\n get: function () {\n return this._$definition.is;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"properties\", {\n get: function () {\n return this._$dataGroup.data;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"data\", {\n get: function () {\n return this._$dataGroup.data;\n },\n set: function (newData) {\n var dataGroup = this._$dataGroup;\n Object.entries(newData).forEach(function (_a) {\n var key = _a[0], value = _a[1];\n return dataGroup.replaceDataOnPath([key], value);\n });\n dataGroup.applyDataUpdates();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"$\", {\n get: function () {\n if (this._$external) {\n return this.shadowRoot.getIdMap();\n }\n return this.shadowRoot._$getIdMap();\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Returns the shadow root element\n *\n * Returns `null` for external components.\n */\n Component.prototype.getShadowRoot = function () {\n if (this._$external) {\n return null;\n }\n return this.shadowRoot;\n };\n Component.listProperties = function (comp) {\n return Object.keys(comp._$behavior._$propertyMap);\n };\n Component.hasProperty = function (comp, propName) {\n return !!comp._$behavior._$propertyMap[propName];\n };\n /** List methods by the component definition (backward compatibility) */\n Component.getMethodsFromDef = function (compDef) {\n return compDef.behavior._$methodMap;\n };\n /** Get a method */\n Component.getMethod = function (comp, methodName) {\n return comp._$behavior._$methodMap[methodName];\n };\n /**\n * Get the corresponding component definition\n */\n Component.prototype.getComponentDefinition = function () {\n return this._$definition;\n };\n /**\n * Get the options of the component\n */\n Component.prototype.getComponentOptions = function () {\n return this._$definition._$options;\n };\n /**\n * Check whether the `other` behavior is a dependent behavior or a implemented trait behavior\n */\n Component.prototype.hasBehavior = function (other) {\n if (other instanceof TraitBehavior) {\n return this._$traitGroup.get(other) !== undefined;\n }\n return this._$behavior.hasBehavior(other);\n };\n /** Get the root behavior of the component */\n Component.prototype.getRootBehavior = function () {\n return this._$behavior;\n };\n /**\n * Get the trait behavior implementation of the component\n *\n * Returns `undefined` if the specified trait behavior is not implemented.\n */\n Component.prototype.traitBehavior = function (traitBehavior) {\n return this._$traitGroup.get(traitBehavior);\n };\n /**\n * Set the caller (a.k.a. `this` ) of event callbacks and life-time callbacks\n *\n * By default, the caller is the component instance itself.\n * Use this method to override this behavior.\n */\n Component.prototype.setMethodCaller = function (caller) {\n this._$methodCaller = caller;\n };\n /**\n * Get the current caller set by `setMethodCaller`\n */\n Component.prototype.getMethodCaller = function () {\n return this._$methodCaller;\n };\n /**\n * Triggers a life-time callback on an element\n *\n * Normally external life-times should only be triggered by template engine.\n * Most cases should take a common method instead.\n */\n Component.prototype.triggerLifetime = function (name, args) {\n var f = this._$lifetimeFuncs[name];\n if (f)\n f.call(this._$methodCaller, args);\n };\n /**\n * @internal\n * @deprecated Rename to `triggerLifetime`\n */\n Component.prototype.triggerLifeTime = function (name, args) {\n return this.triggerLifetime(name, args);\n };\n /**\n * Triggers a page-life-time callback on an element\n */\n Component.prototype.triggerPageLifetime = function (name, args) {\n var rec = function (node) {\n if (node instanceof Component) {\n if (node._$pageLifetimeFuncs) {\n var f = node._$pageLifetimeFuncs[name];\n if (f)\n f.call(node._$methodCaller, args);\n }\n if (!node._$external)\n rec(node.shadowRoot);\n }\n var children = node.childNodes;\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n if (child instanceof Element) {\n rec(child);\n }\n }\n };\n rec(this);\n };\n /**\n * @internal\n * @deprecated Rename to `triggerPageLifetime`\n */\n Component.prototype.triggerPageLifeTime = function (name, args) {\n return this.triggerPageLifetime(name, args);\n };\n /**\n * Get the target elements of a relation\n */\n Component.prototype.getRelationNodes = function (relationKey) {\n var _a;\n return ((_a = this._$relation) === null || _a === void 0 ? void 0 : _a.getLinkedTargets(relationKey)) || [];\n };\n /** Check the existence of an external class */\n Component.prototype.hasExternalClass = function (name) {\n return this.classList._$hasAlias(name);\n };\n /** Update an external class value */\n Component.prototype.setExternalClass = function (name, target) {\n var cl = this.classList;\n cl._$setAlias(name, target);\n cl._$spreadAliasUpdate();\n };\n /** Schedule an update for an external class value */\n Component.prototype.scheduleExternalClassChange = function (name, target) {\n var cl = this.classList;\n cl._$setAlias(name, target);\n };\n /** Update multiple external class values */\n Component.prototype.applyExternalClassChanges = function () {\n this.classList._$spreadAliasUpdate();\n };\n /** Check a field is excluded by pureDataPattern or not */\n Component.prototype.isInnerDataExcluded = function (fieldName) {\n var _a;\n return ((_a = this._$definition._$options.pureDataPattern) === null || _a === void 0 ? void 0 : _a.test(fieldName)) || false;\n };\n Component.getInnerData = function (comp) {\n return comp._$dataGroup.innerData;\n };\n Component.getDataProxy = function (comp) {\n return comp._$dataGroup;\n };\n Component.replaceWholeData = function (comp, newData) {\n comp._$dataGroup.replaceWholeData(newData);\n };\n Component.prototype.replaceDataOnPath = function (path, data) {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new Error('Cannot update data before component created');\n }\n dataProxy.replaceDataOnPath(path, data);\n };\n Component.prototype.spliceArrayDataOnPath = function (path, index, del, inserts) {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new Error('Cannot update data before component created');\n }\n dataProxy.spliceArrayDataOnPath(path, index, del, inserts);\n };\n /**\n * Check whether there are pending changes or not\n */\n Component.prototype.hasPendingChanges = function () {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined)\n return false;\n return dataProxy.getChanges().length > 0;\n };\n /**\n * Apply all scheduled updates immediately\n *\n * Inside observers, it is generally not .\n */\n Component.prototype.applyDataUpdates = function () {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new Error('Cannot update data before component created');\n }\n dataProxy.applyDataUpdates();\n };\n /**\n * Pending all data updates in the callback, and apply updates after callback returns\n *\n * This function helps grouping several `replaceDataOnPath` or `spliceArrayDataOnPath` calls,\n * and then apply them at the end of the callback.\n * `setData` and `applyDataUpdates` calls inside the callback still apply updates immediately.\n */\n Component.prototype.groupUpdates = function (callback) {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new Error('Cannot update data before component created');\n }\n var ret = callback();\n dataProxy.applyDataUpdates();\n return ret;\n };\n Component.prototype.updateData = function (newData) {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new Error('Cannot update data before component created');\n }\n var keys = Object.keys(newData);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var p = parseSinglePath(key);\n if (p) {\n dataProxy.replaceDataOnPath(p, newData[key]);\n }\n }\n };\n Component.prototype.setData = function (newData) {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new Error('Cannot update data before component created');\n }\n var keys = Object.keys(newData);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var p = parseSinglePath(key);\n if (p) {\n dataProxy.replaceDataOnPath(p, newData[key]);\n }\n }\n dataProxy.applyDataUpdates();\n };\n return Component;\n}(Element));\nexport { Component };\n","/* eslint-disable class-methods-use-this */\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ShadowRoot, } from '..';\nimport { GlassEaselTemplateDOM } from './native_rendering';\nimport { ProcGenWrapper, } from './proc_gen_wrapper';\nvar DEFAULT_PROC_GEN = function () { return ({\n C: function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot) {\n defineSlot('');\n },\n B: Object.create(null),\n}); };\nexport var DEFAULT_PROC_GEN_GROUP = function () { return DEFAULT_PROC_GEN; };\nvar BindingMapUpdateEnabled;\n(function (BindingMapUpdateEnabled) {\n BindingMapUpdateEnabled[BindingMapUpdateEnabled[\"Disabled\"] = 0] = \"Disabled\";\n BindingMapUpdateEnabled[BindingMapUpdateEnabled[\"Enabled\"] = 1] = \"Enabled\";\n BindingMapUpdateEnabled[BindingMapUpdateEnabled[\"Forced\"] = 2] = \"Forced\";\n})(BindingMapUpdateEnabled || (BindingMapUpdateEnabled = {}));\nvar GlassEaselTemplateEngine = /** @class */ (function () {\n function GlassEaselTemplateEngine() {\n }\n GlassEaselTemplateEngine.prototype.create = function (behavior, componentOptions) {\n if (componentOptions.externalComponent) {\n return new GlassEaselTemplateDOM(behavior);\n }\n return new GlassEaselTemplate(behavior);\n };\n return GlassEaselTemplateEngine;\n}());\nexport { GlassEaselTemplateEngine };\nvar GlassEaselTemplate = /** @class */ (function () {\n function GlassEaselTemplate(behavior) {\n if (typeof behavior._$template !== 'object' && behavior._$template !== undefined) {\n throw new Error(\"Component template of \".concat(behavior.is, \" must be a valid compiled template (or \\\"null\\\" for default template).\"));\n }\n var c = behavior._$template || {\n content: DEFAULT_PROC_GEN_GROUP,\n };\n this.genObjectGroupEnv = {\n list: c.groupList || Object.create(null),\n group: c.content,\n };\n this.updateMode = c.updateMode || '';\n this.disallowNativeNode = c.disallowNativeNode || false;\n }\n GlassEaselTemplate.prototype.createInstance = function (comp) {\n return new GlassEaselTemplateInstance(this, comp);\n };\n return GlassEaselTemplate;\n}());\nvar GlassEaselTemplateInstance = /** @class */ (function () {\n function GlassEaselTemplateInstance(template, comp) {\n this.template = template;\n var procGen = template.genObjectGroupEnv.group('') || DEFAULT_PROC_GEN_GROUP('');\n if (template.updateMode === 'bindingMap') {\n this.forceBindingMapUpdate = 2 /* BindingMapUpdateEnabled.Forced */;\n }\n else if (template.updateMode === 'virtualTree') {\n this.forceBindingMapUpdate = 0 /* BindingMapUpdateEnabled.Disabled */;\n }\n else {\n this.forceBindingMapUpdate = 1 /* BindingMapUpdateEnabled.Enabled */;\n }\n this.comp = comp;\n this.shadowRoot = ShadowRoot.createShadowRoot(comp);\n this.shadowRoot.destroyBackendElementOnDetach();\n this.procGenWrapper = new ProcGenWrapper(this.shadowRoot, procGen, template.disallowNativeNode);\n }\n GlassEaselTemplateInstance.prototype.initValues = function (data) {\n this.bindingMapGen = this.procGenWrapper.create(data);\n return this.shadowRoot;\n };\n GlassEaselTemplateInstance.prototype.updateValues = function (data, changes) {\n if (this.forceBindingMapUpdate === 2 /* BindingMapUpdateEnabled.Forced */) {\n for (var i = 0; i < changes.length; i += 1) {\n this.tryBindingMapUpdate(data, changes[i]);\n }\n return;\n }\n if (this.forceBindingMapUpdate === 1 /* BindingMapUpdateEnabled.Enabled */ && changes.length <= 1) {\n if (this.bindingMapGen) {\n if (this.tryBindingMapUpdate(data, changes[0])) {\n return;\n }\n }\n }\n var dataUpdatePathTree = Object.create(null);\n for (var i = 0; i < changes.length; i += 1) {\n var _a = changes[i], p = _a[0], newVal = _a[1], spliceIndex = _a[2], spliceDel = _a[3];\n var cur = dataUpdatePathTree;\n for (var j = 0; j < p.length; j += 1) {\n var field = p[j];\n var v = cur[field];\n if (v === true)\n break;\n if (j === p.length - 1) {\n if (spliceDel === undefined) {\n cur[field] = true;\n }\n else {\n var startIndex = spliceIndex;\n if (v === undefined) {\n cur[field] = new Array(startIndex);\n }\n else if (!Array.isArray(v)) {\n var arr_1 = new Array(startIndex);\n var keys = Object.keys(v);\n for (var i_1 = 0; i_1 < keys.length; i_1 += 1) {\n var key = keys[i_1];\n var item = v[key];\n var index = Number(key);\n if (arr_1.length < index)\n arr_1.length = index;\n arr_1[key] = item;\n }\n cur[field] = arr_1;\n }\n var arr = cur[field];\n if (arr.length < startIndex) {\n arr.length = startIndex;\n }\n var inserts = new Array(newVal.length);\n inserts.fill(true);\n arr.splice.apply(arr, __spreadArray([spliceIndex, spliceDel], inserts, false));\n }\n break;\n }\n if (v === undefined) {\n var next = Object.create(null);\n cur[field] = next;\n cur = next;\n }\n else {\n cur = v;\n }\n }\n }\n this.procGenWrapper.update(data, dataUpdatePathTree);\n };\n GlassEaselTemplateInstance.prototype.tryBindingMapUpdate = function (data, change) {\n if (!change)\n return true;\n var bindingMapGen = this.bindingMapGen;\n if (!bindingMapGen) {\n return false;\n }\n var path = change[0];\n if (path.length !== 1)\n return false;\n return this.procGenWrapper.bindingMapUpdate(path[0], data, bindingMapGen);\n };\n return GlassEaselTemplateInstance;\n}());\n","import { BehaviorBuilder, } from './behavior';\nimport { Component, } from './component';\nimport { normalizeComponentOptions, } from './global_options';\nimport { StyleScopeManager, } from './class_list';\nimport { TraitBehavior } from './trait_behaviors';\nvar normalizePath = function (path, basePath) {\n var slices;\n if (path[0] !== '/') {\n slices = basePath.split('/').slice(0, -1).concat(path.split('/'));\n }\n else {\n slices = path.split('/');\n }\n var finalSlices = [];\n for (var i = 0; i < slices.length; i += 1) {\n var slice = slices[i];\n if (slice === '' || slice === '.')\n continue;\n if (slice === '..') {\n finalSlices.pop();\n continue;\n }\n finalSlices.push(slice);\n }\n return finalSlices.join('/');\n};\nexport var normalizeUrl = function (path, relPath) {\n var protoSep = path.indexOf('://');\n if (protoSep > 0) {\n var domainSep = path.indexOf('/', protoSep + 3);\n if (domainSep > 0) {\n var domain_1 = path.slice(0, domainSep);\n var absPath_1 = normalizePath(path.slice(domainSep + 1), '');\n return {\n domain: domain_1,\n absPath: absPath_1,\n };\n }\n // HACK for invalid URL like `a://the-comp` , provide some compatibility\n var domain = path.slice(0, protoSep + 3);\n var absPath = normalizePath(path.slice(protoSep + 3), '');\n return {\n domain: domain,\n absPath: absPath,\n };\n }\n return {\n domain: null,\n absPath: normalizePath(path, relPath),\n };\n};\nvar ComponentWaitingList = /** @class */ (function () {\n function ComponentWaitingList() {\n /** @internal */\n this._$callbacks = [];\n }\n ComponentWaitingList.prototype.add = function (callback) {\n this._$callbacks.push(callback);\n };\n ComponentWaitingList.prototype.remove = function (callback) {\n var index = this._$callbacks.indexOf(callback);\n // must gurrantee order here (cannot swap-remove)\n this._$callbacks.splice(index, 1);\n };\n ComponentWaitingList.prototype.call = function (c) {\n var cbs = this._$callbacks;\n this._$callbacks = [];\n for (var i = 0; i < cbs.length; i += 1) {\n var f = cbs[i];\n f(c);\n }\n };\n return ComponentWaitingList;\n}());\nexport { ComponentWaitingList };\n/** A group of components for cross-component using */\nvar ComponentSpace = /** @class */ (function () {\n /**\n * Create a new component space\n *\n * The `defaultComponent` is the default component path.\n * It should be defined soon after creation.\n * A `baseSpace` can be provided as a \"base\" component space -\n * every component alias (and behavior alias) in the space will be imported when creation.\n * However, if any new component is added to the base space after the creation,\n * it will not be added to the created space.\n */\n function ComponentSpace(defaultComponent, baseSpace, styleScopeManager) {\n /** @internal */\n this._$behaviorList = Object.create(null);\n /** @internal */\n this._$pubBehaviorList = Object.create(null);\n /** @internal */\n this._$list = Object.create(null);\n /** @internal */\n this._$pubList = Object.create(null);\n /** @internal */\n this._$importedSpaces = Object.create(null);\n /** @internal */\n this._$listWaiting = Object.create(null);\n /** @internal */\n this._$pubListWaiting = Object.create(null);\n if (baseSpace) {\n Object.assign(this._$list, baseSpace._$pubList);\n Object.assign(this._$behaviorList, baseSpace._$pubBehaviorList);\n }\n this._$defaultComponent = defaultComponent !== null && defaultComponent !== void 0 ? defaultComponent : '';\n this._$componentOptions = normalizeComponentOptions({}, baseSpace === null || baseSpace === void 0 ? void 0 : baseSpace._$componentOptions);\n this.styleScopeManager = styleScopeManager || new StyleScopeManager();\n }\n /**\n * Update the default component options for this space\n *\n * The new options will be merged with existing options.\n */\n ComponentSpace.prototype.updateComponentOptions = function (componentOptions) {\n this._$componentOptions = normalizeComponentOptions(componentOptions, this._$componentOptions);\n };\n ComponentSpace.prototype.getComponentOptions = function () {\n return this._$componentOptions;\n };\n /**\n * Update the base component space\n *\n * This will add the components in `baseSpace` if there is no components with the same names.\n */\n ComponentSpace.prototype.updateBaseSpace = function (baseSpace) {\n this._$list = Object.assign(Object.create(null), baseSpace._$pubList, this._$list);\n this._$behaviorList = Object.assign(Object.create(null), baseSpace._$pubBehaviorList, this._$behaviorList);\n };\n /**\n * Import another component space\n *\n * The components in the imported space can be used by components in this space.\n * The `protoDomain` should be URL-like, i.e. `space://another-space` .\n * When using, the components in the imported space should be specified with `protoDomain` .\n * For example, if `protoDomain` is `space://another-space` and one imported component has alias `my-comp` ,\n * then it should be specified with `space://another-space/my-comp` .\n * If `privateUse` set to false, only component alias in the imported space can be used;\n * the original name of components is imported otherwise.\n */\n ComponentSpace.prototype.importSpace = function (protoDomain, space, privateUse) {\n this._$importedSpaces[protoDomain] = {\n space: space,\n privateUse: privateUse,\n };\n };\n /**\n * Get a component by the `path`\n *\n * The component `is` is actually treated as the \"path\" of the component.\n * In other words, the component `is` field can be a string like `path/to/the/component` .\n * Other components can be used by the component with \"relative path\" spacified.\n * In this method, if the `path` is given as a relative path (not started with `/` ),\n * it will be converted according to the `basePath` .\n * If the `path` is given as a URL-like format,\n * the component will be searched in imported comopnent spaces ( `importSpace()` for details).\n */\n ComponentSpace.prototype.getComponentByUrl = function (path, basePath) {\n var _a = normalizeUrl(path, basePath), domain = _a.domain, absPath = _a.absPath;\n var comp = this.getComponent(absPath, true, domain);\n if (!comp) {\n throw new Error(\"There is no component \\\"\".concat(absPath, \"\\\" in the space and no default component can be used\"));\n }\n return comp;\n };\n /**\n * Get a component by the `path`\n *\n * Similar to `getComponentByUrl()` ,\n * but returns `null` instead of the default component if no compnent was found.\n */\n ComponentSpace.prototype.getComponentByUrlWithoutDefault = function (path, relPath) {\n var _a = normalizeUrl(path, relPath), domain = _a.domain, absPath = _a.absPath;\n var comp = this.getComponent(absPath, false, domain);\n return comp || null;\n };\n ComponentSpace.prototype.getComponent = function (absPath, withDefault, domain) {\n if (withDefault === void 0) { withDefault = true; }\n if (domain === void 0) { domain = null; }\n var list;\n if (domain) {\n var target = this._$importedSpaces[domain];\n if (target) {\n var space = target.space, privateUse = target.privateUse;\n if (privateUse) {\n list = space._$list;\n }\n else {\n list = space._$pubList;\n }\n }\n }\n else {\n list = this._$list;\n }\n if (list) {\n var def = list[absPath];\n if (def)\n return def;\n }\n if (withDefault) {\n return this._$list[this._$defaultComponent];\n }\n return undefined;\n };\n ComponentSpace.prototype.getDefaultComponent = function () {\n return this._$list[this._$defaultComponent] || null;\n };\n ComponentSpace.prototype.isDefaultComponent = function (def) {\n return this._$list[this._$defaultComponent] === def;\n };\n /**\n * Get a behavior by the `path`\n *\n * Similar to `getComponentByUrlWithoutDefault()` but for behaviors.\n */\n ComponentSpace.prototype.getBehaviorByUrl = function (path, relPath) {\n var _a = normalizeUrl(path, relPath), domain = _a.domain, absPath = _a.absPath;\n return this._$getBehavior(absPath, domain) || null;\n };\n /** @internal */\n ComponentSpace.prototype._$getBehavior = function (absPath, domain) {\n if (domain === void 0) { domain = null; }\n var list;\n if (domain) {\n var target = this._$importedSpaces[domain];\n if (target) {\n var space = target.space, privateUse = target.privateUse;\n if (privateUse) {\n list = space._$behaviorList;\n }\n else {\n list = space._$pubBehaviorList;\n }\n }\n }\n else {\n list = this._$behaviorList;\n }\n if (list) {\n var def = list[absPath];\n if (def)\n return def;\n }\n return undefined;\n };\n /** Register a component in this space */\n ComponentSpace.prototype.defineComponent = function (def) {\n var is = def.is;\n var ret = new BehaviorBuilder(is, this).definition(def).registerComponent();\n return ret;\n };\n /** Register a behavior in this space */\n ComponentSpace.prototype.defineBehavior = function (def) {\n var is = def.is;\n var ret = new BehaviorBuilder(is, this).definition(def).registerBehavior();\n return ret;\n };\n /** Register a component or a behavior with chaining API */\n ComponentSpace.prototype.define = function (is) {\n return new BehaviorBuilder(is, this);\n };\n /**\n * Register a component or a behavior with chaining API (with method caller type specified)\n *\n * This API is generally designed for adapters which require special method callers.\n */\n ComponentSpace.prototype.defineWithMethodCaller = function (is) {\n return new BehaviorBuilder(is, this);\n };\n /** @internal */\n ComponentSpace.prototype._$registerComponent = function (is, comp) {\n this._$list[is] = comp;\n this._$behaviorList[is] = comp.behavior;\n var arr = this._$listWaiting[is];\n if (arr) {\n delete this._$listWaiting[is];\n arr.call(comp);\n }\n };\n /** @internal */\n ComponentSpace.prototype._$registerBehavior = function (is, beh) {\n this._$behaviorList[is] = beh;\n };\n /**\n * Assign a public alias to a component\n *\n * The alias can be used in other component spaces which imported this component space.\n * One component may have multiple aliases.\n */\n ComponentSpace.prototype.exportComponent = function (alias, is) {\n var comp = this._$list[is];\n if (!comp) {\n throw new Error(\"There is no component \\\"\".concat(is, \"\\\" for aliasing\"));\n }\n this._$pubList[alias] = comp;\n var arr = this._$pubListWaiting[is];\n if (arr) {\n delete this._$pubListWaiting[is];\n arr.call(comp);\n }\n };\n /**\n * Assign a public alias to a behavior\n *\n * The alias can be used in other component spaces which imported this component space.\n * One behavior may have multiple aliases.\n */\n ComponentSpace.prototype.exportBehavior = function (alias, is) {\n var beh = this._$behaviorList[is];\n if (!beh) {\n throw new Error(\"There is no behavior \\\"\".concat(is, \"\\\" for aliasing\"));\n }\n this._$pubBehaviorList[alias] = beh;\n };\n /** @internal */\n ComponentSpace.prototype._$componentWaitingList = function (path, relPath) {\n var _a = normalizeUrl(path, relPath), domain = _a.domain, absPath = _a.absPath;\n var waiting;\n if (domain) {\n var target = this._$importedSpaces[domain];\n if (target) {\n var space = target.space, privateUse = target.privateUse;\n if (privateUse) {\n if (space._$list[absPath]) {\n return null;\n }\n waiting = space._$listWaiting;\n }\n else {\n if (space._$pubList[absPath]) {\n return null;\n }\n waiting = space._$pubListWaiting;\n }\n }\n else {\n return null;\n }\n }\n else {\n if (this._$list[absPath]) {\n return null;\n }\n waiting = this._$listWaiting;\n }\n var wl = waiting[absPath];\n if (wl)\n return wl;\n wl = waiting[absPath] = new ComponentWaitingList();\n return wl;\n };\n ComponentSpace.prototype.getWaitingComponents = function () {\n return Object.keys(this._$listWaiting);\n };\n /**\n * Create a component by URL\n *\n * This `url` can contain params (started with \"?\" character).\n * The params will try to be set to component properties (if matches the property name).\n */\n ComponentSpace.prototype.createComponentByUrl = function (tagName, url, genericTargets, backendContext) {\n var _this = this;\n var domainPath = url;\n var paramStr = null;\n // parse URL\n var hashSepIndex = domainPath.indexOf('#');\n if (hashSepIndex >= 0) {\n domainPath = domainPath.slice(0, hashSepIndex);\n }\n var paramSepIndex = domainPath.indexOf('?');\n if (paramSepIndex >= 0) {\n paramStr = domainPath.slice(paramSepIndex + 1);\n domainPath = domainPath.slice(0, paramSepIndex);\n }\n // find target components\n var compDef = this.getComponentByUrl(domainPath, '');\n var genericImpls = null;\n if (genericTargets) {\n genericImpls = Object.create(null);\n Object.keys(genericTargets).forEach(function (key) {\n var url = genericTargets[key];\n var compDef = _this.getComponentByUrl(url, '');\n genericImpls[key] = compDef;\n });\n }\n // create the component\n var comp = Component.createWithGenericsAndContext(tagName, compDef, genericImpls, backendContext, function (comp) {\n // set params if provided\n if (paramStr) {\n var needApplyUpdates_1 = false;\n paramStr.split('&').forEach(function (kv) {\n var kvSepIndex = kv.indexOf('=');\n if (kvSepIndex >= 0) {\n var key = decodeURIComponent(kv.slice(0, kvSepIndex));\n var value = decodeURIComponent(kv.slice(kvSepIndex + 1));\n if (comp._$dataGroup.replaceProperty(key, value)) {\n needApplyUpdates_1 = true;\n }\n }\n });\n if (needApplyUpdates_1)\n comp.applyDataUpdates();\n }\n });\n return comp;\n };\n ComponentSpace.prototype.defineTraitBehavior = function (trans) {\n return new TraitBehavior(this, trans);\n };\n return ComponentSpace;\n}());\nexport { ComponentSpace };\n","import { triggerWarning } from '../func_arr';\nvar RangeListManager = /** @class */ (function () {\n function RangeListManager(keyName, dataList, elem, newListItem) {\n this.keyName = keyName;\n this.updateKeys(dataList);\n var items = this.items;\n var indexes = this.indexes;\n var children = [];\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var index = indexes === null ? i : indexes[i];\n children.push(newListItem(item, index));\n }\n elem.insertChildren(children, -1);\n }\n RangeListManager.prototype.updateKeys = function (dataList) {\n // collect the list depending on the the type of the data list\n var items;\n var indexes;\n if (Array.isArray(dataList)) {\n items = dataList;\n indexes = null;\n }\n else if (typeof dataList === 'object' && dataList !== null) {\n var k = Object.keys(dataList);\n items = new Array(k.length);\n indexes = new Array(k.length);\n for (var i = 0; i < k.length; i += 1) {\n var key = k[i];\n var item = dataList[key];\n items[i] = item;\n indexes[i] = key;\n }\n }\n else if (typeof dataList === 'string') {\n triggerWarning('Use string as for-list is generally for testing. Each character is treated as an item.');\n items = new Array(dataList.length);\n indexes = null;\n for (var i = 0; i < dataList.length; i += 1) {\n items[i] = dataList[i];\n }\n }\n else if (typeof dataList === 'number') {\n triggerWarning('Use number as for-list is generally for testing. The number is used as the repeated times of the item.');\n items = new Array(dataList);\n indexes = null;\n for (var i = 0; i < dataList; i += 1) {\n items[i] = i;\n }\n }\n else {\n triggerWarning('The for-list data is invalid. Use empty array instead.');\n items = [];\n indexes = null;\n }\n this.items = items;\n this.indexes = indexes;\n // generate keys and key indexes map for the list\n var keyName = this.keyName;\n var rawKeys = new Array(items.length);\n var keyMap = Object.create(null);\n var sharedKeyMap;\n if (keyName !== null) {\n // firstly, find all unique keys and shared keys\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var rawKeyField = keyName === '*this' ? item : item === null || item === void 0 ? void 0 : item[keyName];\n var rawKey = rawKeyField !== undefined && rawKeyField !== null ? String(rawKeyField) : '';\n rawKeys[i] = rawKey;\n if (keyMap[rawKey] !== undefined) {\n if (!sharedKeyMap) {\n sharedKeyMap = Object.create(null);\n }\n sharedKeyMap[rawKey] = [keyMap[rawKey], i];\n delete keyMap[rawKey];\n }\n else {\n keyMap[rawKey] = i;\n }\n }\n // convert shared keys to unique keys\n if (sharedKeyMap) {\n var keys = Object.keys(sharedKeyMap);\n triggerWarning(\"Some keys are not unique while list updates: \\\"\".concat(keys.join('\", \"'), \"\\\".\"));\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var items_1 = sharedKeyMap[key];\n var inc = 0;\n for (var j = 0; j < items_1.length; j += 1) {\n var index = items_1[j];\n while (keyMap[\"\".concat(key, \"--\").concat(inc)] !== undefined)\n inc += 1;\n var k = \"\".concat(key, \"--\").concat(inc);\n keyMap[k] = index;\n rawKeys[index] = k;\n }\n }\n }\n }\n this.rawKeys = rawKeys;\n this.keyMap = keyMap;\n this.sharedKeyMap = sharedKeyMap;\n };\n RangeListManager.prototype.diff = function (dataList, oriUpdatePathTree, elem, newListItem, updateListItem) {\n // generate new list for comparison\n var oldRawKeys = this.rawKeys;\n var oldKeyMap = this.keyMap;\n var oldSharedKeyMap = this.sharedKeyMap;\n var oldIndexes = this.indexes;\n this.updateKeys(dataList);\n var newRawKeys = this.rawKeys;\n var newSharedKeyMap = this.sharedKeyMap;\n var items = this.items;\n var indexes = this.indexes;\n var keyName = this.keyName;\n // transform the update path tree if needed:\n // if the list has been splice-updated, or a key is updated,\n // all items with old-list shared keys or new-list shared keys should be marked;\n // and items with key updates should be marked\n var allowFastComparison;\n var updatePathTree;\n if (oriUpdatePathTree === true) {\n updatePathTree = true;\n allowFastComparison = keyName === null;\n }\n else if (oriUpdatePathTree === undefined) {\n updatePathTree = oriUpdatePathTree;\n allowFastComparison = true;\n }\n else if (keyName === null) {\n updatePathTree = true;\n allowFastComparison = true;\n }\n else {\n var needUpdate = false;\n if (Array.isArray(oriUpdatePathTree)) {\n needUpdate = true;\n }\n else {\n var keys = Object.keys(oriUpdatePathTree);\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n var subTree = oriUpdatePathTree[k];\n if (subTree === true || (keyName === '*this' ? subTree : subTree === null || subTree === void 0 ? void 0 : subTree[keyName])) {\n needUpdate = true;\n break;\n }\n }\n }\n if (needUpdate) {\n updatePathTree = new Array(newRawKeys.length);\n for (var i = 0; i < newRawKeys.length; i += 1) {\n var k = newRawKeys[i];\n if ((oldSharedKeyMap === null || oldSharedKeyMap === void 0 ? void 0 : oldSharedKeyMap[k]) !== undefined || (newSharedKeyMap === null || newSharedKeyMap === void 0 ? void 0 : newSharedKeyMap[k]) !== undefined) {\n updatePathTree[i] = true;\n }\n else {\n var subTree = oriUpdatePathTree[i];\n if (subTree === undefined) {\n // empty\n }\n else if (subTree === true || (keyName === '*this' ? subTree : subTree === null || subTree === void 0 ? void 0 : subTree[keyName])) {\n updatePathTree[i] = true;\n }\n else {\n updatePathTree[i] = subTree;\n }\n }\n }\n allowFastComparison = false;\n }\n else {\n updatePathTree = oriUpdatePathTree;\n allowFastComparison = false;\n }\n }\n // if there is no key, or nothing in the old list range is updated\n if (allowFastComparison) {\n // transform the update path tree if needed:\n // if the list has been splice-updated, then mark the whole list\n var updatePathTree_1;\n if (Array.isArray(oriUpdatePathTree))\n updatePathTree_1 = true;\n else\n updatePathTree_1 = oriUpdatePathTree;\n // simply match them one-by-one\n var i = 0;\n while (i < oldRawKeys.length && i < newRawKeys.length) {\n var item = items[i];\n var index = indexes === null ? i : indexes[i];\n var oldIndex = oldIndexes === null ? i : oldIndexes[i];\n var u = updatePathTree_1 === true || updatePathTree_1 === undefined\n ? updatePathTree_1\n : updatePathTree_1[i];\n updateListItem(item, index, u, index !== oldIndex, elem.childNodes[i]);\n i += 1;\n }\n // if the old list has extra items, remove them;\n // if the new list has extra items, append them\n if (i < oldRawKeys.length) {\n elem.removeChildren(i, oldRawKeys.length - i);\n }\n else if (i < newRawKeys.length) {\n var children = [];\n for (; i < newRawKeys.length; i += 1) {\n var item = items[i];\n var index = indexes === null ? i : indexes[i];\n children.push(newListItem(item, index));\n }\n elem.insertChildren(children, -1);\n }\n return;\n }\n // in order to find out which nodes are stable (a.k.a. not needed to be moved),\n // here uses a classic LCS (longest-common-subsequence) algorithm for list with distinct items,\n // which is O(N*logN) at worst\n // (the `minIndexByLen[i]` is the minimum old-list index when LCS length is `i` )\n var minIndexByLen = [];\n var minIndexByLenIndexes = [];\n var minIndexPrev = new Array(newRawKeys.length);\n var oldPosList = new Array(newRawKeys.length);\n var prevOldIndex = -1;\n var prevMinIndexByLenIndex = -1;\n for (var i = 0; i < newRawKeys.length; i += 1) {\n var rawKey = newRawKeys[i];\n // the new-list current item is likely to be the same as the one in old-list;\n // if that, simply use it -\n // this will help to decrease the overhead in common cases (O(N) in best case)\n if (oldRawKeys[prevOldIndex + 1] === rawKey) {\n prevOldIndex += 1;\n prevMinIndexByLenIndex += 1;\n minIndexByLen[prevMinIndexByLenIndex] = prevOldIndex;\n minIndexByLenIndexes[prevMinIndexByLenIndex] = i;\n minIndexPrev[i] = prevMinIndexByLenIndex > 0\n ? minIndexByLenIndexes[prevMinIndexByLenIndex - 1]\n : -1;\n oldPosList[i] = prevOldIndex;\n continue;\n }\n // Skip new items\n var oldIndex = oldKeyMap[rawKey];\n if (oldIndex === undefined) {\n oldPosList[i] = -1;\n continue;\n }\n // find the old-list index for the key of the current item\n var bottom = 0;\n var top_1 = minIndexByLen.length;\n while (bottom < top_1) {\n var mid = Math.floor((bottom + top_1) / 2);\n if (oldIndex < minIndexByLen[mid])\n top_1 = mid;\n else\n bottom = mid + 1;\n }\n minIndexByLen[top_1] = oldIndex;\n minIndexByLenIndexes[top_1] = i;\n minIndexPrev[i] = top_1 > 0 ? minIndexByLenIndexes[top_1 - 1] : -1;\n oldPosList[i] = oldIndex;\n prevOldIndex = oldIndex;\n prevMinIndexByLenIndex = top_1;\n }\n var lcsLen = minIndexByLenIndexes.length;\n // if LCS is the whole list, then the list is not changed -\n // simply match each item one-by-one\n if (lcsLen === newRawKeys.length && lcsLen === oldRawKeys.length) {\n var i = 0;\n while (i < oldRawKeys.length && i < newRawKeys.length) {\n var item = items[i];\n var index = indexes === null ? i : indexes[i];\n var oldIndex = oldIndexes === null ? i : oldIndexes[i];\n var u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[i];\n updateListItem(item, index, u, index !== oldIndex, elem.childNodes[i]);\n i += 1;\n }\n return;\n }\n // search the unused `minIndexPrev` items to get the LCS item list\n // ( `minIndexByLen` is reused as the LCS array, since they must have the same length)\n var prevLcsIndex = lcsLen > 0 ? minIndexByLenIndexes[lcsLen - 1] : -1;\n var curLcsArrIndex = lcsLen;\n while (prevLcsIndex !== -1) {\n curLcsArrIndex -= 1;\n minIndexByLen[curLcsArrIndex] = prevLcsIndex;\n prevLcsIndex = minIndexPrev[prevLcsIndex];\n }\n var lcsArr = minIndexByLen;\n // decide what operation to be used with each item\n var OpKind;\n (function (OpKind) {\n OpKind[OpKind[\"Stable\"] = 0] = \"Stable\";\n OpKind[OpKind[\"ForwardMove\"] = 1] = \"ForwardMove\";\n OpKind[OpKind[\"BackwardMove\"] = 2] = \"BackwardMove\";\n })(OpKind || (OpKind = {}));\n var oldListOp = new Array(oldRawKeys.length);\n var changedItems = new Array(newRawKeys.length);\n var prevLcsOldPos = lcsArr[curLcsArrIndex];\n for (var i = 0; i < oldPosList.length; i += 1) {\n var oldPos = oldPosList[i];\n if (i === lcsArr[curLcsArrIndex]) {\n prevLcsOldPos = oldPos;\n curLcsArrIndex += 1;\n oldListOp[oldPos] = 0 /* OpKind.Stable */;\n continue;\n }\n if (oldPos === -1) {\n var item = items[i];\n var index = indexes === null ? i : indexes[i];\n changedItems[i] = newListItem(item, index);\n continue;\n }\n if (oldPos > prevLcsOldPos) {\n oldListOp[oldPos] = 2 /* OpKind.BackwardMove */;\n }\n else {\n oldListOp[oldPos] = 1 /* OpKind.ForwardMove */;\n }\n changedItems[i] = elem.childNodes[oldPos];\n }\n // visit the op list again and do the operations one-by-one\n var realListDiff = 0;\n var opOldPos = 0;\n var opIndex = 0;\n curLcsArrIndex = 0;\n do {\n var nextStable = curLcsArrIndex < lcsArr.length\n ? lcsArr[curLcsArrIndex]\n : changedItems.length;\n var nextStableOldPos = curLcsArrIndex < lcsArr.length\n ? oldPosList[nextStable]\n : oldListOp.length;\n // remove items between two LCS items\n while (opOldPos < nextStableOldPos) {\n if (oldListOp[opOldPos] === undefined) {\n var start = opOldPos;\n opOldPos += 1;\n var count = 1;\n while (opOldPos < nextStableOldPos && oldListOp[opOldPos] === undefined) {\n opOldPos += 1;\n count += 1;\n }\n elem.removeChildren(start + realListDiff, count);\n realListDiff -= count;\n }\n else {\n if (oldListOp[opOldPos] === 2 /* OpKind.BackwardMove */) {\n realListDiff -= 1;\n }\n opOldPos += 1;\n }\n }\n // insert or move items between two LCS items\n while (opIndex < nextStable) {\n var newItem = changedItems[opIndex];\n var oldPos = oldPosList[opIndex];\n if (oldPos === -1) {\n var start = opIndex;\n opIndex += 1;\n var count = 1;\n while (opIndex < nextStable && oldPosList[opIndex] === -1) {\n opIndex += 1;\n count += 1;\n }\n elem.insertChildren(changedItems.slice(start, start + count), nextStableOldPos + realListDiff);\n realListDiff += count;\n }\n else {\n elem.insertChildAt(newItem, nextStableOldPos + realListDiff);\n var item = items[opIndex];\n var index = indexes === null ? opIndex : indexes[opIndex];\n var oldIndex = oldIndexes === null ? oldPos : oldIndexes[oldPos];\n var u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[opIndex];\n updateListItem(item, index, u, index !== oldIndex, newItem);\n if (oldListOp[oldPos] === 2 /* OpKind.BackwardMove */) {\n realListDiff += 1;\n }\n opIndex += 1;\n }\n }\n // stable items might be marked and indexes in stable positions might change;\n // if that, do an update\n // IDEA do not update if {{index}} is not used in template\n if (curLcsArrIndex < lcsArr.length) {\n var item = items[nextStable];\n var index = indexes === null ? nextStable : indexes[nextStable];\n var oldIndex = oldIndexes === null ? nextStableOldPos : oldIndexes[nextStableOldPos];\n var u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[nextStable];\n var node = elem.childNodes[nextStableOldPos + realListDiff];\n updateListItem(item, index, u, index !== oldIndex, node);\n }\n opOldPos = nextStableOldPos + 1;\n opIndex = nextStable + 1;\n curLcsArrIndex += 1;\n } while (curLcsArrIndex <= lcsArr.length);\n };\n return RangeListManager;\n}());\nexport { RangeListManager };\n","/* eslint-disable class-methods-use-this */\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { Element, Component, } from '..';\nimport { RangeListManager } from './range_list_diff';\nexport var getTmplArgs = function (elem) {\n var node = elem;\n // eslint-disable-next-line no-return-assign\n return (node._$wxTmplArgs = node._$wxTmplArgs || {});\n};\nexport var dataValueToString = function (v) {\n if (v === null || v === undefined) {\n return '';\n }\n return String(v);\n};\nvar dashToCamelCase = function (dash) {\n var ret = dash.indexOf('-') <= 0\n ? dash\n : dash.replace(/-[a-z]/g, function (s) { return s[1].toUpperCase(); });\n return ret;\n};\nvar ProcGenWrapper = /** @class */ (function () {\n function ProcGenWrapper(shadowRoot, procGen, disallowNativeNode) {\n this.bindingMapDisabled = false;\n this.shadowRoot = shadowRoot;\n this.procGen = procGen;\n this.disallowNativeNode = disallowNativeNode;\n }\n ProcGenWrapper.prototype.create = function (data) {\n var _a = this, shadowRoot = _a.shadowRoot, procGen = _a.procGen;\n var children = procGen(this, true, data, undefined);\n this.handleChildrenCreation(children.C, shadowRoot, undefined, undefined);\n return children.B;\n };\n ProcGenWrapper.prototype.update = function (data, dataUpdatePathTree) {\n var _a = this, shadowRoot = _a.shadowRoot, procGen = _a.procGen;\n var children = procGen(this, false, data, dataUpdatePathTree);\n this.handleChildrenUpdate(children.C, shadowRoot, undefined, undefined);\n };\n ProcGenWrapper.prototype.bindingMapUpdate = function (field, data, bindingMapGenList) {\n if (this.bindingMapDisabled)\n return false;\n var updaters = bindingMapGenList[field];\n if (!updaters)\n return false;\n var prevElement = null;\n for (var i = 0; i < updaters.length; i += 1) {\n var bindingMapGen = updaters[i];\n bindingMapGen(data, \n // eslint-disable-next-line no-loop-func\n function (elem) {\n if (prevElement !== null && elem !== prevElement) {\n if (prevElement instanceof Component) {\n if (prevElement.hasPendingChanges()) {\n var nodeDataProxy = Component.getDataProxy(prevElement);\n nodeDataProxy.applyDataUpdates(true);\n }\n }\n }\n prevElement = elem;\n }, function (elem, v) {\n elem.textContent = v;\n });\n }\n var elem = prevElement;\n if (elem !== null) {\n if (elem instanceof Component) {\n if (elem.hasPendingChanges()) {\n var nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n }\n }\n return true;\n };\n ProcGenWrapper.prototype.handleChildrenCreation = function (children, parentNode, slotElement, dynamicSlotName) {\n var _this = this;\n children(true, \n // text node\n function (textContent, textInit) {\n if (slotElement && dynamicSlotName !== '') {\n var elem_1 = _this.createDynamicPlaceholder(slotElement);\n parentNode.appendChild(elem_1);\n return;\n }\n var elem = _this.shadowRoot.createTextNode(textContent);\n elem.destroyBackendElementOnDetach();\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n if (textInit)\n textInit(elem);\n parentNode.appendChild(elem);\n }, \n // component or native node\n function (tagName, genericImpls, propertyInit, children, slot, dynamicSlotValueNames) {\n if (slotElement && dynamicSlotName !== (slot || '')) {\n var elem_2 = _this.createDynamicPlaceholder(slotElement);\n parentNode.appendChild(elem_2);\n return;\n }\n var elem = _this.createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames);\n if (slotElement) {\n Element.setSlotElement(elem, slotElement);\n var tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = true;\n }\n else if (slot !== undefined) {\n elem.slot = slot;\n }\n parentNode.appendChild(elem);\n }, \n // wx:if node or template-is node\n function (branchKey, branchFunc) {\n var elem = _this.shadowRoot.createVirtualNode('wx:if');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n var tmplArgs = getTmplArgs(elem);\n tmplArgs.key = branchKey;\n _this.handleChildrenCreation(branchFunc, elem, slotElement, dynamicSlotName);\n parentNode.appendChild(elem);\n }, \n // wx:for node\n function (list, key, oriListUpdatePathTree, lvaluePath, itemCallback) {\n var shadowRoot = _this.shadowRoot;\n var elem = shadowRoot.createVirtualNode('wx:for');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n var tmplArgs = getTmplArgs(elem);\n tmplArgs.keyList = new RangeListManager(key, list, elem, function (item, index) {\n var childNode = shadowRoot.createVirtualNode('wx:for-item');\n childNode.destroyBackendElementOnDetach();\n Element.setInheritSlots(childNode);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n _this.handleChildrenCreation(function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) {\n itemCallback(true, item, index, undefined, undefined, lvaluePath ? __spreadArray(__spreadArray([], lvaluePath, true), [index], false) : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n return childNode;\n });\n parentNode.appendChild(elem);\n }, \n // slot node\n function (slotName, slotValueInit) {\n var elem = _this.shadowRoot.createVirtualNode('slot');\n elem.destroyBackendElementOnDetach();\n Element.setSlotName(elem, dataValueToString(slotName));\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n if (slotValueInit)\n slotValueInit(elem);\n parentNode.appendChild(elem);\n }, \n // other virtual node\n function (children, slot) {\n if (slot !== undefined) {\n if (slotElement) {\n if (dynamicSlotName === slot) {\n var elem = _this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setSlotElement(elem, slotElement);\n var tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = true;\n _this.handleChildrenCreation(children, elem, undefined, undefined);\n parentNode.appendChild(elem);\n }\n else {\n var elem = _this.createDynamicPlaceholder(slotElement);\n parentNode.appendChild(elem);\n }\n }\n else {\n var elem = _this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n elem.slot = slot;\n _this.handleChildrenCreation(children, elem, undefined, undefined);\n parentNode.appendChild(elem);\n }\n }\n else {\n var elem = _this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n _this.handleChildrenCreation(children, elem, slotElement, dynamicSlotName);\n parentNode.appendChild(elem);\n }\n }, undefined, undefined);\n };\n ProcGenWrapper.prototype.handleChildrenUpdate = function (children, parentNode, slotElement, dynamicSlotName) {\n var _this = this;\n var index = 0;\n var childNodes = slotElement\n ? parentNode.childNodes.filter(function (node) { return node._$nodeSlotElement === slotElement; })\n : parentNode.childNodes;\n children(false, \n // text node\n function (textContent) {\n var elem = childNodes[index];\n index += 1;\n if (slotElement) {\n var tmplArgs = getTmplArgs(elem);\n if (!tmplArgs.dynamicSlotNameMatched) {\n return;\n }\n }\n if (textContent !== undefined) {\n elem.textContent = textContent;\n }\n }, \n // component or native node\n function (tagName, genericImpls, propertyInit, children, slot, dynamicSlotValueNames) {\n var elem = childNodes[index];\n index += 1;\n if (slotElement) {\n var tmplArgs = getTmplArgs(elem);\n if (dynamicSlotName === (slot || '')) {\n if (!tmplArgs.dynamicSlotNameMatched) {\n var newElem = _this.createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames);\n Element.setSlotElement(newElem, slotElement);\n var newTmplArgs = getTmplArgs(newElem);\n newTmplArgs.dynamicSlotNameMatched = true;\n parentNode.replaceChild(newElem, elem);\n return;\n }\n }\n else {\n if (tmplArgs.dynamicSlotNameMatched) {\n var newElem = _this.createDynamicPlaceholder(slotElement);\n parentNode.replaceChild(newElem, elem);\n }\n return;\n }\n }\n propertyInit(elem, false);\n var dynSlot = false;\n if (elem instanceof Component) {\n var sr = _this.dynamicSlotUpdate(elem, dynamicSlotValueNames, children);\n if (sr)\n dynSlot = true;\n if (elem.hasPendingChanges()) {\n var nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n sr === null || sr === void 0 ? void 0 : sr.applySlotUpdates();\n }\n if (!slotElement) {\n if (slot !== undefined)\n elem.slot = slot;\n }\n if (!dynSlot) {\n _this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n }, \n // wx:if node or template-is node\n function (branchKey, branchFunc) {\n var elem = childNodes[index];\n index += 1;\n var tmplArgs = getTmplArgs(elem);\n if (tmplArgs.key === branchKey) {\n _this.handleChildrenUpdate(branchFunc, elem, slotElement, dynamicSlotName);\n }\n else {\n var newElem = _this.shadowRoot.createVirtualNode('wx:if');\n newElem.destroyBackendElementOnDetach();\n Element.setInheritSlots(newElem);\n if (slotElement)\n Element.setSlotElement(newElem, slotElement);\n var tmplArgs_1 = getTmplArgs(newElem);\n tmplArgs_1.key = branchKey;\n _this.handleChildrenCreation(branchFunc, newElem, slotElement, dynamicSlotName);\n if (slotElement)\n parentNode.replaceChild(newElem, elem);\n else\n parentNode.replaceChildAt(newElem, index - 1);\n }\n }, \n // wx:for node\n function (list, key, oriListUpdatePathTree, lvaluePath, itemCallback) {\n var elem = childNodes[index];\n index += 1;\n var tmplArgs = getTmplArgs(elem);\n var keyListManager = tmplArgs.keyList;\n keyListManager.diff(list, oriListUpdatePathTree, elem, function (item, index) {\n var childNode = _this.shadowRoot.createVirtualNode('wx:for-item');\n childNode.destroyBackendElementOnDetach();\n Element.setInheritSlots(childNode);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n _this.handleChildrenCreation(function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) {\n itemCallback(true, item, index, undefined, undefined, lvaluePath ? __spreadArray(__spreadArray([], lvaluePath, true), [index], false) : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n return childNode;\n }, function (item, index, updatePathTree, indexChanged, childNode) {\n _this.handleChildrenUpdate(function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) {\n itemCallback(false, item, index, updatePathTree, indexChanged ? true : undefined, lvaluePath ? __spreadArray(__spreadArray([], lvaluePath, true), [index], false) : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n });\n }, \n // slot node\n function (slotName, slotValueInit) {\n var elem = childNodes[index];\n index += 1;\n if (slotName !== undefined) {\n Element.setSlotName(elem, dataValueToString(slotName));\n }\n if (slotValueInit)\n slotValueInit(elem);\n _this.shadowRoot.applySlotValueUpdates(elem);\n }, \n // other virtual node\n function (children, slot) {\n var elem = childNodes[index];\n index += 1;\n if (slot !== undefined) {\n if (slotElement) {\n var tmplArgs = getTmplArgs(elem);\n if (dynamicSlotName === slot) {\n if (tmplArgs.dynamicSlotNameMatched) {\n _this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n else {\n var newElem = _this.shadowRoot.createVirtualNode('virtual');\n newElem.destroyBackendElementOnDetach();\n Element.setSlotElement(newElem, slotElement);\n var newTmplArgs = getTmplArgs(newElem);\n newTmplArgs.dynamicSlotNameMatched = true;\n _this.handleChildrenCreation(children, newElem, undefined, undefined);\n parentNode.replaceChild(newElem, elem);\n }\n }\n else {\n if (tmplArgs.dynamicSlotNameMatched) {\n var newElem = _this.createDynamicPlaceholder(slotElement);\n parentNode.replaceChild(newElem, elem);\n }\n }\n }\n else {\n elem.slot = slot;\n _this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n }\n else {\n _this.handleChildrenUpdate(children, elem, slotElement, dynamicSlotName);\n }\n }, undefined, undefined);\n };\n ProcGenWrapper.prototype.dynamicSlotUpdate = function (elem, dynamicSlotValueNames, children) {\n var _this = this;\n var sr = elem.getShadowRoot();\n if (sr === null || sr === void 0 ? void 0 : sr.isDynamicSlots()) {\n sr.setDynamicSlotHandler(dynamicSlotValueNames || [], function (slot, slotName, slotValues) {\n _this.handleChildrenCreation(function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) {\n children(true, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode, slotValues, undefined);\n }, elem, slot, slotName);\n }, function (slot) {\n var childIndexes = [];\n for (var i = 0; i < elem.childNodes.length; i += 1) {\n var child = elem.childNodes[i];\n if (sr.getContainingSlot(child) === slot) {\n childIndexes.push(i);\n }\n }\n for (var i = 0; i < childIndexes.length; i += 1) {\n var childIndex = childIndexes[i];\n elem.removeChildAt(childIndex - i);\n }\n }, function (slot, slotValues, slotValueUpdatePathTrees) {\n var slotName = slot._$slotName || '';\n _this.handleChildrenUpdate(function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) {\n children(false, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode, slotValues, slotValueUpdatePathTrees);\n }, elem, slot, slotName);\n });\n return sr;\n }\n return null;\n };\n ProcGenWrapper.prototype.createDynamicPlaceholder = function (slotElement) {\n var elem = this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setSlotElement(elem, slotElement);\n var tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = false;\n return elem;\n };\n ProcGenWrapper.prototype.createCommonElement = function (tagName, genericImpls, propertyInit, children, dynamicSlotValueNames) {\n var _this = this;\n var placeholding = this.shadowRoot.checkComponentPlaceholder(tagName);\n var elem;\n var dynSlot = false;\n if (this.disallowNativeNode || placeholding !== undefined) {\n var initPropValues_1 = function (elem) {\n var sr = _this.dynamicSlotUpdate(elem, dynamicSlotValueNames, children);\n if (sr)\n dynSlot = true;\n propertyInit(elem, true);\n if (elem.hasPendingChanges()) {\n var nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n sr === null || sr === void 0 ? void 0 : sr.applySlotUpdates();\n };\n var placeholderCb = void 0;\n if (placeholding) {\n placeholderCb = function () {\n var _a;\n var replacer = _this.shadowRoot.createComponent(tagName, tagName, genericImpls, undefined, initPropValues_1);\n replacer.destroyBackendElementOnDetach();\n var replacerShadowRoot = replacer.getShadowRoot();\n var elemShadowRoot = elem.getShadowRoot();\n if (replacerShadowRoot === null || replacerShadowRoot === void 0 ? void 0 : replacerShadowRoot.isDynamicSlots()) {\n if (!(elemShadowRoot === null || elemShadowRoot === void 0 ? void 0 : elemShadowRoot.isDynamicSlots())) {\n throw new Error('The \"dynamicSlots\" option of the component and its placeholder should be the same.');\n }\n elemShadowRoot.useDynamicSlotHandlerFrom(replacerShadowRoot);\n (_a = elem.parentNode) === null || _a === void 0 ? void 0 : _a.replaceChild(replacer, elem);\n }\n else {\n if (elemShadowRoot === null || elemShadowRoot === void 0 ? void 0 : elemShadowRoot.isDynamicSlots()) {\n throw new Error('The \"dynamicSlots\" option of the component and its placeholder should be the same.');\n }\n elem.selfReplaceWith(replacer);\n }\n };\n }\n elem = this.shadowRoot.createComponent(tagName, tagName, genericImpls, placeholderCb, initPropValues_1);\n elem.destroyBackendElementOnDetach();\n }\n else {\n elem = this.shadowRoot.createComponentOrNativeNode(tagName, genericImpls, function (elem) {\n var sr = elem instanceof Component\n ? _this.dynamicSlotUpdate(elem, dynamicSlotValueNames, children)\n : null;\n if (sr)\n dynSlot = true;\n propertyInit(elem, true);\n if (elem instanceof Component) {\n if (elem.hasPendingChanges()) {\n var nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n sr === null || sr === void 0 ? void 0 : sr.applySlotUpdates();\n }\n });\n elem.destroyBackendElementOnDetach();\n }\n if (dynSlot) {\n this.bindingMapDisabled = true; // IDEA better binding map disable detection\n }\n else {\n this.handleChildrenCreation(children, elem, undefined, undefined);\n }\n return elem;\n };\n // set slot\n // (not used any more, leaving for compatibilities)\n ProcGenWrapper.prototype.s = function (elem, v) {\n elem.slot = v;\n };\n // set slot value\n ProcGenWrapper.prototype.l = function (elem, name, value) {\n this.shadowRoot.replaceSlotValue(elem, name, value);\n };\n // set id\n ProcGenWrapper.prototype.i = function (elem, v) {\n elem.id = v;\n };\n // set class or external classes named `class`\n ProcGenWrapper.prototype.c = function (elem, v) {\n if (elem instanceof Component) {\n // \"class\" itself can also be an external class\n var hasExternalClass = elem.hasExternalClass('class');\n if (hasExternalClass) {\n elem.setExternalClass('class', dataValueToString(v));\n }\n elem.class = dataValueToString(v);\n }\n else {\n elem.class = dataValueToString(v);\n }\n };\n // set style or property named `style`\n ProcGenWrapper.prototype.y = function (elem, v) {\n elem.setNodeStyle(dataValueToString(v), 0 /* StyleSegmentIndex.MAIN */);\n };\n // set dataset\n ProcGenWrapper.prototype.d = function (elem, name, v) {\n var dataset;\n if (elem.dataset)\n dataset = elem.dataset;\n else\n dataset = elem.dataset = {};\n dataset[name] = v;\n };\n // set mark\n ProcGenWrapper.prototype.m = function (elem, name, v) {\n elem.setMark(name, v);\n };\n // set event handler\n ProcGenWrapper.prototype.v = function (elem, evName, v, final, mutated, capture, isDynamic) {\n var handlerName = dataValueToString(v);\n var listener = function (ev) {\n var host = elem.ownerShadowRoot.getHostNode();\n var ret;\n var methodCaller = host.getMethodCaller();\n var f = host._$methodMap[handlerName];\n if (typeof f === 'function') {\n ret = f.call(methodCaller, ev);\n }\n return ret;\n };\n var evOptions = {\n final: final,\n mutated: mutated,\n capture: capture,\n };\n if (isDynamic) {\n var tmplArgs = getTmplArgs(elem);\n if (!tmplArgs.dynEvListeners)\n tmplArgs.dynEvListeners = {};\n var dynEvListeners = tmplArgs.dynEvListeners;\n if (dynEvListeners[evName]) {\n elem.removeListener(evName, dynEvListeners[evName], evOptions);\n }\n dynEvListeners[evName] = listener;\n }\n if (handlerName)\n elem.addListener(evName, listener, evOptions);\n };\n // set scope-data\n ProcGenWrapper.prototype.sd = function (elem, scopeData) {\n var tmplArgs = getTmplArgs(elem);\n tmplArgs.scopeData = scopeData;\n };\n // update a property or external class of a component, or an attribute of a native node\n ProcGenWrapper.prototype.r = function (elem, name, v, lvaluePath) {\n if (elem instanceof Component) {\n var nodeDataProxy = Component.getDataProxy(elem);\n var camelName = dashToCamelCase(name);\n if (nodeDataProxy.replaceProperty(camelName, v)) {\n if (lvaluePath) {\n nodeDataProxy.setModelBindingListener(camelName, function (value) {\n var host = elem.ownerShadowRoot.getHostNode();\n var nodeDataProxy = Component.getDataProxy(host);\n nodeDataProxy.replaceDataOnPath(lvaluePath, value);\n nodeDataProxy.applyDataUpdates(false);\n });\n }\n }\n else if (elem.hasExternalClass(name)) {\n elem.setExternalClass(name, dataValueToString(v));\n }\n else {\n // compatibilities for legacy event binding syntax\n if (camelName.startsWith('bind')) {\n ProcGenWrapper.prototype.v(elem, camelName.slice('bind'.length), dataValueToString(v), false, false, false, true);\n }\n else if (camelName.startsWith('captureBind')) {\n ProcGenWrapper.prototype.v(elem, camelName.slice('captureBind'.length), dataValueToString(v), false, false, true, true);\n }\n else if (camelName.startsWith('catch')) {\n ProcGenWrapper.prototype.v(elem, camelName.slice('catch'.length), dataValueToString(v), true, false, false, true);\n }\n else if (camelName.startsWith('captureCatch')) {\n ProcGenWrapper.prototype.v(elem, camelName.slice('captureCatch'.length), dataValueToString(v), true, false, true, true);\n }\n else if (camelName.startsWith('on')) {\n ProcGenWrapper.prototype.v(elem, camelName.slice('on'.length), dataValueToString(v), false, false, false, true);\n }\n }\n }\n else {\n elem.updateAttribute(name, v);\n }\n };\n return ProcGenWrapper;\n}());\nexport { ProcGenWrapper };\n","/* eslint-disable class-methods-use-this */\n/* global document */\nimport { dataValueToString, } from './proc_gen_wrapper';\nvar noop = function () { };\nvar ProcGenWrapperDom = /** @class */ (function () {\n function ProcGenWrapperDom(shadowRoot, procGen) {\n this.shadowRoot = shadowRoot;\n this.procGen = procGen;\n }\n ProcGenWrapperDom.prototype.create = function (data) {\n var _a = this, shadowRoot = _a.shadowRoot, procGen = _a.procGen;\n var children = procGen(this, true, data, undefined);\n this.handleChildrenCreation(children.C, shadowRoot.shadowRootElement);\n return children.B;\n };\n ProcGenWrapperDom.prototype.bindingMapUpdate = function (field, data, bindingMapGenList) {\n var updaters = bindingMapGenList[field];\n if (updaters === undefined)\n return;\n for (var i = 0; i < updaters.length; i += 1) {\n var bindingMapGen = updaters[i];\n bindingMapGen(data, function () { }, function (elem, v) {\n elem.textContent = v;\n });\n }\n };\n ProcGenWrapperDom.prototype.handleChildrenCreation = function (children, parentNode) {\n var _this = this;\n var slotMergeable = true;\n var slotMerged = false;\n var appendSlot = function () {\n slotMergeable = false;\n slotMerged = false;\n var elem = document.createElement('virtual');\n parentNode.appendChild(elem);\n _this.shadowRoot.slot = elem;\n };\n children(true, \n // text node\n function (textContent, textInit) {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n var elem = document.createTextNode(textContent || '');\n if (textInit)\n textInit(elem);\n parentNode.appendChild(elem);\n }, \n // component or native node\n function (tagName, genericImpls, propertyInit, children) {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n var elem = document.createElement(tagName);\n propertyInit(elem, true);\n _this.handleChildrenCreation(children, elem);\n parentNode.appendChild(elem);\n }, \n // wx:if node or template-is node\n noop, \n // wx:for node\n noop, \n // slot node\n function () {\n if (slotMergeable) {\n slotMerged = true;\n _this.shadowRoot.slot = parentNode;\n }\n else {\n appendSlot();\n }\n }, \n // other virtual node\n function (children) {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n var elem = document.createElement('virtual');\n _this.handleChildrenCreation(children, elem);\n parentNode.appendChild(elem);\n });\n };\n // set slot\n ProcGenWrapperDom.prototype.s = function () {\n noop();\n };\n // set id\n ProcGenWrapperDom.prototype.i = function (elem, v) {\n this.shadowRoot.idMap[v] = elem;\n };\n // set class or external classes named `class`\n ProcGenWrapperDom.prototype.c = function (elem, v) {\n elem.setAttribute('class', v);\n };\n // set style or property named `style`\n ProcGenWrapperDom.prototype.y = function (elem, v) {\n elem.setAttribute('style', v);\n };\n // set dataset\n ProcGenWrapperDom.prototype.d = function (elem, name, v) {\n elem.dataset[name] = dataValueToString(v);\n };\n // set mark\n ProcGenWrapperDom.prototype.m = function () {\n noop();\n };\n // set event handler\n ProcGenWrapperDom.prototype.v = function (elem, evName, v, final) {\n var _this = this;\n this.shadowRoot.setListener(elem, evName, function (ev) {\n var handler = _this.shadowRoot.template.methods[v];\n var ret = handler === null || handler === void 0 ? void 0 : handler(ev);\n if (final)\n return false;\n return ret;\n });\n };\n // set scope-data\n ProcGenWrapperDom.prototype.sd = function () {\n noop();\n };\n // update a property or external class of a component, or an attribute of a native node\n ProcGenWrapperDom.prototype.r = function (elem, name, v) {\n if (typeof v === 'boolean') {\n if (v)\n elem.setAttribute(name, '');\n else\n elem.removeAttribute(name);\n }\n else {\n elem.setAttribute(name, dataValueToString(v));\n }\n };\n return ProcGenWrapperDom;\n}());\nexport { ProcGenWrapperDom };\n","/* global document: false */\nimport { ProcGenWrapperDom, } from './proc_gen_wrapper_dom';\nvar DEFAULT_PROC_GEN_DOM = function () { return ({\n C: function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot) {\n defineSlot('');\n },\n B: Object.create(null),\n}); };\nexport var DEFAULT_PROC_GEN_GROUP_DOM = function () { return DEFAULT_PROC_GEN_DOM; };\nvar GlassEaselTemplateDOM = /** @class */ (function () {\n function GlassEaselTemplateDOM(behavior) {\n if (typeof behavior._$template !== 'object' && behavior._$template !== undefined) {\n throw new Error(\"Component template of \".concat(behavior.is, \" must be a valid compiled template (or \\\"null\\\" for default template).\"));\n }\n else {\n var c = behavior._$template || {\n content: DEFAULT_PROC_GEN_GROUP_DOM,\n };\n this.genObjectGroupEnv = {\n list: c.groupList || Object.create(null),\n group: c.content,\n };\n }\n this.updateMode = '';\n this.methods = behavior._$methodMap;\n }\n GlassEaselTemplateDOM.prototype.createInstance = function (comp) {\n return new GlassEaselTemplateDOMInstance(this, comp);\n };\n return GlassEaselTemplateDOM;\n}());\nexport { GlassEaselTemplateDOM };\nvar GlassEaselTemplateDOMInstance = /** @class */ (function () {\n function GlassEaselTemplateDOMInstance(template, comp) {\n if (comp.getBackendMode() !== 3 /* BackendMode.Domlike */) {\n throw new Error(\"Component template of \".concat(comp.is, \" cannot be initialized since external rendering is only supported in Domlike backend currently.\"));\n }\n var shadowRootElement = comp.getBackendElement();\n if (!shadowRootElement) {\n throw new Error(\"Component template of \".concat(comp.is, \" cannot be initialized as external components since no suitable backend element found.\"));\n }\n this.comp = comp;\n this.shadowRoot = this;\n this.shadowRootElement = shadowRootElement;\n this.root = shadowRootElement;\n this.slot = shadowRootElement;\n this.template = template;\n var procGen = template.genObjectGroupEnv.group('') || DEFAULT_PROC_GEN_GROUP_DOM('');\n this.procGenWrapper = new ProcGenWrapperDom(this, procGen);\n this.idMap = Object.create(null);\n this.listeners = [];\n }\n GlassEaselTemplateDOMInstance.prototype.initValues = function (data) {\n this.bindingMapGen = this.procGenWrapper.create(data);\n if (!this.bindingMapGen) {\n throw new Error('The component template does not support binding-map-update, so it cannot be used as external components.');\n }\n var shadowRoot = this.shadowRootElement;\n if (this.slot === shadowRoot && shadowRoot.childNodes.length > 0) {\n // if `<slot />` is forgot, add one at the end of the child list\n var slot = document.createElement('virtual');\n shadowRoot.appendChild(slot);\n this.slot = slot;\n }\n };\n GlassEaselTemplateDOMInstance.prototype.getIdMap = function () {\n return this.idMap;\n };\n GlassEaselTemplateDOMInstance.prototype.updateValues = function (data, changes) {\n var bindingMapGen = this.bindingMapGen;\n for (var i = 0; i < changes.length; i += 1) {\n var path = changes[i][0];\n this.procGenWrapper.bindingMapUpdate(path[0], data, bindingMapGen);\n }\n };\n // eslint-disable-next-line class-methods-use-this\n GlassEaselTemplateDOMInstance.prototype.setListener = function (elem, ev, listener) {\n var _a;\n var target = elem;\n if (target._$wxTmplEv) {\n target._$wxTmplEv[ev] = listener;\n }\n else {\n target._$wxTmplEv = (_a = {}, _a[ev] = listener, _a);\n }\n };\n GlassEaselTemplateDOMInstance.prototype.handleEvent = function (elem, event) {\n var _a;\n var target = elem;\n var cur = target;\n var root = this.shadowRootElement;\n var evName = event.type;\n var bubbles = event.bubbles;\n for (;;) {\n var shadowedEvent = event.wrapShadowedEvent(target, null, cur);\n var f = (_a = cur._$wxTmplEv) === null || _a === void 0 ? void 0 : _a[evName];\n if (f) {\n var r = f.call(cur, shadowedEvent);\n if (r === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n if (!bubbles || event.propagationStopped())\n break;\n if (cur === root)\n break;\n var next = cur.parentNode;\n if (next)\n cur = next;\n else\n break;\n }\n };\n return GlassEaselTemplateDOMInstance;\n}());\nexport { GlassEaselTemplateDOMInstance };\n","import * as backend from './backend/backend_protocol';\nimport * as composedBackend from './backend/composed_backend_protocol';\nimport * as domlikeBackend from './backend/domlike_backend_protocol';\nimport { StyleScopeManager, } from './class_list';\nimport { ComponentSpace, } from './component_space';\nimport { GlassEaselTemplateEngine, } from './tmpl';\nimport { BM, } from './backend/mode';\n/**\n * The deep copy strategy\n *\n * Higher level indicates more accuracy but probably less performance.\n */\nexport var DeepCopyKind;\n(function (DeepCopyKind) {\n /**\n * Avoid deep copy\n *\n * This avoids any copy, and recursive objects can be handled without any failing.\n * However, changing non-copied data will sometimes break the logic.\n */\n DeepCopyKind[\"None\"] = \"none\";\n /**\n * Do a simple deep copy\n *\n * This simply clones each enumerable fields in an object to a new object.\n * It causes stack overflow in recursive objects.\n * Everything in prototypes is ignored.\n */\n DeepCopyKind[\"Simple\"] = \"simple\";\n /**\n * Do a deep copy with recursion detection\n *\n * This clones each enumerable fields in an object to a new object.\n * It can handle recursive objects by recursive detection.\n * Everything in prototypes is ignored.\n */\n DeepCopyKind[\"SimpleWithRecursion\"] = \"simple-recursion\";\n})(DeepCopyKind || (DeepCopyKind = {}));\nvar defaultComponentSpace = null;\nexport var getDefaultComponentSpace = function () {\n if (defaultComponentSpace) {\n return defaultComponentSpace;\n }\n var cs = new ComponentSpace();\n defaultComponentSpace = cs;\n return cs;\n};\nvar defaultBackendContext = null;\nexport var getDefaultBackendContext = function () {\n if (defaultBackendContext)\n return defaultBackendContext;\n var c;\n if (BM.DOMLIKE) {\n c = new domlikeBackend.CurrentWindowBackendContext();\n }\n else if (BM.COMPOSED) {\n c = new composedBackend.EmptyComposedBackendContext();\n }\n else {\n c = new backend.EmptyBackendContext();\n }\n defaultBackendContext = c;\n return c;\n};\n/**\n * The default options\n */\nexport var globalOptions = {\n defaultComponentSpace: null,\n externalComponent: false,\n templateEngine: new GlassEaselTemplateEngine(),\n styleScope: StyleScopeManager.globalScope(),\n extraStyleScope: null,\n multipleSlots: false,\n dynamicSlots: false,\n reflectToAttributes: false,\n writeFieldsToNode: true,\n writeIdToDOM: false,\n idPrefixGenerator: null,\n pureDataPattern: null,\n dataDeepCopy: DeepCopyKind.Simple,\n propertyPassingDeepCopy: DeepCopyKind.Simple,\n listenerChangeLifetimes: false,\n virtualHost: false,\n propertyEarlyInit: false,\n throwGlobalError: false,\n writeExtraInfoToAttr: false,\n backendContext: null,\n};\nexport var normalizeComponentOptions = function (componentOptions, baseComponentOptions) {\n var b = baseComponentOptions === undefined ? globalOptions : baseComponentOptions;\n if (componentOptions === undefined && b !== globalOptions) {\n return b;\n }\n var p = componentOptions !== null && componentOptions !== void 0 ? componentOptions : {};\n return {\n externalComponent: p.externalComponent !== undefined\n ? p.externalComponent\n : b.externalComponent,\n templateEngine: p.templateEngine !== undefined\n ? p.templateEngine\n : b.templateEngine,\n styleScope: p.styleScope !== undefined\n ? p.styleScope\n : b.styleScope,\n extraStyleScope: p.extraStyleScope !== undefined\n ? p.extraStyleScope\n : b.extraStyleScope,\n multipleSlots: p.multipleSlots !== undefined\n ? p.multipleSlots\n : b.multipleSlots,\n dynamicSlots: p.dynamicSlots !== undefined\n ? p.dynamicSlots\n : b.dynamicSlots,\n reflectToAttributes: p.reflectToAttributes !== undefined\n ? p.reflectToAttributes\n : b.reflectToAttributes,\n writeFieldsToNode: p.writeFieldsToNode !== undefined\n ? p.writeFieldsToNode\n : b.writeFieldsToNode,\n writeIdToDOM: p.writeIdToDOM !== undefined\n ? p.writeIdToDOM\n : b.writeIdToDOM,\n idPrefixGenerator: p.idPrefixGenerator !== undefined\n ? p.idPrefixGenerator\n : b.idPrefixGenerator,\n pureDataPattern: p.pureDataPattern !== undefined\n ? p.pureDataPattern\n : b.pureDataPattern,\n dataDeepCopy: p.dataDeepCopy !== undefined\n ? p.dataDeepCopy\n : b.dataDeepCopy,\n propertyPassingDeepCopy: p.propertyPassingDeepCopy !== undefined\n ? p.propertyPassingDeepCopy\n : b.propertyPassingDeepCopy,\n listenerChangeLifetimes: p.listenerChangeLifetimes !== undefined\n ? p.listenerChangeLifetimes\n : b.listenerChangeLifetimes,\n virtualHost: p.virtualHost !== undefined\n ? p.virtualHost\n : b.virtualHost,\n propertyEarlyInit: p.propertyEarlyInit !== undefined\n ? p.propertyEarlyInit\n : b.propertyEarlyInit,\n };\n};\n","import { Component, } from '.';\nimport { globalOptions, } from './global_options';\nfunction dispatchError(err, info, avoidErrorHandler) {\n if (!avoidErrorHandler && errorFuncArr.call(err, [err, info]) === false)\n return;\n if (globalOptions.throwGlobalError) {\n throw err;\n }\n else {\n // eslint-disable-next-line no-console\n console.error(err instanceof Error ? \"\".concat(err.message, \"\\n\").concat(err.stack || '') : String(err));\n }\n}\nvar FuncArr = /** @class */ (function () {\n function FuncArr() {\n this.empty = true;\n this._$type = '';\n this._$arr = null;\n this._$avoidErrorHandler = false;\n }\n FuncArr.prototype.add = function (func) {\n if (!this._$arr)\n this._$arr = [func];\n else\n this._$arr = this._$arr.concat(func);\n this.empty = false;\n };\n FuncArr.prototype.remove = function (func) {\n var ret = null;\n if (this._$arr) {\n var newArr = [];\n var oldArr = this._$arr;\n for (var i = 0; i < oldArr.length; i += 1) {\n if (oldArr[i] === func) {\n newArr.push.apply(newArr, oldArr.slice(i + 1));\n ret = func;\n break;\n }\n newArr.push(oldArr[i]);\n }\n this._$arr = newArr;\n this.empty = this._$arr.length === 0;\n }\n return ret;\n };\n FuncArr.prototype.call = function (caller, args, relatedComponent) {\n var arr = this._$arr;\n var ret = true;\n if (arr) {\n for (var i = 0; i < arr.length; i += 1) {\n var r = safeCallback(this._$type, arr[i], caller, args, relatedComponent, this._$avoidErrorHandler);\n if (r === false)\n ret = false;\n }\n }\n return ret;\n };\n FuncArr.safeCallback = function (type, method, caller, args, relatedComponent, avoidErrorHandler) {\n if (avoidErrorHandler === void 0) { avoidErrorHandler = false; }\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return method.apply(caller, args);\n }\n catch (e) {\n var msg = \"[Error] [Component] \".concat(type || 'Error Listener', \" Error @ \");\n if (caller instanceof Component)\n msg += caller.is;\n msg += \"#\".concat(method.name || '(anonymous)');\n if (relatedComponent) {\n relatedComponent.triggerLifetime('error', [e]);\n }\n dispatchError(e, {\n message: msg,\n type: type,\n element: caller,\n method: method,\n args: args,\n }, avoidErrorHandler);\n return undefined;\n }\n };\n FuncArr.addGlobalErrorListener = function (func) {\n errorFuncArr.add(func);\n };\n FuncArr.removeGlobalErrorListener = function (func) {\n errorFuncArr.remove(func);\n };\n FuncArr.addGlobalWarningListener = function (func) {\n warningFuncArr.add(func);\n };\n FuncArr.removeGlobalWarningListener = function (func) {\n warningFuncArr.remove(func);\n };\n return FuncArr;\n}());\nexport { FuncArr };\nexport function triggerWarning(msg) {\n var message = \"[Warning] [Component] \".concat(msg);\n if (warningFuncArr.call(message, [message])) {\n // eslint-disable-next-line no-console\n console.warn(message);\n }\n}\nvar errorFuncArr = new FuncArr();\nerrorFuncArr._$avoidErrorHandler = true;\nvar warningFuncArr = new FuncArr();\nvar FuncArrWithMeta = /** @class */ (function () {\n function FuncArrWithMeta() {\n this.empty = true;\n this._$type = '';\n this._$arr = null;\n }\n FuncArrWithMeta.prototype.add = function (func, data) {\n var item = { f: func, data: data };\n if (!this._$arr)\n this._$arr = [item];\n else\n this._$arr = this._$arr.concat(item);\n this.empty = false;\n };\n FuncArrWithMeta.prototype.remove = function (func) {\n var ret = null;\n if (this._$arr) {\n var newArr = [];\n var oldArr = this._$arr;\n for (var i = 0; i < oldArr.length; i += 1) {\n var v = oldArr[i];\n if (v.f === func) {\n newArr.push.apply(newArr, oldArr.slice(i + 1));\n ret = v.data;\n break;\n }\n newArr.push(v);\n }\n this._$arr = newArr;\n this.empty = this._$arr.length === 0;\n }\n return ret;\n };\n FuncArrWithMeta.prototype.call = function (caller, args, retainFn, relatedComponent) {\n var arr = this._$arr;\n var ret = true;\n if (arr) {\n for (var i = 0; i < arr.length; i += 1) {\n var _a = arr[i], f = _a.f, data = _a.data;\n if (!retainFn(data))\n continue;\n var r = FuncArr.safeCallback(this._$type, f, caller, args, relatedComponent);\n if (r === false)\n ret = false;\n }\n }\n return ret;\n };\n return FuncArrWithMeta;\n}());\nexport { FuncArrWithMeta };\nexport var safeCallback = FuncArr.safeCallback;\nexport var addGlobalErrorListener = FuncArr.addGlobalErrorListener;\nexport var removeGlobalErrorListener = FuncArr.removeGlobalErrorListener;\nexport var addGlobalWarningListener = FuncArr.addGlobalWarningListener;\nexport var removeGlobalWarningListener = FuncArr.removeGlobalWarningListener;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VirtualNode, } from './virtual_node';\nimport { Component, convertGenerics, resolvePlaceholder, } from './component';\nimport { TextNode, } from './text_node';\nimport { NativeNode, } from './native_node';\nimport { Element, } from './element';\nimport { BM, } from './backend/mode';\nimport { getDeepCopyStrategy, } from './data_proxy';\nimport { deepCopy, simpleDeepCopy, } from './data_utils';\nvar SlotMode;\n(function (SlotMode) {\n SlotMode[SlotMode[\"Single\"] = 0] = \"Single\";\n SlotMode[SlotMode[\"Multiple\"] = 1] = \"Multiple\";\n SlotMode[SlotMode[\"Dynamic\"] = 2] = \"Dynamic\";\n})(SlotMode || (SlotMode = {}));\nvar wrapPlaceholderCallback = function (f, cwp) {\n var waiting = cwp.waiting;\n if (waiting) {\n waiting.add(f);\n return function () {\n waiting.remove(f);\n };\n }\n return undefined;\n};\nvar ShadowRoot = /** @class */ (function (_super) {\n __extends(ShadowRoot, _super);\n function ShadowRoot() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n return _super.call(this) || this;\n }\n ShadowRoot.createShadowRoot = function (host) {\n var _a, _b;\n var node = Object.create(ShadowRoot.prototype);\n node._$initializeVirtual('shadow', null, host._$nodeTreeContext);\n node._$idMap = null;\n var slotMode = 0 /* SlotMode.Single */;\n if (host._$definition._$options.multipleSlots)\n slotMode = 1 /* SlotMode.Multiple */;\n else if (host._$definition._$options.dynamicSlots)\n slotMode = 2 /* SlotMode.Dynamic */;\n node._$slotCacheDirty = false;\n node._$appliedSlotCacheDirty = false;\n if (slotMode === 0 /* SlotMode.Single */) {\n node._$singleSlot = null;\n node._$appliedSingleSlot = null;\n }\n else if (slotMode === 1 /* SlotMode.Multiple */) {\n node._$slots = node._$appliedSlots = Object.create(null);\n }\n else if (slotMode === 2 /* SlotMode.Dynamic */) {\n node._$dynamicSlotSet = new Set();\n node._$appliedDynamicSlots = undefined;\n node._$requiredSlotValueNames = [];\n node._$propertyPassingDeepCopy = getDeepCopyStrategy(host.getComponentOptions().propertyPassingDeepCopy);\n node._$insertDynamicSlotHandler = undefined;\n node._$removeDynamicSlotHandler = undefined;\n node._$updateDynamicSlotHandler = undefined;\n }\n var sr = BM.SHADOW || (BM.DYNAMIC && host.getBackendMode() === 1 /* BackendMode.Shadow */)\n ? ((_a = host.getBackendElement()) === null || _a === void 0 ? void 0 : _a.getShadowRoot()) || null\n : null;\n node._$backendShadowRoot = sr;\n var backendElement = ((_b = node._$backendShadowRoot) === null || _b === void 0 ? void 0 : _b.getRootNode()) || null;\n node._$initialize(true, backendElement, node, host._$nodeTreeContext);\n node._$host = host;\n host.shadowRoot = node;\n return node;\n };\n ShadowRoot.prototype.getHostNode = function () {\n return this._$host;\n };\n ShadowRoot.prototype.createTextNode = function (text) {\n if (text === void 0) { text = ''; }\n return new TextNode(text, this);\n };\n ShadowRoot.prototype.createNativeNode = function (tagName) {\n return NativeNode.create(tagName, this);\n };\n ShadowRoot.prototype.createVirtualNode = function (virtualName) {\n if (virtualName === void 0) { virtualName = 'virtual'; }\n return VirtualNode.create(virtualName, this);\n };\n ShadowRoot.prototype.createComponent = function (tagName, usingKey, genericTargets, placeholderCallback, initPropValues) {\n var host = this._$host;\n var beh = host._$behavior;\n var hostGenericImpls = host._$genericImpls;\n var space = beh.ownerSpace;\n var compName = usingKey === undefined ? tagName : usingKey;\n // if the target is in using list, then use the one in using list\n var using = beh._$using[compName] || beh._$using[compName];\n if (using) {\n var usingTarget = using.final\n || (using.placeholder !== null\n && resolvePlaceholder(using.placeholder, space, beh, hostGenericImpls));\n var placeholderHandler = placeholderCallback\n ? wrapPlaceholderCallback(placeholderCallback, using)\n : undefined;\n if (usingTarget) {\n var comp_1 = Component._$advancedCreate(tagName, usingTarget, this, null, convertGenerics(usingTarget, space, host, genericTargets), placeholderHandler, initPropValues);\n return comp_1;\n }\n }\n // if the target is in generics list, then use the one\n var g = hostGenericImpls && hostGenericImpls[compName];\n if (g) {\n var genImpl = g.final\n || (g.placeholder !== null\n && resolvePlaceholder(g.placeholder, space, beh, hostGenericImpls));\n var placeholderHandler = placeholderCallback\n ? wrapPlaceholderCallback(placeholderCallback, g)\n : undefined;\n if (genImpl) {\n return Component._$advancedCreate(tagName, genImpl, this, null, convertGenerics(genImpl, space, host, genericTargets), placeholderHandler, initPropValues);\n }\n }\n // find in the space otherwise\n var comp = space.getComponentByUrl(compName, '');\n if (!comp) {\n throw new Error(\"Cannot find component \\\"\".concat(compName, \"\\\"\"));\n }\n return Component._$advancedCreate(tagName, comp, this, null, convertGenerics(comp, space, host, genericTargets), undefined, initPropValues);\n };\n /**\n * Create a component if the given tag name is a component in the space, or a native node if not\n *\n * The component `using` map is not used.\n * The tag name is not a relative path to the host component, but an absolute path.\n */\n ShadowRoot.prototype.createComponentOrNativeNode = function (tagName, genericTargets, initPropValues) {\n var host = this._$host;\n var beh = host._$behavior;\n var space = beh.ownerSpace;\n // find in the space otherwise\n var comp = space.getComponentByUrlWithoutDefault(tagName, '');\n if (comp) {\n return Component._$advancedCreate(tagName, comp, this, null, convertGenerics(comp, space, host, genericTargets), undefined, initPropValues);\n }\n // use native node otherwise\n var node = NativeNode.create(tagName, this);\n initPropValues === null || initPropValues === void 0 ? void 0 : initPropValues(node);\n return node;\n };\n /**\n * Find whether this component is placeholding or not\n *\n * This method will only find in the component `using` list and `generics` list.\n * If not found, returns `undefined` .\n * If the placeholder will be used, returns `true` ; `false` otherwise.\n */\n ShadowRoot.prototype.checkComponentPlaceholder = function (usingKey) {\n var _a;\n var beh = this._$host._$behavior;\n var compDef;\n var using = beh._$using[usingKey];\n if (using !== undefined) {\n compDef = using;\n }\n else {\n var g = (_a = this._$host._$genericImpls) === null || _a === void 0 ? void 0 : _a[usingKey];\n if (g)\n compDef = g;\n else\n return undefined;\n }\n if (compDef.final)\n return false;\n if (compDef.placeholder !== null)\n return true;\n return false;\n };\n ShadowRoot.prototype.getElementById = function (id) {\n return this._$getIdMap()[id];\n };\n /** @internal */\n ShadowRoot.prototype._$markIdCacheDirty = function () {\n this._$idMap = null;\n };\n /** @internal */\n ShadowRoot.prototype._$getIdMap = function () {\n if (this._$idMap)\n return this._$idMap;\n var idMap = Element._$generateIdMap(this);\n this._$idMap = idMap;\n return idMap;\n };\n /** Get the slot element if the component is in single-slot mode, or `undefined` if not */\n ShadowRoot.prototype.getSingleSlotElement = function () {\n return this._$singleSlot;\n };\n /** Get the slot element with the specified name */\n ShadowRoot.prototype.getSlotElementFromName = function (name) {\n if (this._$singleSlot !== undefined)\n return this._$singleSlot;\n if (this._$slots) {\n return this._$slots[name] || null;\n }\n if (this._$dynamicSlotSet) {\n var slots = [];\n var iterator = this._$dynamicSlotSet.values();\n for (var it_1 = iterator.next(); !it_1.done; it_1 = iterator.next()) {\n var slot = it_1.value;\n var slotName = slot._$slotName || '';\n if (slotName === name)\n slots.push(slot);\n }\n return slots;\n }\n return null;\n };\n /**\n * Get the slot element for the slot content\n *\n * The provided node must be a valid child node of the host of this shadow root.\n * Otherwise the behavior is undefined.\n */\n ShadowRoot.prototype.getContainingSlot = function (elem) {\n var _a;\n if (this._$singleSlot !== undefined)\n return this._$singleSlot;\n if (this._$dynamicSlotSet) {\n if (!elem)\n return null;\n var subTreeRoot = elem;\n while ((_a = subTreeRoot.parentNode) === null || _a === void 0 ? void 0 : _a._$inheritSlots) {\n subTreeRoot = subTreeRoot.parentNode;\n }\n var slotElement = subTreeRoot._$nodeSlotElement;\n if ((slotElement === null || slotElement === void 0 ? void 0 : slotElement.ownerShadowRoot) === this) {\n return slotElement;\n }\n }\n if (this._$slots) {\n var name_1;\n if (elem instanceof Element) {\n name_1 = elem._$nodeSlot;\n }\n else {\n name_1 = '';\n }\n return this._$slots[name_1] || null;\n }\n return null;\n };\n /**\n * Get the elements that should be composed in specified slot\n *\n * This method always returns a new array (or null if the specified slot is invalid).\n * It is convinient but less performant.\n * For better performance, consider using `forEachNodeInSpecifiedSlot` .\n */\n ShadowRoot.prototype.getSlotContentArray = function (slot) {\n if (slot._$slotName === null)\n return null;\n var ret = [];\n this.forEachNodeInSpecifiedSlot(slot, function (node) {\n ret.push(node);\n });\n return ret;\n };\n /**\n * Iterate slots\n */\n ShadowRoot.prototype.forEachSlot = function (f) {\n if (this._$singleSlot) {\n f(this._$singleSlot);\n }\n else if (this._$slots) {\n var slots = Object.values(this._$slots);\n for (var i = 0; i < slots.length; i += 1) {\n if (f(slots[i]) === false)\n break;\n }\n }\n else if (this._$dynamicSlotSet) {\n var iterator = this._$dynamicSlotSet.values();\n for (var next = iterator.next(); !next.done; next = iterator.next()) {\n if (f(next.value) === false)\n break;\n }\n }\n };\n /**\n * Iterate elements with their slots\n */\n ShadowRoot.prototype.forEachNodeInSlot = function (f) {\n var _this = this;\n if (this._$singleSlot) {\n var slot_1 = this._$singleSlot;\n var rec_1 = function (child) {\n if (f(child, slot_1) === false) {\n return false;\n }\n if (child instanceof Element) {\n if (child._$inheritSlots) {\n if (child.childNodes.every(rec_1) === false) {\n return false;\n }\n }\n }\n return true;\n };\n this._$host.childNodes.every(rec_1);\n }\n else if (this._$dynamicSlotSet) {\n var rec_2 = function (child) {\n if (f(child, _this.getContainingSlot(child) || undefined) === false) {\n return false;\n }\n if (child instanceof Element && child._$inheritSlots) {\n if (child.childNodes.every(function (child) { return rec_2(child); }) === false) {\n return false;\n }\n }\n return true;\n };\n this._$host.childNodes.every(rec_2);\n }\n else if (this._$slots) {\n var slots_1 = this._$slots;\n var rec_3 = function (child) {\n if (child instanceof Element) {\n if (f(child, slots_1[child._$nodeSlot]) === false) {\n return false;\n }\n if (child._$inheritSlots) {\n if (child.childNodes.every(rec_3) === false) {\n return false;\n }\n }\n }\n else {\n if (f(child, slots_1['']) === false) {\n return false;\n }\n }\n return true;\n };\n this._$host.childNodes.every(rec_3);\n }\n };\n /**\n * Iterate elements in specified slot\n */\n ShadowRoot.prototype.forEachNodeInSpecifiedSlot = function (slot, f) {\n var _this = this;\n if (this._$singleSlot) {\n if (slot !== '' && this._$singleSlot !== slot)\n return;\n var rec_4 = function (child, index) {\n f(child, index);\n if (child instanceof Element) {\n if (child._$inheritSlots) {\n child.childNodes.forEach(rec_4);\n }\n }\n };\n this._$host.childNodes.forEach(rec_4);\n }\n else if (this._$dynamicSlotSet) {\n if (typeof slot === 'string')\n return;\n var recInheritedSlot_1 = function (child, index) {\n f(child, index);\n if (child instanceof Element && child._$inheritSlots) {\n child.childNodes.forEach(recInheritedSlot_1);\n }\n };\n var rec = function (child, index) {\n if (_this.getContainingSlot(child) !== slot)\n return;\n f(child, index);\n if (child instanceof Element && child._$inheritSlots) {\n child.childNodes.forEach(recInheritedSlot_1);\n }\n };\n this._$host.childNodes.forEach(rec);\n }\n else if (this._$slots) {\n if (typeof slot !== 'string' && this._$slots[slot._$slotName] !== slot)\n return;\n var name_2 = typeof slot === 'string' ? slot : slot._$slotName;\n var rec_5 = function (child, index) {\n if (child instanceof Element) {\n if (child._$nodeSlot === name_2)\n f(child, index);\n if (child._$inheritSlots) {\n child.childNodes.forEach(rec_5);\n }\n }\n else if (name_2 === '') {\n f(child, index);\n }\n };\n this._$host.childNodes.forEach(rec_5);\n }\n };\n /** @internal */\n ShadowRoot.prototype._$markSlotCacheDirty = function () {\n this._$slotCacheDirty = true;\n this._$appliedSlotCacheDirty = true;\n };\n /** @internal */\n ShadowRoot.prototype._$checkSlotChanges = function () {\n if (!this._$appliedSlotCacheDirty)\n return;\n this._$appliedSlotCacheDirty = false;\n if (this._$slotCacheDirty)\n this._$updateSlotCache();\n if (BM.SHADOW || (BM.DYNAMIC && this.getBackendMode() === 1 /* BackendMode.Shadow */))\n return;\n // for dynamic slotting, invoke slot handlers\n if (this._$dynamicSlotSet) {\n var appliedDynamicSlots = this._$appliedDynamicSlots;\n if (!appliedDynamicSlots)\n return;\n var dynamicSlotSet = this._$dynamicSlotSet;\n var insertDynamicSlot = this._$insertDynamicSlotHandler;\n var removeDynamicSlot = this._$removeDynamicSlotHandler;\n var removeIter = appliedDynamicSlots.keys();\n for (var it_2 = removeIter.next(); !it_2.done; it_2 = removeIter.next()) {\n var slot = it_2.value;\n if (!dynamicSlotSet.has(slot)) {\n removeDynamicSlot === null || removeDynamicSlot === void 0 ? void 0 : removeDynamicSlot(slot);\n appliedDynamicSlots.delete(slot);\n }\n }\n var iter = dynamicSlotSet.values();\n for (var it_3 = iter.next(); !it_3.done; it_3 = iter.next()) {\n var slot = it_3.value;\n var slotName = slot._$slotName || '';\n var appliedSlot = appliedDynamicSlots.get(slot);\n if (appliedSlot !== undefined) {\n if (appliedSlot.slotName !== slotName) {\n removeDynamicSlot === null || removeDynamicSlot === void 0 ? void 0 : removeDynamicSlot(slot);\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot(slot, slotName, slot._$slotValues);\n appliedDynamicSlots.set(slot, { slotName: slotName, updatePathTree: undefined });\n }\n }\n else {\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot(slot, slotName, slot._$slotValues);\n appliedDynamicSlots.set(slot, { slotName: slotName, updatePathTree: undefined });\n }\n }\n return;\n }\n // in single slot mode, simply check changes\n if (this._$singleSlot !== undefined) {\n var oldSingleSlot = this._$appliedSingleSlot;\n if (oldSingleSlot !== this._$singleSlot) {\n this._$appliedSingleSlot = this._$singleSlot;\n Element._$insertChildReassignSlot(this, '', oldSingleSlot, this._$singleSlot);\n }\n return;\n }\n // for multiple slots, compare and find slot changes\n var oldSlots = this._$appliedSlots;\n var newSlots = this._$slots;\n this._$appliedSlots = newSlots;\n var oldKeys = Object.keys(oldSlots);\n for (var i = 0; i < oldKeys.length; i += 1) {\n var key = oldKeys[i];\n var oldSlot = oldSlots[key];\n var newSlot = newSlots[key];\n if (oldSlot !== newSlot) {\n Element._$insertChildReassignSlot(this, key, oldSlot, newSlot || null);\n }\n }\n var newKeys = Object.keys(newSlots);\n for (var i = 0; i < newKeys.length; i += 1) {\n var key = newKeys[i];\n var oldSlot = oldSlots[key];\n var newSlot = newSlots[key];\n if (oldSlot === undefined) {\n Element._$insertChildReassignSlot(this, key, null, newSlot || null);\n }\n }\n };\n ShadowRoot.prototype._$updateSlotCache = function () {\n this._$slotCacheDirty = false;\n // in single slot mode, find the slot\n if (this._$singleSlot !== undefined) {\n var slot_2;\n var rec_6 = function (child) {\n if (child instanceof Element) {\n if (child._$slotName !== null) {\n slot_2 = child;\n return false;\n }\n if (child.childNodes.every(rec_6) === false) {\n return false;\n }\n }\n return true;\n };\n this.childNodes.every(rec_6);\n this._$singleSlot = slot_2 || null;\n return;\n }\n // for dynamic slotting, collect the slots\n if (this._$dynamicSlotSet) {\n var dynamicSlotSet_1 = new Set();\n var rec_7 = function (child) {\n if (child instanceof Element) {\n if (child._$slotName !== null) {\n dynamicSlotSet_1.add(child);\n }\n child.childNodes.forEach(rec_7);\n }\n };\n this.childNodes.forEach(rec_7);\n this._$dynamicSlotSet = dynamicSlotSet_1;\n return;\n }\n // for multiple slots, collect the slots\n var slots = Object.create(null);\n var rec = function (child) {\n if (child instanceof Element) {\n if (child._$slotName !== null) {\n if (!slots[child._$slotName]) {\n slots[child._$slotName] = child;\n }\n }\n child.childNodes.forEach(rec);\n }\n };\n this.childNodes.forEach(rec);\n this._$slots = slots;\n };\n /**\n * Returns `true` if the component is in multiple-slot mode\n */\n ShadowRoot.prototype.isMultipleSlots = function () {\n return this._$slots !== undefined;\n };\n /**\n * Returns `true` if the component is in dynamic-slot mode\n */\n ShadowRoot.prototype.isDynamicSlots = function () {\n return this._$dynamicSlotSet !== undefined;\n };\n /**\n * Set the dynamic slot handlers\n *\n * The updated value should be applied with `applySlotUpdates` call.\n * If the handlers have not been set yet,\n * the `insertSlotHandler` will be called for each slot that has been added to the shadow tree.\n */\n ShadowRoot.prototype.setDynamicSlotHandler = function (requiredSlotValueNames, insertSlotHandler, removeSlotHandler, updateSlotHandler) {\n this._$requiredSlotValueNames = requiredSlotValueNames;\n this._$insertDynamicSlotHandler = insertSlotHandler;\n this._$removeDynamicSlotHandler = removeSlotHandler;\n this._$updateDynamicSlotHandler = updateSlotHandler;\n if (this._$appliedDynamicSlots) {\n var iter = this._$appliedDynamicSlots.values();\n for (var it_4 = iter.next(); !it_4.done; it_4 = iter.next()) {\n var slotMeta = it_4.value;\n if (!slotMeta.updatePathTree) {\n slotMeta.updatePathTree = Object.create(null);\n }\n }\n }\n };\n /**\n * Use the same dynamic slot handlers with the `source`\n */\n ShadowRoot.prototype.useDynamicSlotHandlerFrom = function (source) {\n if (source._$insertDynamicSlotHandler) {\n this.setDynamicSlotHandler(source._$requiredSlotValueNames.slice(), source._$insertDynamicSlotHandler, source._$removeDynamicSlotHandler, source._$updateDynamicSlotHandler);\n }\n };\n /**\n * Update a slot value\n *\n * The updated value should be applied with `applySlotValueUpdates` call.\n */\n ShadowRoot.prototype.replaceSlotValue = function (slot, name, value) {\n var _a;\n var slotValues = slot._$slotValues;\n if (slotValues) {\n var oldValue = slotValues[name];\n var newValue = value;\n if (this._$propertyPassingDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n if (this._$propertyPassingDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n newValue = deepCopy(value, true);\n }\n else {\n newValue = simpleDeepCopy(value);\n }\n }\n if (oldValue !== newValue) {\n slotValues[name] = newValue;\n if (this._$requiredSlotValueNames.indexOf(name) >= 0) {\n var slotMeta = (_a = this._$appliedDynamicSlots) === null || _a === void 0 ? void 0 : _a.get(slot);\n if (slotMeta) {\n if (!slotMeta.updatePathTree) {\n slotMeta.updatePathTree = Object.create(null);\n }\n slotMeta.updatePathTree[name] = true;\n }\n }\n }\n }\n };\n /**\n * Apply slot value updates\n */\n ShadowRoot.prototype.applySlotValueUpdates = function (slot) {\n var _a, _b;\n var slotMeta = (_a = this._$appliedDynamicSlots) === null || _a === void 0 ? void 0 : _a.get(slot);\n var slotValueUpdatePathTree = slotMeta === null || slotMeta === void 0 ? void 0 : slotMeta.updatePathTree;\n if (slotValueUpdatePathTree) {\n slotMeta.updatePathTree = undefined;\n (_b = this._$updateDynamicSlotHandler) === null || _b === void 0 ? void 0 : _b.call(this, slot, slot._$slotValues, slotValueUpdatePathTree);\n }\n };\n /**\n * Apply all pending slot updates\n */\n ShadowRoot.prototype.applySlotUpdates = function () {\n var _a;\n if (this._$appliedDynamicSlots) {\n // if slots has been initialized, mark all of them dirty\n var iter = this._$appliedDynamicSlots.entries();\n for (var it_5 = iter.next(); !it_5.done; it_5 = iter.next()) {\n var _b = it_5.value, slot = _b[0], slotMeta = _b[1];\n var slotValueUpdatePathTree = slotMeta === null || slotMeta === void 0 ? void 0 : slotMeta.updatePathTree;\n if (slotValueUpdatePathTree) {\n slotMeta.updatePathTree = undefined;\n (_a = this._$updateDynamicSlotHandler) === null || _a === void 0 ? void 0 : _a.call(this, slot, slot._$slotValues, slotValueUpdatePathTree);\n }\n }\n }\n else {\n // if slots is not initialized, try initialize them\n this._$appliedDynamicSlots = new Map();\n this._$appliedSlotCacheDirty = true;\n this._$checkSlotChanges();\n }\n };\n return ShadowRoot;\n}(VirtualNode));\nexport { ShadowRoot };\n","import { Element, } from '.';\nimport { FuncArr, } from './func_arr';\nvar MutationObserverTarget = /** @class */ (function () {\n function MutationObserverTarget(bindedElement) {\n this._$subtreeObserversCount = 0;\n this.attrObservers = null;\n this.textObservers = null;\n this.childObservers = null;\n this.attachObservers = null;\n this._$bindedElement = bindedElement;\n }\n MutationObserverTarget.prototype.attachChild = function (child) {\n if (!child._$mutationObserverTarget) {\n child._$mutationObserverTarget = new MutationObserverTarget(child);\n }\n if (this._$subtreeObserversCount > 0) {\n child._$mutationObserverTarget.updateSubtreeCount(this._$subtreeObserversCount);\n }\n };\n MutationObserverTarget.prototype.detachChild = function (child) {\n if (child._$mutationObserverTarget) {\n child._$mutationObserverTarget.updateSubtreeCount(-this._$subtreeObserversCount);\n }\n };\n MutationObserverTarget.prototype.updateSubtreeCount = function (diff) {\n this._$subtreeObserversCount += diff;\n var children = this._$bindedElement.childNodes;\n children.forEach(function (child) {\n if (child instanceof Element) {\n if (!child._$mutationObserverTarget) {\n child._$mutationObserverTarget = new MutationObserverTarget(child);\n }\n child._$mutationObserverTarget.updateSubtreeCount(diff);\n }\n });\n };\n MutationObserverTarget.prototype.hasSubtreeListeners = function () {\n return this._$subtreeObserversCount > 0;\n };\n MutationObserverTarget.callAttrObservers = function (node, eventObj) {\n var _a;\n var cur = node;\n do {\n var target = cur._$mutationObserverTarget;\n (_a = target === null || target === void 0 ? void 0 : target.attrObservers) === null || _a === void 0 ? void 0 : _a.call(cur, [eventObj]);\n var next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (!cur._$mutationObserverTarget)\n break;\n } while (cur._$mutationObserverTarget._$subtreeObserversCount > 0);\n };\n MutationObserverTarget.callTextObservers = function (textNode, eventObj) {\n var _a;\n var cur = textNode.parentNode;\n while (cur) {\n var target = cur._$mutationObserverTarget;\n if (!target || target._$subtreeObserversCount === 0)\n break;\n (_a = target.textObservers) === null || _a === void 0 ? void 0 : _a.call(cur, [eventObj]);\n cur = cur.parentNode;\n }\n };\n MutationObserverTarget.callChildObservers = function (node, eventObj) {\n var _a;\n var cur = node;\n do {\n var target = cur._$mutationObserverTarget;\n (_a = target === null || target === void 0 ? void 0 : target.childObservers) === null || _a === void 0 ? void 0 : _a.call(cur, [eventObj]);\n var next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (!cur._$mutationObserverTarget)\n break;\n } while (cur._$mutationObserverTarget._$subtreeObserversCount > 0);\n };\n MutationObserverTarget.callAttachObservers = function (node, eventObj) {\n var _a;\n var target = node._$mutationObserverTarget;\n (_a = target === null || target === void 0 ? void 0 : target.attachObservers) === null || _a === void 0 ? void 0 : _a.call(node, [eventObj]);\n };\n return MutationObserverTarget;\n}());\nexport { MutationObserverTarget };\n/**\n * An observer that can observe shadow tree changes\n *\n * Like DOM MutationObserver,\n * this observer can observe attributes, text content, and child nodes changes.\n * It can optionally observe changes in a subtree.\n * Further more, it can listen attached/detached events on an element.\n */\nvar MutationObserver = /** @class */ (function () {\n function MutationObserver(listener) {\n this._$subtreeListenersCount = 0;\n this._$bindedFuncArrs = [];\n this._$bindedTarget = null;\n this._$listener = listener;\n this._$normalizedListener = null;\n }\n MutationObserver.create = function (listener) {\n return new MutationObserver(listener);\n };\n /** Start observation */\n MutationObserver.prototype.observe = function (targetElement, options) {\n if (options === void 0) { options = {\n properties: false,\n childList: false,\n characterData: false,\n subtree: false,\n attachStatus: false,\n }; }\n var listener = this._$listener;\n if (!listener) {\n throw new Error('A MutationObserver can only observe once');\n }\n var target;\n if (targetElement._$mutationObserverTarget) {\n target = targetElement._$mutationObserverTarget;\n }\n else {\n target = new MutationObserverTarget(targetElement);\n targetElement._$mutationObserverTarget = target;\n }\n this._$listener = null;\n var cb = (options.subtree\n ? listener\n : function noSubtreeListener(ev) {\n // this might be TextNode, but do the same as Element\n if (ev.target === this)\n listener.call(this, ev);\n });\n this._$normalizedListener = cb;\n this._$bindedTarget = target;\n if (options.properties) {\n if (!target.attrObservers)\n target.attrObservers = new FuncArr();\n target.attrObservers.add(cb);\n this._$bindedFuncArrs.push(target.attrObservers);\n this._$subtreeListenersCount += 1;\n }\n if (options.childList) {\n if (!target.childObservers)\n target.childObservers = new FuncArr();\n target.childObservers.add(cb);\n this._$bindedFuncArrs.push(target.childObservers);\n this._$subtreeListenersCount += 1;\n }\n if (options.characterData) {\n if (!target.textObservers)\n target.textObservers = new FuncArr();\n target.textObservers.add(cb);\n this._$bindedFuncArrs.push(target.textObservers);\n this._$subtreeListenersCount += 1;\n }\n if (options.subtree) {\n target.updateSubtreeCount(this._$subtreeListenersCount);\n }\n if (options.attachStatus) {\n if (!target.attachObservers)\n target.attachObservers = new FuncArr();\n target.attachObservers.add(cb);\n this._$bindedFuncArrs.push(target.attachObservers);\n }\n };\n /** End observation */\n MutationObserver.prototype.disconnect = function () {\n var _a;\n (_a = this._$bindedTarget) === null || _a === void 0 ? void 0 : _a.updateSubtreeCount(-this._$subtreeListenersCount);\n var arr = this._$bindedFuncArrs;\n this._$bindedFuncArrs = [];\n var nl = this._$normalizedListener;\n if (nl) {\n arr.forEach(function (funcArr) {\n funcArr.remove(nl);\n });\n }\n };\n return MutationObserver;\n}());\nexport { MutationObserver };\n","import { MutationObserverTarget, } from './mutation_observer';\nimport { BM, } from './backend/mode';\nimport { Component, } from './component';\nvar TextNode = /** @class */ (function () {\n function TextNode(text, owner) {\n /** @internal */\n this._$destroyOnDetach = false;\n this._$text = String(text);\n var backendElement;\n if (BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n backendElement = owner._$nodeTreeContext\n .document.createTextNode(text);\n }\n else if (BM.SHADOW || (BM.DYNAMIC && owner.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n var backend_1 = owner._$backendShadowRoot;\n backendElement = (backend_1 === null || backend_1 === void 0 ? void 0 : backend_1.createTextNode(text)) || null;\n }\n else {\n var backend_2 = owner._$nodeTreeContext;\n backendElement = backend_2.createTextNode(text);\n }\n this._$backendElement = backendElement;\n if (backendElement) {\n backendElement.__wxElement = this;\n }\n this.ownerShadowRoot = owner;\n this.parentNode = null;\n this._$nodeSlotElement = null;\n }\n TextNode.create = function (text, ownerShadowRoot) {\n return new TextNode(text, ownerShadowRoot);\n };\n TextNode.prototype.asTextNode = function () {\n return this;\n };\n // eslint-disable-next-line class-methods-use-this\n TextNode.prototype.asElement = function () {\n return null;\n };\n // eslint-disable-next-line class-methods-use-this\n TextNode.prototype.asNativeNode = function () {\n return null;\n };\n // eslint-disable-next-line class-methods-use-this\n TextNode.prototype.asVirtualNode = function () {\n return null;\n };\n // eslint-disable-next-line class-methods-use-this\n TextNode.prototype.asInstanceOf = function () {\n return null;\n };\n /** Destroy the backend element */\n TextNode.prototype.destroyBackendElement = function () {\n if (this._$backendElement) {\n if (!(BM.DOMLIKE || (BM.DYNAMIC && this.ownerShadowRoot.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n this._$backendElement.release();\n }\n this._$backendElement = null;\n }\n };\n /** Destroy the backend element on next detach */\n TextNode.prototype.destroyBackendElementOnDetach = function () {\n this._$destroyOnDetach = true;\n };\n /** Get the backend element */\n TextNode.prototype.getBackendElement = function () {\n return this._$backendElement;\n };\n /** Get composed parent (including virtual nodes) */\n TextNode.prototype.getComposedParent = function () {\n var parent = this.parentNode;\n while (parent === null || parent === void 0 ? void 0 : parent._$inheritSlots) {\n parent = parent.parentNode;\n }\n if (parent instanceof Component && !parent._$external) {\n var slot = parent.shadowRoot.getContainingSlot(this);\n return slot;\n }\n return parent;\n };\n Object.defineProperty(TextNode.prototype, \"$$\", {\n get: function () {\n return this._$backendElement;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextNode.prototype, \"textContent\", {\n get: function () {\n return this._$text;\n },\n set: function (text) {\n this._$text = String(text);\n if (this._$backendElement) {\n if (BM.DOMLIKE || (BM.DYNAMIC && this.ownerShadowRoot.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n this._$backendElement.textContent = this._$text;\n }\n else {\n this._$backendElement.setText(this._$text);\n }\n }\n MutationObserverTarget.callTextObservers(this, {\n type: 'characterData',\n target: this,\n });\n },\n enumerable: false,\n configurable: true\n });\n return TextNode;\n}());\nexport { TextNode };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { globalOptions, } from './global_options';\nimport { ClassList, } from './class_list';\nimport { Element, } from './element';\nimport { BM, } from './backend/mode';\nvar NativeNode = /** @class */ (function (_super) {\n __extends(NativeNode, _super);\n function NativeNode() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n return _super.call(this) || this;\n }\n NativeNode.create = function (tagName, owner) {\n var _a;\n var node = Object.create(NativeNode.prototype);\n node.is = tagName;\n var backendElement;\n if (BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n backendElement = owner._$nodeTreeContext\n .document.createElement(tagName);\n }\n else if (BM.SHADOW || (BM.DYNAMIC && owner.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n var backend_1 = owner._$backendShadowRoot;\n backendElement = (backend_1 === null || backend_1 === void 0 ? void 0 : backend_1.createElement(tagName)) || null;\n }\n else {\n var backend_2 = owner._$nodeTreeContext;\n backendElement = backend_2.createElement(tagName);\n }\n node._$initialize(false, backendElement, owner);\n node.classList = new ClassList(node, null);\n if (owner && backendElement) {\n var styleScope = owner.getHostNode()._$definition._$options.styleScope;\n if (styleScope) {\n if (!(BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n backendElement.setStyleScope(styleScope);\n }\n }\n if (globalOptions.writeExtraInfoToAttr) {\n var prefix = (_a = owner.getHostNode()\n ._$behavior.ownerSpace) === null || _a === void 0 ? void 0 : _a.styleScopeManager.queryName(styleScope);\n if (prefix) {\n backendElement.setAttribute('exparser:info-class-prefix', \"\".concat(prefix, \"--\"));\n }\n }\n }\n if (!(BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n if (backendElement) {\n backendElement.associateValue(node);\n }\n }\n return node;\n };\n return NativeNode;\n}(Element));\nexport { NativeNode };\n","import { Element, } from './element';\nimport { TextNode, } from './text_node';\nimport { Component, } from './component';\n/** The iterator direction and order */\nexport var ElementIteratorType;\n(function (ElementIteratorType) {\n /** Iterate all ancestors in shadow tree */\n ElementIteratorType[\"ShadowAncestors\"] = \"shadow-ancestors\";\n /** Iterate all ancestors in composed tree */\n ElementIteratorType[\"ComposedAncestors\"] = \"composed-ancestors\";\n /** Iterate all descendants in shadow tree, returning parents before their children */\n ElementIteratorType[\"ShadowDescendantsRootFirst\"] = \"shadow-descendants-root-first\";\n /** Iterate all descendants in shadow tree, returning parents after their children */\n ElementIteratorType[\"ShadowDescendantsRootLast\"] = \"shadow-descendants-root-last\";\n /** Iterate all descendants in composed tree, returning parents before their children */\n ElementIteratorType[\"ComposedDescendantsRootFirst\"] = \"composed-descendants-root-first\";\n /** Iterate all descendants in composed tree, returning parents after their children */\n ElementIteratorType[\"ComposedDescendantsRootLast\"] = \"composed-descendants-root-last\";\n})(ElementIteratorType || (ElementIteratorType = {}));\n/**\n * An iterator for node tree traversal\n *\n * This iterator is convinient but seems a little slower.\n */\nvar ElementIterator = /** @class */ (function () {\n /**\n * Create an iterator with type specified\n *\n * The `nodeTypeLimit` is used to limit which kind of nodes will be returned.\n * It limits the returned result by an `instanceof` call.\n * The default value is `Element` ,\n * which means only elements will be returned (text nodes will not).\n * Consider specifying `Node` if text nodes need to be returned as well as elements.\n * Specify `Component` will only return components.\n */\n function ElementIterator(node, type, nodeTypeLimit) {\n if (nodeTypeLimit === void 0) { nodeTypeLimit = Element; }\n if (!(node instanceof Element) && !(node instanceof TextNode)) {\n throw new Error('Element iterators can only be used in elements or text nodes');\n }\n this._$node = node;\n this._$nodeTypeLimit = nodeTypeLimit || Element;\n if (type === \"shadow-ancestors\" /* ElementIteratorType.ShadowAncestors */\n || type === \"shadow-descendants-root-first\" /* ElementIteratorType.ShadowDescendantsRootFirst */\n || type === \"shadow-descendants-root-last\" /* ElementIteratorType.ShadowDescendantsRootLast */) {\n this._$composed = false;\n }\n else if (type === \"composed-ancestors\" /* ElementIteratorType.ComposedAncestors */\n || type === \"composed-descendants-root-first\" /* ElementIteratorType.ComposedDescendantsRootFirst */\n || type === \"composed-descendants-root-last\" /* ElementIteratorType.ComposedDescendantsRootLast */) {\n this._$composed = true;\n }\n else {\n throw new Error(\"Unrecognized iterator type \\\"\".concat(String(type), \"\\\"\"));\n }\n if (type === \"shadow-ancestors\" /* ElementIteratorType.ShadowAncestors */\n || type === \"composed-ancestors\" /* ElementIteratorType.ComposedAncestors */) {\n this._$isAncestor = true;\n }\n else {\n this._$isAncestor = false;\n }\n if (type === \"shadow-descendants-root-first\" /* ElementIteratorType.ShadowDescendantsRootFirst */\n || type === \"composed-descendants-root-first\" /* ElementIteratorType.ComposedDescendantsRootFirst */) {\n this._$rootFirst = true;\n }\n else {\n this._$rootFirst = false;\n }\n }\n /** Same as constructor (for backward compatibility) */\n ElementIterator.create = function (node, type, nodeTypeLimit) {\n return new ElementIterator(node, type, nodeTypeLimit);\n };\n ElementIterator.prototype.forEach = function (f) {\n var nodeTypeLimit = this._$nodeTypeLimit;\n var composed = this._$composed;\n if (this._$isAncestor) {\n var rec_1 = function (node) {\n var prev = null;\n var cur = node;\n for (;;) {\n if (composed && prev) {\n if (cur instanceof Component && !cur._$external) {\n var slot = cur.getShadowRoot().getContainingSlot(prev);\n if (slot) {\n if (rec_1(slot) === false)\n break;\n }\n else {\n return false;\n }\n }\n }\n if (cur instanceof nodeTypeLimit) {\n if (f(cur) === false)\n return false;\n }\n if (!cur.parentNode)\n break;\n prev = cur;\n cur = cur.parentNode;\n }\n return true;\n };\n rec_1(this._$node);\n }\n else {\n var rootFirst_1 = this._$rootFirst;\n var rec_2 = function (node) {\n if (rootFirst_1) {\n if (node instanceof nodeTypeLimit) {\n if (f(node) === false)\n return false;\n }\n }\n if (node instanceof Element) {\n var interrupted_1 = false;\n var childFn = function (child) {\n if (rec_2(child) === false) {\n interrupted_1 = true;\n return false;\n }\n return true;\n };\n if (composed) {\n node.forEachComposedChild(childFn);\n }\n else {\n node.childNodes.forEach(childFn);\n }\n if (interrupted_1)\n return false;\n }\n if (!rootFirst_1) {\n if (node instanceof nodeTypeLimit) {\n if (f(node) === false)\n return false;\n }\n }\n return true;\n };\n rec_2(this._$node);\n }\n };\n return ElementIterator;\n}());\nexport { ElementIterator };\n","import { TextNode, } from './text_node';\nimport { Element, } from './element';\nimport { VirtualNode, } from './virtual_node';\nimport { Component, } from './component';\nimport { NativeNode, } from './native_node';\nvar dumpAttributesToString = function (elem) {\n var ret = '';\n if (elem instanceof Element) {\n if (elem._$slotName !== null)\n ret += \" (slot) name=\\\"\".concat(elem._$slotName, \"\\\"\");\n if (elem.id)\n ret += \" id=\\\"\".concat(elem.id, \"\\\"\");\n if (elem.slot)\n ret += \" slot=\\\"\".concat(elem.slot, \"\\\"\");\n var nodeClass = elem.class;\n if (nodeClass)\n ret += \" class=\\\"\".concat(nodeClass, \"\\\"\");\n var style = elem.style;\n if (style)\n ret += \" style=\\\"\".concat(elem.style, \"\\\"\");\n }\n if (elem instanceof VirtualNode) {\n // empty\n }\n else if (elem instanceof Component) {\n Component.listProperties(elem).forEach(function (propName) {\n ret += \" \".concat(propName, \"=\\\"\").concat(String(elem.data[propName]), \"\\\"\");\n });\n }\n else {\n elem.attributes.forEach(function (attr) {\n ret += \" \".concat(attr.name, \"=\\\"\").concat(String(attr.value), \"\\\"\");\n });\n }\n return ret;\n};\nexport var dumpSingleElementToString = function (elem) {\n if (elem instanceof Element) {\n var tagName = void 0;\n if (elem instanceof VirtualNode) {\n tagName = \"(virtual):\".concat(elem.is);\n }\n else if (elem instanceof Component) {\n tagName = \"\".concat(elem.tagName, \":\").concat(elem.is);\n }\n else if (elem instanceof NativeNode) {\n tagName = elem.is;\n }\n else {\n tagName = '(unknown)';\n }\n return \"<\".concat(tagName).concat(dumpAttributesToString(elem), \">\");\n }\n if (elem instanceof TextNode) {\n return elem.textContent.trim();\n }\n if (elem === null) {\n return '<(null)>';\n }\n if (elem === undefined) {\n return '<(undefined)>';\n }\n return '<(unknown)>';\n};\nexport var dumpElementToString = function (elem, composed, tabDepth) {\n if (tabDepth === void 0) { tabDepth = 0; }\n var linePrefix = '';\n for (var i = tabDepth; i; i -= 1) {\n linePrefix += ' ';\n }\n var ret = linePrefix + dumpSingleElementToString(elem);\n var isExternal = false;\n if (elem instanceof Element) {\n if (elem instanceof Component) {\n isExternal = elem.getComponentOptions().externalComponent;\n }\n if (composed) {\n if (isExternal) {\n ret += \"\\n\".concat(linePrefix, \" <(external)>\");\n elem.childNodes.forEach(function (node) {\n ret += \"\\n\".concat(dumpElementToString(node, composed, tabDepth + 2));\n });\n }\n else {\n elem.forEachComposedChild(function (node) {\n ret += \"\\n\".concat(dumpElementToString(node, composed, tabDepth + 1));\n });\n }\n }\n else {\n elem.childNodes.forEach(function (node) {\n ret += \"\\n\".concat(dumpElementToString(node, composed, tabDepth + 1));\n });\n }\n }\n return ret;\n};\nexport var dumpElement = function (elem, composed) {\n // eslint-disable-next-line no-console\n console.log(dumpElementToString(elem, composed));\n};\n","import { safeCallback, } from './func_arr';\nvar triggerRenderOnContext = function (context, cb) {\n context.render(function () {\n if (typeof cb === 'function') {\n safeCallback('render', cb, context, [null]);\n }\n });\n};\nexport var triggerRender = function (element, callback) {\n var context = element.getBackendContext();\n triggerRenderOnContext(context, callback || null);\n};\n","/* eslint-disable import/first */\n/* eslint-disable arrow-body-style */\nexport { TextNode, } from './text_node';\nexport { NativeNode, } from './native_node';\nexport { ShadowRoot, } from './shadow_root';\nexport { VirtualNode, } from './virtual_node';\nexport { globalOptions, DeepCopyKind, getDefaultComponentSpace, } from './global_options';\nexport { Element, StyleSegmentIndex, } from './element';\nimport * as dataUtils_1 from './data_utils';\nexport { dataUtils_1 as dataUtils };\nimport * as dataPath_1 from './data_path';\nexport { dataPath_1 as dataPath };\nexport { DataGroup, } from './data_proxy';\nexport { Event, EventBubbleStatus, } from './event';\nimport * as typeUtils_1 from './component_params';\nexport { typeUtils_1 as typeUtils };\nexport { Behavior, BehaviorBuilder, } from './behavior';\nexport { Component, ComponentDefinition, } from './component';\nexport { MutationObserver as Observer, MutationObserver, } from './mutation_observer';\nimport * as mutationObserver_1 from './mutation_observer';\nexport { mutationObserver_1 as mutationObserver };\nexport { dumpElement, dumpElementToString, dumpSingleElementToString, } from './node';\nexport { ElementIterator, ElementIteratorType, } from './element_iterator';\nexport { FuncArr, safeCallback, addGlobalErrorListener, removeGlobalErrorListener, addGlobalWarningListener, removeGlobalWarningListener, } from './func_arr';\nexport { ParsedSelector, } from './selector';\nexport { StyleScopeManager, ClassList, } from './class_list';\nexport { RelationType, } from './relation';\nexport { TraitBehavior, } from './trait_behaviors';\nexport { triggerRender, } from './render';\nexport { ComponentSpace, } from './component_space';\nimport * as template_1 from './tmpl';\nexport { template_1 as template };\nimport * as backend_1 from './backend/backend_protocol';\nexport { backend_1 as backend };\nimport * as composedBackend_1 from './backend/composed_backend_protocol';\nexport { composedBackend_1 as composedBackend };\nimport * as domlikeBackend_1 from './backend/domlike_backend_protocol';\nexport { domlikeBackend_1 as domlikeBackend };\nexport { BackendMode, } from './backend/mode';\nimport * as templateEngine_1 from './template_engine';\nexport { templateEngine_1 as templateEngine };\nimport * as glassEaselTemplate_1 from './tmpl';\nexport { glassEaselTemplate_1 as glassEaselTemplate };\nimport { Component, } from './component';\nimport { Event, } from './event';\nimport { getDefaultComponentSpace, } from './global_options';\nexport var registerBehavior = function (def) {\n return getDefaultComponentSpace().defineBehavior(def);\n};\nexport var registerElement = function (def) {\n return getDefaultComponentSpace().defineComponent(def);\n};\nexport function createElement(tagName, compDef) {\n return Component.create(tagName, compDef || null);\n}\nexport var triggerEvent = Event.triggerEvent;\nexport var triggerExternalEvent = Event.triggerExternalEvent;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","EmptyBackendElementType","BackendMode","EmptyBackendContext","this","mode","_$styleSheetIdInc","_$renderCallbacks","_$rootNode","EmptyBackendElement","destroy","getWindowWidth","getWindowHeight","getDevicePixelRatio","getTheme","registerStyleSheetContent","_path","_content","appendStyleSheetPath","_styleScope","id","disableStyleSheet","_index","render","cb","_this","push","callbacks_1","setTimeout","forEach","safeCallback","getRootNode","createFragment","onEvent","_listener","type","__wxElement","undefined","_$shadowRoot","EmptyBackendShadowRootContext","release","associateValue","_v","getShadowRoot","appendChild","_child","removeChild","insertBefore","_before","replaceChild","_oldChild","spliceBefore","_deleteCount","_list","spliceAppend","spliceRemove","setId","_id","setSlotName","_name","setSlot","_$inheritSlots","setInheritSlots","setStyleScope","setStyle","_styleText","addClass","_elementClass","removeClass","clearClasses","setAttribute","_value","removeAttribute","setText","getBoundingClientRect","left","top","width","height","getScrollOffset","scrollLeft","scrollTop","scrollWidth","scrollHeight","setEventDefaultPrevented","_type","_enabled","createElement","_tagName","createTextNode","createComponent","_isVirtual","createVirtualNode","EmptyComposedBackendContext","EmptyComposedBackendElement","DELEGATE_EVENTS","CurrentWindowBackendContext","document","_$styleSheets","_$styleSheetRegistry","create","_$delegatedEventListeners","_$elementEventListeners","WeakMap","_$triggedEvents","WeakSet","documentElement","clientWidth","clientHeight","window","devicePixelRatio","path","content","String","styleScope","styleText","Error","concat","s","innerText","head","length","index","ss","requestAnimationFrame","body","listener","_$eventListener","_$initEvent","_$getEventDetail","ev","detail","e","getPrototypeOf","Event","keys","i","_$trigger","bubbles","composed","target","originalEvent","preventDefault","possibleTaps","disableMouseEvents","handleTapStart","_ev","t","identifier","x","clientX","y","clientY","handleTapMove","u","Math","abs","handleTapEnd","handleTapCancel","addEventListener","changedTouches","capture","listeners","touchstart","touchmove","touchend","mousedown","mousemove","mouseup","setElementEventDefaultPrevented","element","includes","has","set","add","DeepCopyStrategy","CLASS_NAME_REG_EXP","StyleScopeManager","_$names","globalScope","register","name","ret","queryName","ClassList","elem","externalNameAlias","_a","_b","_$aliasDirty","_$rawNames","_$hasResolvedNames","_$elem","ownerComp","ownerShadowRoot","getHostNode","compOptions","getComponentOptions","_$owner","classList","_$defaultScope","_$extraScope","extraStyleScope","_$alias","resolved_1","k","_$resolvedAlias","getBackendMode","_$prefixManager","getRootBehavior","ownerSpace","styleScopeManager","_$resolvePrefixes","resolvedAlias","targets","scopeId","className","slice","n","owner","_$updateResolvedAliases","slices","resolved","changed","prevResolved","a","b","_$hasAlias","_$setAlias","match","_$spreadAliasUpdate","callClassListUpdate_1","alias","changed_1","comp_1","_$external","shadowRoot","_$updateResolvedNames","childNodes","child","Element","comp","backendElement","getBackendElement","_$addClassToBackend","_$classListAdd","scope","prefix","val","_$classListRemove","remove","_$removeClassFromBackend","toggle","force","backendElement_1","indexOf","splice","_$mutationObserverTarget","MutationObserverTarget","callAttrObservers","attributeName","contains","rn","setClassNames","names","getClassNames","join","skipWhiteSpace","state","str","cur","next","parseInteger","parseInt","parseFieldName","test","parseFieldNameWithSpecialChars","next2","parsePath","seg","seg_1","parseSinglePath","parsePathWithSpecialChars","err","triggerWarning","message","parseMultiPaths","Array","isArray","map","parseState","parseCommaSepPaths","deepCopyWithRecursion","src","visited","v","dest_1","dest","description","simpleDeepCopy","dest_2","deepCopy","withRecursion","__spreadArray","to","from","pack","arguments","ar","l","EventBubbleStatus","DataGroupObserverTree","propFields","observerTree","sub","observers","cloneSub","addObserver","func","dataPath","f","singlePath","wildcard","j","pathSlice","callObserver","data","args","getMethodCaller","dfsMarkTriggerBitOnPath","node","observerStatus","markTriggerBitOnPath","root","found","arr","i_1","triggerAndCleanTriggerBit","getDeepCopyStrategy","level","DeepCopyKind","Simple","SimpleWithRecursion","DataGroup","associatedComponent","pureDataPattern","dataDeepCopy","propertyPassingDeepCopy","reflectToAttributes","_$modelBindingListener","_$pendingChanges","_$doingUpdates","_$comp","_$pureDataPattern","_$dataDeepCopy","_$propertyPassingDeepCopy","_$reflectToAttributes","_$propFields","_$observerTree","_$observers","_$observerStatus","innerData","_$generateInnerData","setUpdateListener","updateListener","_$updateListener","replaceWholeData","replaceDataOnPath","newData","spliceArrayDataOnPath","del","inserts","replaceProperty","propName","setChanges","changes","getChanges","setModelBindingListener","applyDataUpdates","skipModelListener","_c","combinedChanges","propChanges","isChainedUpdates","combined","count","change","spliceIndex","spliceDel","isSplice","excluded","oldData","normalizedSpliceIndex","filteredData","c","apply","convertValueToType","innerNewData","be","attrValue","reflectIdPrefix","idPrefix","_$idPrefix","attrName","replace","toLowerCase","JSON","stringify","oldValue","newValue","curData","curSlice","i_2","nextSlice","Number","isFinite","i_3","changesCount","_d","observer","propertyName","MutLevel","FinalChanged","relativeTimeStamp","Date","now","prevTimeStamp","SegmentRelation","EventTarget","captureListeners","addListener","options","efa","initialized","mutLevel","final","mutated","useCapture","mutCount","finalCount","funcArr","FuncArrWithMeta","removeListener","ts","getCurrentTimeStamp","timeStamp","_$capturePhase","capturePhase","_$eventBubblingControl","stopped","noDefault","_$originalEvent","_$dispatched","extraFields","assign","getEventBubbleStatus","wrapShadowedEvent","targetCaller","mark","currentTargetCaller","currentTarget","getOriginalEvent","defaultPrevented","stopPropagation","propagationStopped","markMutated","mutatedMarked","dispatch","externalTarget","evName","crossShadow","inExternalOnly","eventBubblingControl","callEventFuncArr","isCapture","eventTarget","_$eventTarget","skipMut","isComp","Component","curCaller","mulLevel","forEachBubblePath","recShadow","collectMarks","ShadowRoot","parentNode","slot","getContainingSlot","bubblingPath_1","handleEvent","atTarget_1","sr","dispatchEvent","event","dispatchExternalEvent","component","triggerEvent","triggerExternalEvent","StyleSegmentIndex","getOwnerSpace","ParsedSelector","unions","union","split","segments","parsedSegs","relation","parsedSeg","_$parseSegment","matches","exec","classes","shift","isEmpty","_$testSelectorSegment","offset","segment","nextNode","nextRelation","VirtualNode","testSelector","query","findOne","rec","r_1","children","r_2","r","extendStatics","RelationType","_$initialize","virtual","nodeTreeContext","_$backendElement","_$destroyOnDetach","_$nodeTreeContext","_$nodeId","_$nodeAttributes","_$nodeSlot","_$slotName","_$slotValues","_$nodeSlotElement","_$subtreeSlotCount","_$placeholderHandler","_$virtual","dataset","_$marks","_$attached","_$styleSegments","configurable","newId","host","_$markIdCacheDirty","writeIdToDOM","globalOptions","writeExtraInfoToAttr","newSlot","oldSlot","parent_1","slotParent","slotParentShadowRoot","isDynamicSlots","oldSlotElement","getSlotElementFromName","newSlotElement","insertChildReassignComposed","entries","classNames","setNodeStyle","asTextNode","asElement","asNativeNode","NativeNode","asVirtualNode","asInstanceOf","componentDefinition","getBackendContext","destroyBackendElement","destroyBackendElementOnDetach","isVirtual","styleSegment","style","checkAndCallAttached","callFunc","_$lifetimeFuncs","attached","_$relation","triggerLinkEvent","callAttachObservers","status","checkAndCallDetached","detached","checkAndCallMoved","moved","checkChildObservers","childObservers","empty","hasSubtreeListeners","childEventObj","childList","addedNodes","removedNodes","callChildObservers","hasSubtreeMutationObservers","updateSlotCount","diff","_$markSlotCacheDirty","_$insertChildReassignSlot","ideaPosIndex","forEachNodeInSpecifiedSlot","_posIndex","shadowParent","backendParent","findNearestNonVirtual","d","countNonVirtual","before","removeCount","rel","nextSibling","insertChildComposed","p","firstNode","recRelVirtual","forEachComposedChild","newChild","relChild","removal","newPosIndex","parentConverted","sharedNonVirtualParent","context","dynamicSlotting","singleSlot","getSingleSlotElement","forEachChildInSlot","slotName","recInheritedSlot","every","recv","findFirstNonVirtual","_loop_1","recVirtual","state_1","slotElem","lastIndexOf","nextSlot","nextSlotName","sharedFrag","groupUpdate","slotNameLimit","frag","f_1","createDocumentFragment","recNewVirtual_1","slots_1","recInheritedSlots_1","_$componentInstanceId","insertChildSingleOperation","parent","oriPosIndex","_e","_f","posIndex","oldParent","needUpdateSlotCount","slotCountDiff","oldPosIndex","detachChild","attachChild","_$checkSlotChanges","insertChildBatchRemoval","relChild_1","relChildren","relChild_2","insertChildBatchInsertion","newChildList","insertChildPlaceholerReplace","replacer","_g","_h","placeholder","replacedChildren","insertChildAt","removeChildAt","replaceChildAt","insertChildren","removeChildren","selfReplaceWith","replaceWith","_$generateIdMap","idMap","dfs","nodeId","_$updateEventDefaultPrevented","enabled","finalChanged","_$definition","_$options","listenerChangeLifetimes","triggerLifetime","getAttribute","updateAttribute","attrs","setMark","marks","_loop_2","replaceDocumentElement","targetParent","targetNode","pretendAttached","pretendDetached","isAttached","needIncSlotCount","getSlotName","sn","getInheritSlots","setSlotElement","getSlotElement","getComposedParent","getComposedChildren","notEnded_1","recInheritSlots","parseSelector","querySelector","selectorStr","querySelectorAll","matchSelector","res_1","res_2","METHOD_TAG","__extends","setPrototypeOf","__proto__","TypeError","__","constructor","_super","_$initializeVirtual","virtualName","is","_$backendShadowRoot","TraitBehavior","trans","_$trans","_$implement","impl","TraitGroup","_$traits","implement","traitBehavior","traitImpl","NormalizedPropertyType","Relation","group","links","definitions","link","_$group","_$sharedGroup","_$links","keyMap","defs","relationType","linksGroup","parentType","isDetach","selfDefs","oldLink","newLink","def","parentBeheviorTest","Behavior","space","_$getBehavior","domain","parentBehevior","hasBehavior","parentRelation","rt","parentDefs","def_1","requiredBehavior","oldTarget","oldDef","linkChanged","unlinked","newTarget","newDef","linked","linkFailed","getLinkedTargets","typeWithIndex","convertGenerics","compDef","genericTargets","hostUsing","_$behavior","_$using","hostGenericImpls","_$genericImpls","_$detail","prepare","genericImpls","childBeh","behavior","generics","_$generics","genericDefaults","_$genericDefaults","getComponentByUrlWithoutDefault","waiting","defaultComp","getDefaultComponent","resolvePlaceholder","usingTarget","ComponentDefinition","normalizeComponentOptions","templateEngine","_$templateEngine","general","getComponentDependencies","isPrepared","propSetters","writeFieldsToNode","_$propertyMap","_$dataGroup","dataGroup","methodKeys","_$methodMap","methodName","proto","dataGroupObserverTree","_$generateObserverTree","_$getAllLifetimeFuncs","_$pageLifetimeFuncs","_$getAllPageLifetimeFuncs","relationDefinitionGroup","relations","generateRelationDefinitionGroup","_$relationMap","template","componentInstanceIdInc","getDefaultComponentSpace","defineComponent","_$tagMethod","taggedMethod","_$isTaggedMethod","_$advancedCreate","tagName","backendContext","placeholderHandler","initPropValues","getDefaultBackendContext","external","externalComponent","propEarlyInit","propertyEarlyInit","_$methodCaller","virtualHost","backend_1","backend_2","externalClassAlias","_$externalClasses","externalClasses","componentInstanceId","idPrefixGenerator","staticData","_$staticData","dataGenFuncs","_$data","_$traitGroup","traitBehaviors","_$traitBehaviors","_$methodCallerInit","methodCaller","initDone","_$init","cowObserver_1","cowLifetime_1","cowPageLifetime_1","cowMethodMap","builderContext","self","setData","bind","normalizedRel","normalizeRelation","list","listAsTrait","dataPaths","lifetime","fag","FuncArr","pageLifetime","method","initFuncs","exported","exportedKeys","exportedKey","exportItem","tmplInst","createInstance","initValues","updateValues","_$listeners","getIdMap","setListener","getElementById","created","createWithGenericsAndContext","collectGenericImpls","g","getComponentByUrl","createWithGenerics","createWithContext","_$getIdMap","listProperties","hasProperty","getMethodsFromDef","getMethod","getComponentDefinition","other","setMethodCaller","caller","triggerLifeTime","triggerPageLifetime","triggerPageLifeTime","getRelationNodes","relationKey","hasExternalClass","setExternalClass","cl","scheduleExternalClassChange","applyExternalClassChanges","isInnerDataExcluded","fieldName","getInnerData","getDataProxy","dataProxy","hasPendingChanges","groupUpdates","callback","updateData","__assign","BindingMapUpdateEnabled","shallowMerge","oldDest","newDest","subKeys","subKey","normalizePropertyType","Boolean","Function","defaultFn","default","optionalTypes","matchTypeWithValue","checkRelationFunc","type_1","normalizeUrl","absPath","BehaviorBuilder","_$behaviors","_$methods","_$lifetimes","_$pageLifetimes","_$is","_$ownerSpace","methodCallerInit","_$chainingFilter","chainingFilter","oldOptions","_$template","usingComponents","placeholders","_$placeholders","gen","property","_$properties","methods","funcs","name_1","paths","once","_$relations","init","behaviors","using","rawData","rawProperties","properties","name_2","rawMethods","name_3","rawObservers","fields","rawLifetimes","lifetimes","ready","name_4","rawPageLifetimes","pageLifetimes","name_5","rawRelations","name_6","registerBehavior","_$registerBehavior","registerComponent","_$registerComponent","builder","_$unprepared","_$builder","_$flatAncestors","Set","beh","dep","values","_j","_k","flatAncestors","parentName","parentNameStr","getBehaviorByUrl","traitBehaviors_1","staticData_1","observers_1","item","lifetimes_1","pageLifetimes_1","i_4","listeners_1","relations_1","hasPlaceholders","this_1","p_1","wl","_$componentWaitingList","genericKeys","genericDef","_l","name_7","initValueFuncs_1","_p","name_8","shortHandDef","propDef","normalizePropertyTypeShortHand","this_2","name_9","_m","dot","_o","getTemplate","getMethods","ot","name_10","name_11","normalizePath","basePath","finalSlices","pop","relPath","protoSep","domainSep","ComponentWaitingList","_$callbacks","cbs","ComponentSpace","defaultComponent","baseSpace","_$behaviorList","_$pubBehaviorList","_$list","_$pubList","_$importedSpaces","_$listWaiting","_$pubListWaiting","_$defaultComponent","_$componentOptions","updateComponentOptions","componentOptions","updateBaseSpace","importSpace","protoDomain","privateUse","getComponent","withDefault","isDefaultComponent","defineBehavior","define","defineWithMethodCaller","exportComponent","exportBehavior","getWaitingComponents","createComponentByUrl","url","domainPath","paramStr","hashSepIndex","paramSepIndex","needApplyUpdates_1","kv","kvSepIndex","decodeURIComponent","defineTraitBehavior","RangeListManager","keyName","dataList","newListItem","updateKeys","items","indexes","sharedKeyMap","rawKeys","rawKeyField","rawKey","items_1","inc","oriUpdatePathTree","updateListItem","oldRawKeys","oldKeyMap","oldSharedKeyMap","oldIndexes","allowFastComparison","updatePathTree","newRawKeys","newSharedKeyMap","needUpdate","subTree","updatePathTree_1","oldIndex","minIndexByLen","minIndexByLenIndexes","minIndexPrev","oldPosList","prevOldIndex","prevMinIndexByLenIndex","bottom","top_1","mid","floor","lcsLen","prevLcsIndex","curLcsArrIndex","OpKind","lcsArr","oldListOp","changedItems","prevLcsOldPos","oldPos","realListDiff","opOldPos","opIndex","nextStable","nextStableOldPos","start","newItem","getTmplArgs","_$wxTmplArgs","dataValueToString","ProcGenWrapper","procGen","disallowNativeNode","bindingMapDisabled","handleChildrenCreation","C","B","update","dataUpdatePathTree","handleChildrenUpdate","bindingMapUpdate","field","bindingMapGenList","updaters","prevElement","bindingMapGen","textContent","slotElement","dynamicSlotName","textInit","elem_1","createDynamicPlaceholder","propertyInit","dynamicSlotValueNames","elem_2","createCommonElement","dynamicSlotNameMatched","branchKey","branchFunc","oriListUpdatePathTree","lvaluePath","itemCallback","keyList","childNode","isCreation","defineTextNode","defineElement","defineIfGroup","defineForLoop","defineSlot","definePureVirtualNode","slotValueInit","filter","tmplArgs","newElem","dynSlot","dynamicSlotUpdate","applySlotUpdates","indexChanged","applySlotValueUpdates","setDynamicSlotHandler","slotValues","childIndexes","childIndex","slotValueUpdatePathTrees","placeholding","checkComponentPlaceholder","initPropValues_1","placeholderCb","replacerShadowRoot","elemShadowRoot","useDynamicSlotHandlerFrom","createComponentOrNativeNode","replaceSlotValue","class","m","isDynamic","handlerName","evOptions","dynEvListeners","sd","scopeData","nodeDataProxy","camelName","dash","toUpperCase","startsWith","noop","ProcGenWrapperDom","shadowRootElement","slotMergeable","slotMerged","appendSlot","handler","DEFAULT_PROC_GEN_DOM","DEFAULT_PROC_GEN_GROUP_DOM","GlassEaselTemplateDOM","genObjectGroupEnv","groupList","updateMode","GlassEaselTemplateDOMInstance","procGenWrapper","_$wxTmplEv","shadowedEvent","DEFAULT_PROC_GEN","DEFAULT_PROC_GEN_GROUP","GlassEaselTemplateEngine","GlassEaselTemplate","GlassEaselTemplateInstance","forceBindingMapUpdate","createShadowRoot","tryBindingMapUpdate","newVal","startIndex","arr_1","fill","defaultComponentSpace","cs","defaultBackendContext","multipleSlots","dynamicSlots","throwGlobalError","baseComponentOptions","_$type","_$arr","_$avoidErrorHandler","newArr","oldArr","relatedComponent","avoidErrorHandler","msg","info","errorFuncArr","console","error","stack","dispatchError","addGlobalErrorListener","removeGlobalErrorListener","addGlobalWarningListener","warningFuncArr","removeGlobalWarningListener","warn","SlotMode","retainFn","bindedElement","_$subtreeObserversCount","attrObservers","textObservers","attachObservers","_$bindedElement","updateSubtreeCount","eventObj","callTextObservers","textNode","MutationObserver","_$subtreeListenersCount","_$bindedFuncArrs","_$bindedTarget","_$listener","_$normalizedListener","observe","targetElement","characterData","subtree","attachStatus","disconnect","nl","TextNode","text","_$text","ElementIteratorType","wrapPlaceholderCallback","cwp","_$idMap","slotMode","_$slotCacheDirty","_$appliedSlotCacheDirty","_$singleSlot","_$appliedSingleSlot","_$slots","_$appliedSlots","_$dynamicSlotSet","_$appliedDynamicSlots","_$requiredSlotValueNames","_$insertDynamicSlotHandler","_$removeDynamicSlotHandler","_$updateDynamicSlotHandler","_$host","createNativeNode","usingKey","placeholderCallback","compName","genImpl","slots","iterator","it_1","done","subTreeRoot","getSlotContentArray","forEachSlot","forEachNodeInSlot","slot_1","rec_1","rec_2","rec_3","rec_4","recInheritedSlot_1","rec_5","_$updateSlotCache","appliedDynamicSlots","dynamicSlotSet","insertDynamicSlot","removeDynamicSlot","removeIter","it_2","delete","iter","it_3","appliedSlot","oldSlots","newSlots","oldKeys","newKeys","oldSingleSlot","slot_2","rec_6","dynamicSlotSet_1","rec_7","isMultipleSlots","requiredSlotValueNames","insertSlotHandler","removeSlotHandler","updateSlotHandler","it_4","slotMeta","source","slotValueUpdatePathTree","it_5","Map","dumpSingleElementToString","nodeClass","attributes","attr","dumpAttributesToString","trim","dumpElementToString","tabDepth","linePrefix","isExternal","dumpElement","log","ElementIterator","nodeTypeLimit","_$node","_$nodeTypeLimit","_$composed","_$isAncestor","_$rootFirst","prev","rootFirst_1","interrupted_1","childFn","triggerRender","registerElement"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"glass_easel.all.js","mappings":"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","sources":["webpack://glass-easel/webpack/bootstrap","webpack://glass-easel/webpack/runtime/define property getters","webpack://glass-easel/webpack/runtime/hasOwnProperty shorthand","webpack://glass-easel/webpack/runtime/make namespace object","webpack://glass-easel/./src/backend/mode.ts","webpack://glass-easel/./src/backend/backend_protocol.ts","webpack://glass-easel/./src/data_proxy.ts","webpack://glass-easel/./src/backend/composed_backend_protocol.ts","webpack://glass-easel/./src/backend/domlike_backend_protocol.ts","webpack://glass-easel/./src/class_list.ts","webpack://glass-easel/./src/data_path.ts","webpack://glass-easel/./src/data_utils.ts","webpack://glass-easel/./src/event.ts","webpack://glass-easel/./src/selector.ts","webpack://glass-easel/./src/element.ts","webpack://glass-easel/./src/relation.ts","webpack://glass-easel/./src/component_params.ts","webpack://glass-easel/./src/virtual_node.ts","webpack://glass-easel/./src/behavior.ts","webpack://glass-easel/./src/trait_behaviors.ts","webpack://glass-easel/./src/component.ts","webpack://glass-easel/./src/tmpl/index.ts","webpack://glass-easel/./src/component_space.ts","webpack://glass-easel/./src/tmpl/range_list_diff.ts","webpack://glass-easel/./src/tmpl/proc_gen_wrapper.ts","webpack://glass-easel/./src/tmpl/proc_gen_wrapper_dom.ts","webpack://glass-easel/./src/tmpl/native_rendering.ts","webpack://glass-easel/./src/global_options.ts","webpack://glass-easel/./src/func_arr.ts","webpack://glass-easel/./src/shadow_root.ts","webpack://glass-easel/./src/mutation_observer.ts","webpack://glass-easel/./src/text_node.ts","webpack://glass-easel/./src/native_node.ts","webpack://glass-easel/./src/element_iterator.ts","webpack://glass-easel/./src/node.ts","webpack://glass-easel/./src/render.ts","webpack://glass-easel/./src/index.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export var BM = {\n DYNAMIC: true,\n SHADOW: false,\n COMPOSED: false,\n DOMLIKE: false,\n};\nexport var BackendMode;\n(function (BackendMode) {\n BackendMode[BackendMode[\"Shadow\"] = 1] = \"Shadow\";\n BackendMode[BackendMode[\"Composed\"] = 2] = \"Composed\";\n BackendMode[BackendMode[\"Domlike\"] = 3] = \"Domlike\";\n})(BackendMode || (BackendMode = {}));\n","/* eslint-disable class-methods-use-this */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { safeCallback } from '../func_arr';\nexport { BackendMode, } from './mode';\nexport var EmptyBackendElementType;\n(function (EmptyBackendElementType) {\n EmptyBackendElementType[EmptyBackendElementType[\"Fragment\"] = 0] = \"Fragment\";\n EmptyBackendElementType[EmptyBackendElementType[\"Element\"] = 1] = \"Element\";\n EmptyBackendElementType[EmptyBackendElementType[\"TextNode\"] = 2] = \"TextNode\";\n EmptyBackendElementType[EmptyBackendElementType[\"Component\"] = 3] = \"Component\";\n EmptyBackendElementType[EmptyBackendElementType[\"VirtualNode\"] = 4] = \"VirtualNode\";\n})(EmptyBackendElementType || (EmptyBackendElementType = {}));\n/** An empty backend implementation */\nvar EmptyBackendContext = /** @class */ (function () {\n function EmptyBackendContext() {\n this.mode = 1 /* BackendMode.Shadow */;\n this._$styleSheetIdInc = 1;\n this._$renderCallbacks = null;\n this._$shadowRoot = new EmptyBackendShadowRootContext();\n }\n EmptyBackendContext.prototype.destroy = function () {\n // empty\n };\n EmptyBackendContext.prototype.getWindowWidth = function () {\n return 1;\n };\n EmptyBackendContext.prototype.getWindowHeight = function () {\n return 1;\n };\n EmptyBackendContext.prototype.getDevicePixelRatio = function () {\n return 1;\n };\n EmptyBackendContext.prototype.getTheme = function () {\n return 'light';\n };\n EmptyBackendContext.prototype.registerStyleSheetContent = function (_path, _content) {\n // empty\n };\n EmptyBackendContext.prototype.appendStyleSheetPath = function (_path, _styleScope) {\n var id = this._$styleSheetIdInc;\n this._$styleSheetIdInc += 1;\n return id;\n };\n EmptyBackendContext.prototype.disableStyleSheet = function (_index) {\n // empty\n };\n EmptyBackendContext.prototype.render = function (cb) {\n var _this = this;\n if (this._$renderCallbacks) {\n this._$renderCallbacks.push(cb);\n }\n else {\n var callbacks_1 = (this._$renderCallbacks = [cb]);\n setTimeout(function () {\n _this._$renderCallbacks = null;\n callbacks_1.forEach(function (cb) {\n safeCallback('Render Callback', cb, _this, [null]);\n });\n }, 16);\n }\n };\n EmptyBackendContext.prototype.getRootNode = function () {\n return this._$shadowRoot;\n };\n EmptyBackendContext.prototype.createFragment = function () {\n return new EmptyBackendElement(0 /* EmptyBackendElementType.Fragment */);\n };\n EmptyBackendContext.prototype.onEvent = function (_listener) {\n // empty\n };\n EmptyBackendContext.prototype.createMediaQueryObserver = function (_status, _listener) {\n return {\n disconnect: function () {\n /* empty */\n },\n };\n };\n return EmptyBackendContext;\n}());\nexport { EmptyBackendContext };\n/** An element for empty backend implementation */\nvar EmptyBackendElement = /** @class */ (function () {\n function EmptyBackendElement(type) {\n if (type === 3 /* EmptyBackendElementType.Component */) {\n this._$shadowRoot = new EmptyBackendShadowRootContext();\n }\n else {\n this._$shadowRoot = null;\n }\n }\n EmptyBackendElement.prototype.release = function () {\n // empty\n };\n EmptyBackendElement.prototype.associateValue = function (_v) {\n // empty\n };\n EmptyBackendElement.prototype.getShadowRoot = function () {\n return this._$shadowRoot || undefined;\n };\n EmptyBackendElement.prototype.appendChild = function (_child) {\n // empty\n };\n EmptyBackendElement.prototype.removeChild = function (_child, _index) {\n // empty\n };\n EmptyBackendElement.prototype.insertBefore = function (_child, _before, _index) {\n // empty\n };\n EmptyBackendElement.prototype.replaceChild = function (_child, _oldChild, _index) {\n // empty\n };\n EmptyBackendElement.prototype.spliceBefore = function (_before, _deleteCount, _list) {\n // empty\n };\n EmptyBackendElement.prototype.spliceAppend = function (_list) {\n // empty\n };\n EmptyBackendElement.prototype.spliceRemove = function (_before, _deleteCount) {\n // empty\n };\n EmptyBackendElement.prototype.setId = function (_id) {\n // empty\n };\n EmptyBackendElement.prototype.setSlotName = function (_name) {\n // empty\n };\n EmptyBackendElement.prototype.setContainingSlot = function (_slot) {\n // empty\n };\n EmptyBackendElement.prototype.reassignContainingSlot = function (_oldSlot, _newSlot) {\n // empty\n };\n EmptyBackendElement.prototype.spliceBeforeSlotNodes = function (_before, _deleteCount, _list) {\n // empty\n };\n EmptyBackendElement.prototype.spliceRemoveSlotNodes = function (_before, _deleteCount) {\n // empty\n };\n EmptyBackendElement.prototype.spliceAppendSlotNodes = function (_list) {\n // empty\n };\n EmptyBackendElement.prototype.setInheritSlots = function () {\n // empty\n };\n EmptyBackendElement.prototype.setVirtualHost = function () {\n // empty\n };\n EmptyBackendElement.prototype.setStyleScope = function (_styleScope) {\n // empty\n };\n EmptyBackendElement.prototype.setStyle = function (_styleText) {\n // empty\n };\n EmptyBackendElement.prototype.addClass = function (_elementClass, _styleScope) {\n // empty\n };\n EmptyBackendElement.prototype.removeClass = function (_elementClass, _styleScope) {\n // empty\n };\n EmptyBackendElement.prototype.clearClasses = function () {\n // empty\n };\n EmptyBackendElement.prototype.setAttribute = function (_name, _value) {\n // empty\n };\n EmptyBackendElement.prototype.removeAttribute = function (_name) {\n // empty\n };\n EmptyBackendElement.prototype.setDataset = function (_name, _value) {\n // empty\n };\n EmptyBackendElement.prototype.setText = function (_content) {\n // empty\n };\n EmptyBackendElement.prototype.getBoundingClientRect = function (cb) {\n setTimeout(function () {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n };\n EmptyBackendElement.prototype.getScrollOffset = function (cb) {\n setTimeout(function () {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n };\n EmptyBackendElement.prototype.setListenerStats = function (_type, _capture, _mutLevel) {\n // empty\n };\n EmptyBackendElement.prototype.setModelBindingStat = function (_attributeName, _listener) {\n // empty\n };\n EmptyBackendElement.prototype.createIntersectionObserver = function (_relativeElement, _relativeElementMargin, _thresholds, _listener) {\n return {\n disconnect: function () {\n /* empty */\n },\n };\n };\n EmptyBackendElement.prototype.getContext = function (cb) {\n cb(null);\n };\n return EmptyBackendElement;\n}());\nexport { EmptyBackendElement };\n/** A shadow root for empty backend implementation */\nvar EmptyBackendShadowRootContext = /** @class */ (function (_super) {\n __extends(EmptyBackendShadowRootContext, _super);\n // eslint-disable-next-line no-useless-constructor\n function EmptyBackendShadowRootContext() {\n return _super.call(this, 4 /* EmptyBackendElementType.VirtualNode */) || this;\n }\n EmptyBackendShadowRootContext.prototype.createElement = function (_tagName, _stylingName) {\n return new EmptyBackendElement(1 /* EmptyBackendElementType.Element */);\n };\n EmptyBackendShadowRootContext.prototype.createTextNode = function (_content) {\n return new EmptyBackendElement(2 /* EmptyBackendElementType.TextNode */);\n };\n EmptyBackendShadowRootContext.prototype.createComponent = function (_tagName) {\n return new EmptyBackendElement(3 /* EmptyBackendElementType.Component */);\n };\n EmptyBackendShadowRootContext.prototype.createVirtualNode = function (_virtualName) {\n return new EmptyBackendElement(4 /* EmptyBackendElementType.VirtualNode */);\n };\n return EmptyBackendShadowRootContext;\n}(EmptyBackendElement));\nexport { EmptyBackendShadowRootContext };\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { safeCallback, triggerWarning } from './func_arr';\nimport { convertValueToType } from './behavior';\nimport { deepCopy, simpleDeepCopy } from './data_utils';\nimport { DeepCopyKind } from './global_options';\nimport { MutationObserverTarget } from './mutation_observer';\n// eslint-disable-next-line @typescript-eslint/unbound-method\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport var DeepCopyStrategy;\n(function (DeepCopyStrategy) {\n DeepCopyStrategy[DeepCopyStrategy[\"None\"] = 0] = \"None\";\n DeepCopyStrategy[DeepCopyStrategy[\"Simple\"] = 1] = \"Simple\";\n DeepCopyStrategy[DeepCopyStrategy[\"SimpleWithRecursion\"] = 2] = \"SimpleWithRecursion\";\n})(DeepCopyStrategy || (DeepCopyStrategy = {}));\nvar DataGroupObserverTree = /** @class */ (function () {\n function DataGroupObserverTree(propFields) {\n this.observerTree = { sub: {} };\n this.observers = [];\n this.propFields = propFields;\n }\n DataGroupObserverTree.prototype.cloneSub = function () {\n var ret = new DataGroupObserverTree(this.propFields);\n if (this.observers.length > 0) {\n ret.observerTree = simpleDeepCopy(this.observerTree);\n ret.observers = this.observers.slice();\n }\n return ret;\n };\n DataGroupObserverTree.prototype.addObserver = function (func, dataPath) {\n var id = this.observers.length;\n this.observers.push({\n path: dataPath,\n f: func,\n });\n for (var i = 0; i < dataPath.length; i += 1) {\n var singlePath = dataPath[i];\n var cur = this.observerTree;\n var wildcard = false;\n for (var j = 0; j < singlePath.length; j += 1) {\n var pathSlice = singlePath[j];\n if (pathSlice === '**') {\n wildcard = true;\n break;\n }\n if (!cur.sub[pathSlice])\n cur.sub[pathSlice] = { sub: {} };\n cur = cur.sub[pathSlice];\n }\n if (wildcard) {\n if (!cur.wildcard)\n cur.wildcard = [id];\n else\n cur.wildcard.push(id);\n }\n else {\n if (!cur.listener)\n cur.listener = [id];\n else\n cur.listener.push(id);\n }\n }\n };\n return DataGroupObserverTree;\n}());\nexport { DataGroupObserverTree };\nvar callObserver = function (comp, data, path, f) {\n var args = new Array(path.length);\n for (var i = 0; i < path.length; i += 1) {\n var singlePath = path[i];\n var cur = data;\n for (var j = 0; j < singlePath.length; j += 1) {\n var slice = singlePath[j];\n if (slice === '**')\n break;\n if (typeof cur === 'object' && cur !== null) {\n cur = cur[slice];\n }\n else {\n cur = undefined;\n break;\n }\n }\n args[i] = cur;\n }\n safeCallback('Data Observer', f, comp.getMethodCaller(), args, comp || undefined);\n};\nvar dfsMarkTriggerBitOnPath = function (node, observerStatus) {\n if (node.listener) {\n for (var i = 0; i < node.listener.length; i += 1) {\n var observerId = node.listener[i];\n observerStatus[observerId] = true;\n }\n }\n if (node.wildcard) {\n for (var i = 0; i < node.wildcard.length; i += 1) {\n var observerId = node.wildcard[i];\n observerStatus[observerId] = true;\n }\n }\n var keys = Object.keys(node.sub);\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n dfsMarkTriggerBitOnPath(node.sub[k], observerStatus);\n }\n};\nvar markTriggerBitOnPath = function (root, observerStatus, singlePath) {\n var cur = root;\n var found = true;\n for (var i = 0; i < singlePath.length; i += 1) {\n var slice = singlePath[i];\n if (cur.wildcard) {\n var arr = cur.wildcard;\n for (var i_1 = 0; i_1 < arr.length; i_1 += 1) {\n var observerId = arr[i_1];\n observerStatus[observerId] = true;\n }\n }\n if (!hasOwnProperty.call(cur.sub, slice)) {\n found = false;\n break;\n }\n cur = cur.sub[slice];\n }\n if (found)\n dfsMarkTriggerBitOnPath(cur, observerStatus);\n};\nvar triggerAndCleanTriggerBit = function (observers, observerStatus, comp, data) {\n for (var i = 0; i < observers.length; i += 1) {\n var _a = observers[i], path = _a.path, f = _a.f;\n var status_1 = observerStatus[i];\n if (status_1) {\n observerStatus[i] = false;\n if (comp)\n callObserver(comp, data, path, f);\n }\n }\n};\nexport var getDeepCopyStrategy = function (level) {\n if (level === DeepCopyKind.Simple)\n return 1 /* DeepCopyStrategy.Simple */;\n if (level === DeepCopyKind.SimpleWithRecursion)\n return 2 /* DeepCopyStrategy.SimpleWithRecursion */;\n return 0 /* DeepCopyStrategy.None */;\n};\n/** A data wrapper for data operations such as `setData` */\nvar DataGroup = /** @class */ (function () {\n function DataGroup(associatedComponent, data, pureDataPattern, dataDeepCopy, propertyPassingDeepCopy, reflectToAttributes, observerTree) {\n this._$modelBindingListener = null;\n this._$pendingChanges = [];\n this._$doingUpdates = null;\n this._$comp = associatedComponent;\n this.data = data;\n this._$pureDataPattern = pureDataPattern;\n this._$dataDeepCopy = dataDeepCopy;\n this._$propertyPassingDeepCopy = propertyPassingDeepCopy;\n this._$reflectToAttributes = reflectToAttributes && !!associatedComponent;\n this._$propFields = observerTree.propFields;\n this._$observerTree = observerTree.observerTree;\n this._$observers = observerTree.observers;\n this._$observerStatus = new Array(observerTree.observers.length);\n this.innerData = this._$generateInnerData(data);\n }\n DataGroup.prototype._$generateInnerData = function (data) {\n var pureDataPattern = this._$pureDataPattern;\n var dataDeepCopy = this._$dataDeepCopy;\n if (pureDataPattern || dataDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n var innerData = {};\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n var v = data[k];\n if (pureDataPattern && pureDataPattern.test(k))\n continue;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n innerData[k] = v;\n }\n else if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n innerData[k] = deepCopy(v, true);\n }\n else {\n innerData[k] = simpleDeepCopy(v);\n }\n }\n return innerData;\n }\n return null;\n };\n /** Create a simple data group */\n DataGroup.create = function (data) {\n return new DataGroup(null, data, null, 0 /* DeepCopyStrategy.None */, 0 /* DeepCopyStrategy.None */, false, new DataGroupObserverTree({}));\n };\n /** Set a callback for every grouped update */\n DataGroup.prototype.setUpdateListener = function (updateListener) {\n this._$updateListener = updateListener;\n };\n /** Replace the underlying data */\n DataGroup.prototype.replaceWholeData = function (data) {\n this.data = data;\n this.innerData = this._$generateInnerData(data);\n };\n /** Add a new common data change to queue */\n DataGroup.prototype.replaceDataOnPath = function (path, newData) {\n this._$pendingChanges.push([path, newData, undefined, undefined]);\n };\n /** Add a new array splice operation to queue */\n DataGroup.prototype.spliceArrayDataOnPath = function (path, index, del, inserts) {\n if (!Array.isArray(inserts)) {\n triggerWarning(\"The splice insertion must be a string (on path \\\"\".concat(path.join('.'), \"\\\"). The change is ignored.\"));\n return;\n }\n this._$pendingChanges.push([path, inserts, index !== null && index !== void 0 ? index : -1, del || 0]);\n };\n /**\n * Add a new property change to queue\n *\n * (Generally designed for template engines.)\n * If the `propName` is a property,\n * the `newData` will be deep-copied according to the `propertyPassingDeepCopy` configuration.\n * Otherwise, it returns false.\n */\n DataGroup.prototype.replaceProperty = function (propName, newData) {\n var data = newData;\n var prop = this._$propFields[propName];\n if (!prop)\n return false;\n if (this._$propertyPassingDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n if (this._$propertyPassingDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n data = deepCopy(newData, true);\n }\n else {\n data = simpleDeepCopy(newData);\n }\n }\n this._$pendingChanges.push([[propName], data, undefined, undefined]);\n return true;\n };\n /** Discard changes in queue and generate a new queue with specified changes */\n DataGroup.prototype.setChanges = function (changes) {\n this._$pendingChanges = changes;\n };\n /** Get the data change queue */\n DataGroup.prototype.getChanges = function () {\n return this._$pendingChanges;\n };\n /**\n * Set a callback when a specified property changes\n *\n * (Generally designed for template engines.)\n */\n DataGroup.prototype.setModelBindingListener = function (propName, listener) {\n if (this._$modelBindingListener) {\n this._$modelBindingListener[propName] = listener;\n }\n else {\n var map = (this._$modelBindingListener = Object.create(null));\n map[propName] = listener;\n }\n };\n /** Apply all changes in queue */\n DataGroup.prototype.applyDataUpdates = function (skipModelListener) {\n var _a, _b;\n var _c;\n if (skipModelListener === void 0) { skipModelListener = false; }\n var propFields = this._$propFields;\n var comp = this._$comp;\n var pureDataPattern = this._$pureDataPattern;\n var dataDeepCopy = this._$dataDeepCopy;\n // handling chained updates if observers are used\n var isChainedUpdates = !!this._$doingUpdates;\n var combinedChanges;\n var propChanges;\n if (this._$observers.length > 0) {\n if (this._$doingUpdates) {\n combinedChanges = this._$doingUpdates.combined;\n propChanges = this._$doingUpdates.prop;\n }\n else {\n this._$doingUpdates = {\n prop: [],\n combined: [],\n count: 0,\n };\n combinedChanges = this._$doingUpdates.combined;\n propChanges = this._$doingUpdates.prop;\n }\n }\n else {\n combinedChanges = [];\n propChanges = [];\n }\n // find all changes\n var changes = this._$pendingChanges;\n this._$pendingChanges = [];\n // apply changes and collect changing information\n for (var i = 0; i < changes.length; i += 1) {\n var change = changes[i];\n var path = change[0], newData = change[1], spliceIndex = change[2], spliceDel = change[3];\n var isSplice = spliceDel !== undefined;\n var propName = String(path[0]);\n var excluded = pureDataPattern ? pureDataPattern.test(propName) : false;\n var prop = propFields[propName];\n var changed = true;\n if (prop && path.length === 1) {\n // do update for 1-level fields\n var oldData = this.data[propName];\n var normalizedSpliceIndex = void 0;\n var filteredData = void 0;\n if (isSplice) {\n if (Array.isArray(oldData)) {\n var c = change;\n normalizedSpliceIndex =\n spliceIndex >= 0 && spliceIndex < oldData.length ? spliceIndex : oldData.length;\n c[2] = normalizedSpliceIndex;\n oldData.splice.apply(oldData, __spreadArray([normalizedSpliceIndex, spliceDel], newData, false));\n }\n else {\n triggerWarning(\"An array splice change cannot be applied to a non-array value (on path \\\"\".concat(path.join('.'), \"\\\"). The change is ignored.\"));\n }\n filteredData = oldData;\n }\n else {\n filteredData = convertValueToType(newData, propName, prop);\n }\n if (!excluded) {\n if (this.innerData) {\n var innerNewData = void 0;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n change[1] = innerNewData = filteredData;\n }\n else if (normalizedSpliceIndex !== undefined) {\n innerNewData = this.innerData[propName];\n var inserts = void 0;\n if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = inserts = deepCopy(newData, true);\n }\n else {\n change[1] = inserts = simpleDeepCopy(newData);\n }\n ;\n (_a = innerNewData).splice.apply(_a, __spreadArray([normalizedSpliceIndex, spliceDel], inserts, false));\n }\n else if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = innerNewData = deepCopy(filteredData, true);\n }\n else {\n change[1] = innerNewData = simpleDeepCopy(filteredData);\n }\n this.innerData[propName] = innerNewData;\n }\n }\n ;\n this.data[propName] = filteredData;\n if (this._$reflectToAttributes) {\n var be = comp.getBackendElement();\n if (be) {\n var attrValue = filteredData;\n if (prop.reflectIdPrefix) {\n var owner = comp.ownerShadowRoot;\n if (owner) {\n var idPrefix = owner.getHostNode()._$idPrefix;\n if (idPrefix) {\n attrValue = \"\".concat(idPrefix, \"--\").concat(filteredData);\n }\n }\n }\n var attrName = propName.replace(/[A-Z]/g, function (c) { return \"-\".concat(c.toLowerCase()); });\n var type = typeof attrValue;\n if (type === 'boolean') {\n if (filteredData)\n be.setAttribute(attrName, '');\n else\n be.removeAttribute(attrName);\n }\n else if (type === 'object') {\n be.setAttribute(attrName, JSON.stringify(attrValue));\n }\n else {\n be.setAttribute(attrName, attrValue);\n }\n }\n }\n changed = prop.comparer\n ? !!safeCallback('Property Comparer', prop.comparer, comp, [newData, oldData], comp === null || comp === void 0 ? void 0 : comp.general())\n : oldData !== filteredData;\n if (!excluded && changed) {\n propChanges.push({\n propName: propName,\n prop: prop,\n oldValue: oldData,\n newValue: filteredData,\n skipModelListener: skipModelListener,\n });\n }\n }\n else {\n // do update for multi-level fields\n var curData = this.data;\n var curSlice = propName;\n for (var i_2 = 1; i_2 < path.length; i_2 += 1) {\n var nextSlice = path[i_2];\n if (Number.isFinite(nextSlice)) {\n if (!hasOwnProperty.call(curData, curSlice) ||\n !Array.isArray(curData[curSlice])) {\n ;\n curData[curSlice] = [];\n }\n }\n else {\n if (!hasOwnProperty.call(curData, curSlice) ||\n curData[curSlice] === null ||\n typeof curData[curSlice] !== 'object' ||\n Array.isArray(curData[curSlice])) {\n ;\n curData[curSlice] = {};\n }\n }\n curData = curData[curSlice];\n curSlice = nextSlice;\n }\n var normalizedSpliceIndex = void 0;\n if (isSplice) {\n var oldData = curData[curSlice];\n if (Array.isArray(oldData)) {\n var c = change;\n normalizedSpliceIndex =\n spliceIndex >= 0 && spliceIndex < oldData.length ? spliceIndex : oldData.length;\n c[2] = normalizedSpliceIndex;\n oldData.splice.apply(oldData, __spreadArray([normalizedSpliceIndex, spliceDel], newData, false));\n }\n else {\n triggerWarning(\"An array splice change cannot be applied to a non-array value (on path \\\"\".concat(path.join('.'), \"\\\"). The change is ignored.\"));\n }\n }\n else {\n ;\n curData[curSlice] = newData;\n }\n if (!excluded && this.innerData) {\n curData = this.innerData;\n curSlice = propName;\n for (var i_3 = 1; i_3 < path.length; i_3 += 1) {\n var nextSlice = path[i_3];\n if (Number.isFinite(nextSlice)) {\n if (!hasOwnProperty.call(curData, curSlice) ||\n !Array.isArray(curData[curSlice])) {\n ;\n curData[curSlice] = [];\n }\n }\n else {\n if (!hasOwnProperty.call(curData, curSlice) ||\n curData[curSlice] === null ||\n typeof curData[curSlice] !== 'object' ||\n Array.isArray(curData[curSlice])) {\n ;\n curData[curSlice] = {};\n }\n }\n curData = curData[curSlice];\n curSlice = nextSlice;\n }\n var innerNewData = void 0;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n change[1] = innerNewData = newData;\n }\n else if (normalizedSpliceIndex !== undefined) {\n innerNewData = curData[curSlice];\n var inserts = void 0;\n if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = inserts = deepCopy(newData, true);\n }\n else {\n change[1] = inserts = simpleDeepCopy(newData);\n }\n ;\n (_b = innerNewData).splice.apply(_b, __spreadArray([normalizedSpliceIndex, spliceDel], inserts, false));\n }\n else if (dataDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n change[1] = innerNewData = deepCopy(newData, true);\n }\n else {\n change[1] = innerNewData = simpleDeepCopy(newData);\n }\n ;\n curData[curSlice] = innerNewData;\n }\n if (!excluded && prop) {\n // NOTE for prop observers, oldVal will be undefined when doing a sub-path update\n propChanges.push({\n propName: propName,\n prop: prop,\n oldValue: undefined,\n newValue: newData,\n skipModelListener: skipModelListener || false,\n });\n }\n }\n markTriggerBitOnPath(this._$observerTree, this._$observerStatus, path);\n if (!excluded && changed) {\n combinedChanges.push(change);\n }\n if (this._$doingUpdates) {\n this._$doingUpdates.count += 1;\n }\n }\n // trigger data observers\n if (isChainedUpdates)\n return;\n if (this._$doingUpdates) {\n var changesCount = void 0;\n do {\n changesCount = this._$doingUpdates.count;\n triggerAndCleanTriggerBit(this._$observers, this._$observerStatus, comp, this.data);\n } while (changesCount !== this._$doingUpdates.count);\n this._$doingUpdates = null;\n }\n // tell template engine what changed\n (_c = this._$updateListener) === null || _c === void 0 ? void 0 : _c.call(this, this.innerData || this.data, combinedChanges);\n // trigger prop observers (to simulating legacy behaviors)\n if (comp) {\n for (var i = 0; i < propChanges.length; i += 1) {\n var _d = propChanges[i], propName = _d.propName, prop = _d.prop, oldValue = _d.oldValue, newValue = _d.newValue, skipModelListener_1 = _d.skipModelListener;\n if (!skipModelListener_1 && this._$modelBindingListener) {\n var listener = this._$modelBindingListener[propName];\n if (listener)\n listener(newValue);\n }\n if (prop.observer) {\n safeCallback('Property Observer', prop.observer, comp.getMethodCaller(), [newValue, oldValue], comp);\n }\n if (comp._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(comp, {\n type: 'properties',\n target: comp,\n propertyName: propName,\n });\n }\n }\n }\n };\n return DataGroup;\n}());\nexport { DataGroup };\n","/* eslint-disable class-methods-use-this */\nimport { safeCallback } from '../func_arr';\n/** An empty backend implementation */\nvar EmptyComposedBackendContext = /** @class */ (function () {\n function EmptyComposedBackendContext() {\n this.mode = 2 /* BackendMode.Composed */;\n this._$styleSheetIdInc = 1;\n this._$renderCallbacks = null;\n this._$rootNode = new EmptyComposedBackendElement();\n }\n EmptyComposedBackendContext.prototype.destroy = function () {\n // empty\n };\n EmptyComposedBackendContext.prototype.getWindowWidth = function () {\n return 1;\n };\n EmptyComposedBackendContext.prototype.getWindowHeight = function () {\n return 1;\n };\n EmptyComposedBackendContext.prototype.getDevicePixelRatio = function () {\n return 1;\n };\n EmptyComposedBackendContext.prototype.getTheme = function () {\n return 'light';\n };\n EmptyComposedBackendContext.prototype.registerStyleSheetContent = function (_path, _content) {\n // empty\n };\n EmptyComposedBackendContext.prototype.appendStyleSheetPath = function (_path, _styleScope) {\n var id = this._$styleSheetIdInc;\n this._$styleSheetIdInc += 1;\n return id;\n };\n EmptyComposedBackendContext.prototype.disableStyleSheet = function (_index) {\n // empty\n };\n EmptyComposedBackendContext.prototype.render = function (cb) {\n var _this = this;\n if (this._$renderCallbacks) {\n this._$renderCallbacks.push(cb);\n }\n else {\n var callbacks_1 = (this._$renderCallbacks = [cb]);\n setTimeout(function () {\n _this._$renderCallbacks = null;\n callbacks_1.forEach(function (cb) {\n safeCallback('Render Callback', cb, _this, [null]);\n });\n }, 16);\n }\n };\n EmptyComposedBackendContext.prototype.getRootNode = function () {\n return this._$rootNode;\n };\n EmptyComposedBackendContext.prototype.createElement = function (_tagName, _stylingName) {\n return new EmptyComposedBackendElement();\n };\n EmptyComposedBackendContext.prototype.createTextNode = function (_tagName) {\n return new EmptyComposedBackendElement();\n };\n EmptyComposedBackendContext.prototype.createFragment = function () {\n return new EmptyComposedBackendElement();\n };\n EmptyComposedBackendContext.prototype.onEvent = function (_listener) {\n // empty\n };\n EmptyComposedBackendContext.prototype.createMediaQueryObserver = function (_status, _listener) {\n return {\n disconnect: function () {\n /* empty */\n },\n };\n };\n return EmptyComposedBackendContext;\n}());\nexport { EmptyComposedBackendContext };\n/** An element for empty backend implementation */\nvar EmptyComposedBackendElement = /** @class */ (function () {\n function EmptyComposedBackendElement() {\n }\n EmptyComposedBackendElement.prototype.release = function () {\n // empty\n };\n EmptyComposedBackendElement.prototype.associateValue = function (_v) {\n // empty\n };\n EmptyComposedBackendElement.prototype.appendChild = function (_child) {\n // empty\n };\n EmptyComposedBackendElement.prototype.removeChild = function (_child, _index) {\n // empty\n };\n EmptyComposedBackendElement.prototype.insertBefore = function (_child, _before, _index) {\n // empty\n };\n EmptyComposedBackendElement.prototype.replaceChild = function (_child, _oldChild, _index) {\n // empty\n };\n EmptyComposedBackendElement.prototype.spliceBefore = function (_before, _deleteCount, _list) {\n // empty\n };\n EmptyComposedBackendElement.prototype.spliceAppend = function (_list) {\n // empty\n };\n EmptyComposedBackendElement.prototype.spliceRemove = function (_before, _deleteCount) {\n // empty\n };\n EmptyComposedBackendElement.prototype.setId = function (_id) {\n // empty\n };\n EmptyComposedBackendElement.prototype.setStyleScope = function (_styleScope) {\n // empty\n };\n EmptyComposedBackendElement.prototype.setStyle = function (_styleText) {\n // empty\n };\n EmptyComposedBackendElement.prototype.addClass = function (_elementClass, _styleScope) {\n // empty\n };\n EmptyComposedBackendElement.prototype.removeClass = function (_elementClass, _styleScope) {\n // empty\n };\n EmptyComposedBackendElement.prototype.clearClasses = function () {\n // empty\n };\n EmptyComposedBackendElement.prototype.setAttribute = function (_name, _value) {\n // empty\n };\n EmptyComposedBackendElement.prototype.removeAttribute = function (_name) {\n // empty\n };\n EmptyComposedBackendElement.prototype.setText = function (_content) {\n // empty\n };\n EmptyComposedBackendElement.prototype.getBoundingClientRect = function (cb) {\n setTimeout(function () {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n };\n EmptyComposedBackendElement.prototype.getScrollOffset = function (cb) {\n setTimeout(function () {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n };\n EmptyComposedBackendElement.prototype.setListenerStats = function (_type, _capture, _mutLevel) {\n // empty\n };\n EmptyComposedBackendElement.prototype.setModelBindingStat = function (_attributeName, _listener) {\n // empty\n };\n EmptyComposedBackendElement.prototype.createIntersectionObserver = function (_relativeElement, _relativeElementMargin, _thresholds, _listener) {\n return {\n disconnect: function () {\n /* empty */\n },\n };\n };\n EmptyComposedBackendElement.prototype.getContext = function (cb) {\n cb(null);\n };\n return EmptyComposedBackendElement;\n}());\nexport { EmptyComposedBackendElement };\n","/* eslint-disable class-methods-use-this */\n/* global window, document */\nimport { safeCallback, triggerWarning } from '../func_arr';\nvar DELEGATE_EVENTS = [\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'mousedown',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'click',\n];\nvar CurrentWindowBackendContext = /** @class */ (function () {\n function CurrentWindowBackendContext() {\n this.mode = 3 /* BackendMode.Domlike */;\n this.document = document;\n this._$styleSheets = [];\n this._$styleSheetRegistry = Object.create(null);\n this._$delegatedEventListeners = Object.create(null);\n this._$elementEventListeners = new WeakMap();\n this._$elementCaptureEventListeners = new WeakMap();\n this._$triggedEvents = new WeakSet();\n }\n CurrentWindowBackendContext.prototype.destroy = function () {\n /* empty */\n };\n CurrentWindowBackendContext.prototype.getWindowWidth = function () {\n return document.documentElement.clientWidth;\n };\n CurrentWindowBackendContext.prototype.getWindowHeight = function () {\n return document.documentElement.clientHeight;\n };\n CurrentWindowBackendContext.prototype.getDevicePixelRatio = function () {\n return window.devicePixelRatio;\n };\n CurrentWindowBackendContext.prototype.getTheme = function () {\n return 'light';\n };\n CurrentWindowBackendContext.prototype.registerStyleSheetContent = function (path, content) {\n this._$styleSheetRegistry[path] = String(content);\n };\n CurrentWindowBackendContext.prototype.appendStyleSheetPath = function (path, styleScope) {\n var styleText = this._$styleSheetRegistry[path];\n if (styleText === undefined)\n throw new Error(\"No style sheet registry \\\"\".concat(path, \"\\\"\"));\n var s = document.createElement('style');\n s.innerText = styleText;\n if (styleScope !== undefined)\n s.setAttribute('wx-style-scope', String(styleScope));\n document.head.appendChild(s);\n var id = this._$styleSheets.length;\n this._$styleSheets.push(s);\n return id;\n };\n CurrentWindowBackendContext.prototype.disableStyleSheet = function (index) {\n var ss = this._$styleSheets[index];\n if (ss)\n document.head.removeChild(ss);\n };\n CurrentWindowBackendContext.prototype.render = function (cb) {\n var _this = this;\n window.requestAnimationFrame(function () {\n safeCallback('Render Callback', cb, _this, [null]);\n });\n };\n CurrentWindowBackendContext.prototype.getRootNode = function () {\n return document.body;\n };\n CurrentWindowBackendContext.prototype.associateValue = function (element, value) {\n element.__wxElement = value;\n };\n CurrentWindowBackendContext.prototype.onEvent = function (listener) {\n if (!this._$eventListener) {\n this._$initEvent();\n }\n this._$eventListener = listener;\n };\n CurrentWindowBackendContext.prototype._$getEventDetail = function (ev) {\n var detail = {};\n var e = ev;\n while (Object.getPrototypeOf(e) !== Event.prototype) {\n var keys = Object.keys(e);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n if (typeof ev[key] === 'function')\n continue;\n detail[key] = ev[key];\n }\n e = Object.getPrototypeOf(e);\n }\n return detail;\n };\n CurrentWindowBackendContext.prototype._$trigger = function (ev, type, detail, bubbles, composed) {\n if (!this._$eventListener || !ev.target)\n return;\n var t = ev.target;\n while (t && !t.__wxElement)\n t = t.parentNode;\n if (!t)\n return;\n var bubbleStatus = this._$eventListener(t.__wxElement, type, detail, {\n originalEvent: ev,\n bubbles: bubbles,\n composed: composed,\n capturePhase: true,\n });\n if (bubbleStatus === 1 /* EventBubbleStatus.NoDefault */) {\n ev.preventDefault();\n }\n };\n CurrentWindowBackendContext.prototype._$initEvent = function () {\n var _this = this;\n var TAP_DIST = 10;\n var possibleTaps = Object.create(null);\n var SIMULATED_MOUSE_ID = -1;\n var disableMouseEvents = false;\n var handleTapStart = function (_ev, t) {\n possibleTaps[t.identifier] = {\n x: t.clientX,\n y: t.clientY,\n };\n };\n var handleTapMove = function (ev, t) {\n var id = t.identifier;\n if (possibleTaps[id]) {\n var u = possibleTaps[id];\n if (Math.abs(u.x - t.clientX) > TAP_DIST || Math.abs(u.y - t.clientY) > TAP_DIST) {\n delete possibleTaps[id];\n _this._$trigger(ev, 'canceltap', u, true, true);\n }\n }\n };\n var handleTapEnd = function (ev, t) {\n var id = t.identifier;\n if (possibleTaps[id]) {\n var u = possibleTaps[id];\n delete possibleTaps[id];\n if (Math.abs(u.x - t.clientX) > TAP_DIST || Math.abs(u.y - t.clientY) > TAP_DIST) {\n _this._$trigger(ev, 'canceltap', u, true, true);\n }\n else {\n _this._$trigger(ev, 'tap', u, true, true);\n }\n }\n };\n var handleTapCancel = function (ev, t) {\n var id = t.identifier;\n if (possibleTaps[id]) {\n var u = possibleTaps[id];\n delete possibleTaps[id];\n _this._$trigger(ev, 'canceltap', u, true, true);\n }\n };\n document.body.addEventListener('touchstart', function (ev) {\n _this._$trigger(ev, 'touchstart', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n disableMouseEvents = true;\n var changedTouches = ev.changedTouches;\n for (var i = 0; i < changedTouches.length; i += 1) {\n handleTapStart(ev, changedTouches[i]);\n }\n }, { capture: true });\n document.body.addEventListener('touchmove', function (ev) {\n _this._$trigger(ev, 'touchmove', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n var changedTouches = ev.changedTouches;\n for (var i = 0; i < changedTouches.length; i += 1) {\n handleTapMove(ev, changedTouches[i]);\n }\n }, { capture: true });\n document.body.addEventListener('touchend', function (ev) {\n _this._$trigger(ev, 'touchend', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n var changedTouches = ev.changedTouches;\n for (var i = 0; i < changedTouches.length; i += 1) {\n handleTapEnd(ev, changedTouches[i]);\n }\n }, { capture: true });\n document.body.addEventListener('touchcancel', function (ev) {\n _this._$trigger(ev, 'touchcancel', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n var changedTouches = ev.changedTouches;\n for (var i = 0; i < changedTouches.length; i += 1) {\n handleTapCancel(ev, changedTouches[i]);\n }\n }, { capture: true });\n document.body.addEventListener('mousedown', function (ev) {\n _this._$trigger(ev, 'mousedown', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n if (disableMouseEvents)\n return;\n handleTapStart(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n }, { capture: true });\n document.body.addEventListener('mousemove', function (ev) {\n _this._$trigger(ev, 'mousemove', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n if (disableMouseEvents)\n return;\n handleTapMove(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n }, { capture: true });\n document.body.addEventListener('mouseup', function (ev) {\n _this._$trigger(ev, 'mouseup', _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n if (disableMouseEvents)\n return;\n handleTapEnd(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n }, { capture: true });\n var listeners = this._$delegatedEventListeners;\n listeners.touchstart = true;\n listeners.touchmove = true;\n listeners.touchend = true;\n listeners.mousedown = true;\n listeners.mousemove = true;\n listeners.mouseup = true;\n };\n CurrentWindowBackendContext.prototype.setListenerStats = function (element, type, capture, mutLevel) {\n var _this = this;\n // for non-passive events,\n // the default-prevented status can also be found in `EventBubbleStatus` ,\n // so there is nothing to do with non-passive events.\n if (!element)\n return;\n var shouldDelegate = DELEGATE_EVENTS.includes(type);\n var defaultPrevented = mutLevel === 2 /* MutLevel.Final */;\n if (shouldDelegate) {\n if (this._$delegatedEventListeners[type])\n return;\n this._$delegatedEventListeners[type] = true;\n document.body.addEventListener(type, function (ev) {\n if (defaultPrevented)\n ev.preventDefault();\n _this._$trigger(ev, type, _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n }, { capture: true });\n return;\n }\n var elementEventListeners = capture\n ? this._$elementCaptureEventListeners\n : this._$elementEventListeners;\n if (!elementEventListeners.has(element))\n elementEventListeners.set(element, Object.create(null));\n var listeners = elementEventListeners.get(element);\n if (listeners[type])\n return;\n listeners[type] = true;\n element.addEventListener(type, function (ev) {\n if (_this._$triggedEvents.has(ev))\n return;\n _this._$triggedEvents.add(ev);\n if (defaultPrevented)\n ev.preventDefault();\n _this._$trigger(ev, type, _this._$getEventDetail(ev), ev.bubbles, ev.composed);\n });\n };\n CurrentWindowBackendContext.prototype.setModelBindingStat = function (element, attributeName, listener) {\n var updateEventListener = function (evName, valueFn) {\n if (!element._$wxArgs) {\n element._$wxArgs = {\n modelListeners: Object.create(null),\n };\n }\n if (element._$wxArgs.modelListeners[attributeName] === undefined) {\n if (!listener)\n return;\n element._$wxArgs.modelListeners[attributeName] = listener;\n element.addEventListener(evName, function () {\n var _a;\n var listener = (_a = element._$wxArgs) === null || _a === void 0 ? void 0 : _a.modelListeners[attributeName];\n listener === null || listener === void 0 ? void 0 : listener(valueFn());\n });\n }\n element._$wxArgs.modelListeners[attributeName] = listener;\n };\n var tagName = element.tagName;\n var valid = false;\n if (tagName === 'INPUT') {\n var elem_1 = element;\n var type = elem_1.type;\n if (type === 'checkbox') {\n if (attributeName === 'checked') {\n valid = true;\n updateEventListener('change', function () { return elem_1.checked; });\n }\n }\n else if (type === 'radio') {\n if (attributeName === 'checked') {\n valid = true;\n updateEventListener('change', function () { return elem_1.checked; });\n }\n }\n else {\n if (attributeName === 'value') {\n valid = true;\n updateEventListener('input', function () { return elem_1.value; });\n }\n }\n }\n else if (tagName === 'TEXTAREA') {\n var elem_2 = element;\n if (attributeName === 'value') {\n valid = true;\n updateEventListener('input', function () { return elem_2.value; });\n }\n }\n else if (tagName === 'SELECT') {\n var elem_3 = element;\n if (attributeName === 'value') {\n valid = true;\n updateEventListener('change', function () { return elem_3.value; });\n }\n }\n if (!valid) {\n triggerWarning(\"unsupported model binding on \\\"\".concat(attributeName, \"\\\" of \\\"\").concat(tagName.toLowerCase(), \"\\\" element.\"));\n }\n };\n CurrentWindowBackendContext.prototype.createIntersectionObserver = function (targetElement, relativeElement, relativeElementMargin, thresholds, listener) {\n var observer = new IntersectionObserver(function (info) {\n info.forEach(function (entry) {\n listener({\n intersectionRatio: entry.intersectionRatio,\n boundingClientRect: entry.boundingClientRect,\n intersectionRect: entry.intersectionRect,\n relativeRect: entry.rootBounds,\n time: entry.time,\n });\n });\n }, {\n root: relativeElement,\n rootMargin: relativeElementMargin,\n threshold: thresholds,\n });\n observer.observe(targetElement);\n return {\n disconnect: function () {\n observer.disconnect();\n },\n };\n };\n CurrentWindowBackendContext.prototype.createMediaQueryObserver = function (status, listener) {\n var calcMatches = function () {\n var width = document.documentElement.clientWidth;\n var height = document.documentElement.clientHeight;\n if (status.width !== undefined && width !== status.width)\n return false;\n if (status.maxWidth !== undefined && width > status.maxWidth)\n return false;\n if (status.minWidth !== undefined && width < status.minWidth)\n return false;\n if (status.width !== undefined && height !== status.height)\n return false;\n if (status.maxHeight !== undefined && height > status.maxHeight)\n return false;\n if (status.minHeight !== undefined && height < status.minHeight)\n return false;\n var orientation = width > height ? 'landscape' : 'portrait';\n if (orientation !== status.orientation)\n return false;\n return true;\n };\n var curMatches = null;\n var listenerFunc = function () {\n var matches = calcMatches();\n if (curMatches === matches)\n return;\n curMatches = matches;\n listener({ matches: matches });\n };\n setTimeout(listenerFunc, 0);\n window.addEventListener('resize', listenerFunc);\n return {\n disconnect: function () {\n window.removeEventListener('resize', listenerFunc);\n },\n };\n };\n CurrentWindowBackendContext.prototype.getContext = function (element, cb) {\n cb(null);\n };\n return CurrentWindowBackendContext;\n}());\nexport { CurrentWindowBackendContext };\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { BM } from './backend/mode';\nimport { Element } from '.';\nimport { MutationObserverTarget } from './mutation_observer';\nvar CLASS_NAME_REG_EXP = /(~|\\^+)?-?[_0-9a-z][-_0-9a-z]*/gi;\n/**\n * Style scope manager\n */\nvar StyleScopeManager = /** @class */ (function () {\n function StyleScopeManager() {\n /** @internal */\n this._$names = [''];\n }\n StyleScopeManager.globalScope = function () {\n return 0;\n };\n StyleScopeManager.prototype.register = function (name) {\n var ret = this._$names.length;\n this._$names.push(name);\n return ret;\n };\n StyleScopeManager.prototype.queryName = function (id) {\n return this._$names[id];\n };\n return StyleScopeManager;\n}());\nexport { StyleScopeManager };\n/**\n * Class manager for non-virtual `Element`\n */\nvar ClassList = /** @class */ (function () {\n function ClassList(elem, externalNameAlias) {\n var _a, _b, _c;\n /** @internal */\n this._$aliasDirty = false;\n /** @internal */\n this._$rawNames = [];\n /** @internal */\n this._$rawNamesSegmentSep = [];\n /** @internal */\n this._$hasResolvedNames = false;\n this._$elem = elem;\n var ownerComp = (_a = elem.ownerShadowRoot) === null || _a === void 0 ? void 0 : _a.getHostNode();\n if (ownerComp) {\n var compOptions = ownerComp.getComponentOptions();\n this._$owner = ownerComp.classList;\n this._$defaultScope = compOptions.styleScope;\n this._$extraScope =\n compOptions.extraStyleScope === null ? undefined : compOptions.extraStyleScope;\n this._$rootScope = (_b = ownerComp.classList._$rootScope) !== null && _b !== void 0 ? _b : this._$defaultScope;\n }\n else {\n this._$owner = null;\n this._$defaultScope = StyleScopeManager.globalScope();\n this._$extraScope = undefined;\n this._$rootScope = undefined;\n }\n this._$alias = externalNameAlias;\n if (externalNameAlias) {\n var resolved_1 = Object.create(null);\n Object.keys(externalNameAlias).forEach(function (k) {\n resolved_1[k] = null;\n });\n this._$resolvedAlias = resolved_1;\n }\n else {\n this._$resolvedAlias = null;\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && elem.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n this._$prefixManager = (_c = elem.ownerShadowRoot) === null || _c === void 0 ? void 0 : _c.getHostNode().getRootBehavior().ownerSpace.styleScopeManager;\n }\n }\n /** @internal */\n ClassList.prototype._$resolvePrefixes = function (name, cb) {\n var _a;\n var resolvedAlias = (_a = this._$owner) === null || _a === void 0 ? void 0 : _a._$resolvedAlias;\n if (resolvedAlias && resolvedAlias[name] !== undefined) {\n var targets = resolvedAlias[name];\n this._$hasResolvedNames = true;\n if (targets) {\n for (var i = 0; i < targets.length; i += 1) {\n var target = targets[i];\n cb(target.scopeId, target.className);\n }\n }\n }\n else if (name[0] === '~') {\n cb(this._$rootScope, name.slice(1));\n }\n else if (name[0] === '^') {\n var n = name.slice(1);\n var owner = this._$owner;\n while (owner && n[0] === '^') {\n n = n.slice(1);\n owner = owner._$owner;\n }\n var scopeId = owner ? owner._$defaultScope : this._$rootScope;\n cb(scopeId, n);\n }\n else {\n if (this._$extraScope !== undefined) {\n cb(this._$extraScope, name);\n }\n cb(this._$defaultScope, name);\n }\n };\n /** @internal */\n ClassList.prototype._$updateResolvedAliases = function (name) {\n var _this = this;\n var slices = this._$alias[name];\n var resolved = [];\n if (slices) {\n slices.forEach(function (name) {\n _this._$resolvePrefixes(name, function (scopeId, className) {\n resolved.push({\n scopeId: scopeId,\n className: className,\n });\n });\n });\n }\n var changed = false;\n var prevResolved = this._$resolvedAlias[name];\n if (prevResolved) {\n if (prevResolved.length !== resolved.length) {\n changed = true;\n }\n else {\n for (var i = 0; i < prevResolved.length; i += 1) {\n var a = prevResolved[i];\n var b = resolved[i];\n if (a.scopeId !== b.scopeId || a.className !== b.className) {\n changed = true;\n break;\n }\n }\n }\n }\n else if (resolved.length > 0) {\n changed = true;\n }\n this._$resolvedAlias[name] = resolved;\n return changed;\n };\n /** @internal */\n ClassList.prototype._$hasAlias = function (name) {\n if (this._$alias && this._$alias[name] !== undefined) {\n return true;\n }\n return false;\n };\n /** @internal */\n ClassList.prototype._$setAlias = function (name, target) {\n if (this._$alias) {\n var slices = String(target).match(CLASS_NAME_REG_EXP) || null;\n this._$alias[name] = slices;\n var changed = this._$updateResolvedAliases(name);\n if (changed)\n this._$aliasDirty = true;\n }\n };\n /** @internal */\n ClassList.prototype._$spreadAliasUpdate = function () {\n if (this._$aliasDirty) {\n this._$aliasDirty = false;\n var callClassListUpdate_1 = function (elem) {\n var classList = elem.classList;\n if (classList) {\n var alias = classList._$alias;\n if (alias) {\n var changed_1 = false;\n Object.keys(alias).forEach(function (name) {\n if (classList._$updateResolvedAliases(name)) {\n changed_1 = true;\n }\n });\n if (changed_1) {\n var comp_1 = elem;\n if (comp_1._$external === false) {\n callClassListUpdate_1(comp_1.shadowRoot);\n }\n }\n }\n if (classList._$hasResolvedNames) {\n classList._$updateResolvedNames();\n }\n }\n var children = elem.childNodes;\n children.forEach(function (child) {\n if (child instanceof Element)\n callClassListUpdate_1(child);\n });\n };\n var comp = this._$elem;\n if (comp._$external === false) {\n callClassListUpdate_1(comp.shadowRoot);\n }\n }\n };\n /** @internal */\n ClassList.prototype._$updateResolvedNames = function () {\n var _this = this;\n var backendElement = this._$elem.getBackendElement();\n if (!backendElement)\n return;\n this._$hasResolvedNames = false;\n if (BM.DOMLIKE || (BM.DYNAMIC && this._$elem.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n backendElement.setAttribute('class', '');\n }\n else {\n ;\n backendElement.clearClasses();\n }\n this._$rawNames.forEach(function (name) {\n _this._$addClassToBackend(name, backendElement);\n });\n };\n /** @internal */\n ClassList.prototype._$classListAdd = function (name, scope, e) {\n var _a;\n if (BM.DOMLIKE || (BM.DYNAMIC && this._$elem.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n var prefix = scope === undefined ? '' : (_a = this._$prefixManager) === null || _a === void 0 ? void 0 : _a.queryName(scope);\n var val = prefix ? \"\".concat(prefix, \"--\").concat(name) : name;\n e.classList.add(val);\n }\n else {\n ;\n e.addClass(name, scope);\n }\n };\n /** @internal */\n ClassList.prototype._$classListRemove = function (name, scope, e) {\n var _a;\n if (BM.DOMLIKE || (BM.DYNAMIC && this._$elem.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n var prefix = scope && ((_a = this._$prefixManager) === null || _a === void 0 ? void 0 : _a.queryName(scope));\n var val = prefix ? \"\".concat(prefix, \"--\").concat(name) : name;\n e.classList.remove(val);\n }\n else {\n ;\n e.removeClass(name, scope);\n }\n };\n /** @internal */\n ClassList.prototype._$addClassToBackend = function (name, backendElement) {\n var _this = this;\n this._$resolvePrefixes(name, function (scopeId, className) {\n _this._$classListAdd(className, scopeId, backendElement);\n });\n };\n /** @internal */\n ClassList.prototype._$removeClassFromBackend = function (name, backendElement) {\n var _this = this;\n this._$resolvePrefixes(name, function (scopeId, className) {\n _this._$classListRemove(className, scopeId, backendElement);\n });\n };\n ClassList.prototype.toggle = function (name, force) {\n var _this = this;\n var slices = String(name).match(CLASS_NAME_REG_EXP) || null;\n if (slices) {\n var backendElement_1 = this._$elem.getBackendElement();\n slices.forEach(function (slice) {\n var index = _this._$rawNames.indexOf(name);\n var isAdd;\n if (force === undefined) {\n if (index < 0)\n isAdd = true;\n else\n isAdd = false;\n }\n else {\n isAdd = !!force;\n }\n var changed = false;\n if (isAdd) {\n if (index < 0) {\n _this._$rawNames.push(slice);\n if (backendElement_1)\n _this._$addClassToBackend(slice, backendElement_1);\n changed = true;\n }\n }\n else if (index >= 0) {\n _this._$rawNames.splice(index, 1);\n if (backendElement_1)\n _this._$removeClassFromBackend(slice, backendElement_1);\n changed = true;\n }\n if (changed) {\n var elem = _this._$elem;\n if (elem._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(elem, {\n type: 'properties',\n target: elem,\n attributeName: 'class',\n });\n }\n }\n });\n }\n };\n ClassList.prototype.contains = function (name) {\n for (var i = 0; i < this._$rawNames.length; i += 1) {\n var rn = this._$rawNames[i];\n if (rn[0] === '~') {\n var n = rn.slice(1);\n if (n === name)\n return true;\n }\n else if (rn[0] === '^') {\n var n = rn.slice(1);\n while (n[0] === '^') {\n n = n.slice(1);\n }\n if (n === name)\n return true;\n }\n else {\n if (rn === name)\n return true;\n }\n }\n return false;\n };\n /** Set class string */\n ClassList.prototype.setClassNames = function (names, index) {\n var _a;\n if (index === void 0) { index = 0; }\n var n;\n if (names === undefined || names === null)\n n = '';\n else\n n = String(names);\n var newRawNames = n.match(CLASS_NAME_REG_EXP) || [];\n while (this._$rawNamesSegmentSep.length < index) {\n this._$rawNamesSegmentSep.push(this._$rawNamesSegmentSep.length > 0\n ? this._$rawNamesSegmentSep[this._$rawNamesSegmentSep.length - 1]\n : this._$rawNames.length);\n }\n if (this._$rawNamesSegmentSep.length === 0) {\n this._$rawNames = newRawNames;\n }\n else {\n var segEnd = index < this._$rawNamesSegmentSep.length\n ? this._$rawNamesSegmentSep[index]\n : this._$rawNames.length;\n var segStart = index > 0 ? this._$rawNamesSegmentSep[index - 1] : 0;\n var segLen = segEnd - segStart;\n var lenDiff = newRawNames.length - segLen;\n for (var i = index; i < this._$rawNamesSegmentSep.length; i += 1) {\n this._$rawNamesSegmentSep[i] += lenDiff;\n }\n (_a = this._$rawNames).splice.apply(_a, __spreadArray([segStart, segLen], newRawNames, false));\n }\n this._$updateResolvedNames();\n var elem = this._$elem;\n if (elem._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(elem, {\n type: 'properties',\n target: elem,\n attributeName: 'class',\n });\n }\n };\n /** Returns space separated class string */\n ClassList.prototype.getClassNames = function () {\n return this._$rawNames ? this._$rawNames.join(' ') : '';\n };\n return ClassList;\n}());\nexport { ClassList };\n","import { triggerWarning } from './func_arr';\nvar skipWhiteSpace = function (state) {\n var str = state.str;\n while (state.cur < str.length) {\n var next = str[state.cur];\n if (next === ' ' || next === '\\n' || next === '\\r' || next === '\\t' || next === '\\f') {\n state.cur += 1;\n }\n else {\n break;\n }\n }\n return state.cur < str.length;\n};\nvar parseInteger = function (state) {\n var str = state.str;\n var ret = '';\n while (state.cur < str.length) {\n var next = str[state.cur];\n if (next >= '0' && next <= '9') {\n ret += next;\n }\n else {\n break;\n }\n state.cur += 1;\n }\n if (!ret) {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(state.cur, \" (illegal index)\"));\n }\n return parseInt(ret, 10);\n};\nvar parseFieldName = function (state) {\n var str = state.str;\n var ret = '';\n while (state.cur < str.length) {\n var next = str[state.cur];\n if (next === '\\\\') {\n // in this mode, `\\\\` always translate the next char to field name\n if (state.cur + 1 === str.length) {\n // empty\n }\n else {\n var next2 = str[state.cur + 1];\n ret += next2;\n state.cur += 1;\n }\n }\n else if (/^[_a-zA-Z]$/.test(next)) {\n ret += next;\n }\n else if (next >= '0' && next <= '9') {\n if (ret === '') {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(state.cur, \" (field name cannot start with digits)\"));\n }\n ret += next;\n }\n else {\n break;\n }\n state.cur += 1;\n }\n return ret;\n};\nvar parseFieldNameWithSpecialChars = function (state) {\n var str = state.str;\n var ret = '';\n while (state.cur < str.length) {\n var next = str[state.cur];\n if (next === '\\\\') {\n // in this mode, `\\\\` only escape recognized special chars. It is `\\\\` itself otherwise\n if (state.cur + 1 === str.length) {\n ret += '\\\\';\n state.cur += 1;\n }\n else {\n var next2 = str[state.cur + 1];\n if (next2 === '.' || next2 === '[' || next2 === ']' || next2 === '\\\\') {\n ret += next2;\n state.cur += 2;\n }\n else {\n ret += '\\\\';\n state.cur += 1;\n }\n }\n }\n else if (next === '.' || next === '[') {\n break;\n }\n else {\n ret += next;\n state.cur += 1;\n }\n }\n return ret;\n};\nvar parsePath = function (state) {\n var str = state.str;\n skipWhiteSpace(state);\n if (str[state.cur] === '*' && str[state.cur + 1] === '*') {\n state.cur += 2;\n return ['**'];\n }\n var seg = parseFieldName(state);\n if (!seg) {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(state.cur, \" (first field name illegal)\"));\n }\n var ret = [seg];\n while (state.cur < str.length) {\n if (!skipWhiteSpace(state))\n break;\n var next = str[state.cur];\n if (next === '.') {\n state.cur += 1;\n skipWhiteSpace(state);\n if (str[state.cur] === '*' && str[state.cur + 1] === '*') {\n ret.push('**');\n state.cur += 2;\n break;\n }\n var seg_1 = parseFieldName(state);\n if (!seg_1) {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(state.cur, \" (field name illegal)\"));\n }\n ret.push(seg_1);\n }\n else if (next === '[') {\n state.cur += 1;\n skipWhiteSpace(state);\n var index = parseInteger(state);\n skipWhiteSpace(state);\n var next2 = str[state.cur];\n if (next2 !== ']') {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(state.cur, \" (illegal index)\"));\n }\n state.cur += 1;\n ret.push(index);\n }\n else {\n break;\n }\n }\n return ret;\n};\nvar parsePathWithSpecialChars = function (state) {\n var str = state.str;\n var ret = [];\n while (state.cur < str.length) {\n var next = str[state.cur];\n if (next === '.') {\n state.cur += 1;\n var seg = parseFieldNameWithSpecialChars(state);\n if (seg !== '')\n ret.push(seg);\n }\n else if (next === '[') {\n state.cur += 1;\n var index = parseInteger(state);\n var next2 = str[state.cur];\n if (next2 !== ']' && state.cur < str.length) {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(state.cur, \" (illegal index)\"));\n }\n state.cur += 1;\n ret.push(index);\n }\n else {\n var seg = parseFieldNameWithSpecialChars(state);\n ret.push(seg);\n }\n }\n if (ret.length === 0)\n ret.push('');\n return ret;\n};\nvar parseCommaSepPaths = function (state) {\n var ret = [];\n ret.push(parsePath(state));\n skipWhiteSpace(state);\n while (state.str[state.cur] === ',') {\n state.cur += 1;\n ret.push(parsePath(state));\n skipWhiteSpace(state);\n }\n return ret;\n};\nexport var parseSinglePath = function (str) {\n try {\n var parseState = {\n str: str,\n cur: 0,\n };\n var ret = parsePathWithSpecialChars(parseState);\n // NOTE currently the end check is not required here, because prev calls always eats all chars\n // if (parseState.cur !== str.length) {\n // throw new Error(`data path descriptor \"${str}\" is illegal at char ${parseState.cur}`)\n // }\n return ret;\n }\n catch (err) {\n triggerWarning(err.message);\n return null;\n }\n};\nexport var parseMultiPaths = function (str) {\n try {\n if (Array.isArray(str)) {\n return str.map(function (str) { return parsePath({ str: str, cur: 0 }); });\n }\n var parseState = {\n str: str,\n cur: 0,\n };\n var ret = parseCommaSepPaths(parseState);\n if (parseState.cur !== str.length) {\n throw new Error(\"data path descriptor \\\"\".concat(str, \"\\\" is illegal at char \").concat(parseState.cur));\n }\n return ret;\n }\n catch (err) {\n triggerWarning(err.message);\n return [];\n }\n};\n","var deepCopyWithRecursion = function (src, visited) {\n if (typeof src === 'object' && src !== null) {\n var v = visited.get(src);\n if (v !== undefined)\n return v;\n if (Array.isArray(src)) {\n var dest_1 = [];\n visited.set(src, dest_1);\n for (var i = 0; i < src.length; i += 1) {\n dest_1[i] = deepCopyWithRecursion(src[i], visited);\n }\n return dest_1;\n }\n var dest = {};\n visited.set(src, dest);\n var keys = Object.keys(src);\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n dest[k] = deepCopyWithRecursion(src[k], visited);\n }\n return dest;\n }\n if (typeof src === 'symbol')\n return Symbol(src.description);\n return src;\n};\nexport var simpleDeepCopy = function (src) {\n if (typeof src === 'object' && src !== null) {\n if (Array.isArray(src)) {\n var dest_2 = [];\n for (var i = 0; i < src.length; i += 1) {\n dest_2[i] = simpleDeepCopy(src[i]);\n }\n return dest_2;\n }\n var dest = {};\n var keys = Object.keys(src);\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n dest[k] = simpleDeepCopy(src[k]);\n }\n return dest;\n }\n if (typeof src === 'symbol')\n return Symbol(src.description);\n return src;\n};\nexport var deepCopy = function (src, withRecursion) {\n if (withRecursion)\n return deepCopyWithRecursion(src, new WeakMap());\n return simpleDeepCopy(src);\n};\n","import { FuncArrWithMeta } from './func_arr';\nimport { Component, ShadowRoot, } from '.';\n/**\n * Event bubbling control\n */\nexport var EventBubbleStatus;\n(function (EventBubbleStatus) {\n EventBubbleStatus[EventBubbleStatus[\"Normal\"] = 0] = \"Normal\";\n EventBubbleStatus[EventBubbleStatus[\"NoDefault\"] = 1] = \"NoDefault\";\n})(EventBubbleStatus || (EventBubbleStatus = {}));\nvar relativeTimeStamp = Date.now();\nvar prevTimeStamp = relativeTimeStamp;\nvar getCurrentTimeStamp = function () {\n var ts = Date.now();\n if (ts < prevTimeStamp) {\n relativeTimeStamp += ts - prevTimeStamp;\n }\n prevTimeStamp = ts;\n return ts - relativeTimeStamp;\n};\nexport var MutLevel;\n(function (MutLevel) {\n MutLevel[MutLevel[\"None\"] = 0] = \"None\";\n MutLevel[MutLevel[\"Mut\"] = 1] = \"Mut\";\n MutLevel[MutLevel[\"Final\"] = 2] = \"Final\";\n})(MutLevel || (MutLevel = {}));\nexport var FinalChanged;\n(function (FinalChanged) {\n FinalChanged[FinalChanged[\"NotChanged\"] = 0] = \"NotChanged\";\n FinalChanged[FinalChanged[\"Failed\"] = 1] = \"Failed\";\n FinalChanged[FinalChanged[\"None\"] = 2] = \"None\";\n FinalChanged[FinalChanged[\"Final\"] = 3] = \"Final\";\n FinalChanged[FinalChanged[\"Mut\"] = 4] = \"Mut\";\n})(FinalChanged || (FinalChanged = {}));\n/** The target of an event */\nvar EventTarget = /** @class */ (function () {\n function EventTarget() {\n this.listeners = Object.create(null);\n this.captureListeners = null;\n }\n EventTarget.prototype.addListener = function (name, func, options) {\n if (options === void 0) { options = {}; }\n // eslint-disable-next-line no-nested-ternary\n var mutLevel = options.final ? 2 /* MutLevel.Final */ : options.mutated ? 1 /* MutLevel.Mut */ : 0 /* MutLevel.None */;\n var listeners;\n if (options.capture || options.useCapture) {\n if (this.captureListeners) {\n listeners = this.captureListeners;\n }\n else {\n listeners = Object.create(null);\n this.captureListeners = listeners;\n }\n }\n else {\n listeners = this.listeners;\n }\n var efa;\n var initialized;\n if (listeners[name]) {\n initialized = true;\n efa = listeners[name];\n }\n else {\n initialized = false;\n efa = listeners[name] = {\n mutCount: 0,\n finalCount: 0,\n funcArr: new FuncArrWithMeta(),\n };\n }\n efa.funcArr.add(func, mutLevel);\n if (mutLevel === 2 /* MutLevel.Final */) {\n efa.finalCount += 1;\n return initialized && efa.finalCount !== 1 ? 0 /* FinalChanged.NotChanged */ : 3 /* FinalChanged.Final */;\n }\n if (mutLevel === 1 /* MutLevel.Mut */) {\n efa.mutCount += 1;\n return initialized && !(efa.mutCount === 1 && efa.finalCount === 0)\n ? 0 /* FinalChanged.NotChanged */\n : 4 /* FinalChanged.Mut */;\n }\n return initialized ? 0 /* FinalChanged.NotChanged */ : 2 /* FinalChanged.None */;\n };\n EventTarget.prototype.removeListener = function (name, func, options) {\n if (options === void 0) { options = {}; }\n var listeners = options.capture || options.useCapture ? this.captureListeners : this.listeners;\n if (!listeners)\n return 1 /* FinalChanged.Failed */;\n var efa = listeners[name];\n if (!efa)\n return 1 /* FinalChanged.Failed */;\n var mutLevel = efa.funcArr.remove(func);\n if (mutLevel === null)\n return 1 /* FinalChanged.Failed */;\n if (mutLevel === 2 /* MutLevel.Final */) {\n efa.finalCount -= 1;\n // eslint-disable-next-line no-nested-ternary\n return efa.finalCount !== 0\n ? 0 /* FinalChanged.NotChanged */\n : efa.mutCount > 0\n ? 4 /* FinalChanged.Mut */\n : 2 /* FinalChanged.None */;\n }\n if (mutLevel === 1 /* MutLevel.Mut */) {\n efa.mutCount -= 1;\n return efa.mutCount !== 0 || efa.finalCount !== 0\n ? 0 /* FinalChanged.NotChanged */\n : 2 /* FinalChanged.None */;\n }\n return 0 /* FinalChanged.NotChanged */;\n };\n return EventTarget;\n}());\nexport { EventTarget };\nvar Event = /** @class */ (function () {\n function Event(name, detail, options) {\n if (options === void 0) { options = {}; }\n var ts = getCurrentTimeStamp();\n this.type = name;\n this.timeStamp = ts;\n this.detail = detail;\n this.bubbles = options.bubbles || false;\n this.composed = options.composed || false;\n this._$capturePhase = options.capturePhase || false;\n this._$eventBubblingControl = {\n stopped: false,\n mutated: false,\n noDefault: false,\n };\n this._$originalEvent = options.originalEvent;\n this._$dispatched = false;\n if (options.extraFields) {\n Object.assign(this, options.extraFields);\n }\n }\n Event.prototype.getEventBubbleStatus = function () {\n if (this._$eventBubblingControl.noDefault)\n return 1 /* EventBubbleStatus.NoDefault */;\n return 0 /* EventBubbleStatus.Normal */;\n };\n Event.prototype.wrapShadowedEvent = function (targetCaller, mark, currentTargetCaller) {\n var ret = Object.create(this);\n ret.target = targetCaller;\n ret.mark = mark;\n ret.currentTarget = currentTargetCaller;\n return ret;\n };\n Event.prototype.getOriginalEvent = function () {\n return this._$originalEvent;\n };\n Event.prototype.preventDefault = function () {\n this._$eventBubblingControl.noDefault = true;\n };\n Event.prototype.defaultPrevented = function () {\n return this._$eventBubblingControl.noDefault;\n };\n Event.prototype.stopPropagation = function () {\n this._$eventBubblingControl.stopped = true;\n };\n Event.prototype.propagationStopped = function () {\n return this._$eventBubblingControl.stopped;\n };\n Event.prototype.markMutated = function () {\n this._$eventBubblingControl.mutated = true;\n };\n Event.prototype.mutatedMarked = function () {\n return this._$eventBubblingControl.mutated;\n };\n Event.prototype.callListener = function (currentTarget, mark, target, isCapture) {\n var evName = this.type;\n var eventTarget = currentTarget._$eventTarget;\n if (!eventTarget)\n return;\n var listeners = isCapture ? eventTarget.captureListeners : eventTarget.listeners;\n if (!listeners)\n return;\n var efa = listeners[evName];\n if (!efa)\n return;\n var skipMut = this.mutatedMarked();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var targetCaller = target instanceof Component ? target.getMethodCaller() || target : target;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var currentTargetCaller = currentTarget instanceof Component\n ? currentTarget.getMethodCaller() || currentTarget\n : currentTarget;\n var ev = this.wrapShadowedEvent(targetCaller, mark, currentTargetCaller);\n var ret = efa.funcArr.call(currentTargetCaller, [ev], function (mulLevel) { return !skipMut || mulLevel !== 1 /* MutLevel.Mut */; }, target instanceof Component ? target : undefined);\n if (ret === false || efa.finalCount > 0) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n else if (efa.mutCount > 0) {\n ev.markMutated();\n }\n };\n Event.prototype.dispatch = function (target, externalTarget) {\n var _this = this;\n if (this._$dispatched) {\n throw new Error('Event cannot be dispatched twice');\n }\n this._$dispatched = true;\n var crossShadow = this.composed;\n var bubbles = this.bubbles;\n var inExternalOnly = externalTarget && !crossShadow;\n var eventBubblingControl = this._$eventBubblingControl;\n var forEachBubblePath = function (target, f) {\n var recShadow = function (target) {\n var currentTarget = target;\n var mark = target.collectMarks();\n for (;;) {\n if (f(currentTarget, target, mark) === false)\n return null;\n var next = void 0;\n if (crossShadow) {\n if (currentTarget instanceof ShadowRoot)\n return currentTarget.getHostNode();\n if (currentTarget.containingSlot === null)\n return null;\n if (currentTarget.containingSlot) {\n next = recShadow(currentTarget.containingSlot);\n }\n else {\n next = currentTarget.parentNode;\n while (next === null || next === void 0 ? void 0 : next._$inheritSlots) {\n next = next.parentNode;\n }\n }\n }\n else {\n next = currentTarget.parentNode;\n }\n if (!next)\n return null;\n currentTarget = next;\n }\n };\n var cur = target;\n for (;;) {\n var next = recShadow(cur);\n if (!next)\n break;\n cur = next;\n }\n };\n // capture phase\n if (this._$capturePhase && !eventBubblingControl.stopped && !inExternalOnly) {\n var bubblingPath_1 = [];\n forEachBubblePath(target, function (currentTarget, target, mark) {\n bubblingPath_1.push([currentTarget, target, mark]);\n });\n for (var i = bubblingPath_1.length - 1; i >= 0; i -= 1) {\n var _a = bubblingPath_1[i], currentTarget = _a[0], target_1 = _a[1], mark = _a[2];\n if (currentTarget._$eventTarget) {\n this.callListener(currentTarget, mark, target_1, true);\n if (eventBubblingControl.stopped)\n break;\n }\n }\n }\n // bubble phase in external component\n if (!eventBubblingControl.stopped && externalTarget) {\n if (target instanceof Component && target._$external) {\n ;\n target.shadowRoot.handleEvent(externalTarget, this);\n }\n }\n // bubble phase\n if (!eventBubblingControl.stopped && !inExternalOnly) {\n var atTarget_1 = true;\n forEachBubblePath(target, function (currentTarget, target, mark) {\n if (!atTarget_1 && currentTarget instanceof Component && currentTarget._$external) {\n var sr = currentTarget.shadowRoot;\n sr.handleEvent(sr.slot, _this);\n }\n atTarget_1 = false;\n if (currentTarget._$eventTarget) {\n _this.callListener(currentTarget, mark, target, false);\n }\n return bubbles && !eventBubblingControl.stopped;\n });\n }\n };\n Event.dispatchEvent = function (target, event) {\n return event.dispatch(target);\n };\n Event.dispatchExternalEvent = function (component, target, event) {\n return event.dispatch(component, target);\n };\n Event.triggerEvent = function (target, name, detail, options) {\n var ev = new Event(name, detail, options);\n Event.dispatchEvent(target, ev);\n };\n Event.triggerExternalEvent = function (component, target, name, detail, options) {\n var ev = new Event(name, detail, options);\n Event.dispatchExternalEvent(component, target, ev);\n };\n return Event;\n}());\nexport { Event };\n","import { Element, Component, VirtualNode, ShadowRoot } from '.';\nvar SegmentRelation;\n(function (SegmentRelation) {\n SegmentRelation[SegmentRelation[\"Child\"] = 0] = \"Child\";\n SegmentRelation[SegmentRelation[\"Descendant\"] = 1] = \"Descendant\";\n SegmentRelation[SegmentRelation[\"CrossShadowDescendant\"] = 2] = \"CrossShadowDescendant\";\n})(SegmentRelation || (SegmentRelation = {}));\n// eslint-disable-next-line arrow-body-style\nvar getOwnerSpace = function (node) {\n var _a;\n return (_a = node.ownerShadowRoot) === null || _a === void 0 ? void 0 : _a.getHostNode().getRootBehavior().ownerSpace;\n};\n/** A parsed selector that can be used in selector queries */\nvar ParsedSelector = /** @class */ (function () {\n function ParsedSelector(str) {\n this.unions = [];\n var union = String(str || '').split(',');\n for (var i = 0; i < union.length; i += 1) {\n var segments = union[i].split(/( |\\t|>+)/g);\n var parsedSegs = [];\n var relation = 1 /* SegmentRelation.Descendant */;\n var j = 0;\n for (; j < segments.length; j += 1) {\n var seg = segments[j];\n if (!seg || seg === ' ' || seg === '\\t' || seg === '>>')\n continue;\n if (seg[0] === '>') {\n if (relation !== 1 /* SegmentRelation.Descendant */)\n break;\n if (seg.length === 3) {\n relation = 2 /* SegmentRelation.CrossShadowDescendant */;\n }\n else {\n relation = 0 /* SegmentRelation.Child */;\n }\n continue;\n }\n var parsedSeg = ParsedSelector._$parseSegment(seg, relation);\n relation = 1 /* SegmentRelation.Descendant */;\n if (!parsedSeg)\n break;\n parsedSegs.push(parsedSeg);\n }\n if (j !== segments.length)\n continue;\n if (parsedSegs.length)\n this.unions.push(parsedSegs);\n }\n }\n ParsedSelector._$parseSegment = function (str, relation) {\n var matches = /^(#[_a-zA-Z][-_a-zA-Z0-9:]*|)((?:\\.-?[_a-zA-Z][-_a-zA-Z0-9]*)+|)$/.exec(str);\n if (!matches)\n return null;\n var id = matches[1].slice(1);\n var classes = matches[2].split('.');\n classes.shift();\n if (!id && !classes.length)\n return null;\n return {\n id: id,\n classes: classes,\n relation: relation,\n };\n };\n /** Whether the selector is empty */\n ParsedSelector.prototype.isEmpty = function () {\n return this.unions.length === 0;\n };\n ParsedSelector._$testSelectorSegment = function (root, ownerSpace, node, segments, offset, relation) {\n var _a;\n if (node === root)\n return false;\n var segment = segments[offset];\n // test whether current node matches\n var match = true;\n if (getOwnerSpace(node) !== ownerSpace)\n match = false;\n else if (segment.id && segment.id !== node.id)\n match = false;\n var classes = segment.classes;\n for (var i = 0; match && i < classes.length; i += 1) {\n if (!((_a = node.classList) === null || _a === void 0 ? void 0 : _a.contains(classes[i])))\n match = false;\n }\n if (!match && relation === 0 /* SegmentRelation.Child */)\n return false;\n var nextNode = node;\n if (match && offset === 0) {\n // if matches the first segment, check whether root is in the same shadow tree\n if (root === null)\n return true;\n for (nextNode = nextNode.parentNode; nextNode; nextNode = nextNode.parentNode) {\n if (nextNode === root)\n return true;\n }\n if (relation !== 2 /* SegmentRelation.CrossShadowDescendant */)\n return false;\n nextNode = node;\n match = false;\n }\n // check whether ancestors matches\n var nextRelation = match ? segment.relation : relation;\n do {\n if (!nextNode.parentNode) {\n if (nextRelation === 2 /* SegmentRelation.CrossShadowDescendant */) {\n nextNode = nextNode instanceof ShadowRoot ? nextNode.getHostNode() : null;\n }\n else if (relation === 2 /* SegmentRelation.CrossShadowDescendant */) {\n match = false;\n nextNode = nextNode instanceof ShadowRoot ? nextNode.getHostNode() : null;\n }\n else {\n nextNode = null;\n }\n }\n else {\n nextNode = nextNode.parentNode;\n }\n if (nextNode === root)\n nextNode = null;\n } while (nextNode instanceof VirtualNode);\n if (!nextNode)\n return false;\n if (match) {\n // if matches, try match ancestors\n var matchRes = ParsedSelector._$testSelectorSegment(root, ownerSpace, nextNode, segments, offset - 1, nextRelation);\n if (matchRes)\n return true;\n if (relation !== 2 /* SegmentRelation.CrossShadowDescendant */)\n return false;\n }\n return ParsedSelector._$testSelectorSegment(root, ownerSpace, nextNode, segments, offset, relation);\n };\n /**\n * Test whether the specified node matches the selector\n *\n * If `root` is specified, than the selector is match inside this subtree;\n * otherwise it match in the whole tree.\n */\n ParsedSelector.prototype.testSelector = function (root, node) {\n if (node instanceof VirtualNode)\n return false;\n var union = this.unions;\n var ownerSpace;\n if (root !== null) {\n ownerSpace = getOwnerSpace(root) || getOwnerSpace(node);\n }\n else {\n ownerSpace = getOwnerSpace(node);\n }\n if (ownerSpace === undefined)\n return false;\n for (var i = 0; i < union.length; i += 1) {\n var segments = union[i];\n var matched = ParsedSelector._$testSelectorSegment(root, ownerSpace, node, segments, segments.length - 1, 0 /* SegmentRelation.Child */);\n if (matched)\n return true;\n }\n return false;\n };\n /** Queries an element or elements that matches this selector */\n ParsedSelector.prototype.query = function (root, findOne) {\n var _this = this;\n var ret = [];\n var rec = function (root, node, findOne) {\n if (_this.testSelector(root, node)) {\n if (findOne)\n return node;\n ret.push(node);\n }\n if (node instanceof Component) {\n var shadowRoot = node.getShadowRoot();\n if (shadowRoot) {\n var r_1 = rec(root, shadowRoot, findOne);\n if (r_1 && findOne) {\n return r_1;\n }\n }\n }\n var children = node.childNodes;\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n if (child instanceof Element) {\n var r_2 = rec(root, child, findOne);\n if (r_2 && findOne) {\n return r_2;\n }\n }\n }\n return null;\n };\n var r = rec(root, root, findOne);\n if (findOne)\n return r;\n return ret;\n };\n return ParsedSelector;\n}());\nexport { ParsedSelector };\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { globalOptions } from './global_options';\nimport { MutationObserverTarget } from './mutation_observer';\nimport { Event, EventTarget, } from './event';\nimport { triggerWarning } from './func_arr';\nimport { ParsedSelector } from './selector';\nimport { BM, } from './backend/mode';\nimport { NativeNode, VirtualNode, ShadowRoot, Component, } from '.';\n/**\n * The \"style\" attribute and class list segments\n *\n * This allows different modules set the \"style\" attribute or the class list of an element\n * without overriding each other.\n * The final value is the concat of all segments.\n * When calling `setNodeStyle` or `setNodeClass` on an element,\n * a segment can be specified.\n */\nexport var StyleSegmentIndex;\n(function (StyleSegmentIndex) {\n /** The main style segment, generally managed by the template engine (or manually set) */\n StyleSegmentIndex[StyleSegmentIndex[\"MAIN\"] = 0] = \"MAIN\";\n /** The template style segment, preserved for template engine */\n StyleSegmentIndex[StyleSegmentIndex[\"TEMPLATE_EXTRA\"] = 1] = \"TEMPLATE_EXTRA\";\n /** The animation style segment, preserved for temporary transition */\n StyleSegmentIndex[StyleSegmentIndex[\"ANIMATION_EXTRA\"] = 2] = \"ANIMATION_EXTRA\";\n /** The temporary style segment, preserved for high priority styles */\n StyleSegmentIndex[StyleSegmentIndex[\"TEMP_EXTRA\"] = 3] = \"TEMP_EXTRA\";\n})(StyleSegmentIndex || (StyleSegmentIndex = {}));\n/**\n * A general element\n *\n * An element can be a `NativeNode` , a `Component` , or a `VirtualNode` .\n */\nvar Element = /** @class */ (function () {\n function Element() {\n throw new Error('Element cannot be constructed directly');\n }\n Element.prototype._$initialize = function (virtual, backendElement, owner, nodeTreeContext) {\n this._$backendElement = backendElement;\n this._$destroyOnDetach = false;\n this._$nodeTreeContext = nodeTreeContext;\n this._$nodeId = '';\n this._$nodeAttributes = null;\n this._$nodeSlot = '';\n this._$slotName = null;\n this._$slotElement = null;\n this._$slotValues = null;\n this._$subtreeSlotStart = null;\n this._$subtreeSlotEnd = null;\n this._$inheritSlots = false;\n this._$placeholderHandler = undefined;\n this._$virtual = virtual;\n this.dataset = {};\n this._$marks = null;\n this._$attached = false;\n this.classList = null;\n this._$styleSegments = [];\n this.parentNode = null;\n this.parentIndex = -1;\n this.childNodes = [];\n this.slotNodes = undefined;\n this.ownerShadowRoot = owner;\n this._$mutationObserverTarget = null;\n this._$eventTarget = new EventTarget();\n };\n Object.defineProperty(Element.prototype, \"$$\", {\n get: function () {\n return this._$backendElement;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"id\", {\n get: function () {\n return this._$nodeId;\n },\n set: function (x) {\n var _a, _b;\n var newId = String(x);\n if (this._$nodeId === newId)\n return;\n this._$nodeId = newId;\n if (this.ownerShadowRoot) {\n var host = this.ownerShadowRoot.getHostNode();\n this.ownerShadowRoot._$markIdCacheDirty();\n if (host.getComponentOptions().writeIdToDOM) {\n var idPrefix = host._$idPrefix;\n var val = idPrefix ? \"\".concat(idPrefix, \"--\").concat(newId) : newId;\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n var e = this._$backendElement;\n if (e)\n e.id = val;\n }\n else {\n ;\n (_a = this._$backendElement) === null || _a === void 0 ? void 0 : _a.setId(val);\n }\n }\n }\n if (globalOptions.writeExtraInfoToAttr) {\n (_b = this._$backendElement) === null || _b === void 0 ? void 0 : _b.setAttribute('exparser:info-attr-id', newId);\n }\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'id',\n });\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"slot\", {\n get: function () {\n return this._$nodeSlot;\n },\n set: function (x) {\n var newSlot = String(x);\n var oldSlot = this._$nodeSlot;\n if (oldSlot === newSlot)\n return;\n /* istanbul ignore if */\n if (this._$inheritSlots) {\n triggerWarning('slots-inherited nodes do not support \"slot\" attribute.');\n return;\n }\n this._$nodeSlot = newSlot;\n var slotParentShadowRoot = Element._$getParentHostShadowRoot(this.parentNode);\n if (slotParentShadowRoot) {\n var slotMode = slotParentShadowRoot.getSlotMode();\n /* istanbul ignore if */\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n triggerWarning('nodes inside dynamic slots should change binding slots through Element#setSlotElement.');\n return;\n }\n /* istanbul ignore if */\n if (slotMode === 0 /* SlotMode.Direct */) {\n triggerWarning('nodes inside direct slots should not change slot name.');\n return;\n }\n var slotUpdater = ShadowRoot._$updateSubtreeSlotNodes(this.parentNode, [this], slotParentShadowRoot, slotParentShadowRoot, this.parentIndex);\n slotUpdater === null || slotUpdater === void 0 ? void 0 : slotUpdater.removeSlotNodes();\n var oldSlot_1 = this.containingSlot;\n slotUpdater === null || slotUpdater === void 0 ? void 0 : slotUpdater.updateContainingSlot();\n var newSlot_1 = this.containingSlot;\n Element.insertChildReassign(this.parentNode, this, oldSlot_1, newSlot_1, this.parentIndex + 1);\n slotUpdater === null || slotUpdater === void 0 ? void 0 : slotUpdater.insertSlotNodes();\n }\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'slot',\n });\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"attributes\", {\n get: function () {\n var ret = [];\n if (this._$nodeAttributes) {\n Object.entries(this._$nodeAttributes).forEach(function (_a) {\n var name = _a[0], value = _a[1];\n ret.push({\n name: name,\n value: value,\n });\n });\n }\n return ret;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"class\", {\n get: function () {\n if (this.classList) {\n return this.classList.getClassNames();\n }\n return '';\n },\n set: function (classNames) {\n if (this.classList) {\n this.classList.setClassNames(classNames);\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Element.prototype, \"style\", {\n get: function () {\n return this._$styleSegments[0 /* StyleSegmentIndex.MAIN */] || '';\n },\n set: function (styleText) {\n this.setNodeStyle(styleText, 0 /* StyleSegmentIndex.MAIN */);\n },\n enumerable: false,\n configurable: true\n });\n // eslint-disable-next-line class-methods-use-this\n Element.prototype.asTextNode = function () {\n return null;\n };\n Element.prototype.asElement = function () {\n return this;\n };\n Element.prototype.asNativeNode = function () {\n if (this instanceof NativeNode) {\n return this;\n }\n return null;\n };\n Element.prototype.asVirtualNode = function () {\n if (this instanceof VirtualNode) {\n return this;\n }\n return null;\n };\n Element.prototype.asInstanceOf = function (componentDefinition) {\n if (this instanceof Component) {\n return this.asInstanceOf(componentDefinition);\n }\n return null;\n };\n /** Get the backend context */\n Element.prototype.getBackendContext = function () {\n return this._$nodeTreeContext;\n };\n /** Get the backend mode */\n Element.prototype.getBackendMode = function () {\n return this._$nodeTreeContext.mode;\n };\n /** Get the backend element */\n Element.prototype.getBackendElement = function () {\n return this._$backendElement;\n };\n /** Destroy the backend element */\n Element.prototype.destroyBackendElement = function () {\n if (this._$backendElement) {\n if (!(BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n ;\n this._$backendElement.release();\n }\n this._$backendElement = null;\n }\n };\n /** Destroy the backend element on next detach */\n Element.prototype.destroyBackendElementOnDetach = function () {\n this._$destroyOnDetach = true;\n };\n /** Cancel destroying backend element on detach */\n Element.prototype.cancelDestroyBackendElementOnDetach = function () {\n this._$destroyOnDetach = false;\n };\n /** Get whether the node is virtual or not */\n Element.prototype.isVirtual = function () {\n return this._$virtual;\n };\n /** Set the node class */\n Element.prototype.setNodeClass = function (classNames, index) {\n var _a;\n if (index === void 0) { index = 0; }\n (_a = this.classList) === null || _a === void 0 ? void 0 : _a.setClassNames(classNames, index);\n };\n /** Set the node style */\n Element.prototype.setNodeStyle = function (styleSegment, index) {\n if (index === void 0) { index = 0; }\n if (this._$styleSegments[index] === styleSegment)\n return;\n this._$styleSegments[index] = styleSegment;\n var style = this._$styleSegments.join(';');\n if (this._$backendElement) {\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this._$backendElement.setAttribute('style', style);\n }\n else {\n ;\n this._$backendElement.setStyle(style);\n }\n }\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'style',\n });\n }\n };\n Element.checkAndCallAttached = function (node) {\n var callFunc = function callFunc(node) {\n if (node instanceof Element && !node._$attached) {\n node._$attached = true;\n if (node instanceof Component) {\n node.triggerLifetime('attached', []);\n if (node._$relation) {\n node._$relation.triggerLinkEvent(2 /* RelationType.ParentNonVirtualNode */, false);\n node._$relation.triggerLinkEvent(4 /* RelationType.ParentComponent */, false);\n node._$relation.triggerLinkEvent(0 /* RelationType.Ancestor */, false);\n }\n if (node._$mutationObserverTarget) {\n MutationObserverTarget.callAttachObservers(node, {\n type: 'attachStatus',\n target: node,\n status: 'attached',\n });\n }\n var shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n }\n var childNodes = node.childNodes;\n for (var i = 0; i < childNodes.length; i += 1) {\n callFunc(childNodes[i]);\n }\n }\n };\n callFunc(node);\n };\n Element.checkAndCallDetached = function (node) {\n var callFunc = function callFunc(node) {\n if (node._$destroyOnDetach) {\n node.destroyBackendElement();\n }\n if (node instanceof Element && node._$attached) {\n if (node instanceof Component) {\n node.triggerLifetime('beforeDetach', []);\n }\n node.childNodes.forEach(callFunc);\n if (node instanceof Component) {\n var f = node._$placeholderHandler;\n if (f)\n f();\n var shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n node._$attached = false;\n node.triggerLifetime('detached', []);\n if (node._$relation) {\n node._$relation.triggerLinkEvent(2 /* RelationType.ParentNonVirtualNode */, true);\n node._$relation.triggerLinkEvent(4 /* RelationType.ParentComponent */, true);\n node._$relation.triggerLinkEvent(0 /* RelationType.Ancestor */, true);\n }\n if (node._$mutationObserverTarget) {\n MutationObserverTarget.callAttachObservers(node, {\n type: 'attachStatus',\n target: node,\n status: 'detached',\n });\n }\n }\n else {\n node._$attached = false;\n }\n }\n };\n callFunc(node);\n };\n Element.checkAndCallMoved = function (node) {\n var callFunc = function callFunc(node) {\n if (node instanceof Element && node._$attached) {\n node.childNodes.forEach(callFunc);\n if (node instanceof Component) {\n var shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n node.triggerLifetime('moved', []);\n if (node._$relation) {\n node._$relation.triggerLinkEvent(2 /* RelationType.ParentNonVirtualNode */, false);\n node._$relation.triggerLinkEvent(4 /* RelationType.ParentComponent */, false);\n node._$relation.triggerLinkEvent(0 /* RelationType.Ancestor */, false);\n }\n }\n }\n };\n callFunc(node);\n };\n Element.checkChildObservers = function (node, type, child) {\n var _a;\n var observer = node._$mutationObserverTarget;\n if (observer && (!((_a = observer.childObservers) === null || _a === void 0 ? void 0 : _a.empty) || observer.hasSubtreeListeners())) {\n var childList = [child];\n var childEventObj = void 0;\n if (type === 'add') {\n childEventObj = {\n type: 'childList',\n target: node,\n addedNodes: childList,\n };\n }\n else if (type === 'remove') {\n childEventObj = {\n type: 'childList',\n target: node,\n removedNodes: childList,\n };\n }\n else {\n childEventObj = {\n type: 'childList',\n target: node,\n addedNodes: childList,\n removedNodes: childList,\n };\n }\n MutationObserverTarget.callChildObservers(node, childEventObj);\n }\n };\n /**\n * Get whether a node has any subtree `MutationObserver` attached to it\n *\n * If there is, then tree update may have more performance impact.\n */\n Element.hasSubtreeMutationObservers = function (node) {\n var _a;\n return ((_a = node._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.hasSubtreeListeners()) || false;\n };\n /** @internal */\n Element._$insertChildReassignSlot = function (shadowRoot, name, oldSlot, newSlot) {\n if (!oldSlot) {\n var slotNodes_1 = [];\n shadowRoot.forEachNodeInSpecifiedSlot(null, function (node) {\n if (name !== null) {\n var slotName = node instanceof Element ? node._$nodeSlot : '';\n if (slotName !== name) {\n return;\n }\n }\n slotNodes_1.push(node);\n });\n for (var i = 0; i < slotNodes_1.length; i += 1) {\n var node = slotNodes_1[i];\n Element._$spliceSlotNodes(newSlot, -1, 0, [node]);\n Element._$updateContainingSlot(node, newSlot);\n if (!node._$inheritSlots)\n Element.insertChildReassign(node.parentNode, node, null, newSlot, node.parentIndex);\n }\n }\n else if (!newSlot) {\n var slotNodes = __spreadArray([], oldSlot.slotNodes, true);\n for (var i = 0; i < slotNodes.length; i += 1) {\n var node = slotNodes[i];\n Element._$spliceSlotNodes(oldSlot, 0, 1, undefined);\n Element._$updateContainingSlot(node, newSlot);\n if (!node._$inheritSlots)\n Element.insertChildReassign(node.parentNode, node, oldSlot, null, node.parentIndex);\n }\n }\n else {\n var slotNodes = __spreadArray([], oldSlot.slotNodes, true);\n for (var i = 0; i < slotNodes.length; i += 1) {\n var node = slotNodes[i];\n Element._$spliceSlotNodes(oldSlot, 0, 1, undefined);\n Element._$spliceSlotNodes(newSlot, -1, 0, [node]);\n Element._$updateContainingSlot(node, newSlot);\n if (!node._$inheritSlots)\n Element.insertChildReassign(node.parentNode, node, oldSlot, newSlot, node.parentIndex);\n }\n }\n };\n /** @internal */\n Element.insertChildReassign = function (shadowParent, child, oldSlot, newSlot, ideaPosIndex) {\n if (BM.SHADOW || (BM.DYNAMIC && shadowParent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n ;\n child._$backendElement.reassignContainingSlot(oldSlot ? oldSlot._$backendElement : null, newSlot ? newSlot._$backendElement : null);\n return;\n }\n if (oldSlot) {\n if (newSlot &&\n (BM.DOMLIKE || (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n // removal of in-tree elements are not needed for DOM backend\n // do nothing\n }\n else {\n var backendParent = Element.findNearestNonVirtual(oldSlot);\n if (backendParent) {\n var d = Element.countNonVirtual(child);\n if (d) {\n var before = d[0], removeCount = d[1];\n if (BM.DOMLIKE ||\n (BM.DYNAMIC && shadowParent.getBackendContext().mode === 3 /* BackendMode.Domlike */)) {\n var rel = before._$backendElement;\n for (var i = 1; i < removeCount; i += 1) {\n var next = rel.nextSibling;\n if (next)\n backendParent.removeChild(next);\n }\n if (removeCount > 0)\n backendParent.removeChild(rel);\n }\n else {\n ;\n backendParent.spliceRemove(before._$backendElement, removeCount);\n }\n }\n }\n }\n }\n if (newSlot) {\n Element.insertChildComposed(shadowParent, child, undefined, false, ideaPosIndex);\n }\n };\n // a helper for searching the nearest non-virtual ancestor\n Element.findNearestNonVirtual = function (p) {\n var cur = p;\n for (; cur === null || cur === void 0 ? void 0 : cur._$virtual;) {\n if (cur instanceof ShadowRoot) {\n cur = cur.getHostNode();\n continue;\n }\n if (cur.containingSlot !== undefined) {\n cur = cur.containingSlot;\n continue;\n }\n cur = cur.parentNode;\n }\n return cur ? cur._$backendElement : null;\n };\n Element.countNonVirtual = function (target) {\n var firstNode = null;\n var removeCount = 0;\n var recNonVirtual = function (c) {\n if (removeCount === 0)\n firstNode = c;\n removeCount += 1;\n };\n var rec = function (c) {\n if (c instanceof Element && c._$virtual) {\n c.forEachNonVirtualComposedChild(recNonVirtual);\n return;\n }\n recNonVirtual(c);\n };\n rec(target);\n return firstNode ? [firstNode, removeCount] : null;\n };\n /**\n * Iterate elements with their slots (slots-inherited nodes included)\n */\n Element.forEachNodeInSlot = function (node, f) {\n var rec = function (child) {\n if (f(child, child.containingSlot) === false)\n return false;\n if (child._$inheritSlots) {\n var childNodes = child.childNodes;\n for (var i = 0; i < childNodes.length; i += 1) {\n if (!rec(childNodes[i]))\n return false;\n }\n return true;\n }\n return true;\n };\n return rec(node);\n };\n /**\n * Iterate elements in specified slot (slots-inherited nodes included)\n */\n Element.forEachNodeInSpecificSlot = function (node, slot, f) {\n var rec = function (child) {\n if (child.containingSlot === slot) {\n if (f(child) === false)\n return false;\n }\n if (child._$inheritSlots) {\n var childNodes = child.childNodes;\n for (var i = 0; i < childNodes.length; i += 1) {\n if (!rec(childNodes[i]))\n return false;\n }\n return true;\n }\n return true;\n };\n return rec(node);\n };\n /**\n * Iterate elements with their slots (slots-inherited nodes NOT included)\n */\n Element.forEachSlotContentInSlot = function (node, f) {\n var rec = function (child) {\n if (child._$inheritSlots) {\n var childNodes = child.childNodes;\n for (var i = 0; i < childNodes.length; i += 1) {\n if (!rec(childNodes[i]))\n return false;\n }\n return true;\n }\n if (f(child, child.containingSlot) === false)\n return false;\n return true;\n };\n return rec(node);\n };\n /**\n * Iterate elements in specified slot (slots-inherited nodes NOT included)\n */\n Element.forEachSlotContentInSpecificSlot = function (node, slot, f) {\n var rec = function (child) {\n if (child._$inheritSlots) {\n var childNodes = child.childNodes;\n for (var i = 0; i < childNodes.length; i += 1) {\n if (!rec(childNodes[i]))\n return false;\n }\n return true;\n }\n if (child.containingSlot !== slot)\n return true;\n return f(child) !== false;\n };\n return rec(node);\n };\n /**\n * @internal\n * a helper for searching the first non-virtual node\n */\n Element._$findFirstNonVirtualChild = function (parent, index) {\n var inSlot = parent._$slotName !== null;\n var children = inSlot ? parent.slotNodes : parent.childNodes;\n if (index >= 0 && index < children.length) {\n var _loop_1 = function (i) {\n var ret = null;\n var recNonVirtual = function (c) {\n ret = c;\n return false;\n };\n var rec = function (c) {\n if (!inSlot && c._$inheritSlots) {\n var childNodes = c.childNodes;\n for (var i_1 = 0; i_1 < childNodes.length; i_1 += 1) {\n if (rec(childNodes[i_1]) === false)\n return false;\n }\n }\n if (c._$virtual) {\n return c.forEachNonVirtualComposedChild(recNonVirtual);\n }\n return recNonVirtual(c);\n };\n rec(children[i]);\n if (ret)\n return { value: ret };\n };\n for (var i = index; i < children.length; i += 1) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n }\n if (!parent._$virtual)\n return null;\n var containingSlot = parent.containingSlot;\n if (containingSlot === null)\n return null;\n if (containingSlot !== undefined) {\n return Element._$findFirstNonVirtualChild(containingSlot, parent.slotIndex + 1);\n }\n var cur = parent;\n if (parent instanceof ShadowRoot) {\n cur = parent.getHostNode();\n if (!cur._$virtual)\n return null;\n }\n var p = cur.parentNode;\n if (p) {\n return Element._$findFirstNonVirtualChild(p, cur.parentIndex + 1);\n }\n return null;\n };\n /**\n * @internal\n * A helper to find first non-virtual next sibling node\n * return null if no next sibling exists\n */\n Element._$findFirstNonVirtualSibling = function (element, newPosIndex) {\n var containingSlot = element.containingSlot;\n if (containingSlot === null)\n return null;\n if (containingSlot !== undefined) {\n if (!containingSlot._$virtual)\n return null;\n if (element.slotIndex !== undefined) {\n return Element._$findFirstNonVirtualChild(containingSlot, element.slotIndex + 1);\n }\n var insertPos = Element._$findSlotNodeInsertPosition(containingSlot, element, newPosIndex);\n return Element._$findFirstNonVirtualChild(containingSlot, insertPos);\n }\n var cur = element;\n if (element instanceof ShadowRoot) {\n cur = element.getHostNode();\n if (!cur._$virtual)\n return null;\n }\n var p = cur.parentNode;\n if (p) {\n return Element._$findFirstNonVirtualChild(p, newPosIndex);\n }\n return null;\n };\n Element.insertChildComposed = function (shadowParent, newChild, relChild, removal, newPosIndex) {\n var _a, _b, _c;\n var parentConverted = false;\n var cur = shadowParent;\n while (cur === null || cur === void 0 ? void 0 : cur._$inheritSlots) {\n parentConverted = true;\n cur = cur.parentNode;\n }\n if (!cur)\n return;\n var slotParent = cur;\n var context = slotParent._$nodeTreeContext;\n // detect whether it is in single-slot mode\n var sharedNonVirtualParent;\n if (slotParent instanceof Component) {\n if (slotParent._$external) {\n sharedNonVirtualParent = slotParent.shadowRoot.slot;\n }\n else {\n parentConverted = true;\n }\n }\n else {\n if (slotParent._$virtual)\n parentConverted = true;\n sharedNonVirtualParent = Element.findNearestNonVirtual(slotParent);\n }\n // a helper for grouping and slicing update\n var sharedFrag = null;\n var groupUpdate = function (sharedBackendParent, slot) {\n var backendParent = sharedBackendParent || (slot ? Element.findNearestNonVirtual(slot) : null);\n if (!(BM.DOMLIKE || (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n if (!backendParent) {\n return;\n }\n }\n var removeCount = 0;\n var before = null;\n // get the new child nodes of the backend\n var frag = null;\n var firstSlotNode = null;\n if (newChild) {\n var f_1 = sharedFrag ||\n (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)\n ? context.document.createDocumentFragment()\n : context.createFragment());\n sharedFrag = f_1;\n var recNonVirtual_1 = function (c) {\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n // domlike backend also\n ;\n f_1.appendChild(c._$backendElement);\n frag = f_1;\n };\n Element.forEachNodeInSpecificSlot(newChild, slot, function (node) {\n if (!firstSlotNode)\n firstSlotNode = node;\n if (!node._$virtual) {\n recNonVirtual_1(node);\n return;\n }\n node.forEachNonVirtualComposedChild(recNonVirtual_1);\n });\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n if (!backendParent) {\n sharedFrag = null;\n return;\n }\n }\n // get the proper relative node of the backend\n if (relChild || parentConverted) {\n if (removal && relChild) {\n Element.forEachSlotContentInSpecificSlot(relChild, slot, function (c) {\n if (c instanceof Element) {\n var d = Element.countNonVirtual(c);\n if (d) {\n if (!before)\n before = d[0];\n removeCount += d[1];\n }\n }\n else {\n if (!before)\n before = c;\n removeCount += 1;\n }\n return true;\n });\n if (removeCount === 0 && frag && firstSlotNode) {\n before = Element._$findFirstNonVirtualSibling(slot === undefined ? newChild : firstSlotNode, newPosIndex + 1);\n }\n }\n else if (frag && firstSlotNode) {\n before = Element._$findFirstNonVirtualSibling(slot === undefined ? newChild : firstSlotNode, newPosIndex);\n }\n }\n // actually do the backend operation\n if (frag) {\n if (before) {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n var rel = before._$backendElement;\n backendParent.insertBefore(frag, rel);\n for (var i = 1; i < removeCount; i += 1) {\n var next = rel.nextSibling;\n if (next)\n backendParent.removeChild(next);\n }\n if (removeCount > 0)\n backendParent.removeChild(rel);\n }\n else {\n ;\n backendParent.spliceBefore(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n before._$backendElement, removeCount, frag);\n }\n }\n else {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n ;\n backendParent.appendChild(frag);\n }\n else {\n ;\n backendParent.spliceAppend(frag);\n }\n }\n }\n else if (removeCount > 0) {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n var rel = before._$backendElement;\n for (var i = 1; i < removeCount; i += 1) {\n var next = rel.nextSibling;\n if (next)\n backendParent.removeChild(next);\n }\n if (removeCount > 0)\n backendParent.removeChild(rel);\n }\n else {\n ;\n backendParent.spliceRemove(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n before._$backendElement, removeCount);\n }\n }\n };\n // in single-slot mode, use a simpler update logic; otherwise use a slower one\n if (sharedNonVirtualParent !== undefined) {\n if (sharedNonVirtualParent === null) {\n // for nodes with no valid non-virtual parent, do nothing\n }\n else if (!parentConverted &&\n (!(newChild instanceof Element) || !newChild._$virtual) &&\n (!(relChild instanceof Element) || !relChild._$virtual)) {\n // for non-virtual children, use single child operation\n if (removal) {\n if (newChild) {\n ;\n sharedNonVirtualParent.replaceChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n // domlike backend also\n newChild._$backendElement, relChild._$backendElement);\n }\n else {\n ;\n sharedNonVirtualParent.removeChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n // domlike backend also\n relChild._$backendElement);\n }\n }\n else if (relChild) {\n ;\n sharedNonVirtualParent.insertBefore(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n // domlike backend also\n newChild._$backendElement, relChild._$backendElement);\n }\n else {\n ;\n sharedNonVirtualParent.appendChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n // domlike backend also\n newChild._$backendElement);\n }\n }\n else {\n // for node isn't a slot content, simply update\n groupUpdate(sharedNonVirtualParent, undefined);\n }\n }\n else if (!((newChild && newChild._$inheritSlots) || (removal && relChild && relChild._$inheritSlots))) {\n // faster update if none inherited slots\n if (newChild)\n groupUpdate(null, newChild.containingSlot);\n if (removal &&\n relChild &&\n (!newChild || relChild.containingSlot !== newChild.containingSlot)) {\n groupUpdate(null, relChild.containingSlot);\n }\n }\n else {\n // for multi-slots, find out each slot that needs update, and update them one by one\n var slotNodesSet_1 = new Set();\n if (removal && relChild) {\n Element.forEachSlotContentInSlot(relChild, function (node, slot) {\n slotNodesSet_1.add(slot);\n });\n }\n if (newChild) {\n Element.forEachSlotContentInSlot(newChild, function (node, slot) {\n slotNodesSet_1.add(slot);\n });\n }\n slotNodesSet_1.forEach(function (slot) { return groupUpdate(null, slot); });\n }\n if (!(BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */))) {\n if (sharedFrag)\n sharedFrag.release();\n }\n // write extra info if needed\n if (globalOptions.writeExtraInfoToAttr) {\n if (removal && relChild instanceof Element) {\n (_a = relChild._$backendElement) === null || _a === void 0 ? void 0 : _a.removeAttribute('exparser:info-in-slot-of');\n }\n if (newChild instanceof Element) {\n if (shadowParent instanceof Component) {\n (_b = newChild._$backendElement) === null || _b === void 0 ? void 0 : _b.setAttribute('exparser:info-in-slot-of', shadowParent._$componentInstanceId);\n }\n else {\n (_c = newChild._$backendElement) === null || _c === void 0 ? void 0 : _c.removeAttribute('exparser:info-in-slot-of');\n }\n }\n }\n };\n /**\n * @internal\n * @param move whether this insertion is a slot movement\n */\n Element._$updateSubtreeSlotsInsertion = function (node, slotStart, slotEnd, posIndex, move) {\n if (!slotStart || !slotEnd)\n return;\n var parent = node;\n // find a correct position to insert slot into double-linked slot list\n var insertSlotPrev = null;\n var insertSlotNext = null;\n var findFirstSlot = function (parent, posIndex) {\n if (parent._$subtreeSlotStart) {\n var childNodes = parent.childNodes;\n var index = posIndex + 1;\n var nextSiblingWithSlot = childNodes[index];\n while (nextSiblingWithSlot && !nextSiblingWithSlot._$subtreeSlotStart) {\n index += 1;\n nextSiblingWithSlot = childNodes[index];\n }\n if (nextSiblingWithSlot) {\n insertSlotNext = nextSiblingWithSlot._$subtreeSlotStart;\n insertSlotPrev = insertSlotNext.prev;\n }\n else {\n insertSlotPrev = parent._$subtreeSlotEnd;\n if (insertSlotPrev)\n insertSlotNext = insertSlotPrev.next;\n }\n return;\n }\n var cur = parent;\n var parentWithSubtreeSlot = parent.parentNode;\n while (parentWithSubtreeSlot && !parentWithSubtreeSlot._$subtreeSlotStart) {\n cur = parentWithSubtreeSlot;\n parentWithSubtreeSlot = parentWithSubtreeSlot.parentNode;\n }\n if (parentWithSubtreeSlot) {\n findFirstSlot(parentWithSubtreeSlot, cur.parentIndex);\n }\n };\n findFirstSlot(parent, posIndex);\n // insert into double linked list\n if (insertSlotPrev) {\n insertSlotPrev.next = slotStart;\n slotStart.prev = insertSlotPrev;\n }\n if (insertSlotNext) {\n insertSlotNext.prev = slotEnd;\n slotEnd.next = insertSlotNext;\n }\n // update ancestor's subtree slot start/end\n while (parent) {\n var changed = false;\n if (!parent._$subtreeSlotStart) {\n parent._$subtreeSlotStart = slotStart;\n parent._$subtreeSlotEnd = slotEnd;\n changed = true;\n }\n else if (parent._$subtreeSlotStart === insertSlotNext) {\n parent._$subtreeSlotStart = slotStart;\n changed = true;\n }\n else if (parent._$subtreeSlotEnd === insertSlotPrev) {\n parent._$subtreeSlotEnd = slotEnd;\n changed = true;\n }\n if (!changed || !parent.parentNode)\n break;\n parent = parent.parentNode;\n }\n var ownerShadowRoot = parent.ownerShadowRoot;\n if (ownerShadowRoot === null || ownerShadowRoot === void 0 ? void 0 : ownerShadowRoot.isConnected(parent)) {\n ownerShadowRoot._$applySlotsInsertion(slotStart, slotEnd, move);\n }\n };\n /**\n * @internal\n * @param move whether this removal is a slot movement, will fire an insertion (with move=true) after\n */\n Element._$updateSubtreeSlotsRemoval = function (node, slotStart, slotEnd, move) {\n if (!slotStart || !slotEnd)\n return;\n var parent = node;\n var removeSlotBefore = slotStart.prev;\n var removeSlotAfter = slotEnd.next;\n // remove from double linked list\n if (removeSlotBefore) {\n removeSlotBefore.next = removeSlotAfter;\n slotStart.prev = null;\n }\n if (removeSlotAfter) {\n removeSlotAfter.prev = removeSlotBefore;\n slotEnd.next = null;\n }\n // update parent subtree start/end\n while (parent) {\n var changed = false;\n if (parent._$subtreeSlotStart === slotStart && parent._$subtreeSlotEnd === slotEnd) {\n parent._$subtreeSlotStart = parent._$subtreeSlotEnd = null;\n changed = true;\n }\n if (parent._$subtreeSlotStart === slotStart) {\n parent._$subtreeSlotStart = removeSlotAfter;\n changed = true;\n }\n else if (parent._$subtreeSlotEnd === slotEnd) {\n parent._$subtreeSlotEnd = removeSlotBefore;\n changed = true;\n }\n if (!changed || !parent.parentNode)\n break;\n parent = parent.parentNode;\n }\n var ownerShadowRoot = parent.ownerShadowRoot;\n if (ownerShadowRoot === null || ownerShadowRoot === void 0 ? void 0 : ownerShadowRoot.isConnected(parent)) {\n ownerShadowRoot._$applySlotsRemoval(slotStart, slotEnd, move);\n }\n };\n /**\n * @internal\n * @param move whether this removal is a slot movement, will fire an insertion (with move=true) after\n */\n Element._$updateSubtreeSlotsReplacement = function (node, slotStart, slotEnd, oldSlotStart, oldSlotEnd, posIndex, move) {\n if (!slotStart || !slotEnd) {\n Element._$updateSubtreeSlotsRemoval(node, oldSlotStart, oldSlotEnd, move);\n return;\n }\n if (!oldSlotStart || !oldSlotEnd) {\n Element._$updateSubtreeSlotsInsertion(node, slotStart, slotEnd, posIndex, move);\n return;\n }\n var parent = node;\n var removeSlotBefore = oldSlotStart.prev;\n var removeSlotAfter = oldSlotEnd.next;\n // replace in double linked list\n if (removeSlotBefore) {\n removeSlotBefore.next = slotStart;\n slotStart.prev = removeSlotBefore;\n oldSlotStart.prev = null;\n }\n if (removeSlotAfter) {\n removeSlotAfter.prev = slotEnd;\n slotEnd.next = removeSlotAfter;\n oldSlotEnd.next = null;\n }\n // update parent subtree start/end\n while (parent) {\n var changed = false;\n if (parent._$subtreeSlotStart === oldSlotStart) {\n parent._$subtreeSlotStart = slotStart;\n changed = true;\n }\n if (parent._$subtreeSlotEnd === oldSlotEnd) {\n parent._$subtreeSlotEnd = slotEnd;\n changed = true;\n }\n if (!changed || !parent.parentNode)\n break;\n parent = parent.parentNode;\n }\n var ownerShadowRoot = parent.ownerShadowRoot;\n if (ownerShadowRoot === null || ownerShadowRoot === void 0 ? void 0 : ownerShadowRoot.isConnected(parent)) {\n ownerShadowRoot._$applySlotsRemoval(oldSlotStart, oldSlotEnd, false);\n ownerShadowRoot._$applySlotsInsertion(slotStart, slotEnd, move);\n }\n };\n Element.insertChildSingleOperation = function (parent, newChild, oriPosIndex, replace) {\n var _a, _b, _c, _d, _e;\n /* istanbul ignore if */\n if (newChild && parent.ownerShadowRoot !== newChild.ownerShadowRoot) {\n throw new Error('Cannot move the node from one shadow tree to another shadow tree.');\n }\n var posIndex = oriPosIndex;\n var relChild = posIndex >= 0 ? parent.childNodes[posIndex] : undefined;\n var removal;\n if (replace) {\n if (!relChild) {\n removal = false;\n }\n else if (newChild === relChild) {\n removal = false;\n }\n else {\n removal = true;\n }\n }\n else {\n removal = false;\n }\n if (!removal && !newChild)\n return;\n // change the parent of newChild\n var oldParent;\n if (newChild) {\n oldParent = newChild.parentNode;\n if (oldParent) {\n var childNodes_1 = oldParent.childNodes;\n var oldPosIndex = newChild.parentIndex;\n childNodes_1.splice(oldPosIndex, 1);\n for (var i = oldPosIndex; i < childNodes_1.length; i += 1) {\n childNodes_1[i].parentIndex = i;\n }\n newChild.parentIndex = -1;\n if (oldParent === parent && oldPosIndex < posIndex)\n posIndex -= 1;\n var containingSlotUpdater = ShadowRoot._$updateSubtreeSlotNodes(parent, [newChild], null, Element._$getParentHostShadowRoot(oldParent), posIndex);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n if (BM.DOMLIKE || (BM.DYNAMIC && parent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n // removal of in-tree elements are not needed for DOM backend\n // do nothing\n }\n else if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n ;\n (_a = oldParent._$backendElement) === null || _a === void 0 ? void 0 : _a.removeChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n newChild._$backendElement, oldPosIndex);\n }\n else {\n Element.insertChildComposed(oldParent, null, newChild, true, oldPosIndex);\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n }\n newChild.parentNode = parent;\n if (newChild instanceof Element && oldParent !== parent) {\n if (oldParent)\n (_b = oldParent._$mutationObserverTarget) === null || _b === void 0 ? void 0 : _b.detachChild(newChild);\n (_c = parent._$mutationObserverTarget) === null || _c === void 0 ? void 0 : _c.attachChild(newChild);\n }\n }\n else {\n oldParent = null;\n }\n // update containingSlot\n var parentComponentShadowRoot = Element._$getParentHostShadowRoot(parent);\n var newChildContainingSlotUpdater = newChild\n ? ShadowRoot._$updateSubtreeSlotNodes(parent, [newChild], parentComponentShadowRoot, null, posIndex)\n : null;\n var relChildContainingSlotUpdater = relChild && removal\n ? ShadowRoot._$updateSubtreeSlotNodes(parent, [relChild], null, parentComponentShadowRoot, posIndex)\n : null;\n newChildContainingSlotUpdater === null || newChildContainingSlotUpdater === void 0 ? void 0 : newChildContainingSlotUpdater.updateContainingSlot();\n relChildContainingSlotUpdater === null || relChildContainingSlotUpdater === void 0 ? void 0 : relChildContainingSlotUpdater.removeSlotNodes();\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n if (removal) {\n if (newChild) {\n ;\n parent._$backendElement.replaceChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n newChild._$backendElement, relChild._$backendElement, posIndex);\n }\n else {\n ;\n parent._$backendElement.removeChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n relChild._$backendElement, posIndex);\n }\n }\n else if (relChild) {\n ;\n parent._$backendElement.insertBefore(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n newChild._$backendElement, relChild._$backendElement, posIndex);\n }\n else {\n ;\n parent._$backendElement.appendChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n newChild._$backendElement);\n }\n }\n }\n else {\n Element.insertChildComposed(parent, newChild, relChild, removal, posIndex);\n }\n newChildContainingSlotUpdater === null || newChildContainingSlotUpdater === void 0 ? void 0 : newChildContainingSlotUpdater.insertSlotNodes();\n relChildContainingSlotUpdater === null || relChildContainingSlotUpdater === void 0 ? void 0 : relChildContainingSlotUpdater.updateContainingSlot();\n // remove parent of relChild if needed\n if (removal && relChild) {\n if (relChild instanceof Element) {\n (_d = parent._$mutationObserverTarget) === null || _d === void 0 ? void 0 : _d.detachChild(relChild);\n }\n relChild.parentNode = null;\n relChild.parentIndex = -1;\n }\n // handling child nodes list\n var childNodes = parent.childNodes;\n if (newChild) {\n if (posIndex < 0) {\n childNodes.push(newChild);\n newChild.parentIndex = childNodes.length - 1;\n }\n else if (removal) {\n childNodes[posIndex] = newChild;\n newChild.parentIndex = posIndex;\n }\n else {\n childNodes.splice(posIndex, 0, newChild);\n for (var i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n }\n else if (removal) {\n childNodes.splice(posIndex, 1);\n for (var i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n // update subtree slots\n var newChildSubtreeSlotStart = newChild ? newChild._$subtreeSlotStart : null;\n var newChildSubtreeSlotEnd = newChild ? newChild._$subtreeSlotEnd : null;\n var relChildSubtreeSlotStart = relChild ? relChild._$subtreeSlotStart : null;\n var relChildSubtreeSlotEnd = relChild ? relChild._$subtreeSlotEnd : null;\n if (newChild) {\n if (oldParent) {\n Element._$updateSubtreeSlotsRemoval(oldParent, newChildSubtreeSlotStart, newChildSubtreeSlotEnd, true);\n }\n if (removal) {\n Element._$updateSubtreeSlotsReplacement(parent, newChildSubtreeSlotStart, newChildSubtreeSlotEnd, relChildSubtreeSlotStart, relChildSubtreeSlotEnd, posIndex, !!oldParent);\n }\n else {\n Element._$updateSubtreeSlotsInsertion(parent, newChildSubtreeSlotStart, newChildSubtreeSlotEnd, posIndex, !!oldParent);\n }\n }\n else if (removal && relChild) {\n Element._$updateSubtreeSlotsRemoval(parent, relChildSubtreeSlotStart, relChildSubtreeSlotEnd, false);\n }\n // update id and slot cache if needed\n (_e = parent.ownerShadowRoot) === null || _e === void 0 ? void 0 : _e._$markIdCacheDirty();\n // call life-times\n if (removal) {\n Element.checkAndCallDetached(relChild);\n Element.checkChildObservers(parent, 'remove', relChild);\n }\n if (newChild) {\n if (oldParent === null || oldParent === void 0 ? void 0 : oldParent._$attached) {\n if (parent._$attached) {\n Element.checkAndCallMoved(newChild);\n }\n else {\n Element.checkAndCallDetached(newChild);\n }\n }\n else if (parent._$attached) {\n Element.checkAndCallAttached(newChild);\n }\n if (oldParent === parent) {\n Element.checkChildObservers(parent, 'move', newChild);\n }\n else {\n if (oldParent) {\n Element.checkChildObservers(oldParent, 'remove', newChild);\n }\n Element.checkChildObservers(parent, 'add', newChild);\n }\n }\n };\n Element.insertChildBatchRemoval = function (parent, posIndex, count) {\n var _a, _b;\n var relChild = parent.childNodes[posIndex];\n var parentComponent = parent;\n while (parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent._$inheritSlots)\n parentComponent = parentComponent.parentNode;\n var parentComponentShadowRoot = parentComponent instanceof Component && !parentComponent._$external\n ? parentComponent.shadowRoot\n : null;\n // handling child nodes list\n var childNodes = parent.childNodes;\n var relChildren = childNodes.splice(posIndex, count);\n for (var i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n var containingSlotUpdater = ShadowRoot._$updateSubtreeSlotNodes(parent, relChildren, null, parentComponentShadowRoot, posIndex);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n ;\n parent._$backendElement.spliceRemove(relChild._$backendElement, count);\n }\n }\n else {\n for (var i = count - 1; i >= 0; i -= 1) {\n Element.insertChildComposed(parent, null, relChildren[i], true, i);\n }\n }\n // remove parent\n for (var i = 0; i < count; i += 1) {\n var relChild_1 = relChildren[i];\n relChild_1.parentNode = null;\n relChild_1.parentIndex = -1;\n if (relChild_1 instanceof Element) {\n (_a = parent._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.detachChild(relChild_1);\n }\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n // update subtree slot\n var subtreeSlotStart = null;\n var subtreeSlotEnd = null;\n for (var i = 0; i < count; i += 1) {\n var relChild_2 = relChildren[i];\n if (!subtreeSlotStart)\n subtreeSlotStart = relChild_2._$subtreeSlotStart;\n if (relChild_2._$subtreeSlotEnd)\n subtreeSlotEnd = relChild_2._$subtreeSlotEnd;\n }\n Element._$updateSubtreeSlotsRemoval(parent, subtreeSlotStart, subtreeSlotEnd, false);\n // update id and slot cache if needed\n (_b = parent.ownerShadowRoot) === null || _b === void 0 ? void 0 : _b._$markIdCacheDirty();\n // call life-times\n for (var i = 0; i < count; i += 1) {\n var relChild_3 = relChildren[i];\n Element.checkAndCallDetached(relChild_3);\n Element.checkChildObservers(parent, 'remove', relChild_3);\n }\n };\n Element.insertChildBatchInsertion = function (parent, newChildList, posIndex) {\n var _a, _b;\n var relChild = posIndex >= 0 ? parent.childNodes[posIndex] : undefined;\n // update containingSlot\n var parentComponent = parent;\n while (parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent._$inheritSlots)\n parentComponent = parentComponent.parentNode;\n var parentComponentShadowRoot = parentComponent instanceof Component && !parentComponent._$external\n ? parentComponent.shadowRoot\n : null;\n // change the parent of newChild\n var frag;\n if ((BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) &&\n newChildList.length >= 5) {\n var backendContext = parent.getBackendContext();\n frag = backendContext.createFragment();\n }\n else {\n frag = null;\n }\n for (var i = 0; i < newChildList.length; i += 1) {\n var newChild = newChildList[i];\n /* istanbul ignore if */\n if (parent.ownerShadowRoot !== newChild.ownerShadowRoot) {\n throw new Error('Cannot move the node from one shadow tree to another shadow tree.');\n }\n var oldParent = newChild.parentNode;\n /* istanbul ignore if */\n if (oldParent) {\n throw new Error('Cannot batch-insert the node which already has a parent.');\n }\n newChild.parentNode = parent;\n if (newChild instanceof Element) {\n (_a = parent._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.attachChild(newChild);\n }\n if ((BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) && frag) {\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n var be = newChild._$backendElement;\n frag.appendChild(be);\n }\n }\n // update containingSlot\n var containingSlotUpdater = ShadowRoot._$updateSubtreeSlotNodes(parent, newChildList, parentComponentShadowRoot, null, posIndex);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n if (frag) {\n if (relChild) {\n ;\n parent._$backendElement.spliceBefore(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n relChild._$backendElement, 0, frag);\n }\n else {\n ;\n parent._$backendElement.spliceAppend(frag);\n }\n frag.release();\n }\n else {\n if (relChild) {\n for (var i = 0; i < newChildList.length; i += 1) {\n var newChild = newChildList[i];\n parent._$backendElement.insertBefore(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n newChild._$backendElement, relChild._$backendElement);\n }\n }\n else {\n for (var i = 0; i < newChildList.length; i += 1) {\n var newChild = newChildList[i];\n parent._$backendElement.appendChild(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n newChild._$backendElement);\n }\n }\n }\n }\n }\n else {\n var pos = posIndex >= 0 ? posIndex : parent.childNodes.length;\n for (var i = 0; i < newChildList.length; i += 1) {\n var newChild = newChildList[i];\n Element.insertChildComposed(parent, newChild, relChild, false, pos);\n }\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.insertSlotNodes();\n // handling child nodes list\n var childNodes = parent.childNodes;\n if (relChild) {\n childNodes.splice.apply(childNodes, __spreadArray([posIndex, 0], newChildList, false));\n for (var i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n else {\n childNodes.push.apply(childNodes, newChildList);\n for (var i = childNodes.length - newChildList.length; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n // update subtree slot\n var subtreeSlotStart = null;\n var subtreeSlotEnd = null;\n for (var i = 0; i < newChildList.length; i += 1) {\n var newChild = newChildList[i];\n var newChildSubtreeSlotStart = newChild._$subtreeSlotStart;\n var newChildSubtreeSlotEnd = newChild._$subtreeSlotEnd;\n if (newChildSubtreeSlotStart) {\n if (subtreeSlotEnd) {\n newChildSubtreeSlotStart.prev = subtreeSlotEnd;\n subtreeSlotEnd.next = newChildSubtreeSlotStart;\n subtreeSlotEnd = newChildSubtreeSlotEnd;\n }\n else {\n subtreeSlotStart = newChildSubtreeSlotStart;\n subtreeSlotEnd = newChildSubtreeSlotEnd;\n }\n }\n }\n Element._$updateSubtreeSlotsInsertion(parent, subtreeSlotStart, subtreeSlotEnd, posIndex + newChildList.length - 1, false);\n // update id and slot cache if needed\n (_b = parent.ownerShadowRoot) === null || _b === void 0 ? void 0 : _b._$markIdCacheDirty();\n // call life-times\n for (var i = 0; i < newChildList.length; i += 1) {\n var newChild = newChildList[i];\n if (parent._$attached) {\n Element.checkAndCallAttached(newChild);\n }\n Element.checkChildObservers(parent, 'add', newChild);\n }\n };\n Element.insertChildPlaceholderReplace = function (parent, posIndex, replacer) {\n var _a;\n var _b, _c, _d, _e, _f, _g, _h;\n /* istanbul ignore if */\n if (replacer && parent.ownerShadowRoot !== replacer.ownerShadowRoot) {\n throw new Error('Cannot move the node from one shadow tree to another shadow tree.');\n }\n /* istanbul ignore if */\n if (replacer.parentNode) {\n throw new Error('Cannot replace with the node which already has a parent.');\n }\n var placeholder = parent.childNodes[posIndex];\n /* istanbul ignore if */\n if (!(placeholder instanceof Element)) {\n throw new Error('Cannot replace on text nodes.');\n }\n /* istanbul ignore if */\n if (placeholder._$slotName !== null || replacer._$slotName !== null) {\n throw new Error('Cannot replace on slot nodes.');\n }\n if (placeholder === replacer)\n return;\n // change the parent of replacer's children\n var frag;\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n var backendContext = parent.getBackendContext();\n frag = backendContext.createFragment();\n }\n else {\n frag = null;\n }\n var replacedChildren = placeholder.childNodes;\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (replacedChildren.length > 0) {\n ;\n (_b = placeholder._$backendElement) === null || _b === void 0 ? void 0 : _b.spliceRemove(\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n replacedChildren[0]._$backendElement, replacedChildren.length);\n }\n }\n for (var i = 0; i < replacedChildren.length; i += 1) {\n var child = replacedChildren[i];\n if (BM.DOMLIKE || (BM.DYNAMIC && parent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n // removal of in-tree elements are not needed for DOM backend\n // do nothing\n }\n else if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n // since `TextNode` also has `backendElement` private field, just make it as `Element`\n var be = child._$backendElement;\n frag.appendChild(be);\n }\n else {\n Element.insertChildComposed(placeholder, null, child, true, i);\n }\n child.parentNode = replacer;\n if (child instanceof Element) {\n (_c = placeholder._$mutationObserverTarget) === null || _c === void 0 ? void 0 : _c.detachChild(child);\n (_d = parent._$mutationObserverTarget) === null || _d === void 0 ? void 0 : _d.attachChild(child);\n }\n }\n // change the parent\n placeholder.parentNode = null;\n placeholder.parentIndex = -1;\n replacer.parentNode = parent;\n // update containingSlot\n var placeholderContainingSlot = placeholder.containingSlot;\n if (placeholderContainingSlot !== undefined) {\n Element._$updateContainingSlot(placeholder, undefined);\n Element._$updateContainingSlot(replacer, placeholderContainingSlot);\n }\n var containingSlotUpdater = replacedChildren.length\n ? ShadowRoot._$updateSubtreeSlotNodes(replacer, replacedChildren, Element._$getParentHostShadowRoot(replacer), Element._$getParentHostShadowRoot(placeholder), 0)\n : null;\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n // handling child nodes list for parent\n parent.childNodes[posIndex] = replacer;\n replacer.parentIndex = posIndex;\n // spread in composed tree\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (parent._$backendElement) {\n ;\n parent._$backendElement.replaceChild(replacer._$backendElement, placeholder._$backendElement, posIndex);\n (_e = replacer._$backendElement) === null || _e === void 0 ? void 0 : _e.spliceAppend(frag);\n }\n ;\n frag.release();\n }\n else {\n if (placeholder.isVirtual()) {\n // virtual placeholder does not need to remove\n Element.insertChildComposed(parent, replacer, undefined, false, posIndex);\n }\n else {\n Element.insertChildComposed(parent, replacer, placeholder, true, posIndex);\n }\n for (var i = 0; i < replacedChildren.length; i += 1) {\n var child = replacedChildren[i];\n Element.insertChildComposed(replacer, child, undefined, false, i);\n }\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.insertSlotNodes();\n // update subtree slots\n // (assume that placeholder and replacer will never be slot node)\n replacer._$subtreeSlotStart = placeholder._$subtreeSlotStart;\n replacer._$subtreeSlotEnd = placeholder._$subtreeSlotEnd;\n (_f = parent._$mutationObserverTarget) === null || _f === void 0 ? void 0 : _f.detachChild(placeholder);\n (_g = parent._$mutationObserverTarget) === null || _g === void 0 ? void 0 : _g.attachChild(replacer);\n // handling child nodes list for replacer\n (_a = replacer.childNodes).push.apply(_a, placeholder.childNodes);\n for (var i = replacer.childNodes.length - placeholder.childNodes.length; i < replacer.childNodes.length; i += 1) {\n replacer.childNodes[i].parentIndex = i;\n }\n // handling child nodes list for placeholder\n placeholder.childNodes = [];\n // update id and slot cache if needed\n (_h = parent.ownerShadowRoot) === null || _h === void 0 ? void 0 : _h._$markIdCacheDirty();\n // call life-times\n if (parent._$attached) {\n Element.checkAndCallDetached(placeholder);\n Element.checkChildObservers(parent, 'remove', placeholder);\n Element.checkAndCallAttached(replacer);\n Element.checkChildObservers(parent, 'add', replacer);\n for (var i = 0; i < replacedChildren.length; i += 1) {\n var child = replacedChildren[i];\n Element.checkAndCallMoved(child);\n Element.checkChildObservers(parent, 'move', child);\n }\n }\n };\n Element.prototype.appendChild = function (child) {\n Element.insertChildSingleOperation(this, child, this.childNodes.length, false);\n };\n Element.prototype.insertChildAt = function (child, index) {\n Element.insertChildSingleOperation(this, child, index, false);\n };\n Element.prototype.insertBefore = function (child, before) {\n var index = before ? before.parentIndex : -1;\n Element.insertChildSingleOperation(this, child, index, false);\n };\n Element.prototype.removeChildAt = function (index) {\n Element.insertChildSingleOperation(this, null, index, true);\n };\n Element.prototype.removeChild = function (child) {\n var index = child.parentIndex;\n Element.insertChildSingleOperation(this, null, index, true);\n };\n Element.prototype.replaceChildAt = function (child, index) {\n Element.insertChildSingleOperation(this, child, index, true);\n };\n Element.prototype.replaceChild = function (child, relChild) {\n var index = relChild.parentIndex;\n Element.insertChildSingleOperation(this, child, index, true);\n };\n Element.prototype.insertChildren = function (children, index) {\n Element.insertChildBatchInsertion(this, children, index);\n };\n Element.prototype.removeChildren = function (index, count) {\n Element.insertChildBatchRemoval(this, index, count);\n };\n Element.prototype.selfReplaceWith = function (replaceWith) {\n var parent = this.parentNode;\n if (parent) {\n Element.insertChildPlaceholderReplace(parent, this.parentIndex, replaceWith);\n }\n };\n /** @internal */\n Element._$generateIdMap = function (node) {\n var idMap = Object.create(null);\n var dfs = function dfs(node) {\n if (node instanceof Element) {\n var nodeId = node._$nodeId;\n if (nodeId) {\n if (!idMap[nodeId])\n idMap[nodeId] = node;\n }\n node.childNodes.forEach(dfs);\n }\n };\n dfs(node);\n return idMap;\n };\n /** Trigger an event on the element */\n Element.prototype.triggerEvent = function (name, detail, options) {\n Event.triggerEvent(this, name, detail, options);\n };\n /** Trigger an event with specified event object on the element */\n Element.prototype.dispatchEvent = function (ev) {\n Event.dispatchEvent(this, ev);\n };\n /* @internal */\n Element.prototype._$setListenerStats = function (name, finalChanged, options) {\n if (options === void 0) { options = {}; }\n if (!this._$backendElement)\n return;\n var capture = !!options.capture || !!options.useCapture;\n var mutLevel;\n switch (finalChanged) {\n case 2 /* FinalChanged.None */:\n mutLevel = 0 /* MutLevel.None */;\n break;\n case 4 /* FinalChanged.Mut */:\n mutLevel = 1 /* MutLevel.Mut */;\n break;\n case 3 /* FinalChanged.Final */:\n mutLevel = 2 /* MutLevel.Final */;\n break;\n default:\n return;\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this._$nodeTreeContext.setListenerStats(this._$backendElement, name, capture, mutLevel);\n }\n else {\n ;\n this._$backendElement.setListenerStats(name, capture, mutLevel);\n }\n };\n /** Add an event listener on the element */\n Element.prototype.addListener = function (name, func, options) {\n var finalChanged = this._$eventTarget.addListener(name, func, options);\n this._$setListenerStats(name, finalChanged, options);\n if (this instanceof Component && this._$definition._$options.listenerChangeLifetimes) {\n this.triggerLifetime('listenerChange', [true, name, func, options]);\n }\n };\n /** Remove an event listener on the element */\n Element.prototype.removeListener = function (name, func, options) {\n var finalChanged = this._$eventTarget.removeListener(name, func, options);\n if (finalChanged === 1 /* FinalChanged.Failed */)\n return;\n this._$setListenerStats(name, finalChanged, options);\n if (this instanceof Component && this._$definition._$options.listenerChangeLifetimes) {\n this.triggerLifetime('listenerChange', [false, name, func, options]);\n }\n };\n /** Get an attribute value ( `null` if not set or removed) */\n Element.prototype.getAttribute = function (name) {\n if (this._$nodeAttributes)\n return this._$nodeAttributes[name];\n return null;\n };\n /** Update an attribute value */\n Element.prototype.updateAttribute = function (name, value) {\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n if (typeof value === 'boolean') {\n if (value === true) {\n this.setAttribute(name, '');\n }\n else {\n this.removeAttribute(name);\n }\n }\n else {\n this.setAttribute(name, value === undefined || value === null ? '' : String(value));\n }\n }\n else {\n if (value === undefined) {\n this.removeAttribute(name);\n }\n else {\n this.setAttribute(name, value);\n }\n }\n };\n /** Set an attribute value */\n Element.prototype.setAttribute = function (name, value) {\n var attrs;\n if (this._$nodeAttributes) {\n attrs = this._$nodeAttributes;\n }\n else {\n attrs = Object.create(null);\n this._$nodeAttributes = attrs;\n }\n attrs[name] = value;\n if (this._$backendElement) {\n this._$backendElement.setAttribute(name, value);\n }\n };\n /** Remove an attribute */\n Element.prototype.removeAttribute = function (name) {\n if (this._$nodeAttributes) {\n delete this._$nodeAttributes[name];\n }\n if (this._$backendElement)\n this._$backendElement.removeAttribute(name);\n };\n /** Set a dataset on the element */\n Element.prototype.setDataset = function (name, value) {\n this.dataset[name] = value;\n if (BM.SHADOW || (BM.DYNAMIC && this.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n ;\n this._$backendElement.setDataset(name, value);\n }\n };\n /** Set a mark on the element */\n Element.prototype.setMark = function (name, value) {\n if (!this._$marks) {\n var marks = {};\n marks[name] = value;\n this._$marks = marks;\n }\n else {\n this._$marks[name] = value;\n }\n };\n /**\n * Collect the marks on the element\n *\n * The marks includes the marks on ancestors (in shadow tree) of the element.\n * If multiple marks on different elements shares the same name,\n * the mark value on the child-most element is accepted.\n */\n Element.prototype.collectMarks = function () {\n var ret = {};\n var cur;\n var _loop_2 = function () {\n var marks = cur._$marks;\n if (marks) {\n Object.keys(marks).forEach(function (name) {\n if (!Object.prototype.hasOwnProperty.call(ret, name)) {\n ret[name] = marks[name];\n }\n });\n }\n };\n for (cur = this; cur; cur = cur.parentNode) {\n _loop_2();\n }\n return ret;\n };\n /**\n * Attach the element into the backend, swapping out a placeholder element in the backend.\n *\n * The `element` must not be a child node of another element,\n * must not be attached before,\n * and must not have a `ownerShadowRoot` .\n * The `element` `targetParent` and `targetNode` must be in the same backend context.\n * The `element` replaces the `targetNode` in the `targetParent` .\n */\n Element.replaceDocumentElement = function (element, targetParent, targetNode) {\n /* istanbul ignore if */\n if (element._$attached) {\n throw new Error('An attached element cannot be attached again');\n }\n if (element._$backendElement) {\n ;\n targetParent.replaceChild(element._$backendElement, targetNode);\n }\n Element.checkAndCallAttached(element);\n };\n /**\n * Make the element looks like attached.\n *\n * If the element will never be attached to backend or it has no backend element at all,\n * this can be used to trigger `attached` life-time.\n */\n Element.pretendAttached = function (element) {\n if (!element._$attached) {\n Element.checkAndCallAttached(element);\n }\n };\n /**\n * Make the element looks like detached.\n *\n * This can be used to trigger `detached` life-time without remove the element in the backend.\n */\n Element.pretendDetached = function (element) {\n if (element._$attached) {\n Element.checkAndCallDetached(element);\n }\n };\n /** Check the element is attached or not */\n Element.isAttached = function (element) {\n return element._$attached;\n };\n /**\n * Set the slot name of the element\n *\n * Once this method is called for an `element` ,\n * it will be treated as a slot which can contain child nodes in composed tree.\n * This method should not be used in components,\n * otherwise the slot content will always be dangled.\n */\n Element.setSlotName = function (element, name) {\n var _a;\n /* istanbul ignore if */\n if (element._$inheritSlots) {\n throw new Error('Slot-inherit mode is not usable in slot element');\n }\n var slotName = name ? String(name) : '';\n var oldSlotName = element._$slotName;\n if (oldSlotName === slotName)\n return;\n var needInsertSlot = oldSlotName === null;\n element._$slotName = slotName;\n if (needInsertSlot) {\n element._$subtreeSlotStart = element._$subtreeSlotEnd = {\n value: element,\n prev: null,\n next: null,\n };\n }\n if (BM.SHADOW || (BM.DYNAMIC && element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n ;\n (_a = element._$backendElement) === null || _a === void 0 ? void 0 : _a.setSlotName(slotName);\n }\n var owner = element.ownerShadowRoot;\n if (owner) {\n if (needInsertSlot) {\n if (owner.getSlotMode() === 3 /* SlotMode.Dynamic */)\n element._$slotValues = Object.create(null);\n element.slotNodes = [];\n var parent_1 = element.parentNode;\n if (parent_1) {\n Element._$updateSubtreeSlotsInsertion(parent_1, element._$subtreeSlotStart, element._$subtreeSlotEnd, element.parentIndex, false);\n }\n }\n else {\n if (owner.isConnected(element))\n owner._$applySlotRename(element, slotName, oldSlotName);\n }\n }\n };\n /**\n * Get the slot name of the element\n */\n Element.getSlotName = function (element) {\n var sn = element._$slotName;\n return sn === null ? undefined : sn;\n };\n /**\n * Set the virtual node to slot-inherit mode\n *\n * In slot-inherit mode of an element,\n * the child nodes of the element will be treated as siblings and can have different target slot.\n */\n Element.setInheritSlots = function (element) {\n var _a;\n /* istanbul ignore if */\n if (!element._$virtual) {\n throw new Error('Cannot set slot-inherit on non-virtual node');\n }\n /* istanbul ignore if */\n if (element._$slotName !== null || element.childNodes.length !== 0) {\n throw new Error('Slot-inherit mode cannot be set when the element has any child node');\n }\n if (BM.SHADOW || (BM.DYNAMIC && element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n ;\n (_a = element._$backendElement) === null || _a === void 0 ? void 0 : _a.setInheritSlots();\n }\n element._$inheritSlots = true;\n };\n /** Get whether the slot-inherit mode is set or not */\n Element.getInheritSlots = function (element) {\n return element._$inheritSlots;\n };\n /**\n * Set the binding slot of specific node\n *\n * Necessary if node belongs to a dynamic slot, which cannot be identified by slot name.\n */\n Element.setSlotElement = function (node, slot) {\n var oldSlotElement = node._$slotElement;\n if (oldSlotElement === slot)\n return;\n node._$slotElement = slot;\n var slotParentShadowRoot = Element._$getParentHostShadowRoot(node.parentNode);\n if (slotParentShadowRoot) {\n var containingSlotUpdater = ShadowRoot._$updateSubtreeSlotNodes(node.parentNode, [node], slotParentShadowRoot, slotParentShadowRoot, node.parentIndex);\n var oldSlot = node.containingSlot;\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n var newSlot = node.containingSlot;\n Element.insertChildReassign(node.parentNode, node, oldSlot, newSlot, node.parentIndex);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.insertSlotNodes();\n }\n };\n /** @internal */\n Element._$updateContainingSlot = function (node, containingSlot) {\n var _a;\n node.containingSlot = containingSlot;\n if (BM.SHADOW ||\n (BM.DYNAMIC && ((_a = node.ownerShadowRoot) === null || _a === void 0 ? void 0 : _a.getBackendMode()) === 1 /* BackendMode.Shadow */)) {\n ;\n node.getBackendElement().setContainingSlot(containingSlot ? containingSlot.getBackendElement() : containingSlot);\n }\n };\n /** @internal */\n Element._$spliceSlotNodes = function (slot, before, deleteCount, insertion) {\n var slotNodes = (slot.slotNodes = slot.slotNodes || []);\n var spliceBefore = before >= 0 && before < slotNodes.length;\n if (insertion === null || insertion === void 0 ? void 0 : insertion.length) {\n if (spliceBefore) {\n for (var i = before; i < before + deleteCount; i += 1) {\n slotNodes[i].slotIndex = undefined;\n }\n slotNodes.splice.apply(slotNodes, __spreadArray([before, deleteCount], insertion, false));\n for (var i = before; i < slotNodes.length; i += 1) {\n slotNodes[i].slotIndex = i;\n }\n }\n else {\n var start = slotNodes.length;\n slotNodes.push.apply(slotNodes, insertion);\n for (var i = start; i < slotNodes.length; i += 1) {\n slotNodes[i].slotIndex = i;\n }\n }\n }\n else if (deleteCount) {\n for (var i = before; i < before + deleteCount; i += 1) {\n slotNodes[i].slotIndex = undefined;\n }\n slotNodes.splice(before, deleteCount);\n for (var i = before; i < slotNodes.length; i += 1) {\n slotNodes[i].slotIndex = i;\n }\n }\n if (BM.SHADOW || (BM.DYNAMIC && slot._$nodeTreeContext.mode === 1 /* BackendMode.Shadow */)) {\n if (insertion === null || insertion === void 0 ? void 0 : insertion.length) {\n var frag = slot._$nodeTreeContext.createFragment();\n for (var i = 0; i < insertion.length; i += 1) {\n frag.appendChild(insertion[i]._$backendElement);\n }\n if (spliceBefore) {\n ;\n slot._$backendElement.spliceBeforeSlotNodes(before, deleteCount, frag);\n }\n else {\n ;\n slot._$backendElement.spliceAppendSlotNodes(frag);\n }\n frag.release();\n }\n else if (deleteCount) {\n ;\n slot._$backendElement.spliceRemoveSlotNodes(before, deleteCount);\n }\n }\n };\n /** @internal */\n Element._$findSlotNodeInsertPosition = function (slot, target, newPosIndex) {\n var host = slot.ownerShadowRoot.getHostNode();\n var getNodeDepth = function (node) {\n var depth = 0;\n var cur = node;\n while (cur && cur !== host) {\n depth += 1;\n cur = cur.parentNode;\n }\n return depth;\n };\n var targetDepth = getNodeDepth(target);\n var comparePos = function (slotNode1, parentIndex1, slotDepth1, slotNode2, parentIndex2, slotDepth2, posIndex) {\n if (slotNode1 === slotNode2)\n return 0;\n if (slotNode1.parentNode === slotNode2.parentNode) {\n return parentIndex1 - (parentIndex2 === -1 ? posIndex : parentIndex2);\n }\n if (slotDepth2 < slotDepth1) {\n var nextSlotNode1 = slotNode1.parentNode;\n return comparePos(nextSlotNode1, nextSlotNode1.parentIndex, slotDepth1 - 1, slotNode2, parentIndex2, slotDepth2, posIndex);\n }\n var left = slotDepth1 < slotDepth2 ? slotNode1 : slotNode1.parentNode;\n var leftDepth = slotDepth1 < slotDepth2 ? slotDepth1 : slotDepth1 - 1;\n var right = slotNode2.parentNode;\n var rightDepth = slotDepth2 - 1;\n var rst = comparePos(left, left.parentIndex, leftDepth, right, right.parentIndex, rightDepth, posIndex);\n if (rst === 0)\n return -1;\n return rst;\n };\n var slotNodes = slot.slotNodes;\n var i = slotNodes.length - 1;\n for (; i >= 0; i -= 1) {\n var slotNode = slotNodes[i];\n if (comparePos(slotNode, slotNode.parentIndex, getNodeDepth(slotNode), target, target.parentIndex, targetDepth, newPosIndex - 0.5) < 0)\n break;\n }\n var insertPos = i + 1;\n return insertPos;\n };\n /** Get composed parent (including virtual nodes) */\n Element.prototype.getComposedParent = function () {\n if (this instanceof ShadowRoot)\n return this.getHostNode();\n if (this.containingSlot !== undefined)\n return this.containingSlot;\n var parent = this.parentNode;\n while (parent === null || parent === void 0 ? void 0 : parent._$inheritSlots) {\n parent = parent.parentNode;\n }\n return parent;\n };\n /**\n * Get the composed children\n *\n * This method always returns a new array.\n * It is convenient but less performant.\n * For better performance, consider using `forEachComposedChild` .\n */\n Element.prototype.getComposedChildren = function () {\n var ret = [];\n this.forEachComposedChild(function (child) {\n ret.push(child);\n });\n return ret;\n };\n /**\n * Iterate composed child nodes (including virtual nodes)\n *\n * if `f` returns `false` then the iteration is interrupted.\n * Returns `true` if that happens.\n */\n Element.prototype.forEachComposedChild = function (f) {\n if (this._$inheritSlots)\n return true;\n if (this instanceof Component && !this._$external) {\n return f(this.shadowRoot) !== false;\n }\n if (this._$slotName !== null) {\n var ownerShadowRoot = this.ownerShadowRoot;\n if (!ownerShadowRoot)\n return true;\n return ownerShadowRoot.forEachNodeInSpecifiedSlot(this, f);\n }\n var recInheritSlots = function (children) {\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n if (f(child) === false)\n return false;\n if (child._$inheritSlots) {\n if (!recInheritSlots(child.childNodes))\n return false;\n }\n }\n return true;\n };\n return recInheritSlots(this.childNodes);\n };\n /**\n * Iterate non-virtual composed child nodes\n *\n * if `f` returns `false` then the iteration is interrupted.\n * Returns `true` if that happens.\n */\n Element.prototype.forEachNonVirtualComposedChild = function (f) {\n if (this._$inheritSlots)\n return true;\n var recNonVirtual = function (child) {\n if (child._$virtual) {\n return child.forEachNonVirtualComposedChild(f);\n }\n return f(child) !== false;\n };\n if (this instanceof Component && !this._$external) {\n return recNonVirtual(this.shadowRoot);\n }\n if (this._$slotName !== null) {\n var ownerShadowRoot = this.ownerShadowRoot;\n if (!ownerShadowRoot)\n return true;\n return ownerShadowRoot.forEachSlotContentInSpecifiedSlot(this, recNonVirtual);\n }\n var recInheritSlots = function (children) {\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n if (!recNonVirtual(child))\n return false;\n if (child._$inheritSlots) {\n if (!recInheritSlots(child.childNodes))\n return false;\n }\n }\n return true;\n };\n return recInheritSlots(this.childNodes);\n };\n /** Parse a selector string so that it can be used multiple queries */\n Element.parseSelector = function (str) {\n return new ParsedSelector(str);\n };\n /** Select the first descendant which matches the selector */\n Element.prototype.querySelector = function (selectorStr) {\n var parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n var ret = parsedSelector.query(this, true);\n return ret;\n };\n /** Select all descendants which matches the selector */\n Element.prototype.querySelectorAll = function (selectorStr) {\n var parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n var ret = parsedSelector.query(this, false);\n return ret;\n };\n /** Test whether the target matches the selector */\n Element.matchSelector = function (selectorStr, target) {\n var parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n return parsedSelector.testSelector(null, target);\n };\n /** Test whether the target in this subtree matches the selector */\n Element.prototype.matchSelector = function (selectorStr, target) {\n var parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n return parsedSelector.testSelector(this, target);\n };\n /**\n * Get the bounding client rect\n *\n * Return zero values when the backend element is invalid or it does not have layout information.\n */\n Element.prototype.getBoundingClientRect = function (cb) {\n var backendElement = this._$backendElement;\n if (backendElement) {\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n var e = backendElement;\n var res_1 = e.getBoundingClientRect();\n setTimeout(function () {\n cb(res_1);\n }, 0);\n }\n else {\n ;\n backendElement.getBoundingClientRect(cb);\n }\n }\n else {\n setTimeout(function () {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n }\n };\n /**\n * Get the bounding client rect\n *\n * Return zero values when the backend element is invalid or it does not have layout information.\n */\n Element.prototype.getScrollOffset = function (cb) {\n var backendElement = this._$backendElement;\n if (backendElement) {\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n var e = backendElement;\n var res_2 = {\n scrollLeft: e.scrollLeft,\n scrollTop: e.scrollTop,\n scrollWidth: e.scrollWidth,\n scrollHeight: e.scrollHeight,\n };\n setTimeout(function () {\n cb(res_2);\n }, 0);\n }\n else {\n ;\n backendElement.getScrollOffset(cb);\n }\n }\n else {\n setTimeout(function () {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n }\n };\n /**\n * Create an intersection observer\n *\n * The `relativeElement` is the element to calculate intersection with ( `null` for the viewport).\n * The `relativeElementMargin` is the margins of the `relativeElement` .\n * The `thresholds` is a list of intersection ratios to trigger the `listener` .\n * The listener always triggers once immediately after this call.\n */\n Element.prototype.createIntersectionObserver = function (relativeElement, relativeElementMargin, thresholds, listener) {\n var backendElement = this._$backendElement;\n if (backendElement) {\n if (relativeElement && !relativeElement._$backendElement) {\n return null;\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n return this._$nodeTreeContext.createIntersectionObserver(backendElement, (relativeElement === null || relativeElement === void 0 ? void 0 : relativeElement._$backendElement) || null, relativeElementMargin, thresholds, listener);\n }\n return backendElement.createIntersectionObserver((relativeElement === null || relativeElement === void 0 ? void 0 : relativeElement._$backendElement) || null, relativeElementMargin, thresholds, listener);\n }\n return null;\n };\n /**\n * Get an interactive context\n */\n Element.prototype.getContext = function (cb) {\n var backendElement = this._$backendElement;\n if (!backendElement)\n return;\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this._$nodeTreeContext.getContext(backendElement, cb);\n }\n else {\n ;\n backendElement.getContext(cb);\n }\n };\n /** @internal */\n Element._$getParentHostShadowRoot = function (parent) {\n var parentSlotHost = parent;\n while (parentSlotHost === null || parentSlotHost === void 0 ? void 0 : parentSlotHost._$inheritSlots)\n parentSlotHost = parentSlotHost.parentNode;\n return parentSlotHost instanceof Component && !parentSlotHost._$external\n ? parentSlotHost.shadowRoot\n : null;\n };\n return Element;\n}());\nexport { Element };\n","import { VirtualNode } from './virtual_node';\nimport { Component } from './component';\nimport { Element } from './element';\nimport { safeCallback, triggerWarning } from './func_arr';\nexport var RelationType;\n(function (RelationType) {\n RelationType[RelationType[\"Ancestor\"] = 0] = \"Ancestor\";\n RelationType[RelationType[\"Descendant\"] = 1] = \"Descendant\";\n RelationType[RelationType[\"ParentNonVirtualNode\"] = 2] = \"ParentNonVirtualNode\";\n RelationType[RelationType[\"ChildNonVirtualNode\"] = 3] = \"ChildNonVirtualNode\";\n RelationType[RelationType[\"ParentComponent\"] = 4] = \"ParentComponent\";\n RelationType[RelationType[\"ChildComponent\"] = 5] = \"ChildComponent\";\n})(RelationType || (RelationType = {}));\nvar RELATION_TYPE_COUNT = 6;\nexport var generateRelationDefinitionGroup = function (relations) {\n if (relations === undefined)\n return null;\n var group = {\n definitions: new Array(RELATION_TYPE_COUNT),\n keyMap: Object.create(null),\n };\n var defs = group.definitions;\n var keyMap = group.keyMap;\n var keys = Object.keys(relations);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var relation = relations[key];\n var relationType = relation.type;\n if (defs[relationType]) {\n keyMap[key] = [relationType, defs[relationType].length];\n defs[relationType].push(relation);\n }\n else {\n keyMap[key] = [relationType, 0];\n defs[relationType] = [relation];\n }\n }\n return group;\n};\nexport var cloneRelationDefinitionGroup = function (group) {\n var newGroup = {\n definitions: group.definitions.slice(),\n keyMap: Object.assign(Object.create(null), group.keyMap),\n };\n return newGroup;\n};\nvar Relation = /** @class */ (function () {\n function Relation(associatedComponent, group) {\n this._$comp = associatedComponent;\n var links = new Array(RELATION_TYPE_COUNT);\n if (group) {\n for (var type = 0; type < RELATION_TYPE_COUNT; type += 1) {\n var definitions = group.definitions[type];\n if (definitions) {\n var link = new Array(definitions.length);\n for (var i = 0; i < definitions.length; i += 1) {\n link[i] = null;\n }\n links[type] = link;\n }\n }\n }\n this._$group = group;\n this._$sharedGroup = true;\n this._$links = links;\n }\n Relation.prototype.add = function (relation) {\n if (this._$sharedGroup) {\n this._$sharedGroup = false;\n var group = this._$group;\n if (group) {\n this._$group = {\n definitions: group.definitions.slice(),\n keyMap: Object.assign(Object.create(null), group.keyMap),\n };\n }\n else {\n this._$group = {\n definitions: new Array(RELATION_TYPE_COUNT),\n keyMap: Object.create(null),\n };\n }\n }\n var key = Symbol('');\n var defs = this._$group.definitions;\n var keyMap = this._$group.keyMap;\n var relationType = relation.type;\n if (defs[relationType]) {\n keyMap[key] = [relationType, defs[relationType].length];\n defs[relationType].push(relation);\n }\n else {\n keyMap[key] = [relationType, 0];\n defs[relationType] = [relation];\n }\n var linksGroup = this._$links;\n if (linksGroup[relationType] === undefined) {\n linksGroup[relationType] = [null];\n }\n else {\n linksGroup[relationType].push(null);\n }\n return key;\n };\n Relation.prototype.triggerLinkEvent = function (parentType, isDetach) {\n var _a, _b;\n var comp = this._$comp;\n var linksGroup = this._$links;\n var selfDefs = (_a = this._$group) === null || _a === void 0 ? void 0 : _a.definitions[parentType];\n if (!selfDefs)\n return;\n for (var i = 0; i < selfDefs.length; i += 1) {\n var links = linksGroup[parentType];\n var oldLink = links[i];\n var newLink = null;\n var def = selfDefs[i];\n var parentBehavior = def.target;\n if (!isDetach) {\n var cur = comp;\n for (;;) {\n var next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (cur instanceof VirtualNode) {\n continue;\n }\n if (cur instanceof Component) {\n if (cur.hasBehavior(parentBehavior)) {\n var parentRelation = cur._$relation;\n if (parentRelation) {\n var rt = void 0;\n if (parentType === 4 /* RelationType.ParentComponent */) {\n rt = 5 /* RelationType.ChildComponent */;\n }\n else if (parentType === 0 /* RelationType.Ancestor */) {\n rt = 1 /* RelationType.Descendant */;\n }\n else {\n rt = 3 /* RelationType.ChildNonVirtualNode */;\n }\n var parentDefs = (_b = parentRelation._$group) === null || _b === void 0 ? void 0 : _b.definitions[rt];\n if (parentDefs) {\n for (var j = 0; j < parentDefs.length; j += 1) {\n var def_1 = parentDefs[j];\n if (def_1.target && this._$comp.hasBehavior(def_1.target)) {\n newLink = {\n target: cur,\n def: def_1,\n };\n break;\n }\n }\n if (newLink)\n break;\n }\n }\n }\n if (parentType === 4 /* RelationType.ParentComponent */)\n break;\n }\n if (parentType === 2 /* RelationType.ParentNonVirtualNode */)\n break;\n }\n }\n links[i] = newLink;\n if (oldLink) {\n var oldTarget = oldLink.target;\n var oldDef = oldLink.def;\n if (!newLink || oldLink.target !== newLink.target || oldLink.def !== newLink.def) {\n if (oldDef.unlinked) {\n safeCallback('Relation Unlinked Callback', oldDef.unlinked, oldTarget.getMethodCaller(), [comp.getMethodCaller()], oldTarget);\n }\n if (def.unlinked) {\n safeCallback('Relation Unlinked Callback', def.unlinked, comp.getMethodCaller(), [oldTarget.getMethodCaller()], comp);\n }\n }\n else {\n if (oldDef.linkChanged) {\n safeCallback('Relation Link Changed Callback', oldDef.linkChanged, oldTarget.getMethodCaller(), [comp.getMethodCaller()], oldTarget);\n }\n if (def.linkChanged) {\n safeCallback('Relation Link Changed Callback', def.linkChanged, comp.getMethodCaller(), [oldTarget.getMethodCaller()], comp);\n }\n }\n }\n if (newLink) {\n var newTarget = newLink.target;\n var newDef = newLink.def;\n if (!oldLink || oldLink.target !== newLink.target || oldLink.def !== newLink.def) {\n if (newDef.linked) {\n safeCallback('Relation Linked Callback', newDef.linked, newTarget.getMethodCaller(), [comp.getMethodCaller()], newTarget);\n }\n if (def.linked) {\n safeCallback('Relation Linked Callback', def.linked, comp.getMethodCaller(), [newTarget.getMethodCaller()], comp);\n }\n }\n }\n if (!isDetach && !newLink && def.linkFailed) {\n safeCallback('Relation Link Failed Callback', def.linkFailed, comp.getMethodCaller(), [], comp);\n }\n }\n };\n Relation.prototype.getLinkedTargets = function (key) {\n var _a, _b, _c, _d;\n var typeWithIndex = (_a = this._$group) === null || _a === void 0 ? void 0 : _a.keyMap[key];\n if (!typeWithIndex) {\n triggerWarning(\"no relation \\\"\".concat(String(key), \"\\\" found.\"));\n return [];\n }\n var type = typeWithIndex[0], index = typeWithIndex[1];\n if (type === 4 /* RelationType.ParentComponent */ ||\n type === 2 /* RelationType.ParentNonVirtualNode */ ||\n type === 0 /* RelationType.Ancestor */) {\n var link = (_b = this._$links[type]) === null || _b === void 0 ? void 0 : _b[index];\n if (link)\n return [link.target];\n return [];\n }\n var ret = [];\n var comp = this._$comp;\n var def = (_d = (_c = this._$group) === null || _c === void 0 ? void 0 : _c.definitions[type]) === null || _d === void 0 ? void 0 : _d[index];\n var dfs = function (node) {\n var children = node.childNodes;\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n if (!(child instanceof Element))\n continue;\n if (child instanceof VirtualNode) {\n dfs(child);\n continue;\n }\n if (child instanceof Component) {\n if (child._$relation) {\n var links = void 0;\n if (type === 5 /* RelationType.ChildComponent */) {\n links = child._$relation._$links[4 /* RelationType.ParentComponent */];\n }\n else if (type === 1 /* RelationType.Descendant */) {\n links = child._$relation._$links[0 /* RelationType.Ancestor */];\n }\n else {\n links = child._$relation._$links[2 /* RelationType.ParentNonVirtualNode */];\n }\n if (links) {\n for (var i_1 = 0; i_1 < links.length; i_1 += 1) {\n var link = links[i_1];\n if (link && link.target === comp && link.def === def) {\n ret.push(child);\n break;\n }\n }\n }\n }\n if (type === 1 /* RelationType.Descendant */)\n dfs(child);\n }\n else {\n if (type === 5 /* RelationType.ChildComponent */ || type === 1 /* RelationType.Descendant */)\n dfs(child);\n }\n }\n };\n dfs(this._$comp);\n return ret;\n };\n return Relation;\n}());\nexport { Relation };\n","export var METHOD_TAG = Symbol('method');\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Element } from './element';\nimport { BM } from './backend/mode';\nvar VirtualNode = /** @class */ (function (_super) {\n __extends(VirtualNode, _super);\n function VirtualNode() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n return _super.call(this) || this;\n }\n VirtualNode.prototype._$initializeVirtual = function (virtualName, owner, nodeTreeContext, backendElement) {\n this.is = String(virtualName);\n if (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */)) {\n var shadowRoot = owner._$backendShadowRoot;\n var be = backendElement || (shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.createVirtualNode(virtualName)) || null;\n this._$initialize(true, be, owner, nodeTreeContext);\n be === null || be === void 0 ? void 0 : be.associateValue(this);\n }\n else {\n this._$initialize(true, backendElement, owner, nodeTreeContext);\n }\n };\n VirtualNode.create = function (virtualName, owner) {\n var node = Object.create(VirtualNode.prototype);\n node._$initializeVirtual(virtualName, owner, owner._$nodeTreeContext, null);\n return node;\n };\n return VirtualNode;\n}(Element));\nexport { VirtualNode };\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { FuncArr, triggerWarning } from './func_arr';\nimport { getDefaultComponentSpace } from './global_options';\nimport { parseMultiPaths } from './data_path';\nimport { DataGroupObserverTree } from './data_proxy';\nimport { ComponentDefinition, } from './component';\nimport { TraitBehavior } from './trait_behaviors';\nimport { simpleDeepCopy } from './data_utils';\nexport var NormalizedPropertyType;\n(function (NormalizedPropertyType) {\n NormalizedPropertyType[\"Invalid\"] = \"invalid\";\n NormalizedPropertyType[\"Any\"] = \"any\";\n NormalizedPropertyType[\"String\"] = \"string\";\n NormalizedPropertyType[\"Number\"] = \"number\";\n NormalizedPropertyType[\"Boolean\"] = \"boolean\";\n NormalizedPropertyType[\"Object\"] = \"object\";\n NormalizedPropertyType[\"Array\"] = \"array\";\n NormalizedPropertyType[\"Function\"] = \"function\";\n})(NormalizedPropertyType || (NormalizedPropertyType = {}));\nvar shallowMerge = function (dest, src) {\n var keys = Object.keys(src);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n if (Object.prototype.hasOwnProperty.call(dest, key)) {\n if (key[0] === '_') {\n triggerWarning(\"data field \\\"\".concat(key, \"\\\" from different behaviors is overriding or merging.\"));\n }\n if (typeof dest[key] === 'object' &&\n typeof src[key] === 'object' &&\n src[key] !== null &&\n !Array.isArray(src[key])) {\n if (Array.isArray(dest[key])) {\n dest[key] = dest[key].slice();\n }\n else {\n var oldDest = dest[key];\n var newDest = {};\n var subKeys = Object.keys(oldDest);\n for (var i_1 = 0; i_1 < subKeys.length; i_1 += 1) {\n var subKey = subKeys[i_1];\n newDest[subKey] = oldDest[subKey];\n }\n dest[key] = newDest;\n }\n shallowMerge(dest[key], src[key]);\n }\n else {\n dest[key] = src[key];\n }\n }\n else {\n dest[key] = src[key];\n }\n }\n};\nvar normalizePropertyTypeShortHand = function (propDef) {\n if (propDef === \"string\" /* NormalizedPropertyType.String */ || propDef === String) {\n return {\n type: \"string\" /* NormalizedPropertyType.String */,\n optionalTypes: null,\n value: '',\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"number\" /* NormalizedPropertyType.Number */ || propDef === Number) {\n return {\n type: \"number\" /* NormalizedPropertyType.Number */,\n optionalTypes: null,\n value: 0,\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"boolean\" /* NormalizedPropertyType.Boolean */ || propDef === Boolean) {\n return {\n type: \"boolean\" /* NormalizedPropertyType.Boolean */,\n optionalTypes: null,\n value: false,\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"object\" /* NormalizedPropertyType.Object */ || propDef === Object) {\n return {\n type: \"object\" /* NormalizedPropertyType.Object */,\n optionalTypes: null,\n value: null,\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"array\" /* NormalizedPropertyType.Array */ || propDef === Array) {\n return {\n type: \"array\" /* NormalizedPropertyType.Array */,\n optionalTypes: null,\n value: [],\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"function\" /* NormalizedPropertyType.Function */ || propDef === Function) {\n return {\n type: \"function\" /* NormalizedPropertyType.Function */,\n optionalTypes: null,\n value: function () {\n /* empty */\n },\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n if (propDef === \"any\" /* NormalizedPropertyType.Any */ || propDef === null || propDef === undefined) {\n return {\n type: \"any\" /* NormalizedPropertyType.Any */,\n optionalTypes: null,\n value: null,\n default: undefined,\n observer: null,\n comparer: null,\n reflectIdPrefix: false,\n };\n }\n return null;\n};\nvar normalizePropertyType = function (t) {\n if (t === \"string\" /* NormalizedPropertyType.String */ || t === String) {\n return \"string\" /* NormalizedPropertyType.String */;\n }\n if (t === \"number\" /* NormalizedPropertyType.Number */ || t === Number) {\n return \"number\" /* NormalizedPropertyType.Number */;\n }\n if (t === \"boolean\" /* NormalizedPropertyType.Boolean */ || t === Boolean) {\n return \"boolean\" /* NormalizedPropertyType.Boolean */;\n }\n if (t === \"object\" /* NormalizedPropertyType.Object */ || t === Object) {\n return \"object\" /* NormalizedPropertyType.Object */;\n }\n if (t === \"array\" /* NormalizedPropertyType.Array */ || t === Array) {\n return \"array\" /* NormalizedPropertyType.Array */;\n }\n if (t === \"function\" /* NormalizedPropertyType.Function */ || t === Function) {\n return \"function\" /* NormalizedPropertyType.Function */;\n }\n if (t === \"any\" /* NormalizedPropertyType.Any */ || t === null || t === undefined) {\n return \"any\" /* NormalizedPropertyType.Any */;\n }\n return \"invalid\" /* NormalizedPropertyType.Invalid */;\n};\nexport var convertValueToType = function (value, propName, prop) {\n var type = prop.type;\n var defaultFn = prop.default;\n // try match optional types\n var optionalTypes = prop.optionalTypes;\n if (optionalTypes) {\n for (var i = 0; i < optionalTypes.length; i += 1) {\n if (matchTypeWithValue(optionalTypes[i], value)) {\n return value;\n }\n }\n }\n // for string\n if (type === \"string\" /* NormalizedPropertyType.String */) {\n if (value === null || value === undefined) {\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <String> but get null value. Used default value instead.\"));\n return defaultFn === undefined ? '' : defaultFn();\n }\n if (typeof value === 'object') {\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <String> but got object-typed value. Force converted.\"));\n }\n return String(value);\n }\n // for number\n if (type === \"number\" /* NormalizedPropertyType.Number */) {\n // eslint-disable-next-line no-restricted-globals\n if (isFinite(value))\n return Number(value);\n if (typeof value === 'number') {\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <Number> but got NaN or Infinity. Used default value instead.\"));\n }\n else {\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <Number> but got non-number value. Used default value instead.\"));\n }\n return defaultFn === undefined ? 0 : defaultFn();\n }\n // for boolean\n if (type === \"boolean\" /* NormalizedPropertyType.Boolean */) {\n return !!value;\n }\n // for array\n if (type === \"array\" /* NormalizedPropertyType.Array */) {\n if (Array.isArray(value))\n return value;\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <Array> but got non-array value. Used default value instead.\"));\n return defaultFn === undefined ? [] : defaultFn();\n }\n // for object\n if (type === \"object\" /* NormalizedPropertyType.Object */) {\n if (typeof value === 'object')\n return value;\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <Object> but got non-object value. Used default value instead.\"));\n return defaultFn === undefined ? null : defaultFn();\n }\n // for function\n if (type === \"function\" /* NormalizedPropertyType.Function */) {\n if (typeof value === 'function')\n return value;\n triggerWarning(\"property \\\"\".concat(propName, \"\\\" received type-incompatible value: expected <Function> but got non-function value. Used default value instead.\"));\n // eslint-disable-next-line func-names\n return defaultFn === undefined\n ? function () {\n /* empty */\n }\n : defaultFn();\n }\n // for any-typed, just return the value and avoid undefined\n if (value === undefined)\n return defaultFn === undefined ? null : defaultFn();\n return value;\n};\nexport var matchTypeWithValue = function (type, value) {\n if (type === \"string\" /* NormalizedPropertyType.String */) {\n if (typeof value !== 'string')\n return false;\n }\n else if (type === \"number\" /* NormalizedPropertyType.Number */) {\n if (!Number.isFinite(value))\n return false;\n }\n else if (type === \"boolean\" /* NormalizedPropertyType.Boolean */) {\n if (typeof value !== 'boolean')\n return false;\n }\n else if (type === \"object\" /* NormalizedPropertyType.Object */) {\n if (typeof value !== 'object' || Array.isArray(value))\n return false;\n }\n else if (type === \"array\" /* NormalizedPropertyType.Array */) {\n if (typeof value !== 'object' || !Array.isArray(value))\n return false;\n }\n else if (type === \"function\" /* NormalizedPropertyType.Function */) {\n if (typeof value !== 'function')\n return false;\n }\n else if (value === undefined) {\n return false;\n }\n return true;\n};\nexport var normalizeRelation = function (ownerSpace, is, key, relation) {\n var checkRelationFunc = function (f) {\n if (typeof f === 'function') {\n return f;\n }\n if (f !== undefined) {\n triggerWarning(\"the \\\"\".concat(key, \"\\\" relation listener is not a function (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n return null;\n };\n var type;\n if (relation.type === 'parent') {\n type = 4 /* RelationType.ParentComponent */;\n }\n else if (relation.type === 'child') {\n type = 5 /* RelationType.ChildComponent */;\n }\n else if (relation.type === 'parent-common-node') {\n type = 2 /* RelationType.ParentNonVirtualNode */;\n }\n else if (relation.type === 'child-common-node') {\n type = 3 /* RelationType.ChildNonVirtualNode */;\n }\n else if (relation.type === 'ancestor') {\n type = 0 /* RelationType.Ancestor */;\n }\n else if (relation.type === 'descendant') {\n type = 1 /* RelationType.Descendant */;\n }\n else {\n var type_1 = relation.type;\n triggerWarning(\"the \\\"\".concat(key, \"\\\" relation has an invalid relation type \\\"\").concat(type_1, \"\\\" (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n return null;\n }\n var target = null;\n if (relation.target instanceof ComponentDefinition) {\n target = relation.target.behavior;\n }\n else if (relation.target instanceof Behavior || relation.target instanceof TraitBehavior) {\n target = relation.target;\n }\n else {\n var path = String(relation.target || key);\n var usingTarget = ownerSpace.getComponentByUrlWithoutDefault(path, is);\n if (usingTarget) {\n target = usingTarget.behavior;\n }\n else {\n var globalTarget = ownerSpace.getGlobalUsingComponent(path);\n if (typeof globalTarget === 'object' && globalTarget !== null) {\n target = globalTarget.behavior;\n }\n }\n }\n if (!target) {\n triggerWarning(\"the target of relation \\\"\".concat(key, \"\\\" is not a valid behavior or component (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n return null;\n }\n return {\n target: target,\n type: type,\n linked: checkRelationFunc(relation.linked),\n linkChanged: checkRelationFunc(relation.linkChanged),\n unlinked: checkRelationFunc(relation.unlinked),\n linkFailed: checkRelationFunc(relation.linkFailed),\n };\n};\nvar BehaviorBuilder = /** @class */ (function () {\n /** @internal */\n function BehaviorBuilder(is, ownerSpace) {\n /** @internal */\n this._$behaviors = [];\n /** @internal */\n this._$traitBehaviors = [];\n /** @internal */\n this._$staticData = undefined;\n /** @internal */\n this._$data = [];\n /** @internal */\n this._$methods = [];\n /** @internal */\n this._$lifetimes = [];\n /** @internal */\n this._$pageLifetimes = [];\n /** @internal */\n this._$init = [];\n this._$is = is;\n this._$ownerSpace = ownerSpace;\n }\n /**\n * Set a front-most init function\n *\n * It should return the method caller (the `this` value for various callbacks)\n * that will be used in future.\n */\n BehaviorBuilder.prototype.methodCallerInit = function (func) {\n this._$methodCallerInit = func;\n return this;\n };\n /**\n * Add a behavior\n *\n * If the behavior contains a chaining filter, the chaining filter is called.\n */\n BehaviorBuilder.prototype.behavior = function (behavior) {\n this._$behaviors.push(behavior);\n if (behavior._$chainingFilter) {\n return behavior._$chainingFilter(this);\n }\n return this;\n };\n /**\n * Set the chaining filter\n *\n * The chaining filter is the definition filter for chaining API.\n * It SHOULD return another chainable object for further chaining.\n */\n BehaviorBuilder.prototype.chainingFilter = function (func) {\n this._$chainingFilter = func;\n return this;\n };\n /**\n * Set component options\n *\n * The options will be merged with previous settings.\n */\n BehaviorBuilder.prototype.options = function (options) {\n var oldOptions = this._$options;\n if (oldOptions) {\n this._$options = __assign(__assign({}, oldOptions), options);\n }\n else {\n this._$options = options;\n }\n return this;\n };\n /**\n * Implement a trait behavior\n */\n BehaviorBuilder.prototype.implement = function (traitBehavior, impl) {\n this._$traitBehaviors.push({ traitBehavior: traitBehavior, impl: impl });\n return this;\n };\n /**\n * Set the compiled template object\n */\n BehaviorBuilder.prototype.template = function (template) {\n this._$template = template;\n return this;\n };\n /**\n * Add other components to the component using list\n */\n BehaviorBuilder.prototype.usingComponents = function (list) {\n if (this._$using)\n this._$using = __assign(__assign({}, this._$using), list);\n else\n this._$using = list;\n return this;\n };\n /**\n * Add some placeholders\n *\n * The alias SHOULD be in the using list, otherwise it will be ignored.\n */\n BehaviorBuilder.prototype.placeholders = function (list) {\n if (this._$placeholders)\n this._$placeholders = __assign(__assign({}, this._$placeholders), list);\n else\n this._$placeholders = list;\n return this;\n };\n /**\n * Add other generics\n *\n * The alias SHOULD NOT be in the using list, otherwise it will be ignored.\n */\n BehaviorBuilder.prototype.generics = function (list) {\n if (this._$generics)\n this._$generics = __assign(__assign({}, this._$generics), list);\n else\n this._$generics = list;\n return this;\n };\n /**\n * Add external classes\n */\n BehaviorBuilder.prototype.externalClasses = function (list) {\n if (this._$externalClasses)\n this._$externalClasses = this._$externalClasses.concat(list);\n else\n this._$externalClasses = list;\n return this;\n };\n /**\n * Add some template data fields\n *\n * It does not support raw data, but a `gen` function which returns the new data fields.\n * The `gen` function executes once during component creation.\n */\n BehaviorBuilder.prototype.data = function (gen) {\n this._$data.push(gen);\n return this;\n };\n /**\n * Set the static template data fields\n *\n * The data will be cloned once during component creation.\n * If called multiple times, the static data will be overwritten but not merged!\n * Usually, the `data()` method is preferred.\n */\n BehaviorBuilder.prototype.staticData = function (data) {\n this._$staticData = data;\n return this;\n };\n /**\n * Add a single property\n *\n * The property name should be different from other properties.\n */\n BehaviorBuilder.prototype.property = function (name, def) {\n if (!this._$properties)\n this._$properties = [];\n this._$properties.push({ name: name, def: def });\n return this;\n };\n /**\n * Add a single public method\n *\n * The public method can be used as an event handler, and can be visited in component instance.\n */\n BehaviorBuilder.prototype.methods = function (funcs) {\n var keys = Object.keys(funcs);\n for (var i = 0; i < keys.length; i += 1) {\n var name_1 = keys[i];\n var func = funcs[name_1];\n this._$methods.push({ name: name_1, func: func });\n }\n return this;\n };\n BehaviorBuilder.prototype.observer = function (paths, func, once) {\n if (once === void 0) { once = false; }\n if (!this._$observers)\n this._$observers = [];\n this._$observers.push({ dataPaths: parseMultiPaths(paths), func: func, once: once });\n return this;\n };\n /**\n * Add a lifetime callback\n */\n BehaviorBuilder.prototype.lifetime = function (name, func, once) {\n if (once === void 0) { once = false; }\n this._$lifetimes.push({ name: name, func: func, once: once });\n return this;\n };\n /**\n * Add a page-lifetime callback\n */\n BehaviorBuilder.prototype.pageLifetime = function (name, func, once) {\n if (once === void 0) { once = false; }\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n this._$pageLifetimes.push({ name: name, func: func, once: once });\n return this;\n };\n /**\n * Add a relation\n */\n BehaviorBuilder.prototype.relation = function (name, rel) {\n if (!this._$relations)\n this._$relations = [];\n this._$relations.push({ name: name, rel: rel });\n return this;\n };\n /**\n * Execute a function while component instance creation\n *\n * A `BuilderContext` is provided to tweak the component creation progress.\n * The return value is used as the \"export\" value of the behavior,\n * which can be imported by other behaviors.\n */\n BehaviorBuilder.prototype.init = function (func) {\n this._$init.push(func);\n return this;\n };\n /**\n * Apply a classic-style definition\n */\n BehaviorBuilder.prototype.definition = function (def) {\n var _a;\n if (def.behaviors)\n (_a = this._$behaviors).push.apply(_a, def.behaviors);\n if (def.options)\n this.options(def.options);\n if (def.template)\n this.template(def.template);\n if (def.using)\n this.usingComponents(def.using);\n if (def.placeholders)\n this.placeholders(def.placeholders);\n if (def.generics)\n this.generics(def.generics);\n if (def.externalClasses)\n this.externalClasses(def.externalClasses);\n var rawData = def.data;\n if (rawData !== undefined) {\n if (typeof rawData === 'function') {\n this._$data.push(rawData);\n }\n else {\n this._$staticData = rawData;\n }\n }\n var rawProperties = def.properties;\n if (rawProperties !== undefined) {\n if (!this._$properties)\n this._$properties = [];\n var keys = Object.keys(rawProperties);\n for (var i = 0; i < keys.length; i += 1) {\n var name_2 = keys[i];\n var def_1 = rawProperties[name_2];\n this._$properties.push({ name: name_2, def: def_1 });\n }\n }\n var rawMethods = def.methods;\n if (rawMethods !== undefined) {\n var keys = Object.keys(rawMethods);\n for (var i = 0; i < keys.length; i += 1) {\n var name_3 = keys[i];\n var func = rawMethods[name_3];\n this._$methods.push({ name: name_3, func: func });\n }\n }\n var rawObservers = def.observers;\n if (rawObservers !== undefined) {\n if (!this._$observers)\n this._$observers = [];\n if (Array.isArray(rawObservers)) {\n for (var i = 0; i < rawObservers.length; i += 1) {\n var _b = rawObservers[i], fields = _b.fields, observer = _b.observer;\n this._$observers.push({\n dataPaths: parseMultiPaths(fields !== null && fields !== void 0 ? fields : '**'),\n func: observer,\n once: false,\n });\n }\n }\n else {\n var keys = Object.keys(rawObservers);\n for (var i = 0; i < keys.length; i += 1) {\n var fields = keys[i];\n var observer = rawObservers[fields];\n this._$observers.push({ dataPaths: parseMultiPaths(fields), func: observer, once: false });\n }\n }\n }\n var rawLifetimes = def.lifetimes;\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.created) === undefined && typeof def.created === 'function') {\n this._$lifetimes.push({ name: 'created', func: def.created, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.attached) === undefined && typeof def.attached === 'function') {\n this._$lifetimes.push({ name: 'attached', func: def.attached, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.moved) === undefined && typeof def.moved === 'function') {\n this._$lifetimes.push({ name: 'moved', func: def.moved, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.detached) === undefined && typeof def.detached === 'function') {\n this._$lifetimes.push({ name: 'detached', func: def.detached, once: true });\n }\n if ((rawLifetimes === null || rawLifetimes === void 0 ? void 0 : rawLifetimes.ready) === undefined && typeof def.ready === 'function') {\n this._$lifetimes.push({ name: 'ready', func: def.ready, once: true });\n }\n if (rawLifetimes) {\n var keys = Object.keys(rawLifetimes);\n for (var i = 0; i < keys.length; i += 1) {\n var name_4 = keys[i];\n var func = rawLifetimes[name_4];\n this._$lifetimes.push({ name: name_4, func: func, once: true });\n }\n }\n var rawPageLifetimes = def.pageLifetimes;\n if (rawPageLifetimes) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n var keys = Object.keys(rawPageLifetimes);\n for (var i = 0; i < keys.length; i += 1) {\n var name_5 = keys[i];\n var func = rawPageLifetimes[name_5];\n this._$pageLifetimes.push({ name: name_5, func: func, once: true });\n }\n }\n this._$listeners = def.listeners;\n var rawRelations = def.relations;\n if (rawRelations) {\n if (!this._$relations)\n this._$relations = [];\n var keys = Object.keys(rawRelations);\n for (var i = 0; i < keys.length; i += 1) {\n var name_6 = keys[i];\n var rel = rawRelations[name_6];\n this._$relations.push({ name: name_6, rel: rel });\n }\n }\n return this;\n };\n /**\n * Finish build, generate a behavior, and register it in the component space\n */\n BehaviorBuilder.prototype.registerBehavior = function () {\n var is = this._$is;\n var behavior = new Behavior(this);\n if (is !== undefined) {\n this._$ownerSpace._$registerBehavior(is, behavior);\n }\n return behavior;\n };\n /**\n * Finish build, generate a component definition, and register it in the component space\n */\n BehaviorBuilder.prototype.registerComponent = function () {\n var is = this._$is;\n var behavior = new Behavior(this);\n var compDef = new ComponentDefinition(behavior);\n if (is !== undefined) {\n this._$ownerSpace._$registerComponent(is, compDef);\n }\n return compDef;\n };\n return BehaviorBuilder;\n}());\nexport { BehaviorBuilder };\n/**\n * Common mixin-like behavior\n *\n * Each component definition contains a single *root* behavior.\n * A behavior can mixin other behaviors.\n */\nvar Behavior = /** @class */ (function () {\n /** @internal */\n function Behavior(builder) {\n this._$unprepared = true;\n this.is = builder._$is || '';\n this.ownerSpace = builder._$ownerSpace;\n this._$builder = builder;\n this._$flatAncestors = new Set();\n this._$chainingFilter = builder._$chainingFilter;\n this._$options = builder._$options;\n this._$traitBehaviors = undefined;\n this._$template = builder._$template;\n this._$using = Object.create(null);\n this._$generics = undefined;\n this._$genericDefaults = undefined;\n this._$externalClasses = builder._$externalClasses;\n this._$staticData = undefined;\n this._$data = [];\n this._$propertyMap = Object.create(null);\n this._$methodMap = Object.create(null);\n this._$observers = [];\n this._$lifetimes = [];\n this._$pageLifetimes = undefined;\n this._$listeners = undefined;\n this._$relationMap = undefined;\n this._$init = [];\n this._$methodCallerInit = builder._$methodCallerInit;\n }\n /**\n * Create a behavior with classic-style definition\n */\n Behavior.create = function (def, ownerSpace) {\n return new BehaviorBuilder(def.is, ownerSpace || getDefaultComponentSpace())\n .definition(def)\n .registerBehavior();\n };\n Behavior.prototype.general = function () {\n return this;\n };\n /**\n * List all component dependencies (recursively)\n *\n * This method will prepare the underlying behavior.\n */\n Behavior.prototype.getComponentDependencies = function (genericTargets) {\n var ret = new Set();\n var rec = function (beh) {\n if (beh._$unprepared)\n beh.prepare();\n var keys = Object.keys(beh._$using);\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n var v = beh._$using[k];\n if (typeof v === 'string')\n continue;\n var dep = v.final;\n if (dep && !ret.has(dep)) {\n ret.add(dep);\n rec(dep.behavior);\n }\n }\n };\n rec(this.general());\n if (genericTargets) {\n var list = Object.values(genericTargets);\n for (var i = 0; i < list.length; i += 1) {\n var dep = list[i];\n if (typeof dep === 'string')\n continue;\n if (!ret.has(dep)) {\n ret.add(dep);\n rec(dep.behavior);\n }\n }\n }\n return ret;\n };\n /** Same as `prepare` method in the prototype (for backward compatibility) */\n Behavior.prepare = function (behavior) {\n behavior.prepare();\n };\n /**\n * Execute the prepare phase (an optimization phase) of this behavior\n *\n * Every behavior needs this phase for better future performance.\n * However, this phase requires a little time for execution,\n * and requires its all dependent behaviors created.\n * If a dependent behavior is not prepared, then its prepare phase is also executed.\n */\n Behavior.prototype.prepare = function () {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n var _k;\n if (!this._$unprepared)\n return;\n this._$unprepared = false;\n var is = this.is;\n var space = this.ownerSpace;\n var builder = this._$builder;\n // mixin dependent behaviors\n var flatAncestors = this._$flatAncestors;\n if (Array.isArray(builder._$behaviors)) {\n for (var i = 0; i < builder._$behaviors.length; i += 1) {\n var parentName = builder._$behaviors[i];\n var parent_1 = null;\n if (parentName instanceof Behavior) {\n parent_1 = parentName;\n }\n else {\n var parentNameStr = String(parentName);\n if (space) {\n parent_1 = space.getBehaviorByUrl(parentNameStr, is);\n }\n if (!parent_1) {\n triggerWarning(\"behavior \\\"\".concat(parentNameStr, \"\\\" is not found (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n }\n if (!parent_1)\n continue;\n if (parent_1._$unprepared)\n Behavior.prepare(parent_1);\n // merge trait behaviors\n var traitBehaviors_1 = parent_1._$traitBehaviors;\n if (traitBehaviors_1 !== undefined) {\n if (!this._$traitBehaviors)\n this._$traitBehaviors = [];\n (_a = this._$traitBehaviors).push.apply(_a, traitBehaviors_1);\n }\n // merge static data\n var staticData_1 = parent_1._$staticData;\n if (staticData_1) {\n if (!this._$staticData)\n this._$staticData = {};\n shallowMerge(this._$staticData, staticData_1);\n }\n // merge methods\n Object.assign(this._$methodMap, parent_1._$methodMap);\n // merge properties\n Object.assign(this._$propertyMap, parent_1._$propertyMap);\n // merge dynamic data\n (_b = this._$data).push.apply(_b, parent_1._$data);\n // merge observers\n var observers_1 = parent_1._$observers;\n for (var i_2 = 0; i_2 < observers_1.length; i_2 += 1) {\n var item = observers_1[i_2];\n if (item.once) {\n if (this._$observers.indexOf(item) >= 0)\n continue;\n }\n this._$observers.push(item);\n }\n // merge lifetimes\n var lifetimes_1 = parent_1._$lifetimes;\n for (var i_3 = 0; i_3 < lifetimes_1.length; i_3 += 1) {\n var item = lifetimes_1[i_3];\n if (item.once) {\n if (this._$lifetimes.indexOf(item) >= 0)\n continue;\n }\n this._$lifetimes.push(item);\n }\n // merge page lifetimes\n var pageLifetimes_1 = parent_1._$pageLifetimes;\n if (pageLifetimes_1 !== undefined) {\n if (this._$pageLifetimes) {\n for (var i_4 = 0; i_4 < pageLifetimes_1.length; i_4 += 1) {\n var item = pageLifetimes_1[i_4];\n if (item.once) {\n if (this._$pageLifetimes.indexOf(item) >= 0)\n continue;\n }\n this._$pageLifetimes.push(item);\n }\n }\n else {\n this._$pageLifetimes = pageLifetimes_1.slice();\n }\n }\n // merge legacy listeners\n var listeners_1 = parent_1._$listeners;\n if (listeners_1 !== undefined) {\n if (!this._$listeners)\n this._$listeners = [];\n (_c = this._$listeners).push.apply(_c, listeners_1);\n }\n // merge relations\n var relations_1 = parent_1._$relationMap;\n if (relations_1 !== undefined) {\n if (!this._$relationMap) {\n this._$relationMap = Object.create(null);\n }\n Object.assign(this._$relationMap, relations_1);\n }\n // merge init\n (_d = this._$init).push.apply(_d, parent_1._$init);\n // construct flat ancestors\n parent_1._$flatAncestors.forEach(function (p) {\n flatAncestors.add(p);\n });\n }\n }\n // init trait behaviors\n var traitBehaviors = builder._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n if (!this._$traitBehaviors)\n this._$traitBehaviors = [];\n (_e = this._$traitBehaviors).push.apply(_e, traitBehaviors);\n }\n // init using\n if (typeof builder._$using === 'object' && builder._$using !== null) {\n var hasPlaceholders = typeof builder._$placeholders === 'object' && builder._$placeholders !== null;\n var keys = Object.keys(builder._$using);\n var _loop_1 = function (i) {\n var k = keys[i];\n var v = builder._$using[k];\n var placeholder = null;\n if (hasPlaceholders) {\n placeholder = (_k = builder._$placeholders[k]) !== null && _k !== void 0 ? _k : null;\n }\n if (v instanceof ComponentDefinition) {\n this_1._$using[k] = {\n final: v,\n source: this_1,\n placeholder: placeholder,\n waiting: null,\n };\n }\n else if (space) {\n var path = String(v);\n var final = space.getComponentByUrlWithoutDefault(path, is);\n if (final) {\n this_1._$using[k] = {\n final: final,\n source: this_1,\n placeholder: null,\n waiting: null,\n };\n }\n else if (placeholder !== null) {\n var p_1 = {\n final: null,\n source: this_1,\n placeholder: placeholder,\n waiting: null,\n };\n var wl = space._$componentWaitingList(path, is);\n if (wl) {\n wl.add(function (c) {\n p_1.final = c;\n p_1.placeholder = null;\n p_1.waiting = null;\n });\n p_1.waiting = wl;\n }\n this_1._$using[k] = p_1;\n }\n else {\n var final_1 = space.getGlobalUsingComponent(path);\n if (typeof final_1 === 'string') {\n this_1._$using[k] = final_1;\n }\n else {\n this_1._$using[k] = {\n final: final_1,\n source: this_1,\n placeholder: null,\n waiting: null,\n };\n }\n }\n }\n else {\n triggerWarning(\"cannot find component \\\"\".concat(String(v), \"\\\" (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n };\n var this_1 = this;\n for (var i = 0; i < keys.length; i += 1) {\n _loop_1(i);\n }\n }\n // init generics\n if (typeof builder._$generics === 'object' && builder._$generics !== null) {\n var generics = (this._$generics = []);\n var genericDefaults = Object.create(null);\n this._$genericDefaults = genericDefaults;\n var genericKeys = Object.keys(builder._$generics);\n for (var i = 0; i < genericKeys.length; i += 1) {\n var k = genericKeys[i];\n var genericDef = builder._$generics[k];\n var defaultComp = null;\n var d = genericDef === true ? undefined : genericDef === null || genericDef === void 0 ? void 0 : genericDef.default;\n if (d !== undefined) {\n if (d instanceof ComponentDefinition) {\n defaultComp = d;\n }\n else if (space) {\n var tagName = String(d);\n defaultComp =\n space.getComponentByUrlWithoutDefault(tagName, is) ||\n space.getGlobalUsingComponent(tagName);\n }\n else {\n triggerWarning(\"cannot define generic \\\"\".concat(k, \"\\\" without a default implementor (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n }\n generics.push(k);\n genericDefaults[k] = defaultComp;\n }\n }\n // init static data\n var staticData = builder._$staticData;\n if (staticData) {\n if (!this._$staticData) {\n this._$staticData = staticData;\n }\n else {\n shallowMerge(this._$staticData, staticData);\n }\n }\n // init methods (methods should be initialized before others with function refs)\n var methods = builder._$methods;\n for (var i = 0; i < methods.length; i += 1) {\n var _l = methods[i], name_7 = _l.name, func = _l.func;\n this._$methodMap[name_7] = func;\n }\n // init properties\n var properties = builder._$properties;\n if (properties !== undefined) {\n var initValueFuncs_1 = [];\n var _loop_2 = function (i) {\n var _p = properties[i], name_8 = _p.name, def = _p.def;\n var shortHandDef = normalizePropertyTypeShortHand(def);\n var d;\n if (shortHandDef !== null) {\n d = shortHandDef;\n }\n else {\n var propDef = def;\n var type = normalizePropertyType(propDef.type);\n var optionalTypes = null;\n if (Array.isArray(propDef.optionalTypes)) {\n optionalTypes = propDef.optionalTypes.map(normalizePropertyType);\n if (optionalTypes.length > 0) {\n if (type === \"invalid\" /* NormalizedPropertyType.Invalid */ || type === \"any\" /* NormalizedPropertyType.Any */) {\n type = optionalTypes[0];\n }\n }\n }\n if (type === \"invalid\" /* NormalizedPropertyType.Invalid */) {\n triggerWarning(\"the type of property \\\"\".concat(name_8, \"\\\" is illegal (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n var value = propDef.value;\n if (propDef.value === undefined) {\n if (type === \"string\" /* NormalizedPropertyType.String */)\n value = '';\n else if (type === \"number\" /* NormalizedPropertyType.Number */)\n value = 0;\n else if (type === \"boolean\" /* NormalizedPropertyType.Boolean */)\n value = false;\n else if (type === \"array\" /* NormalizedPropertyType.Array */)\n value = [];\n else\n value = null;\n }\n else if (propDef.default !== undefined) {\n triggerWarning(\"the initial value of property \\\"\".concat(name_8, \"\\\" is not used when its default is provided (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n var observer = void 0;\n if (typeof propDef.observer === 'function') {\n observer = propDef.observer;\n }\n else if (propDef.observer) {\n observer = this_2._$methodMap[propDef.observer] || null;\n }\n else {\n observer = null;\n if (propDef.observer !== undefined) {\n triggerWarning(\"the observer of property \\\"\".concat(name_8, \"\\\" is not a function (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n }\n var comparer = void 0;\n if (typeof propDef.comparer === 'function') {\n comparer = propDef.comparer;\n }\n else {\n comparer = null;\n if (propDef.comparer !== undefined) {\n triggerWarning(\"the comparer of property \\\"\".concat(name_8, \"\\\" is not a function (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n }\n var reflectIdPrefix = !!propDef.reflectIdPrefix;\n d = {\n type: type,\n optionalTypes: optionalTypes,\n value: value,\n default: propDef.default,\n observer: observer,\n comparer: comparer,\n reflectIdPrefix: reflectIdPrefix,\n };\n }\n this_2._$propertyMap[name_8] = d;\n initValueFuncs_1.push({\n name: name_8,\n func: d.default === undefined ? function () { return simpleDeepCopy(d.value); } : d.default,\n });\n };\n var this_2 = this;\n for (var i = 0; i < properties.length; i += 1) {\n _loop_2(i);\n }\n this._$data.push(function () {\n var ret = {};\n for (var i = 0; i < initValueFuncs_1.length; i += 1) {\n var _a = initValueFuncs_1[i], name_9 = _a.name, func = _a.func;\n ret[name_9] = func();\n }\n return ret;\n });\n }\n // init dynamic data\n (_f = this._$data).push.apply(_f, builder._$data);\n // observers\n var observers = builder._$observers;\n if (observers !== undefined) {\n for (var i = 0; i < observers.length; i += 1) {\n var _m = observers[i], dataPaths = _m.dataPaths, func = _m.func, once = _m.once;\n var observer = typeof func === 'function' ? func : this._$methodMap[func];\n if (typeof observer === 'function') {\n this._$observers.push({ dataPaths: dataPaths, observer: observer, once: once });\n }\n else {\n triggerWarning(\"the \\\"\".concat(String(observer), \"\\\" observer is not a function (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n }\n }\n // lifetimes\n var lifetimes = builder._$lifetimes;\n (_g = this._$lifetimes).push.apply(_g, lifetimes);\n // page lifetimes\n var pageLifetimes = builder._$pageLifetimes;\n if (pageLifetimes) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n (_h = this._$pageLifetimes).push.apply(_h, pageLifetimes);\n }\n // listeners\n var listeners = builder._$listeners;\n if (listeners !== undefined) {\n var keys = Object.keys(listeners);\n if (keys.length > 0) {\n this._$listeners = [];\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n var v = listeners[k];\n var listener = typeof v === 'function' ? v : this._$methodMap[v];\n if (listener) {\n var dot = k.indexOf('.');\n var id = void 0;\n var ev = void 0;\n if (dot >= 0) {\n id = k.slice(0, dot);\n ev = k.slice(dot + 1);\n }\n else {\n id = '';\n ev = k;\n }\n this._$listeners.push({ id: id, ev: ev, listener: listener });\n }\n else {\n triggerWarning(\"the \\\"\".concat(k, \"\\\" listener is not a function or a method name (when preparing behavior \\\"\").concat(is, \"\\\").\"));\n }\n }\n }\n }\n // relations\n var relations = builder._$relations;\n if (relations !== undefined) {\n if (!this._$relationMap) {\n this._$relationMap = Object.create(null);\n }\n for (var i = 0; i < relations.length; i += 1) {\n var _o = relations[i], key = _o.name, relation = _o.rel;\n if (relation === undefined || relation === null)\n continue;\n var rel = normalizeRelation(space, is, key, relation);\n if (rel)\n this._$relationMap[key] = rel;\n }\n }\n // init funcs\n (_j = this._$init).push.apply(_j, builder._$init);\n flatAncestors.add(this);\n };\n /**\n * Get the template content\n *\n * This method is usually used by the template engine.\n */\n Behavior.prototype.getTemplate = function () {\n return this._$template;\n };\n Behavior.prototype._$updateTemplate = function (template) {\n this._$template = template;\n };\n /** Check whether the `other` behavior is a dependent behavior of this behavior */\n Behavior.prototype.hasBehavior = function (other) {\n if (this._$unprepared)\n this.prepare();\n if (other instanceof Behavior) {\n return this._$flatAncestors.has(other);\n }\n if (this.ownerSpace) {\n var b = this.ownerSpace.getBehaviorByUrl(other, this.is);\n if (!b) {\n return false;\n }\n return this._$flatAncestors.has(b);\n }\n return false;\n };\n /**\n * Get the methods\n *\n * Only valid after `prepare` .\n */\n Behavior.prototype.getMethods = function () {\n return this._$methodMap;\n };\n /** @internal */\n Behavior.prototype._$generateObserverTree = function () {\n var ot = new DataGroupObserverTree(this._$propertyMap);\n var observers = this._$observers;\n for (var i = 0; i < observers.length; i += 1) {\n var _a = observers[i], dataPaths = _a.dataPaths, observer = _a.observer;\n ot.addObserver(observer, dataPaths);\n }\n return ot;\n };\n /** @internal */\n Behavior.prototype._$getAllLifetimeFuncs = function () {\n var ret = Object.create(null);\n var lifetimes = this._$lifetimes;\n for (var i = 0; i < lifetimes.length; i += 1) {\n var _a = lifetimes[i], name_10 = _a.name, func = _a.func;\n if (ret[name_10]) {\n ret[name_10].add(func);\n }\n else {\n var fa = (ret[name_10] = new FuncArr());\n fa.add(func);\n }\n }\n return ret;\n };\n /** @internal */\n Behavior.prototype._$getAllPageLifetimeFuncs = function () {\n var ret = Object.create(null);\n var pageLifetimes = this._$pageLifetimes;\n if (!pageLifetimes)\n return ret;\n for (var i = 0; i < pageLifetimes.length; i += 1) {\n var _a = pageLifetimes[i], name_11 = _a.name, func = _a.func;\n if (ret[name_11]) {\n ret[name_11].add(func);\n }\n else {\n var fa = (ret[name_11] = new FuncArr());\n fa.add(func);\n }\n }\n return ret;\n };\n return Behavior;\n}());\nexport { Behavior };\n","/**\n * Interface that can be implement dynamically\n *\n * A `TraitBehavior` is like a TypeScript interface, but can be implemented dynamically.\n * It requires the implementors to implement `TIn` .\n * Also, it can provide do a transform from `TIn` to `TOut` as common logic of the trait.\n */\nvar TraitBehavior = /** @class */ (function () {\n /** @internal */\n // eslint-disable-next-line no-useless-constructor\n function TraitBehavior(ownerSpace, trans) {\n this.ownerSpace = ownerSpace;\n this._$trans = trans;\n }\n /** @internal */\n TraitBehavior.prototype._$implement = function (impl) {\n var _a;\n return ((_a = this._$trans) === null || _a === void 0 ? void 0 : _a.call(this, impl)) || impl;\n };\n return TraitBehavior;\n}());\nexport { TraitBehavior };\n/**\n * A manager that can implement multiple different trait behaviors\n */\nvar TraitGroup = /** @class */ (function () {\n function TraitGroup() {\n this._$traits = new WeakMap();\n }\n TraitGroup.prototype.implement = function (traitBehavior, impl) {\n var traitImpl = traitBehavior._$implement(impl);\n this._$traits.set(traitBehavior, traitImpl);\n };\n TraitGroup.prototype.get = function (traitBehavior) {\n return this._$traits.get(traitBehavior);\n };\n return TraitGroup;\n}());\nexport { TraitGroup };\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { FuncArr, safeCallback, triggerWarning } from './func_arr';\nimport { Element } from './element';\nimport { globalOptions, normalizeComponentOptions, getDefaultComponentSpace, getDefaultBackendContext, } from './global_options';\nimport { METHOD_TAG, } from './component_params';\nimport { normalizeRelation, } from './behavior';\nimport { simpleDeepCopy } from './data_utils';\nimport { DataGroup, getDeepCopyStrategy, } from './data_proxy';\nimport { Relation, generateRelationDefinitionGroup } from './relation';\nimport { ClassList } from './class_list';\nimport { parseSinglePath, parseMultiPaths } from './data_path';\nimport { BM } from './backend/mode';\nimport { TraitBehavior, TraitGroup } from './trait_behaviors';\nexport var convertGenerics = function (compDef, sourceBehavior, owner, genericTargets) {\n var space = sourceBehavior.ownerSpace;\n var hostUsing = owner === null || owner === void 0 ? void 0 : owner._$behavior._$using;\n var hostGenericImpls = owner === null || owner === void 0 ? void 0 : owner._$genericImpls;\n if (!compDef._$detail)\n compDef.prepare();\n var childBeh = compDef.behavior;\n var genericImpls;\n var generics = childBeh._$generics;\n if (generics) {\n var genericDefaults = childBeh._$genericDefaults;\n genericImpls = Object.create(null);\n for (var i = 0; i < generics.length; i += 1) {\n var key = generics[i];\n if (genericTargets && Object.prototype.hasOwnProperty.call(genericTargets, key)) {\n var target = genericTargets[key];\n if (typeof target === 'string') {\n if (hostUsing === null || hostUsing === void 0 ? void 0 : hostUsing[target]) {\n genericImpls[key] = hostUsing[target];\n }\n else if (hostGenericImpls && hostGenericImpls[target]) {\n genericImpls[key] = hostGenericImpls[target];\n }\n else {\n var comp = space.getGlobalUsingComponent(target);\n if (typeof comp === 'string') {\n genericImpls[key] = comp;\n }\n else if (comp) {\n genericImpls[key] = {\n final: comp,\n source: sourceBehavior,\n placeholder: null,\n waiting: null,\n };\n }\n else {\n triggerWarning(\"Generic \\\"\".concat(key, \"\\\" value \\\"\").concat(target, \"\\\" is not valid (on component \\\"\").concat(compDef.is, \"\\\").\"));\n var defaultComp = space.getDefaultComponent();\n if (!defaultComp) {\n throw new Error(\"Cannot find default component for generic \\\"\".concat(key, \"\\\" (on component \\\"\").concat(compDef.is, \"\\\")\"));\n }\n genericImpls[key] = {\n final: defaultComp,\n source: sourceBehavior,\n placeholder: null,\n waiting: null,\n };\n }\n }\n }\n else {\n genericImpls[key] = target;\n }\n }\n else {\n var defaultComp = genericDefaults[key] || space.getDefaultComponent();\n if (!defaultComp) {\n throw new Error(\"Cannot find default component for generic \\\"\".concat(key, \"\\\" (on component \\\"\").concat(compDef.is, \"\\\")\"));\n }\n genericImpls[key] =\n typeof defaultComp === 'string'\n ? defaultComp\n : {\n final: defaultComp,\n source: sourceBehavior,\n placeholder: null,\n waiting: null,\n };\n }\n }\n }\n else {\n genericImpls = null;\n }\n return genericImpls;\n};\nexport var resolvePlaceholder = function (placeholder, space, behavior, genericImpls) {\n var _a;\n var using = behavior._$using;\n var usingTarget = using[placeholder] || (genericImpls && genericImpls[placeholder]);\n var ret = null;\n if (usingTarget) {\n if (typeof usingTarget === 'string') {\n ret = usingTarget;\n }\n else if (usingTarget.placeholder === null) {\n ret = usingTarget.final;\n }\n else {\n triggerWarning(\"Placeholder on generic implementation is not valid (on component \\\"\".concat(behavior.is, \"\\\")\"));\n }\n }\n if (ret)\n return ret;\n var comp = (_a = space.getGlobalUsingComponent(placeholder)) !== null && _a !== void 0 ? _a : space.getDefaultComponent();\n if (!comp) {\n throw new Error(\"Cannot find default component for placeholder target \\\"\".concat(placeholder, \"\\\" (on component \\\"\").concat(behavior.is, \"\\\")\"));\n }\n return comp;\n};\nvar ComponentDefinition = /** @class */ (function () {\n /** @internal */\n function ComponentDefinition(behavior) {\n this.behavior = behavior;\n this.is = this.behavior.is;\n this._$detail = null;\n this._$options = normalizeComponentOptions(behavior._$options, behavior.ownerSpace.getComponentOptions());\n var templateEngine = this._$options.templateEngine;\n this._$templateEngine = templateEngine;\n }\n ComponentDefinition.prototype.general = function () {\n return this;\n };\n /** Get the normalized component options */\n ComponentDefinition.prototype.getComponentOptions = function () {\n return this._$options;\n };\n /**\n * List all component dependencies (recursively)\n *\n * This method will prepare the underlying behavior.\n * The caller component is not included in the result.\n */\n ComponentDefinition.prototype.getComponentDependencies = function () {\n return this.behavior.getComponentDependencies();\n };\n /**\n * Update the template field\n *\n * This method has no effect if the template engine does not support template update.\n */\n ComponentDefinition.prototype.updateTemplate = function (template) {\n var _a;\n this.behavior._$updateTemplate(template);\n if ((_a = this._$detail) === null || _a === void 0 ? void 0 : _a.template.updateTemplate) {\n this._$detail.template.updateTemplate(this.behavior);\n }\n else {\n triggerWarning(\"The template engine of component \\\"\".concat(this.is, \"\\\" does not support template update\"));\n }\n };\n ComponentDefinition.prototype.isPrepared = function () {\n return !!this._$detail;\n };\n ComponentDefinition.prototype.prepare = function () {\n if (this._$detail)\n return;\n this.behavior.prepare();\n var behavior = this.behavior;\n var options = this._$options;\n var propSetters = {};\n // add properties to component prototype if needed\n if (options.writeFieldsToNode) {\n var keys = Object.keys(behavior._$propertyMap);\n var _loop_1 = function (i) {\n var propName = keys[i];\n propSetters[propName] = {\n enumerable: true,\n get: function () {\n return this._$dataGroup.data[propName];\n },\n set: function (v) {\n var dataGroup = this._$dataGroup;\n dataGroup.replaceDataOnPath([propName], v);\n dataGroup.applyDataUpdates();\n },\n };\n };\n for (var i = 0; i < keys.length; i += 1) {\n _loop_1(i);\n }\n var methodKeys = Object.keys(behavior._$methodMap);\n for (var i = 0; i < methodKeys.length; i += 1) {\n var methodName = methodKeys[i];\n propSetters[methodName] = {\n enumerable: true,\n value: behavior._$methodMap[methodName],\n };\n }\n }\n // create prototype\n var protoFunc = function ComponentInst() {\n /* a component */\n };\n propSetters.constructor = {\n value: protoFunc,\n writable: true,\n };\n protoFunc.prototype = Object.create(Component.prototype, propSetters);\n var proto = protoFunc.prototype;\n proto._$behavior = behavior;\n proto._$definition = this;\n proto._$methodMap = behavior._$methodMap;\n // init other helpers\n var dataGroupObserverTree = behavior._$generateObserverTree();\n proto._$lifetimeFuncs = behavior._$getAllLifetimeFuncs();\n proto._$pageLifetimeFuncs = behavior._$getAllPageLifetimeFuncs();\n var relationDefinitionGroup = generateRelationDefinitionGroup(behavior._$relationMap);\n var dataDeepCopy = getDeepCopyStrategy(options.dataDeepCopy);\n var propertyPassingDeepCopy = getDeepCopyStrategy(options.propertyPassingDeepCopy);\n // call template engine\n var template = this._$templateEngine.create(behavior, options);\n this._$detail = {\n proto: proto,\n template: template,\n dataGroupObserverTree: dataGroupObserverTree,\n dataDeepCopy: dataDeepCopy,\n propertyPassingDeepCopy: propertyPassingDeepCopy,\n relationDefinitionGroup: relationDefinitionGroup,\n };\n };\n return ComponentDefinition;\n}());\nexport { ComponentDefinition };\nvar componentInstanceIdInc = 1;\n/**\n * A node that has a shadow tree attached to it\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n function Component() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n return _super.call(this) || this;\n }\n Component.prototype.general = function () {\n return this;\n };\n /**\n * Cast a general component node to the instance of the specified component\n *\n * Returns `null` if the component node is not the instance of the specified component.\n */\n Component.prototype.asInstanceOf = function (componentDefinition) {\n if (this._$behavior !== componentDefinition.behavior) {\n return null;\n }\n return this;\n };\n Component.register = function (def, space) {\n return (space || getDefaultComponentSpace()).defineComponent(def);\n };\n /** @internal */\n Component._$tagMethod = function (func) {\n var taggedMethod = func;\n taggedMethod[METHOD_TAG] = true;\n return taggedMethod;\n };\n /** @internal */\n Component._$isTaggedMethod = function (func) {\n return typeof func === 'function' && !!func[METHOD_TAG];\n };\n /** @internal */\n Component._$advancedCreate = function (tagName, def, owner, backendContext, genericImpls, placeholderHandler, initPropValues) {\n var _a, _b;\n if (!def._$detail)\n def.prepare();\n var _c = def._$detail, proto = _c.proto, template = _c.template, dataDeepCopy = _c.dataDeepCopy, propertyPassingDeepCopy = _c.propertyPassingDeepCopy, relationDefinitionGroup = _c.relationDefinitionGroup;\n var dataGroupObserverTree = def._$detail.dataGroupObserverTree;\n var options = def._$options;\n var behavior = def.behavior;\n var nodeTreeContext = owner\n ? owner._$nodeTreeContext\n : backendContext || globalOptions.backendContext || getDefaultBackendContext();\n var external = options.externalComponent;\n var propEarlyInit = options.propertyEarlyInit;\n var writeExtraInfoToAttr = globalOptions.writeExtraInfoToAttr;\n var virtualHost = options.virtualHost;\n // initialize component instance object\n var comp = Object.create(proto);\n comp._$genericImpls = genericImpls;\n comp._$placeholderHandler = placeholderHandler;\n comp._$external = external;\n comp.tagName = tagName;\n comp._$methodCaller = comp;\n // create backend element\n var backendElement = null;\n if (owner) {\n if (!virtualHost &&\n (BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */))) {\n backendElement = owner._$nodeTreeContext.document.createElement(tagName);\n }\n else if (!virtualHost &&\n (BM.COMPOSED || (BM.DYNAMIC && nodeTreeContext.mode === 2 /* BackendMode.Composed */))) {\n var backend_1 = owner._$nodeTreeContext;\n backendElement = backend_1.createElement(options.hostNodeTagName, tagName);\n }\n else if (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */)) {\n var backend_2 = owner._$backendShadowRoot;\n backendElement = (backend_2 === null || backend_2 === void 0 ? void 0 : backend_2.createComponent(tagName)) || null;\n }\n }\n else {\n if (!virtualHost &&\n (BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */))) {\n backendElement = nodeTreeContext.document.createElement(tagName);\n }\n else if (!virtualHost &&\n (BM.COMPOSED || (BM.DYNAMIC && nodeTreeContext.mode === 2 /* BackendMode.Composed */))) {\n backendElement =\n nodeTreeContext.createElement(options.hostNodeTagName, tagName) || null;\n }\n else if (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */)) {\n var sr = nodeTreeContext.getRootNode();\n if (!sr)\n throw new Error('Failed getting backend shadow tree');\n backendElement = sr.createComponent(tagName) || null;\n }\n }\n comp._$initialize(virtualHost, backendElement, owner, nodeTreeContext);\n // init class list\n var externalClassAlias = {};\n if (behavior._$externalClasses) {\n var externalClasses = behavior._$externalClasses;\n for (var i = 0; i < externalClasses.length; i += 1) {\n externalClassAlias[externalClasses[i]] = null;\n }\n }\n comp.classList = new ClassList(comp, externalClassAlias);\n if (backendElement) {\n var styleScope = owner\n ? owner.getHostNode()._$definition._$options.styleScope\n : options.styleScope;\n if (styleScope) {\n if (!(BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */))) {\n ;\n backendElement.setStyleScope(styleScope, options.styleScope);\n }\n }\n if (owner && writeExtraInfoToAttr) {\n var prefix = (_a = owner\n .getHostNode()\n ._$behavior.ownerSpace) === null || _a === void 0 ? void 0 : _a.styleScopeManager.queryName(styleScope);\n if (prefix) {\n backendElement.setAttribute('exparser:info-class-prefix', \"\".concat(prefix, \"--\"));\n }\n }\n }\n // associate in backend\n if (backendElement) {\n if (!(BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */))) {\n ;\n backendElement.associateValue(comp);\n }\n else {\n ;\n nodeTreeContext.associateValue(backendElement, comp);\n }\n }\n // write attr\n if (writeExtraInfoToAttr && backendElement) {\n var componentInstanceId = componentInstanceIdInc;\n componentInstanceIdInc += 1;\n comp._$componentInstanceId = componentInstanceId;\n backendElement.setAttribute('exparser:info-component-id', componentInstanceId);\n }\n comp._$idPrefix = options.idPrefixGenerator\n ? options.idPrefixGenerator.call(comp)\n : '';\n // combine initial data\n var staticData = behavior._$staticData;\n var dataGenFuncs = behavior._$data;\n var data;\n if (staticData === undefined) {\n if (dataGenFuncs.length === 1) {\n var f = dataGenFuncs[0];\n data = f();\n }\n else {\n data = {};\n for (var i = 0; i < dataGenFuncs.length; i += 1) {\n var f = dataGenFuncs[i];\n Object.assign(data, f());\n }\n }\n }\n else {\n data = simpleDeepCopy(staticData);\n for (var i = 0; i < dataGenFuncs.length; i += 1) {\n var f = dataGenFuncs[i];\n Object.assign(data, f());\n }\n }\n // init relations\n var relation = (comp._$relation = new Relation(comp, relationDefinitionGroup));\n // init trait group\n comp._$traitGroup = new TraitGroup();\n var traitBehaviors = behavior._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n for (var i = 0; i < traitBehaviors.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n var _d = traitBehaviors[i], traitBehavior = _d.traitBehavior, impl = _d.impl;\n comp._$traitGroup.implement(traitBehavior, impl);\n }\n }\n // call method caller init\n if (behavior._$methodCallerInit) {\n var methodCaller = behavior._$methodCallerInit.call(comp);\n comp._$methodCaller = methodCaller;\n }\n // call init functions\n var initDone = false;\n function relationInit(relationDef) {\n if (initDone)\n throw new Error('Cannot execute init-time functions after initialization');\n var target = relationDef.target;\n var normalizedRel = normalizeRelation(behavior.ownerSpace, behavior.is, 'undefined', relationDef);\n var key;\n if (normalizedRel) {\n key = relation.add(normalizedRel);\n }\n else {\n key = Symbol('invalid');\n }\n var list = function () {\n var targetNodes = relation.getLinkedTargets(key);\n return targetNodes.map(function (x) { return x.getMethodCaller(); });\n };\n var listAsTrait = target instanceof TraitBehavior\n ? function () {\n var targetNodes = relation.getLinkedTargets(key);\n return targetNodes.map(function (x) { return x.traitBehavior(target); });\n }\n : undefined;\n return { list: list, listAsTrait: listAsTrait };\n }\n if (behavior._$init.length > 0) {\n var cowObserver_1 = true;\n var cowLifetime_1 = true;\n var cowPageLifetime_1 = true;\n var cowMethodMap = true;\n var methodCaller = comp.getMethodCaller();\n var builderContext = {\n self: methodCaller,\n data: data,\n setData: comp.setData.bind(comp),\n implement: function (traitBehavior, impl) {\n if (initDone)\n throw new Error('Cannot execute init-time functions after initialization');\n comp._$traitGroup.implement(traitBehavior, impl);\n },\n relation: relationInit,\n observer: function (dataPaths, func) {\n if (initDone)\n throw new Error('Cannot execute init-time functions after initialization');\n if (cowObserver_1) {\n cowObserver_1 = false;\n dataGroupObserverTree = dataGroupObserverTree.cloneSub();\n }\n dataGroupObserverTree.addObserver(func, parseMultiPaths(dataPaths));\n },\n lifetime: function (name, func) {\n if (initDone)\n throw new Error('Cannot execute init-time functions after initialization');\n if (cowLifetime_1) {\n cowLifetime_1 = false;\n comp._$lifetimeFuncs = behavior._$getAllLifetimeFuncs();\n }\n var fag = comp._$lifetimeFuncs;\n if (fag[name]) {\n fag[name].add(func);\n }\n else {\n var fa = (fag[name] = new FuncArr());\n fa.add(func);\n }\n },\n pageLifetime: function (name, func) {\n if (initDone)\n throw new Error('Cannot execute init-time functions after initialization');\n if (cowPageLifetime_1) {\n cowPageLifetime_1 = false;\n comp._$pageLifetimeFuncs = behavior._$getAllPageLifetimeFuncs();\n }\n var fag = comp._$pageLifetimeFuncs;\n if (fag[name]) {\n fag[name].add(func);\n }\n else {\n var fa = (fag[name] = new FuncArr());\n fa.add(func);\n }\n },\n method: function (func) { return Component._$tagMethod(func); },\n listener: function (func) { return Component._$tagMethod(func); },\n };\n var initFuncs = behavior._$init;\n for (var i = 0; i < initFuncs.length; i += 1) {\n var init = initFuncs[i];\n var exported = safeCallback('Component Init', init, methodCaller, [builderContext], undefined);\n if (exported) {\n var exportedKeys = Object.keys(exported);\n for (var j = 0; j < exportedKeys.length; j += 1) {\n var exportedKey = exportedKeys[j];\n var exportItem = exported[exportedKey];\n if (Component._$isTaggedMethod(exportItem)) {\n if (cowMethodMap) {\n cowMethodMap = false;\n comp._$methodMap = Object.create(comp._$methodMap);\n }\n comp._$methodMap[exportedKey] = exportItem;\n if (options.writeFieldsToNode) {\n ;\n comp[exportedKey] = exportItem;\n }\n }\n }\n }\n }\n }\n initDone = true;\n // init data\n var tmplInst = template.createInstance(comp);\n var shadowRoot = tmplInst.shadowRoot;\n comp.shadowRoot = shadowRoot;\n var dataGroup = new DataGroup(comp, data, options.pureDataPattern || null, dataDeepCopy, propertyPassingDeepCopy, options.reflectToAttributes, dataGroupObserverTree);\n comp._$dataGroup = dataGroup;\n // init template with init data\n if (propEarlyInit && initPropValues !== undefined)\n initPropValues(comp);\n tmplInst.initValues(dataGroup.innerData || dataGroup.data);\n comp._$tmplInst = tmplInst;\n dataGroup.setUpdateListener(tmplInst.updateValues.bind(tmplInst));\n // bind behavior listeners\n var listeners = behavior._$listeners;\n if (listeners !== undefined) {\n var _loop_2 = function (i) {\n var _e = listeners[i], id = _e.id, ev = _e.ev, gf = _e.listener;\n var listener = gf;\n if (id === 'this') {\n comp.addListener(ev, function (ev) { return listener.call(comp._$methodCaller, ev); });\n }\n else if (!external) {\n var sr = shadowRoot;\n var elem = id ? sr.getElementById(id) : sr;\n if (elem) {\n elem.addListener(ev, function (ev) { return listener.call(comp._$methodCaller, ev); });\n }\n }\n else {\n var sr = shadowRoot;\n var elem = id ? sr.getIdMap()[id] : sr.root;\n if (elem) {\n sr.setListener(elem, ev, function (ev) { return listener.call(comp._$methodCaller, ev); });\n }\n }\n };\n for (var i = 0; i < listeners.length; i += 1) {\n _loop_2(i);\n }\n }\n // trigger created lifetimes\n (_b = comp._$lifetimeFuncs.created) === null || _b === void 0 ? void 0 : _b.call(comp._$methodCaller, [], comp);\n if (!propEarlyInit && initPropValues !== undefined)\n initPropValues(comp);\n return comp;\n };\n Component.createWithGenericsAndContext = function (tagName, componentDefinition, genericTargets, backendContext, initPropValues) {\n var collectGenericImpls = function (def) {\n var genericImpls;\n if (genericTargets) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n genericImpls = Object.create(null);\n Object.entries(genericTargets).forEach(function (_a) {\n var key = _a[0], g = _a[1];\n genericImpls[key] = {\n final: g,\n source: def.behavior,\n placeholder: null,\n waiting: null,\n };\n });\n }\n return convertGenerics(def, def.behavior, undefined, genericImpls);\n };\n if (componentDefinition) {\n return Component._$advancedCreate(String(tagName), componentDefinition, null, backendContext, collectGenericImpls(componentDefinition), undefined, initPropValues);\n }\n if (tagName instanceof ComponentDefinition) {\n return Component._$advancedCreate(tagName.is, tagName, null, backendContext, collectGenericImpls(tagName), undefined);\n }\n var compDef = getDefaultComponentSpace().getComponentByUrl(tagName, '');\n return Component._$advancedCreate(tagName, compDef, null, backendContext, collectGenericImpls(compDef), undefined);\n };\n Component.createWithGenerics = function (tagName, componentDefinition, genericImpls, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, genericImpls, null, initPropValues);\n };\n Component.createWithContext = function (tagName, componentDefinition, backendContext, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, null, backendContext, initPropValues);\n };\n Component.create = function (tagName, componentDefinition, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, null, null, initPropValues);\n };\n Object.defineProperty(Component.prototype, \"is\", {\n get: function () {\n return this._$definition.is;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"properties\", {\n get: function () {\n return this._$dataGroup.data;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"data\", {\n get: function () {\n return this._$dataGroup.data;\n },\n set: function (newData) {\n var dataGroup = this._$dataGroup;\n Object.entries(newData).forEach(function (_a) {\n var key = _a[0], value = _a[1];\n return dataGroup.replaceDataOnPath([key], value);\n });\n dataGroup.applyDataUpdates();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Component.prototype, \"$\", {\n get: function () {\n if (this._$external) {\n return this.shadowRoot.getIdMap();\n }\n return this.shadowRoot._$getIdMap();\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Returns the shadow root element\n *\n * Returns `null` for external components.\n */\n Component.prototype.getShadowRoot = function () {\n if (this._$external) {\n return null;\n }\n return this.shadowRoot;\n };\n /**\n * Apply the template updates to this component instance\n *\n * This method has no effect if the template engine does not support template update.\n */\n Component.prototype.applyTemplateUpdates = function () {\n var _a;\n if ((_a = this._$tmplInst) === null || _a === void 0 ? void 0 : _a.updateTemplate) {\n var dataGroup = this._$dataGroup;\n this._$tmplInst.updateTemplate(this._$definition._$detail.template, dataGroup.innerData || dataGroup.data);\n }\n else {\n triggerWarning(\"The template engine of component \\\"\".concat(this.is, \"\\\" does not support template update\"));\n }\n };\n Component.listProperties = function (comp) {\n return Object.keys(comp._$behavior._$propertyMap);\n };\n Component.hasProperty = function (comp, propName) {\n return !!comp._$behavior._$propertyMap[propName];\n };\n /** List methods by the component definition (backward compatibility) */\n Component.getMethodsFromDef = function (compDef) {\n return compDef.behavior._$methodMap;\n };\n /**\n * Get a method\n *\n * If `useMethodCallerListeners` option is set for this component,\n * this method will use the corresponding fields in the `methodCaller` .\n */\n Component.getMethod = function (comp, methodName) {\n if (comp._$definition._$options.useMethodCallerListeners) {\n var method = comp._$methodCaller[methodName];\n return typeof method === 'function' ? method : undefined;\n }\n return comp._$methodMap[methodName];\n };\n /**\n * Call a method\n *\n * If `useMethodCallerListeners` option is set for this component,\n * this method will use the corresponding fields in the `methodCaller` .\n * Returns `undefined` if there is no such method.\n */\n Component.prototype.callMethod = function (methodName) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var func = Component.getMethod(this, methodName);\n return func === null || func === void 0 ? void 0 : func.call.apply(func, __spreadArray([this], args, false));\n };\n /**\n * Get the corresponding component definition\n */\n Component.prototype.getComponentDefinition = function () {\n return this._$definition;\n };\n /**\n * Get the options of the component\n */\n Component.prototype.getComponentOptions = function () {\n return this._$definition._$options;\n };\n /**\n * Check whether the `other` behavior is a dependent behavior or a implemented trait behavior\n */\n Component.prototype.hasBehavior = function (other) {\n if (other instanceof TraitBehavior) {\n return this._$traitGroup.get(other) !== undefined;\n }\n return this._$behavior.hasBehavior(other);\n };\n /** Get the root behavior of the component */\n Component.prototype.getRootBehavior = function () {\n return this._$behavior;\n };\n /**\n * Get the trait behavior implementation of the component\n *\n * Returns `undefined` if the specified trait behavior is not implemented.\n */\n Component.prototype.traitBehavior = function (traitBehavior) {\n return this._$traitGroup.get(traitBehavior);\n };\n /**\n * Set the caller (a.k.a. `this` ) of event callbacks and life-time callbacks\n *\n * By default, the caller is the component instance itself.\n * Use this method to override this behavior.\n */\n Component.prototype.setMethodCaller = function (caller) {\n this._$methodCaller = caller;\n };\n /**\n * Get the current caller set by `setMethodCaller`\n */\n Component.prototype.getMethodCaller = function () {\n return this._$methodCaller;\n };\n /**\n * Triggers a life-time callback on an element\n *\n * Normally external life-times should only be triggered by template engine.\n * Most cases should take a common method instead.\n */\n Component.prototype.triggerLifetime = function (name, args) {\n var f = this._$lifetimeFuncs[name];\n if (f)\n f.call(this._$methodCaller, args);\n };\n /**\n * @internal\n * @deprecated Rename to `triggerLifetime`\n */\n Component.prototype.triggerLifeTime = function (name, args) {\n return this.triggerLifetime(name, args);\n };\n /**\n * Triggers a page-life-time callback on an element\n */\n Component.prototype.triggerPageLifetime = function (name, args) {\n var rec = function (node) {\n if (node instanceof Component) {\n if (node._$pageLifetimeFuncs) {\n var f = node._$pageLifetimeFuncs[name];\n if (f)\n f.call(node._$methodCaller, args);\n }\n if (!node._$external)\n rec(node.shadowRoot);\n }\n var children = node.childNodes;\n for (var i = 0; i < children.length; i += 1) {\n var child = children[i];\n if (child instanceof Element) {\n rec(child);\n }\n }\n };\n rec(this);\n };\n /**\n * @internal\n * @deprecated Rename to `triggerPageLifetime`\n */\n Component.prototype.triggerPageLifeTime = function (name, args) {\n return this.triggerPageLifetime(name, args);\n };\n /**\n * Get the target elements of a relation\n */\n Component.prototype.getRelationNodes = function (relationKey) {\n var _a;\n return ((_a = this._$relation) === null || _a === void 0 ? void 0 : _a.getLinkedTargets(relationKey)) || [];\n };\n /** Check the existence of an external class */\n Component.prototype.hasExternalClass = function (name) {\n return this.classList._$hasAlias(name);\n };\n /** Update an external class value */\n Component.prototype.setExternalClass = function (name, target) {\n var cl = this.classList;\n cl._$setAlias(name, target);\n cl._$spreadAliasUpdate();\n };\n /** Schedule an update for an external class value */\n Component.prototype.scheduleExternalClassChange = function (name, target) {\n var cl = this.classList;\n cl._$setAlias(name, target);\n };\n /** Update multiple external class values */\n Component.prototype.applyExternalClassChanges = function () {\n ;\n this.classList._$spreadAliasUpdate();\n };\n /** Triggers a worklet change lifetime */\n Component.prototype.triggerWorkletChangeLifetime = function (name, value) {\n this.triggerLifetime('workletChange', [name, value]);\n };\n /** Check a field is excluded by pureDataPattern or not */\n Component.prototype.isInnerDataExcluded = function (fieldName) {\n var _a;\n return ((_a = this._$definition._$options.pureDataPattern) === null || _a === void 0 ? void 0 : _a.test(fieldName)) || false;\n };\n Component.getInnerData = function (comp) {\n return comp._$dataGroup.innerData;\n };\n Component.getDataProxy = function (comp) {\n return comp._$dataGroup;\n };\n Component.replaceWholeData = function (comp, newData) {\n comp._$dataGroup.replaceWholeData(newData);\n };\n Component.prototype.replaceDataOnPath = function (path, data) {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new Error('Cannot update data before component created');\n }\n dataProxy.replaceDataOnPath(path, data);\n };\n Component.prototype.spliceArrayDataOnPath = function (path, index, del, inserts) {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new Error('Cannot update data before component created');\n }\n dataProxy.spliceArrayDataOnPath(path, index, del, inserts);\n };\n /**\n * Check whether there are pending changes or not\n */\n Component.prototype.hasPendingChanges = function () {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined)\n return false;\n return dataProxy.getChanges().length > 0;\n };\n /**\n * Apply all scheduled updates immediately\n *\n * Inside observers, it is generally not .\n */\n Component.prototype.applyDataUpdates = function () {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new Error('Cannot update data before component created');\n }\n dataProxy.applyDataUpdates();\n };\n /**\n * Pending all data updates in the callback, and apply updates after callback returns\n *\n * This function helps grouping several `replaceDataOnPath` or `spliceArrayDataOnPath` calls,\n * and then apply them at the end of the callback.\n * `setData` and `applyDataUpdates` calls inside the callback still apply updates immediately.\n */\n Component.prototype.groupUpdates = function (callback) {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new Error('Cannot update data before component created');\n }\n var ret = callback();\n dataProxy.applyDataUpdates();\n return ret;\n };\n Component.prototype.updateData = function (newData) {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new Error('Cannot update data before component created');\n }\n if (typeof newData === 'object' && newData !== null) {\n var keys = Object.keys(newData);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var p = parseSinglePath(key);\n if (p) {\n dataProxy.replaceDataOnPath(p, newData[key]);\n }\n }\n }\n };\n Component.prototype.setData = function (newData) {\n var dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new Error('Cannot update data before component created');\n }\n if (typeof newData === 'object' && newData !== null) {\n var keys = Object.keys(newData);\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var p = parseSinglePath(key);\n if (p) {\n dataProxy.replaceDataOnPath(p, newData[key]);\n }\n }\n }\n dataProxy.applyDataUpdates();\n };\n return Component;\n}(Element));\nexport { Component };\n","/* eslint-disable class-methods-use-this */\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { ShadowRoot, } from '..';\nimport { GlassEaselTemplateDOM } from './native_rendering';\nimport { ProcGenWrapper, } from './proc_gen_wrapper';\nvar DEFAULT_PROC_GEN = function () { return ({\n C: function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot) {\n defineSlot('');\n },\n B: Object.create(null),\n}); };\nexport var DEFAULT_PROC_GEN_GROUP = function () { return DEFAULT_PROC_GEN; };\nvar BindingMapUpdateEnabled;\n(function (BindingMapUpdateEnabled) {\n BindingMapUpdateEnabled[BindingMapUpdateEnabled[\"Disabled\"] = 0] = \"Disabled\";\n BindingMapUpdateEnabled[BindingMapUpdateEnabled[\"Enabled\"] = 1] = \"Enabled\";\n BindingMapUpdateEnabled[BindingMapUpdateEnabled[\"Forced\"] = 2] = \"Forced\";\n})(BindingMapUpdateEnabled || (BindingMapUpdateEnabled = {}));\nvar GlassEaselTemplateEngine = /** @class */ (function () {\n function GlassEaselTemplateEngine() {\n }\n GlassEaselTemplateEngine.prototype.create = function (behavior, componentOptions) {\n if (componentOptions.externalComponent) {\n return new GlassEaselTemplateDOM(behavior);\n }\n return new GlassEaselTemplate(behavior);\n };\n return GlassEaselTemplateEngine;\n}());\nexport { GlassEaselTemplateEngine };\nvar GlassEaselTemplate = /** @class */ (function () {\n function GlassEaselTemplate(behavior) {\n this.updateTemplate(behavior);\n }\n /**\n * Update the underlying template content\n *\n * This method does not affect created instances.\n */\n GlassEaselTemplate.prototype.updateTemplate = function (behavior) {\n var template = behavior._$template;\n if (typeof template !== 'object' && template !== undefined) {\n throw new Error(\"Component template of \".concat(behavior.is, \" must be a valid compiled template (or \\\"null\\\" for default template).\"));\n }\n var c = template || {\n content: DEFAULT_PROC_GEN_GROUP,\n };\n this.genObjectGroupEnv = {\n list: c.groupList || Object.create(null),\n group: c.content,\n };\n this.updateMode = c.updateMode || '';\n this.disallowNativeNode = c.disallowNativeNode || false;\n this.eventObjectFilter = c.eventObjectFilter;\n };\n GlassEaselTemplate.prototype.createInstance = function (comp) {\n return new GlassEaselTemplateInstance(this, comp);\n };\n return GlassEaselTemplate;\n}());\nvar GlassEaselTemplateInstance = /** @class */ (function () {\n function GlassEaselTemplateInstance(template, comp) {\n this.comp = comp;\n this.shadowRoot = ShadowRoot.createShadowRoot(comp);\n this.shadowRoot.destroyBackendElementOnDetach();\n this._$applyTemplate(template);\n }\n GlassEaselTemplateInstance.prototype.updateTemplate = function (template, data) {\n this._$applyTemplate(template);\n this.shadowRoot.removeChildren(0, this.shadowRoot.childNodes.length);\n this.bindingMapGen = this.procGenWrapper.create(data);\n };\n GlassEaselTemplateInstance.prototype._$applyTemplate = function (template) {\n var procGen = template.genObjectGroupEnv.group('') || DEFAULT_PROC_GEN_GROUP('');\n if (template.updateMode === 'bindingMap') {\n this.forceBindingMapUpdate = 2 /* BindingMapUpdateEnabled.Forced */;\n }\n else if (template.updateMode === 'virtualTree') {\n this.forceBindingMapUpdate = 0 /* BindingMapUpdateEnabled.Disabled */;\n }\n else {\n this.forceBindingMapUpdate = 1 /* BindingMapUpdateEnabled.Enabled */;\n }\n this.procGenWrapper = new ProcGenWrapper(this.shadowRoot, procGen, template.disallowNativeNode, template.eventObjectFilter);\n this.bindingMapGen = undefined;\n };\n GlassEaselTemplateInstance.prototype.initValues = function (data) {\n this.bindingMapGen = this.procGenWrapper.create(data);\n return this.shadowRoot;\n };\n GlassEaselTemplateInstance.prototype.updateValues = function (data, changes) {\n if (this.forceBindingMapUpdate === 2 /* BindingMapUpdateEnabled.Forced */) {\n for (var i = 0; i < changes.length; i += 1) {\n this.tryBindingMapUpdate(data, changes[i]);\n }\n return;\n }\n if (this.forceBindingMapUpdate === 1 /* BindingMapUpdateEnabled.Enabled */ && changes.length <= 1) {\n if (this.bindingMapGen) {\n if (this.tryBindingMapUpdate(data, changes[0])) {\n return;\n }\n }\n }\n var dataUpdatePathTree = Object.create(null);\n for (var i = 0; i < changes.length; i += 1) {\n var _a = changes[i], p = _a[0], newVal = _a[1], spliceIndex = _a[2], spliceDel = _a[3];\n var cur = dataUpdatePathTree;\n for (var j = 0; j < p.length; j += 1) {\n var field = p[j];\n var v = cur[field];\n if (v === true)\n break;\n if (j === p.length - 1) {\n if (spliceDel === undefined) {\n cur[field] = true;\n }\n else {\n var startIndex = spliceIndex;\n if (v === undefined) {\n cur[field] = new Array(startIndex);\n }\n else if (!Array.isArray(v)) {\n var arr_1 = new Array(startIndex);\n var keys = Object.keys(v);\n for (var i_1 = 0; i_1 < keys.length; i_1 += 1) {\n var key = keys[i_1];\n var item = v[key];\n var index = Number(key);\n if (arr_1.length < index)\n arr_1.length = index;\n arr_1[key] = item;\n }\n cur[field] = arr_1;\n }\n var arr = cur[field];\n if (arr.length < startIndex) {\n arr.length = startIndex;\n }\n var inserts = new Array(newVal.length);\n inserts.fill(true);\n arr.splice.apply(arr, __spreadArray([spliceIndex, spliceDel], inserts, false));\n }\n break;\n }\n if (v === undefined) {\n var next = Object.create(null);\n cur[field] = next;\n cur = next;\n }\n else {\n cur = v;\n }\n }\n }\n this.procGenWrapper.update(data, dataUpdatePathTree);\n };\n GlassEaselTemplateInstance.prototype.tryBindingMapUpdate = function (data, change) {\n if (!change)\n return true;\n var bindingMapGen = this.bindingMapGen;\n if (!bindingMapGen) {\n return false;\n }\n var path = change[0];\n if (path.length !== 1)\n return false;\n return this.procGenWrapper.bindingMapUpdate(path[0], data, bindingMapGen);\n };\n return GlassEaselTemplateInstance;\n}());\n","import { BehaviorBuilder } from './behavior';\nimport { Component, } from './component';\nimport { normalizeComponentOptions, } from './global_options';\nimport { StyleScopeManager } from './class_list';\nimport { safeCallback } from '.';\nimport { TraitBehavior } from './trait_behaviors';\nvar normalizePath = function (path, basePath) {\n var slices;\n if (path[0] !== '/') {\n slices = basePath.split('/').slice(0, -1).concat(path.split('/'));\n }\n else {\n slices = path.split('/');\n }\n var finalSlices = [];\n for (var i = 0; i < slices.length; i += 1) {\n var slice = slices[i];\n if (slice === '' || slice === '.')\n continue;\n if (slice === '..') {\n finalSlices.pop();\n continue;\n }\n finalSlices.push(slice);\n }\n return finalSlices.join('/');\n};\nexport var normalizeUrl = function (path, relPath) {\n var protoSep = path.indexOf('://');\n if (protoSep > 0) {\n var domainSep = path.indexOf('/', protoSep + 3);\n if (domainSep > 0) {\n var domain_1 = path.slice(0, domainSep);\n var absPath_1 = normalizePath(path.slice(domainSep + 1), '');\n return {\n domain: domain_1,\n absPath: absPath_1,\n };\n }\n // HACK for invalid URL like `a://the-comp` , provide some compatibility\n var domain = path.slice(0, protoSep + 3);\n var absPath = normalizePath(path.slice(protoSep + 3), '');\n return {\n domain: domain,\n absPath: absPath,\n };\n }\n return {\n domain: null,\n absPath: normalizePath(path, relPath),\n };\n};\nvar ComponentWaitingList = /** @class */ (function () {\n function ComponentWaitingList(ownerSpace, isPub, alias) {\n /** @internal */\n this._$callbacks = [];\n this._$ownerSpace = ownerSpace;\n this._$isPub = isPub;\n this._$alias = alias;\n }\n ComponentWaitingList.prototype.add = function (callback) {\n this._$callbacks.push(callback);\n };\n ComponentWaitingList.prototype.hintUsed = function (owner) {\n var _a, _b;\n (_b = (_a = this._$ownerSpace)._$componentWaitingListener) === null || _b === void 0 ? void 0 : _b.call(_a, this._$isPub, this._$alias, owner);\n };\n ComponentWaitingList.prototype.remove = function (callback) {\n var index = this._$callbacks.indexOf(callback);\n // must guarantee order here (cannot swap-remove)\n this._$callbacks.splice(index, 1);\n };\n ComponentWaitingList.prototype.call = function (c) {\n var cbs = this._$callbacks;\n this._$callbacks = [];\n for (var i = 0; i < cbs.length; i += 1) {\n var f = cbs[i];\n f(c);\n }\n };\n return ComponentWaitingList;\n}());\nexport { ComponentWaitingList };\n/** A group of components for cross-component using */\nvar ComponentSpace = /** @class */ (function () {\n /**\n * Create a new component space\n *\n * The `defaultComponent` is the default component path.\n * It should be defined soon after creation.\n * A `baseSpace` can be provided as a \"base\" component space -\n * every component alias (and behavior alias) in the space will be imported when creation.\n * However, if any new component is added to the base space after the creation,\n * it will not be added to the created space.\n */\n function ComponentSpace(defaultComponent, baseSpace, styleScopeManager) {\n /** @internal */\n this._$behaviorList = Object.create(null);\n /** @internal */\n this._$pubBehaviorList = Object.create(null);\n /** @internal */\n this._$list = Object.create(null);\n /** @internal */\n this._$pubList = Object.create(null);\n /** @internal */\n this._$using = Object.create(null);\n /** @internal */\n this._$importedSpaces = Object.create(null);\n /** @internal */\n this._$listWaiting = Object.create(null);\n /** @internal */\n this._$pubListWaiting = Object.create(null);\n /** @internal */\n this._$groupingListWaiting = null;\n /** @internal */\n this._$componentWaitingListener = null;\n if (baseSpace) {\n Object.assign(this._$list, baseSpace._$pubList);\n Object.assign(this._$behaviorList, baseSpace._$pubBehaviorList);\n }\n this._$defaultComponent = defaultComponent !== null && defaultComponent !== void 0 ? defaultComponent : '';\n this._$componentOptions = normalizeComponentOptions({}, baseSpace === null || baseSpace === void 0 ? void 0 : baseSpace._$componentOptions);\n this.styleScopeManager = styleScopeManager || new StyleScopeManager();\n }\n /**\n * Update the default component options for this space\n *\n * The new options will be merged with existing options.\n */\n ComponentSpace.prototype.updateComponentOptions = function (componentOptions) {\n this._$componentOptions = normalizeComponentOptions(componentOptions, this._$componentOptions);\n };\n ComponentSpace.prototype.getComponentOptions = function () {\n return this._$componentOptions;\n };\n /**\n * Set (or update) a global using component item\n *\n * This will allow all the components in this component space using this component automatically,\n * without declaring it with `using` or `usingComponents` again.\n * The target can also be a tag name of a native node.\n */\n ComponentSpace.prototype.setGlobalUsingComponent = function (key, target) {\n this._$using[key] = target;\n };\n /**\n * Import another component space\n *\n * The components in the imported space can be used by components in this space.\n * The `protoDomain` should be URL-like, i.e. `space://another-space` .\n * When using, the components in the imported space should be specified with `protoDomain` .\n * For example, if `protoDomain` is `space://another-space` and one imported component has alias `my-comp` ,\n * then it should be specified with `space://another-space/my-comp` .\n * If `privateUse` set to false, only component alias in the imported space can be used;\n * the original name of components is imported otherwise.\n */\n ComponentSpace.prototype.importSpace = function (protoDomain, space, privateUse) {\n this._$importedSpaces[protoDomain] = {\n space: space,\n privateUse: privateUse,\n };\n };\n /**\n * Get a component by the `path`\n *\n * The component `is` is actually treated as the \"path\" of the component.\n * In other words, the component `is` field can be a string like `path/to/the/component` .\n * Other components can be used by the component with \"relative path\" specified.\n * In this method, if the `path` is given as a relative path (not started with `/` ),\n * it will be converted according to the `basePath` .\n * If the `path` is given as a URL-like format,\n * the component will be searched in imported component spaces ( `importSpace()` for details).\n */\n ComponentSpace.prototype.getComponentByUrl = function (path, basePath) {\n var _a = normalizeUrl(path, basePath), domain = _a.domain, absPath = _a.absPath;\n var comp = this.getComponent(absPath, true, domain);\n if (!comp) {\n throw new Error(\"There is no component \\\"\".concat(absPath, \"\\\" in the space and no default component can be used\"));\n }\n return comp;\n };\n /**\n * Get a component by the `path`\n *\n * Similar to `getComponentByUrl()` ,\n * but returns `null` instead of the default component if no component was found.\n */\n ComponentSpace.prototype.getComponentByUrlWithoutDefault = function (path, relPath) {\n var _a = normalizeUrl(path, relPath), domain = _a.domain, absPath = _a.absPath;\n var comp = this.getComponent(absPath, false, domain);\n return comp || null;\n };\n ComponentSpace.prototype.getComponent = function (absPath, withDefault, domain) {\n if (withDefault === void 0) { withDefault = true; }\n if (domain === void 0) { domain = null; }\n var list;\n if (domain) {\n var target = this._$importedSpaces[domain];\n if (target) {\n var space = target.space, privateUse = target.privateUse;\n if (privateUse) {\n list = space._$list;\n }\n else {\n list = space._$pubList;\n }\n }\n }\n else {\n list = this._$list;\n }\n if (list) {\n var def = list[absPath];\n if (def)\n return def;\n }\n if (withDefault) {\n return this._$list[this._$defaultComponent];\n }\n return undefined;\n };\n ComponentSpace.prototype.getDefaultComponent = function () {\n return this._$list[this._$defaultComponent] || null;\n };\n ComponentSpace.prototype.isDefaultComponent = function (def) {\n return this._$list[this._$defaultComponent] === def;\n };\n ComponentSpace.prototype.getGlobalUsingComponent = function (key) {\n return this._$using[key] || null;\n };\n /**\n * Get a behavior by the `path`\n *\n * Similar to `getComponentByUrlWithoutDefault()` but for behaviors.\n */\n ComponentSpace.prototype.getBehaviorByUrl = function (path, relPath) {\n var _a = normalizeUrl(path, relPath), domain = _a.domain, absPath = _a.absPath;\n return this._$getBehavior(absPath, domain) || null;\n };\n /** @internal */\n ComponentSpace.prototype._$getBehavior = function (absPath, domain) {\n if (domain === void 0) { domain = null; }\n var list;\n if (domain) {\n var target = this._$importedSpaces[domain];\n if (target) {\n var space = target.space, privateUse = target.privateUse;\n if (privateUse) {\n list = space._$behaviorList;\n }\n else {\n list = space._$pubBehaviorList;\n }\n }\n }\n else {\n list = this._$behaviorList;\n }\n if (list) {\n var def = list[absPath];\n if (def)\n return def;\n }\n return undefined;\n };\n /** Register a component in this space */\n ComponentSpace.prototype.defineComponent = function (def) {\n var is = def.is;\n var ret = new BehaviorBuilder(is, this).definition(def).registerComponent();\n return ret;\n };\n /** Register a behavior in this space */\n ComponentSpace.prototype.defineBehavior = function (def) {\n var is = def.is;\n var ret = new BehaviorBuilder(is, this).definition(def).registerBehavior();\n return ret;\n };\n /** Register a component or a behavior with chaining API */\n ComponentSpace.prototype.define = function (is) {\n return new BehaviorBuilder(is, this);\n };\n /**\n * Register a component or a behavior with chaining API (with method caller type specified)\n *\n * This API is generally designed for adapters which require special method callers.\n */\n ComponentSpace.prototype.defineWithMethodCaller = function (is) {\n return new BehaviorBuilder(is, this);\n };\n /** @internal */\n ComponentSpace.prototype._$registerComponent = function (is, comp) {\n this._$list[is] = comp;\n this._$behaviorList[is] = comp.behavior;\n var waiting = this._$listWaiting[is];\n if (waiting) {\n delete this._$listWaiting[is];\n if (this._$groupingListWaiting) {\n this._$groupingListWaiting.push({ waiting: waiting, comp: comp });\n }\n else {\n waiting.call(comp);\n }\n }\n };\n /** @internal */\n ComponentSpace.prototype._$registerBehavior = function (is, beh) {\n this._$behaviorList[is] = beh;\n };\n /**\n * Start a series of components and behaviors registration\n *\n * In most cases, `groupRegister` is prefered.\n */\n ComponentSpace.prototype.startGroupRegister = function () {\n this._$groupingListWaiting = [];\n };\n /**\n * End a series of components and behaviors registration\n *\n * In most cases, `groupRegister` is prefered.\n */\n ComponentSpace.prototype.endGroupRegister = function () {\n var arr = this._$groupingListWaiting;\n if (!arr)\n return;\n this._$groupingListWaiting = null;\n for (var i = 0; i < arr.length; i += 1) {\n var _a = arr[i], waiting = _a.waiting, comp = _a.comp;\n waiting.call(comp);\n }\n };\n /**\n * Group a series of components and behaviors registration\n *\n * If any placeholder should be replaced,\n * the replacement will happen after the whole series of registration.\n */\n ComponentSpace.prototype.groupRegister = function (cb) {\n this.startGroupRegister();\n var ret = safeCallback('group register', cb, this, []);\n this.endGroupRegister();\n return ret;\n };\n /**\n * Assign a public alias to a component\n *\n * The alias can be used in other component spaces which imported this component space.\n * One component may have multiple aliases.\n */\n ComponentSpace.prototype.exportComponent = function (alias, is) {\n var comp = this._$list[is];\n if (!comp) {\n throw new Error(\"There is no component \\\"\".concat(is, \"\\\" for aliasing\"));\n }\n this._$pubList[alias] = comp;\n var arr = this._$pubListWaiting[alias];\n if (arr) {\n delete this._$pubListWaiting[alias];\n arr.call(comp);\n }\n };\n /** Get a component by its exported alias */\n ComponentSpace.prototype.getExportedComponent = function (alias) {\n return this._$pubList[alias];\n };\n /** Get a behavior by its exported alias */\n ComponentSpace.prototype.getExportedBehavior = function (alias) {\n return this._$pubBehaviorList[alias];\n };\n /**\n * Assign a public alias to a behavior\n *\n * The alias can be used in other component spaces which imported this component space.\n * One behavior may have multiple aliases.\n */\n ComponentSpace.prototype.exportBehavior = function (alias, is) {\n var beh = this._$behaviorList[is];\n if (!beh) {\n throw new Error(\"There is no behavior \\\"\".concat(is, \"\\\" for aliasing\"));\n }\n this._$pubBehaviorList[alias] = beh;\n };\n /** @internal */\n ComponentSpace.prototype._$componentWaitingList = function (path, relPath) {\n var _a = normalizeUrl(path, relPath), domain = _a.domain, absPath = _a.absPath;\n var waiting;\n var space;\n var isPub;\n if (domain) {\n var target = this._$importedSpaces[domain];\n if (target) {\n space = target.space;\n isPub = !target.privateUse;\n if (!isPub) {\n if (space._$list[absPath]) {\n return null;\n }\n waiting = space._$listWaiting;\n }\n else {\n if (space._$pubList[absPath]) {\n return null;\n }\n waiting = space._$pubListWaiting;\n }\n }\n else {\n return null;\n }\n }\n else {\n space = this;\n isPub = false;\n if (this._$list[absPath]) {\n return null;\n }\n waiting = this._$listWaiting;\n }\n var wl = waiting[absPath];\n if (wl)\n return wl;\n wl = waiting[absPath] = new ComponentWaitingList(space, isPub, absPath);\n return wl;\n };\n /**\n * Set a listener which will be called when a placeholded component is used.\n *\n * This can be used as a hint for a component that should be registered later.\n * If `isPub` is false, the `alias` is the path of the component, a.k.a. `is` .\n * Otherwise, it is the exported `alias` instead.\n */\n ComponentSpace.prototype.setComponentWaitingListener = function (listener) {\n this._$componentWaitingListener = listener;\n };\n /**\n * Create a component by URL\n *\n * This `url` can contain params (started with \"?\" character).\n * The params will try to be set to component properties (if matches the property name).\n */\n ComponentSpace.prototype.createComponentByUrl = function (tagName, url, genericTargets, backendContext) {\n var _this = this;\n var domainPath = url;\n var paramStr = null;\n // parse URL\n var hashSepIndex = domainPath.indexOf('#');\n if (hashSepIndex >= 0) {\n domainPath = domainPath.slice(0, hashSepIndex);\n }\n var paramSepIndex = domainPath.indexOf('?');\n if (paramSepIndex >= 0) {\n paramStr = domainPath.slice(paramSepIndex + 1);\n domainPath = domainPath.slice(0, paramSepIndex);\n }\n // find target components\n var compDef = this.getComponentByUrl(domainPath, '');\n var genericImpls = null;\n if (genericTargets) {\n genericImpls = Object.create(null);\n Object.keys(genericTargets).forEach(function (key) {\n var url = genericTargets[key];\n var compDef = _this.getComponentByUrl(url, '');\n genericImpls[key] = compDef;\n });\n }\n // create the component\n var comp = Component.createWithGenericsAndContext(tagName, compDef, genericImpls, backendContext, function (comp) {\n // set params if provided\n if (paramStr) {\n var needApplyUpdates_1 = false;\n paramStr.split('&').forEach(function (kv) {\n var kvSepIndex = kv.indexOf('=');\n if (kvSepIndex >= 0) {\n var key = decodeURIComponent(kv.slice(0, kvSepIndex));\n var value = decodeURIComponent(kv.slice(kvSepIndex + 1));\n if (comp._$dataGroup.replaceProperty(key, value)) {\n needApplyUpdates_1 = true;\n }\n }\n });\n if (needApplyUpdates_1)\n comp.applyDataUpdates();\n }\n });\n return comp;\n };\n ComponentSpace.prototype.defineTraitBehavior = function (trans) {\n return new TraitBehavior(this, trans);\n };\n return ComponentSpace;\n}());\nexport { ComponentSpace };\n","import { triggerWarning } from '../func_arr';\nvar RangeListManager = /** @class */ (function () {\n function RangeListManager(keyName, dataList, elem, newListItem) {\n this.keyName = keyName;\n this.updateKeys(dataList);\n var items = this.items;\n var indexes = this.indexes;\n var children = [];\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var index = indexes === null ? i : indexes[i];\n children.push(newListItem(item, index));\n }\n elem.insertChildren(children, -1);\n }\n RangeListManager.prototype.updateKeys = function (dataList) {\n // collect the list depending on the the type of the data list\n var items;\n var indexes;\n if (Array.isArray(dataList)) {\n items = dataList;\n indexes = null;\n }\n else if (typeof dataList === 'object' && dataList !== null) {\n var k = Object.keys(dataList);\n items = new Array(k.length);\n indexes = new Array(k.length);\n for (var i = 0; i < k.length; i += 1) {\n var key = k[i];\n var item = dataList[key];\n items[i] = item;\n indexes[i] = key;\n }\n }\n else if (typeof dataList === 'string') {\n triggerWarning('Use string as for-list is generally for testing. Each character is treated as an item.');\n items = new Array(dataList.length);\n indexes = null;\n for (var i = 0; i < dataList.length; i += 1) {\n items[i] = dataList[i];\n }\n }\n else if (typeof dataList === 'number') {\n triggerWarning('Use number as for-list is generally for testing. The number is used as the repeated times of the item.');\n items = new Array(dataList);\n indexes = null;\n for (var i = 0; i < dataList; i += 1) {\n items[i] = i;\n }\n }\n else {\n triggerWarning('The for-list data is invalid. Use empty array instead.');\n items = [];\n indexes = null;\n }\n this.items = items;\n this.indexes = indexes;\n // generate keys and key indexes map for the list\n var keyName = this.keyName;\n var rawKeys = new Array(items.length);\n var keyMap = Object.create(null);\n var sharedKeyMap;\n if (keyName !== null) {\n // firstly, find all unique keys and shared keys\n for (var i = 0; i < items.length; i += 1) {\n var item = items[i];\n var rawKeyField = keyName === '*this' ? item : item === null || item === void 0 ? void 0 : item[keyName];\n var rawKey = rawKeyField !== undefined && rawKeyField !== null ? String(rawKeyField) : '';\n rawKeys[i] = rawKey;\n if (keyMap[rawKey] !== undefined) {\n if (!sharedKeyMap) {\n sharedKeyMap = Object.create(null);\n }\n sharedKeyMap[rawKey] = [keyMap[rawKey], i];\n delete keyMap[rawKey];\n }\n else if (sharedKeyMap === null || sharedKeyMap === void 0 ? void 0 : sharedKeyMap[rawKey]) {\n sharedKeyMap[rawKey].push(i);\n }\n else {\n keyMap[rawKey] = i;\n }\n }\n // convert shared keys to unique keys\n if (sharedKeyMap) {\n var keys = Object.keys(sharedKeyMap);\n triggerWarning(\"Some keys are not unique while list updates: \\\"\".concat(keys.join('\", \"'), \"\\\".\"));\n for (var i = 0; i < keys.length; i += 1) {\n var key = keys[i];\n var items_1 = sharedKeyMap[key];\n var inc = 0;\n for (var j = 0; j < items_1.length; j += 1) {\n var index = items_1[j];\n while (keyMap[\"\".concat(key, \"--\").concat(inc)] !== undefined)\n inc += 1;\n var k = \"\".concat(key, \"--\").concat(inc);\n keyMap[k] = index;\n rawKeys[index] = k;\n }\n }\n }\n }\n this.rawKeys = rawKeys;\n this.keyMap = keyMap;\n this.sharedKeyMap = sharedKeyMap;\n };\n RangeListManager.prototype.diff = function (dataList, oriUpdatePathTree, elem, newListItem, updateListItem) {\n // generate new list for comparison\n var oldRawKeys = this.rawKeys;\n var oldKeyMap = this.keyMap;\n var oldSharedKeyMap = this.sharedKeyMap;\n var oldIndexes = this.indexes;\n this.updateKeys(dataList);\n var newRawKeys = this.rawKeys;\n var newSharedKeyMap = this.sharedKeyMap;\n var items = this.items;\n var indexes = this.indexes;\n var keyName = this.keyName;\n // transform the update path tree if needed:\n // if the list has been splice-updated, or a key is updated,\n // all items with old-list shared keys or new-list shared keys should be marked;\n // and items with key updates should be marked\n var allowFastComparison;\n var updatePathTree;\n if (oriUpdatePathTree === true) {\n updatePathTree = true;\n allowFastComparison = keyName === null;\n }\n else if (oriUpdatePathTree === undefined) {\n updatePathTree = oriUpdatePathTree;\n allowFastComparison = true;\n }\n else if (keyName === null) {\n updatePathTree = true;\n allowFastComparison = true;\n }\n else {\n var needUpdate = false;\n if (Array.isArray(oriUpdatePathTree)) {\n needUpdate = true;\n }\n else {\n var keys = Object.keys(oriUpdatePathTree);\n for (var i = 0; i < keys.length; i += 1) {\n var k = keys[i];\n var subTree = oriUpdatePathTree[k];\n if (subTree === true || (keyName === '*this' ? subTree : subTree === null || subTree === void 0 ? void 0 : subTree[keyName])) {\n needUpdate = true;\n break;\n }\n }\n }\n if (needUpdate) {\n updatePathTree = new Array(newRawKeys.length);\n for (var i = 0; i < newRawKeys.length; i += 1) {\n var k = newRawKeys[i];\n if ((oldSharedKeyMap === null || oldSharedKeyMap === void 0 ? void 0 : oldSharedKeyMap[k]) !== undefined || (newSharedKeyMap === null || newSharedKeyMap === void 0 ? void 0 : newSharedKeyMap[k]) !== undefined) {\n updatePathTree[i] = true;\n }\n else {\n var subTree = oriUpdatePathTree[i];\n if (subTree === undefined) {\n // empty\n }\n else if (subTree === true || (keyName === '*this' ? subTree : subTree === null || subTree === void 0 ? void 0 : subTree[keyName])) {\n updatePathTree[i] = true;\n }\n else {\n updatePathTree[i] = subTree;\n }\n }\n }\n allowFastComparison = false;\n }\n else {\n updatePathTree = oriUpdatePathTree;\n allowFastComparison = false;\n }\n }\n // if there is no key, or nothing in the old list range is updated\n if (allowFastComparison) {\n // transform the update path tree if needed:\n // if the list has been splice-updated, then mark the whole list\n var updatePathTree_1;\n if (Array.isArray(oriUpdatePathTree))\n updatePathTree_1 = true;\n else\n updatePathTree_1 = oriUpdatePathTree;\n // simply match them one-by-one\n var i = 0;\n while (i < oldRawKeys.length && i < newRawKeys.length) {\n var item = items[i];\n var index = indexes === null ? i : indexes[i];\n var oldIndex = oldIndexes === null ? i : oldIndexes[i];\n var u = updatePathTree_1 === true || updatePathTree_1 === undefined\n ? updatePathTree_1\n : updatePathTree_1[i];\n updateListItem(item, index, u, index !== oldIndex, elem.childNodes[i]);\n i += 1;\n }\n // if the old list has extra items, remove them;\n // if the new list has extra items, append them\n if (i < oldRawKeys.length) {\n elem.removeChildren(i, oldRawKeys.length - i);\n }\n else if (i < newRawKeys.length) {\n var children = [];\n for (; i < newRawKeys.length; i += 1) {\n var item = items[i];\n var index = indexes === null ? i : indexes[i];\n children.push(newListItem(item, index));\n }\n elem.insertChildren(children, -1);\n }\n return;\n }\n // in order to find out which nodes are stable (a.k.a. not needed to be moved),\n // here uses a classic LCS (longest-common-subsequence) algorithm for list with distinct items,\n // which is O(N*logN) at worst\n // (the `minIndexByLen[i]` is the minimum old-list index when LCS length is `i` )\n var minIndexByLen = [];\n var minIndexByLenIndexes = [];\n var minIndexPrev = new Array(newRawKeys.length);\n var oldPosList = new Array(newRawKeys.length);\n var prevOldIndex = -1;\n var prevMinIndexByLenIndex = -1;\n for (var i = 0; i < newRawKeys.length; i += 1) {\n var rawKey = newRawKeys[i];\n // the new-list current item is likely to be the same as the one in old-list;\n // if that, simply use it -\n // this will help to decrease the overhead in common cases (O(N) in best case)\n if (oldRawKeys[prevOldIndex + 1] === rawKey) {\n prevOldIndex += 1;\n prevMinIndexByLenIndex += 1;\n minIndexByLen[prevMinIndexByLenIndex] = prevOldIndex;\n minIndexByLenIndexes[prevMinIndexByLenIndex] = i;\n minIndexPrev[i] =\n prevMinIndexByLenIndex > 0 ? minIndexByLenIndexes[prevMinIndexByLenIndex - 1] : -1;\n oldPosList[i] = prevOldIndex;\n continue;\n }\n // Skip new items\n var oldIndex = oldKeyMap[rawKey];\n if (oldIndex === undefined) {\n oldPosList[i] = -1;\n continue;\n }\n // find the old-list index for the key of the current item\n var bottom = 0;\n var top_1 = minIndexByLen.length;\n while (bottom < top_1) {\n var mid = Math.floor((bottom + top_1) / 2);\n if (oldIndex < minIndexByLen[mid])\n top_1 = mid;\n else\n bottom = mid + 1;\n }\n minIndexByLen[top_1] = oldIndex;\n minIndexByLenIndexes[top_1] = i;\n minIndexPrev[i] = top_1 > 0 ? minIndexByLenIndexes[top_1 - 1] : -1;\n oldPosList[i] = oldIndex;\n prevOldIndex = oldIndex;\n prevMinIndexByLenIndex = top_1;\n }\n var lcsLen = minIndexByLenIndexes.length;\n // if LCS is the whole list, then the list is not changed -\n // simply match each item one-by-one\n if (lcsLen === newRawKeys.length && lcsLen === oldRawKeys.length) {\n var i = 0;\n while (i < oldRawKeys.length && i < newRawKeys.length) {\n var item = items[i];\n var index = indexes === null ? i : indexes[i];\n var oldIndex = oldIndexes === null ? i : oldIndexes[i];\n var u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[i];\n updateListItem(item, index, u, index !== oldIndex, elem.childNodes[i]);\n i += 1;\n }\n return;\n }\n // search the unused `minIndexPrev` items to get the LCS item list\n // ( `minIndexByLen` is reused as the LCS array, since they must have the same length)\n var prevLcsIndex = lcsLen > 0 ? minIndexByLenIndexes[lcsLen - 1] : -1;\n var curLcsArrIndex = lcsLen;\n while (prevLcsIndex !== -1) {\n curLcsArrIndex -= 1;\n minIndexByLen[curLcsArrIndex] = prevLcsIndex;\n prevLcsIndex = minIndexPrev[prevLcsIndex];\n }\n var lcsArr = minIndexByLen;\n // decide what operation to be used with each item\n var OpKind;\n (function (OpKind) {\n OpKind[OpKind[\"Stable\"] = 0] = \"Stable\";\n OpKind[OpKind[\"ForwardMove\"] = 1] = \"ForwardMove\";\n OpKind[OpKind[\"BackwardMove\"] = 2] = \"BackwardMove\";\n })(OpKind || (OpKind = {}));\n var oldListOp = new Array(oldRawKeys.length);\n var changedItems = new Array(newRawKeys.length);\n var prevLcsOldPos = lcsArr[curLcsArrIndex];\n for (var i = 0; i < oldPosList.length; i += 1) {\n var oldPos = oldPosList[i];\n if (i === lcsArr[curLcsArrIndex]) {\n prevLcsOldPos = oldPos;\n curLcsArrIndex += 1;\n oldListOp[oldPos] = 0 /* OpKind.Stable */;\n continue;\n }\n if (oldPos === -1) {\n var item = items[i];\n var index = indexes === null ? i : indexes[i];\n changedItems[i] = newListItem(item, index);\n continue;\n }\n if (oldPos > prevLcsOldPos) {\n oldListOp[oldPos] = 2 /* OpKind.BackwardMove */;\n }\n else {\n oldListOp[oldPos] = 1 /* OpKind.ForwardMove */;\n }\n changedItems[i] = elem.childNodes[oldPos];\n }\n // visit the op list again and do the operations one-by-one\n var realListDiff = 0;\n var opOldPos = 0;\n var opIndex = 0;\n curLcsArrIndex = 0;\n do {\n var nextStable = curLcsArrIndex < lcsArr.length ? lcsArr[curLcsArrIndex] : changedItems.length;\n var nextStableOldPos = curLcsArrIndex < lcsArr.length ? oldPosList[nextStable] : oldListOp.length;\n // remove items between two LCS items\n while (opOldPos < nextStableOldPos) {\n if (oldListOp[opOldPos] === undefined) {\n var start = opOldPos;\n opOldPos += 1;\n var count = 1;\n while (opOldPos < nextStableOldPos && oldListOp[opOldPos] === undefined) {\n opOldPos += 1;\n count += 1;\n }\n elem.removeChildren(start + realListDiff, count);\n realListDiff -= count;\n }\n else {\n if (oldListOp[opOldPos] === 2 /* OpKind.BackwardMove */) {\n realListDiff -= 1;\n }\n opOldPos += 1;\n }\n }\n // insert or move items between two LCS items\n while (opIndex < nextStable) {\n var newItem = changedItems[opIndex];\n var oldPos = oldPosList[opIndex];\n if (oldPos === -1) {\n var start = opIndex;\n opIndex += 1;\n var count = 1;\n while (opIndex < nextStable && oldPosList[opIndex] === -1) {\n opIndex += 1;\n count += 1;\n }\n elem.insertChildren(changedItems.slice(start, start + count), nextStableOldPos + realListDiff);\n realListDiff += count;\n }\n else {\n elem.insertChildAt(newItem, nextStableOldPos + realListDiff);\n var item = items[opIndex];\n var index = indexes === null ? opIndex : indexes[opIndex];\n var oldIndex = oldIndexes === null ? oldPos : oldIndexes[oldPos];\n var u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[opIndex];\n updateListItem(item, index, u, index !== oldIndex, newItem);\n if (oldListOp[oldPos] === 2 /* OpKind.BackwardMove */) {\n realListDiff += 1;\n }\n opIndex += 1;\n }\n }\n // stable items might be marked and indexes in stable positions might change;\n // if that, do an update\n // IDEA do not update if {{index}} is not used in template\n if (curLcsArrIndex < lcsArr.length) {\n var item = items[nextStable];\n var index = indexes === null ? nextStable : indexes[nextStable];\n var oldIndex = oldIndexes === null ? nextStableOldPos : oldIndexes[nextStableOldPos];\n var u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[nextStable];\n var node = elem.childNodes[nextStableOldPos + realListDiff];\n updateListItem(item, index, u, index !== oldIndex, node);\n }\n opOldPos = nextStableOldPos + 1;\n opIndex = nextStable + 1;\n curLcsArrIndex += 1;\n } while (curLcsArrIndex <= lcsArr.length);\n };\n return RangeListManager;\n}());\nexport { RangeListManager };\n","/* eslint-disable class-methods-use-this */\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { Element, Component, NativeNode, } from '..';\nimport { RangeListManager } from './range_list_diff';\nvar emptyFilter = function (x) { return x; };\nexport var getTmplArgs = function (elem) {\n var node = elem;\n // eslint-disable-next-line no-return-assign\n return (node._$wxTmplArgs = node._$wxTmplArgs || {});\n};\nexport var dataValueToString = function (v) {\n if (v === null || v === undefined) {\n return '';\n }\n return String(v);\n};\nvar dashToCamelCase = function (dash) {\n var ret = dash.replace(/-(.|$)/g, function (s) { return (s[1] ? s[1].toUpperCase() : ''); });\n return ret;\n};\nvar ProcGenWrapper = /** @class */ (function () {\n function ProcGenWrapper(shadowRoot, procGen, disallowNativeNode, eventObjectFilter) {\n this.bindingMapDisabled = false;\n this.eventObjectFilter = emptyFilter;\n this.changePropFilter = emptyFilter;\n this.eventListenerFilter = emptyFilter;\n this.shadowRoot = shadowRoot;\n this.procGen = procGen;\n this.disallowNativeNode = disallowNativeNode;\n if (eventObjectFilter) {\n this.eventObjectFilter = eventObjectFilter;\n }\n }\n ProcGenWrapper.prototype.create = function (data) {\n var _a = this, shadowRoot = _a.shadowRoot, procGen = _a.procGen;\n var children = procGen(this, true, data, undefined);\n this.handleChildrenCreationAndInsert(children.C, shadowRoot, undefined, undefined);\n return children.B;\n };\n ProcGenWrapper.prototype.update = function (data, dataUpdatePathTree) {\n var _a = this, shadowRoot = _a.shadowRoot, procGen = _a.procGen;\n var children = procGen(this, false, data, dataUpdatePathTree);\n this.handleChildrenUpdate(children.C, shadowRoot, undefined, undefined);\n };\n ProcGenWrapper.prototype.bindingMapUpdate = function (field, data, bindingMapGenList) {\n if (this.bindingMapDisabled)\n return false;\n var updaters = bindingMapGenList[field];\n if (!updaters)\n return false;\n var prevElement = null;\n for (var i = 0; i < updaters.length; i += 1) {\n var bindingMapGen = updaters[i];\n bindingMapGen(data, \n // eslint-disable-next-line no-loop-func\n function (elem) {\n if (prevElement !== null && elem !== prevElement) {\n if (prevElement instanceof Component) {\n if (prevElement.hasPendingChanges()) {\n var nodeDataProxy = Component.getDataProxy(prevElement);\n nodeDataProxy.applyDataUpdates(true);\n }\n }\n }\n prevElement = elem;\n }, function (elem, v) {\n elem.textContent = v;\n });\n }\n var elem = prevElement;\n if (elem !== null) {\n if (elem instanceof Component) {\n if (elem.hasPendingChanges()) {\n var nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n }\n }\n return true;\n };\n ProcGenWrapper.prototype.handleChildrenCreation = function (children, slotElement, dynamicSlotName) {\n var _this = this;\n var childNodes = [];\n children(true, \n // text node\n function (textContent, textInit) {\n if (slotElement && dynamicSlotName !== '') {\n var elem_1 = _this.createDynamicPlaceholder(slotElement);\n childNodes.push(elem_1);\n return;\n }\n var elem = _this.shadowRoot.createTextNode(textContent);\n elem.destroyBackendElementOnDetach();\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n if (textInit)\n textInit(elem);\n childNodes.push(elem);\n }, \n // component or native node\n function (tagName, genericImpls, propertyInit, children, slot, dynamicSlotValueNames) {\n if (slotElement && dynamicSlotName !== (slot || '')) {\n var elem_2 = _this.createDynamicPlaceholder(slotElement);\n childNodes.push(elem_2);\n return;\n }\n var elem = _this.createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames);\n if (slotElement) {\n Element.setSlotElement(elem, slotElement);\n var tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = true;\n }\n else if (slot !== undefined) {\n elem.slot = slot;\n }\n childNodes.push(elem);\n }, \n // wx:if node or template-is node\n function (branchKey, branchFunc) {\n var elem = _this.shadowRoot.createVirtualNode('wx:if');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n var tmplArgs = getTmplArgs(elem);\n tmplArgs.key = branchKey;\n _this.handleChildrenCreationAndInsert(branchFunc, elem, slotElement, dynamicSlotName);\n childNodes.push(elem);\n }, \n // wx:for node\n function (list, key, oriListUpdatePathTree, lvaluePath, itemCallback) {\n var shadowRoot = _this.shadowRoot;\n var elem = shadowRoot.createVirtualNode('wx:for');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n var tmplArgs = getTmplArgs(elem);\n tmplArgs.keyList = new RangeListManager(key, list, elem, function (item, index) {\n var childNode = shadowRoot.createVirtualNode('wx:for-item');\n childNode.destroyBackendElementOnDetach();\n Element.setInheritSlots(childNode);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n _this.handleChildrenCreationAndInsert(function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) {\n itemCallback(true, item, index, undefined, undefined, lvaluePath ? __spreadArray(__spreadArray([], lvaluePath, true), [index], false) : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n return childNode;\n });\n childNodes.push(elem);\n }, \n // slot node\n function (slotName, slotValueInit) {\n var elem = _this.shadowRoot.createVirtualNode('slot');\n elem.destroyBackendElementOnDetach();\n Element.setSlotName(elem, dataValueToString(slotName));\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n if (slotValueInit)\n slotValueInit(elem);\n childNodes.push(elem);\n }, \n // other virtual node\n function (children, slot) {\n if (slot !== undefined) {\n if (slotElement) {\n if (dynamicSlotName === slot) {\n var elem = _this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setSlotElement(elem, slotElement);\n var tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = true;\n _this.handleChildrenCreationAndInsert(children, elem, undefined, undefined);\n childNodes.push(elem);\n }\n else {\n var elem = _this.createDynamicPlaceholder(slotElement);\n childNodes.push(elem);\n }\n }\n else {\n var elem = _this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n elem.slot = slot;\n _this.handleChildrenCreationAndInsert(children, elem, undefined, undefined);\n childNodes.push(elem);\n }\n }\n else {\n var elem = _this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n _this.handleChildrenCreationAndInsert(children, elem, slotElement, dynamicSlotName);\n childNodes.push(elem);\n }\n }, undefined, undefined);\n return childNodes;\n };\n ProcGenWrapper.prototype.handleChildrenCreationAndInsert = function (children, parentNode, slotElement, dynamicSlotName) {\n var childNodes = this.handleChildrenCreation(children, slotElement, dynamicSlotName);\n if (childNodes.length)\n parentNode.insertChildren(childNodes, -1);\n };\n ProcGenWrapper.prototype.handleChildrenUpdate = function (children, parentNode, slotElement, dynamicSlotName) {\n var _this = this;\n var index = 0;\n var childNodes = slotElement\n ? slotElement.slotNodes.filter(function (node) { return node.parentNode === parentNode; })\n : parentNode.childNodes;\n children(false, \n // text node\n function (textContent) {\n var elem = childNodes[index];\n index += 1;\n if (slotElement) {\n var tmplArgs = getTmplArgs(elem);\n if (!tmplArgs.dynamicSlotNameMatched) {\n return;\n }\n }\n if (textContent !== undefined) {\n elem.textContent = textContent;\n }\n }, \n // component or native node\n function (tagName, genericImpls, propertyInit, children, slot, dynamicSlotValueNames) {\n var elem = childNodes[index];\n index += 1;\n if (slotElement) {\n var tmplArgs = getTmplArgs(elem);\n if (dynamicSlotName === (slot || '')) {\n if (!tmplArgs.dynamicSlotNameMatched) {\n var newElem = _this.createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames);\n Element.setSlotElement(newElem, slotElement);\n var newTmplArgs = getTmplArgs(newElem);\n newTmplArgs.dynamicSlotNameMatched = true;\n parentNode.replaceChild(newElem, elem);\n return;\n }\n }\n else {\n if (tmplArgs.dynamicSlotNameMatched) {\n var newElem = _this.createDynamicPlaceholder(slotElement);\n parentNode.replaceChild(newElem, elem);\n }\n return;\n }\n }\n propertyInit(elem, false);\n var dynSlot = false;\n if (elem instanceof Component) {\n var sr = _this.dynamicSlotUpdate(elem, dynamicSlotValueNames, children);\n if (sr)\n dynSlot = true;\n if (elem.hasPendingChanges()) {\n var nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n sr === null || sr === void 0 ? void 0 : sr.applySlotUpdates();\n }\n if (!slotElement) {\n if (slot !== undefined)\n elem.slot = slot;\n }\n if (!dynSlot) {\n _this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n }, \n // wx:if node or template-is node\n function (branchKey, branchFunc) {\n var elem = childNodes[index];\n index += 1;\n var tmplArgs = getTmplArgs(elem);\n if (tmplArgs.key === branchKey) {\n _this.handleChildrenUpdate(branchFunc, elem, slotElement, dynamicSlotName);\n }\n else {\n var newElem = _this.shadowRoot.createVirtualNode('wx:if');\n newElem.destroyBackendElementOnDetach();\n Element.setInheritSlots(newElem);\n if (slotElement)\n Element.setSlotElement(newElem, slotElement);\n var tmplArgs_1 = getTmplArgs(newElem);\n tmplArgs_1.key = branchKey;\n _this.handleChildrenCreationAndInsert(branchFunc, newElem, slotElement, dynamicSlotName);\n if (slotElement)\n parentNode.replaceChild(newElem, elem);\n else\n parentNode.replaceChildAt(newElem, index - 1);\n }\n }, \n // wx:for node\n function (list, key, oriListUpdatePathTree, lvaluePath, itemCallback) {\n var elem = childNodes[index];\n index += 1;\n var tmplArgs = getTmplArgs(elem);\n var keyListManager = tmplArgs.keyList;\n keyListManager.diff(list, oriListUpdatePathTree, elem, function (item, index) {\n var childNode = _this.shadowRoot.createVirtualNode('wx:for-item');\n childNode.destroyBackendElementOnDetach();\n Element.setInheritSlots(childNode);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n _this.handleChildrenCreationAndInsert(function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) {\n itemCallback(true, item, index, undefined, undefined, lvaluePath ? __spreadArray(__spreadArray([], lvaluePath, true), [index], false) : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n return childNode;\n }, function (item, index, updatePathTree, indexChanged, childNode) {\n _this.handleChildrenUpdate(function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) {\n itemCallback(false, item, index, updatePathTree, indexChanged ? true : undefined, lvaluePath ? __spreadArray(__spreadArray([], lvaluePath, true), [index], false) : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n });\n }, \n // slot node\n function (slotName, slotValueInit) {\n var elem = childNodes[index];\n index += 1;\n if (slotName !== undefined) {\n Element.setSlotName(elem, dataValueToString(slotName));\n }\n if (slotValueInit)\n slotValueInit(elem);\n _this.shadowRoot.applySlotValueUpdates(elem);\n }, \n // other virtual node\n function (children, slot) {\n var elem = childNodes[index];\n index += 1;\n if (slot !== undefined) {\n if (slotElement) {\n var tmplArgs = getTmplArgs(elem);\n if (dynamicSlotName === slot) {\n if (tmplArgs.dynamicSlotNameMatched) {\n _this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n else {\n var newElem = _this.shadowRoot.createVirtualNode('virtual');\n newElem.destroyBackendElementOnDetach();\n Element.setSlotElement(newElem, slotElement);\n var newTmplArgs = getTmplArgs(newElem);\n newTmplArgs.dynamicSlotNameMatched = true;\n _this.handleChildrenCreationAndInsert(children, newElem, undefined, undefined);\n parentNode.replaceChild(newElem, elem);\n }\n }\n else {\n if (tmplArgs.dynamicSlotNameMatched) {\n var newElem = _this.createDynamicPlaceholder(slotElement);\n parentNode.replaceChild(newElem, elem);\n }\n }\n }\n else {\n elem.slot = slot;\n _this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n }\n else {\n _this.handleChildrenUpdate(children, elem, slotElement, dynamicSlotName);\n }\n }, undefined, undefined);\n };\n ProcGenWrapper.prototype.dynamicSlotUpdate = function (elem, dynamicSlotValueNames, children) {\n var _this = this;\n var sr = elem.getShadowRoot();\n if ((sr === null || sr === void 0 ? void 0 : sr.getSlotMode()) === 3 /* SlotMode.Dynamic */) {\n sr.setDynamicSlotHandler(dynamicSlotValueNames || [], function (slots) {\n var childNodes = [];\n var _loop_1 = function (i) {\n var _a = slots[i], slot = _a.slot, slotName = _a.name, slotValues = _a.slotValues;\n var slotChildNodes = _this.handleChildrenCreation(function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) {\n children(true, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode, slotValues, undefined);\n }, slot, slotName);\n childNodes.push.apply(childNodes, slotChildNodes);\n };\n for (var i = 0; i < slots.length; i += 1) {\n _loop_1(i);\n }\n if (childNodes.length)\n elem.insertChildren(childNodes, -1);\n }, function (slots) {\n if (!slots.length || !slots[0].slotNodes.length)\n return;\n slots.sort(function (slot1, slot2) { return slot1.slotNodes[0].parentIndex - slot2.slotNodes[0].parentIndex; });\n var l = -Infinity;\n var r = -Infinity;\n for (var i = 0; i < slots.length; i += 1) {\n var slotNodes = slots[i].slotNodes;\n var firstIndex = slotNodes[0].parentIndex;\n if (r === firstIndex) {\n r = firstIndex + slotNodes.length;\n }\n else {\n if (l >= 0) {\n elem.removeChildren(l, r - l);\n }\n l = firstIndex;\n r = firstIndex + slotNodes.length;\n }\n }\n if (l >= 0)\n elem.removeChildren(l, r - l);\n }, function (slot, slotValues, slotValueUpdatePathTrees) {\n var slotName = slot._$slotName || '';\n _this.handleChildrenUpdate(function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) {\n children(false, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode, slotValues, slotValueUpdatePathTrees);\n }, elem, slot, slotName);\n });\n return sr;\n }\n return null;\n };\n ProcGenWrapper.prototype.createDynamicPlaceholder = function (slotElement) {\n var elem = this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setSlotElement(elem, slotElement);\n var tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = false;\n return elem;\n };\n ProcGenWrapper.prototype.createCommonElement = function (tagName, genericImpls, propertyInit, children, dynamicSlotValueNames) {\n var _this = this;\n var placeholding = this.shadowRoot.checkComponentPlaceholder(tagName);\n var elem;\n var dynSlot = false;\n var initPropValues = function (elem) {\n var sr = elem instanceof Component\n ? _this.dynamicSlotUpdate(elem, dynamicSlotValueNames, children)\n : null;\n if (sr)\n dynSlot = true;\n propertyInit(elem, true);\n if (elem instanceof Component) {\n if (elem.hasPendingChanges()) {\n var nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n sr === null || sr === void 0 ? void 0 : sr.applySlotUpdates();\n }\n };\n if (this.disallowNativeNode || typeof placeholding === 'boolean') {\n var placeholderCb = void 0;\n if (placeholding) {\n placeholderCb = function () {\n var _a;\n var replacer = _this.shadowRoot.createComponent(tagName, tagName, genericImpls, undefined, initPropValues);\n replacer.destroyBackendElementOnDetach();\n var replacerShadowRoot = replacer.getShadowRoot();\n var elemShadowRoot = elem instanceof Component ? elem.getShadowRoot() : null;\n var isElemDynamicSlots = (elemShadowRoot === null || elemShadowRoot === void 0 ? void 0 : elemShadowRoot.getSlotMode()) === 3 /* SlotMode.Dynamic */;\n var isReplacerDynamicSlots = (replacerShadowRoot === null || replacerShadowRoot === void 0 ? void 0 : replacerShadowRoot.getSlotMode()) === 3 /* SlotMode.Dynamic */;\n if (isReplacerDynamicSlots) {\n if (!isElemDynamicSlots) {\n throw new Error('The \"dynamicSlots\" option of the component and its placeholder should be the same.');\n }\n (_a = elem.parentNode) === null || _a === void 0 ? void 0 : _a.replaceChild(replacer, elem);\n }\n else {\n if (isElemDynamicSlots) {\n throw new Error('The \"dynamicSlots\" option of the component and its placeholder should be the same.');\n }\n elem.selfReplaceWith(replacer);\n }\n };\n }\n elem = this.shadowRoot.createComponent(tagName, tagName, genericImpls, placeholderCb, initPropValues);\n elem.destroyBackendElementOnDetach();\n }\n else {\n elem = this.shadowRoot.createComponentOrNativeNode(placeholding !== null && placeholding !== void 0 ? placeholding : tagName, genericImpls, initPropValues);\n elem.destroyBackendElementOnDetach();\n }\n if (dynSlot) {\n this.bindingMapDisabled = true; // IDEA better binding map disable detection\n }\n else {\n this.handleChildrenCreationAndInsert(children, elem, undefined, undefined);\n }\n return elem;\n };\n // set slot\n // (not used any more, leaving for compatibilities)\n ProcGenWrapper.prototype.s = function (elem, v) {\n elem.slot = v;\n };\n // set slot value\n ProcGenWrapper.prototype.l = function (elem, name, value) {\n this.shadowRoot.replaceSlotValue(elem, name, value);\n };\n // set id\n ProcGenWrapper.prototype.i = function (elem, v) {\n elem.id = v;\n };\n // set class or external classes named `class`\n ProcGenWrapper.prototype.c = function (elem, v) {\n if (elem instanceof Component) {\n // \"class\" itself can also be an external class\n var hasExternalClass = elem.hasExternalClass('class');\n if (hasExternalClass) {\n ;\n elem.setExternalClass('class', dataValueToString(v));\n }\n elem.class = dataValueToString(v);\n }\n else {\n elem.class = dataValueToString(v);\n }\n };\n // set style or property named `style`\n ProcGenWrapper.prototype.y = function (elem, v) {\n elem.setNodeStyle(dataValueToString(v), 0 /* StyleSegmentIndex.MAIN */);\n };\n // set dataset\n ProcGenWrapper.prototype.d = function (elem, name, v) {\n elem.setDataset(name, v);\n };\n // set mark\n ProcGenWrapper.prototype.m = function (elem, name, v) {\n elem.setMark(name, v);\n };\n // set event handler\n ProcGenWrapper.prototype.v = function (elem, evName, v, final, mutated, capture, isDynamic) {\n var _this = this;\n var handler = typeof v === 'function' ? this.eventListenerFilter(v) : dataValueToString(v);\n var listener = function (ev) {\n var host = elem.ownerShadowRoot.getHostNode();\n var ret;\n var methodCaller = host.getMethodCaller();\n var f = typeof handler === 'function' ? handler : Component.getMethod(host, handler);\n if (typeof f === 'function') {\n var filteredEv = _this.eventObjectFilter(ev);\n ret = f.call(methodCaller, filteredEv);\n }\n return ret;\n };\n var evOptions = {\n final: final,\n mutated: mutated,\n capture: capture,\n };\n if (isDynamic) {\n var tmplArgs = getTmplArgs(elem);\n if (!tmplArgs.dynEvListeners)\n tmplArgs.dynEvListeners = {};\n var dynEvListeners = tmplArgs.dynEvListeners;\n if (dynEvListeners[evName]) {\n elem.removeListener(evName, dynEvListeners[evName], evOptions);\n }\n dynEvListeners[evName] = listener;\n }\n if (handler)\n elem.addListener(evName, listener, evOptions);\n };\n // update a property or external class of a component, or an attribute of a native node\n ProcGenWrapper.prototype.r = function (elem, name, v, lvaluePath) {\n var _a;\n if (elem instanceof Component) {\n var nodeDataProxy = Component.getDataProxy(elem);\n var camelName = dashToCamelCase(name);\n if (nodeDataProxy.replaceProperty(camelName, v)) {\n if (lvaluePath) {\n nodeDataProxy.setModelBindingListener(camelName, function (value) {\n var host = elem.ownerShadowRoot.getHostNode();\n var nodeDataProxy = Component.getDataProxy(host);\n nodeDataProxy.replaceDataOnPath(lvaluePath, value);\n nodeDataProxy.applyDataUpdates(false);\n });\n }\n var tmplArgs = getTmplArgs(elem);\n if ((_a = tmplArgs.changeProp) === null || _a === void 0 ? void 0 : _a[name]) {\n var lv = tmplArgs.changeProp[name];\n var oldValue = lv.oldValue;\n if (oldValue !== v) {\n lv.oldValue = v;\n var host = elem.ownerShadowRoot.getHostNode();\n lv.listener.call(host.getMethodCaller(), v, oldValue, host, elem);\n }\n }\n }\n else if (elem.hasExternalClass(name)) {\n elem.setExternalClass(name, dataValueToString(v));\n }\n else {\n // compatibilities for legacy event binding syntax\n if (camelName.startsWith('bind')) {\n this.v(elem, camelName.slice('bind'.length), dataValueToString(v), false, false, false, true);\n }\n else if (camelName.startsWith('captureBind')) {\n this.v(elem, camelName.slice('captureBind'.length), dataValueToString(v), false, false, true, true);\n }\n else if (camelName.startsWith('catch')) {\n this.v(elem, camelName.slice('catch'.length), dataValueToString(v), true, false, false, true);\n }\n else if (camelName.startsWith('captureCatch')) {\n this.v(elem, camelName.slice('captureCatch'.length), dataValueToString(v), true, false, true, true);\n }\n else if (camelName.startsWith('on')) {\n this.v(elem, camelName.slice('on'.length), dataValueToString(v), false, false, false, true);\n }\n }\n }\n else if (elem instanceof NativeNode) {\n elem.updateAttribute(name, v);\n if (lvaluePath) {\n elem.setModelBindingListener(name, function (value) {\n var host = elem.ownerShadowRoot.getHostNode();\n var nodeDataProxy = Component.getDataProxy(host);\n nodeDataProxy.replaceDataOnPath(lvaluePath, value);\n nodeDataProxy.applyDataUpdates(false);\n });\n }\n }\n };\n // set a worklet directive value\n ProcGenWrapper.prototype.wl = function (elem, name, value) {\n if (elem instanceof Component) {\n elem.triggerWorkletChangeLifetime(name, value);\n }\n else {\n // TODO warn unused worklet\n }\n };\n // add a change property binding\n ProcGenWrapper.prototype.p = function (elem, name, v) {\n if (elem instanceof Component) {\n if (Component.hasProperty(elem, name)) {\n var tmplArgs = getTmplArgs(elem);\n if (!tmplArgs.changeProp) {\n tmplArgs.changeProp = Object.create(null);\n }\n tmplArgs.changeProp[name] = {\n listener: this.changePropFilter(v),\n oldValue: elem.data[name],\n };\n }\n }\n };\n // set filter functions for change properties and event listeners\n ProcGenWrapper.prototype.setFnFilter = function (changePropFilter, eventListenerFilter) {\n this.changePropFilter = changePropFilter;\n this.eventListenerFilter = eventListenerFilter;\n };\n return ProcGenWrapper;\n}());\nexport { ProcGenWrapper };\n","/* eslint-disable class-methods-use-this */\n/* global document */\nimport { dataValueToString, } from './proc_gen_wrapper';\nvar noop = function () {\n /* empty */\n};\nvar ProcGenWrapperDom = /** @class */ (function () {\n function ProcGenWrapperDom(shadowRoot, procGen) {\n this.shadowRoot = shadowRoot;\n this.procGen = procGen;\n }\n ProcGenWrapperDom.prototype.create = function (data) {\n var _a = this, shadowRoot = _a.shadowRoot, procGen = _a.procGen;\n var children = procGen(this, true, data, undefined);\n this.handleChildrenCreation(children.C, shadowRoot.shadowRootElement);\n return children.B;\n };\n ProcGenWrapperDom.prototype.bindingMapUpdate = function (field, data, bindingMapGenList) {\n var updaters = bindingMapGenList[field];\n if (updaters === undefined)\n return;\n for (var i = 0; i < updaters.length; i += 1) {\n var bindingMapGen = updaters[i];\n bindingMapGen(data, function () {\n /* empty */\n }, function (elem, v) {\n ;\n elem.textContent = v;\n });\n }\n };\n ProcGenWrapperDom.prototype.handleChildrenCreation = function (children, parentNode) {\n var _this = this;\n var slotMergeable = true;\n var slotMerged = false;\n var appendSlot = function () {\n slotMergeable = false;\n slotMerged = false;\n var elem = document.createElement('virtual');\n parentNode.appendChild(elem);\n _this.shadowRoot.slot = elem;\n };\n children(true, \n // text node\n function (textContent, textInit) {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n var elem = document.createTextNode(textContent || '');\n if (textInit)\n textInit(elem);\n parentNode.appendChild(elem);\n }, \n // component or native node\n function (tagName, genericImpls, propertyInit, children) {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n var elem = document.createElement(tagName);\n propertyInit(elem, true);\n _this.handleChildrenCreation(children, elem);\n parentNode.appendChild(elem);\n }, \n // wx:if node or template-is node\n noop, \n // wx:for node\n noop, \n // slot node\n function () {\n if (slotMergeable) {\n slotMerged = true;\n _this.shadowRoot.slot = parentNode;\n }\n else {\n appendSlot();\n }\n }, \n // other virtual node\n function (children) {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n var elem = document.createElement('virtual');\n _this.handleChildrenCreation(children, elem);\n parentNode.appendChild(elem);\n });\n };\n // set slot\n ProcGenWrapperDom.prototype.s = function () {\n noop();\n };\n // set id\n ProcGenWrapperDom.prototype.i = function (elem, v) {\n this.shadowRoot.idMap[v] = elem;\n };\n // set class or external classes named `class`\n ProcGenWrapperDom.prototype.c = function (elem, v) {\n elem.setAttribute('class', v);\n };\n // set style or property named `style`\n ProcGenWrapperDom.prototype.y = function (elem, v) {\n elem.setAttribute('style', v);\n };\n // set dataset\n ProcGenWrapperDom.prototype.d = function (elem, name, v) {\n elem.dataset[name] = dataValueToString(v);\n };\n // set mark\n ProcGenWrapperDom.prototype.m = function () {\n noop();\n };\n // set event handler\n ProcGenWrapperDom.prototype.v = function (elem, evName, v, final) {\n var _this = this;\n this.shadowRoot.setListener(elem, evName, function (ev) {\n var handler = _this.shadowRoot.template.methods[v];\n var ret = handler === null || handler === void 0 ? void 0 : handler(ev);\n if (final)\n return false;\n return ret;\n });\n };\n // update a property or external class of a component, or an attribute of a native node\n ProcGenWrapperDom.prototype.r = function (elem, name, v) {\n if (typeof v === 'boolean') {\n if (v)\n elem.setAttribute(name, '');\n else\n elem.removeAttribute(name);\n }\n else {\n elem.setAttribute(name, dataValueToString(v));\n }\n };\n // add a change property binding\n ProcGenWrapperDom.prototype.p = function () {\n noop();\n };\n // set filter functions for change properties and event listeners\n ProcGenWrapperDom.prototype.setFnFilter = function () {\n noop();\n };\n return ProcGenWrapperDom;\n}());\nexport { ProcGenWrapperDom };\n","/* global document: false */\nimport { ProcGenWrapperDom } from './proc_gen_wrapper_dom';\nvar DEFAULT_PROC_GEN_DOM = function () { return ({\n C: function (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot) {\n defineSlot('');\n },\n B: Object.create(null),\n}); };\nexport var DEFAULT_PROC_GEN_GROUP_DOM = function () { return DEFAULT_PROC_GEN_DOM; };\nvar GlassEaselTemplateDOM = /** @class */ (function () {\n function GlassEaselTemplateDOM(behavior) {\n if (typeof behavior._$template !== 'object' && behavior._$template !== undefined) {\n throw new Error(\"Component template of \".concat(behavior.is, \" must be a valid compiled template (or \\\"null\\\" for default template).\"));\n }\n else {\n var c = behavior._$template || {\n content: DEFAULT_PROC_GEN_GROUP_DOM,\n };\n this.genObjectGroupEnv = {\n list: c.groupList || Object.create(null),\n group: c.content,\n };\n }\n this.updateMode = '';\n this.methods = behavior._$methodMap;\n }\n GlassEaselTemplateDOM.prototype.createInstance = function (comp) {\n return new GlassEaselTemplateDOMInstance(this, comp);\n };\n return GlassEaselTemplateDOM;\n}());\nexport { GlassEaselTemplateDOM };\nvar GlassEaselTemplateDOMInstance = /** @class */ (function () {\n function GlassEaselTemplateDOMInstance(template, comp) {\n if (comp.getBackendMode() !== 3 /* BackendMode.Domlike */) {\n throw new Error(\"Component template of \".concat(comp.is, \" cannot be initialized since external rendering is only supported in Domlike backend currently.\"));\n }\n var shadowRootElement = comp.getBackendElement();\n if (!shadowRootElement) {\n throw new Error(\"Component template of \".concat(comp.is, \" cannot be initialized as external components since no suitable backend element found.\"));\n }\n this.comp = comp;\n this.shadowRoot = this;\n this.shadowRootElement = shadowRootElement;\n this.root = shadowRootElement;\n this.slot = shadowRootElement;\n this.template = template;\n var procGen = template.genObjectGroupEnv.group('') || DEFAULT_PROC_GEN_GROUP_DOM('');\n this.procGenWrapper = new ProcGenWrapperDom(this, procGen);\n this.idMap = Object.create(null);\n this.listeners = [];\n }\n GlassEaselTemplateDOMInstance.prototype.initValues = function (data) {\n this.bindingMapGen = this.procGenWrapper.create(data);\n if (!this.bindingMapGen) {\n throw new Error('The component template does not support binding-map-update, so it cannot be used as external components.');\n }\n var shadowRoot = this.shadowRootElement;\n if (this.slot === shadowRoot && shadowRoot.childNodes.length > 0) {\n // if `<slot />` is forgot, add one at the end of the child list\n var slot = document.createElement('virtual');\n shadowRoot.appendChild(slot);\n this.slot = slot;\n }\n };\n GlassEaselTemplateDOMInstance.prototype.getIdMap = function () {\n return this.idMap;\n };\n GlassEaselTemplateDOMInstance.prototype.updateValues = function (data, changes) {\n var bindingMapGen = this.bindingMapGen;\n for (var i = 0; i < changes.length; i += 1) {\n var path = changes[i][0];\n this.procGenWrapper.bindingMapUpdate(path[0], data, bindingMapGen);\n }\n };\n // eslint-disable-next-line class-methods-use-this\n GlassEaselTemplateDOMInstance.prototype.setListener = function (elem, ev, listener) {\n var _a;\n var target = elem;\n if (target._$wxTmplEv) {\n target._$wxTmplEv[ev] = listener;\n }\n else {\n target._$wxTmplEv = (_a = {}, _a[ev] = listener, _a);\n }\n };\n GlassEaselTemplateDOMInstance.prototype.handleEvent = function (elem, event) {\n var _a;\n var target = elem;\n var cur = target;\n var root = this.shadowRootElement;\n var evName = event.type;\n var bubbles = event.bubbles;\n for (;;) {\n var shadowedEvent = event.wrapShadowedEvent(target, null, cur);\n var f = (_a = cur._$wxTmplEv) === null || _a === void 0 ? void 0 : _a[evName];\n if (f) {\n var r = f.call(cur, shadowedEvent);\n if (r === false) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n if (!bubbles || event.propagationStopped())\n break;\n if (cur === root)\n break;\n var next = cur.parentNode;\n if (next)\n cur = next;\n else\n break;\n }\n };\n return GlassEaselTemplateDOMInstance;\n}());\nexport { GlassEaselTemplateDOMInstance };\n","import * as backend from './backend/backend_protocol';\nimport * as composedBackend from './backend/composed_backend_protocol';\nimport * as domlikeBackend from './backend/domlike_backend_protocol';\nimport { StyleScopeManager } from './class_list';\nimport { ComponentSpace } from './component_space';\nimport { GlassEaselTemplateEngine } from './tmpl';\nimport { BM } from './backend/mode';\n/**\n * The deep copy strategy\n *\n * Higher level indicates more accuracy but probably less performance.\n */\nexport var DeepCopyKind;\n(function (DeepCopyKind) {\n /**\n * Avoid deep copy\n *\n * This avoids any copy, and recursive objects can be handled without any failing.\n * However, changing non-copied data will sometimes break the logic.\n */\n DeepCopyKind[\"None\"] = \"none\";\n /**\n * Do a simple deep copy\n *\n * This simply clones each enumerable fields in an object to a new object.\n * It causes stack overflow in recursive objects.\n * Everything in prototypes is ignored.\n */\n DeepCopyKind[\"Simple\"] = \"simple\";\n /**\n * Do a deep copy with recursion detection\n *\n * This clones each enumerable fields in an object to a new object.\n * It can handle recursive objects by recursive detection.\n * Everything in prototypes is ignored.\n */\n DeepCopyKind[\"SimpleWithRecursion\"] = \"simple-recursion\";\n})(DeepCopyKind || (DeepCopyKind = {}));\nvar defaultComponentSpace = null;\nexport var getDefaultComponentSpace = function () {\n if (defaultComponentSpace) {\n return defaultComponentSpace;\n }\n var cs = new ComponentSpace();\n defaultComponentSpace = cs;\n return cs;\n};\nvar defaultBackendContext = null;\nexport var getDefaultBackendContext = function () {\n if (defaultBackendContext)\n return defaultBackendContext;\n var c;\n if (BM.DOMLIKE) {\n c = new domlikeBackend.CurrentWindowBackendContext();\n }\n else if (BM.COMPOSED) {\n c = new composedBackend.EmptyComposedBackendContext();\n }\n else {\n c = new backend.EmptyBackendContext();\n }\n defaultBackendContext = c;\n return c;\n};\n/**\n * The default options\n */\nexport var globalOptions = {\n defaultComponentSpace: null,\n externalComponent: false,\n templateEngine: new GlassEaselTemplateEngine(),\n styleScope: StyleScopeManager.globalScope(),\n extraStyleScope: null,\n hostNodeTagName: 'wx-x',\n multipleSlots: false,\n dynamicSlots: false,\n directSlots: false,\n reflectToAttributes: false,\n writeFieldsToNode: true,\n writeIdToDOM: false,\n useMethodCallerListeners: false,\n idPrefixGenerator: null,\n pureDataPattern: null,\n dataDeepCopy: DeepCopyKind.Simple,\n propertyPassingDeepCopy: DeepCopyKind.Simple,\n listenerChangeLifetimes: false,\n virtualHost: false,\n propertyEarlyInit: false,\n throwGlobalError: false,\n writeExtraInfoToAttr: false,\n backendContext: null,\n};\nexport var normalizeComponentOptions = function (componentOptions, baseComponentOptions) {\n var b = baseComponentOptions === undefined ? globalOptions : baseComponentOptions;\n if (componentOptions === undefined && b !== globalOptions) {\n return b;\n }\n var p = componentOptions !== null && componentOptions !== void 0 ? componentOptions : {};\n return {\n externalComponent: p.externalComponent !== undefined ? p.externalComponent : b.externalComponent,\n templateEngine: p.templateEngine !== undefined ? p.templateEngine : b.templateEngine,\n styleScope: p.styleScope !== undefined ? p.styleScope : b.styleScope,\n hostNodeTagName: p.hostNodeTagName !== undefined ? p.hostNodeTagName : b.hostNodeTagName,\n extraStyleScope: p.extraStyleScope !== undefined ? p.extraStyleScope : b.extraStyleScope,\n multipleSlots: p.multipleSlots !== undefined ? p.multipleSlots : b.multipleSlots,\n dynamicSlots: p.dynamicSlots !== undefined ? p.dynamicSlots : b.dynamicSlots,\n directSlots: p.directSlots !== undefined ? p.directSlots : b.directSlots,\n reflectToAttributes: p.reflectToAttributes !== undefined ? p.reflectToAttributes : b.reflectToAttributes,\n writeFieldsToNode: p.writeFieldsToNode !== undefined ? p.writeFieldsToNode : b.writeFieldsToNode,\n writeIdToDOM: p.writeIdToDOM !== undefined ? p.writeIdToDOM : b.writeIdToDOM,\n useMethodCallerListeners: p.useMethodCallerListeners !== undefined\n ? p.useMethodCallerListeners\n : b.useMethodCallerListeners,\n idPrefixGenerator: p.idPrefixGenerator !== undefined ? p.idPrefixGenerator : b.idPrefixGenerator,\n pureDataPattern: p.pureDataPattern !== undefined ? p.pureDataPattern : b.pureDataPattern,\n dataDeepCopy: p.dataDeepCopy !== undefined ? p.dataDeepCopy : b.dataDeepCopy,\n propertyPassingDeepCopy: p.propertyPassingDeepCopy !== undefined\n ? p.propertyPassingDeepCopy\n : b.propertyPassingDeepCopy,\n listenerChangeLifetimes: p.listenerChangeLifetimes !== undefined\n ? p.listenerChangeLifetimes\n : b.listenerChangeLifetimes,\n virtualHost: p.virtualHost !== undefined ? p.virtualHost : b.virtualHost,\n propertyEarlyInit: p.propertyEarlyInit !== undefined ? p.propertyEarlyInit : b.propertyEarlyInit,\n };\n};\n","import { Component } from '.';\nimport { globalOptions } from './global_options';\nfunction dispatchError(err, info, avoidErrorHandler) {\n if (!avoidErrorHandler && errorFuncArr.call(err, [err, info]) === false)\n return;\n if (globalOptions.throwGlobalError) {\n throw err;\n }\n else {\n // eslint-disable-next-line no-console\n console.error(err instanceof Error ? \"\".concat(err.message, \"\\n\").concat(err.stack || '') : String(err));\n }\n}\nvar FuncArr = /** @class */ (function () {\n function FuncArr() {\n this.empty = true;\n this._$type = '';\n this._$arr = null;\n this._$avoidErrorHandler = false;\n }\n FuncArr.prototype.add = function (func) {\n if (!this._$arr)\n this._$arr = [func];\n else\n this._$arr = this._$arr.concat(func);\n this.empty = false;\n };\n FuncArr.prototype.remove = function (func) {\n var ret = null;\n if (this._$arr) {\n var newArr = [];\n var oldArr = this._$arr;\n for (var i = 0; i < oldArr.length; i += 1) {\n if (oldArr[i] === func) {\n newArr.push.apply(newArr, oldArr.slice(i + 1));\n ret = func;\n break;\n }\n newArr.push(oldArr[i]);\n }\n this._$arr = newArr;\n this.empty = this._$arr.length === 0;\n }\n return ret;\n };\n FuncArr.prototype.call = function (caller, args, relatedComponent) {\n var arr = this._$arr;\n var ret = true;\n if (arr) {\n for (var i = 0; i < arr.length; i += 1) {\n var r = safeCallback(this._$type, arr[i], caller, args, relatedComponent, this._$avoidErrorHandler);\n if (r === false)\n ret = false;\n }\n }\n return ret;\n };\n FuncArr.safeCallback = function (type, method, caller, args, relatedComponent, avoidErrorHandler) {\n if (avoidErrorHandler === void 0) { avoidErrorHandler = false; }\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return method.apply(caller, args);\n }\n catch (e) {\n var msg = \"[Error] [Component] \".concat(type || 'Error Listener', \" Error @ \");\n if (caller instanceof Component)\n msg += caller.is;\n msg += \"#\".concat(method.name || '(anonymous)');\n if (relatedComponent) {\n relatedComponent.triggerLifetime('error', [e]);\n }\n dispatchError(e, {\n message: msg,\n type: type,\n element: caller,\n method: method,\n args: args,\n }, avoidErrorHandler);\n return undefined;\n }\n };\n FuncArr.addGlobalErrorListener = function (func) {\n errorFuncArr.add(func);\n };\n FuncArr.removeGlobalErrorListener = function (func) {\n errorFuncArr.remove(func);\n };\n FuncArr.addGlobalWarningListener = function (func) {\n warningFuncArr.add(func);\n };\n FuncArr.removeGlobalWarningListener = function (func) {\n warningFuncArr.remove(func);\n };\n return FuncArr;\n}());\nexport { FuncArr };\nexport function triggerWarning(msg) {\n var message = \"[Warning] [Component] \".concat(msg);\n if (warningFuncArr.call(message, [message])) {\n // eslint-disable-next-line no-console\n console.warn(message);\n }\n}\nvar errorFuncArr = new FuncArr();\nerrorFuncArr._$avoidErrorHandler = true;\nvar warningFuncArr = new FuncArr();\nvar FuncArrWithMeta = /** @class */ (function () {\n function FuncArrWithMeta() {\n this.empty = true;\n this._$type = '';\n this._$arr = null;\n }\n FuncArrWithMeta.prototype.add = function (func, data) {\n var item = { f: func, data: data };\n if (!this._$arr)\n this._$arr = [item];\n else\n this._$arr = this._$arr.concat(item);\n this.empty = false;\n };\n FuncArrWithMeta.prototype.remove = function (func) {\n var ret = null;\n if (this._$arr) {\n var newArr = [];\n var oldArr = this._$arr;\n for (var i = 0; i < oldArr.length; i += 1) {\n var v = oldArr[i];\n if (v.f === func) {\n newArr.push.apply(newArr, oldArr.slice(i + 1));\n ret = v.data;\n break;\n }\n newArr.push(v);\n }\n this._$arr = newArr;\n this.empty = this._$arr.length === 0;\n }\n return ret;\n };\n FuncArrWithMeta.prototype.call = function (caller, args, retainFn, relatedComponent) {\n var arr = this._$arr;\n var ret = true;\n if (arr) {\n for (var i = 0; i < arr.length; i += 1) {\n var _a = arr[i], f = _a.f, data = _a.data;\n if (!retainFn(data))\n continue;\n var r = FuncArr.safeCallback(this._$type, f, caller, args, relatedComponent);\n if (r === false)\n ret = false;\n }\n }\n return ret;\n };\n return FuncArrWithMeta;\n}());\nexport { FuncArrWithMeta };\nexport var safeCallback = FuncArr.safeCallback;\nexport var addGlobalErrorListener = FuncArr.addGlobalErrorListener;\nexport var removeGlobalErrorListener = FuncArr.removeGlobalErrorListener;\nexport var addGlobalWarningListener = FuncArr.addGlobalWarningListener;\nexport var removeGlobalWarningListener = FuncArr.removeGlobalWarningListener;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VirtualNode } from './virtual_node';\nimport { Component, convertGenerics, resolvePlaceholder, } from './component';\nimport { TextNode } from './text_node';\nimport { NativeNode } from './native_node';\nimport { Element } from './element';\nimport { BM } from './backend/mode';\nimport { getDeepCopyStrategy } from './data_proxy';\nimport { deepCopy, simpleDeepCopy } from './data_utils';\nexport var SlotMode;\n(function (SlotMode) {\n SlotMode[SlotMode[\"Direct\"] = 0] = \"Direct\";\n SlotMode[SlotMode[\"Single\"] = 1] = \"Single\";\n SlotMode[SlotMode[\"Multiple\"] = 2] = \"Multiple\";\n SlotMode[SlotMode[\"Dynamic\"] = 3] = \"Dynamic\";\n})(SlotMode || (SlotMode = {}));\nvar wrapPlaceholderCallback = function (f, cwp, owner) {\n var waiting = cwp.waiting;\n if (waiting) {\n waiting.add(f);\n waiting.hintUsed(owner);\n return function () {\n waiting.remove(f);\n };\n }\n return undefined;\n};\nvar ShadowRoot = /** @class */ (function (_super) {\n __extends(ShadowRoot, _super);\n function ShadowRoot() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n /* istanbul ignore next */\n return _super.call(this) || this;\n }\n ShadowRoot.createShadowRoot = function (host) {\n var _a;\n var node = Object.create(ShadowRoot.prototype);\n var sr = BM.SHADOW || (BM.DYNAMIC && host.getBackendMode() === 1 /* BackendMode.Shadow */)\n ? ((_a = host.getBackendElement()) === null || _a === void 0 ? void 0 : _a.getShadowRoot()) || null\n : null;\n node._$initializeVirtual('shadow', node, host._$nodeTreeContext, sr);\n node._$idMap = null;\n var slotMode = 1 /* SlotMode.Single */;\n var hostComponentOptions = host.getComponentOptions();\n if (hostComponentOptions.multipleSlots)\n slotMode = 2 /* SlotMode.Multiple */;\n else if (hostComponentOptions.dynamicSlots)\n slotMode = 3 /* SlotMode.Dynamic */;\n else if (hostComponentOptions.directSlots)\n slotMode = 0 /* SlotMode.Direct */;\n node._$slotMode = slotMode;\n if (slotMode === 1 /* SlotMode.Single */) {\n node._$singleSlot = null;\n }\n else if (slotMode === 2 /* SlotMode.Multiple */) {\n node._$slots = Object.create(null);\n node._$slotsList = Object.create(null);\n }\n else if (slotMode === 3 /* SlotMode.Dynamic */) {\n node._$dynamicSlotsInserted = false;\n node._$dynamicSlots = new Map();\n node._$requiredSlotValueNames = [];\n node._$propertyPassingDeepCopy = getDeepCopyStrategy(hostComponentOptions.propertyPassingDeepCopy);\n node._$insertDynamicSlotHandler = undefined;\n node._$removeDynamicSlotHandler = undefined;\n node._$updateDynamicSlotHandler = undefined;\n }\n node._$backendShadowRoot = sr;\n node._$initialize(true, sr, node, host._$nodeTreeContext);\n node._$host = host;\n host.shadowRoot = node;\n return node;\n };\n ShadowRoot.prototype.getHostNode = function () {\n return this._$host;\n };\n ShadowRoot.prototype.createTextNode = function (text) {\n if (text === void 0) { text = ''; }\n return new TextNode(text, this);\n };\n ShadowRoot.prototype.createNativeNode = function (tagName) {\n return NativeNode.create(tagName, this);\n };\n ShadowRoot.prototype.createVirtualNode = function (virtualName) {\n if (virtualName === void 0) { virtualName = 'virtual'; }\n return VirtualNode.create(virtualName, this);\n };\n ShadowRoot.prototype.createNativeNodeWithInit = function (tagName, stylingName, placeholderHandler, initPropValues) {\n var ret = NativeNode.create(tagName, this, stylingName, placeholderHandler);\n initPropValues === null || initPropValues === void 0 ? void 0 : initPropValues(ret);\n return ret;\n };\n /**\n * Create a component if possible\n *\n * Placeholding status should be checked with `checkComponentPlaceholder` .\n * This function may create a native node if the using target is native node.\n */\n ShadowRoot.prototype.createComponent = function (tagName, usingKey, genericTargets, placeholderCallback, initPropValues) {\n var _a;\n var host = this._$host;\n var beh = host._$behavior;\n var hostGenericImpls = host._$genericImpls;\n var space = beh.ownerSpace;\n var compName = usingKey === undefined ? tagName : usingKey;\n // if the target is in using list, then use the one in using list\n var using = beh._$using[compName];\n if (typeof using === 'string') {\n return this.createNativeNodeWithInit(using, tagName, undefined, initPropValues);\n }\n if (using) {\n var usingTarget = void 0;\n if (using.final) {\n usingTarget = using.final;\n }\n else if (using.placeholder !== null) {\n usingTarget = resolvePlaceholder(using.placeholder, space, using.source, hostGenericImpls);\n }\n var placeholderHandler = placeholderCallback\n ? wrapPlaceholderCallback(placeholderCallback, using, host)\n : undefined;\n if (typeof usingTarget === 'string') {\n return this.createNativeNodeWithInit(usingTarget, tagName, placeholderHandler, initPropValues);\n }\n if (usingTarget) {\n return Component._$advancedCreate(tagName, usingTarget, this, null, convertGenerics(usingTarget, beh, host, genericTargets), placeholderHandler, initPropValues);\n }\n }\n // if the target is in generics list, then use the one\n var g = hostGenericImpls && hostGenericImpls[compName];\n if (typeof g === 'string') {\n return this.createNativeNodeWithInit(g, tagName, undefined, initPropValues);\n }\n if (g) {\n var genImpl = void 0;\n if (g.final) {\n genImpl = g.final;\n }\n else if (g.placeholder !== null) {\n genImpl = resolvePlaceholder(g.placeholder, space, g.source, hostGenericImpls);\n }\n var placeholderHandler = placeholderCallback\n ? wrapPlaceholderCallback(placeholderCallback, g, host)\n : undefined;\n if (typeof genImpl === 'string') {\n return this.createNativeNodeWithInit(genImpl, tagName, placeholderHandler, initPropValues);\n }\n if (genImpl) {\n return Component._$advancedCreate(tagName, genImpl, this, null, convertGenerics(genImpl, beh, host, genericTargets), placeholderHandler, initPropValues);\n }\n }\n // find in the space otherwise\n var comp = (_a = space.getGlobalUsingComponent(compName)) !== null && _a !== void 0 ? _a : space.getDefaultComponent();\n /* istanbul ignore if */\n if (!comp) {\n throw new Error(\"Cannot find component \\\"\".concat(compName, \"\\\"\"));\n }\n if (typeof comp === 'string') {\n return this.createNativeNodeWithInit(comp, tagName, undefined, initPropValues);\n }\n return Component._$advancedCreate(tagName, comp, this, null, convertGenerics(comp, beh, host, genericTargets), undefined, initPropValues);\n };\n /**\n * Create a component if the given tag name is a component in the space, or a native node if not\n *\n * The component `using` map is not used.\n * Consider using `checkComponentPlaceholder` to check if the tag name is in the `using` map.\n * The global using registered with `ComponentSpace.prototype.getGlobalUsingComponent` is still used.\n */\n ShadowRoot.prototype.createComponentOrNativeNode = function (tagName, genericTargets, initPropValues) {\n var host = this._$host;\n var beh = host._$behavior;\n var space = beh.ownerSpace;\n // find in the space otherwise\n var comp = space.getGlobalUsingComponent(tagName);\n if (typeof comp === 'string') {\n return this.createNativeNodeWithInit(comp, tagName, undefined, initPropValues);\n }\n if (comp) {\n return Component._$advancedCreate(tagName, comp, this, null, convertGenerics(comp, beh, host, genericTargets), undefined, initPropValues);\n }\n // use native node otherwise\n var node = NativeNode.create(tagName, this);\n initPropValues === null || initPropValues === void 0 ? void 0 : initPropValues(node);\n return node;\n };\n /**\n * Find whether this component is placeholding or not\n *\n * This method will only find in the component `using` list and `generics` list.\n * If not found, returns `undefined` .\n * If the placeholder will be used, returns `true` ; `false` otherwise.\n */\n ShadowRoot.prototype.checkComponentPlaceholder = function (usingKey) {\n var _a;\n var beh = this._$host._$behavior;\n var compDef;\n var using = beh._$using[usingKey];\n if (using !== undefined) {\n compDef = using;\n }\n else {\n var g = (_a = this._$host._$genericImpls) === null || _a === void 0 ? void 0 : _a[usingKey];\n if (g)\n compDef = g;\n else\n return undefined;\n }\n if (typeof compDef === 'string')\n return false;\n if (compDef.final)\n return false;\n if (compDef.placeholder !== null)\n return true;\n return false;\n };\n ShadowRoot.prototype.getElementById = function (id) {\n return this._$getIdMap()[id];\n };\n /** @internal */\n ShadowRoot.prototype._$markIdCacheDirty = function () {\n this._$idMap = null;\n };\n /** @internal */\n ShadowRoot.prototype._$getIdMap = function () {\n if (this._$idMap)\n return this._$idMap;\n var idMap = Element._$generateIdMap(this);\n this._$idMap = idMap;\n return idMap;\n };\n /** Get the slot element with the specified name */\n ShadowRoot.prototype.getSlotElementFromName = function (name) {\n var slotMode = this._$slotMode;\n /* istanbul ignore if */\n if (slotMode === 0 /* SlotMode.Direct */)\n throw new Error('cannot get slot element in directSlots');\n if (slotMode === 1 /* SlotMode.Single */)\n return this._$singleSlot;\n if (slotMode === 2 /* SlotMode.Multiple */) {\n return this._$slots[name] || null;\n }\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n var slots = [];\n for (var it_1 = this._$subtreeSlotStart; it_1; it_1 = it_1.next) {\n var slot = it_1.value;\n var slotName = slot._$slotName || '';\n if (slotName === name)\n slots.push(slot);\n }\n return slots;\n }\n return null;\n };\n /**\n * Get the slot element for the slot content\n *\n * The provided node must be a valid child node of the host of this shadow root.\n * Otherwise the behavior is undefined.\n */\n ShadowRoot.prototype.getContainingSlot = function (elem) {\n var _a;\n var slotMode = this._$slotMode;\n if (slotMode === 0 /* SlotMode.Direct */)\n return (elem === null || elem === void 0 ? void 0 : elem.containingSlot) || null;\n if (slotMode === 1 /* SlotMode.Single */)\n return this._$singleSlot;\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n if (!elem)\n return null;\n var subTreeRoot = elem;\n while ((_a = subTreeRoot.parentNode) === null || _a === void 0 ? void 0 : _a._$inheritSlots) {\n subTreeRoot = subTreeRoot.parentNode;\n }\n var slotElement = subTreeRoot._$slotElement;\n // FIXME is ownerShadowRoot check necessary?\n if ((slotElement === null || slotElement === void 0 ? void 0 : slotElement.ownerShadowRoot) === this) {\n return slotElement;\n }\n }\n if (slotMode === 2 /* SlotMode.Multiple */) {\n var name_1;\n if (elem instanceof Element) {\n name_1 = elem._$nodeSlot;\n }\n else {\n name_1 = '';\n }\n return this._$slots[name_1] || null;\n }\n return null;\n };\n /**\n * Get the elements that should be composed in specified slot\n *\n * This method always returns a new array (or null if the specified slot is invalid).\n * It is convenient but less performant.\n * For better performance, consider using `forEachNodeInSpecifiedSlot` .\n */\n ShadowRoot.prototype.getSlotContentArray = function (slot) {\n if (slot._$slotName === null)\n return null;\n var ret = [];\n this.forEachNodeInSpecifiedSlot(slot, function (node) {\n ret.push(node);\n });\n return ret;\n };\n /**\n * Iterate slots\n */\n ShadowRoot.prototype.forEachSlot = function (f) {\n var slotMode = this._$slotMode;\n /* istanbul ignore if */\n if (slotMode === 0 /* SlotMode.Direct */) {\n throw new Error('Cannot iterate slots in directSlots');\n }\n if (slotMode === 1 /* SlotMode.Single */) {\n if (this._$singleSlot)\n f(this._$singleSlot);\n }\n else if (slotMode === 2 /* SlotMode.Multiple */) {\n var slots = Object.values(this._$slots);\n for (var i = 0; i < slots.length; i += 1) {\n if (f(slots[i]) === false)\n break;\n }\n }\n else if (slotMode === 3 /* SlotMode.Dynamic */) {\n for (var it_2 = this._$subtreeSlotStart; it_2; it_2 = it_2.next) {\n if (f(it_2.value) === false)\n break;\n }\n }\n };\n /**\n * Iterate through elements ahd their corresponding slots (including slots-inherited nodes)\n * @param f A function to execute for each element. Return false to break the iteration.\n * @returns A boolean indicating whether the iteration is complete.\n */\n ShadowRoot.prototype.forEachNodeInSlot = function (f) {\n var childNodes = this._$host.childNodes;\n for (var i = 0; i < childNodes.length; i += 1) {\n if (!Element.forEachNodeInSlot(childNodes[i], f))\n return false;\n }\n return true;\n };\n /**\n * Iterate through elements of a specified slot (including slots-inherited nodes)\n * @param f A function to execute for each element. Return false to break the iteration.\n * @returns A boolean indicating whether the iteration is complete.\n */\n ShadowRoot.prototype.forEachNodeInSpecifiedSlot = function (slot, f) {\n if (slot) {\n var childNodes = slot.slotNodes;\n for (var i = 0; i < childNodes.length; i += 1) {\n var node = childNodes[i];\n if (f(node) === false)\n return false;\n }\n return true;\n }\n return this.forEachNodeInSlot(function (node, slot) { return (slot === null ? f(node) : true); });\n };\n /**\n * Iterate through elements ahd their corresponding slots (NOT including slots-inherited nodes)\n * @param f A function to execute for each element. Return false to break the iteration.\n * @returns A boolean indicating whether the iteration is complete.\n */\n ShadowRoot.prototype.forEachSlotContentInSlot = function (f) {\n var childNodes = this._$host.childNodes;\n for (var i = 0; i < childNodes.length; i += 1) {\n if (!Element.forEachSlotContentInSlot(childNodes[i], f))\n return false;\n }\n return true;\n };\n /**\n * Iterate through elements of a specified slot (NOT including slots-inherited nodes)\n * @param f A function to execute for each element. Return false to break the iteration.\n * @returns A boolean indicating whether the iteration is complete.\n */\n ShadowRoot.prototype.forEachSlotContentInSpecifiedSlot = function (slot, f) {\n if (slot) {\n var childNodes = slot.slotNodes;\n for (var i = 0; i < childNodes.length; i += 1) {\n var node = childNodes[i];\n if (!node._$inheritSlots && f(node) === false)\n return false;\n }\n return true;\n }\n return this.forEachSlotContentInSlot(function (node, slot) { return (slot === null ? f(node) : true); });\n };\n /**\n * Check whether a node is connected to this shadow root\n */\n ShadowRoot.prototype.isConnected = function (node) {\n if (node.ownerShadowRoot !== this)\n return false;\n for (var p = node; p; p = p.parentNode) {\n if (p === this)\n return true;\n }\n return false;\n };\n /** @internal */\n ShadowRoot.prototype._$applyMultipleSlotInsertion = function (slot, slotName, _move) {\n var slotsList = this._$slotsList;\n var slots = this._$slots;\n // assuming that slot name duplication is very rare in practice,\n // the complexity without name duplication is priority guaranteed.\n if (slotsList[slotName]) {\n // with name duplication\n var firstSlot = slotsList[slotName];\n var insertPos = { next: firstSlot }; // this is a pointer to pointer\n var insertBeforeFirst = true;\n for (var jt = this._$subtreeSlotStart; jt && insertPos.next; jt = jt.next) {\n if (jt.value === slot)\n break;\n if (jt.value === insertPos.next.value) {\n insertBeforeFirst = false;\n insertPos = insertPos.next;\n }\n }\n if (insertBeforeFirst) {\n slotsList[slotName] = firstSlot.prev = { value: slot, prev: null, next: firstSlot };\n }\n else {\n var next = insertPos.next;\n insertPos.next = { value: slot, prev: insertPos, next: next };\n if (next)\n next.prev = insertPos.next;\n }\n }\n else {\n // without name duplication\n slotsList[slotName] = { value: slot, prev: null, next: null };\n }\n var oldSlot = slots[slotName];\n var newSlot = slotsList[slotName].value;\n if (oldSlot === newSlot)\n return;\n slots[slotName] = newSlot;\n Element._$insertChildReassignSlot(this, slotName, oldSlot || null, newSlot);\n };\n /** @internal */\n ShadowRoot.prototype._$applyMultipleSlotsRemoval = function (slot, slotName, move) {\n var slotsList = this._$slotsList;\n var slots = this._$slots;\n var oldSlot = slotsList[slotName] || null;\n for (; oldSlot; oldSlot = oldSlot.next) {\n if (oldSlot.value === slot)\n break;\n }\n if (!oldSlot)\n return;\n var prev = oldSlot.prev;\n var next = oldSlot.next;\n if (prev)\n prev.next = next;\n if (next)\n next.prev = prev;\n var firstSlotRemoved = !prev;\n if (!firstSlotRemoved)\n return;\n var newFirstSlot = next;\n if (newFirstSlot) {\n var oldNameNewSlot = newFirstSlot.value;\n slotsList[slotName] = newFirstSlot;\n // only update slotsList if slots were moved\n if (!move) {\n slots[slotName] = oldNameNewSlot;\n Element._$insertChildReassignSlot(this, slotName, slot, oldNameNewSlot);\n }\n }\n else {\n delete slotsList[slotName];\n // only update slotsList if slots were moved\n if (!move) {\n delete slots[slotName];\n Element._$insertChildReassignSlot(this, slotName, slot, null);\n }\n }\n };\n /** @internal */\n ShadowRoot.prototype._$applySlotRename = function (slot, newName, oldName) {\n var slotMode = this._$slotMode;\n // single slot does not care slot name\n if (slotMode === 1 /* SlotMode.Single */ || slotMode === 0 /* SlotMode.Direct */)\n return;\n // for multiple slots, reassign slot contents\n if (slotMode === 2 /* SlotMode.Multiple */) {\n this._$applyMultipleSlotsRemoval(slot, oldName, false);\n this._$applyMultipleSlotInsertion(slot, newName, false);\n return;\n }\n // for dynamic slotting, destroy and re-insert slot\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n // wait until applySlotUpdates\n if (!this._$dynamicSlotsInserted)\n return;\n var insertDynamicSlot = this._$insertDynamicSlotHandler;\n var removeDynamicSlot = this._$removeDynamicSlotHandler;\n this._$dynamicSlots.set(slot, { updatePathTree: undefined });\n removeDynamicSlot === null || removeDynamicSlot === void 0 ? void 0 : removeDynamicSlot([slot]);\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot([{ slot: slot, name: newName, slotValues: slot._$slotValues }]);\n }\n };\n /** @internal */\n ShadowRoot.prototype._$applySlotsInsertion = function (slotStart, slotEnd, move) {\n var slotMode = this._$slotMode;\n // for direct slotting, do nothing\n if (slotMode === 0 /* SlotMode.Direct */)\n return;\n if (slotMode === 1 /* SlotMode.Single */) {\n var oldSlot = this._$singleSlot;\n var newSlot = this._$subtreeSlotStart.value;\n if (oldSlot === newSlot)\n return;\n this._$singleSlot = newSlot;\n Element._$insertChildReassignSlot(this, null, oldSlot || null, newSlot);\n return;\n }\n if (slotMode === 2 /* SlotMode.Multiple */) {\n for (var it_3 = slotStart; it_3 && it_3 !== slotEnd.next; it_3 = it_3.next) {\n var slot = it_3.value;\n var slotName = slot._$slotName;\n this._$applyMultipleSlotInsertion(slot, slotName, move);\n }\n return;\n }\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n // dynamic-slotting should do nothing about slot movement\n if (move)\n return;\n // wait until applySlotUpdates\n if (!this._$dynamicSlotsInserted)\n return;\n var insertDynamicSlot = this._$insertDynamicSlotHandler;\n var slots = [];\n for (var it_4 = slotStart; it_4 && it_4 !== slotEnd.next; it_4 = it_4.next) {\n var slot = it_4.value;\n var slotName = slot._$slotName;\n this._$dynamicSlots.set(slot, { updatePathTree: undefined });\n slots.push({ slot: slot, name: slotName, slotValues: slot._$slotValues });\n }\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot(slots);\n }\n };\n /** @internal */\n ShadowRoot.prototype._$applySlotsRemoval = function (slotStart, slotEnd, move) {\n var _a;\n var slotMode = this._$slotMode;\n // for direct slotting, do nothing\n if (slotMode === 0 /* SlotMode.Direct */)\n return;\n if (slotMode === 1 /* SlotMode.Single */) {\n // will call applySLotsInsertion after if slots were moved\n // no need to do anything here\n if (move)\n return;\n var oldSlot = this._$singleSlot;\n var newSlot = (_a = this._$subtreeSlotStart) === null || _a === void 0 ? void 0 : _a.value;\n if (oldSlot === newSlot)\n return;\n this._$singleSlot = newSlot;\n Element._$insertChildReassignSlot(this, null, oldSlot || null, newSlot || null);\n return;\n }\n if (slotMode === 2 /* SlotMode.Multiple */) {\n for (var it_5 = slotStart; it_5 && it_5 !== slotEnd.next; it_5 = it_5.next) {\n var slot = it_5.value;\n var slotName = slot._$slotName;\n this._$applyMultipleSlotsRemoval(slot, slotName, move);\n }\n return;\n }\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n // dynamic-slotting should do nothing about slot movement\n if (move)\n return;\n // wait until applySlotUpdates\n if (!this._$dynamicSlotsInserted)\n return;\n var removeDynamicSlot = this._$removeDynamicSlotHandler;\n var slots = [];\n for (var it_6 = slotStart; it_6 && it_6 !== slotEnd.next; it_6 = it_6.next) {\n var slot = it_6.value;\n this._$dynamicSlots.delete(slot);\n slots.push(slot);\n }\n removeDynamicSlot === null || removeDynamicSlot === void 0 ? void 0 : removeDynamicSlot(slots);\n }\n };\n /**\n * Set the dynamic slot handlers\n *\n * If the handlers have not been set yet,\n * the `insertSlotHandler` will be called for each slot that has been added to the shadow tree,\n * otherwise call `updateSlotHandler` for each slots.\n */\n ShadowRoot.prototype.setDynamicSlotHandler = function (requiredSlotValueNames, insertSlotHandler, removeSlotHandler, updateSlotHandler) {\n if (this._$slotMode !== 3 /* SlotMode.Dynamic */)\n return;\n this._$requiredSlotValueNames = requiredSlotValueNames;\n this._$insertDynamicSlotHandler = insertSlotHandler;\n this._$removeDynamicSlotHandler = removeSlotHandler;\n this._$updateDynamicSlotHandler = updateSlotHandler;\n if (this._$dynamicSlotsInserted) {\n var iter = this._$dynamicSlots.values();\n for (var it_7 = iter.next(); !it_7.done; it_7 = iter.next()) {\n var slotMeta = it_7.value;\n slotMeta.updatePathTree =\n slotMeta.updatePathTree || Object.create(null);\n }\n }\n };\n /**\n * Use the same dynamic slot handlers with the `source`\n */\n ShadowRoot.prototype.useDynamicSlotHandlerFrom = function (source) {\n if (source._$insertDynamicSlotHandler) {\n this.setDynamicSlotHandler(source._$requiredSlotValueNames.slice(), source._$insertDynamicSlotHandler, source._$removeDynamicSlotHandler, source._$updateDynamicSlotHandler);\n }\n };\n /**\n * Update a slot value\n *\n * The updated value should be applied with `applySlotValueUpdates` call.\n */\n ShadowRoot.prototype.replaceSlotValue = function (slot, name, value) {\n var _a;\n var slotValues = slot._$slotValues;\n if (!slotValues)\n return;\n var oldValue = slotValues[name];\n var newValue = value;\n if (this._$propertyPassingDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n if (this._$propertyPassingDeepCopy === 2 /* DeepCopyStrategy.SimpleWithRecursion */) {\n newValue = deepCopy(value, true);\n }\n else {\n newValue = simpleDeepCopy(value);\n }\n }\n if (oldValue === newValue)\n return;\n slotValues[name] = newValue;\n if (this._$requiredSlotValueNames.indexOf(name) < 0)\n return;\n var slotMeta = (_a = this._$dynamicSlots) === null || _a === void 0 ? void 0 : _a.get(slot);\n if (!slotMeta)\n return;\n if (!slotMeta.updatePathTree) {\n slotMeta.updatePathTree = Object.create(null);\n }\n slotMeta.updatePathTree[name] = true;\n };\n /**\n * Apply slot value updates\n */\n ShadowRoot.prototype.applySlotValueUpdates = function (slot) {\n var _a, _b;\n var slotMeta = (_a = this._$dynamicSlots) === null || _a === void 0 ? void 0 : _a.get(slot);\n var slotValueUpdatePathTree = slotMeta === null || slotMeta === void 0 ? void 0 : slotMeta.updatePathTree;\n if (!slotValueUpdatePathTree)\n return;\n slotMeta.updatePathTree = undefined;\n (_b = this._$updateDynamicSlotHandler) === null || _b === void 0 ? void 0 : _b.call(this, slot, slot._$slotValues, slotValueUpdatePathTree);\n };\n ShadowRoot.prototype.applySlotUpdates = function () {\n var _a;\n if (!this._$dynamicSlotsInserted) {\n this._$dynamicSlotsInserted = true;\n var insertDynamicSlot = this._$insertDynamicSlotHandler;\n var slots = [];\n for (var it_8 = this._$subtreeSlotStart; it_8; it_8 = it_8.next) {\n var slot = it_8.value;\n var slotName = slot._$slotName;\n this._$dynamicSlots.set(slot, { updatePathTree: undefined });\n slots.push({ slot: slot, name: slotName, slotValues: slot._$slotValues });\n }\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot(slots);\n }\n else {\n var iter = this._$dynamicSlots.entries();\n for (var it_9 = iter.next(); !it_9.done; it_9 = iter.next()) {\n var _b = it_9.value, slot = _b[0], slotMeta = _b[1];\n var slotValueUpdatePathTree = slotMeta.updatePathTree;\n if (slotValueUpdatePathTree) {\n slotMeta.updatePathTree = undefined;\n (_a = this._$updateDynamicSlotHandler) === null || _a === void 0 ? void 0 : _a.call(this, slot, slot._$slotValues, slotValueUpdatePathTree);\n }\n }\n }\n };\n /**\n * Get slot mode\n */\n ShadowRoot.prototype.getSlotMode = function () {\n return this._$slotMode;\n };\n /** @internal */\n ShadowRoot._$updateSubtreeSlotNodes = function (parentNode, elements, shadowRoot, oldShadowRoot, posIndex) {\n if (!shadowRoot && !oldShadowRoot)\n return undefined;\n var slotMode = shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.getSlotMode();\n var oldSlotMode = oldShadowRoot === null || oldShadowRoot === void 0 ? void 0 : oldShadowRoot.getSlotMode();\n if ((slotMode === undefined || slotMode === 0 /* SlotMode.Direct */) &&\n (oldSlotMode === undefined || oldSlotMode === 0 /* SlotMode.Direct */)) {\n return undefined;\n }\n if ((slotMode === undefined || slotMode === 1 /* SlotMode.Single */) &&\n (oldSlotMode === undefined || oldSlotMode === 1 /* SlotMode.Single */)) {\n var removeStart_1 = -1;\n var removeCount_1 = 0;\n var insertPos_1 = -1;\n var slotNodesToUpdate_1 = [];\n var oldContainingSlot_1 = elements[0].containingSlot;\n var containingSlot_1 = shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.getContainingSlot(elements[0]);\n for (var i = 0; i < elements.length; i += 1) {\n var elem = elements[i];\n // eslint-disable-next-line no-loop-func\n Element.forEachNodeInSlot(elem, function (node) {\n if (oldContainingSlot_1) {\n if (removeCount_1) {\n removeCount_1 += 1;\n }\n else {\n removeStart_1 = node.slotIndex;\n removeCount_1 = 1;\n }\n }\n slotNodesToUpdate_1.push(node);\n });\n }\n if (containingSlot_1 && slotNodesToUpdate_1.length) {\n var firstSlotNode = slotNodesToUpdate_1[0];\n insertPos_1 = Element._$findSlotNodeInsertPosition(containingSlot_1, firstSlotNode, posIndex);\n }\n return {\n updateContainingSlot: function () {\n for (var i = slotNodesToUpdate_1.length - 1; i >= 0; i -= 1) {\n var node = slotNodesToUpdate_1[i];\n Element._$updateContainingSlot(node, containingSlot_1);\n }\n },\n removeSlotNodes: function () {\n if (oldShadowRoot && oldContainingSlot_1 && removeCount_1) {\n Element._$spliceSlotNodes(oldContainingSlot_1, removeStart_1, removeCount_1, undefined);\n }\n },\n insertSlotNodes: function () {\n if (shadowRoot && containingSlot_1 && slotNodesToUpdate_1.length) {\n Element._$spliceSlotNodes(containingSlot_1, insertPos_1, 0, slotNodesToUpdate_1);\n }\n },\n };\n }\n var slotNodesToInsertMap = new Map();\n var slotNodesToRemoveMap = new Map();\n var slotNodesWithContainingSlot = [];\n for (var i = 0; i < elements.length; i += 1) {\n var elem = elements[i];\n Element.forEachNodeInSlot(elem, function (node, oldContainingSlot) {\n var containingSlot = slotMode !== 0 /* SlotMode.Direct */ ? shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.getContainingSlot(node) : undefined;\n if (oldContainingSlot) {\n var slotNodesToRemove = slotNodesToRemoveMap.get(oldContainingSlot);\n if (slotNodesToRemove) {\n slotNodesToRemove.count += 1;\n }\n else {\n slotNodesToRemoveMap.set(oldContainingSlot, { start: node.slotIndex, count: 1 });\n }\n }\n if (containingSlot) {\n var slotNodesToInsert = slotNodesToInsertMap.get(containingSlot);\n if (slotNodesToInsert) {\n slotNodesToInsert.nodes.push(node);\n }\n else {\n slotNodesToInsertMap.set(containingSlot, { nodes: [node], insertPos: -1 });\n }\n }\n slotNodesWithContainingSlot.push([node, containingSlot]);\n });\n }\n if (shadowRoot && slotNodesToInsertMap.size) {\n var iter = slotNodesToInsertMap.entries();\n for (var it_10 = iter.next(); !it_10.done; it_10 = iter.next()) {\n var _a = it_10.value, slot = _a[0], slotNodesToInsert = _a[1].nodes;\n var firstSlotNodeToInsert = slotNodesToInsert[0];\n it_10.value[1].insertPos = Element._$findSlotNodeInsertPosition(slot, firstSlotNodeToInsert, posIndex);\n }\n }\n return {\n updateContainingSlot: function () {\n for (var i = slotNodesWithContainingSlot.length - 1; i >= 0; i -= 1) {\n var _a = slotNodesWithContainingSlot[i], node = _a[0], containingSlot = _a[1];\n Element._$updateContainingSlot(node, containingSlot);\n }\n },\n removeSlotNodes: function () {\n if (oldShadowRoot && slotNodesToRemoveMap.size) {\n var iter = slotNodesToRemoveMap.entries();\n for (var it_11 = iter.next(); !it_11.done; it_11 = iter.next()) {\n var _a = it_11.value, slot = _a[0], _b = _a[1], start = _b.start, count = _b.count;\n Element._$spliceSlotNodes(slot, start, count, undefined);\n }\n }\n },\n insertSlotNodes: function () {\n if (shadowRoot && slotNodesToInsertMap.size) {\n var iter = slotNodesToInsertMap.entries();\n for (var it_12 = iter.next(); !it_12.done; it_12 = iter.next()) {\n var _a = it_12.value, slot = _a[0], _b = _a[1], slotNodesToInsert = _b.nodes, insertPos = _b.insertPos;\n Element._$spliceSlotNodes(slot, insertPos, 0, slotNodesToInsert);\n }\n }\n },\n };\n };\n return ShadowRoot;\n}(VirtualNode));\nexport { ShadowRoot };\n","import { Element } from '.';\nimport { FuncArr } from './func_arr';\nvar MutationObserverTarget = /** @class */ (function () {\n function MutationObserverTarget(boundElement) {\n this._$subtreeObserversCount = 0;\n this.attrObservers = null;\n this.textObservers = null;\n this.childObservers = null;\n this.attachObservers = null;\n this._$boundElement = boundElement;\n }\n MutationObserverTarget.prototype.attachChild = function (child) {\n if (!child._$mutationObserverTarget) {\n child._$mutationObserverTarget = new MutationObserverTarget(child);\n }\n if (this._$subtreeObserversCount > 0) {\n child._$mutationObserverTarget.updateSubtreeCount(this._$subtreeObserversCount);\n }\n };\n MutationObserverTarget.prototype.detachChild = function (child) {\n if (child._$mutationObserverTarget) {\n child._$mutationObserverTarget.updateSubtreeCount(-this._$subtreeObserversCount);\n }\n };\n MutationObserverTarget.prototype.updateSubtreeCount = function (diff) {\n this._$subtreeObserversCount += diff;\n var children = this._$boundElement.childNodes;\n children.forEach(function (child) {\n if (child instanceof Element) {\n if (!child._$mutationObserverTarget) {\n child._$mutationObserverTarget = new MutationObserverTarget(child);\n }\n child._$mutationObserverTarget.updateSubtreeCount(diff);\n }\n });\n };\n MutationObserverTarget.prototype.hasSubtreeListeners = function () {\n return this._$subtreeObserversCount > 0;\n };\n MutationObserverTarget.callAttrObservers = function (node, eventObj) {\n var _a;\n var cur = node;\n do {\n var target = cur._$mutationObserverTarget;\n (_a = target === null || target === void 0 ? void 0 : target.attrObservers) === null || _a === void 0 ? void 0 : _a.call(cur, [eventObj]);\n var next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (!cur._$mutationObserverTarget)\n break;\n } while (cur._$mutationObserverTarget._$subtreeObserversCount > 0);\n };\n MutationObserverTarget.callTextObservers = function (textNode, eventObj) {\n var _a;\n var cur = textNode.parentNode;\n while (cur) {\n var target = cur._$mutationObserverTarget;\n if (!target || target._$subtreeObserversCount === 0)\n break;\n (_a = target.textObservers) === null || _a === void 0 ? void 0 : _a.call(cur, [eventObj]);\n cur = cur.parentNode;\n }\n };\n MutationObserverTarget.callChildObservers = function (node, eventObj) {\n var _a;\n var cur = node;\n do {\n var target = cur._$mutationObserverTarget;\n (_a = target === null || target === void 0 ? void 0 : target.childObservers) === null || _a === void 0 ? void 0 : _a.call(cur, [eventObj]);\n var next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (!cur._$mutationObserverTarget)\n break;\n } while (cur._$mutationObserverTarget._$subtreeObserversCount > 0);\n };\n MutationObserverTarget.callAttachObservers = function (node, eventObj) {\n var _a;\n var target = node._$mutationObserverTarget;\n (_a = target === null || target === void 0 ? void 0 : target.attachObservers) === null || _a === void 0 ? void 0 : _a.call(node, [eventObj]);\n };\n return MutationObserverTarget;\n}());\nexport { MutationObserverTarget };\n/**\n * An observer that can observe shadow tree changes\n *\n * Like DOM MutationObserver,\n * this observer can observe attributes, text content, and child nodes changes.\n * It can optionally observe changes in a subtree.\n * Further more, it can listen attached/detached events on an element.\n */\nvar MutationObserver = /** @class */ (function () {\n function MutationObserver(listener) {\n this._$subtreeListenersCount = 0;\n this._$boundFuncArrs = [];\n this._$boundTarget = null;\n this._$listener = listener;\n this._$normalizedListener = null;\n }\n MutationObserver.create = function (listener) {\n return new MutationObserver(listener);\n };\n /** Start observation */\n MutationObserver.prototype.observe = function (targetElement, options) {\n if (options === void 0) { options = {\n properties: false,\n childList: false,\n characterData: false,\n subtree: false,\n attachStatus: false,\n }; }\n var listener = this._$listener;\n if (!listener) {\n throw new Error('A MutationObserver can only observe once');\n }\n var target;\n if (targetElement._$mutationObserverTarget) {\n target = targetElement._$mutationObserverTarget;\n }\n else {\n target = new MutationObserverTarget(targetElement);\n targetElement._$mutationObserverTarget = target;\n }\n this._$listener = null;\n var cb = options.subtree\n ? listener\n : function noSubtreeListener(ev) {\n // this might be TextNode, but do the same as Element\n if (ev.target === this)\n listener.call(this, ev);\n };\n this._$normalizedListener = cb;\n this._$boundTarget = target;\n if (options.properties) {\n if (!target.attrObservers)\n target.attrObservers = new FuncArr();\n target.attrObservers.add(cb);\n this._$boundFuncArrs.push(target.attrObservers);\n this._$subtreeListenersCount += 1;\n }\n if (options.childList) {\n if (!target.childObservers)\n target.childObservers = new FuncArr();\n target.childObservers.add(cb);\n this._$boundFuncArrs.push(target.childObservers);\n this._$subtreeListenersCount += 1;\n }\n if (options.characterData) {\n if (!target.textObservers)\n target.textObservers = new FuncArr();\n target.textObservers.add(cb);\n this._$boundFuncArrs.push(target.textObservers);\n this._$subtreeListenersCount += 1;\n }\n if (options.subtree) {\n target.updateSubtreeCount(this._$subtreeListenersCount);\n }\n if (options.attachStatus) {\n if (!target.attachObservers)\n target.attachObservers = new FuncArr();\n target.attachObservers.add(cb);\n this._$boundFuncArrs.push(target.attachObservers);\n }\n };\n /** End observation */\n MutationObserver.prototype.disconnect = function () {\n var _a;\n (_a = this._$boundTarget) === null || _a === void 0 ? void 0 : _a.updateSubtreeCount(-this._$subtreeListenersCount);\n var arr = this._$boundFuncArrs;\n this._$boundFuncArrs = [];\n var nl = this._$normalizedListener;\n if (nl) {\n arr.forEach(function (funcArr) {\n funcArr.remove(nl);\n });\n }\n };\n return MutationObserver;\n}());\nexport { MutationObserver };\n","import { MutationObserverTarget } from './mutation_observer';\nimport { BM } from './backend/mode';\nvar TextNode = /** @class */ (function () {\n function TextNode(text, owner) {\n /** @internal */\n this._$slotElement = null;\n /** @internal */\n this._$destroyOnDetach = false;\n /** @internal */\n this._$subtreeSlotStart = null;\n /** @internal */\n this._$subtreeSlotEnd = null;\n this._$text = String(text);\n var backendElement;\n if (BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n backendElement = owner._$nodeTreeContext.document.createTextNode(text);\n }\n else if (BM.SHADOW || (BM.DYNAMIC && owner.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n var backend_1 = owner._$backendShadowRoot;\n backendElement = (backend_1 === null || backend_1 === void 0 ? void 0 : backend_1.createTextNode(text)) || null;\n }\n else {\n var backend_2 = owner._$nodeTreeContext;\n backendElement = backend_2.createTextNode(text);\n }\n this._$backendElement = backendElement;\n this.ownerShadowRoot = owner;\n this.parentNode = null;\n this.parentIndex = -1;\n this.containingSlot = undefined;\n }\n TextNode.create = function (text, ownerShadowRoot) {\n return new TextNode(text, ownerShadowRoot);\n };\n TextNode.prototype.asTextNode = function () {\n return this;\n };\n // eslint-disable-next-line class-methods-use-this\n TextNode.prototype.asElement = function () {\n return null;\n };\n // eslint-disable-next-line class-methods-use-this\n TextNode.prototype.asNativeNode = function () {\n return null;\n };\n // eslint-disable-next-line class-methods-use-this\n TextNode.prototype.asVirtualNode = function () {\n return null;\n };\n // eslint-disable-next-line class-methods-use-this\n TextNode.prototype.asInstanceOf = function () {\n return null;\n };\n /** Destroy the backend element */\n TextNode.prototype.destroyBackendElement = function () {\n if (this._$backendElement) {\n if (!(BM.DOMLIKE ||\n (BM.DYNAMIC && this.ownerShadowRoot.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n ;\n this._$backendElement.release();\n }\n this._$backendElement = null;\n }\n };\n /** Destroy the backend element on next detach */\n TextNode.prototype.destroyBackendElementOnDetach = function () {\n this._$destroyOnDetach = true;\n };\n /** Get the backend element */\n TextNode.prototype.getBackendElement = function () {\n return this._$backendElement;\n };\n /** Get composed parent (including virtual nodes) */\n TextNode.prototype.getComposedParent = function () {\n if (this.containingSlot !== undefined)\n return this.containingSlot;\n var parent = this.parentNode;\n while (parent === null || parent === void 0 ? void 0 : parent._$inheritSlots) {\n parent = parent.parentNode;\n }\n return parent;\n };\n Object.defineProperty(TextNode.prototype, \"$$\", {\n get: function () {\n return this._$backendElement;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextNode.prototype, \"textContent\", {\n get: function () {\n return this._$text;\n },\n set: function (text) {\n this._$text = String(text);\n if (this._$backendElement) {\n if (BM.DOMLIKE ||\n (BM.DYNAMIC && this.ownerShadowRoot.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this._$backendElement.textContent = this._$text;\n }\n else {\n ;\n this._$backendElement.setText(this._$text);\n }\n }\n MutationObserverTarget.callTextObservers(this, {\n type: 'characterData',\n target: this,\n });\n },\n enumerable: false,\n configurable: true\n });\n return TextNode;\n}());\nexport { TextNode };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { globalOptions } from './global_options';\nimport { ClassList } from './class_list';\nimport { Element } from './element';\nimport { BM } from './backend/mode';\nvar NativeNode = /** @class */ (function (_super) {\n __extends(NativeNode, _super);\n function NativeNode() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n return _super.call(this) || this;\n }\n NativeNode.create = function (tagName, owner, stylingName, placeholderHandler) {\n var _a;\n var node = Object.create(NativeNode.prototype);\n node.is = tagName;\n node._$placeholderHandler = placeholderHandler;\n var nodeTreeContext = owner._$nodeTreeContext;\n var backendElement;\n if (BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n backendElement = nodeTreeContext.document.createElement(tagName);\n }\n else if (BM.SHADOW || (BM.DYNAMIC && owner.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n var backend_1 = owner._$backendShadowRoot;\n backendElement = (backend_1 === null || backend_1 === void 0 ? void 0 : backend_1.createElement(tagName, stylingName !== null && stylingName !== void 0 ? stylingName : tagName)) || null;\n }\n else {\n var backend_2 = nodeTreeContext;\n backendElement = backend_2.createElement(tagName, stylingName !== null && stylingName !== void 0 ? stylingName : tagName);\n }\n node._$initialize(false, backendElement, owner, nodeTreeContext);\n node.classList = new ClassList(node, null);\n if (owner && backendElement) {\n var styleScope = owner.getHostNode()._$definition._$options.styleScope;\n if (styleScope) {\n if (!(BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n ;\n backendElement.setStyleScope(styleScope);\n }\n }\n if (globalOptions.writeExtraInfoToAttr) {\n var prefix = (_a = owner\n .getHostNode()\n ._$behavior.ownerSpace) === null || _a === void 0 ? void 0 : _a.styleScopeManager.queryName(styleScope);\n if (prefix) {\n backendElement.setAttribute('exparser:info-class-prefix', \"\".concat(prefix, \"--\"));\n }\n }\n }\n if (backendElement) {\n if (!(BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n ;\n backendElement.associateValue(node);\n }\n else {\n ;\n owner._$nodeTreeContext.associateValue(backendElement, node);\n }\n }\n return node;\n };\n NativeNode.prototype.setModelBindingListener = function (propName, listener) {\n var _this = this;\n if (!this._$modelBindingListeners) {\n this._$modelBindingListeners = Object.create(null);\n }\n if (!this._$modelBindingListeners[propName]) {\n var backendElement = this.getBackendElement();\n if (backendElement) {\n var listener_1 = function (value) {\n var _a;\n var listener = (_a = _this._$modelBindingListeners) === null || _a === void 0 ? void 0 : _a[propName];\n if (listener) {\n listener.call(_this, value);\n }\n };\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this.getBackendContext().setModelBindingStat(backendElement, propName, listener_1);\n }\n else {\n ;\n backendElement.setModelBindingStat(propName, listener_1);\n }\n }\n }\n this._$modelBindingListeners[propName] = listener;\n };\n return NativeNode;\n}(Element));\nexport { NativeNode };\n","import { Element } from './element';\nimport { TextNode } from './text_node';\n/** The iterator direction and order */\nexport var ElementIteratorType;\n(function (ElementIteratorType) {\n /** Iterate all ancestors in shadow tree */\n ElementIteratorType[\"ShadowAncestors\"] = \"shadow-ancestors\";\n /** Iterate all ancestors in composed tree */\n ElementIteratorType[\"ComposedAncestors\"] = \"composed-ancestors\";\n /** Iterate all descendants in shadow tree, returning parents before their children */\n ElementIteratorType[\"ShadowDescendantsRootFirst\"] = \"shadow-descendants-root-first\";\n /** Iterate all descendants in shadow tree, returning parents after their children */\n ElementIteratorType[\"ShadowDescendantsRootLast\"] = \"shadow-descendants-root-last\";\n /** Iterate all descendants in composed tree, returning parents before their children */\n ElementIteratorType[\"ComposedDescendantsRootFirst\"] = \"composed-descendants-root-first\";\n /** Iterate all descendants in composed tree, returning parents after their children */\n ElementIteratorType[\"ComposedDescendantsRootLast\"] = \"composed-descendants-root-last\";\n})(ElementIteratorType || (ElementIteratorType = {}));\n/**\n * An iterator for node tree traversal\n *\n * This iterator is convenient but seems a little slower.\n */\nvar ElementIterator = /** @class */ (function () {\n /**\n * Create an iterator with type specified\n *\n * The `nodeTypeLimit` is used to limit which kind of nodes will be returned.\n * It limits the returned result by an `instanceof` call.\n * The default value is `Element` ,\n * which means only elements will be returned (text nodes will not).\n * Consider specifying `Node` if text nodes need to be returned as well as elements.\n * Specify `Component` will only return components.\n */\n function ElementIterator(node, type, nodeTypeLimit) {\n if (nodeTypeLimit === void 0) { nodeTypeLimit = Element; }\n if (!(node instanceof Element) && !(node instanceof TextNode)) {\n throw new Error('Element iterators can only be used in elements or text nodes');\n }\n this._$node = node;\n this._$nodeTypeLimit = nodeTypeLimit || Element;\n if (type === \"shadow-ancestors\" /* ElementIteratorType.ShadowAncestors */ ||\n type === \"shadow-descendants-root-first\" /* ElementIteratorType.ShadowDescendantsRootFirst */ ||\n type === \"shadow-descendants-root-last\" /* ElementIteratorType.ShadowDescendantsRootLast */) {\n this._$composed = false;\n }\n else if (type === \"composed-ancestors\" /* ElementIteratorType.ComposedAncestors */ ||\n type === \"composed-descendants-root-first\" /* ElementIteratorType.ComposedDescendantsRootFirst */ ||\n type === \"composed-descendants-root-last\" /* ElementIteratorType.ComposedDescendantsRootLast */) {\n this._$composed = true;\n }\n else {\n throw new Error(\"Unrecognized iterator type \\\"\".concat(String(type), \"\\\"\"));\n }\n if (type === \"shadow-ancestors\" /* ElementIteratorType.ShadowAncestors */ ||\n type === \"composed-ancestors\" /* ElementIteratorType.ComposedAncestors */) {\n this._$isAncestor = true;\n }\n else {\n this._$isAncestor = false;\n }\n if (type === \"shadow-descendants-root-first\" /* ElementIteratorType.ShadowDescendantsRootFirst */ ||\n type === \"composed-descendants-root-first\" /* ElementIteratorType.ComposedDescendantsRootFirst */) {\n this._$rootFirst = true;\n }\n else {\n this._$rootFirst = false;\n }\n }\n /** Same as constructor (for backward compatibility) */\n ElementIterator.create = function (node, type, nodeTypeLimit) {\n return new ElementIterator(node, type, nodeTypeLimit);\n };\n ElementIterator.prototype.forEach = function (f) {\n var nodeTypeLimit = this._$nodeTypeLimit;\n var composed = this._$composed;\n if (this._$isAncestor) {\n var cur = this._$node;\n for (;;) {\n if (cur instanceof nodeTypeLimit) {\n if (f(cur) === false)\n return;\n }\n var next = void 0;\n if (composed) {\n next = cur.getComposedParent();\n }\n else {\n next = cur.parentNode;\n }\n if (next)\n cur = next;\n else\n break;\n }\n }\n else {\n var rootFirst_1 = this._$rootFirst;\n var rec_1 = function (node) {\n if (rootFirst_1) {\n if (node instanceof nodeTypeLimit) {\n if (f(node) === false)\n return false;\n }\n }\n if (node instanceof Element) {\n var interrupted_1 = false;\n var childFn = function (child) {\n if (rec_1(child) === false) {\n interrupted_1 = true;\n return false;\n }\n return true;\n };\n if (composed) {\n node.forEachComposedChild(childFn);\n }\n else {\n node.childNodes.forEach(childFn);\n }\n if (interrupted_1)\n return false;\n }\n if (!rootFirst_1) {\n if (node instanceof nodeTypeLimit) {\n if (f(node) === false)\n return false;\n }\n }\n return true;\n };\n rec_1(this._$node);\n }\n };\n return ElementIterator;\n}());\nexport { ElementIterator };\n","import { TextNode } from './text_node';\nimport { Element } from './element';\nimport { VirtualNode } from './virtual_node';\nimport { Component } from './component';\nimport { NativeNode } from './native_node';\nvar dumpAttributesToString = function (elem) {\n var ret = '';\n if (elem instanceof Element) {\n if (elem._$slotName !== null)\n ret += \" (slot) name=\\\"\".concat(elem._$slotName, \"\\\"\");\n if (elem.id)\n ret += \" id=\\\"\".concat(elem.id, \"\\\"\");\n if (elem.slot)\n ret += \" slot=\\\"\".concat(elem.slot, \"\\\"\");\n var nodeClass = elem.class;\n if (nodeClass)\n ret += \" class=\\\"\".concat(nodeClass, \"\\\"\");\n var style = elem.style;\n if (style)\n ret += \" style=\\\"\".concat(elem.style, \"\\\"\");\n }\n if (elem instanceof VirtualNode) {\n // empty\n }\n else if (elem instanceof Component) {\n Component.listProperties(elem).forEach(function (propName) {\n ret += \" \".concat(propName, \"=\\\"\").concat(String(elem.data[propName]), \"\\\"\");\n });\n }\n else {\n elem.attributes.forEach(function (attr) {\n ret += \" \".concat(attr.name, \"=\\\"\").concat(String(attr.value), \"\\\"\");\n });\n }\n return ret;\n};\nexport var dumpSingleElementToString = function (elem) {\n if (elem instanceof Element) {\n var tagName = void 0;\n if (elem instanceof VirtualNode) {\n tagName = \"(virtual):\".concat(elem.is);\n }\n else if (elem instanceof Component) {\n tagName = \"\".concat(elem.tagName, \":\").concat(elem.is);\n }\n else if (elem instanceof NativeNode) {\n tagName = elem.is;\n }\n else {\n tagName = '(unknown)';\n }\n return \"<\".concat(tagName).concat(dumpAttributesToString(elem), \">\");\n }\n if (elem instanceof TextNode) {\n return elem.textContent.trim();\n }\n if (elem === null) {\n return '<(null)>';\n }\n if (elem === undefined) {\n return '<(undefined)>';\n }\n return '<(unknown)>';\n};\nexport var dumpElementToString = function (elem, composed, tabDepth) {\n if (tabDepth === void 0) { tabDepth = 0; }\n var linePrefix = '';\n for (var i = tabDepth; i; i -= 1) {\n linePrefix += ' ';\n }\n var ret = linePrefix + dumpSingleElementToString(elem);\n var isExternal = false;\n if (elem instanceof Element) {\n if (elem instanceof Component) {\n isExternal = elem._$external;\n }\n if (composed) {\n if (isExternal) {\n ret += \"\\n\".concat(linePrefix, \" <(external)>\");\n elem.forEachComposedChild(function (node) {\n ret += \"\\n\".concat(dumpElementToString(node, composed, tabDepth + 2));\n });\n }\n else {\n elem.forEachComposedChild(function (node) {\n ret += \"\\n\".concat(dumpElementToString(node, composed, tabDepth + 1));\n });\n }\n }\n else {\n elem.childNodes.forEach(function (node) {\n ret += \"\\n\".concat(dumpElementToString(node, composed, tabDepth + 1));\n });\n }\n }\n return ret;\n};\nexport var dumpElement = function (elem, composed) {\n // eslint-disable-next-line no-console\n console.log(dumpElementToString(elem, composed));\n};\n","import { safeCallback } from './func_arr';\nvar triggerRenderOnContext = function (context, cb) {\n context.render(function () {\n if (typeof cb === 'function') {\n safeCallback('render', cb, context, [null]);\n }\n });\n};\nexport var triggerRender = function (element, callback) {\n var context = element.getBackendContext();\n triggerRenderOnContext(context, callback || null);\n};\n","/* eslint-disable import/first */\n/* eslint-disable arrow-body-style */\nexport { TextNode } from './text_node';\nexport { NativeNode } from './native_node';\nexport { ShadowRoot } from './shadow_root';\nexport { VirtualNode } from './virtual_node';\nexport { globalOptions, DeepCopyKind, getDefaultComponentSpace, } from './global_options';\nexport { Element, StyleSegmentIndex } from './element';\nimport * as dataUtils_1 from './data_utils';\nexport { dataUtils_1 as dataUtils };\nimport * as dataPath_1 from './data_path';\nexport { dataPath_1 as dataPath };\nexport { DataGroup, } from './data_proxy';\nexport { Event, EventBubbleStatus, MutLevel as EventMutLevel, } from './event';\nimport * as typeUtils_1 from './component_params';\nexport { typeUtils_1 as typeUtils };\nexport { Behavior, BehaviorBuilder, NormalizedPropertyType, } from './behavior';\nexport { Component, ComponentDefinition, } from './component';\nexport { MutationObserver as Observer, MutationObserver } from './mutation_observer';\nimport * as mutationObserver_1 from './mutation_observer';\nexport { mutationObserver_1 as mutationObserver };\nexport { dumpElement, dumpElementToString, dumpSingleElementToString, } from './node';\nexport { ElementIterator, ElementIteratorType } from './element_iterator';\nexport { FuncArr, safeCallback, addGlobalErrorListener, removeGlobalErrorListener, addGlobalWarningListener, removeGlobalWarningListener, } from './func_arr';\nexport { ParsedSelector } from './selector';\nexport { StyleScopeManager, ClassList } from './class_list';\nexport { RelationType } from './relation';\nexport { TraitBehavior } from './trait_behaviors';\nexport { triggerRender } from './render';\nexport { ComponentSpace } from './component_space';\nimport * as template_1 from './tmpl';\nexport { template_1 as template };\nimport * as backend_1 from './backend/backend_protocol';\nexport { backend_1 as backend };\nimport * as composedBackend_1 from './backend/composed_backend_protocol';\nexport { composedBackend_1 as composedBackend };\nimport * as domlikeBackend_1 from './backend/domlike_backend_protocol';\nexport { domlikeBackend_1 as domlikeBackend };\nexport { BackendMode } from './backend/mode';\nimport * as templateEngine_1 from './template_engine';\nexport { templateEngine_1 as templateEngine };\nimport * as glassEaselTemplate_1 from './tmpl';\nexport { glassEaselTemplate_1 as glassEaselTemplate };\nimport { Component } from './component';\nimport { Event } from './event';\nimport { getDefaultComponentSpace } from './global_options';\nexport var registerBehavior = function (def) {\n return getDefaultComponentSpace().defineBehavior(def);\n};\nexport var registerElement = function (def) {\n return getDefaultComponentSpace().defineComponent(def);\n};\nexport function createElement(tagName, compDef) {\n return Component.create(tagName, compDef || null);\n}\nexport var triggerEvent = Event.triggerEvent;\nexport var triggerExternalEvent = Event.triggerExternalEvent;\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","BackendMode","extendStatics","EmptyBackendElementType","__extends","d","b","setPrototypeOf","__proto__","Array","p","TypeError","String","__","this","constructor","create","DeepCopyStrategy","EmptyBackendContext","mode","_$styleSheetIdInc","_$renderCallbacks","_$shadowRoot","EmptyBackendShadowRootContext","destroy","getWindowWidth","getWindowHeight","getDevicePixelRatio","getTheme","registerStyleSheetContent","_path","_content","appendStyleSheetPath","_styleScope","id","disableStyleSheet","_index","render","cb","_this","push","callbacks_1","setTimeout","forEach","safeCallback","getRootNode","createFragment","EmptyBackendElement","onEvent","_listener","createMediaQueryObserver","_status","disconnect","type","release","associateValue","_v","getShadowRoot","undefined","appendChild","_child","removeChild","insertBefore","_before","replaceChild","_oldChild","spliceBefore","_deleteCount","_list","spliceAppend","spliceRemove","setId","_id","setSlotName","_name","setContainingSlot","_slot","reassignContainingSlot","_oldSlot","_newSlot","spliceBeforeSlotNodes","spliceRemoveSlotNodes","spliceAppendSlotNodes","setInheritSlots","setVirtualHost","setStyleScope","setStyle","_styleText","addClass","_elementClass","removeClass","clearClasses","setAttribute","_value","removeAttribute","setDataset","setText","getBoundingClientRect","left","top","width","height","getScrollOffset","scrollLeft","scrollTop","scrollWidth","scrollHeight","setListenerStats","_type","_capture","_mutLevel","setModelBindingStat","_attributeName","createIntersectionObserver","_relativeElement","_relativeElementMargin","_thresholds","getContext","_super","createElement","_tagName","_stylingName","createTextNode","createComponent","createVirtualNode","_virtualName","EmptyComposedBackendContext","_$rootNode","EmptyComposedBackendElement","DELEGATE_EVENTS","CurrentWindowBackendContext","document","_$styleSheets","_$styleSheetRegistry","_$delegatedEventListeners","_$elementEventListeners","WeakMap","_$elementCaptureEventListeners","_$triggedEvents","WeakSet","documentElement","clientWidth","clientHeight","window","devicePixelRatio","path","content","styleScope","styleText","Error","concat","s","innerText","head","length","index","ss","requestAnimationFrame","body","element","__wxElement","listener","_$eventListener","_$initEvent","_$getEventDetail","ev","detail","e","getPrototypeOf","Event","keys","i","_$trigger","bubbles","composed","target","t","parentNode","originalEvent","capturePhase","preventDefault","possibleTaps","disableMouseEvents","handleTapStart","_ev","identifier","x","clientX","y","clientY","handleTapMove","u","Math","abs","handleTapEnd","handleTapCancel","addEventListener","changedTouches","capture","listeners","touchstart","touchmove","touchend","mousedown","mousemove","mouseup","mutLevel","shouldDelegate","includes","defaultPrevented","elementEventListeners","has","set","add","attributeName","updateEventListener","evName","valueFn","_$wxArgs","modelListeners","_a","tagName","valid","elem_1","checked","elem_2","elem_3","triggerWarning","toLowerCase","targetElement","relativeElement","relativeElementMargin","thresholds","observer","IntersectionObserver","info","entry","intersectionRatio","boundingClientRect","intersectionRect","relativeRect","rootBounds","time","root","rootMargin","threshold","observe","status","curMatches","listenerFunc","matches","maxWidth","minWidth","maxHeight","minHeight","orientation","removeEventListener","CLASS_NAME_REG_EXP","StyleScopeManager","_$names","globalScope","register","name","ret","queryName","ClassList","elem","externalNameAlias","_b","_c","_$aliasDirty","_$rawNames","_$rawNamesSegmentSep","_$hasResolvedNames","_$elem","ownerComp","ownerShadowRoot","getHostNode","compOptions","getComponentOptions","_$owner","classList","_$defaultScope","_$extraScope","extraStyleScope","_$rootScope","_$alias","resolved_1","k","_$resolvedAlias","getBackendMode","_$prefixManager","getRootBehavior","ownerSpace","styleScopeManager","_$resolvePrefixes","resolvedAlias","targets","scopeId","className","slice","n","owner","_$updateResolvedAliases","slices","resolved","changed","prevResolved","a","_$hasAlias","_$setAlias","match","_$spreadAliasUpdate","callClassListUpdate_1","alias","changed_1","comp_1","_$external","shadowRoot","_$updateResolvedNames","childNodes","child","Element","comp","backendElement","getBackendElement","_$addClassToBackend","_$classListAdd","scope","prefix","val","_$classListRemove","remove","_$removeClassFromBackend","toggle","force","backendElement_1","indexOf","splice","_$mutationObserverTarget","MutationObserverTarget","callAttrObservers","contains","rn","setClassNames","names","newRawNames","segEnd","segStart","segLen","lenDiff","apply","to","from","pack","arguments","ar","l","__spreadArray","getClassNames","join","skipWhiteSpace","state","str","cur","next","parseInteger","parseInt","parseFieldName","test","parseFieldNameWithSpecialChars","next2","parsePath","seg","seg_1","parseSinglePath","parsePathWithSpecialChars","err","message","parseMultiPaths","isArray","map","parseState","parseCommaSepPaths","deepCopyWithRecursion","src","visited","v","dest_1","dest","description","simpleDeepCopy","dest_2","deepCopy","withRecursion","EventBubbleStatus","DataGroupObserverTree","propFields","observerTree","sub","observers","cloneSub","addObserver","func","dataPath","f","singlePath","wildcard","j","pathSlice","callObserver","data","args","getMethodCaller","dfsMarkTriggerBitOnPath","node","observerStatus","markTriggerBitOnPath","found","arr","i_1","triggerAndCleanTriggerBit","getDeepCopyStrategy","level","DeepCopyKind","Simple","SimpleWithRecursion","DataGroup","associatedComponent","pureDataPattern","dataDeepCopy","propertyPassingDeepCopy","reflectToAttributes","_$modelBindingListener","_$pendingChanges","_$doingUpdates","_$comp","_$pureDataPattern","_$dataDeepCopy","_$propertyPassingDeepCopy","_$reflectToAttributes","_$propFields","_$observerTree","_$observers","_$observerStatus","innerData","_$generateInnerData","setUpdateListener","updateListener","_$updateListener","replaceWholeData","replaceDataOnPath","newData","spliceArrayDataOnPath","del","inserts","replaceProperty","propName","setChanges","changes","getChanges","setModelBindingListener","applyDataUpdates","skipModelListener","combinedChanges","propChanges","isChainedUpdates","combined","count","change","spliceIndex","spliceDel","isSplice","excluded","oldData","normalizedSpliceIndex","filteredData","c","convertValueToType","innerNewData","be","attrValue","reflectIdPrefix","idPrefix","_$idPrefix","attrName","replace","JSON","stringify","comparer","general","oldValue","newValue","curData","curSlice","i_2","nextSlice","Number","isFinite","i_3","changesCount","_d","propertyName","MutLevel","FinalChanged","relativeTimeStamp","Date","now","prevTimeStamp","SegmentRelation","EventTarget","captureListeners","addListener","options","efa","initialized","final","mutated","useCapture","mutCount","finalCount","funcArr","FuncArrWithMeta","removeListener","ts","getCurrentTimeStamp","timeStamp","_$capturePhase","_$eventBubblingControl","stopped","noDefault","_$originalEvent","_$dispatched","extraFields","assign","getEventBubbleStatus","wrapShadowedEvent","targetCaller","mark","currentTargetCaller","currentTarget","getOriginalEvent","stopPropagation","propagationStopped","markMutated","mutatedMarked","callListener","isCapture","eventTarget","_$eventTarget","skipMut","Component","mulLevel","dispatch","externalTarget","crossShadow","inExternalOnly","eventBubblingControl","forEachBubblePath","recShadow","collectMarks","ShadowRoot","containingSlot","_$inheritSlots","bubblingPath_1","target_1","handleEvent","atTarget_1","sr","slot","dispatchEvent","event","dispatchExternalEvent","component","triggerEvent","triggerExternalEvent","StyleSegmentIndex","getOwnerSpace","ParsedSelector","unions","union","split","segments","parsedSegs","relation","parsedSeg","_$parseSegment","exec","classes","shift","isEmpty","_$testSelectorSegment","offset","segment","nextNode","nextRelation","VirtualNode","testSelector","query","findOne","rec","r_1","children","r_2","r","RelationType","_$initialize","virtual","nodeTreeContext","_$backendElement","_$destroyOnDetach","_$nodeTreeContext","_$nodeId","_$nodeAttributes","_$nodeSlot","_$slotName","_$slotElement","_$slotValues","_$subtreeSlotStart","_$subtreeSlotEnd","_$placeholderHandler","_$virtual","dataset","_$marks","_$attached","_$styleSegments","parentIndex","slotNodes","configurable","newId","host","_$markIdCacheDirty","writeIdToDOM","globalOptions","writeExtraInfoToAttr","newSlot","slotParentShadowRoot","_$getParentHostShadowRoot","slotMode","getSlotMode","slotUpdater","_$updateSubtreeSlotNodes","removeSlotNodes","oldSlot_1","updateContainingSlot","newSlot_1","insertChildReassign","insertSlotNodes","entries","classNames","setNodeStyle","asTextNode","asElement","asNativeNode","NativeNode","asVirtualNode","asInstanceOf","componentDefinition","getBackendContext","destroyBackendElement","destroyBackendElementOnDetach","cancelDestroyBackendElementOnDetach","isVirtual","setNodeClass","styleSegment","style","checkAndCallAttached","callFunc","triggerLifetime","_$relation","triggerLinkEvent","callAttachObservers","checkAndCallDetached","checkAndCallMoved","checkChildObservers","childObservers","empty","hasSubtreeListeners","childEventObj","childList","addedNodes","removedNodes","callChildObservers","hasSubtreeMutationObservers","_$insertChildReassignSlot","oldSlot","_$spliceSlotNodes","_$updateContainingSlot","slotNodes_1","forEachNodeInSpecifiedSlot","shadowParent","ideaPosIndex","backendParent","findNearestNonVirtual","countNonVirtual","before","removeCount","rel","nextSibling","insertChildComposed","firstNode","recNonVirtual","forEachNonVirtualComposedChild","forEachNodeInSlot","forEachNodeInSpecificSlot","forEachSlotContentInSlot","forEachSlotContentInSpecificSlot","_$findFirstNonVirtualChild","parent","inSlot","_loop_1","state_1","slotIndex","_$findFirstNonVirtualSibling","newPosIndex","insertPos","_$findSlotNodeInsertPosition","newChild","relChild","removal","parentConverted","sharedNonVirtualParent","slotParent","context","sharedFrag","groupUpdate","sharedBackendParent","frag","firstSlotNode","f_1","createDocumentFragment","recNonVirtual_1","slotNodesSet_1","Set","_$componentInstanceId","_$updateSubtreeSlotsInsertion","slotStart","slotEnd","posIndex","move","insertSlotPrev","insertSlotNext","findFirstSlot","nextSiblingWithSlot","prev","parentWithSubtreeSlot","isConnected","_$applySlotsInsertion","_$updateSubtreeSlotsRemoval","removeSlotBefore","removeSlotAfter","_$applySlotsRemoval","_$updateSubtreeSlotsReplacement","oldSlotStart","oldSlotEnd","insertChildSingleOperation","oriPosIndex","_e","oldParent","childNodes_1","oldPosIndex","containingSlotUpdater","detachChild","attachChild","parentComponentShadowRoot","newChildContainingSlotUpdater","relChildContainingSlotUpdater","newChildSubtreeSlotStart","newChildSubtreeSlotEnd","relChildSubtreeSlotStart","relChildSubtreeSlotEnd","insertChildBatchRemoval","parentComponent","relChildren","relChild_1","subtreeSlotStart","subtreeSlotEnd","relChild_2","relChild_3","insertChildBatchInsertion","newChildList","pos","insertChildPlaceholderReplace","replacer","_f","_g","_h","placeholder","replacedChildren","placeholderContainingSlot","insertChildAt","removeChildAt","replaceChildAt","insertChildren","removeChildren","selfReplaceWith","replaceWith","_$generateIdMap","idMap","dfs","nodeId","_$setListenerStats","finalChanged","_$definition","_$options","listenerChangeLifetimes","getAttribute","updateAttribute","attrs","setMark","marks","_loop_2","replaceDocumentElement","targetParent","targetNode","pretendAttached","pretendDetached","isAttached","slotName","oldSlotName","needInsertSlot","parent_1","_$applySlotRename","getSlotName","sn","getInheritSlots","setSlotElement","deleteCount","insertion","start","getNodeDepth","depth","targetDepth","comparePos","slotNode1","parentIndex1","slotDepth1","slotNode2","parentIndex2","slotDepth2","nextSlotNode1","leftDepth","right","rightDepth","rst","slotNode","getComposedParent","getComposedChildren","forEachComposedChild","recInheritSlots","forEachSlotContentInSpecifiedSlot","parseSelector","querySelector","selectorStr","querySelectorAll","matchSelector","res_1","res_2","parentSlotHost","METHOD_TAG","_$initializeVirtual","virtualName","is","_$backendShadowRoot","NormalizedPropertyType","Relation","group","links","definitions","link","_$group","_$sharedGroup","_$links","keyMap","defs","relationType","linksGroup","parentType","isDetach","selfDefs","oldLink","newLink","def","parentBehavior","hasBehavior","parentRelation","rt","parentDefs","def_1","oldTarget","oldDef","linkChanged","unlinked","newTarget","newDef","linked","linkFailed","getLinkedTargets","typeWithIndex","TraitBehavior","trans","_$trans","_$implement","impl","TraitGroup","_$traits","implement","traitBehavior","traitImpl","convertGenerics","compDef","sourceBehavior","genericTargets","space","hostUsing","_$behavior","_$using","hostGenericImpls","_$genericImpls","_$detail","prepare","genericImpls","childBeh","behavior","generics","_$generics","genericDefaults","_$genericDefaults","getGlobalUsingComponent","source","waiting","defaultComp","getDefaultComponent","resolvePlaceholder","usingTarget","ComponentDefinition","normalizeComponentOptions","templateEngine","_$templateEngine","getComponentDependencies","updateTemplate","template","_$updateTemplate","isPrepared","propSetters","writeFieldsToNode","_$propertyMap","_$dataGroup","dataGroup","methodKeys","_$methodMap","methodName","protoFunc","writable","proto","dataGroupObserverTree","_$generateObserverTree","_$lifetimeFuncs","_$getAllLifetimeFuncs","_$pageLifetimeFuncs","_$getAllPageLifetimeFuncs","relationDefinitionGroup","relations","generateRelationDefinitionGroup","_$relationMap","componentInstanceIdInc","getDefaultComponentSpace","defineComponent","_$tagMethod","taggedMethod","_$isTaggedMethod","_$advancedCreate","backendContext","placeholderHandler","initPropValues","getDefaultBackendContext","external","externalComponent","propEarlyInit","propertyEarlyInit","virtualHost","_$methodCaller","backend_2","hostNodeTagName","externalClassAlias","_$externalClasses","externalClasses","componentInstanceId","idPrefixGenerator","staticData","_$staticData","dataGenFuncs","_$data","_$traitGroup","traitBehaviors","_$traitBehaviors","_$methodCallerInit","methodCaller","initDone","_$init","cowObserver_1","cowLifetime_1","cowPageLifetime_1","cowMethodMap","builderContext","self","setData","bind","relationDef","normalizedRel","normalizeRelation","list","listAsTrait","dataPaths","lifetime","fag","FuncArr","pageLifetime","method","initFuncs","init","exported","exportedKeys","exportedKey","exportItem","tmplInst","createInstance","initValues","_$tmplInst","updateValues","_$listeners","getIdMap","setListener","getElementById","created","createWithGenericsAndContext","collectGenericImpls","g","getComponentByUrl","createWithGenerics","createWithContext","_$getIdMap","applyTemplateUpdates","listProperties","hasProperty","getMethodsFromDef","getMethod","useMethodCallerListeners","callMethod","_i","getComponentDefinition","other","setMethodCaller","caller","triggerLifeTime","triggerPageLifetime","triggerPageLifeTime","getRelationNodes","relationKey","hasExternalClass","setExternalClass","cl","scheduleExternalClassChange","applyExternalClassChanges","triggerWorkletChangeLifetime","isInnerDataExcluded","fieldName","getInnerData","getDataProxy","dataProxy","hasPendingChanges","groupUpdates","callback","updateData","__assign","BindingMapUpdateEnabled","shallowMerge","oldDest","newDest","subKeys","subKey","normalizePropertyType","Boolean","Function","defaultFn","default","optionalTypes","matchTypeWithValue","checkRelationFunc","type_1","Behavior","getComponentByUrlWithoutDefault","globalTarget","BehaviorBuilder","_$behaviors","_$methods","_$lifetimes","_$pageLifetimes","_$is","_$ownerSpace","methodCallerInit","_$chainingFilter","chainingFilter","oldOptions","_$template","usingComponents","placeholders","_$placeholders","gen","property","_$properties","methods","funcs","name_1","paths","once","_$relations","behaviors","using","rawData","rawProperties","properties","name_2","rawMethods","name_3","rawObservers","fields","rawLifetimes","lifetimes","attached","moved","detached","ready","name_4","rawPageLifetimes","pageLifetimes","name_5","rawRelations","name_6","registerBehavior","_$registerBehavior","registerComponent","_$registerComponent","builder","_$unprepared","_$builder","_$flatAncestors","beh","dep","values","_j","_k","flatAncestors","parentName","parentNameStr","getBehaviorByUrl","traitBehaviors_1","staticData_1","observers_1","item","lifetimes_1","pageLifetimes_1","i_4","listeners_1","relations_1","hasPlaceholders","this_1","p_1","wl","_$componentWaitingList","final_1","genericKeys","genericDef","_l","name_7","initValueFuncs_1","_p","name_8","shortHandDef","propDef","normalizePropertyTypeShortHand","this_2","name_9","_m","dot","_o","getTemplate","getMethods","ot","name_10","name_11","normalizePath","basePath","finalSlices","pop","normalizeUrl","relPath","protoSep","domainSep","domain","absPath","ComponentWaitingList","isPub","_$callbacks","_$isPub","hintUsed","_$componentWaitingListener","cbs","ComponentSpace","defaultComponent","baseSpace","_$behaviorList","_$pubBehaviorList","_$list","_$pubList","_$importedSpaces","_$listWaiting","_$pubListWaiting","_$groupingListWaiting","_$defaultComponent","_$componentOptions","updateComponentOptions","componentOptions","setGlobalUsingComponent","importSpace","protoDomain","privateUse","getComponent","withDefault","isDefaultComponent","_$getBehavior","defineBehavior","define","defineWithMethodCaller","startGroupRegister","endGroupRegister","groupRegister","exportComponent","getExportedComponent","getExportedBehavior","exportBehavior","setComponentWaitingListener","createComponentByUrl","url","domainPath","paramStr","hashSepIndex","paramSepIndex","needApplyUpdates_1","kv","kvSepIndex","decodeURIComponent","defineTraitBehavior","RangeListManager","keyName","dataList","newListItem","updateKeys","items","indexes","sharedKeyMap","rawKeys","rawKeyField","rawKey","items_1","inc","diff","oriUpdatePathTree","updateListItem","oldRawKeys","oldKeyMap","oldSharedKeyMap","oldIndexes","allowFastComparison","updatePathTree","newRawKeys","newSharedKeyMap","needUpdate","subTree","updatePathTree_1","oldIndex","minIndexByLen","minIndexByLenIndexes","minIndexPrev","oldPosList","prevOldIndex","prevMinIndexByLenIndex","bottom","top_1","mid","floor","lcsLen","prevLcsIndex","curLcsArrIndex","OpKind","lcsArr","oldListOp","changedItems","prevLcsOldPos","oldPos","realListDiff","opOldPos","opIndex","nextStable","nextStableOldPos","newItem","emptyFilter","getTmplArgs","_$wxTmplArgs","dataValueToString","ProcGenWrapper","procGen","disallowNativeNode","eventObjectFilter","bindingMapDisabled","changePropFilter","eventListenerFilter","handleChildrenCreationAndInsert","C","B","update","dataUpdatePathTree","handleChildrenUpdate","bindingMapUpdate","field","bindingMapGenList","updaters","prevElement","bindingMapGen","textContent","handleChildrenCreation","slotElement","dynamicSlotName","textInit","createDynamicPlaceholder","propertyInit","dynamicSlotValueNames","createCommonElement","dynamicSlotNameMatched","branchKey","branchFunc","oriListUpdatePathTree","lvaluePath","itemCallback","keyList","childNode","isCreation","defineTextNode","defineElement","defineIfGroup","defineForLoop","defineSlot","definePureVirtualNode","slotValueInit","filter","tmplArgs","newElem","dynSlot","dynamicSlotUpdate","applySlotUpdates","indexChanged","applySlotValueUpdates","setDynamicSlotHandler","slots","slotValues","slotChildNodes","sort","slot1","slot2","firstIndex","slotValueUpdatePathTrees","placeholding","checkComponentPlaceholder","placeholderCb","replacerShadowRoot","elemShadowRoot","isElemDynamicSlots","createComponentOrNativeNode","replaceSlotValue","class","m","isDynamic","handler","filteredEv","evOptions","dynEvListeners","nodeDataProxy","camelName","toUpperCase","changeProp","lv","startsWith","setFnFilter","noop","ProcGenWrapperDom","shadowRootElement","slotMergeable","slotMerged","appendSlot","DEFAULT_PROC_GEN_DOM","DEFAULT_PROC_GEN_GROUP_DOM","GlassEaselTemplateDOM","genObjectGroupEnv","groupList","updateMode","GlassEaselTemplateDOMInstance","procGenWrapper","_$wxTmplEv","shadowedEvent","DEFAULT_PROC_GEN","DEFAULT_PROC_GEN_GROUP","GlassEaselTemplateEngine","GlassEaselTemplate","GlassEaselTemplateInstance","createShadowRoot","_$applyTemplate","forceBindingMapUpdate","tryBindingMapUpdate","newVal","startIndex","arr_1","fill","defaultComponentSpace","cs","defaultBackendContext","multipleSlots","dynamicSlots","directSlots","throwGlobalError","baseComponentOptions","_$type","_$arr","_$avoidErrorHandler","newArr","oldArr","relatedComponent","avoidErrorHandler","msg","errorFuncArr","console","error","stack","dispatchError","addGlobalErrorListener","removeGlobalErrorListener","addGlobalWarningListener","warningFuncArr","removeGlobalWarningListener","warn","SlotMode","retainFn","boundElement","_$subtreeObserversCount","attrObservers","textObservers","attachObservers","_$boundElement","updateSubtreeCount","eventObj","callTextObservers","textNode","MutationObserver","_$subtreeListenersCount","_$boundFuncArrs","_$boundTarget","_$listener","_$normalizedListener","characterData","subtree","attachStatus","nl","TextNode","text","_$text","backend_1","stylingName","_$modelBindingListeners","listener_1","ElementIteratorType","wrapPlaceholderCallback","cwp","_$idMap","hostComponentOptions","_$slotMode","_$singleSlot","_$slots","_$slotsList","_$dynamicSlotsInserted","_$dynamicSlots","Map","_$requiredSlotValueNames","_$insertDynamicSlotHandler","_$removeDynamicSlotHandler","_$updateDynamicSlotHandler","_$host","createNativeNode","createNativeNodeWithInit","usingKey","placeholderCallback","compName","genImpl","getSlotElementFromName","it_1","getContainingSlot","subTreeRoot","getSlotContentArray","forEachSlot","it_2","_$applyMultipleSlotInsertion","_move","slotsList","firstSlot","insertBeforeFirst","jt","_$applyMultipleSlotsRemoval","newFirstSlot","oldNameNewSlot","newName","oldName","insertDynamicSlot","removeDynamicSlot","it_4","it_3","it_6","delete","it_5","requiredSlotValueNames","insertSlotHandler","removeSlotHandler","updateSlotHandler","iter","it_7","done","slotMeta","useDynamicSlotHandlerFrom","slotValueUpdatePathTree","it_9","it_8","elements","oldShadowRoot","oldSlotMode","removeStart_1","removeCount_1","insertPos_1","slotNodesToUpdate_1","oldContainingSlot_1","containingSlot_1","slotNodesToInsertMap","slotNodesToRemoveMap","slotNodesWithContainingSlot","oldContainingSlot","slotNodesToRemove","slotNodesToInsert","nodes","size","it_10","firstSlotNodeToInsert","it_11","it_12","dumpSingleElementToString","nodeClass","attributes","attr","dumpAttributesToString","trim","dumpElementToString","tabDepth","linePrefix","isExternal","dumpElement","log","ElementIterator","nodeTypeLimit","_$node","_$nodeTypeLimit","_$composed","_$isAncestor","_$rootFirst","rootFirst_1","rec_1","interrupted_1","childFn","triggerRender","registerElement"],"sourceRoot":""}
|