glass-easel 0.2.0 → 0.3.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.
Files changed (197) hide show
  1. package/.eslintignore +4 -0
  2. package/dist/glass_easel.all.js +2 -2
  3. package/dist/glass_easel.all.js.map +1 -1
  4. package/dist/glass_easel.d.ts +2546 -0
  5. package/dist/glass_easel.domlike.global.js +2 -2
  6. package/dist/glass_easel.domlike.global.js.map +1 -1
  7. package/guide/zh_CN/appendix/backend_protocol.md +164 -74
  8. package/jest.unit.config.js +7 -4
  9. package/package.json +7 -5
  10. package/rollup.config.ts +101 -0
  11. package/src/backend/backend_protocol.ts +26 -345
  12. package/src/backend/composed_backend_protocol.ts +10 -264
  13. package/src/backend/current_window_backend_context.ts +478 -0
  14. package/src/backend/domlike_backend_protocol.ts +9 -498
  15. package/src/backend/empty_backend.ts +265 -0
  16. package/src/backend/empty_composed_backend.ts +245 -0
  17. package/src/backend/index.ts +18 -0
  18. package/src/backend/suggested_backend_protocol.ts +62 -11
  19. package/src/behavior.ts +131 -442
  20. package/src/class_list.ts +328 -222
  21. package/src/component.ts +349 -184
  22. package/src/component_params.ts +54 -25
  23. package/src/component_space.ts +36 -15
  24. package/src/data_path.ts +22 -34
  25. package/src/data_proxy.ts +334 -27
  26. package/src/devtool.ts +89 -0
  27. package/src/element.ts +667 -285
  28. package/src/element_iterator.ts +9 -4
  29. package/src/event.ts +39 -20
  30. package/src/external_shadow_tree.ts +2 -2
  31. package/src/func_arr.ts +55 -101
  32. package/src/global_options.ts +18 -42
  33. package/src/index.ts +72 -73
  34. package/src/mutation_observer.ts +10 -7
  35. package/src/native_node.ts +79 -35
  36. package/src/node.ts +23 -30
  37. package/src/relation.ts +101 -12
  38. package/src/render.ts +5 -3
  39. package/src/selector.ts +9 -7
  40. package/src/shadow_root.ts +96 -240
  41. package/src/template_engine.ts +10 -7
  42. package/src/text_node.ts +43 -19
  43. package/src/tmpl/index.ts +38 -30
  44. package/src/tmpl/native_rendering.ts +14 -21
  45. package/src/tmpl/proc_gen_wrapper.ts +189 -151
  46. package/src/tmpl/proc_gen_wrapper_dom.ts +10 -8
  47. package/src/tmpl/range_list_diff.ts +30 -9
  48. package/src/trait_behaviors.ts +1 -1
  49. package/src/type_symbol.ts +36 -0
  50. package/src/virtual_node.ts +26 -13
  51. package/src/warning.ts +119 -0
  52. package/tests/base/composed_backend.ts +143 -142
  53. package/tests/base/env.ts +76 -3
  54. package/tests/base/match.ts +24 -22
  55. package/tests/base/shadow_backend.ts +917 -0
  56. package/tests/core/backend.test.ts +53 -1
  57. package/tests/core/behavior.test.ts +1 -1
  58. package/tests/core/data_update.test.ts +135 -0
  59. package/tests/core/misc.test.ts +91 -21
  60. package/tests/core/placeholder.test.ts +66 -25
  61. package/tests/core/slot.test.ts +161 -23
  62. package/tests/legacy/component.test.js +152 -78
  63. package/tests/legacy/data_path.test.js +19 -19
  64. package/tests/legacy/data_proxy.test.js +14 -7
  65. package/tests/legacy/external.test.js +8 -8
  66. package/tests/legacy/mutation_observer.test.js +7 -5
  67. package/tests/legacy/slot.test.js +2 -3
  68. package/tests/legacy/virtual.test.js +258 -25
  69. package/tests/tmpl/binding_map.test.ts +201 -195
  70. package/tests/tmpl/event.test.ts +138 -23
  71. package/tests/tmpl/expression.test.ts +15 -15
  72. package/tests/tmpl/lvalue.test.ts +101 -0
  73. package/tests/tmpl/structure.test.ts +486 -43
  74. package/tests/types/chaining.test.ts +27 -30
  75. package/tests/types/createElement.test.ts +5 -4
  76. package/tests/types/definition.test.ts +11 -14
  77. package/tsconfig.json +1 -3
  78. package/dist/glass_easel.all.d.ts +0 -1
  79. package/dist/glass_easel.domlike.global.d.ts +0 -1
  80. package/dist/index.d.ts +0 -1
  81. package/dist/index.js +0 -1
  82. package/dist/types/src/backend/backend_protocol.d.ts +0 -141
  83. package/dist/types/src/backend/backend_protocol.d.ts.map +0 -1
  84. package/dist/types/src/backend/composed_backend_protocol.d.ts +0 -102
  85. package/dist/types/src/backend/composed_backend_protocol.d.ts.map +0 -1
  86. package/dist/types/src/backend/domlike_backend_protocol.d.ts +0 -100
  87. package/dist/types/src/backend/domlike_backend_protocol.d.ts.map +0 -1
  88. package/dist/types/src/backend/mode.d.ts +0 -65
  89. package/dist/types/src/backend/mode.d.ts.map +0 -1
  90. package/dist/types/src/backend/suggested_backend_protocol.d.ts +0 -30
  91. package/dist/types/src/backend/suggested_backend_protocol.d.ts.map +0 -1
  92. package/dist/types/src/behavior.d.ts +0 -434
  93. package/dist/types/src/behavior.d.ts.map +0 -1
  94. package/dist/types/src/class_list.d.ts +0 -83
  95. package/dist/types/src/class_list.d.ts.map +0 -1
  96. package/dist/types/src/component.d.ts +0 -325
  97. package/dist/types/src/component.d.ts.map +0 -1
  98. package/dist/types/src/component_params.d.ts +0 -236
  99. package/dist/types/src/component_params.d.ts.map +0 -1
  100. package/dist/types/src/component_space.d.ts +0 -211
  101. package/dist/types/src/component_space.d.ts.map +0 -1
  102. package/dist/types/src/data_path.d.ts +0 -5
  103. package/dist/types/src/data_path.d.ts.map +0 -1
  104. package/dist/types/src/data_proxy.d.ts +0 -107
  105. package/dist/types/src/data_proxy.d.ts.map +0 -1
  106. package/dist/types/src/data_utils.d.ts +0 -3
  107. package/dist/types/src/data_utils.d.ts.map +0 -1
  108. package/dist/types/src/element.d.ts +0 -365
  109. package/dist/types/src/element.d.ts.map +0 -1
  110. package/dist/types/src/element_iterator.d.ts +0 -43
  111. package/dist/types/src/element_iterator.d.ts.map +0 -1
  112. package/dist/types/src/event.d.ts +0 -105
  113. package/dist/types/src/event.d.ts.map +0 -1
  114. package/dist/types/src/external_shadow_tree.d.ts +0 -20
  115. package/dist/types/src/external_shadow_tree.d.ts.map +0 -1
  116. package/dist/types/src/func_arr.d.ts +0 -39
  117. package/dist/types/src/func_arr.d.ts.map +0 -1
  118. package/dist/types/src/global_options.d.ts +0 -120
  119. package/dist/types/src/global_options.d.ts.map +0 -1
  120. package/dist/types/src/index.d.ts +0 -43
  121. package/dist/types/src/index.d.ts.map +0 -1
  122. package/dist/types/src/mutation_observer.d.ts +0 -79
  123. package/dist/types/src/mutation_observer.d.ts.map +0 -1
  124. package/dist/types/src/native_node.d.ts +0 -11
  125. package/dist/types/src/native_node.d.ts.map +0 -1
  126. package/dist/types/src/node.d.ts +0 -48
  127. package/dist/types/src/node.d.ts.map +0 -1
  128. package/dist/types/src/relation.d.ts +0 -46
  129. package/dist/types/src/relation.d.ts.map +0 -1
  130. package/dist/types/src/render.d.ts +0 -3
  131. package/dist/types/src/render.d.ts.map +0 -1
  132. package/dist/types/src/selector.d.ts +0 -32
  133. package/dist/types/src/selector.d.ts.map +0 -1
  134. package/dist/types/src/shadow_root.d.ts +0 -174
  135. package/dist/types/src/shadow_root.d.ts.map +0 -1
  136. package/dist/types/src/template_engine.d.ts +0 -56
  137. package/dist/types/src/template_engine.d.ts.map +0 -1
  138. package/dist/types/src/text_node.d.ts +0 -44
  139. package/dist/types/src/text_node.d.ts.map +0 -1
  140. package/dist/types/src/tmpl/index.d.ts +0 -19
  141. package/dist/types/src/tmpl/index.d.ts.map +0 -1
  142. package/dist/types/src/tmpl/native_rendering.d.ts +0 -45
  143. package/dist/types/src/tmpl/native_rendering.d.ts.map +0 -1
  144. package/dist/types/src/tmpl/proc_gen_wrapper.d.ts +0 -89
  145. package/dist/types/src/tmpl/proc_gen_wrapper.d.ts.map +0 -1
  146. package/dist/types/src/tmpl/proc_gen_wrapper_dom.d.ts +0 -50
  147. package/dist/types/src/tmpl/proc_gen_wrapper_dom.d.ts.map +0 -1
  148. package/dist/types/src/tmpl/range_list_diff.d.ts +0 -19
  149. package/dist/types/src/tmpl/range_list_diff.d.ts.map +0 -1
  150. package/dist/types/src/trait_behaviors.d.ts +0 -38
  151. package/dist/types/src/trait_behaviors.d.ts.map +0 -1
  152. package/dist/types/src/virtual_node.d.ts +0 -10
  153. package/dist/types/src/virtual_node.d.ts.map +0 -1
  154. package/dist/types/tests/backend/domlike.test.d.ts +0 -2
  155. package/dist/types/tests/backend/domlike.test.d.ts.map +0 -1
  156. package/dist/types/tests/base/composed_backend.d.ts +0 -123
  157. package/dist/types/tests/base/composed_backend.d.ts.map +0 -1
  158. package/dist/types/tests/base/env.d.ts +0 -30
  159. package/dist/types/tests/base/env.d.ts.map +0 -1
  160. package/dist/types/tests/base/match.d.ts +0 -9
  161. package/dist/types/tests/base/match.d.ts.map +0 -1
  162. package/dist/types/tests/core/backend.test.d.ts +0 -2
  163. package/dist/types/tests/core/backend.test.d.ts.map +0 -1
  164. package/dist/types/tests/core/behavior.test.d.ts +0 -2
  165. package/dist/types/tests/core/behavior.test.d.ts.map +0 -1
  166. package/dist/types/tests/core/component_space.test.d.ts +0 -2
  167. package/dist/types/tests/core/component_space.test.d.ts.map +0 -1
  168. package/dist/types/tests/core/data_update.test.d.ts +0 -2
  169. package/dist/types/tests/core/data_update.test.d.ts.map +0 -1
  170. package/dist/types/tests/core/misc.test.d.ts +0 -2
  171. package/dist/types/tests/core/misc.test.d.ts.map +0 -1
  172. package/dist/types/tests/core/placeholder.test.d.ts +0 -2
  173. package/dist/types/tests/core/placeholder.test.d.ts.map +0 -1
  174. package/dist/types/tests/core/slot.test.d.ts +0 -2
  175. package/dist/types/tests/core/slot.test.d.ts.map +0 -1
  176. package/dist/types/tests/core/trait_behaviors.test.d.ts +0 -2
  177. package/dist/types/tests/core/trait_behaviors.test.d.ts.map +0 -1
  178. package/dist/types/tests/tmpl/binding_map.test.d.ts +0 -2
  179. package/dist/types/tests/tmpl/binding_map.test.d.ts.map +0 -1
  180. package/dist/types/tests/tmpl/event.test.d.ts +0 -2
  181. package/dist/types/tests/tmpl/event.test.d.ts.map +0 -1
  182. package/dist/types/tests/tmpl/expression.test.d.ts +0 -2
  183. package/dist/types/tests/tmpl/expression.test.d.ts.map +0 -1
  184. package/dist/types/tests/tmpl/lvalue.test.d.ts +0 -2
  185. package/dist/types/tests/tmpl/lvalue.test.d.ts.map +0 -1
  186. package/dist/types/tests/tmpl/native_rendering.test.d.ts +0 -2
  187. package/dist/types/tests/tmpl/native_rendering.test.d.ts.map +0 -1
  188. package/dist/types/tests/tmpl/structure.test.d.ts +0 -2
  189. package/dist/types/tests/tmpl/structure.test.d.ts.map +0 -1
  190. package/dist/types/tests/types/chaining.test.d.ts +0 -2
  191. package/dist/types/tests/types/chaining.test.d.ts.map +0 -1
  192. package/dist/types/tests/types/createElement.test.d.ts +0 -2
  193. package/dist/types/tests/types/createElement.test.d.ts.map +0 -1
  194. package/dist/types/tests/types/definition.test.d.ts +0 -2
  195. package/dist/types/tests/types/definition.test.d.ts.map +0 -1
  196. package/webpack.config.js +0 -275
  197. /package/src/backend/{mode.ts → shared.ts} +0 -0
@@ -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/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":""}
1
+ {"version":3,"file":"glass_easel.all.js","sources":["../src/backend/shared.ts","../src/global_options.ts","../src/func_arr.ts","../src/type_symbol.ts","../src/node.ts","../src/warning.ts","../src/backend/current_window_backend_context.ts","../src/backend/empty_backend.ts","../src/backend/empty_composed_backend.ts","../src/class_list.ts","../src/component_params.ts","../src/trait_behaviors.ts","../src/component_space.ts","../src/data_path.ts","../src/data_utils.ts","../src/mutation_observer.ts","../src/data_proxy.ts","../src/event.ts","../src/selector.ts","../src/element.ts","../src/relation.ts","../src/native_node.ts","../src/text_node.ts","../src/virtual_node.ts","../src/shadow_root.ts","../src/tmpl/range_list_diff.ts","../src/tmpl/proc_gen_wrapper.ts","../src/tmpl/proc_gen_wrapper_dom.ts","../src/tmpl/native_rendering.ts","../src/tmpl/index.ts","../src/component.ts","../src/behavior.ts","../src/element_iterator.ts","../src/index.ts","../src/render.ts"],"sourcesContent":["export const 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//# sourceMappingURL=shared.js.map","export const ENV = {\n DEV: !(typeof process && process.env.NODE_ENV === 'production'),\n};\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 = {}));\n/**\n * The default options\n */\nexport const globalOptions = {\n defaultComponentSpace: null,\n externalComponent: false,\n templateEngine: null,\n styleScope: null,\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 devtool: null,\n};\nexport const normalizeComponentOptions = (componentOptions, baseComponentOptions) => {\n const b = baseComponentOptions === undefined ? globalOptions : baseComponentOptions;\n if (componentOptions === undefined && b !== globalOptions) {\n return b;\n }\n const 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//# sourceMappingURL=global_options.js.map","import { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { ENV } from './global_options';\nexport class FuncArr {\n constructor(type) {\n this.empty = true;\n this._$arr = null;\n this._$type = type;\n }\n add(func) {\n if (!this._$arr)\n this._$arr = [func];\n else\n this._$arr = this._$arr.concat(func);\n this.empty = false;\n }\n remove(func) {\n let ret = null;\n if (this._$arr) {\n const newArr = [];\n const oldArr = this._$arr;\n for (let i = 0; i < oldArr.length; i += 1) {\n if (oldArr[i] === func) {\n newArr.push(...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 call(caller, args, relatedComponent) {\n const arr = this._$arr;\n let ret = true;\n if (arr) {\n for (let i = 0; i < arr.length; i += 1) {\n const r = safeCallback(this._$type, arr[i], caller, args, relatedComponent);\n if (r === false)\n ret = false;\n }\n }\n return ret;\n }\n}\nexport class FuncArrWithMeta {\n constructor(type) {\n this.empty = true;\n this._$arr = null;\n this._$type = type;\n }\n add(func, data) {\n const item = { f: func, data };\n if (!this._$arr)\n this._$arr = [item];\n else\n this._$arr = this._$arr.concat(item);\n this.empty = false;\n }\n remove(func) {\n let ret = null;\n if (this._$arr) {\n const newArr = [];\n const oldArr = this._$arr;\n for (let i = 0; i < oldArr.length; i += 1) {\n const v = oldArr[i];\n if (v.f === func) {\n newArr.push(...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 call(caller, args, retainFn, relatedComponent, handleReturn) {\n const arr = this._$arr;\n let ret = true;\n if (arr) {\n for (let i = 0; i < arr.length; i += 1) {\n const { f, data } = arr[i];\n if (!retainFn(data))\n continue;\n const rawReturn = safeCallback(this._$type, f, caller, args, relatedComponent);\n const r = handleReturn ? handleReturn(rawReturn) : rawReturn;\n if (r === false)\n ret = false;\n }\n }\n return ret;\n }\n}\nlet dispatchError = () => { };\nexport function _setErrorDispatcher(dispatcher) {\n dispatchError = dispatcher;\n}\nexport function safeCallback(type, method, caller, args, relatedComponent) {\n try {\n if (ENV.DEV)\n performanceMeasureStart(`${type}.${method.name || '(anonymous)'}`, relatedComponent, { args });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return method.apply(caller, args);\n }\n catch (e) {\n dispatchError(e, `${type || 'Listener'} ${method.name || '(anonymous)'}`, relatedComponent);\n return undefined;\n }\n finally {\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n}\n//# sourceMappingURL=func_arr.js.map","export const TEXT_NODE_SYMBOL = Symbol('TextNode');\nexport const ELEMENT_SYMBOL = Symbol('Element');\nexport const NATIVE_NODE_SYMBOL = Symbol('NativeNode');\nexport const VIRTUAL_NODE_SYMBOL = Symbol('VirtualNode');\nexport const SHADOW_ROOT_SYMBOL = Symbol('ShadowRootSymbol');\nexport const COMPONENT_SYMBOL = Symbol('Component');\nexport const isTextNode = (e) => !!e && e[TEXT_NODE_SYMBOL];\nexport const isElement = (e) => !!e && e[ELEMENT_SYMBOL];\nexport const isNativeNode = (e) => !!e && e[NATIVE_NODE_SYMBOL];\nexport const isVirtualNode = (e) => !!e && e[VIRTUAL_NODE_SYMBOL];\nexport const isShadowRoot = (e) => !!e && e[SHADOW_ROOT_SYMBOL];\nexport const isComponent = (e) => !!e && e[COMPONENT_SYMBOL];\n//# sourceMappingURL=type_symbol.js.map","import { isComponent, isElement, isNativeNode, isTextNode, isVirtualNode } from './type_symbol';\nconst dumpAttributesToString = (elem) => {\n let ret = '';\n if (isElement(elem)) {\n if (elem._$slotName !== null)\n ret += ` (slot) name=\"${elem._$slotName}\"`;\n if (elem.id)\n ret += ` id=\"${elem.id}\"`;\n if (elem.slot)\n ret += ` slot=\"${elem.slot}\"`;\n const nodeClass = elem.class;\n if (nodeClass)\n ret += ` class=\"${nodeClass}\"`;\n const style = elem.style;\n if (style)\n ret += ` style=\"${elem.style}\"`;\n }\n if (isVirtualNode(elem)) {\n // empty\n }\n else if (isComponent(elem)) {\n Object.keys(elem._$behavior._$propertyMap).forEach((propName) => {\n ret += ` ${propName}=\"${String(elem.data[propName])}\"`;\n });\n }\n else {\n elem.attributes.forEach((attr) => {\n ret += ` ${attr.name}=\"${String(attr.value)}\"`;\n });\n }\n return ret;\n};\nexport const dumpSingleElementToString = (elem) => {\n if (isElement(elem)) {\n let tagName;\n if (isVirtualNode(elem)) {\n tagName = `(virtual):${elem.is}`;\n }\n else if (isComponent(elem)) {\n tagName = `${elem.tagName}:${elem.is}`;\n }\n else if (isNativeNode(elem)) {\n tagName = elem.is;\n }\n else {\n tagName = '(unknown)';\n }\n return `<${tagName}${dumpAttributesToString(elem)}>`;\n }\n if (isTextNode(elem)) {\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 const dumpElementToString = (elem, composed, tabDepth = 0) => {\n let linePrefix = '';\n for (let i = tabDepth; i; i -= 1) {\n linePrefix += ' ';\n }\n let ret = linePrefix + dumpSingleElementToString(elem);\n let isExternal = false;\n if (isElement(elem)) {\n if (isComponent(elem)) {\n isExternal = elem._$external;\n }\n if (composed) {\n if (isExternal) {\n ret += `\\n${linePrefix} <(external)>`;\n elem.forEachComposedChild((node) => {\n ret += `\\n${dumpElementToString(node, composed, tabDepth + 2)}`;\n });\n }\n else {\n elem.forEachComposedChild((node) => {\n ret += `\\n${dumpElementToString(node, composed, tabDepth + 1)}`;\n });\n }\n }\n else {\n elem.childNodes.forEach((node) => {\n ret += `\\n${dumpElementToString(node, composed, tabDepth + 1)}`;\n });\n }\n }\n return ret;\n};\nexport const dumpElement = (elem, composed) => {\n // eslint-disable-next-line no-console\n console.log(dumpElementToString(elem, composed));\n};\n//# sourceMappingURL=node.js.map","import { FuncArr, _setErrorDispatcher } from './func_arr';\nimport { globalOptions } from './global_options';\nimport { dumpSingleElementToString } from './node';\nimport { isComponent } from './type_symbol';\nlet insideErrorHandler = false;\nconst errorFuncArr = new FuncArr('error');\nconst warningFuncArr = new FuncArr('warning');\n_setErrorDispatcher(dispatchError);\nexport function dispatchError(err, method, relatedComponent, element) {\n if (!insideErrorHandler) {\n insideErrorHandler = true;\n if (isComponent(relatedComponent)) {\n relatedComponent.triggerLifetime('error', [err]);\n }\n const shouldBreak = errorFuncArr.call(err, [err, method, relatedComponent, element]) === false;\n insideErrorHandler = false;\n if (shouldBreak)\n return;\n }\n if (globalOptions.throwGlobalError) {\n throw err;\n }\n else {\n // eslint-disable-next-line no-console\n console.error([\n err instanceof Error ? `${err.message}` : String(err),\n element ? `\\t@${dumpSingleElementToString(element)}` : undefined,\n relatedComponent\n ? `\\t${method || ''}@${typeof relatedComponent === 'string'\n ? `<${relatedComponent}>`\n : dumpSingleElementToString(relatedComponent || false)}`\n : undefined,\n ]\n .filter(Boolean)\n .join('\\n'));\n }\n}\nexport function triggerWarning(msg, relatedComponent, element) {\n if (warningFuncArr.call(null, [msg, relatedComponent || '', element])) {\n // eslint-disable-next-line no-console\n console.warn(msg);\n }\n}\nexport class ThirdError extends Error {\n constructor(message, additionalStack, relatedComponent, element) {\n super(message);\n this.additionalStack = additionalStack;\n this.relatedComponent = relatedComponent;\n this.element = element;\n dispatchError(this, additionalStack, relatedComponent, element);\n }\n}\nexport function addGlobalErrorListener(func) {\n errorFuncArr.add(func);\n}\nexport function removeGlobalErrorListener(func) {\n errorFuncArr.remove(func);\n}\nexport function addGlobalWarningListener(func) {\n warningFuncArr.add(func);\n}\nexport function removeGlobalWarningListener(func) {\n warningFuncArr.remove(func);\n}\nexport function safeCallback(type, method, caller, args, relatedComponent) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return method.apply(caller, args);\n }\n catch (e) {\n dispatchError(e, `${type || 'Listener'} ${method.name || '(anonymous)'}`, relatedComponent);\n return undefined;\n }\n}\n//# sourceMappingURL=warning.js.map","/* eslint-disable class-methods-use-this */\n/* global window, document */\nimport { safeCallback } from '../func_arr';\nimport { triggerWarning } from '../warning';\nconst DELEGATE_EVENTS = [\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'mousedown',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'click',\n];\nexport class CurrentWindowBackendContext {\n constructor() {\n this.mode = 3 /* BackendMode.Domlike */;\n this.document = document;\n /* @internal */\n this._$styleSheets = [];\n /* @internal */\n this._$styleSheetRegistry = Object.create(null);\n /* @internal */\n this._$delegatedEventListeners = Object.create(null);\n /* @internal */\n this._$elementEventListeners = new WeakMap();\n /* @internal */\n this._$elementCaptureEventListeners = new WeakMap();\n /* @internal */\n this._$triggedEvents = new WeakSet();\n }\n destroy() {\n /* empty */\n }\n getWindowWidth() {\n return document.documentElement.clientWidth;\n }\n getWindowHeight() {\n return document.documentElement.clientHeight;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getTheme() {\n return 'light';\n }\n registerStyleSheetContent(path, content) {\n this._$styleSheetRegistry[path] = String(content);\n }\n appendStyleSheetPath(path, styleScope) {\n const styleText = this._$styleSheetRegistry[path];\n if (styleText === undefined)\n throw new Error(`No style sheet registry \"${path}\"`);\n const s = document.createElement('style');\n s.type = 'text/css';\n s.innerHTML = styleText;\n if (styleScope !== undefined)\n s.setAttribute('wx-style-scope', String(styleScope));\n document.head.appendChild(s);\n const id = this._$styleSheets.length;\n this._$styleSheets.push(s);\n return id;\n }\n disableStyleSheet(index) {\n const ss = this._$styleSheets[index];\n if (ss)\n document.head.removeChild(ss);\n }\n render(cb) {\n window.requestAnimationFrame(() => {\n safeCallback('Render Callback', cb, this, [null]);\n });\n }\n getRootNode() {\n return document.body;\n }\n associateValue(element, value) {\n element.__wxElement = value;\n }\n onEvent(listener) {\n if (!this._$eventListener) {\n this._$initEvent();\n }\n this._$eventListener = listener;\n }\n /* @internal */\n _$getEventDetail(ev) {\n const detail = {};\n let e = ev;\n while (Object.getPrototypeOf(e) !== Event.prototype) {\n const keys = Object.keys(e);\n for (let i = 0; i < keys.length; i += 1) {\n const 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 /* @internal */\n _$trigger(ev, type, detail, bubbles, composed) {\n if (!this._$eventListener || !ev.target)\n return;\n let t = ev.target;\n while (t && !t.__wxElement)\n t = t.parentNode;\n if (!t)\n return;\n const bubbleStatus = this._$eventListener(t.__wxElement, type, detail, {\n originalEvent: ev,\n bubbles,\n composed,\n capturePhase: true,\n });\n if (bubbleStatus === 1 /* EventBubbleStatus.NoDefault */) {\n ev.preventDefault();\n }\n }\n /* @internal */\n _$initEvent() {\n const TAP_DIST = 10;\n const possibleTaps = Object.create(null);\n const SIMULATED_MOUSE_ID = -1;\n let disableMouseEvents = false;\n const handleTapStart = (_ev, t) => {\n possibleTaps[t.identifier] = {\n x: t.clientX,\n y: t.clientY,\n };\n };\n const handleTapMove = (ev, t) => {\n const id = t.identifier;\n if (possibleTaps[id]) {\n const 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 const handleTapEnd = (ev, t) => {\n const id = t.identifier;\n if (possibleTaps[id]) {\n const 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 const handleTapCancel = (ev, t) => {\n const id = t.identifier;\n if (possibleTaps[id]) {\n const u = possibleTaps[id];\n delete possibleTaps[id];\n this._$trigger(ev, 'canceltap', u, true, true);\n }\n };\n const handleTouchStart = (ev) => {\n disableMouseEvents = true;\n const changedTouches = ev.changedTouches;\n for (let i = 0; i < changedTouches.length; i += 1) {\n handleTapStart(ev, changedTouches[i]);\n }\n const target = ev.target;\n if (!target.__touchCount) {\n target.__touchCount = 0;\n target.addEventListener('touchend', handleTouchEnd);\n target.addEventListener('touchcancel', handleTouchCancel);\n }\n target.__touchCount += changedTouches.length;\n };\n const handleTouchMove = (ev) => {\n const changedTouches = ev.changedTouches;\n for (let i = 0; i < changedTouches.length; i += 1) {\n handleTapMove(ev, changedTouches[i]);\n }\n };\n const handleTouchEnd = (ev) => {\n const changedTouches = ev.changedTouches;\n for (let i = 0; i < changedTouches.length; i += 1) {\n handleTapEnd(ev, changedTouches[i]);\n }\n const target = ev.target;\n target.__touchCount -= changedTouches.length;\n if (target.__touchCount <= 0) {\n target.__touchCount = 0;\n target.removeEventListener('touchend', handleTouchEnd);\n target.removeEventListener('touchcancel', handleTouchCancel);\n }\n };\n const handleTouchCancel = (ev) => {\n const changedTouches = ev.changedTouches;\n for (let i = 0; i < changedTouches.length; i += 1) {\n handleTapCancel(ev, changedTouches[i]);\n }\n const target = ev.target;\n target.__touchCount -= changedTouches.length;\n if (target.__touchCount <= 0) {\n target.__touchCount = 0;\n target.removeEventListener('touchend', handleTouchEnd);\n target.removeEventListener('touchcancel', handleTouchCancel);\n }\n };\n const handleMouseDown = (ev) => {\n if (disableMouseEvents)\n return;\n handleTapStart(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n };\n const handleMouseOver = (ev) => {\n if (disableMouseEvents)\n return;\n handleTapMove(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n };\n const handleMouseUp = (ev) => {\n if (disableMouseEvents)\n return;\n handleTapEnd(ev, {\n identifier: SIMULATED_MOUSE_ID,\n clientX: ev.clientX,\n clientY: ev.clientY,\n });\n };\n document.body.addEventListener('touchstart', handleTouchStart, { capture: true });\n document.body.addEventListener('touchmove', handleTouchMove, { capture: true });\n document.body.addEventListener('mousedown', handleMouseDown, { capture: true });\n document.body.addEventListener('mousemove', handleMouseOver, { capture: true });\n document.body.addEventListener('mouseup', handleMouseUp, { capture: true });\n }\n setListenerStats(element, type, capture, mutLevel) {\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 const shouldDelegate = DELEGATE_EVENTS.includes(type);\n const 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, (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 const elementEventListeners = capture\n ? this._$elementCaptureEventListeners\n : this._$elementEventListeners;\n if (!elementEventListeners.has(element))\n elementEventListeners.set(element, Object.create(null));\n const listeners = elementEventListeners.get(element);\n if (listeners[type])\n return;\n listeners[type] = true;\n element.addEventListener(type, (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 setModelBindingStat(element, attributeName, listener) {\n const updateEventListener = (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, () => {\n var _a;\n const 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 const tagName = element.tagName;\n let valid = false;\n if (tagName === 'INPUT') {\n const elem = element;\n const type = elem.type;\n if (type === 'checkbox') {\n if (attributeName === 'checked') {\n valid = true;\n updateEventListener('change', () => elem.checked);\n }\n }\n else if (type === 'radio') {\n if (attributeName === 'checked') {\n valid = true;\n updateEventListener('change', () => elem.checked);\n }\n }\n else {\n if (attributeName === 'value') {\n valid = true;\n updateEventListener('input', () => elem.value);\n }\n }\n }\n else if (tagName === 'TEXTAREA') {\n const elem = element;\n if (attributeName === 'value') {\n valid = true;\n updateEventListener('input', () => elem.value);\n }\n }\n else if (tagName === 'SELECT') {\n const elem = element;\n if (attributeName === 'value') {\n valid = true;\n updateEventListener('change', () => elem.value);\n }\n }\n if (!valid) {\n triggerWarning(`unsupported model binding on \"${attributeName}\" of \"${tagName.toLowerCase()}\" element.`);\n }\n }\n createIntersectionObserver(targetElement, relativeElement, relativeElementMargin, thresholds, listener) {\n const observer = new IntersectionObserver((info) => {\n info.forEach((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() {\n observer.disconnect();\n },\n };\n }\n createMediaQueryObserver(status, listener) {\n const calcMatches = () => {\n const width = document.documentElement.clientWidth;\n const 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 const orientation = width > height ? 'landscape' : 'portrait';\n if (orientation !== status.orientation)\n return false;\n return true;\n };\n let curMatches = null;\n const listenerFunc = () => {\n const matches = calcMatches();\n if (curMatches === matches)\n return;\n curMatches = matches;\n listener({ matches });\n };\n setTimeout(listenerFunc, 0);\n window.addEventListener('resize', listenerFunc);\n return {\n disconnect() {\n window.removeEventListener('resize', listenerFunc);\n },\n };\n }\n getContext(element, cb) {\n cb(null);\n }\n}\n//# sourceMappingURL=current_window_backend_context.js.map","/* eslint-disable class-methods-use-this */\nimport { safeCallback } from '../func_arr';\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 */\nexport class EmptyBackendContext {\n constructor() {\n this.mode = 1 /* BackendMode.Shadow */;\n /* @internal */\n this._$styleSheetIdInc = 1;\n /* @internal */\n this._$renderCallbacks = null;\n /* @internal */\n this._$shadowRoot = new EmptyBackendShadowRootContext();\n }\n destroy() {\n // empty\n }\n getWindowWidth() {\n return 1;\n }\n getWindowHeight() {\n return 1;\n }\n getDevicePixelRatio() {\n return 1;\n }\n getTheme() {\n return 'light';\n }\n registerStyleSheetContent(_path, _content) {\n // empty\n }\n appendStyleSheetPath(_path, _styleScope) {\n const id = this._$styleSheetIdInc;\n this._$styleSheetIdInc += 1;\n return id;\n }\n disableStyleSheet(_index) {\n // empty\n }\n render(cb) {\n if (this._$renderCallbacks) {\n this._$renderCallbacks.push(cb);\n }\n else {\n const callbacks = (this._$renderCallbacks = [cb]);\n setTimeout(() => {\n this._$renderCallbacks = null;\n callbacks.forEach((cb) => {\n safeCallback('Render Callback', cb, this, [null]);\n });\n }, 16);\n }\n }\n getRootNode() {\n return this._$shadowRoot;\n }\n createFragment() {\n return new EmptyBackendElement(0 /* EmptyBackendElementType.Fragment */);\n }\n onEvent(_createEvent, _listener) {\n // empty\n }\n}\n/** An element for empty backend implementation */\nexport class EmptyBackendElement {\n constructor(type) {\n if (type === 3 /* EmptyBackendElementType.Component */) {\n this._$shadowRoot = new EmptyBackendShadowRootContext();\n }\n else {\n this._$shadowRoot = null;\n }\n }\n release() {\n // empty\n }\n associateValue(_v) {\n // empty\n }\n getShadowRoot() {\n return this._$shadowRoot || undefined;\n }\n appendChild(_child) {\n // empty\n }\n removeChild(_child, _index) {\n // empty\n }\n insertBefore(_child, _before, _index) {\n // empty\n }\n replaceChild(_child, _oldChild, _index) {\n // empty\n }\n spliceBefore(_before, _deleteCount, _list) {\n // empty\n }\n spliceAppend(_list) {\n // empty\n }\n spliceRemove(_before, _deleteCount) {\n // empty\n }\n setId(_id) {\n // empty\n }\n setSlotName(_name) {\n // empty\n }\n setContainingSlot(_slot) {\n // empty\n }\n reassignContainingSlot(_oldSlot, _newSlot) {\n // empty\n }\n spliceBeforeSlotNodes(_before, _deleteCount, _list) {\n // empty\n }\n spliceRemoveSlotNodes(_before, _deleteCount) {\n // empty\n }\n spliceAppendSlotNodes(_list) {\n // empty\n }\n setInheritSlots() {\n // empty\n }\n setStyle(_styleText) {\n // empty\n }\n addClass(_className) {\n // empty\n }\n removeClass(_className) {\n // empty\n }\n clearClasses() {\n // empty\n }\n setClassAlias(_className, _target) {\n // empty\n }\n setAttribute(_name, _value) {\n // empty\n }\n removeAttribute(_name) {\n // empty\n }\n setDataset(_name, _value) {\n // empty\n }\n setText(_content) {\n // empty\n }\n setListenerStats(_type, _capture, _mutLevel) {\n // empty\n }\n setModelBindingStat(_attributeName, _listener) {\n // empty\n }\n}\n/** A shadow root for empty backend implementation */\nexport class EmptyBackendShadowRootContext extends EmptyBackendElement {\n // eslint-disable-next-line no-useless-constructor\n constructor() {\n super(4 /* EmptyBackendElementType.VirtualNode */);\n }\n createElement(_tagName, _stylingName) {\n return new EmptyBackendElement(1 /* EmptyBackendElementType.Element */);\n }\n createTextNode(_content) {\n return new EmptyBackendElement(2 /* EmptyBackendElementType.TextNode */);\n }\n createComponent(_tagName, _external, _virtualHost, _styleScope, _extraStyleScope, _externalClasses) {\n return new EmptyBackendElement(3 /* EmptyBackendElementType.Component */);\n }\n createVirtualNode(_virtualName) {\n return new EmptyBackendElement(4 /* EmptyBackendElementType.VirtualNode */);\n }\n}\n//# sourceMappingURL=empty_backend.js.map","/* eslint-disable class-methods-use-this */\nimport { safeCallback } from '../func_arr';\n/** An empty backend implementation */\nexport class EmptyComposedBackendContext {\n constructor() {\n this.mode = 2 /* BackendMode.Composed */;\n this._$styleSheetIdInc = 1;\n this._$renderCallbacks = null;\n this._$rootNode = new EmptyComposedBackendElement();\n }\n destroy() {\n // empty\n }\n getWindowWidth() {\n return 1;\n }\n getWindowHeight() {\n return 1;\n }\n getDevicePixelRatio() {\n return 1;\n }\n getTheme() {\n return 'light';\n }\n registerStyleSheetContent(_path, _content) {\n // empty\n }\n appendStyleSheetPath(_path, _styleScope) {\n const id = this._$styleSheetIdInc;\n this._$styleSheetIdInc += 1;\n return id;\n }\n disableStyleSheet(_index) {\n // empty\n }\n render(cb) {\n if (this._$renderCallbacks) {\n this._$renderCallbacks.push(cb);\n }\n else {\n const callbacks = (this._$renderCallbacks = [cb]);\n setTimeout(() => {\n this._$renderCallbacks = null;\n callbacks.forEach((cb) => {\n safeCallback('Render Callback', cb, this, [null]);\n });\n }, 16);\n }\n }\n getRootNode() {\n return this._$rootNode;\n }\n createElement(_tagName, _stylingName) {\n return new EmptyComposedBackendElement();\n }\n createTextNode(_tagName) {\n return new EmptyComposedBackendElement();\n }\n createFragment() {\n return new EmptyComposedBackendElement();\n }\n onEvent(_listener) {\n // empty\n }\n createMediaQueryObserver(_status, _listener) {\n return {\n disconnect: () => {\n /* empty */\n },\n };\n }\n}\n/** An element for empty backend implementation */\nexport class EmptyComposedBackendElement {\n release() {\n // empty\n }\n associateValue(_v) {\n // empty\n }\n appendChild(_child) {\n // empty\n }\n removeChild(_child, _index) {\n // empty\n }\n insertBefore(_child, _before, _index) {\n // empty\n }\n replaceChild(_child, _oldChild, _index) {\n // empty\n }\n spliceBefore(_before, _deleteCount, _list) {\n // empty\n }\n spliceAppend(_list) {\n // empty\n }\n spliceRemove(_before, _deleteCount) {\n // empty\n }\n setId(_id) {\n // empty\n }\n setStyleScope(_styleScope, _extraStyleScope, _hostStyleScope) {\n // empty\n }\n setStyle(_styleText) {\n // empty\n }\n addClass(_elementClass, _styleScope) {\n // empty\n }\n removeClass(_elementClass, _styleScope) {\n // empty\n }\n clearClasses() {\n // empty\n }\n setAttribute(_name, _value) {\n // empty\n }\n removeAttribute(_name) {\n // empty\n }\n setText(_content) {\n // empty\n }\n getBoundingClientRect(cb) {\n setTimeout(() => {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n }\n getScrollOffset(cb) {\n setTimeout(() => {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n }\n setListenerStats(_type, _capture, _mutLevel) {\n // empty\n }\n setModelBindingStat(_attributeName, _listener) {\n // empty\n }\n createIntersectionObserver(_relativeElement, _relativeElementMargin, _thresholds, _listener) {\n return {\n disconnect: () => {\n /* empty */\n },\n };\n }\n getContext(cb) {\n cb(null);\n }\n}\n//# sourceMappingURL=empty_composed_backend.js.map","import { BM, } from './backend';\nconst CLASS_NAME_REG_EXP = /\\s+/;\n/**\n * Style scope manager\n */\nexport class StyleScopeManager {\n constructor() {\n /** @internal */\n this._$names = [''];\n }\n static globalScope() {\n return 0;\n }\n register(name) {\n const ret = this._$names.length;\n this._$names.push(name);\n return ret;\n }\n queryName(id) {\n return this._$names[id];\n }\n}\n/**\n * Class manager for non-virtual `Element`\n */\nexport class ClassList {\n constructor(element, externalNames, owner, styleScope, extraStyleScope, styleScopeManager) {\n /** @internal */\n this._$externalNames = undefined;\n /** @internal */\n this._$externalRawAlias = null;\n /** @internal */\n this._$dirtyExternalNames = null;\n /** @internal */\n this._$rawNames = [];\n /** @internal */\n this._$backendNames = [];\n /** @internal */\n this._$backendNameScopes = [];\n /** @internal */\n this._$backendNamesCount = [];\n /** @internal */\n this._$hasAliasNames = false;\n this._$element = element;\n this._$owner = owner;\n this._$defaultScope = styleScope;\n this._$extraScope = extraStyleScope;\n // root owner got globalScope as it's styleScope, avoid the root owner\n this._$rootScope = (owner === null || owner === void 0 ? void 0 : owner._$owner) ? owner._$rootScope : styleScope;\n this._$prefixManager = styleScopeManager;\n if (externalNames) {\n this._$externalNames = externalNames;\n this._$externalRawAlias = [];\n }\n }\n /** @internal */\n _$resolvePrefixes(name, cb) {\n const owner = this._$owner;\n const externalNames = owner === null || owner === void 0 ? void 0 : owner._$externalNames;\n const externalIndex = externalNames ? externalNames.indexOf(name) : -1;\n if (owner && externalIndex !== -1) {\n this._$hasAliasNames = true;\n const rawAlias = owner._$externalRawAlias[externalIndex];\n if (rawAlias) {\n for (let i = 0; i < rawAlias.length; i += 1) {\n owner._$resolvePrefixes(rawAlias[i], cb);\n }\n }\n }\n else if (name[0] === '~') {\n cb(this._$rootScope, name.slice(1));\n }\n else if (name[0] === '^') {\n let n = name.slice(1);\n let owner = this._$owner;\n while (n[0] === '^') {\n n = n.slice(1);\n owner = owner === null || owner === void 0 ? void 0 : owner._$owner;\n }\n // root owner got globalScope as it's styleScope, avoid the root owner\n const scopeId = (owner === null || owner === void 0 ? void 0 : owner._$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 _$hasAlias(name) {\n return !!this._$externalNames && this._$externalNames.includes(name);\n }\n /** @internal */\n _$setAlias(name, target) {\n if (!this._$externalNames)\n return;\n let slices;\n if (target === undefined || target === null) {\n slices = [];\n }\n else if (Array.isArray(target)) {\n slices = Array(target.length);\n for (let i = 0, l = target.length; i < l; i += 1) {\n slices[i] = String(target[i]);\n }\n }\n else {\n slices = String(target)\n .split(CLASS_NAME_REG_EXP)\n .filter((s) => s !== ''); // split result could be [ '' ]\n }\n const externalIndex = this._$externalNames.indexOf(name);\n if (externalIndex === -1)\n return;\n this._$dirtyExternalNames = this._$dirtyExternalNames || [];\n this._$dirtyExternalNames.push(name);\n this._$externalRawAlias[externalIndex] = slices;\n }\n /** @internal */\n _$getAlias() {\n return this._$externalNames;\n }\n /** @internal */\n _$spreadExternalClassUpdate() {\n const owner = this._$owner;\n if (!(owner === null || owner === void 0 ? void 0 : owner._$dirtyExternalNames) || !this._$hasAliasNames)\n return false;\n const dirtyExternalNames = owner._$dirtyExternalNames;\n const externalNames = this._$externalNames;\n if (externalNames) {\n for (let externalIndex = 0; externalIndex < externalNames.length; externalIndex += 1) {\n const externalRawAlias = this._$externalRawAlias[externalIndex] || [];\n for (let i = 0; i < dirtyExternalNames.length; i += 1) {\n if (externalRawAlias.includes(dirtyExternalNames[i])) {\n this._$dirtyExternalNames = this._$dirtyExternalNames || [];\n this._$dirtyExternalNames.push(externalNames[externalIndex]);\n }\n }\n }\n }\n const shouldUpdate = this._$rawNames.some((names) => names.some((name) => dirtyExternalNames.includes(name)));\n if (shouldUpdate) {\n this._$updateResolvedNames();\n }\n return !!this._$dirtyExternalNames || shouldUpdate;\n }\n /** @internal */\n _$shouldUpdateExternalClass() {\n if (!this._$dirtyExternalNames)\n return false;\n if (BM.SHADOW || (BM.DYNAMIC && this._$element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const dirtyExternalNames = this._$dirtyExternalNames;\n for (let i = 0; i < dirtyExternalNames.length; i += 1) {\n const name = dirtyExternalNames[i];\n const externalIndex = this._$externalNames.indexOf(name);\n const targets = this._$externalRawAlias[externalIndex] || [];\n this._$element._$backendElement.setClassAlias(name, targets);\n }\n this._$dirtyExternalNames = null;\n return false;\n }\n return true;\n }\n /** @internal */\n _$markExternalClassUpdated() {\n this._$dirtyExternalNames = null;\n }\n /** @internal */\n _$updateResolvedNames() {\n const backendElement = this._$element._$backendElement;\n if (!backendElement)\n return false;\n const rawNames = this._$rawNames;\n const oldBackendNames = this._$backendNames;\n const oldBackendNameScopes = this._$backendNameScopes;\n const oldBackendNamesCount = this._$backendNamesCount;\n const newBackendNames = [];\n const newBackendNameScopes = [];\n const newBackendNamesCount = [];\n this._$hasAliasNames = false;\n if (BM.SHADOW || (BM.DYNAMIC && this._$element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n for (let i = 0, l = rawNames.length; i < l; i += 1) {\n const names = rawNames[i];\n if (!names)\n continue;\n for (let j = 0, ll = names.length; j < ll; j += 1) {\n const rawName = names[j];\n let found = false;\n for (let i = 0; i < newBackendNames.length; i += 1) {\n if (rawName === newBackendNames[i]) {\n newBackendNamesCount[i] += 1;\n found = true;\n break;\n }\n }\n if (!found) {\n newBackendNames.push(rawName);\n newBackendNameScopes.push(undefined);\n newBackendNamesCount.push(1);\n }\n }\n }\n }\n else {\n for (let i = 0, l = rawNames.length; i < l; i += 1) {\n const names = rawNames[i];\n if (!names)\n continue;\n for (let j = 0, ll = names.length; j < ll; j += 1) {\n const rawName = names[j];\n this._$resolvePrefixes(rawName, (scopeId, className) => {\n for (let i = 0; i < newBackendNames.length; i += 1) {\n if (className === newBackendNames[i] && scopeId === newBackendNameScopes[i]) {\n newBackendNamesCount[i] += 1;\n return;\n }\n }\n newBackendNames.push(className);\n newBackendNameScopes.push(scopeId);\n newBackendNamesCount.push(1);\n });\n }\n }\n }\n let changed = false;\n for (let i = 0; i < newBackendNames.length; i += 1) {\n let found = false;\n for (let j = 0; j < oldBackendNames.length; j += 1) {\n if (newBackendNames[i] === oldBackendNames[j] &&\n newBackendNameScopes[i] === oldBackendNameScopes[j]) {\n found = true;\n oldBackendNamesCount[j] = 0; // mark as exists\n break;\n }\n }\n if (!found) {\n changed = true;\n this._$addClassToBackend(newBackendNames[i], newBackendNameScopes[i], backendElement);\n }\n }\n for (let j = 0; j < oldBackendNames.length; j += 1) {\n // 0 means old exists\n if (oldBackendNamesCount[j] !== 0) {\n changed = true;\n this._$removeClassFromBackend(oldBackendNames[j], oldBackendNameScopes[j], backendElement);\n }\n }\n this._$backendNames = newBackendNames;\n this._$backendNameScopes = newBackendNameScopes;\n this._$backendNamesCount = newBackendNamesCount;\n return changed;\n }\n /** @internal */\n _$addClassToBackend(name, scope, e) {\n var _a;\n if (BM.DOMLIKE || (BM.DYNAMIC && this._$element.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const prefix = scope === undefined ? '' : (_a = this._$prefixManager) === null || _a === void 0 ? void 0 : _a.queryName(scope);\n const val = prefix ? `${prefix}--${name}` : name;\n e.classList.add(val);\n }\n else if (BM.COMPOSED ||\n (BM.DYNAMIC && this._$element.getBackendMode() === 2 /* BackendMode.Composed */)) {\n ;\n e.addClass(name, scope);\n }\n else {\n ;\n e.addClass(name);\n }\n }\n /** @internal */\n _$removeClassFromBackend(name, scope, e) {\n var _a;\n if (BM.DOMLIKE || (BM.DYNAMIC && this._$element.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const prefix = scope && ((_a = this._$prefixManager) === null || _a === void 0 ? void 0 : _a.queryName(scope));\n const val = prefix ? `${prefix}--${name}` : name;\n e.classList.remove(val);\n }\n else if (BM.COMPOSED ||\n (BM.DYNAMIC && this._$element.getBackendMode() === 2 /* BackendMode.Composed */)) {\n ;\n e.removeClass(name, scope);\n }\n else {\n ;\n e.removeClass(name);\n }\n }\n /** @internal */\n _$addClass(name, scopeId, backendElement) {\n const oldClassNames = this._$backendNames;\n const oldScopeIds = this._$backendNameScopes;\n const classNamesCount = this._$backendNamesCount;\n let found = false;\n for (let j = 0; j < oldClassNames.length; j += 1) {\n if (name === oldClassNames[j] && scopeId === oldScopeIds[j]) {\n found = true;\n classNamesCount[j] += 1;\n break;\n }\n }\n if (!found) {\n oldClassNames.push(name);\n oldScopeIds.push(scopeId);\n classNamesCount.push(1);\n this._$addClassToBackend(name, scopeId, backendElement);\n }\n }\n /** @internal */\n _$removeClass(name, scopeId, backendElement) {\n const oldClassNames = this._$backendNames;\n const oldScopeIds = this._$backendNameScopes;\n const classNamesCount = this._$backendNamesCount;\n for (let j = 0; j < oldClassNames.length; j += 1) {\n if (name === oldClassNames[j] && scopeId === oldScopeIds[j]) {\n if (classNamesCount[j] <= 1) {\n oldClassNames.splice(j, 1);\n oldScopeIds.splice(j, 1);\n classNamesCount.splice(j, 1);\n this._$removeClassFromBackend(name, scopeId, backendElement);\n }\n else {\n classNamesCount[j] -= 1;\n }\n break;\n }\n }\n }\n toggle(name, force, segmentIndex = 0 /* StyleSegmentIndex.MAIN */) {\n /* istanbul ignore if */\n if (CLASS_NAME_REG_EXP.test(name))\n throw new Error('Class name contains space characters.');\n const backendElement = this._$element._$backendElement;\n const rawClassIndex = this._$rawNames[segmentIndex]\n ? this._$rawNames[segmentIndex].indexOf(name)\n : -1;\n const isAdd = force === undefined ? rawClassIndex === -1 : !!force;\n let changed = false;\n if (isAdd) {\n if (rawClassIndex === -1) {\n const rawNames = this._$rawNames;\n if (!rawNames[segmentIndex]) {\n rawNames[segmentIndex] = [];\n }\n const names = rawNames[segmentIndex];\n names.push(name);\n if (backendElement) {\n if (BM.SHADOW || (BM.DYNAMIC && this._$element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n this._$addClass(name, undefined, backendElement);\n }\n else {\n this._$resolvePrefixes(name, (scopeId, className) => {\n this._$addClass(className, scopeId, backendElement);\n });\n }\n }\n changed = true;\n }\n }\n else if (rawClassIndex !== -1) {\n const names = this._$rawNames[segmentIndex];\n if (names)\n names.splice(rawClassIndex, 1);\n if (backendElement) {\n if (BM.SHADOW || (BM.DYNAMIC && this._$element.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n this._$removeClass(name, undefined, backendElement);\n }\n else {\n this._$resolvePrefixes(name, (scopeId, className) => {\n this._$removeClass(className, scopeId, backendElement);\n });\n }\n }\n changed = true;\n }\n return changed;\n }\n contains(name, segmentIndex = 0 /* StyleSegmentIndex.MAIN */) {\n const names = this._$rawNames[segmentIndex] || [];\n for (let i = 0; i < names.length; i += 1) {\n const rn = names[i];\n if (rn[0] === '~') {\n const n = rn.slice(1);\n if (n === name)\n return true;\n }\n else if (rn[0] === '^') {\n let 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 setClassNames(names, segmentIndex = 0 /* StyleSegmentIndex.MAIN */) {\n let n;\n if (names === undefined || names === null) {\n n = [];\n }\n else if (Array.isArray(names)) {\n n = Array(names.length);\n for (let i = 0, l = names.length; i < l; i += 1) {\n n[i] = String(names[i]);\n }\n }\n else {\n n = String(names)\n .split(CLASS_NAME_REG_EXP)\n .filter((s) => s !== ''); // split result could be [ '' ]\n }\n this._$rawNames[segmentIndex] = n;\n return this._$updateResolvedNames();\n }\n /** Returns space separated class string */\n getClassNames(segmentIndex = 0 /* StyleSegmentIndex.MAIN */) {\n const names = this._$rawNames[segmentIndex] || [];\n return names ? names.join(' ') : '';\n }\n}\n//# sourceMappingURL=class_list.js.map","export const METHOD_TAG = Symbol('method');\n//# sourceMappingURL=component_params.js.map","/**\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 */\nexport class TraitBehavior {\n /** @internal */\n // eslint-disable-next-line no-useless-constructor\n constructor(ownerSpace, trans) {\n this.ownerSpace = ownerSpace;\n this._$trans = trans;\n }\n /** @internal */\n _$implement(impl) {\n var _a;\n return ((_a = this._$trans) === null || _a === void 0 ? void 0 : _a.call(this, impl)) || impl;\n }\n}\n/**\n * A manager that can implement multiple different trait behaviors\n */\nexport class TraitGroup {\n constructor() {\n this._$traits = new WeakMap();\n }\n implement(traitBehavior, impl) {\n const traitImpl = traitBehavior._$implement(impl);\n this._$traits.set(traitBehavior, traitImpl);\n }\n get(traitBehavior) {\n return this._$traits.get(traitBehavior);\n }\n}\n//# sourceMappingURL=trait_behaviors.js.map","import { BehaviorBuilder, } from './behavior';\nimport { StyleScopeManager } from './class_list';\nimport { Component, } from './component';\nimport { normalizeComponentOptions, } from './global_options';\nimport { TraitBehavior } from './trait_behaviors';\nimport { safeCallback } from './func_arr';\nconst normalizePath = (path, basePath) => {\n let slices;\n if (path[0] !== '/') {\n slices = basePath.split('/').slice(0, -1).concat(path.split('/'));\n }\n else {\n slices = path.split('/');\n }\n const finalSlices = [];\n for (let i = 0; i < slices.length; i += 1) {\n const 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 const normalizeUrl = (path, relPath) => {\n const protoSep = path.indexOf('://');\n if (protoSep > 0) {\n const domainSep = path.indexOf('/', protoSep + 3);\n if (domainSep > 0) {\n const domain = path.slice(0, domainSep);\n const absPath = normalizePath(path.slice(domainSep + 1), '');\n return {\n domain,\n absPath,\n };\n }\n // HACK for invalid URL like `a://the-comp` , provide some compatibility\n const domain = path.slice(0, protoSep + 3);\n const absPath = normalizePath(path.slice(protoSep + 3), '');\n return {\n domain,\n absPath,\n };\n }\n return {\n domain: null,\n absPath: normalizePath(path, relPath),\n };\n};\nexport class ComponentWaitingList {\n constructor(ownerSpace, isPub, alias) {\n /** @internal */\n this._$callbacks = [];\n this._$ownerSpace = ownerSpace;\n this._$isPub = isPub;\n this._$alias = alias;\n }\n add(callback) {\n this._$callbacks.push(callback);\n }\n hintUsed(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 remove(callback) {\n const index = this._$callbacks.indexOf(callback);\n // must guarantee order here (cannot swap-remove)\n this._$callbacks.splice(index, 1);\n }\n call(c) {\n const cbs = this._$callbacks;\n this._$callbacks = [];\n for (let i = 0; i < cbs.length; i += 1) {\n const f = cbs[i];\n f(c);\n }\n }\n}\n/** A group of components for cross-component using */\nexport class ComponentSpace {\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 constructor(defaultComponent, baseSpace, styleScopeManager, allowUnusedNativeNode = true) {\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 /** @internal */\n this._$allowUnusedNativeNode = true;\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 this._$allowUnusedNativeNode = allowUnusedNativeNode;\n }\n /**\n * Update the default component options for this space\n *\n * The new options will be merged with existing options.\n */\n updateComponentOptions(componentOptions) {\n this._$componentOptions = normalizeComponentOptions(componentOptions, this._$componentOptions);\n }\n getComponentOptions() {\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 setGlobalUsingComponent(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 importSpace(protoDomain, space, privateUse) {\n this._$importedSpaces[protoDomain] = {\n space,\n 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 getComponentByUrl(path, basePath) {\n const { domain, absPath } = normalizeUrl(path, basePath);\n const comp = this.getComponent(absPath, true, domain);\n if (!comp) {\n throw new Error(`There is no component \"${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 getComponentByUrlWithoutDefault(path, relPath) {\n const { domain, absPath } = normalizeUrl(path, relPath);\n const comp = this.getComponent(absPath, false, domain);\n return comp || null;\n }\n getComponent(absPath, withDefault = true, domain = null) {\n let list;\n if (domain) {\n const target = this._$importedSpaces[domain];\n if (target) {\n const { space, privateUse } = target;\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 const 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 getDefaultComponent() {\n return this._$list[this._$defaultComponent] || null;\n }\n isDefaultComponent(def) {\n return this._$list[this._$defaultComponent] === def;\n }\n getGlobalUsingComponent(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 getBehaviorByUrl(path, relPath) {\n const { domain, absPath } = normalizeUrl(path, relPath);\n return this._$getBehavior(absPath, domain) || null;\n }\n /** @internal */\n _$getBehavior(absPath, domain = null) {\n let list;\n if (domain) {\n const target = this._$importedSpaces[domain];\n if (target) {\n const { space, privateUse } = target;\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 const def = list[absPath];\n if (def)\n return def;\n }\n return undefined;\n }\n /** Register a component in this space */\n defineComponent(def) {\n const is = def.is;\n const ret = new BehaviorBuilder(is, this).definition(def).registerComponent();\n return ret;\n }\n /** Register a behavior in this space */\n defineBehavior(def) {\n const is = def.is;\n const ret = new BehaviorBuilder(is, this).definition(def).registerBehavior();\n return ret;\n }\n /** Register a component or a behavior with chaining API */\n define(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 defineWithMethodCaller(is) {\n return new BehaviorBuilder(is, this);\n }\n /** @internal */\n _$registerComponent(is, comp) {\n this._$list[is] = comp;\n this._$behaviorList[is] = comp.behavior;\n const waiting = this._$listWaiting[is];\n if (waiting) {\n delete this._$listWaiting[is];\n if (this._$groupingListWaiting) {\n this._$groupingListWaiting.push({ waiting, comp });\n }\n else {\n waiting.call(comp);\n }\n }\n }\n /** @internal */\n _$registerBehavior(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 startGroupRegister() {\n this._$groupingListWaiting = [];\n }\n /**\n * End a series of components and behaviors registration\n *\n * In most cases, `groupRegister` is prefered.\n */\n endGroupRegister() {\n const arr = this._$groupingListWaiting;\n if (!arr)\n return;\n this._$groupingListWaiting = null;\n for (let i = 0; i < arr.length; i += 1) {\n const { waiting, comp } = arr[i];\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 groupRegister(cb) {\n this.startGroupRegister();\n const 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 exportComponent(alias, is) {\n const comp = this._$list[is];\n if (!comp) {\n throw new Error(`There is no component \"${is}\" for aliasing`);\n }\n this._$pubList[alias] = comp;\n const 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 getExportedComponent(alias) {\n return this._$pubList[alias];\n }\n /** Get a behavior by its exported alias */\n getExportedBehavior(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 exportBehavior(alias, is) {\n const beh = this._$behaviorList[is];\n if (!beh) {\n throw new Error(`There is no behavior \"${is}\" for aliasing`);\n }\n this._$pubBehaviorList[alias] = beh;\n }\n /** @internal */\n _$componentWaitingList(path, relPath) {\n const { domain, absPath } = normalizeUrl(path, relPath);\n let waiting;\n let space;\n let isPub;\n if (domain) {\n const 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 let 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 setComponentWaitingListener(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 createComponentByUrl(tagName, url, genericTargets, backendContext) {\n let domainPath = url;\n let paramStr = null;\n // parse URL\n const hashSepIndex = domainPath.indexOf('#');\n if (hashSepIndex >= 0) {\n domainPath = domainPath.slice(0, hashSepIndex);\n }\n const 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 const compDef = this.getComponentByUrl(domainPath, '');\n let genericImpls = null;\n if (genericTargets) {\n genericImpls = Object.create(null);\n Object.keys(genericTargets).forEach((key) => {\n const url = genericTargets[key];\n const compDef = this.getComponentByUrl(url, '');\n genericImpls[key] = compDef;\n });\n }\n // create the component\n const comp = Component.createWithGenericsAndContext(tagName, compDef, genericImpls, backendContext, (comp) => {\n // set params if provided\n if (paramStr) {\n let needApplyUpdates = false;\n paramStr.split('&').forEach((kv) => {\n const kvSepIndex = kv.indexOf('=');\n if (kvSepIndex >= 0) {\n const key = decodeURIComponent(kv.slice(0, kvSepIndex));\n const value = decodeURIComponent(kv.slice(kvSepIndex + 1));\n if (comp._$dataGroup.replaceProperty(key, value)) {\n needApplyUpdates = true;\n }\n }\n });\n if (needApplyUpdates)\n comp.applyDataUpdates();\n }\n });\n return comp;\n }\n defineTraitBehavior(trans) {\n return new TraitBehavior(this, trans);\n }\n}\nlet defaultComponentSpace = null;\nexport const getDefaultComponentSpace = () => {\n if (defaultComponentSpace) {\n return defaultComponentSpace;\n }\n const cs = new ComponentSpace();\n defaultComponentSpace = cs;\n return cs;\n};\n//# sourceMappingURL=component_space.js.map","const skipWhiteSpace = (state) => {\n const str = state.str;\n while (state.cur < str.length) {\n const 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};\nconst parseInteger = (state) => {\n const str = state.str;\n let ret = '';\n while (state.cur < str.length) {\n const 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 \"${str}\" is illegal at char ${state.cur} (illegal index)`);\n }\n return parseInt(ret, 10);\n};\nconst parseFieldName = (state) => {\n const str = state.str;\n let ret = '';\n while (state.cur < str.length) {\n const 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 const 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 \"${str}\" is illegal at char ${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};\nconst parseFieldNameWithSpecialChars = (state) => {\n const str = state.str;\n let ret = '';\n while (state.cur < str.length) {\n const 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 const 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};\nconst parsePath = (state) => {\n const str = state.str;\n skipWhiteSpace(state);\n if (str[state.cur] === '*' && str[state.cur + 1] === '*') {\n state.cur += 2;\n return ['**'];\n }\n const seg = parseFieldName(state);\n if (!seg) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (first field name illegal)`);\n }\n const ret = [seg];\n while (state.cur < str.length) {\n if (!skipWhiteSpace(state))\n break;\n const 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 const seg = parseFieldName(state);\n if (!seg) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (field name illegal)`);\n }\n ret.push(seg);\n }\n else if (next === '[') {\n state.cur += 1;\n skipWhiteSpace(state);\n const index = parseInteger(state);\n skipWhiteSpace(state);\n const next2 = str[state.cur];\n if (next2 !== ']') {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (illegal index)`);\n }\n state.cur += 1;\n ret.push(index);\n }\n else {\n break;\n }\n }\n return ret;\n};\nconst parsePathWithSpecialChars = (state) => {\n const str = state.str;\n const ret = [];\n while (state.cur < str.length) {\n const next = str[state.cur];\n if (next === '.') {\n state.cur += 1;\n const seg = parseFieldNameWithSpecialChars(state);\n if (seg !== '')\n ret.push(seg);\n }\n else if (next === '[') {\n state.cur += 1;\n const index = parseInteger(state);\n const next2 = str[state.cur];\n if (next2 !== ']' && state.cur < str.length) {\n throw new Error(`data path descriptor \"${str}\" is illegal at char ${state.cur} (illegal index)`);\n }\n state.cur += 1;\n ret.push(index);\n }\n else {\n const seg = parseFieldNameWithSpecialChars(state);\n ret.push(seg);\n }\n }\n if (ret.length === 0)\n ret.push('');\n return ret;\n};\nconst parseCommaSepPaths = (state) => {\n const 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 const parseSinglePath = (str) => {\n const parseState = {\n str,\n cur: 0,\n };\n const 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};\nexport const parseMultiPaths = (str) => {\n if (typeof str !== 'string') {\n return str.map((str) => parsePath({ str, cur: 0 }));\n }\n const parseState = {\n str,\n cur: 0,\n };\n const ret = parseCommaSepPaths(parseState);\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//# sourceMappingURL=data_path.js.map","const deepCopyWithRecursion = (src, visited) => {\n if (typeof src === 'object' && src !== null) {\n const v = visited.get(src);\n if (v !== undefined)\n return v;\n if (Array.isArray(src)) {\n const dest = [];\n visited.set(src, dest);\n for (let i = 0; i < src.length; i += 1) {\n dest[i] = deepCopyWithRecursion(src[i], visited);\n }\n return dest;\n }\n const dest = {};\n visited.set(src, dest);\n const keys = Object.keys(src);\n for (let i = 0; i < keys.length; i += 1) {\n const 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 const simpleDeepCopy = (src) => {\n if (typeof src === 'object' && src !== null) {\n if (Array.isArray(src)) {\n const dest = [];\n for (let i = 0; i < src.length; i += 1) {\n dest[i] = simpleDeepCopy(src[i]);\n }\n return dest;\n }\n const dest = {};\n const keys = Object.keys(src);\n for (let i = 0; i < keys.length; i += 1) {\n const 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 const deepCopy = (src, withRecursion) => {\n if (withRecursion)\n return deepCopyWithRecursion(src, new WeakMap());\n return simpleDeepCopy(src);\n};\n//# sourceMappingURL=data_utils.js.map","import { FuncArr } from './func_arr';\nimport { isElement } from './type_symbol';\nexport class MutationObserverTarget {\n constructor(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 attachChild(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 detachChild(child) {\n if (child._$mutationObserverTarget) {\n child._$mutationObserverTarget.updateSubtreeCount(-this._$subtreeObserversCount);\n }\n }\n updateSubtreeCount(diff) {\n this._$subtreeObserversCount += diff;\n const children = this._$boundElement.childNodes;\n children.forEach((child) => {\n if (isElement(child)) {\n if (!child._$mutationObserverTarget) {\n child._$mutationObserverTarget = new MutationObserverTarget(child);\n }\n child._$mutationObserverTarget.updateSubtreeCount(diff);\n }\n });\n }\n hasSubtreeListeners() {\n return this._$subtreeObserversCount > 0;\n }\n static callAttrObservers(node, eventObj) {\n var _a;\n let cur = node;\n do {\n const 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 const 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 static callTextObservers(textNode, eventObj) {\n var _a;\n let cur = textNode.parentNode;\n while (cur) {\n const 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 static callChildObservers(node, eventObj) {\n var _a;\n let cur = node;\n do {\n const 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 const 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 static callAttachObservers(node, eventObj) {\n var _a;\n const 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}\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 */\nexport class MutationObserver {\n constructor(listener) {\n this._$subtreeListenersCount = 0;\n this._$boundFuncArrs = [];\n this._$boundTarget = null;\n this._$listener = listener;\n this._$normalizedListener = null;\n }\n static create(listener) {\n return new MutationObserver(listener);\n }\n /** Start observation */\n observe(targetElement, options = {\n properties: false,\n childList: false,\n characterData: false,\n subtree: false,\n attachStatus: false,\n }) {\n const listener = this._$listener;\n if (!listener) {\n throw new Error('A MutationObserver can only observe once');\n }\n let 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 const 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('attributeObserver');\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('childObserver');\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('textObserver');\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('attachObserver');\n target.attachObservers.add(cb);\n this._$boundFuncArrs.push(target.attachObservers);\n }\n }\n /** End observation */\n disconnect() {\n var _a;\n (_a = this._$boundTarget) === null || _a === void 0 ? void 0 : _a.updateSubtreeCount(-this._$subtreeListenersCount);\n const arr = this._$boundFuncArrs;\n this._$boundFuncArrs = [];\n const nl = this._$normalizedListener;\n if (nl) {\n arr.forEach((funcArr) => {\n funcArr.remove(nl);\n });\n }\n }\n}\n//# sourceMappingURL=mutation_observer.js.map","import { deepCopy, simpleDeepCopy } from './data_utils';\nimport { safeCallback } from './func_arr';\nimport { DeepCopyKind } from './global_options';\nimport { MutationObserverTarget } from './mutation_observer';\nimport { triggerWarning } from './warning';\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\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 = {}));\nexport const shallowMerge = (dest, src) => {\n const keys = Object.keys(src);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n if (Object.prototype.hasOwnProperty.call(dest, key)) {\n if (key[0] === '_') {\n triggerWarning(`data field \"${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 const oldDest = dest[key];\n const newDest = {};\n const subKeys = Object.keys(oldDest);\n for (let i = 0; i < subKeys.length; i += 1) {\n const subKey = subKeys[i];\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};\nexport const normalizePropertyTypeShortHand = (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() {\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};\nexport const normalizePropertyType = (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 const convertValueToType = (value, propName, prop, component) => {\n const type = prop.type;\n const defaultFn = prop.default === undefined\n ? undefined\n : () => safeCallback(`Property \"${propName}\" Default`, prop.default, null, [], component || undefined);\n // try match optional types\n const optionalTypes = prop.optionalTypes;\n if (optionalTypes) {\n for (let 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 \"${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 \"${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 \"${propName}\" received type-incompatible value: expected <Number> but got NaN or Infinity. Used default value instead.`);\n }\n else {\n triggerWarning(`property \"${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 \"${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 \"${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 \"${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 const matchTypeWithValue = (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 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 = {}));\nexport class DataGroupObserverTree {\n constructor(propFields) {\n this.observerTree = { sub: {} };\n this.observers = [];\n this.propFields = propFields;\n }\n cloneSub() {\n const 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 addObserver(func, dataPath) {\n const id = this.observers.length;\n this.observers.push({\n path: dataPath,\n f: func,\n });\n for (let i = 0; i < dataPath.length; i += 1) {\n const singlePath = dataPath[i];\n let cur = this.observerTree;\n let wildcard = false;\n for (let j = 0; j < singlePath.length; j += 1) {\n const 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}\nconst callObserver = (comp, data, path, f) => {\n const args = new Array(path.length);\n for (let i = 0; i < path.length; i += 1) {\n const singlePath = path[i];\n let cur = data;\n for (let j = 0; j < singlePath.length; j += 1) {\n const 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};\nconst dfsMarkTriggerBitOnPath = (node, observerStatus) => {\n if (node.listener) {\n for (let i = 0; i < node.listener.length; i += 1) {\n const observerId = node.listener[i];\n observerStatus[observerId] = true;\n }\n }\n if (node.wildcard) {\n for (let i = 0; i < node.wildcard.length; i += 1) {\n const observerId = node.wildcard[i];\n observerStatus[observerId] = true;\n }\n }\n const keys = Object.keys(node.sub);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n dfsMarkTriggerBitOnPath(node.sub[k], observerStatus);\n }\n};\nconst markTriggerBitOnPath = (root, observerStatus, singlePath) => {\n let cur = root;\n let found = true;\n for (let i = 0; i < singlePath.length; i += 1) {\n const slice = singlePath[i];\n if (cur.wildcard) {\n const arr = cur.wildcard;\n for (let i = 0; i < arr.length; i += 1) {\n const observerId = arr[i];\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};\nconst triggerAndCleanTriggerBit = (observers, observerStatus, comp, data) => {\n for (let i = 0; i < observers.length; i += 1) {\n const { path, f } = observers[i];\n const status = observerStatus[i];\n if (status) {\n observerStatus[i] = false;\n if (comp)\n callObserver(comp, data, path, f);\n }\n }\n};\nexport const getDeepCopyStrategy = (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` */\nexport class DataGroup {\n _$generateInnerData(data) {\n const pureDataPattern = this._$pureDataPattern;\n const dataDeepCopy = this._$dataDeepCopy;\n if (pureDataPattern || dataDeepCopy !== 0 /* DeepCopyStrategy.None */) {\n const innerData = {};\n const keys = Object.keys(data);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const 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 constructor(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 /** Create a simple data group */\n static create(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 setUpdateListener(updateListener) {\n this._$updateListener = updateListener;\n }\n /** Replace the underlying data */\n replaceWholeData(data) {\n this.data = data;\n this.innerData = this._$generateInnerData(data);\n }\n /** Add a new common data change to queue */\n replaceDataOnPath(path, newData) {\n this._$pendingChanges.push([path, newData, undefined, undefined]);\n }\n /** Add a new array splice operation to queue */\n spliceArrayDataOnPath(path, index, del, inserts) {\n if (!Array.isArray(inserts)) {\n triggerWarning(`The splice insertion must be a string (on path \"${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 replaceProperty(propName, newData) {\n let data = newData;\n const 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, true, undefined]);\n return true;\n }\n /** Discard changes in queue and generate a new queue with specified changes */\n setChanges(changes) {\n this._$pendingChanges = changes;\n }\n /** Get the data change queue */\n getChanges() {\n return this._$pendingChanges;\n }\n /**\n * Set a callback when a specified property changes\n *\n * (Generally designed for template engines.)\n */\n setModelBindingListener(propName, listener) {\n if (this._$modelBindingListener) {\n this._$modelBindingListener[propName] = listener;\n }\n else {\n const map = (this._$modelBindingListener = Object.create(null));\n map[propName] = listener;\n }\n }\n /** Apply all changes in queue */\n applyDataUpdates(skipModelListener = false) {\n var _a;\n const propFields = this._$propFields;\n const comp = this._$comp;\n const pureDataPattern = this._$pureDataPattern;\n const dataDeepCopy = this._$dataDeepCopy;\n // handling chained updates if observers are used\n const isChainedUpdates = !!this._$doingUpdates;\n let combinedChanges;\n let 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 const changes = this._$pendingChanges;\n this._$pendingChanges = [];\n // apply changes and collect changing information\n for (let i = 0; i < changes.length; i += 1) {\n const change = changes[i];\n const [path, newData, maybeSpliceIndex, maybeSpliceDel] = change;\n const isSplice = maybeSpliceDel !== undefined;\n const propName = String(path[0]);\n const excluded = pureDataPattern ? pureDataPattern.test(propName) : false;\n const prop = propFields[propName];\n let changed = true;\n if (prop && path.length === 1) {\n // do update for 1-level fields\n const oldData = this.data[propName];\n let normalizedSpliceIndex;\n let filteredData;\n if (isSplice) {\n if (Array.isArray(oldData)) {\n const c = change;\n const spliceIndex = maybeSpliceIndex;\n normalizedSpliceIndex =\n spliceIndex >= 0 && spliceIndex < oldData.length ? spliceIndex : oldData.length;\n c[2] = normalizedSpliceIndex;\n oldData.splice(normalizedSpliceIndex, maybeSpliceDel, ...newData);\n }\n else {\n triggerWarning(`An array splice change cannot be applied to a non-array value (on path \"${path.join('.')}\"). The change is ignored.`);\n }\n filteredData = oldData;\n }\n else {\n filteredData = convertValueToType(newData, propName, prop, this._$comp);\n }\n if (!excluded) {\n if (this.innerData) {\n let innerNewData;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n change[1] = innerNewData = filteredData;\n }\n else if (normalizedSpliceIndex !== undefined) {\n innerNewData = this.innerData[propName];\n let inserts;\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 innerNewData.splice(normalizedSpliceIndex, maybeSpliceDel, ...inserts);\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 const be = comp.getBackendElement();\n if (be) {\n let attrValue = filteredData;\n if (prop.reflectIdPrefix) {\n const owner = comp.ownerShadowRoot;\n if (owner) {\n const idPrefix = owner.getHostNode()._$idPrefix;\n if (idPrefix) {\n attrValue = `${idPrefix}--${filteredData}`;\n }\n }\n }\n const attrName = propName.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);\n const 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 let comparerResult;\n if (!isSplice && maybeSpliceIndex === true) {\n if (prop.comparer) {\n change[2] = undefined;\n comparerResult = !!safeCallback('Property Comparer', prop.comparer, comp, [newData, oldData], comp === null || comp === void 0 ? void 0 : comp.general());\n }\n else {\n comparerResult = oldData !== filteredData;\n }\n changed = comparerResult;\n }\n else {\n comparerResult = oldData !== filteredData;\n }\n if (!excluded && comparerResult) {\n propChanges.push({\n propName,\n prop,\n oldValue: oldData,\n newValue: filteredData,\n skipModelListener,\n });\n }\n }\n else {\n // do update for multi-level fields\n let curData = this.data;\n let curSlice = propName;\n for (let i = 1; i < path.length; i += 1) {\n const nextSlice = path[i];\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 let normalizedSpliceIndex;\n if (isSplice) {\n const oldData = curData[curSlice];\n if (Array.isArray(oldData)) {\n const c = change;\n const spliceIndex = maybeSpliceIndex;\n normalizedSpliceIndex =\n spliceIndex >= 0 && spliceIndex < oldData.length ? spliceIndex : oldData.length;\n c[2] = normalizedSpliceIndex;\n oldData.splice(normalizedSpliceIndex, maybeSpliceDel, ...newData);\n }\n else {\n triggerWarning(`An array splice change cannot be applied to a non-array value (on path \"${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 (let i = 1; i < path.length; i += 1) {\n const nextSlice = path[i];\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 let innerNewData;\n if (dataDeepCopy === 0 /* DeepCopyStrategy.None */) {\n change[1] = innerNewData = newData;\n }\n else if (normalizedSpliceIndex !== undefined) {\n innerNewData = curData[curSlice];\n let inserts;\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 innerNewData.splice(normalizedSpliceIndex, maybeSpliceDel, ...inserts);\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,\n 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 let changesCount;\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 (_a = this._$updateListener) === null || _a === void 0 ? void 0 : _a.call(this, this.innerData || this.data, combinedChanges);\n // trigger prop observers (to simulating legacy behaviors)\n if (comp) {\n for (let i = 0; i < propChanges.length; i += 1) {\n const { propName, prop, oldValue, newValue, skipModelListener } = propChanges[i];\n if (!skipModelListener && this._$modelBindingListener) {\n const 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}\n//# sourceMappingURL=data_proxy.js.map","import { addTimelineEvent, performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { FuncArrWithMeta } from './func_arr';\nimport { ENV } from './global_options';\nimport { isComponent, isShadowRoot } from './type_symbol';\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 = {}));\nlet relativeTimeStamp = Date.now();\nlet prevTimeStamp = relativeTimeStamp;\nconst getCurrentTimeStamp = () => {\n const 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 */\nexport class EventTarget {\n constructor() {\n this.listeners = Object.create(null);\n this.captureListeners = null;\n }\n addListener(name, func, options = {}) {\n // eslint-disable-next-line no-nested-ternary\n const mutLevel = options.final ? 2 /* MutLevel.Final */ : options.mutated ? 1 /* MutLevel.Mut */ : 0 /* MutLevel.None */;\n let 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 let efa;\n let 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('listener'),\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 removeListener(name, func, options = {}) {\n const listeners = options.capture || options.useCapture ? this.captureListeners : this.listeners;\n if (!listeners)\n return 1 /* FinalChanged.Failed */;\n const efa = listeners[name];\n if (!efa)\n return 1 /* FinalChanged.Failed */;\n const 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}\nexport class Event {\n constructor(name, detail, options = {}) {\n const ts = getCurrentTimeStamp();\n this._$eventName = 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 this._$handleListenerReturn = options.handleListenerReturn;\n if (options.extraFields) {\n Object.assign(this, options.extraFields);\n }\n }\n getEventBubbleStatus() {\n if (this._$eventBubblingControl.noDefault)\n return 1 /* EventBubbleStatus.NoDefault */;\n return 0 /* EventBubbleStatus.Normal */;\n }\n wrapShadowedEvent(targetCaller, mark, currentTargetCaller) {\n const ret = Object.create(this);\n ret.target = targetCaller;\n ret.mark = mark;\n ret.currentTarget = currentTargetCaller;\n return ret;\n }\n getEventName() {\n return this._$eventName;\n }\n getOriginalEvent() {\n return this._$originalEvent;\n }\n preventDefault() {\n this._$eventBubblingControl.noDefault = true;\n }\n defaultPrevented() {\n return this._$eventBubblingControl.noDefault;\n }\n stopPropagation() {\n this._$eventBubblingControl.stopped = true;\n }\n propagationStopped() {\n return this._$eventBubblingControl.stopped;\n }\n markMutated() {\n this._$eventBubblingControl.mutated = true;\n }\n mutatedMarked() {\n return this._$eventBubblingControl.mutated;\n }\n listenerReturnHandler() {\n return this._$handleListenerReturn;\n }\n callListener(currentTarget, mark, target, isCapture) {\n const evName = this._$eventName;\n const eventTarget = currentTarget._$eventTarget;\n if (!eventTarget)\n return;\n const listeners = isCapture ? eventTarget.captureListeners : eventTarget.listeners;\n if (!listeners)\n return;\n const efa = listeners[evName];\n if (!efa)\n return;\n const skipMut = this.mutatedMarked();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const targetCaller = isComponent(target) ? target.getMethodCaller() || target : target;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const currentTargetCaller = isComponent(currentTarget)\n ? currentTarget.getMethodCaller() || currentTarget\n : currentTarget;\n const ev = this.wrapShadowedEvent(targetCaller, mark, currentTargetCaller);\n const ret = efa.funcArr.call(currentTargetCaller, [ev], (mulLevel) => !skipMut || mulLevel !== 1 /* MutLevel.Mut */, isComponent(target) ? target : undefined, this._$handleListenerReturn);\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 dispatch(target, externalTarget) {\n if (this._$dispatched) {\n throw new Error('Event cannot be dispatched twice');\n }\n if (ENV.DEV) {\n addTimelineEvent(this._$eventName, { event: this });\n performanceMeasureStart('event.dispatch');\n }\n this._$dispatched = true;\n const crossShadow = this.composed;\n const bubbles = this.bubbles;\n const inExternalOnly = externalTarget && !crossShadow;\n const eventBubblingControl = this._$eventBubblingControl;\n const forEachBubblePath = (target, f) => {\n const recShadow = (target) => {\n let currentTarget = target;\n const mark = target.collectMarks();\n for (;;) {\n if (f(currentTarget, target, mark) === false)\n return null;\n let next;\n if (crossShadow) {\n if (isShadowRoot(currentTarget))\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 let cur = target;\n for (;;) {\n const next = recShadow(cur);\n if (!next)\n break;\n cur = next;\n }\n };\n // capture phase\n if (this._$capturePhase && !eventBubblingControl.stopped && !inExternalOnly) {\n const bubblingPath = [];\n forEachBubblePath(target, (currentTarget, target, mark) => {\n bubblingPath.push([currentTarget, target, mark]);\n });\n for (let i = bubblingPath.length - 1; i >= 0; i -= 1) {\n const [currentTarget, target, mark] = bubblingPath[i];\n if (currentTarget._$eventTarget) {\n this.callListener(currentTarget, mark, target, true);\n if (eventBubblingControl.stopped)\n break;\n }\n }\n }\n // bubble phase in external component\n if (!eventBubblingControl.stopped && externalTarget) {\n if (isComponent(target) && target._$external) {\n ;\n target.shadowRoot.handleEvent(externalTarget, this);\n }\n }\n // bubble phase\n if (!eventBubblingControl.stopped && !inExternalOnly) {\n let atTarget = true;\n forEachBubblePath(target, (currentTarget, target, mark) => {\n if (!atTarget && isComponent(currentTarget) && currentTarget._$external) {\n const sr = currentTarget.shadowRoot;\n sr.handleEvent(sr.slot, this);\n }\n atTarget = false;\n if (currentTarget._$eventTarget) {\n this.callListener(currentTarget, mark, target, false);\n }\n return bubbles && !eventBubblingControl.stopped;\n });\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n static dispatchEvent(target, event) {\n return event.dispatch(target);\n }\n static dispatchExternalEvent(component, target, event) {\n return event.dispatch(component, target);\n }\n static triggerEvent(target, name, detail, options) {\n const ev = new Event(name, detail, options);\n Event.dispatchEvent(target, ev);\n }\n static triggerExternalEvent(component, target, name, detail, options) {\n const ev = new Event(name, detail, options);\n Event.dispatchExternalEvent(component, target, ev);\n }\n}\n//# sourceMappingURL=event.js.map","import { isComponent, isElement, isShadowRoot, isVirtualNode } from './type_symbol';\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\nconst getOwnerSpace = (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 */\nexport class ParsedSelector {\n static _$parseSegment(str, relation) {\n const matches = /^(#[_a-zA-Z][-_a-zA-Z0-9:]*|)((?:\\.-?[_a-zA-Z][-_a-zA-Z0-9]*)+|)$/.exec(str);\n if (!matches)\n return null;\n const id = matches[1].slice(1);\n const classes = matches[2].split('.');\n classes.shift();\n if (!id && !classes.length)\n return null;\n return {\n id,\n classes,\n relation,\n };\n }\n constructor(str) {\n this.unions = [];\n const union = String(str || '').split(',');\n for (let i = 0; i < union.length; i += 1) {\n const segments = union[i].split(/( |\\t|>+)/g);\n const parsedSegs = [];\n let relation = 1 /* SegmentRelation.Descendant */;\n let j = 0;\n for (; j < segments.length; j += 1) {\n const 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 const 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 /** Whether the selector is empty */\n isEmpty() {\n return this.unions.length === 0;\n }\n static _$testSelectorSegment(root, ownerSpace, node, segments, offset, relation) {\n var _a;\n if (node === root)\n return false;\n const segment = segments[offset];\n // test whether current node matches\n let match = true;\n if (getOwnerSpace(node) !== ownerSpace)\n match = false;\n else if (segment.id && segment.id !== node.id)\n match = false;\n const classes = segment.classes;\n for (let 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 let 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 const nextRelation = match ? segment.relation : relation;\n do {\n if (!nextNode.parentNode) {\n if (nextRelation === 2 /* SegmentRelation.CrossShadowDescendant */) {\n nextNode = isShadowRoot(nextNode) ? nextNode.getHostNode() : null;\n }\n else if (relation === 2 /* SegmentRelation.CrossShadowDescendant */) {\n match = false;\n nextNode = isShadowRoot(nextNode) ? 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 (isVirtualNode(nextNode));\n if (!nextNode)\n return false;\n if (match) {\n // if matches, try match ancestors\n const 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 testSelector(root, node) {\n if (isVirtualNode(node))\n return false;\n const union = this.unions;\n let 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 (let i = 0; i < union.length; i += 1) {\n const segments = union[i];\n const 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 query(root, findOne) {\n const ret = [];\n const rec = (root, node, findOne) => {\n if (this.testSelector(root, node)) {\n if (findOne)\n return node;\n ret.push(node);\n }\n if (isComponent(node)) {\n const shadowRoot = node.getShadowRoot();\n if (shadowRoot) {\n const r = rec(root, shadowRoot, findOne);\n if (r && findOne) {\n return r;\n }\n }\n }\n const children = node.childNodes;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (isElement(child)) {\n const r = rec(root, child, findOne);\n if (r && findOne) {\n return r;\n }\n }\n }\n return null;\n };\n const r = rec(root, root, findOne);\n if (findOne)\n return r;\n return ret;\n }\n}\n//# sourceMappingURL=selector.js.map","import { BM, } from './backend';\nimport { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { Event, EventTarget, } from './event';\nimport { ENV, globalOptions } from './global_options';\nimport { MutationObserverTarget } from './mutation_observer';\nimport { ParsedSelector } from './selector';\nimport { ELEMENT_SYMBOL, isComponent, isElement, isNativeNode, isShadowRoot, isVirtualNode, } from './type_symbol';\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 = {}));\nconst DESTROYED_SHADOW_BACKEND_CONTEXT = { mode: 1 /* BackendMode.Shadow */, destroyed: true };\nconst DESTROYED_COMPOSED_BACKEND_CONTEXT = { mode: 2 /* BackendMode.Composed */, destroyed: true };\nconst DESTROYED_DOMLIKE_BACKEND_CONTEXT = { mode: 3 /* BackendMode.Domlike */, destroyed: true };\n/**\n * A general element\n *\n * An element can be a `NativeNode` , a `Component` , or a `VirtualNode` .\n */\nexport class Element {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n }\n /* @internal */\n _$initialize(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._$placeholderHandlerRemover = 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 get $$() {\n return this._$backendElement;\n }\n get id() {\n return this._$nodeId;\n }\n set id(x) {\n var _a;\n const newId = String(x);\n if (this._$nodeId === newId)\n return;\n this._$nodeId = newId;\n if (this.ownerShadowRoot) {\n const host = this.ownerShadowRoot.getHostNode();\n this.ownerShadowRoot._$markIdCacheDirty();\n if (host.getComponentOptions().writeIdToDOM) {\n const idPrefix = host._$idPrefix;\n const val = idPrefix ? `${idPrefix}--${newId}` : newId;\n const be = this._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setId');\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n be.id = val;\n }\n else {\n ;\n be.setId(val);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n if (globalOptions.writeExtraInfoToAttr) {\n (_a = this._$backendElement) === null || _a === void 0 ? void 0 : _a.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 get slot() {\n return this._$nodeSlot;\n }\n set slot(x) {\n const newSlot = String(x);\n const oldSlot = this._$nodeSlot;\n if (oldSlot === newSlot)\n return;\n /* istanbul ignore if */\n if (this._$inheritSlots) {\n throw new Error('slots-inherited nodes do not support \"slot\" attribute.');\n }\n this._$nodeSlot = newSlot;\n const slotParentShadowRoot = Element._$getParentHostShadowRoot(this.parentNode);\n if (slotParentShadowRoot) {\n const slotMode = slotParentShadowRoot.getSlotMode();\n /* istanbul ignore if */\n if (slotMode === 3 /* SlotMode.Dynamic */) {\n throw new Error('nodes inside dynamic slots should change binding slots through Element#setSlotElement.');\n }\n /* istanbul ignore if */\n if (slotMode === 0 /* SlotMode.Direct */) {\n throw new Error('nodes inside direct slots should not change slot name.');\n }\n const slotUpdater = Element._$updateSubtreeSlotNodes(this.parentNode, [this], slotParentShadowRoot, slotParentShadowRoot, this.parentIndex);\n slotUpdater === null || slotUpdater === void 0 ? void 0 : slotUpdater.removeSlotNodes();\n const oldSlot = this.containingSlot;\n slotUpdater === null || slotUpdater === void 0 ? void 0 : slotUpdater.updateContainingSlot();\n const newSlot = this.containingSlot;\n Element.insertChildReassign(this.parentNode, this, oldSlot, newSlot, 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 get attributes() {\n const ret = [];\n if (this._$nodeAttributes) {\n Object.entries(this._$nodeAttributes).forEach(([name, value]) => {\n ret.push({\n name,\n value,\n });\n });\n }\n return ret;\n }\n get class() {\n if (this.classList) {\n return this.classList.getClassNames(0 /* StyleSegmentIndex.MAIN */);\n }\n return '';\n }\n set class(classNames) {\n this.setNodeClass(classNames, 0 /* StyleSegmentIndex.MAIN */);\n }\n get style() {\n return this._$styleSegments[0 /* StyleSegmentIndex.MAIN */] || '';\n }\n set style(styleText) {\n this.setNodeStyle(styleText, 0 /* StyleSegmentIndex.MAIN */);\n }\n // eslint-disable-next-line class-methods-use-this\n asTextNode() {\n return null;\n }\n asElement() {\n return this;\n }\n asNativeNode() {\n if (isNativeNode(this)) {\n return this;\n }\n return null;\n }\n asVirtualNode() {\n if (isVirtualNode(this)) {\n return this;\n }\n return null;\n }\n asInstanceOf(componentDefinition) {\n if (isComponent(this)) {\n return this.asInstanceOf(componentDefinition);\n }\n return null;\n }\n /** Get the backend context */\n getBackendContext() {\n const context = this._$nodeTreeContext;\n if (BM.SHADOW) {\n if (context === DESTROYED_SHADOW_BACKEND_CONTEXT)\n return null;\n }\n else if (BM.COMPOSED) {\n if (context === DESTROYED_COMPOSED_BACKEND_CONTEXT)\n return null;\n }\n else if (BM.DOMLIKE) {\n if (context === DESTROYED_DOMLIKE_BACKEND_CONTEXT)\n return null;\n }\n else {\n if (context === DESTROYED_SHADOW_BACKEND_CONTEXT)\n return null;\n if (context === DESTROYED_COMPOSED_BACKEND_CONTEXT)\n return null;\n if (context === DESTROYED_DOMLIKE_BACKEND_CONTEXT)\n return null;\n }\n return context;\n }\n /** Get the backend mode */\n getBackendMode() {\n return this._$nodeTreeContext.mode;\n }\n /** Get the backend element */\n getBackendElement() {\n return this._$backendElement;\n }\n /** Destroy the backend element */\n destroyBackendElement() {\n if (this._$backendElement) {\n if (!(BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n if (ENV.DEV)\n performanceMeasureStart('backend.release');\n this._$backendElement.release();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n this._$backendElement = null;\n }\n if (BM.COMPOSED || (BM.DYNAMIC && this.getBackendMode() === 2 /* BackendMode.Composed */)) {\n this._$nodeTreeContext = DESTROYED_COMPOSED_BACKEND_CONTEXT;\n }\n else if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n this._$nodeTreeContext = DESTROYED_DOMLIKE_BACKEND_CONTEXT;\n }\n else {\n this._$nodeTreeContext = DESTROYED_SHADOW_BACKEND_CONTEXT;\n }\n }\n /** Destroy the backend element on next detach */\n destroyBackendElementOnDetach() {\n this._$destroyOnDetach = true;\n }\n /** Cancel destroying backend element on detach */\n cancelDestroyBackendElementOnDetach() {\n this._$destroyOnDetach = false;\n }\n /** Get whether the node is virtual or not */\n isVirtual() {\n return this._$virtual;\n }\n /** Set the node class */\n setNodeClass(classNames, index = 0 /* StyleSegmentIndex.MAIN */) {\n var _a;\n if (ENV.DEV)\n performanceMeasureStart('backend.setClass');\n const changed = (_a = this.classList) === null || _a === void 0 ? void 0 : _a.setClassNames(classNames, index);\n if (ENV.DEV)\n performanceMeasureEnd();\n if (changed && this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'class',\n });\n }\n }\n /** Toggle the node class */\n toggleNodeClass(classNames, force, index = 0 /* StyleSegmentIndex.MAIN */) {\n var _a;\n if (ENV.DEV)\n performanceMeasureStart('backend.setClass');\n const changed = (_a = this.classList) === null || _a === void 0 ? void 0 : _a.toggle(classNames, force, index);\n if (ENV.DEV)\n performanceMeasureEnd();\n if (changed && this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'class',\n });\n }\n }\n /** Set the node style */\n setNodeStyle(styleSegment, index = 0) {\n if (this._$styleSegments[index] === styleSegment)\n return;\n this._$styleSegments[index] = styleSegment;\n const style = this._$styleSegments.join(';');\n if (ENV.DEV)\n performanceMeasureStart('backend.setStyle');\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 (ENV.DEV)\n performanceMeasureEnd();\n if (this._$mutationObserverTarget) {\n MutationObserverTarget.callAttrObservers(this, {\n type: 'properties',\n target: this,\n attributeName: 'style',\n });\n }\n }\n static checkAndCallAttached(node) {\n const callFunc = function callFunc(node) {\n if (isElement(node) && !node._$attached) {\n node._$attached = true;\n if (isComponent(node)) {\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 const shadowRoot = node.getShadowRoot();\n if (shadowRoot)\n callFunc(shadowRoot);\n }\n const childNodes = node.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n callFunc(childNodes[i]);\n }\n }\n };\n callFunc(node);\n }\n static checkAndCallDetached(node) {\n const destroyQueue = [];\n const callFunc = function callFunc(node) {\n if (node._$destroyOnDetach) {\n // Destroy later to avoid missing backend elements\n destroyQueue.push(node);\n }\n if (isElement(node) && node._$attached) {\n if (isComponent(node)) {\n node.triggerLifetime('beforeDetach', []);\n }\n node.childNodes.forEach(callFunc);\n if (isComponent(node)) {\n const f = node._$placeholderHandlerRemover;\n if (f)\n f();\n const 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 for (let i = 0; i < destroyQueue.length; i += 1) {\n destroyQueue[i].destroyBackendElement();\n }\n }\n static checkAndCallMoved(node) {\n const callFunc = function callFunc(node) {\n if (isElement(node) && node._$attached) {\n node.childNodes.forEach(callFunc);\n if (isComponent(node)) {\n const 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 static checkChildObservers(node, type, child) {\n var _a;\n const observer = node._$mutationObserverTarget;\n if (observer && (!((_a = observer.childObservers) === null || _a === void 0 ? void 0 : _a.empty) || observer.hasSubtreeListeners())) {\n const childList = [child];\n let childEventObj;\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 static hasSubtreeMutationObservers(node) {\n var _a;\n return ((_a = node._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.hasSubtreeListeners()) || false;\n }\n /** @internal */\n static _$insertChildReassignSlot(shadowRoot, name, oldSlot, newSlot) {\n if (!oldSlot) {\n const slotNodes = [];\n shadowRoot.forEachNodeInSpecifiedSlot(null, (node) => {\n if (name !== null) {\n const slotName = isElement(node) ? node._$nodeSlot : '';\n if (slotName !== name) {\n return;\n }\n }\n slotNodes.push(node);\n });\n for (let i = 0; i < slotNodes.length; i += 1) {\n const node = slotNodes[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 const slotNodes = [...oldSlot.slotNodes];\n for (let i = 0; i < slotNodes.length; i += 1) {\n const 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 const slotNodes = [...oldSlot.slotNodes];\n for (let i = 0; i < slotNodes.length; i += 1) {\n const 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 static insertChildReassign(shadowParent, child, oldSlot, newSlot, ideaPosIndex) {\n if (BM.SHADOW || (BM.DYNAMIC && shadowParent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.reassignContainingSlot');\n child._$backendElement.reassignContainingSlot(oldSlot ? oldSlot._$backendElement : null, newSlot ? newSlot._$backendElement : null);\n if (ENV.DEV)\n performanceMeasureEnd();\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 const backendParent = Element.findNearestNonVirtual(oldSlot);\n if (backendParent) {\n const d = Element.countNonVirtual(child);\n if (d) {\n const [before, removeCount] = d;\n if (BM.DOMLIKE ||\n (BM.DYNAMIC && shadowParent.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const rel = before._$backendElement;\n for (let i = 1; i < removeCount; i += 1) {\n const next = rel.nextSibling;\n if (next) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(next);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n if (removeCount > 0) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(rel);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemove');\n backendParent.spliceRemove(before._$backendElement, removeCount);\n if (ENV.DEV)\n performanceMeasureEnd();\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 static findNearestNonVirtual(p) {\n let cur = p;\n for (; cur === null || cur === void 0 ? void 0 : cur._$virtual;) {\n if (isShadowRoot(cur)) {\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 static countNonVirtual(target) {\n let firstNode = null;\n let removeCount = 0;\n const recNonVirtual = (c) => {\n if (removeCount === 0)\n firstNode = c;\n removeCount += 1;\n };\n const rec = (c) => {\n if (isElement(c) && 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 static forEachNodeInSlot(node, f) {\n const rec = (child) => {\n if (f(child, child.containingSlot) === false)\n return false;\n if (child._$inheritSlots) {\n const childNodes = child.childNodes;\n for (let 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 static forEachNodeInSpecificSlot(node, slot, f) {\n const rec = (child) => {\n if (child.containingSlot === slot) {\n if (f(child) === false)\n return false;\n }\n if (child._$inheritSlots) {\n const childNodes = child.childNodes;\n for (let 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 static forEachSlotContentInSlot(node, f) {\n const rec = (child) => {\n if (child._$inheritSlots) {\n const childNodes = child.childNodes;\n for (let 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 static forEachSlotContentInSpecificSlot(node, slot, f) {\n const rec = (child) => {\n if (child._$inheritSlots) {\n const childNodes = child.childNodes;\n for (let 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 static _$findFirstNonVirtualChild(parent, index) {\n const inSlot = parent._$slotName !== null;\n const children = inSlot ? parent.slotNodes : parent.childNodes;\n if (index >= 0 && index < children.length) {\n for (let i = index; i < children.length; i += 1) {\n let ret = null;\n const recNonVirtual = (c) => {\n ret = c;\n return false;\n };\n const rec = (c) => {\n if (!inSlot && c._$inheritSlots) {\n const childNodes = c.childNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n if (rec(childNodes[i]) === 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 ret;\n }\n }\n const recvParent = (parent) => {\n if (!parent._$virtual)\n return null;\n const containingSlot = parent.containingSlot;\n if (containingSlot === null)\n return null;\n if (containingSlot !== undefined) {\n return Element._$findFirstNonVirtualChild(containingSlot, parent.slotIndex + 1);\n }\n if (isShadowRoot(parent)) {\n return recvParent(parent.getHostNode());\n }\n const p = parent.parentNode;\n if (p) {\n return Element._$findFirstNonVirtualChild(p, parent.parentIndex + 1);\n }\n return null;\n };\n return recvParent(parent);\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 static _$findFirstNonVirtualSibling(element, newPosIndex) {\n const 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 const insertPos = Element._$findSlotNodeInsertPosition(containingSlot, element, newPosIndex);\n return Element._$findFirstNonVirtualChild(containingSlot, insertPos);\n }\n let cur = element;\n if (isShadowRoot(element)) {\n cur = element.getHostNode();\n if (!cur._$virtual)\n return null;\n return Element._$findFirstNonVirtualChild(cur, cur.parentIndex + 1);\n }\n const p = cur.parentNode;\n if (p) {\n return Element._$findFirstNonVirtualChild(p, newPosIndex);\n }\n return null;\n }\n static insertChildComposed(shadowParent, newChild, relChild, removal, newPosIndex) {\n var _a, _b, _c;\n let parentConverted = false;\n let 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 const slotParent = cur;\n const context = slotParent._$nodeTreeContext;\n if (!context)\n return;\n // detect whether it is in single-slot mode\n let sharedNonVirtualParent;\n if (isComponent(slotParent)) {\n if (slotParent._$external) {\n sharedNonVirtualParent = slotParent.shadowRoot\n .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 let sharedFrag = null;\n const groupUpdate = (sharedBackendParent, slot) => {\n const 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 let removeCount = 0;\n let before = null;\n // get the new child nodes of the backend\n let frag = null;\n let firstSlotNode = null;\n if (newChild) {\n const f = sharedFrag ||\n (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)\n ? context.document.createDocumentFragment()\n : context.createFragment());\n sharedFrag = f;\n const recNonVirtual = (c) => {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n f.appendChild(c._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n frag = f;\n };\n Element.forEachNodeInSpecificSlot(newChild, slot, (node) => {\n if (!firstSlotNode)\n firstSlotNode = node;\n if (!node._$virtual) {\n recNonVirtual(node);\n return;\n }\n node.forEachNonVirtualComposedChild(recNonVirtual);\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, (c) => {\n if (isElement(c)) {\n const 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 const rel = before._$backendElement;\n if (ENV.DEV)\n performanceMeasureStart('backend.insertBefore');\n backendParent.insertBefore(frag, rel);\n if (ENV.DEV)\n performanceMeasureEnd();\n for (let i = 1; i < removeCount; i += 1) {\n const next = rel.nextSibling;\n if (next) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(next);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n if (removeCount > 0) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(rel);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceBefore');\n backendParent.spliceBefore(before._$backendElement, removeCount, frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n backendParent.appendChild(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceAppend');\n backendParent.spliceAppend(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n else if (removeCount > 0) {\n if (BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */)) {\n const rel = before._$backendElement;\n for (let i = 1; i < removeCount; i += 1) {\n const next = rel.nextSibling;\n if (next) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(next);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n if (removeCount > 0) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n backendParent.removeChild(rel);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemove');\n backendParent.spliceRemove(before._$backendElement, removeCount);\n if (ENV.DEV)\n performanceMeasureEnd();\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 (!isElement(newChild) || !newChild._$virtual) &&\n (!isElement(relChild) || !relChild._$virtual)) {\n // for non-virtual children, use single child operation\n if (removal) {\n if (newChild) {\n if (ENV.DEV)\n performanceMeasureStart('backend.replaceChild');\n sharedNonVirtualParent.replaceChild(newChild._$backendElement, relChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n sharedNonVirtualParent.removeChild(relChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else if (relChild) {\n if (ENV.DEV)\n performanceMeasureStart('backend.insertBefore');\n sharedNonVirtualParent.insertBefore(newChild._$backendElement, relChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n sharedNonVirtualParent.appendChild(newChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\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 const slotNodesSet = new Set();\n if (removal && relChild) {\n Element.forEachSlotContentInSlot(relChild, (node, slot) => {\n slotNodesSet.add(slot);\n });\n }\n if (newChild) {\n Element.forEachSlotContentInSlot(newChild, (node, slot) => {\n slotNodesSet.add(slot);\n });\n }\n slotNodesSet.forEach((slot) => groupUpdate(null, slot));\n }\n if (!(BM.DOMLIKE || (BM.DYNAMIC && context.mode === 3 /* BackendMode.Domlike */))) {\n if (sharedFrag) {\n if (ENV.DEV)\n performanceMeasureStart('backend.release');\n sharedFrag.release();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n // write extra info if needed\n if (globalOptions.writeExtraInfoToAttr) {\n if (removal && isElement(relChild)) {\n (_a = relChild._$backendElement) === null || _a === void 0 ? void 0 : _a.removeAttribute('exparser:info-in-slot-of');\n }\n if (isElement(newChild)) {\n if (isComponent(shadowParent)) {\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 static _$updateSubtreeSlotsInsertion(node, slotStart, slotEnd, posIndex, move) {\n if (!slotStart || !slotEnd)\n return;\n let parent = node;\n // find a correct position to insert slot into double-linked slot list\n let insertSlotPrev = null;\n let insertSlotNext = null;\n const findFirstSlot = (parent, posIndex) => {\n if (parent._$subtreeSlotStart) {\n const childNodes = parent.childNodes;\n let index = posIndex + 1;\n let 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 let cur = parent;\n let 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 let 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 const 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 static _$updateSubtreeSlotsRemoval(node, slotStart, slotEnd, move) {\n if (!slotStart || !slotEnd)\n return;\n let parent = node;\n const removeSlotBefore = slotStart.prev;\n const 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 let 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 const 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 static _$updateSubtreeSlotsReplacement(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 let parent = node;\n const removeSlotBefore = oldSlotStart.prev;\n const 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 let 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 const 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 /** @internal */\n static _$updateSubtreeSlotNodes(parentNode, elements, shadowRoot, oldShadowRoot, posIndex) {\n if (!shadowRoot && !oldShadowRoot)\n return undefined;\n const slotMode = shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.getSlotMode();\n const 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 let removeStart = -1;\n let removeCount = 0;\n let insertPos = -1;\n const slotNodesToUpdate = [];\n const oldContainingSlot = elements[0].containingSlot;\n const containingSlot = shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.getContainingSlot(elements[0]);\n for (let i = 0; i < elements.length; i += 1) {\n const elem = elements[i];\n // eslint-disable-next-line no-loop-func\n Element.forEachNodeInSlot(elem, (node) => {\n if (oldContainingSlot) {\n if (removeCount) {\n removeCount += 1;\n }\n else {\n removeStart = node.slotIndex;\n removeCount = 1;\n }\n }\n slotNodesToUpdate.push(node);\n });\n }\n if (containingSlot && slotNodesToUpdate.length) {\n const firstSlotNode = slotNodesToUpdate[0];\n insertPos = Element._$findSlotNodeInsertPosition(containingSlot, firstSlotNode, posIndex);\n }\n return {\n updateContainingSlot: () => {\n for (let i = slotNodesToUpdate.length - 1; i >= 0; i -= 1) {\n const node = slotNodesToUpdate[i];\n Element._$updateContainingSlot(node, containingSlot);\n }\n },\n removeSlotNodes: () => {\n if (oldShadowRoot && oldContainingSlot && removeCount) {\n Element._$spliceSlotNodes(oldContainingSlot, removeStart, removeCount, undefined);\n }\n },\n insertSlotNodes: () => {\n if (shadowRoot && containingSlot && slotNodesToUpdate.length) {\n Element._$spliceSlotNodes(containingSlot, insertPos, 0, slotNodesToUpdate);\n }\n },\n };\n }\n const slotNodesToInsertMap = new Map();\n const slotNodesToRemoveMap = new Map();\n const slotNodesWithContainingSlot = [];\n for (let i = 0; i < elements.length; i += 1) {\n const elem = elements[i];\n Element.forEachNodeInSlot(elem, (node, oldContainingSlot) => {\n const containingSlot = slotMode !== 0 /* SlotMode.Direct */ ? shadowRoot === null || shadowRoot === void 0 ? void 0 : shadowRoot.getContainingSlot(node) : undefined;\n if (oldContainingSlot) {\n const 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 const 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 const iter = slotNodesToInsertMap.entries();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const [slot, { nodes: slotNodesToInsert }] = it.value;\n const firstSlotNodeToInsert = slotNodesToInsert[0];\n it.value[1].insertPos = Element._$findSlotNodeInsertPosition(slot, firstSlotNodeToInsert, posIndex);\n }\n }\n return {\n updateContainingSlot: () => {\n for (let i = slotNodesWithContainingSlot.length - 1; i >= 0; i -= 1) {\n const [node, containingSlot] = slotNodesWithContainingSlot[i];\n Element._$updateContainingSlot(node, containingSlot);\n }\n },\n removeSlotNodes: () => {\n if (oldShadowRoot && slotNodesToRemoveMap.size) {\n const iter = slotNodesToRemoveMap.entries();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const [slot, { start, count }] = it.value;\n Element._$spliceSlotNodes(slot, start, count, undefined);\n }\n }\n },\n insertSlotNodes: () => {\n if (shadowRoot && slotNodesToInsertMap.size) {\n const iter = slotNodesToInsertMap.entries();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const [slot, { nodes: slotNodesToInsert, insertPos }] = it.value;\n Element._$spliceSlotNodes(slot, insertPos, 0, slotNodesToInsert);\n }\n }\n },\n };\n }\n static insertChildSingleOperation(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 let posIndex = oriPosIndex;\n const relChild = posIndex >= 0 ? parent.childNodes[posIndex] : undefined;\n let 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 let oldParent;\n if (newChild) {\n oldParent = newChild.parentNode;\n if (oldParent) {\n const childNodes = oldParent.childNodes;\n const oldPosIndex = newChild.parentIndex;\n childNodes.splice(oldPosIndex, 1);\n for (let i = oldPosIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n newChild.parentIndex = -1;\n if (oldParent === parent && oldPosIndex < posIndex)\n posIndex -= 1;\n const containingSlotUpdater = Element._$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 if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n (_a = oldParent._$backendElement) === null || _a === void 0 ? void 0 : _a.removeChild(newChild._$backendElement, oldPosIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\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 (isElement(newChild) && 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 const parentComponentShadowRoot = Element._$getParentHostShadowRoot(parent);\n const newChildContainingSlotUpdater = newChild\n ? Element._$updateSubtreeSlotNodes(parent, [newChild], parentComponentShadowRoot, null, posIndex)\n : null;\n const relChildContainingSlotUpdater = relChild && removal\n ? Element._$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 if (ENV.DEV)\n performanceMeasureStart('backend.replaceChild');\n parent._$backendElement.replaceChild(newChild._$backendElement, relChild._$backendElement, posIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeChild');\n parent._$backendElement.removeChild(relChild._$backendElement, posIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n // relChild could equal to newChild and have been removed above\n const before = parent.childNodes[posIndex];\n if (before) {\n if (ENV.DEV)\n performanceMeasureStart('backend.insertBefore');\n parent._$backendElement.insertBefore(newChild._$backendElement, before._$backendElement, posIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n parent._$backendElement.appendChild(newChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\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 (isElement(relChild)) {\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 const 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 (let 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 (let i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n // update subtree slots\n const newChildSubtreeSlotStart = newChild ? newChild._$subtreeSlotStart : null;\n const newChildSubtreeSlotEnd = newChild ? newChild._$subtreeSlotEnd : null;\n const relChildSubtreeSlotStart = relChild ? relChild._$subtreeSlotStart : null;\n const 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 static insertChildBatchRemoval(parent, posIndex, count) {\n var _a, _b;\n const relChild = parent.childNodes[posIndex];\n let parentComponent = parent;\n while (parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent._$inheritSlots)\n parentComponent = parentComponent.parentNode;\n const parentComponentShadowRoot = isComponent(parentComponent) && !parentComponent._$external\n ? parentComponent.shadowRoot\n : null;\n // handling child nodes list\n const childNodes = parent.childNodes;\n const relChildren = childNodes.splice(posIndex, count);\n for (let i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n const containingSlotUpdater = Element._$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 if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemove');\n parent._$backendElement.spliceRemove(relChild._$backendElement, count);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n for (let i = count - 1; i >= 0; i -= 1) {\n Element.insertChildComposed(parent, null, relChildren[i], true, i);\n }\n }\n // remove parent\n for (let i = 0; i < count; i += 1) {\n const relChild = relChildren[i];\n relChild.parentNode = null;\n relChild.parentIndex = -1;\n if (isElement(relChild)) {\n (_a = parent._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.detachChild(relChild);\n }\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n // update subtree slot\n let subtreeSlotStart = null;\n let subtreeSlotEnd = null;\n for (let i = 0; i < count; i += 1) {\n const relChild = relChildren[i];\n if (!subtreeSlotStart)\n subtreeSlotStart = relChild._$subtreeSlotStart;\n if (relChild._$subtreeSlotEnd)\n subtreeSlotEnd = relChild._$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 (let i = 0; i < count; i += 1) {\n const relChild = relChildren[i];\n Element.checkAndCallDetached(relChild);\n Element.checkChildObservers(parent, 'remove', relChild);\n }\n }\n static insertChildBatchInsertion(parent, newChildList, posIndex) {\n var _a, _b;\n const relChild = posIndex >= 0 ? parent.childNodes[posIndex] : undefined;\n // update containingSlot\n let parentComponent = parent;\n while (parentComponent === null || parentComponent === void 0 ? void 0 : parentComponent._$inheritSlots)\n parentComponent = parentComponent.parentNode;\n const parentComponentShadowRoot = isComponent(parentComponent) && !parentComponent._$external\n ? parentComponent.shadowRoot\n : null;\n // change the parent of newChild\n let frag;\n if ((BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) &&\n newChildList.length >= 5) {\n const backendContext = parent.getBackendContext();\n frag = backendContext.createFragment();\n }\n else {\n frag = null;\n }\n for (let i = 0; i < newChildList.length; i += 1) {\n const 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 const 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 (isElement(newChild)) {\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 const be = newChild._$backendElement;\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n frag.appendChild(be);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n // update containingSlot\n const containingSlotUpdater = Element._$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 if (ENV.DEV)\n performanceMeasureStart('backend.spliceBefore');\n parent._$backendElement.spliceBefore(relChild._$backendElement, 0, frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceAppend');\n parent._$backendElement.spliceAppend(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n frag.release();\n }\n else {\n if (relChild) {\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n if (ENV.DEV)\n performanceMeasureStart('backend.insertBefore');\n parent._$backendElement.insertBefore(newChild._$backendElement, relChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else {\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n parent._$backendElement.appendChild(newChild._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n }\n }\n else {\n const pos = posIndex >= 0 ? posIndex : parent.childNodes.length;\n for (let i = 0; i < newChildList.length; i += 1) {\n const 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 const childNodes = parent.childNodes;\n if (relChild) {\n childNodes.splice(posIndex, 0, ...newChildList);\n for (let i = posIndex; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n else {\n childNodes.push(...newChildList);\n for (let i = childNodes.length - newChildList.length; i < childNodes.length; i += 1) {\n childNodes[i].parentIndex = i;\n }\n }\n // update subtree slot\n let subtreeSlotStart = null;\n let subtreeSlotEnd = null;\n for (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n const newChildSubtreeSlotStart = newChild._$subtreeSlotStart;\n const 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 (let i = 0; i < newChildList.length; i += 1) {\n const newChild = newChildList[i];\n if (parent._$attached) {\n Element.checkAndCallAttached(newChild);\n }\n Element.checkChildObservers(parent, 'add', newChild);\n }\n }\n static insertChildPlaceholderReplace(parent, posIndex, replacer) {\n var _a, _b, _c, _d, _e, _f;\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 const placeholder = parent.childNodes[posIndex];\n /* istanbul ignore if */\n if (!isElement(placeholder)) {\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 let frag;\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const backendContext = parent.getBackendContext();\n if (ENV.DEV)\n performanceMeasureStart('backend.createFragment');\n frag = backendContext.createFragment();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n frag = null;\n }\n const replacedChildren = placeholder.childNodes;\n if (BM.SHADOW || (BM.DYNAMIC && parent.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (replacedChildren.length > 0) {\n const be = placeholder._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemove');\n be.spliceRemove(replacedChildren[0]._$backendElement, replacedChildren.length);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n for (let i = 0; i < replacedChildren.length; i += 1) {\n const 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 const be = child._$backendElement;\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n frag.appendChild(be);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n Element.insertChildComposed(placeholder, null, child, true, i);\n }\n child.parentNode = replacer;\n if (isElement(child)) {\n (_a = placeholder._$mutationObserverTarget) === null || _a === void 0 ? void 0 : _a.detachChild(child);\n (_b = parent._$mutationObserverTarget) === null || _b === void 0 ? void 0 : _b.attachChild(child);\n }\n }\n // handling child nodes list for placeholder\n placeholder.childNodes = [];\n // change the parent\n placeholder.parentNode = null;\n placeholder.parentIndex = -1;\n replacer.parentNode = parent;\n // update containingSlot\n const placeholderContainingSlot = placeholder.containingSlot;\n const placeholderSlotIndex = placeholder.slotIndex;\n if (placeholderContainingSlot !== undefined) {\n Element._$updateContainingSlot(replacer, placeholderContainingSlot);\n if (placeholderContainingSlot) {\n Element._$spliceSlotNodes(placeholderContainingSlot, placeholderSlotIndex, 1, undefined);\n }\n }\n const containingSlotUpdater = replacedChildren.length\n ? Element._$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 if (ENV.DEV)\n performanceMeasureStart('backend.replaceChild');\n parent._$backendElement.replaceChild(replacer._$backendElement, placeholder._$backendElement, posIndex);\n if (ENV.DEV)\n performanceMeasureEnd();\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceAppend');\n (_c = replacer._$backendElement) === null || _c === void 0 ? void 0 : _c.spliceAppend(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n if (ENV.DEV)\n performanceMeasureStart('backend.release');\n frag.release();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n Element.insertChildComposed(parent, replacer, placeholder, true, posIndex);\n for (let i = 0; i < replacedChildren.length; i += 1) {\n const child = replacedChildren[i];\n Element.insertChildComposed(replacer, child, undefined, false, i);\n }\n }\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.insertSlotNodes();\n if (placeholderContainingSlot !== undefined) {\n Element._$updateContainingSlot(placeholder, undefined);\n if (placeholderContainingSlot) {\n Element._$spliceSlotNodes(placeholderContainingSlot, placeholderSlotIndex, 0, [replacer]);\n }\n }\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 (_d = parent._$mutationObserverTarget) === null || _d === void 0 ? void 0 : _d.detachChild(placeholder);\n (_e = parent._$mutationObserverTarget) === null || _e === void 0 ? void 0 : _e.attachChild(replacer);\n // handling child nodes list for replacer\n replacer.childNodes.push(...replacedChildren);\n for (let i = replacer.childNodes.length - replacedChildren.length; i < replacer.childNodes.length; i += 1) {\n replacer.childNodes[i].parentIndex = i;\n }\n // update id and slot cache if needed\n (_f = parent.ownerShadowRoot) === null || _f === void 0 ? void 0 : _f._$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 (let i = 0; i < replacedChildren.length; i += 1) {\n const child = replacedChildren[i];\n Element.checkAndCallMoved(child);\n Element.checkChildObservers(parent, 'move', child);\n }\n }\n }\n appendChild(child) {\n Element.insertChildSingleOperation(this, child, this.childNodes.length, false);\n }\n insertChildAt(child, index) {\n Element.insertChildSingleOperation(this, child, index, false);\n }\n insertBefore(child, before) {\n const index = before ? before.parentIndex : -1;\n Element.insertChildSingleOperation(this, child, index, false);\n }\n removeChildAt(index) {\n Element.insertChildSingleOperation(this, null, index, true);\n }\n removeChild(child) {\n const index = child.parentIndex;\n Element.insertChildSingleOperation(this, null, index, true);\n }\n replaceChildAt(child, index) {\n Element.insertChildSingleOperation(this, child, index, true);\n }\n replaceChild(child, relChild) {\n const index = relChild.parentIndex;\n Element.insertChildSingleOperation(this, child, index, true);\n }\n insertChildren(children, index) {\n Element.insertChildBatchInsertion(this, children, index);\n }\n removeChildren(index, count) {\n Element.insertChildBatchRemoval(this, index, count);\n }\n selfReplaceWith(replaceWith) {\n const parent = this.parentNode;\n if (parent) {\n Element.insertChildPlaceholderReplace(parent, this.parentIndex, replaceWith);\n }\n }\n /** @internal */\n static _$generateIdMap(node) {\n const idMap = Object.create(null);\n const dfs = function dfs(node) {\n if (isElement(node)) {\n const 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 triggerEvent(name, detail, options) {\n Event.triggerEvent(this, name, detail, options);\n }\n /** Trigger an event with specified event object on the element */\n dispatchEvent(ev) {\n Event.dispatchEvent(this, ev);\n }\n /* @internal */\n _$setListenerStats(name, finalChanged, options = {}) {\n if (!this._$backendElement)\n return;\n const capture = !!options.capture || !!options.useCapture;\n let 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 (this._$nodeTreeContext) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setListenerStats');\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 if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n /** Add an event listener on the element */\n addListener(name, func, options) {\n const finalChanged = this._$eventTarget.addListener(name, func, options);\n this._$setListenerStats(name, finalChanged, options);\n if (isComponent(this) && this._$definition._$options.listenerChangeLifetimes) {\n this.triggerLifetime('listenerChange', [true, name, func, options]);\n }\n }\n /** Remove an event listener on the element */\n removeListener(name, func, options) {\n const finalChanged = this._$eventTarget.removeListener(name, func, options);\n if (finalChanged === 1 /* FinalChanged.Failed */)\n return;\n this._$setListenerStats(name, finalChanged, options);\n if (isComponent(this) && 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 getAttribute(name) {\n if (!this._$nodeAttributes)\n return null;\n if (!Object.prototype.hasOwnProperty.call(this._$nodeAttributes, name))\n return null;\n return this._$nodeAttributes[name];\n }\n /** Update an attribute value */\n updateAttribute(name, value) {\n this.setAttribute(name, value);\n }\n /** Set an attribute value */\n setAttribute(name, value) {\n let 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 const be = this._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setAttribute');\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n if (value === false) {\n be.removeAttribute(name);\n }\n else {\n be.setAttribute(name, value === true || value === undefined || value === null ? '' : String(value));\n }\n }\n else {\n be.setAttribute(name, value);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n /** Remove an attribute */\n removeAttribute(name) {\n if (this._$nodeAttributes) {\n delete this._$nodeAttributes[name];\n }\n const be = this._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.removeAttribute');\n be.removeAttribute(name);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n /** Set a dataset on the element */\n setDataset(name, value) {\n this.dataset[name] = value;\n if (BM.SHADOW || (BM.DYNAMIC && this.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setDataset');\n this._$backendElement.setDataset(name, value);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n /** Set a mark on the element */\n setMark(name, value) {\n if (!this._$marks) {\n const 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 collectMarks() {\n const ret = {};\n let cur;\n for (cur = this; cur; cur = cur.parentNode) {\n const marks = cur._$marks;\n if (marks) {\n Object.keys(marks).forEach((name) => {\n if (!Object.prototype.hasOwnProperty.call(ret, name)) {\n ret[name] = marks[name];\n }\n });\n }\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 static replaceDocumentElement(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 if (ENV.DEV)\n performanceMeasureStart('backend.replaceChild');\n targetParent.replaceChild(element._$backendElement, targetNode);\n if (ENV.DEV)\n performanceMeasureEnd();\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 static pretendAttached(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 static pretendDetached(element) {\n if (element._$attached) {\n Element.checkAndCallDetached(element);\n }\n }\n /** Check the element is attached or not */\n static isAttached(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 static setSlotName(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 const slotName = name ? String(name) : '';\n const oldSlotName = element._$slotName;\n if (oldSlotName === slotName)\n return;\n const 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 if (ENV.DEV)\n performanceMeasureStart('backend.setSlotName');\n (_a = element._$backendElement) === null || _a === void 0 ? void 0 : _a.setSlotName(slotName);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n const 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 const parent = element.parentNode;\n if (parent) {\n Element._$updateSubtreeSlotsInsertion(parent, 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 static getSlotName(element) {\n const 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 static setInheritSlots(element) {\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 const be = element._$backendElement;\n if (be) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setInheritSlots');\n be.setInheritSlots();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n element._$inheritSlots = true;\n }\n /** Get whether the slot-inherit mode is set or not */\n static getInheritSlots(element) {\n return element._$inheritSlots;\n }\n /** Get whether the slot-inherit mode is set or not */\n isInheritSlots() {\n return this._$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 static setSlotElement(node, slot) {\n const oldSlotElement = node._$slotElement;\n if (oldSlotElement === slot)\n return;\n node._$slotElement = slot;\n const slotParentShadowRoot = Element._$getParentHostShadowRoot(node.parentNode);\n if (slotParentShadowRoot) {\n const containingSlotUpdater = Element._$updateSubtreeSlotNodes(node.parentNode, [node], slotParentShadowRoot, slotParentShadowRoot, node.parentIndex);\n const oldSlot = node.containingSlot;\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.updateContainingSlot();\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.removeSlotNodes();\n const newSlot = node.containingSlot;\n const recv = (node) => {\n if (isElement(node) && node._$inheritSlots) {\n for (let i = 0; i < node.childNodes.length; i += 1) {\n recv(node.childNodes[i]);\n }\n }\n else {\n Element.insertChildReassign(node.parentNode, node, oldSlot, newSlot, node.parentIndex);\n }\n };\n recv(node);\n containingSlotUpdater === null || containingSlotUpdater === void 0 ? void 0 : containingSlotUpdater.insertSlotNodes();\n }\n }\n static _$updateContainingSlot(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 if (ENV.DEV)\n performanceMeasureStart('backend.setContainingSlot');\n node._$backendElement.setContainingSlot(containingSlot ? containingSlot._$backendElement : containingSlot);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n static _$spliceSlotNodes(slot, before, deleteCount, insertion) {\n const slotNodes = (slot.slotNodes = slot.slotNodes || []);\n const spliceBefore = before >= 0 && before < slotNodes.length;\n if (insertion === null || insertion === void 0 ? void 0 : insertion.length) {\n if (spliceBefore) {\n for (let i = before; i < before + deleteCount; i += 1) {\n slotNodes[i].slotIndex = undefined;\n }\n slotNodes.splice(before, deleteCount, ...insertion);\n for (let i = before; i < slotNodes.length; i += 1) {\n slotNodes[i].slotIndex = i;\n }\n }\n else {\n const start = slotNodes.length;\n slotNodes.push(...insertion);\n for (let i = start; i < slotNodes.length; i += 1) {\n slotNodes[i].slotIndex = i;\n }\n }\n }\n else if (deleteCount) {\n for (let i = before; i < before + deleteCount; i += 1) {\n slotNodes[i].slotIndex = undefined;\n }\n slotNodes.splice(before, deleteCount);\n for (let i = before; i < slotNodes.length; i += 1) {\n slotNodes[i].slotIndex = i;\n }\n }\n if (BM.SHADOW || (BM.DYNAMIC && slot.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n if (insertion === null || insertion === void 0 ? void 0 : insertion.length) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createFragment');\n const frag = slot._$nodeTreeContext.createFragment();\n if (ENV.DEV)\n performanceMeasureEnd();\n for (let i = 0; i < insertion.length; i += 1) {\n if (ENV.DEV)\n performanceMeasureStart('backend.appendChild');\n frag.appendChild(insertion[i]._$backendElement);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n if (spliceBefore) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceBeforeSlotNodes');\n slot._$backendElement.spliceBeforeSlotNodes(before, deleteCount, frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceAppendSlotNodes');\n slot._$backendElement.spliceAppendSlotNodes(frag);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n frag.release();\n }\n else if (deleteCount) {\n if (ENV.DEV)\n performanceMeasureStart('backend.spliceRemoveSlotNodes');\n slot._$backendElement.spliceRemoveSlotNodes(before, deleteCount);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n }\n /** @internal */\n static _$findSlotNodeInsertPosition(slot, target, newPosIndex) {\n const host = slot.ownerShadowRoot.getHostNode();\n const getNodeDepth = (node) => {\n let depth = 0;\n let cur = node;\n while (cur && cur !== host) {\n depth += 1;\n cur = cur.parentNode;\n }\n return depth;\n };\n const targetDepth = getNodeDepth(target);\n const comparePos = (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 const nextSlotNode1 = slotNode1.parentNode;\n return comparePos(nextSlotNode1, nextSlotNode1.parentIndex, slotDepth1 - 1, slotNode2, parentIndex2, slotDepth2, posIndex);\n }\n const left = slotDepth1 < slotDepth2 ? slotNode1 : slotNode1.parentNode;\n const leftDepth = slotDepth1 < slotDepth2 ? slotDepth1 : slotDepth1 - 1;\n const right = slotNode2.parentNode;\n const rightDepth = slotDepth2 - 1;\n const rst = comparePos(left, left.parentIndex, leftDepth, right, right.parentIndex, rightDepth, posIndex);\n if (rst === 0)\n return -1;\n return rst;\n };\n const slotNodes = slot.slotNodes;\n let i = slotNodes.length - 1;\n for (; i >= 0; i -= 1) {\n const slotNode = slotNodes[i];\n if (comparePos(slotNode, slotNode.parentIndex, getNodeDepth(slotNode), target, target.parentIndex, targetDepth, newPosIndex >= 0\n ? newPosIndex - 0.5\n : // negative posIndex (such as -1) means to insert at the tail\n slotNodes.length) < 0)\n break;\n }\n const insertPos = i + 1;\n return insertPos;\n }\n /** Get composed parent (including virtual nodes) */\n getComposedParent() {\n if (isShadowRoot(this))\n return this.getHostNode();\n if (this.containingSlot !== undefined)\n return this.containingSlot;\n let 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 getComposedChildren() {\n const ret = [];\n this.forEachComposedChild((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 forEachComposedChild(f) {\n if (this._$inheritSlots)\n return true;\n if (isComponent(this) && !this._$external) {\n return f(this.shadowRoot) !== false;\n }\n if (this._$slotName !== null) {\n const ownerShadowRoot = this.ownerShadowRoot;\n if (!ownerShadowRoot)\n return true;\n return ownerShadowRoot.forEachNodeInSpecifiedSlot(this, f);\n }\n const recInheritSlots = (children) => {\n for (let i = 0; i < children.length; i += 1) {\n const 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 forEachNonVirtualComposedChild(f) {\n if (this._$inheritSlots)\n return true;\n const recNonVirtual = (child) => {\n if (child._$virtual) {\n return child.forEachNonVirtualComposedChild(f);\n }\n return f(child) !== false;\n };\n if (isComponent(this) && !this._$external) {\n return recNonVirtual(this.shadowRoot);\n }\n if (this._$slotName !== null) {\n const ownerShadowRoot = this.ownerShadowRoot;\n if (!ownerShadowRoot)\n return true;\n return ownerShadowRoot.forEachSlotContentInSpecifiedSlot(this, recNonVirtual);\n }\n const recInheritSlots = (children) => {\n for (let i = 0; i < children.length; i += 1) {\n const 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 static parseSelector(str) {\n return new ParsedSelector(str);\n }\n /** Select the first descendant which matches the selector */\n querySelector(selectorStr) {\n const parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n const ret = parsedSelector.query(this, true);\n return ret;\n }\n /** Select all descendants which matches the selector */\n querySelectorAll(selectorStr) {\n const parsedSelector = selectorStr instanceof ParsedSelector ? selectorStr : new ParsedSelector(selectorStr);\n const ret = parsedSelector.query(this, false);\n return ret;\n }\n /** Test whether the target matches the selector */\n static matchSelector(selectorStr, target) {\n const 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 matchSelector(selectorStr, target) {\n const 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 getBoundingClientRect(cb) {\n var _a;\n const backendElement = this._$backendElement;\n if (!backendElement) {\n setTimeout(() => {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n return;\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const e = backendElement;\n const res = ((_a = e.getBoundingClientRect) === null || _a === void 0 ? void 0 : _a.call(e)) || { left: 0, top: 0, width: 0, height: 0 };\n setTimeout(() => {\n cb(res);\n }, 0);\n }\n else {\n const be = backendElement;\n if (be.getBoundingClientRect) {\n be.getBoundingClientRect(cb);\n }\n else {\n setTimeout(() => {\n cb({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n }, 0);\n }\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 getScrollOffset(cb) {\n const backendElement = this._$backendElement;\n if (!backendElement) {\n setTimeout(() => {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n return;\n }\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const e = backendElement;\n const res = {\n scrollLeft: e.scrollLeft || 0,\n scrollTop: e.scrollTop || 0,\n scrollWidth: e.scrollWidth || 0,\n scrollHeight: e.scrollHeight || 0,\n };\n setTimeout(() => {\n cb(res);\n }, 0);\n }\n else {\n const be = backendElement;\n if (be.getScrollOffset) {\n be.getScrollOffset(cb);\n }\n else {\n setTimeout(() => {\n cb({\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n }, 0);\n }\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 createIntersectionObserver(relativeElement, relativeElementMargin, thresholds, listener) {\n const 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 const context = this._$nodeTreeContext;\n if (!context || !context.createIntersectionObserver)\n return null;\n return context.createIntersectionObserver(backendElement, (relativeElement === null || relativeElement === void 0 ? void 0 : relativeElement._$backendElement) || null, relativeElementMargin, thresholds, listener);\n }\n const be = backendElement;\n if (!be.createIntersectionObserver)\n return null;\n return be.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 getContext(cb) {\n const backendElement = this._$backendElement;\n if (!backendElement)\n return;\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n const context = this._$nodeTreeContext;\n if (context === null || context === void 0 ? void 0 : context.getContext) {\n context.getContext(backendElement, cb);\n }\n else {\n cb(null);\n }\n }\n else {\n const be = backendElement;\n if (be.getContext) {\n be.getContext(cb);\n }\n else {\n cb(null);\n }\n }\n }\n}\nElement.isElement = isElement;\n/** @internal */\nElement._$getParentHostShadowRoot = (parent) => {\n let parentSlotHost = parent;\n while (parentSlotHost === null || parentSlotHost === void 0 ? void 0 : parentSlotHost._$inheritSlots)\n parentSlotHost = parentSlotHost.parentNode;\n return isComponent(parentSlotHost) && !parentSlotHost._$external\n ? parentSlotHost.shadowRoot\n : null;\n};\nElement.prototype[ELEMENT_SYMBOL] = true;\n//# sourceMappingURL=element.js.map","import { Behavior } from './behavior';\nimport { ComponentDefinition } from './component';\nimport { safeCallback } from './func_arr';\nimport { TraitBehavior } from './trait_behaviors';\nimport { isComponent, isElement, isVirtualNode } from './type_symbol';\nimport { triggerWarning } from './warning';\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 = {}));\nconst RELATION_TYPE_COUNT = 6;\nexport const normalizeRelation = (ownerSpace, is, key, relation) => {\n const checkRelationFunc = (f) => {\n if (typeof f === 'function') {\n return f;\n }\n if (f !== undefined) {\n triggerWarning(`the \"${key}\" relation listener is not a function (when preparing behavior \"${is}\").`);\n }\n return null;\n };\n let 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 const type = relation.type;\n triggerWarning(`the \"${key}\" relation has an invalid relation type \"${type}\" (when preparing behavior \"${is}\").`);\n return null;\n }\n let 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 const path = String(relation.target || key);\n const usingTarget = ownerSpace.getComponentByUrlWithoutDefault(path, is);\n if (usingTarget) {\n target = usingTarget.behavior;\n }\n else {\n const 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 \"${key}\" is not a valid behavior or component (when preparing behavior \"${is}\").`);\n return null;\n }\n return {\n target,\n type,\n linked: checkRelationFunc(relation.linked),\n linkChanged: checkRelationFunc(relation.linkChanged),\n unlinked: checkRelationFunc(relation.unlinked),\n linkFailed: checkRelationFunc(relation.linkFailed),\n };\n};\nexport const generateRelationDefinitionGroup = (relations) => {\n if (relations === undefined)\n return null;\n const group = {\n definitions: new Array(RELATION_TYPE_COUNT),\n keyMap: Object.create(null),\n };\n const defs = group.definitions;\n const keyMap = group.keyMap;\n const keys = Object.keys(relations);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const relation = relations[key];\n const 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 const cloneRelationDefinitionGroup = (group) => {\n const newGroup = {\n definitions: group.definitions.slice(),\n keyMap: Object.assign(Object.create(null), group.keyMap),\n };\n return newGroup;\n};\nexport class Relation {\n constructor(associatedComponent, group) {\n this._$comp = associatedComponent;\n const links = new Array(RELATION_TYPE_COUNT);\n if (group) {\n for (let type = 0; type < RELATION_TYPE_COUNT; type += 1) {\n const definitions = group.definitions[type];\n if (definitions) {\n const link = new Array(definitions.length);\n for (let 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 add(relation) {\n if (this._$sharedGroup) {\n this._$sharedGroup = false;\n const 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 const key = Symbol('');\n const defs = this._$group.definitions;\n const keyMap = this._$group.keyMap;\n const 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 const 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 triggerLinkEvent(parentType, isDetach) {\n var _a, _b;\n const comp = this._$comp;\n const linksGroup = this._$links;\n const selfDefs = (_a = this._$group) === null || _a === void 0 ? void 0 : _a.definitions[parentType];\n if (!selfDefs)\n return;\n for (let i = 0; i < selfDefs.length; i += 1) {\n const links = linksGroup[parentType];\n const oldLink = links[i];\n let newLink = null;\n const def = selfDefs[i];\n const parentBehavior = def.target;\n if (!isDetach) {\n let cur = comp;\n for (;;) {\n const next = cur.parentNode;\n if (!next)\n break;\n cur = next;\n if (isVirtualNode(cur)) {\n continue;\n }\n if (isComponent(cur)) {\n if (cur.hasBehavior(parentBehavior)) {\n const parentRelation = cur._$relation;\n if (parentRelation) {\n let rt;\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 const parentDefs = (_b = parentRelation._$group) === null || _b === void 0 ? void 0 : _b.definitions[rt];\n if (parentDefs) {\n for (let j = 0; j < parentDefs.length; j += 1) {\n const def = parentDefs[j];\n if (def.target && this._$comp.hasBehavior(def.target)) {\n newLink = {\n target: cur,\n def,\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 const oldTarget = oldLink.target;\n const 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 const newTarget = newLink.target;\n const 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 getLinkedTargets(key) {\n var _a, _b, _c, _d;\n const typeWithIndex = (_a = this._$group) === null || _a === void 0 ? void 0 : _a.keyMap[key];\n if (!typeWithIndex) {\n triggerWarning(`no relation \"${String(key)}\" found.`);\n return [];\n }\n const [type, index] = typeWithIndex;\n if (type === 4 /* RelationType.ParentComponent */ ||\n type === 2 /* RelationType.ParentNonVirtualNode */ ||\n type === 0 /* RelationType.Ancestor */) {\n const link = (_b = this._$links[type]) === null || _b === void 0 ? void 0 : _b[index];\n if (link)\n return [link.target];\n return [];\n }\n const ret = [];\n const comp = this._$comp;\n const def = (_d = (_c = this._$group) === null || _c === void 0 ? void 0 : _c.definitions[type]) === null || _d === void 0 ? void 0 : _d[index];\n const dfs = (node) => {\n const children = node.childNodes;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (!isElement(child))\n continue;\n if (isVirtualNode(child)) {\n dfs(child);\n continue;\n }\n if (isComponent(child)) {\n if (child._$relation) {\n let links;\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 (let i = 0; i < links.length; i += 1) {\n const link = links[i];\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}\n//# sourceMappingURL=relation.js.map","import { BM, } from './backend';\nimport { ClassList, StyleScopeManager } from './class_list';\nimport { Element } from './element';\nimport { ENV, globalOptions } from './global_options';\nimport { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { NATIVE_NODE_SYMBOL, isNativeNode } from './type_symbol';\nexport class NativeNode extends Element {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n super();\n }\n static create(tagName, owner, stylingName, placeholderHandlerRemover) {\n var _a, _b;\n const node = Object.create(NativeNode.prototype);\n node.is = tagName;\n node.stylingName = stylingName !== null && stylingName !== void 0 ? stylingName : tagName;\n node._$placeholderHandlerRemover = placeholderHandlerRemover;\n const nodeTreeContext = owner.getBackendContext();\n let backendElement = null;\n if (nodeTreeContext) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createElement');\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 backendElement = owner._$backendShadowRoot.createElement(tagName, node.stylingName);\n }\n else {\n const backend = nodeTreeContext;\n backendElement = backend.createElement(tagName, node.stylingName);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n node._$initialize(false, backendElement, owner, owner._$nodeTreeContext);\n const ownerHost = owner.getHostNode();\n const ownerComponentOptions = ownerHost.getComponentOptions();\n const styleScope = (_a = ownerComponentOptions.styleScope) !== null && _a !== void 0 ? _a : StyleScopeManager.globalScope();\n const extraStyleScope = (_b = ownerComponentOptions.extraStyleScope) !== null && _b !== void 0 ? _b : undefined;\n const styleScopeManager = ownerHost._$behavior.ownerSpace.styleScopeManager;\n node.classList = new ClassList(node, undefined, ownerHost.classList, styleScope, extraStyleScope, styleScopeManager);\n if (backendElement) {\n if (BM.COMPOSED || (BM.DYNAMIC && owner.getBackendMode() === 2 /* BackendMode.Composed */)) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setStyleScope');\n backendElement.setStyleScope(styleScope, extraStyleScope);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n if (globalOptions.writeExtraInfoToAttr) {\n const prefix = styleScopeManager.queryName(styleScope);\n if (prefix) {\n backendElement.setAttribute('exparser:info-class-prefix', `${prefix}--`);\n }\n }\n if (ENV.DEV)\n performanceMeasureStart('backend.associateValue');\n if (!(BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n ;\n backendElement.associateValue(node);\n }\n else {\n ;\n owner.getBackendContext().associateValue(backendElement, node);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n return node;\n }\n setModelBindingListener(propName, listener) {\n if (!this._$modelBindingListeners) {\n this._$modelBindingListeners = Object.create(null);\n }\n if (!this._$modelBindingListeners[propName]) {\n const backendElement = this.getBackendElement();\n if (backendElement) {\n const listener = (value) => {\n var _a;\n const listener = (_a = this._$modelBindingListeners) === null || _a === void 0 ? void 0 : _a[propName];\n if (listener) {\n listener.call(this, value);\n }\n };\n if (ENV.DEV)\n performanceMeasureStart('backend.setModelBindingStat');\n if (BM.DOMLIKE || (BM.DYNAMIC && this.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n ;\n this.getBackendContext().setModelBindingStat(backendElement, propName, listener);\n }\n else {\n ;\n backendElement.setModelBindingStat(propName, listener);\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n this._$modelBindingListeners[propName] = listener;\n }\n getModelBindingListeners() {\n const listeners = Object.create(null);\n if (this._$modelBindingListeners) {\n Object.keys(this._$modelBindingListeners).forEach((propName) => {\n const listener = (value) => {\n var _a;\n const listener = (_a = this._$modelBindingListeners) === null || _a === void 0 ? void 0 : _a[propName];\n if (listener) {\n listener.call(this, value);\n }\n };\n listeners[propName] = listener;\n });\n }\n return listeners;\n }\n}\nNativeNode.isNativeNode = isNativeNode;\nNativeNode.prototype[NATIVE_NODE_SYMBOL] = true;\n//# sourceMappingURL=native_node.js.map","import { BM, } from './backend';\nimport { ENV } from './global_options';\nimport { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { MutationObserverTarget } from './mutation_observer';\nimport { TEXT_NODE_SYMBOL, isTextNode } from './type_symbol';\nexport class TextNode {\n constructor(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 let backendElement = null;\n const context = owner.getBackendContext();\n if (context) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createTextNode');\n if (BM.DOMLIKE || (BM.DYNAMIC && owner.getBackendMode() === 3 /* BackendMode.Domlike */)) {\n backendElement = context.document.createTextNode(text);\n }\n else if (BM.SHADOW || (BM.DYNAMIC && owner.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n const backend = owner._$backendShadowRoot;\n backendElement = backend.createTextNode(text);\n }\n else {\n const backend = context;\n backendElement = backend.createTextNode(text);\n }\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n this._$backendElement = backendElement;\n this.ownerShadowRoot = owner;\n this.parentNode = null;\n this.parentIndex = -1;\n this.containingSlot = undefined;\n }\n static create(text, ownerShadowRoot) {\n return new TextNode(text, ownerShadowRoot);\n }\n asTextNode() {\n return this;\n }\n // eslint-disable-next-line class-methods-use-this\n asElement() {\n return null;\n }\n // eslint-disable-next-line class-methods-use-this\n asNativeNode() {\n return null;\n }\n // eslint-disable-next-line class-methods-use-this\n asVirtualNode() {\n return null;\n }\n // eslint-disable-next-line class-methods-use-this\n asInstanceOf() {\n return null;\n }\n /** Destroy the backend element */\n destroyBackendElement() {\n if (this._$backendElement) {\n if (!(BM.DOMLIKE ||\n (BM.DYNAMIC && this.ownerShadowRoot.getBackendMode() === 3 /* BackendMode.Domlike */))) {\n if (ENV.DEV)\n performanceMeasureStart('backend.release');\n this._$backendElement.release();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n this._$backendElement = null;\n }\n }\n /** Destroy the backend element on next detach */\n destroyBackendElementOnDetach() {\n this._$destroyOnDetach = true;\n }\n /** Get the backend element */\n getBackendElement() {\n return this._$backendElement;\n }\n /** Get composed parent (including virtual nodes) */\n getComposedParent() {\n if (this.containingSlot !== undefined)\n return this.containingSlot;\n let parent = this.parentNode;\n while (parent === null || parent === void 0 ? void 0 : parent._$inheritSlots) {\n parent = parent.parentNode;\n }\n return parent;\n }\n get $$() {\n return this._$backendElement;\n }\n get textContent() {\n return this._$text;\n }\n set textContent(text) {\n const newText = String(text);\n if (newText === this._$text)\n return;\n this._$text = newText;\n if (this._$backendElement) {\n if (ENV.DEV)\n performanceMeasureStart('backend.setText');\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 if (ENV.DEV)\n performanceMeasureEnd();\n }\n MutationObserverTarget.callTextObservers(this, {\n type: 'characterData',\n target: this,\n });\n }\n}\nTextNode.isTextNode = isTextNode;\nTextNode.prototype[TEXT_NODE_SYMBOL] = true;\n//# sourceMappingURL=text_node.js.map","import { BM } from './backend';\nimport { performanceMeasureEnd, performanceMeasureStart } from './devtool';\nimport { Element } from './element';\nimport { ENV } from './global_options';\nimport { VIRTUAL_NODE_SYMBOL, isVirtualNode } from './type_symbol';\nexport class VirtualNode extends Element {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n super();\n }\n /* @internal */\n _$initializeVirtual(virtualName, owner, nodeTreeContext) {\n this.is = String(virtualName);\n if (nodeTreeContext &&\n (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */))) {\n const shadowRoot = owner._$backendShadowRoot;\n if (ENV.DEV)\n performanceMeasureStart('backend.createVirtualNode');\n const be = shadowRoot.createVirtualNode(virtualName);\n if (ENV.DEV)\n performanceMeasureEnd();\n this._$initialize(true, be, owner, nodeTreeContext);\n if (ENV.DEV)\n performanceMeasureStart('backend.associateValue');\n be.associateValue(this);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n else {\n this._$initialize(true, null, owner, owner._$nodeTreeContext);\n }\n }\n static create(virtualName, owner) {\n const node = Object.create(VirtualNode.prototype);\n node._$initializeVirtual(virtualName, owner, owner.getBackendContext());\n return node;\n }\n}\nVirtualNode.isVirtualNode = isVirtualNode;\nVirtualNode.prototype[VIRTUAL_NODE_SYMBOL] = true;\n//# sourceMappingURL=virtual_node.js.map","import { BM } from './backend';\nimport { Component, convertGenerics, resolvePlaceholder, } from './component';\nimport { getDeepCopyStrategy } from './data_proxy';\nimport { deepCopy, simpleDeepCopy } from './data_utils';\nimport { Element } from './element';\nimport { NativeNode } from './native_node';\nimport { TextNode } from './text_node';\nimport { SHADOW_ROOT_SYMBOL, isElement, isShadowRoot } from './type_symbol';\nimport { VirtualNode } from './virtual_node';\nimport { ThirdError, triggerWarning } from './warning';\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 = {}));\nexport class ShadowRoot extends VirtualNode {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n super();\n }\n static createShadowRoot(host) {\n const node = Object.create(ShadowRoot.prototype);\n let be = null;\n if (BM.SHADOW || (BM.DYNAMIC && host.getBackendMode() === 1 /* BackendMode.Shadow */)) {\n be = host._$backendElement.getShadowRoot();\n }\n node.is = 'shadow';\n node._$idMap = null;\n let slotMode = 1 /* SlotMode.Single */;\n const 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 = be;\n node._$initialize(true, be, node, host._$nodeTreeContext);\n node._$host = host;\n host.shadowRoot = node;\n be === null || be === void 0 ? void 0 : be.associateValue(node);\n return node;\n }\n getHostNode() {\n return this._$host;\n }\n createTextNode(text = '') {\n return new TextNode(text, this);\n }\n createNativeNode(tagName) {\n return NativeNode.create(tagName, this);\n }\n createVirtualNode(virtualName = 'virtual') {\n return VirtualNode.create(virtualName, this);\n }\n createNativeNodeWithInit(tagName, stylingName, placeholderHandlerRemover, initPropValues) {\n const ret = NativeNode.create(tagName, this, stylingName, placeholderHandlerRemover);\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 createComponent(tagName, usingKey, genericTargets, placeholderCallback, initPropValues) {\n const host = this._$host;\n const beh = host._$behavior;\n const hostGenericImpls = host._$genericImpls;\n const space = beh.ownerSpace;\n const compName = usingKey === undefined ? tagName : usingKey;\n const possibleComponentDefinitions = [\n // if the target is in using list, then use the one in using list\n beh._$using[compName],\n // if the target is in generics list, then use the one\n hostGenericImpls && hostGenericImpls[compName],\n ];\n for (let i = 0; i < possibleComponentDefinitions.length; i += 1) {\n const cwp = possibleComponentDefinitions[i];\n if (cwp === null || cwp === undefined)\n continue;\n if (typeof cwp === 'string') {\n return this.createNativeNodeWithInit(cwp, tagName, undefined, initPropValues);\n }\n let usingTarget;\n let placeholderHandlerRemover;\n if (cwp.final) {\n usingTarget = cwp.final;\n }\n else if (cwp.placeholder !== null) {\n usingTarget = resolvePlaceholder(cwp.placeholder, space, cwp.source, hostGenericImpls);\n const waiting = cwp.waiting;\n if (placeholderCallback && waiting) {\n waiting.add(placeholderCallback);\n waiting.hintUsed(host);\n placeholderHandlerRemover = () => {\n waiting.remove(placeholderCallback);\n };\n }\n }\n if (typeof usingTarget === 'string') {\n return this.createNativeNodeWithInit(usingTarget, tagName, placeholderHandlerRemover, initPropValues);\n }\n if (usingTarget) {\n return Component._$advancedCreate(tagName, usingTarget, this, null, convertGenerics(usingTarget, beh, host, genericTargets), placeholderHandlerRemover, initPropValues);\n }\n }\n // find in the space otherwise\n let comp = space.getGlobalUsingComponent(compName);\n if (comp === null && space._$allowUnusedNativeNode && compName !== '') {\n comp = compName;\n }\n if (!comp) {\n comp = space.getDefaultComponent();\n /* istanbul ignore if */\n if (!comp) {\n throw new ThirdError(`Cannot find component \"${compName}\"`, undefined, this._$host);\n }\n triggerWarning(`Cannot find component \"${compName}\", using default component.`, this._$host);\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 createComponentByDef(tagName, componentDef) {\n return Component._$advancedCreate(tagName, componentDef, this, null, null, undefined);\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 createComponentOrNativeNode(tagName, genericTargets, initPropValues) {\n const host = this._$host;\n const beh = host._$behavior;\n const space = beh.ownerSpace;\n // find in the space otherwise\n const 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 if (space._$allowUnusedNativeNode) {\n // use native node otherwise\n const node = NativeNode.create(tagName, this);\n initPropValues === null || initPropValues === void 0 ? void 0 : initPropValues(node);\n return node;\n }\n throw new ThirdError(`Unknown tag name ${tagName}`, '[render]', host);\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 checkComponentPlaceholder(usingKey) {\n var _a;\n const beh = this._$host._$behavior;\n let compDef;\n const using = beh._$using[usingKey];\n if (using !== undefined) {\n compDef = using;\n }\n else {\n const 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 getElementById(id) {\n return this._$getIdMap()[id];\n }\n /** @internal */\n _$markIdCacheDirty() {\n this._$idMap = null;\n }\n /** @internal */\n _$getIdMap() {\n if (this._$idMap)\n return this._$idMap;\n const idMap = Element._$generateIdMap(this);\n this._$idMap = idMap;\n return idMap;\n }\n /** Get the slot element with the specified name */\n getSlotElementFromName(name) {\n const 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 const slots = [];\n for (let it = this._$subtreeSlotStart; it; it = it.next) {\n const slot = it.value;\n const 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 getContainingSlot(elem) {\n var _a;\n const 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 let subTreeRoot = elem;\n while ((_a = subTreeRoot.parentNode) === null || _a === void 0 ? void 0 : _a._$inheritSlots) {\n subTreeRoot = subTreeRoot.parentNode;\n }\n const 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 let name;\n if (isElement(elem)) {\n name = elem._$nodeSlot;\n }\n else {\n name = '';\n }\n return this._$slots[name] || 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 getSlotContentArray(slot) {\n if (slot._$slotName === null)\n return null;\n const ret = [];\n this.forEachNodeInSpecifiedSlot(slot, (node) => {\n ret.push(node);\n });\n return ret;\n }\n /**\n * Iterate slots\n */\n forEachSlot(f) {\n const 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 const slots = Object.values(this._$slots);\n for (let 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 (let it = this._$subtreeSlotStart; it; it = it.next) {\n if (f(it.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 forEachNodeInSlot(f) {\n const childNodes = this._$host.childNodes;\n for (let 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 forEachNodeInSpecifiedSlot(slot, f) {\n if (slot) {\n const childNodes = slot.slotNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n const node = childNodes[i];\n if (f(node) === false)\n return false;\n }\n return true;\n }\n return this.forEachNodeInSlot((node, slot) => (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 forEachSlotContentInSlot(f) {\n const childNodes = this._$host.childNodes;\n for (let 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 forEachSlotContentInSpecifiedSlot(slot, f) {\n if (slot) {\n const childNodes = slot.slotNodes;\n for (let i = 0; i < childNodes.length; i += 1) {\n const node = childNodes[i];\n if (!node._$inheritSlots && f(node) === false)\n return false;\n }\n return true;\n }\n return this.forEachSlotContentInSlot((node, slot) => (slot === null ? f(node) : true));\n }\n /**\n * Check whether a node is connected to this shadow root\n */\n isConnected(node) {\n if (node.ownerShadowRoot !== this)\n return false;\n for (let p = node; p; p = p.parentNode) {\n if (p === this)\n return true;\n }\n return false;\n }\n /** @internal */\n _$applyMultipleSlotInsertion(slot, slotName, _move) {\n const slotsList = this._$slotsList;\n const 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 const firstSlot = slotsList[slotName];\n let insertPos = { next: firstSlot }; // this is a pointer to pointer\n let insertBeforeFirst = true;\n for (let 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 const next = insertPos.next;\n insertPos.next = { value: slot, prev: insertPos, 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 const oldSlot = slots[slotName];\n const 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 _$applyMultipleSlotsRemoval(slot, slotName, move) {\n const slotsList = this._$slotsList;\n const slots = this._$slots;\n let oldSlot = slotsList[slotName] || null;\n for (; oldSlot; oldSlot = oldSlot.next) {\n if (oldSlot.value === slot)\n break;\n }\n if (!oldSlot)\n return;\n const prev = oldSlot.prev;\n const next = oldSlot.next;\n if (prev)\n prev.next = next;\n if (next)\n next.prev = prev;\n const firstSlotRemoved = !prev;\n if (!firstSlotRemoved)\n return;\n const newFirstSlot = next;\n if (newFirstSlot) {\n const 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 _$applySlotRename(slot, newName, oldName) {\n const 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 const insertDynamicSlot = this._$insertDynamicSlotHandler;\n const 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, name: newName, slotValues: slot._$slotValues }]);\n }\n }\n /** @internal */\n _$applySlotsInsertion(slotStart, slotEnd, move) {\n const slotMode = this._$slotMode;\n // for direct slotting, do nothing\n if (slotMode === 0 /* SlotMode.Direct */)\n return;\n if (slotMode === 1 /* SlotMode.Single */) {\n const oldSlot = this._$singleSlot;\n const 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 (let it = slotStart; it && it !== slotEnd.next; it = it.next) {\n const slot = it.value;\n const 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 const insertDynamicSlot = this._$insertDynamicSlotHandler;\n const slots = [];\n for (let it = slotStart; it && it !== slotEnd.next; it = it.next) {\n const slot = it.value;\n const slotName = slot._$slotName;\n this._$dynamicSlots.set(slot, { updatePathTree: undefined });\n slots.push({ slot, name: slotName, slotValues: slot._$slotValues });\n }\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot(slots);\n }\n }\n /** @internal */\n _$applySlotsRemoval(slotStart, slotEnd, move) {\n var _a;\n const 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 const oldSlot = this._$singleSlot;\n const 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 (let it = slotStart; it && it !== slotEnd.next; it = it.next) {\n const slot = it.value;\n const 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 const removeDynamicSlot = this._$removeDynamicSlotHandler;\n const slots = [];\n for (let it = slotStart; it && it !== slotEnd.next; it = it.next) {\n const slot = it.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 setDynamicSlotHandler(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 const iter = this._$dynamicSlots.values();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const slotMeta = it.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 useDynamicSlotHandlerFrom(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 replaceSlotValue(slot, name, value) {\n var _a;\n const slotValues = slot._$slotValues;\n if (!slotValues)\n return;\n const oldValue = slotValues[name];\n let 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 const 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 applySlotValueUpdates(slot) {\n var _a, _b;\n const slotMeta = (_a = this._$dynamicSlots) === null || _a === void 0 ? void 0 : _a.get(slot);\n const 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 applySlotUpdates() {\n var _a;\n if (!this._$dynamicSlotsInserted) {\n this._$dynamicSlotsInserted = true;\n const insertDynamicSlot = this._$insertDynamicSlotHandler;\n const slots = [];\n for (let it = this._$subtreeSlotStart; it; it = it.next) {\n const slot = it.value;\n const slotName = slot._$slotName;\n this._$dynamicSlots.set(slot, { updatePathTree: undefined });\n slots.push({ slot, name: slotName, slotValues: slot._$slotValues });\n }\n insertDynamicSlot === null || insertDynamicSlot === void 0 ? void 0 : insertDynamicSlot(slots);\n }\n else {\n const iter = this._$dynamicSlots.entries();\n for (let it = iter.next(); !it.done; it = iter.next()) {\n const [slot, slotMeta] = it.value;\n const 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 getSlotMode() {\n return this._$slotMode;\n }\n}\nShadowRoot.isShadowRoot = isShadowRoot;\nShadowRoot.prototype[SHADOW_ROOT_SYMBOL] = true;\n//# sourceMappingURL=shadow_root.js.map","import { triggerWarning } from '../warning';\nexport class RangeListManager {\n constructor(keyName, dataList, elem, shadowRoot, newListItem) {\n this.ownerShadowRoot = shadowRoot;\n this.elem = elem;\n this.keyName = keyName;\n this.updateKeys(dataList);\n const items = this.items;\n const indexes = this.indexes;\n const children = [];\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n children.push(newListItem(item, index));\n }\n elem.insertChildren(children, -1);\n }\n updateKeys(dataList) {\n // collect the list depending on the the type of the data list\n let items;\n let indexes;\n if (Array.isArray(dataList)) {\n items = dataList;\n indexes = null;\n }\n else if (typeof dataList === 'object' && dataList !== null) {\n const k = Object.keys(dataList);\n items = new Array(k.length);\n indexes = new Array(k.length);\n for (let i = 0; i < k.length; i += 1) {\n const key = k[i];\n const 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.', this.ownerShadowRoot.getHostNode(), this.elem);\n items = new Array(dataList.length);\n indexes = null;\n for (let 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.', this.ownerShadowRoot.getHostNode(), this.elem);\n items = new Array(dataList);\n indexes = null;\n for (let i = 0; i < dataList; i += 1) {\n items[i] = i;\n }\n }\n else {\n triggerWarning(`The for-list data is neither Array nor Object, got type \"${dataList === null ? 'null' : typeof dataList}\".`, this.ownerShadowRoot.getHostNode(), this.elem);\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 const keyName = this.keyName;\n const rawKeys = new Array(items.length);\n const keyMap = Object.create(null);\n let sharedKeyMap;\n if (keyName !== null) {\n // firstly, find all unique keys and shared keys\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const rawKeyField = keyName === '*this' ? item : item === null || item === void 0 ? void 0 : item[keyName];\n const 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 const keys = Object.keys(sharedKeyMap);\n triggerWarning(`Some keys are not unique while list updates: \"${keys.join('\", \"')}\".`, this.ownerShadowRoot.getHostNode(), this.elem);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const items = sharedKeyMap[key];\n let inc = 0;\n for (let j = 0; j < items.length; j += 1) {\n const index = items[j];\n while (keyMap[`${key}--${inc}`] !== undefined)\n inc += 1;\n const k = `${key}--${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 diff(dataList, oriUpdatePathTree, elem, newListItem, updateListItem) {\n // generate new list for comparison\n const oldRawKeys = this.rawKeys;\n const oldKeyMap = this.keyMap;\n const oldSharedKeyMap = this.sharedKeyMap;\n const oldIndexes = this.indexes;\n this.updateKeys(dataList);\n const newRawKeys = this.rawKeys;\n const newSharedKeyMap = this.sharedKeyMap;\n const items = this.items;\n const indexes = this.indexes;\n const 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 let allowFastComparison;\n let 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 let needUpdate = false;\n if (Array.isArray(oriUpdatePathTree)) {\n needUpdate = true;\n }\n else {\n const keys = Object.keys(oriUpdatePathTree);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const 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 (let i = 0; i < newRawKeys.length; i += 1) {\n const 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 const 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 let updatePathTree;\n if (Array.isArray(oriUpdatePathTree))\n updatePathTree = true;\n else\n updatePathTree = oriUpdatePathTree;\n // simply match them one-by-one\n let i = 0;\n while (i < oldRawKeys.length && i < newRawKeys.length) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n const oldIndex = oldIndexes === null ? i : oldIndexes[i];\n const 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 // 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 const children = [];\n for (; i < newRawKeys.length; i += 1) {\n const item = items[i];\n const 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 const minIndexByLen = [];\n const minIndexByLenIndexes = [];\n const minIndexPrev = new Array(newRawKeys.length);\n const oldPosList = new Array(newRawKeys.length);\n let prevOldIndex = -1;\n let prevMinIndexByLenIndex = -1;\n for (let i = 0; i < newRawKeys.length; i += 1) {\n const 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 const 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 let bottom = 0;\n let top = minIndexByLen.length;\n while (bottom < top) {\n const mid = Math.floor((bottom + top) / 2);\n if (oldIndex < minIndexByLen[mid])\n top = mid;\n else\n bottom = mid + 1;\n }\n minIndexByLen[top] = oldIndex;\n minIndexByLenIndexes[top] = i;\n minIndexPrev[i] = top > 0 ? minIndexByLenIndexes[top - 1] : -1;\n oldPosList[i] = oldIndex;\n prevOldIndex = oldIndex;\n prevMinIndexByLenIndex = top;\n }\n const 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 let i = 0;\n while (i < oldRawKeys.length && i < newRawKeys.length) {\n const item = items[i];\n const index = indexes === null ? i : indexes[i];\n const oldIndex = oldIndexes === null ? i : oldIndexes[i];\n const 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 let prevLcsIndex = lcsLen > 0 ? minIndexByLenIndexes[lcsLen - 1] : -1;\n let curLcsArrIndex = lcsLen;\n while (prevLcsIndex !== -1) {\n curLcsArrIndex -= 1;\n minIndexByLen[curLcsArrIndex] = prevLcsIndex;\n prevLcsIndex = minIndexPrev[prevLcsIndex];\n }\n const lcsArr = minIndexByLen;\n // decide what operation to be used with each item\n let 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 const oldListOp = new Array(oldRawKeys.length);\n const changedItems = new Array(newRawKeys.length);\n let prevLcsOldPos = -1;\n for (let i = 0; i < oldPosList.length; i += 1) {\n const 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 const item = items[i];\n const 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 let realListDiff = 0;\n let opOldPos = 0;\n let opIndex = 0;\n curLcsArrIndex = 0;\n do {\n const nextStable = curLcsArrIndex < lcsArr.length ? lcsArr[curLcsArrIndex] : changedItems.length;\n const 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 const start = opOldPos;\n opOldPos += 1;\n let 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 const newItem = changedItems[opIndex];\n const oldPos = oldPosList[opIndex];\n if (oldPos === -1) {\n const start = opIndex;\n opIndex += 1;\n let 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 const item = items[opIndex];\n const index = indexes === null ? opIndex : indexes[opIndex];\n const oldIndex = oldIndexes === null ? oldPos : oldIndexes[oldPos];\n const 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 const item = items[nextStable];\n const index = indexes === null ? nextStable : indexes[nextStable];\n const oldIndex = oldIndexes === null ? nextStableOldPos : oldIndexes[nextStableOldPos];\n const u = updatePathTree === true || updatePathTree === undefined\n ? updatePathTree\n : updatePathTree[nextStable];\n const 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}\n//# sourceMappingURL=range_list_diff.js.map","/* eslint-disable class-methods-use-this */\nimport { Component } from '../component';\nimport { Element } from '../element';\nimport { ENV } from '../global_options';\nimport { isComponent, isNativeNode } from '../type_symbol';\nimport { dispatchError } from '../warning';\nimport { RangeListManager } from './range_list_diff';\nconst emptyFilter = (x) => x;\nexport const getTmplArgs = (elem) => {\n const node = elem;\n // eslint-disable-next-line no-return-assign\n return (node._$wxTmplArgs = node._$wxTmplArgs || {});\n};\nexport const dataValueToString = (v) => {\n if (v === null || v === undefined) {\n return '';\n }\n return String(v);\n};\nconst dashToCamelCase = (dash) => {\n const ret = dash.replace(/-(.|$)/g, (s) => (s[1] ? s[1].toUpperCase() : ''));\n return ret;\n};\nexport class ProcGenWrapper {\n constructor(shadowRoot, procGen, fallbackListenerOnNativeNode, eventObjectFilter) {\n this.bindingMapDisabled = false;\n this.eventObjectFilter = emptyFilter;\n this.changePropFilter = emptyFilter;\n this.eventListenerFilter = emptyFilter;\n // update a property or external class of a component, or an attribute of a native node\n this.r = (elem, name, v, modelLvaluePath, generalLvaluePath) => {\n var _a;\n const checkFallbackEventListener = (camelName) => {\n if (camelName.startsWith('bind')) {\n this.v(elem, camelName.slice('bind'.length), dataValueToString(v), false, false, false, true, generalLvaluePath);\n }\n else if (camelName.startsWith('captureBind')) {\n this.v(elem, camelName.slice('captureBind'.length), dataValueToString(v), false, false, true, true, generalLvaluePath);\n }\n else if (camelName.startsWith('catch')) {\n this.v(elem, camelName.slice('catch'.length), dataValueToString(v), true, false, false, true, generalLvaluePath);\n }\n else if (camelName.startsWith('captureCatch')) {\n this.v(elem, camelName.slice('captureCatch'.length), dataValueToString(v), true, false, true, true, generalLvaluePath);\n }\n else if (camelName.startsWith('on')) {\n this.v(elem, camelName.slice('on'.length), dataValueToString(v), false, false, false, true, generalLvaluePath);\n }\n else {\n return false;\n }\n return true;\n };\n if (isComponent(elem)) {\n const nodeDataProxy = Component.getDataProxy(elem);\n const camelName = dashToCamelCase(name);\n if (nodeDataProxy.replaceProperty(camelName, v)) {\n if (modelLvaluePath !== undefined) {\n if (modelLvaluePath === null) {\n nodeDataProxy.setModelBindingListener(camelName, () => { });\n }\n else {\n nodeDataProxy.setModelBindingListener(camelName, (value) => {\n const host = elem.ownerShadowRoot.getHostNode();\n const nodeDataProxy = Component.getDataProxy(host);\n nodeDataProxy.replaceDataOnPath(modelLvaluePath, value);\n nodeDataProxy.applyDataUpdates(false);\n });\n }\n }\n const tmplArgs = getTmplArgs(elem);\n if ((_a = tmplArgs.changeProp) === null || _a === void 0 ? void 0 : _a[name]) {\n const lv = tmplArgs.changeProp[name];\n const oldValue = lv.oldValue;\n if (oldValue !== v) {\n lv.oldValue = v;\n const 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, v);\n }\n else {\n // compatibilities for legacy event binding syntax\n checkFallbackEventListener(camelName);\n }\n }\n else if (isNativeNode(elem)) {\n if (this.fallbackListenerOnNativeNode) {\n // compatibilities for legacy event binding syntax\n const camelName = dashToCamelCase(name);\n if (!checkFallbackEventListener(camelName)) {\n elem.updateAttribute(name, v);\n }\n }\n else {\n elem.updateAttribute(name, v);\n }\n if (modelLvaluePath) {\n elem.setModelBindingListener(name, (value) => {\n const host = elem.ownerShadowRoot.getHostNode();\n const nodeDataProxy = Component.getDataProxy(host);\n nodeDataProxy.replaceDataOnPath(modelLvaluePath, value);\n nodeDataProxy.applyDataUpdates(false);\n });\n }\n }\n };\n this.shadowRoot = shadowRoot;\n this.procGen = procGen;\n this.fallbackListenerOnNativeNode = fallbackListenerOnNativeNode;\n if (eventObjectFilter) {\n this.eventObjectFilter = eventObjectFilter;\n }\n }\n create(data) {\n const { shadowRoot, procGen } = this;\n const children = procGen(this, true, data, undefined);\n this.handleChildrenCreationAndInsert(children.C, shadowRoot, undefined, undefined);\n return children.B;\n }\n update(data, dataUpdatePathTree) {\n const { shadowRoot, procGen } = this;\n const children = procGen(this, false, data, dataUpdatePathTree);\n this.handleChildrenUpdate(children.C, shadowRoot, undefined, undefined);\n }\n bindingMapUpdate(field, data, bindingMapGenList) {\n if (this.bindingMapDisabled)\n return false;\n const updaters = bindingMapGenList[field];\n if (!updaters)\n return false;\n let prevElement = null;\n for (let i = 0; i < updaters.length; i += 1) {\n const bindingMapGen = updaters[i];\n bindingMapGen(data, \n // eslint-disable-next-line no-loop-func\n (elem) => {\n if (prevElement !== null && elem !== prevElement) {\n if (isComponent(prevElement)) {\n if (prevElement.hasPendingChanges()) {\n const nodeDataProxy = Component.getDataProxy(prevElement);\n nodeDataProxy.applyDataUpdates(true);\n }\n }\n }\n prevElement = elem;\n }, (elem, v) => {\n elem.textContent = v;\n });\n }\n const elem = prevElement;\n if (elem !== null) {\n if (isComponent(elem)) {\n if (elem.hasPendingChanges()) {\n const nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n }\n }\n return true;\n }\n handleChildrenCreation(children, slotElement, dynamicSlotName) {\n const childNodes = [];\n children(true, \n // text node\n (textContent, textInit) => {\n if (slotElement && dynamicSlotName !== '') {\n const elem = this.createDynamicPlaceholder(slotElement);\n childNodes.push(elem);\n return;\n }\n const 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 (tagName, genericImpls, propertyInit, children, slot, dynamicSlotValueNames) => {\n if (slotElement && dynamicSlotName !== (slot || '')) {\n const elem = this.createDynamicPlaceholder(slotElement);\n childNodes.push(elem);\n return;\n }\n const elem = this.createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames);\n if (slotElement) {\n Element.setSlotElement(elem, slotElement);\n const 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 (branchKey, branchFunc) => {\n const elem = this.shadowRoot.createVirtualNode('wx:if');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.key = branchKey;\n this.handleChildrenCreationAndInsert(branchFunc, elem, slotElement, dynamicSlotName);\n childNodes.push(elem);\n }, \n // wx:for node\n (list, key, oriListUpdatePathTree, lvaluePath, itemCallback) => {\n const shadowRoot = this.shadowRoot;\n const elem = shadowRoot.createVirtualNode('wx:for');\n elem.destroyBackendElementOnDetach();\n Element.setInheritSlots(elem);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.keyList = new RangeListManager(key, list, elem, shadowRoot, (item, index) => {\n const childNode = shadowRoot.createVirtualNode('wx:for-item');\n childNode.destroyBackendElementOnDetach();\n Element.setInheritSlots(childNode);\n if (slotElement)\n Element.setSlotElement(elem, slotElement);\n this.handleChildrenCreationAndInsert((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n itemCallback(true, item, index, undefined, undefined, lvaluePath ? [...lvaluePath, index] : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n return childNode;\n });\n childNodes.push(elem);\n }, \n // slot node\n (slotName, slotValueInit, slot) => {\n const elem = this.shadowRoot.createVirtualNode('slot');\n elem.destroyBackendElementOnDetach();\n Element.setSlotName(elem, dataValueToString(slotName));\n if (slotElement) {\n Element.setSlotElement(elem, slotElement);\n }\n else if (slot !== undefined) {\n elem.slot = slot;\n }\n if (slotValueInit)\n slotValueInit(elem);\n childNodes.push(elem);\n }, \n // other virtual node\n (children, slot) => {\n if (slot !== undefined) {\n if (slotElement) {\n if (dynamicSlotName === slot) {\n const elem = this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = true;\n this.handleChildrenCreationAndInsert(children, elem, undefined, undefined);\n childNodes.push(elem);\n }\n else {\n const elem = this.createDynamicPlaceholder(slotElement);\n childNodes.push(elem);\n }\n }\n else {\n const 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 const 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 handleChildrenCreationAndInsert(children, parentNode, slotElement, dynamicSlotName) {\n const childNodes = this.handleChildrenCreation(children, slotElement, dynamicSlotName);\n if (childNodes.length)\n parentNode.insertChildren(childNodes, -1);\n }\n handleChildrenUpdate(children, parentNode, slotElement, dynamicSlotName) {\n let index = 0;\n const childNodes = slotElement\n ? slotElement.slotNodes.filter((node) => node.parentNode === parentNode)\n : parentNode.childNodes;\n children(false, \n // text node\n (textContent) => {\n const elem = childNodes[index];\n index += 1;\n if (slotElement) {\n const 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 (tagName, genericImpls, propertyInit, children, slot, dynamicSlotValueNames) => {\n const elem = childNodes[index];\n index += 1;\n if (slotElement) {\n const tmplArgs = getTmplArgs(elem);\n if (dynamicSlotName === (slot || '')) {\n if (!tmplArgs.dynamicSlotNameMatched) {\n const newElem = this.createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames);\n Element.setSlotElement(newElem, slotElement);\n const newTmplArgs = getTmplArgs(newElem);\n newTmplArgs.dynamicSlotNameMatched = true;\n parentNode.replaceChild(newElem, elem);\n return;\n }\n }\n else {\n if (tmplArgs.dynamicSlotNameMatched) {\n const newElem = this.createDynamicPlaceholder(slotElement);\n parentNode.replaceChild(newElem, elem);\n }\n return;\n }\n }\n propertyInit(elem, false);\n let dynSlot = false;\n if (isComponent(elem)) {\n const sr = this.dynamicSlotUpdate(elem, dynamicSlotValueNames, children);\n if (sr)\n dynSlot = true;\n if (elem.hasPendingChanges()) {\n const 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 (branchKey, branchFunc) => {\n const elem = childNodes[index];\n index += 1;\n const tmplArgs = getTmplArgs(elem);\n if (tmplArgs.key === branchKey) {\n this.handleChildrenUpdate(branchFunc, elem, slotElement, dynamicSlotName);\n }\n else {\n const newElem = this.shadowRoot.createVirtualNode('wx:if');\n newElem.destroyBackendElementOnDetach();\n Element.setInheritSlots(newElem);\n if (slotElement)\n Element.setSlotElement(newElem, slotElement);\n const tmplArgs = getTmplArgs(newElem);\n tmplArgs.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 (list, key, oriListUpdatePathTree, lvaluePath, itemCallback) => {\n const elem = childNodes[index];\n index += 1;\n const tmplArgs = getTmplArgs(elem);\n const keyListManager = tmplArgs.keyList;\n keyListManager.diff(list, oriListUpdatePathTree, elem, (item, index) => {\n const 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((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n itemCallback(true, item, index, undefined, undefined, lvaluePath ? [...lvaluePath, index] : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n return childNode;\n }, (item, index, updatePathTree, indexChanged, childNode) => {\n this.handleChildrenUpdate((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n itemCallback(false, item, index, updatePathTree, indexChanged ? true : undefined, lvaluePath ? [...lvaluePath, index] : null, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode);\n }, childNode, slotElement, dynamicSlotName);\n });\n }, \n // slot node\n (slotName, slotValueInit, slot) => {\n const elem = childNodes[index];\n index += 1;\n if (slotName !== undefined) {\n Element.setSlotName(elem, dataValueToString(slotName));\n }\n if (!slotElement) {\n if (slot !== undefined)\n elem.slot = slot;\n }\n if (slotValueInit)\n slotValueInit(elem);\n this.shadowRoot.applySlotValueUpdates(elem);\n }, \n // other virtual node\n (children, slot) => {\n const elem = childNodes[index];\n index += 1;\n if (slot !== undefined) {\n if (slotElement) {\n const tmplArgs = getTmplArgs(elem);\n if (dynamicSlotName === slot) {\n if (tmplArgs.dynamicSlotNameMatched) {\n this.handleChildrenUpdate(children, elem, undefined, undefined);\n }\n else {\n const newElem = this.shadowRoot.createVirtualNode('virtual');\n newElem.destroyBackendElementOnDetach();\n Element.setSlotElement(newElem, slotElement);\n const 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 const 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 dynamicSlotUpdate(elem, dynamicSlotValueNames, children) {\n const sr = elem.getShadowRoot();\n if ((sr === null || sr === void 0 ? void 0 : sr.getSlotMode()) === 3 /* SlotMode.Dynamic */) {\n sr.setDynamicSlotHandler(dynamicSlotValueNames || [], (slots) => {\n const childNodes = [];\n for (let i = 0; i < slots.length; i += 1) {\n const { slot, name: slotName, slotValues } = slots[i];\n const slotChildNodes = this.handleChildrenCreation((isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode) => {\n children(true, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot, definePureVirtualNode, slotValues, undefined);\n }, slot, slotName);\n childNodes.push(...slotChildNodes);\n }\n if (childNodes.length)\n elem.insertChildren(childNodes, -1);\n }, (slots) => {\n if (!slots.length || !slots[0].slotNodes.length)\n return;\n slots.sort((slot1, slot2) => slot1.slotNodes[0].parentIndex - slot2.slotNodes[0].parentIndex);\n let l = -Infinity;\n let r = -Infinity;\n for (let i = 0; i < slots.length; i += 1) {\n const slotNodes = slots[i].slotNodes;\n const 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 }, (slot, slotValues, slotValueUpdatePathTrees) => {\n const slotName = slot._$slotName || '';\n this.handleChildrenUpdate((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 createDynamicPlaceholder(slotElement) {\n const elem = this.shadowRoot.createVirtualNode('virtual');\n elem.destroyBackendElementOnDetach();\n Element.setSlotElement(elem, slotElement);\n const tmplArgs = getTmplArgs(elem);\n tmplArgs.dynamicSlotNameMatched = false;\n return elem;\n }\n createCommonElement(tagName, genericImpls, propertyInit, children, dynamicSlotValueNames) {\n let dynSlot = false;\n const initPropValues = (elem) => {\n const sr = isComponent(elem)\n ? this.dynamicSlotUpdate(elem, dynamicSlotValueNames, children)\n : null;\n if (sr)\n dynSlot = true;\n propertyInit(elem, true);\n if (isComponent(elem)) {\n if (elem.hasPendingChanges()) {\n const nodeDataProxy = Component.getDataProxy(elem);\n nodeDataProxy.applyDataUpdates(true);\n }\n sr === null || sr === void 0 ? void 0 : sr.applySlotUpdates();\n }\n };\n const placeholderCallback = () => {\n var _a;\n const replacer = this.shadowRoot.createComponent(tagName, tagName, genericImpls, undefined, initPropValues);\n replacer.destroyBackendElementOnDetach();\n const replacerShadowRoot = replacer.getShadowRoot();\n const elemShadowRoot = isComponent(elem) ? elem.getShadowRoot() : null;\n const isElemDynamicSlots = (elemShadowRoot === null || elemShadowRoot === void 0 ? void 0 : elemShadowRoot.getSlotMode()) === 3 /* SlotMode.Dynamic */;\n const isReplacerDynamicSlots = (replacerShadowRoot === null || replacerShadowRoot === void 0 ? void 0 : replacerShadowRoot.getSlotMode()) === 3 /* SlotMode.Dynamic */;\n if (isReplacerDynamicSlots !== isElemDynamicSlots) {\n dispatchError(new Error(`The \"dynamicSlots\" option of component <${replacer.is}> and its placeholder <${elem.is}> should be the same.`), '[render]', isComponent(replacer) ? replacer : replacer.is);\n }\n else if (isReplacerDynamicSlots) {\n (_a = elem.parentNode) === null || _a === void 0 ? void 0 : _a.replaceChild(replacer, elem);\n }\n else {\n elem.selfReplaceWith(replacer);\n }\n };\n const elem = this.shadowRoot.createComponent(tagName, tagName, genericImpls, placeholderCallback, initPropValues);\n elem.destroyBackendElementOnDetach();\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 s(elem, v) {\n elem.slot = v;\n }\n // set slot value\n l(elem, name, value) {\n this.shadowRoot.replaceSlotValue(elem, name, value);\n }\n // set id\n i(elem, v) {\n elem.id = v;\n }\n // set class or external classes named `class`\n c(elem, v) {\n if (isComponent(elem)) {\n // \"class\" itself can also be an external class\n const hasExternalClass = elem.hasExternalClass('class');\n if (hasExternalClass) {\n elem.setExternalClass('class', v);\n }\n }\n elem.setNodeClass(v);\n }\n // set style or property named `style`\n y(elem, v) {\n if (isComponent(elem) && Component.hasProperty(elem, 'style')) {\n const nodeDataProxy = Component.getDataProxy(elem);\n const camelName = dashToCamelCase('style');\n nodeDataProxy.replaceProperty(camelName, v);\n }\n else {\n elem.setNodeStyle(dataValueToString(v), 0 /* StyleSegmentIndex.MAIN */);\n }\n }\n // set dataset\n d(elem, name, v) {\n elem.setDataset(name, v);\n }\n // set mark\n m(elem, name, v) {\n elem.setMark(name, v);\n }\n // set event handler\n v(elem, evName, v, final, mutated, capture, isDynamic, _generalLvaluePath) {\n const handler = typeof v === 'function' ? this.eventListenerFilter(v) : dataValueToString(v);\n const listener = (ev) => {\n const host = elem.ownerShadowRoot.getHostNode();\n let ret;\n const methodCaller = host.getMethodCaller();\n const f = typeof handler === 'function' ? handler : Component.getMethod(host, handler);\n if (typeof f === 'function') {\n const filteredEv = this.eventObjectFilter(ev);\n ret = f.call(methodCaller, filteredEv);\n }\n return ret;\n };\n if (ENV.DEV) {\n Object.defineProperty(listener, 'name', {\n value: typeof handler === 'string' ? handler : handler.name,\n });\n }\n const evOptions = {\n final,\n mutated,\n capture,\n };\n if (isDynamic) {\n const tmplArgs = getTmplArgs(elem);\n if (!tmplArgs.dynEvListeners)\n tmplArgs.dynEvListeners = {};\n const 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 // set a worklet directive value\n wl(elem, name, value) {\n if (isComponent(elem)) {\n elem.triggerWorkletChangeLifetime(name, value);\n }\n else {\n // TODO warn unused worklet\n }\n }\n // add a change property binding\n p(elem, name, v, _generalLvaluePath) {\n if (isComponent(elem)) {\n if (Component.hasProperty(elem, name)) {\n const 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 setFnFilter(changePropFilter, eventListenerFilter) {\n this.changePropFilter = changePropFilter;\n this.eventListenerFilter = eventListenerFilter;\n }\n}\nexport var GeneralLvaluePathPrefix;\n(function (GeneralLvaluePathPrefix) {\n GeneralLvaluePathPrefix[GeneralLvaluePathPrefix[\"Data\"] = 0] = \"Data\";\n GeneralLvaluePathPrefix[GeneralLvaluePathPrefix[\"Script\"] = 1] = \"Script\";\n GeneralLvaluePathPrefix[GeneralLvaluePathPrefix[\"InlineScript\"] = 2] = \"InlineScript\";\n})(GeneralLvaluePathPrefix || (GeneralLvaluePathPrefix = {}));\n//# sourceMappingURL=proc_gen_wrapper.js.map","/* eslint-disable class-methods-use-this */\n/* global document */\nimport { dataValueToString, } from './proc_gen_wrapper';\nconst noop = () => {\n /* empty */\n};\nexport class ProcGenWrapperDom {\n constructor(shadowRoot, procGen) {\n this.shadowRoot = shadowRoot;\n this.procGen = procGen;\n }\n create(data) {\n const { shadowRoot, procGen } = this;\n const children = procGen(this, true, data, undefined);\n this.handleChildrenCreation(children.C, shadowRoot.shadowRootElement);\n return children.B;\n }\n bindingMapUpdate(field, data, bindingMapGenList) {\n const updaters = bindingMapGenList[field];\n if (updaters === undefined)\n return;\n for (let i = 0; i < updaters.length; i += 1) {\n const bindingMapGen = updaters[i];\n bindingMapGen(data, () => {\n /* empty */\n }, (elem, v) => {\n ;\n elem.textContent = v;\n });\n }\n }\n handleChildrenCreation(children, parentNode) {\n let slotMergeable = true;\n let slotMerged = false;\n const appendSlot = () => {\n slotMergeable = false;\n slotMerged = false;\n const elem = document.createElement('virtual');\n parentNode.appendChild(elem);\n this.shadowRoot.slot = elem;\n };\n children(true, \n // text node\n (textContent, textInit) => {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n const elem = document.createTextNode(textContent || '');\n if (textInit)\n textInit(elem);\n parentNode.appendChild(elem);\n }, \n // component or native node\n (tagName, genericImpls, propertyInit, children) => {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n const 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 () => {\n if (slotMergeable) {\n slotMerged = true;\n this.shadowRoot.slot = parentNode;\n }\n else {\n appendSlot();\n }\n }, \n // other virtual node\n (children) => {\n if (slotMerged)\n appendSlot();\n else\n slotMergeable = false;\n const elem = document.createElement('virtual');\n this.handleChildrenCreation(children, elem);\n parentNode.appendChild(elem);\n });\n }\n // set slot\n s() {\n noop();\n }\n // set id\n i(elem, v) {\n this.shadowRoot.idMap[v] = elem;\n }\n // set class or external classes named `class`\n c(elem, v) {\n elem.setAttribute('class', v);\n }\n // set style or property named `style`\n y(elem, v) {\n elem.setAttribute('style', v);\n }\n // set dataset\n d(elem, name, v) {\n elem.dataset[name] = dataValueToString(v);\n }\n // set mark\n m() {\n noop();\n }\n // set event handler\n v(elem, evName, v, final) {\n this.shadowRoot.setListener(elem, evName, (ev) => {\n const handler = this.shadowRoot.template.methods[v];\n const 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 r(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 p() {\n noop();\n }\n // set filter functions for change properties and event listeners\n setFnFilter() {\n noop();\n }\n}\n//# sourceMappingURL=proc_gen_wrapper_dom.js.map","/* global document: false */\nimport { ProcGenWrapperDom } from './proc_gen_wrapper_dom';\nconst DEFAULT_PROC_GEN_DOM = () => ({\n C: (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot) => {\n defineSlot('');\n },\n B: Object.create(null),\n});\nexport const DEFAULT_PROC_GEN_GROUP_DOM = () => DEFAULT_PROC_GEN_DOM;\nexport class GlassEaselTemplateDOM {\n constructor(behavior) {\n if (typeof behavior._$template !== 'object' && behavior._$template !== undefined) {\n throw new Error(`Component template of ${behavior.is} must be a valid compiled template (or \"null\" for default template).`);\n }\n else {\n const 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 createInstance(comp) {\n return new GlassEaselTemplateDOMInstance(this, comp);\n }\n}\nexport class GlassEaselTemplateDOMInstance {\n constructor(template, comp) {\n if (comp.getBackendMode() !== 3 /* BackendMode.Domlike */) {\n throw new Error(`Component template of ${comp.is} cannot be initialized since external rendering is only supported in Domlike backend currently.`);\n }\n const shadowRootElement = comp.getBackendElement();\n if (!shadowRootElement) {\n throw new Error(`Component template of ${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 const 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 initValues(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 const 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 const slot = document.createElement('virtual');\n shadowRoot.appendChild(slot);\n this.slot = slot;\n }\n }\n getIdMap() {\n return this.idMap;\n }\n updateValues(data, changes) {\n const bindingMapGen = this.bindingMapGen;\n for (let i = 0; i < changes.length; i += 1) {\n const [path] = changes[i];\n this.procGenWrapper.bindingMapUpdate(path[0], data, bindingMapGen);\n }\n }\n // eslint-disable-next-line class-methods-use-this\n setListener(elem, ev, listener) {\n const target = elem;\n if (target._$wxTmplEv) {\n target._$wxTmplEv[ev] = listener;\n }\n else {\n target._$wxTmplEv = { [ev]: listener };\n }\n }\n handleEvent(elem, event) {\n var _a;\n const target = elem;\n let cur = target;\n const root = this.shadowRootElement;\n const evName = event.getEventName();\n const bubbles = event.bubbles;\n for (;;) {\n const shadowedEvent = event.wrapShadowedEvent(target, null, cur);\n const f = (_a = cur._$wxTmplEv) === null || _a === void 0 ? void 0 : _a[evName];\n if (f) {\n const 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 const next = cur.parentNode;\n if (next)\n cur = next;\n else\n break;\n }\n }\n}\n//# sourceMappingURL=native_rendering.js.map","/* eslint-disable class-methods-use-this */\nimport { GlassEaselTemplateDOM } from './native_rendering';\nimport { ProcGenWrapper, } from './proc_gen_wrapper';\nconst DEFAULT_PROC_GEN = () => ({\n C: (isCreation, defineTextNode, defineElement, defineIfGroup, defineForLoop, defineSlot) => {\n defineSlot('');\n },\n B: Object.create(null),\n});\nexport const DEFAULT_PROC_GEN_GROUP = () => 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 = {}));\nexport class GlassEaselTemplateEngine {\n create(behavior, componentOptions) {\n if (componentOptions.externalComponent) {\n return new GlassEaselTemplateDOM(behavior);\n }\n return new GlassEaselTemplate(behavior);\n }\n}\nclass GlassEaselTemplate {\n constructor(behavior) {\n this.updateTemplate(behavior);\n }\n /**\n * Update the underlying template content\n *\n * This method does not affect created instances.\n */\n updateTemplate(behavior) {\n const template = behavior._$template;\n if (typeof template !== 'object' && template !== undefined) {\n throw new Error(`Component template of ${behavior.is} must be a valid compiled template (or \"null\" for default template).`);\n }\n const 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.fallbackListenerOnNativeNode = c.fallbackListenerOnNativeNode || false;\n this.eventObjectFilter = c.eventObjectFilter;\n }\n createInstance(comp, createShadowRoot) {\n return new GlassEaselTemplateInstance(this, comp, createShadowRoot(comp));\n }\n}\nclass GlassEaselTemplateInstance {\n constructor(template, comp, shadowRoot) {\n this.comp = comp;\n this.shadowRoot = shadowRoot;\n this.shadowRoot.destroyBackendElementOnDetach();\n this._$applyTemplate(template);\n }\n updateTemplate(template, data) {\n this._$applyTemplate(template);\n this.shadowRoot.removeChildren(0, this.shadowRoot.childNodes.length);\n this.bindingMapGen = this.procGenWrapper.create(data);\n }\n _$applyTemplate(template) {\n const 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.fallbackListenerOnNativeNode, template.eventObjectFilter);\n this.bindingMapGen = undefined;\n }\n initValues(data) {\n this.bindingMapGen = this.procGenWrapper.create(data);\n return this.shadowRoot;\n }\n updateValues(data, changes) {\n if (this.forceBindingMapUpdate === 2 /* BindingMapUpdateEnabled.Forced */) {\n for (let 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 const dataUpdatePathTree = Object.create(null);\n for (let i = 0; i < changes.length; i += 1) {\n const [p, newVal, spliceIndex, spliceDel] = changes[i];\n let cur = dataUpdatePathTree;\n for (let j = 0; j < p.length; j += 1) {\n const field = p[j];\n const 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 const startIndex = spliceIndex;\n if (v === undefined) {\n cur[field] = new Array(startIndex);\n }\n else if (!Array.isArray(v)) {\n const arr = new Array(startIndex);\n const keys = Object.keys(v);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n const item = v[key];\n const index = Number(key);\n if (arr.length < index)\n arr.length = index;\n arr[key] = item;\n }\n cur[field] = arr;\n }\n const arr = cur[field];\n if (arr.length < startIndex) {\n arr.length = startIndex;\n }\n const inserts = new Array(newVal.length);\n inserts.fill(true);\n arr.splice(spliceIndex, spliceDel, ...inserts);\n }\n break;\n }\n if (v === undefined) {\n const 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 tryBindingMapUpdate(data, change) {\n if (!change)\n return true;\n const bindingMapGen = this.bindingMapGen;\n if (!bindingMapGen) {\n return false;\n }\n const [path] = change;\n if (path.length !== 1)\n return false;\n return this.procGenWrapper.bindingMapUpdate(path[0], data, bindingMapGen);\n }\n}\nlet defaultTemplateEngine = null;\nexport const getDefaultTemplateEngine = () => {\n if (defaultTemplateEngine) {\n return defaultTemplateEngine;\n }\n const tmpl = new GlassEaselTemplateEngine();\n defaultTemplateEngine = tmpl;\n return tmpl;\n};\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { BM, } from './backend';\nimport { CurrentWindowBackendContext } from './backend/current_window_backend_context';\nimport { EmptyBackendContext } from './backend/empty_backend';\nimport { EmptyComposedBackendContext } from './backend/empty_composed_backend';\nimport { ClassList, StyleScopeManager } from './class_list';\nimport { METHOD_TAG, } from './component_params';\nimport { getDefaultComponentSpace } from './component_space';\nimport { parseMultiPaths, parseSinglePath } from './data_path';\nimport { DataGroup, getDeepCopyStrategy, } from './data_proxy';\nimport { simpleDeepCopy } from './data_utils';\nimport { performanceMeasureEnd, performanceMeasureRenderWaterfall, performanceMeasureStart, } from './devtool';\nimport { Element } from './element';\nimport { FuncArr, safeCallback } from './func_arr';\nimport { ENV, globalOptions, normalizeComponentOptions, } from './global_options';\nimport { Relation, generateRelationDefinitionGroup, normalizeRelation, } from './relation';\nimport { ShadowRoot } from './shadow_root';\nimport { getDefaultTemplateEngine } from './tmpl';\nimport { TraitBehavior, TraitGroup } from './trait_behaviors';\nimport { COMPONENT_SYMBOL, isComponent, isElement } from './type_symbol';\nimport { ThirdError, dispatchError, triggerWarning } from './warning';\nexport const convertGenerics = (compDef, sourceBehavior, owner, genericTargets) => {\n const space = sourceBehavior.ownerSpace;\n const hostUsing = owner === null || owner === void 0 ? void 0 : owner._$behavior._$using;\n const hostGenericImpls = owner === null || owner === void 0 ? void 0 : owner._$genericImpls;\n if (!compDef._$detail)\n compDef.prepare();\n const childBeh = compDef.behavior;\n let genericImpls;\n const generics = childBeh._$generics;\n if (generics) {\n const genericDefaults = childBeh._$genericDefaults;\n genericImpls = Object.create(null);\n for (let i = 0; i < generics.length; i += 1) {\n const key = generics[i];\n if (genericTargets && Object.prototype.hasOwnProperty.call(genericTargets, key)) {\n const 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 const 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 \"${key}\" value \"${target}\" is not valid`, compDef.is);\n const defaultComp = space.getDefaultComponent();\n if (!defaultComp) {\n throw new ThirdError(`Cannot find default component for generic \"${key}\"`, '[prepare]', 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 const defaultComp = genericDefaults[key] || space.getDefaultComponent();\n if (!defaultComp) {\n throw new ThirdError(`Cannot find default component for generic \"${key}\"`, '[prepare]', 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 const resolvePlaceholder = (placeholder, space, behavior, genericImpls) => {\n const using = behavior._$using;\n const usingTarget = using[placeholder] || (genericImpls && genericImpls[placeholder]);\n let 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`, behavior.is);\n }\n }\n if (ret)\n return ret;\n let comp = space.getGlobalUsingComponent(placeholder);\n if (comp === null && space._$allowUnusedNativeNode && placeholder !== '') {\n comp = placeholder;\n }\n if (!comp) {\n comp = space.getDefaultComponent();\n if (!comp) {\n throw new ThirdError(`Cannot find placeholder target \"${placeholder}\"`, '[prepare]', behavior.is);\n }\n triggerWarning(`Cannot find placeholder target \"${placeholder}\", using default component.`, behavior.is);\n }\n return comp;\n};\nexport class ComponentDefinition {\n /** @internal */\n constructor(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 const templateEngine = this._$options.templateEngine;\n this._$templateEngine = templateEngine !== null && templateEngine !== void 0 ? templateEngine : getDefaultTemplateEngine();\n }\n general() {\n return this;\n }\n /** Get the normalized component options */\n getComponentOptions() {\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 getComponentDependencies() {\n return this.behavior.getComponentDependencies();\n }\n /**\n * Update the template field\n *\n * This method throws error if the template engine does not support template update.\n */\n updateTemplate(template) {\n var _a;\n if (!((_a = this._$detail) === null || _a === void 0 ? void 0 : _a.template.updateTemplate)) {\n throw new Error(`The template engine of component \"${this.is}\" does not support template update`);\n }\n this.behavior._$updateTemplate(template);\n this._$detail.template.updateTemplate(this.behavior);\n }\n isPrepared() {\n return !!this._$detail;\n }\n prepare() {\n if (this._$detail)\n return;\n this.behavior.prepare();\n const behavior = this.behavior;\n const options = this._$options;\n const propSetters = {};\n // add properties to component prototype if needed\n if (options.writeFieldsToNode) {\n const keys = Object.keys(behavior._$propertyMap);\n for (let i = 0; i < keys.length; i += 1) {\n const propName = keys[i];\n propSetters[propName] = {\n enumerable: true,\n get() {\n return this._$dataGroup.data[propName];\n },\n set(v) {\n const dataGroup = this._$dataGroup;\n dataGroup.replaceDataOnPath([propName], v);\n dataGroup.applyDataUpdates();\n },\n };\n }\n const methodKeys = Object.keys(behavior._$methodMap);\n for (let i = 0; i < methodKeys.length; i += 1) {\n const methodName = methodKeys[i];\n propSetters[methodName] = {\n enumerable: true,\n value: behavior._$methodMap[methodName],\n };\n }\n }\n // create prototype\n const 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 const proto = protoFunc.prototype;\n proto._$behavior = behavior;\n proto._$definition = this;\n proto._$methodMap = behavior._$methodMap;\n // init other helpers\n const dataGroupObserverTree = behavior._$generateObserverTree();\n proto._$lifetimeFuncs = behavior._$getAllLifetimeFuncs();\n proto._$pageLifetimeFuncs = behavior._$getAllPageLifetimeFuncs();\n const relationDefinitionGroup = generateRelationDefinitionGroup(behavior._$relationMap);\n const dataDeepCopy = getDeepCopyStrategy(options.dataDeepCopy);\n const propertyPassingDeepCopy = getDeepCopyStrategy(options.propertyPassingDeepCopy);\n // call template engine\n const template = this._$templateEngine.create(behavior, options);\n this._$detail = {\n proto,\n template,\n dataGroupObserverTree,\n dataDeepCopy,\n propertyPassingDeepCopy,\n relationDefinitionGroup,\n };\n }\n}\nlet componentInstanceIdInc = 1;\nlet defaultBackendContext = null;\nexport const getDefaultBackendContext = () => {\n if (defaultBackendContext)\n return defaultBackendContext;\n let c;\n if (BM.DOMLIKE) {\n c = new CurrentWindowBackendContext();\n }\n else if (BM.COMPOSED) {\n c = new EmptyComposedBackendContext();\n }\n else {\n c = new EmptyBackendContext();\n }\n defaultBackendContext = c;\n return c;\n};\n/**\n * A node that has a shadow tree attached to it\n */\nexport class Component extends Element {\n /* istanbul ignore next */\n constructor() {\n throw new Error('Element cannot be constructed directly');\n // eslint-disable-next-line no-unreachable\n super();\n }\n general() {\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 asInstanceOf(componentDefinition) {\n if (this._$behavior !== componentDefinition.behavior) {\n return null;\n }\n return this;\n }\n static register(def, space) {\n return (space || getDefaultComponentSpace()).defineComponent(def);\n }\n /** @internal */\n static _$tagMethod(func) {\n const taggedMethod = func;\n taggedMethod[METHOD_TAG] = true;\n return taggedMethod;\n }\n /** @internal */\n static _$isTaggedMethod(func) {\n return typeof func === 'function' && !!func[METHOD_TAG];\n }\n /** @internal */\n static _$advancedCreate(tagName, def, owner, backendContext, genericImpls, placeholderHandlerRemover, initPropValues) {\n var _a, _b, _c, _d;\n if (!def._$detail) {\n if (ENV.DEV)\n performanceMeasureStart('component.prepare');\n def.prepare();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n const { proto, template, dataDeepCopy, propertyPassingDeepCopy, relationDefinitionGroup } = def._$detail;\n let dataGroupObserverTree = def._$detail.dataGroupObserverTree;\n const options = def._$options;\n const behavior = def.behavior;\n const nodeTreeContext = owner\n ? owner.getBackendContext()\n : backendContext || globalOptions.backendContext || getDefaultBackendContext();\n const external = options.externalComponent;\n const propEarlyInit = options.propertyEarlyInit;\n const writeExtraInfoToAttr = globalOptions.writeExtraInfoToAttr;\n const virtualHost = options.virtualHost;\n // initialize component instance object\n const comp = Object.create(proto);\n if (ENV.DEV)\n performanceMeasureStart('component.create', comp);\n comp._$genericImpls = genericImpls;\n comp._$placeholderHandlerRemover = placeholderHandlerRemover;\n comp._$external = external;\n comp.tagName = tagName;\n comp._$methodCaller = comp;\n comp._$virtual = virtualHost;\n // create backend element\n let backendElement = null;\n if (nodeTreeContext) {\n if (BM.DOMLIKE || (BM.DYNAMIC && nodeTreeContext.mode === 3 /* BackendMode.Domlike */)) {\n if (!virtualHost) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createElement');\n backendElement = nodeTreeContext.document.createElement(tagName);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else if (BM.COMPOSED || (BM.DYNAMIC && nodeTreeContext.mode === 2 /* BackendMode.Composed */)) {\n if (!virtualHost) {\n if (ENV.DEV)\n performanceMeasureStart('backend.createElement');\n backendElement = nodeTreeContext.createElement(options.hostNodeTagName, tagName);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n }\n else if (BM.SHADOW || (BM.DYNAMIC && nodeTreeContext.mode === 1 /* BackendMode.Shadow */)) {\n if (ENV.DEV)\n performanceMeasureStart('component.createComponent');\n const be = (owner ? owner._$backendShadowRoot : nodeTreeContext.getRootNode()).createComponent(tagName, external, virtualHost, (_a = options.styleScope) !== null && _a !== void 0 ? _a : StyleScopeManager.globalScope(), options.extraStyleScope, behavior._$externalClasses);\n if (ENV.DEV)\n performanceMeasureEnd();\n backendElement = be;\n }\n }\n comp._$initialize(virtualHost, backendElement, owner, owner ? owner._$nodeTreeContext : nodeTreeContext);\n const ownerHost = owner ? owner.getHostNode() : undefined;\n const ownerComponentOptions = ownerHost === null || ownerHost === void 0 ? void 0 : ownerHost.getComponentOptions();\n // init class list\n const styleScope = (_b = ownerComponentOptions === null || ownerComponentOptions === void 0 ? void 0 : ownerComponentOptions.styleScope) !== null && _b !== void 0 ? _b : StyleScopeManager.globalScope();\n const extraStyleScope = (_c = ownerComponentOptions === null || ownerComponentOptions === void 0 ? void 0 : ownerComponentOptions.extraStyleScope) !== null && _c !== void 0 ? _c : undefined;\n const styleScopeManager = ownerHost === null || ownerHost === void 0 ? void 0 : ownerHost._$behavior.ownerSpace.styleScopeManager;\n comp.classList = new ClassList(comp, behavior._$externalClasses, ownerHost ? ownerHost.classList : null, styleScope, extraStyleScope, styleScopeManager);\n if (backendElement) {\n if (BM.COMPOSED || (BM.DYNAMIC && nodeTreeContext.mode === 2 /* BackendMode.Composed */)) {\n ;\n backendElement.setStyleScope(styleScope, extraStyleScope, (_d = options.styleScope) !== null && _d !== void 0 ? _d : StyleScopeManager.globalScope());\n }\n if (styleScopeManager && writeExtraInfoToAttr) {\n const prefix = styleScopeManager.queryName(styleScope);\n if (prefix) {\n backendElement.setAttribute('exparser:info-class-prefix', `${prefix}--`);\n }\n }\n }\n // create template engine\n const tmplInst = template.createInstance(comp, \n // eslint-disable-next-line @typescript-eslint/unbound-method\n ShadowRoot.createShadowRoot);\n // associate in backend\n if (backendElement) {\n if (ENV.DEV)\n performanceMeasureStart('backend.associateValue');\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 if (ENV.DEV)\n performanceMeasureEnd();\n }\n // write attr\n if (writeExtraInfoToAttr && backendElement) {\n const 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 const staticData = behavior._$staticData;\n const dataGenFuncs = behavior._$data;\n let data;\n if (staticData === undefined) {\n if (dataGenFuncs.length === 1) {\n const f = dataGenFuncs[0];\n data = f(comp);\n }\n else {\n data = {};\n for (let i = 0; i < dataGenFuncs.length; i += 1) {\n const f = dataGenFuncs[i];\n Object.assign(data, f(comp));\n }\n }\n }\n else {\n data = simpleDeepCopy(staticData);\n for (let i = 0; i < dataGenFuncs.length; i += 1) {\n const f = dataGenFuncs[i];\n Object.assign(data, f(comp));\n }\n }\n // init relations\n const relation = (comp._$relation = new Relation(comp, relationDefinitionGroup));\n // init trait group\n comp._$traitGroup = new TraitGroup();\n const traitBehaviors = behavior._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n for (let i = 0; i < traitBehaviors.length; i += 1) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { traitBehavior, impl } = traitBehaviors[i];\n comp._$traitGroup.implement(traitBehavior, impl);\n }\n }\n // call method caller init\n if (behavior._$methodCallerInit) {\n const methodCaller = behavior._$methodCallerInit.call(comp);\n comp._$methodCaller = methodCaller;\n }\n // call init functions\n let initDone = false;\n function relationInit(relationDef) {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n const target = relationDef.target;\n const normalizedRel = normalizeRelation(behavior.ownerSpace, behavior.is, 'undefined', relationDef);\n let key;\n if (normalizedRel) {\n key = relation.add(normalizedRel);\n }\n else {\n key = Symbol('invalid');\n }\n const list = () => {\n const targetNodes = relation.getLinkedTargets(key);\n return targetNodes.map((x) => x.getMethodCaller());\n };\n const listAsTrait = target instanceof TraitBehavior\n ? () => {\n const targetNodes = relation.getLinkedTargets(key);\n return targetNodes.map((x) => x.traitBehavior(target));\n }\n : undefined;\n return { list, listAsTrait };\n }\n if (behavior._$init.length > 0) {\n let cowObserver = true;\n let cowLifetime = true;\n let cowPageLifetime = true;\n let cowMethodMap = true;\n const methodCaller = comp.getMethodCaller();\n const builderContext = {\n self: methodCaller,\n data,\n setData: comp.setData.bind(comp),\n implement: (traitBehavior, impl) => {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n comp._$traitGroup.implement(traitBehavior, impl);\n },\n relation: relationInit,\n observer: (dataPaths, func) => {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n if (cowObserver) {\n cowObserver = false;\n dataGroupObserverTree = dataGroupObserverTree.cloneSub();\n }\n try {\n dataGroupObserverTree.addObserver(func, parseMultiPaths(dataPaths));\n }\n catch (e) {\n // parse multi paths may throw errors\n dispatchError(e, `observer`, behavior.is);\n }\n },\n lifetime: (name, func) => {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n if (cowLifetime) {\n cowLifetime = false;\n comp._$lifetimeFuncs = behavior._$getAllLifetimeFuncs();\n }\n const fag = comp._$lifetimeFuncs;\n if (fag[name]) {\n fag[name].add(func);\n }\n else {\n const fa = (fag[name] = new FuncArr('lifetime'));\n fa.add(func);\n }\n },\n pageLifetime: (name, func) => {\n if (initDone)\n throw new ThirdError('Cannot execute init-time functions after initialization', '[implement]', behavior.is);\n if (cowPageLifetime) {\n cowPageLifetime = false;\n comp._$pageLifetimeFuncs = behavior._$getAllPageLifetimeFuncs();\n }\n const fag = comp._$pageLifetimeFuncs;\n if (fag[name]) {\n fag[name].add(func);\n }\n else {\n const fa = (fag[name] = new FuncArr('pageLifetime'));\n fa.add(func);\n }\n },\n method: (func) => Component._$tagMethod(func),\n listener: (func) => Component._$tagMethod(func),\n };\n const initFuncs = behavior._$init;\n for (let i = 0; i < initFuncs.length; i += 1) {\n const init = initFuncs[i];\n if (ENV.DEV)\n performanceMeasureStart('component.init', comp);\n const exported = safeCallback('Component Init', init, methodCaller, [builderContext], undefined);\n if (ENV.DEV)\n performanceMeasureEnd();\n if (exported) {\n const exportedKeys = Object.keys(exported);\n for (let j = 0; j < exportedKeys.length; j += 1) {\n const exportedKey = exportedKeys[j];\n const 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 const shadowRoot = tmplInst.shadowRoot;\n comp.shadowRoot = shadowRoot;\n const 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 if (ENV.DEV) {\n performanceMeasureRenderWaterfall('component.render', 'backend.render', comp, () => {\n tmplInst.initValues(dataGroup.innerData || dataGroup.data);\n });\n }\n else {\n tmplInst.initValues(dataGroup.innerData || dataGroup.data);\n }\n comp._$tmplInst = tmplInst;\n dataGroup.setUpdateListener((data, combinedChanges) => {\n if (ENV.DEV) {\n performanceMeasureRenderWaterfall('component.render', 'backend.render', comp, () => {\n tmplInst.updateValues(data, combinedChanges);\n });\n }\n else {\n tmplInst.updateValues(data, combinedChanges);\n }\n });\n // bind behavior listeners\n const listeners = behavior._$listeners;\n if (listeners !== undefined) {\n for (let i = 0; i < listeners.length; i += 1) {\n const { id, ev, listener: gf } = listeners[i];\n const listener = gf;\n if (id === 'this') {\n comp.addListener(ev, (ev) => listener.call(comp._$methodCaller, ev));\n }\n else if (!external) {\n const sr = shadowRoot;\n const elem = id ? sr.getElementById(id) : sr;\n if (elem) {\n elem.addListener(ev, (ev) => listener.call(comp._$methodCaller, ev));\n }\n }\n else {\n const sr = shadowRoot;\n const elem = id ? sr.getIdMap()[id] : sr.root;\n if (elem) {\n sr.setListener(elem, ev, (ev) => listener.call(comp._$methodCaller, ev));\n }\n }\n }\n }\n // trigger created lifetimes\n comp.triggerLifetime('created', []);\n if (!propEarlyInit && initPropValues !== undefined)\n initPropValues(comp);\n if (ENV.DEV)\n performanceMeasureEnd();\n return comp;\n }\n static createWithGenericsAndContext(tagName, componentDefinition, genericTargets, backendContext, initPropValues) {\n const collectGenericImpls = (def) => {\n let genericImpls;\n if (genericTargets) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n genericImpls = Object.create(null);\n Object.entries(genericTargets).forEach(([key, g]) => {\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 const compDef = getDefaultComponentSpace().getComponentByUrl(tagName, '');\n return Component._$advancedCreate(tagName, compDef, null, backendContext, collectGenericImpls(compDef), undefined);\n }\n static createWithGenerics(tagName, componentDefinition, genericImpls, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, genericImpls, null, initPropValues);\n }\n static createWithContext(tagName, componentDefinition, backendContext, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, null, backendContext, initPropValues);\n }\n static create(tagName, componentDefinition, initPropValues) {\n return Component.createWithGenericsAndContext(tagName, componentDefinition, null, null, initPropValues);\n }\n get is() {\n return this._$definition.is;\n }\n get properties() {\n return this._$dataGroup.data;\n }\n get data() {\n return this._$dataGroup.data;\n }\n set data(newData) {\n const dataGroup = this._$dataGroup;\n if (dataGroup === undefined) {\n throw new ThirdError('Cannot update data before component created', `data setter`, this);\n }\n Object.entries(newData).forEach(([key, value]) => dataGroup.replaceDataOnPath([key], value));\n dataGroup.applyDataUpdates();\n }\n get $() {\n if (this._$external) {\n return this.shadowRoot.getIdMap();\n }\n return this.shadowRoot._$getIdMap();\n }\n /**\n * Returns the shadow root element\n *\n * Returns `null` for external components.\n */\n getShadowRoot() {\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 throws error if the template engine does not support template update.\n */\n applyTemplateUpdates() {\n var _a;\n if (!((_a = this._$tmplInst) === null || _a === void 0 ? void 0 : _a.updateTemplate)) {\n throw new Error(`The template engine of component \"${this.is}\" does not support template update`);\n }\n const dataGroup = this._$dataGroup;\n this._$tmplInst.updateTemplate(this._$definition._$detail.template, dataGroup.innerData || dataGroup.data);\n }\n /**\n * Returns the owner component space of this component\n */\n getOwnerSpace() {\n return this._$behavior.ownerSpace;\n }\n /** Get whether the component is external or not */\n isExternal() {\n return this._$external;\n }\n static listProperties(comp) {\n return Object.keys(comp._$behavior._$propertyMap);\n }\n static hasProperty(comp, propName) {\n return !!comp._$behavior._$propertyMap[propName];\n }\n /** List methods by the component definition (backward compatibility) */\n static getMethodsFromDef(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 static getMethod(comp, methodName) {\n if (comp._$definition._$options.useMethodCallerListeners) {\n const 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 callMethod(methodName, ...args) {\n const func = Component.getMethod(this, methodName);\n return func === null || func === void 0 ? void 0 : func.call(this, ...args);\n }\n /**\n * Get the corresponding component definition\n */\n getComponentDefinition() {\n return this._$definition;\n }\n /**\n * Get the options of the component\n */\n getComponentOptions() {\n return this._$definition._$options;\n }\n /**\n * Check whether the `other` behavior is a dependent behavior or a implemented trait behavior\n */\n hasBehavior(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 getRootBehavior() {\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 traitBehavior(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 setMethodCaller(caller) {\n this._$methodCaller = caller;\n }\n /**\n * Get the current caller set by `setMethodCaller`\n */\n getMethodCaller() {\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 triggerLifetime(name, args) {\n const f = this._$lifetimeFuncs[name];\n if (f)\n f.call(this._$methodCaller, args, this);\n }\n /**\n * @internal\n * @deprecated Rename to `triggerLifetime`\n */\n triggerLifeTime(name, args) {\n return this.triggerLifetime(name, args);\n }\n /**\n * Triggers a page-life-time callback on an element\n */\n triggerPageLifetime(name, args) {\n const rec = (node) => {\n if (isComponent(node)) {\n if (node._$pageLifetimeFuncs) {\n const f = node._$pageLifetimeFuncs[name];\n if (f)\n f.call(node._$methodCaller, args, this);\n }\n if (!node._$external)\n rec(node.shadowRoot);\n }\n const children = node.childNodes;\n for (let i = 0; i < children.length; i += 1) {\n const child = children[i];\n if (isElement(child)) {\n rec(child);\n }\n }\n };\n rec(this);\n }\n /**\n * @internal\n * @deprecated Rename to `triggerPageLifetime`\n */\n triggerPageLifeTime(name, args) {\n return this.triggerPageLifetime(name, args);\n }\n /**\n * Get the target elements of a relation\n */\n getRelationNodes(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 hasExternalClass(name) {\n return this.classList._$hasAlias(name);\n }\n /** Update an external class value */\n setExternalClass(name, target) {\n this.scheduleExternalClassChange(name, target);\n this.applyExternalClassChanges();\n }\n /** Get all external classes */\n getExternalClasses() {\n return this.classList._$getAlias();\n }\n /** Schedule an update for an external class value */\n scheduleExternalClassChange(name, target) {\n this.classList._$setAlias(name, target);\n }\n /** Update multiple external class values */\n applyExternalClassChanges() {\n if (this._$external)\n return;\n if (!this.classList._$shouldUpdateExternalClass())\n return;\n const recv = (node) => {\n if (!isElement(node))\n return;\n const classList = node.classList;\n if ((classList === null || classList === void 0 ? void 0 : classList._$spreadExternalClassUpdate()) && isComponent(node)) {\n node.applyExternalClassChanges();\n }\n const childNodes = node.childNodes;\n for (let i = 0, l = childNodes.length; i < l; i += 1) {\n recv(childNodes[i]);\n }\n classList === null || classList === void 0 ? void 0 : classList._$markExternalClassUpdated();\n };\n recv(this.shadowRoot);\n }\n /** Triggers a worklet change lifetime */\n triggerWorkletChangeLifetime(name, value) {\n this.triggerLifetime('workletChange', [name, value]);\n }\n /** Check a field is excluded by pureDataPattern or not */\n isInnerDataExcluded(fieldName) {\n var _a;\n return ((_a = this._$definition._$options.pureDataPattern) === null || _a === void 0 ? void 0 : _a.test(fieldName)) || false;\n }\n static getInnerData(comp) {\n return comp._$dataGroup.innerData;\n }\n static getDataProxy(comp) {\n return comp._$dataGroup;\n }\n static replaceWholeData(comp, newData) {\n comp._$dataGroup.replaceWholeData(newData);\n }\n replaceDataOnPath(path, data) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `replaceDataOnPath`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.replaceDataOnPath', this);\n dataProxy.replaceDataOnPath(path, data);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n spliceArrayDataOnPath(path, index, del, inserts) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `spliceArrayDataOnPath`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.spliceArrayDataOnPath', this);\n dataProxy.spliceArrayDataOnPath(path, index, del, inserts);\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n /**\n * Check whether there are pending changes or not\n */\n hasPendingChanges() {\n const 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 applyDataUpdates() {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `applyDataUpdates`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.applyDataUpdates', this);\n dataProxy.applyDataUpdates();\n if (ENV.DEV)\n performanceMeasureEnd();\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 groupUpdates(callback) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `groupUpdates`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.groupUpdates', this);\n const ret = callback();\n dataProxy.applyDataUpdates();\n if (ENV.DEV)\n performanceMeasureEnd();\n return ret;\n }\n updateData(newData) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `updateData`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.updateData', this);\n if (typeof newData === 'object' && newData !== null) {\n const keys = Object.keys(newData);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n try {\n const p = parseSinglePath(key);\n dataProxy.replaceDataOnPath(p, newData[key]);\n }\n catch (e) {\n // parse single path may throw errors\n dispatchError(e, `updateData`, this);\n }\n }\n }\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n setData(newData) {\n const dataProxy = this._$dataGroup;\n if (dataProxy === undefined) {\n throw new ThirdError('Cannot update data before component created', `setData`, this);\n }\n if (ENV.DEV)\n performanceMeasureStart('component.setData', this);\n if (typeof newData === 'object' && newData !== null) {\n const keys = Object.keys(newData);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n try {\n const p = parseSinglePath(key);\n dataProxy.replaceDataOnPath(p, newData[key]);\n }\n catch (e) {\n // parse single path may throw errors\n dispatchError(e, `setData`, this);\n }\n }\n }\n dataProxy.applyDataUpdates();\n if (ENV.DEV)\n performanceMeasureEnd();\n }\n}\nComponent.isComponent = isComponent;\nComponent.prototype[COMPONENT_SYMBOL] = true;\n//# sourceMappingURL=component.js.map","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { ComponentDefinition, } from './component';\nimport { getDefaultComponentSpace, } from './component_space';\nimport { parseMultiPaths } from './data_path';\nimport { DataGroupObserverTree, normalizePropertyType, normalizePropertyTypeShortHand, shallowMerge, } from './data_proxy';\nimport { simpleDeepCopy } from './data_utils';\nimport { FuncArr, safeCallback } from './func_arr';\nimport { normalizeRelation } from './relation';\nimport { dispatchError, triggerWarning } from './warning';\nexport class BehaviorBuilder {\n /** @internal */\n constructor(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 methodCallerInit(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 behavior(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 chainingFilter(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 options(options) {\n const oldOptions = this._$options;\n if (oldOptions) {\n this._$options = Object.assign(Object.assign({}, oldOptions), options);\n }\n else {\n this._$options = options;\n }\n return this;\n }\n /**\n * Implement a trait behavior\n */\n implement(traitBehavior, impl) {\n this._$traitBehaviors.push({ traitBehavior, impl });\n return this;\n }\n /**\n * Set the compiled template object\n */\n template(template) {\n this._$template = template;\n return this;\n }\n /**\n * Add other components to the component using list\n */\n usingComponents(list) {\n if (this._$using)\n this._$using = Object.assign(Object.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 placeholders(list) {\n if (this._$placeholders)\n this._$placeholders = Object.assign(Object.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 generics(list) {\n if (this._$generics)\n this._$generics = Object.assign(Object.assign({}, this._$generics), list);\n else\n this._$generics = list;\n return this;\n }\n /**\n * Add external classes\n */\n externalClasses(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 data(gen) {\n this._$data.push((component) => { var _a; return (_a = safeCallback('Data Generator', gen, null, [], component)) !== null && _a !== void 0 ? _a : {}; });\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 staticData(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 property(name, def) {\n if (!this._$properties)\n this._$properties = [];\n this._$properties.push({ 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 methods(funcs) {\n const keys = Object.keys(funcs);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const func = funcs[name];\n this._$methods.push({ name, func });\n }\n return this;\n }\n observer(paths, func, once = false) {\n if (!this._$observers)\n this._$observers = [];\n try {\n this._$observers.push({ dataPaths: parseMultiPaths(paths), func, once });\n }\n catch (e) {\n // parse multi paths my throw errors\n dispatchError(e, `observer`, this._$is);\n }\n return this;\n }\n /**\n * Add a lifetime callback\n */\n lifetime(name, func, once = false) {\n this._$lifetimes.push({ name, func, once });\n return this;\n }\n /**\n * Add a page-lifetime callback\n */\n pageLifetime(name, func, once = false) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n this._$pageLifetimes.push({ name, func, once });\n return this;\n }\n /**\n * Add a relation\n */\n relation(name, rel) {\n if (!this._$relations)\n this._$relations = [];\n this._$relations.push({ name, 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 init(func) {\n this._$init.push(func);\n return this;\n }\n /**\n * Apply a classic-style definition\n */\n definition(def) {\n if (def.behaviors)\n this._$behaviors.push(...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 const rawData = def.data;\n if (rawData !== undefined) {\n if (typeof rawData === 'function') {\n this._$data.push((component) => { var _a; return (_a = safeCallback('Data Generator', rawData, null, [], component)) !== null && _a !== void 0 ? _a : {}; });\n }\n else {\n this._$staticData = rawData;\n }\n }\n const rawProperties = def.properties;\n if (rawProperties !== undefined) {\n if (!this._$properties)\n this._$properties = [];\n const keys = Object.keys(rawProperties);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const def = rawProperties[name];\n this._$properties.push({ name, def });\n }\n }\n const rawMethods = def.methods;\n if (rawMethods !== undefined) {\n const keys = Object.keys(rawMethods);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const func = rawMethods[name];\n this._$methods.push({ name, func });\n }\n }\n const rawObservers = def.observers;\n if (rawObservers !== undefined) {\n if (!this._$observers)\n this._$observers = [];\n if (Array.isArray(rawObservers)) {\n for (let i = 0; i < rawObservers.length; i += 1) {\n const { fields, observer } = rawObservers[i];\n try {\n this._$observers.push({\n dataPaths: parseMultiPaths(fields !== null && fields !== void 0 ? fields : '**'),\n func: observer,\n once: false,\n });\n }\n catch (e) {\n // parse multi paths may throw errors\n dispatchError(e, `definition`, this._$is);\n }\n }\n }\n else {\n const keys = Object.keys(rawObservers);\n for (let i = 0; i < keys.length; i += 1) {\n const fields = keys[i];\n const observer = rawObservers[fields];\n try {\n this._$observers.push({\n dataPaths: parseMultiPaths(fields),\n func: observer,\n once: false,\n });\n }\n catch (e) {\n // parse multi paths may throw errors\n dispatchError(e, `definition`, this._$is);\n }\n }\n }\n }\n const 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 const keys = Object.keys(rawLifetimes);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const func = rawLifetimes[name];\n this._$lifetimes.push({ name, func, once: true });\n }\n }\n const rawPageLifetimes = def.pageLifetimes;\n if (rawPageLifetimes) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n const keys = Object.keys(rawPageLifetimes);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const func = rawPageLifetimes[name];\n this._$pageLifetimes.push({ name, func, once: true });\n }\n }\n this._$listeners = def.listeners;\n const rawRelations = def.relations;\n if (rawRelations) {\n if (!this._$relations)\n this._$relations = [];\n const keys = Object.keys(rawRelations);\n for (let i = 0; i < keys.length; i += 1) {\n const name = keys[i];\n const rel = rawRelations[name];\n this._$relations.push({ name, rel });\n }\n }\n return this;\n }\n /**\n * Finish build, generate a behavior, and register it in the component space\n */\n registerBehavior() {\n const is = this._$is;\n const 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 registerComponent() {\n const is = this._$is;\n const behavior = new Behavior(this);\n const compDef = new ComponentDefinition(behavior);\n if (is !== undefined) {\n this._$ownerSpace._$registerComponent(is, compDef);\n }\n return compDef;\n }\n}\n/**\n * Common mixin-like behavior\n *\n * Each component definition contains a single *root* behavior.\n * A behavior can mixin other behaviors.\n */\nexport class Behavior {\n /**\n * Create a behavior with classic-style definition\n */\n static create(def, ownerSpace) {\n return new BehaviorBuilder(def.is, ownerSpace || getDefaultComponentSpace())\n .definition(def)\n .registerBehavior();\n }\n /** @internal */\n constructor(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 general() {\n return this;\n }\n /**\n * List all component dependencies (recursively)\n *\n * This method will prepare the underlying behavior.\n */\n getComponentDependencies(genericTargets) {\n const ret = new Set();\n const rec = function (beh) {\n if (beh._$unprepared)\n beh.prepare();\n const keys = Object.keys(beh._$using);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const v = beh._$using[k];\n if (typeof v === 'string')\n continue;\n const 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 const list = Object.values(genericTargets);\n for (let i = 0; i < list.length; i += 1) {\n const 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 static prepare(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 prepare() {\n var _a;\n if (!this._$unprepared)\n return;\n this._$unprepared = false;\n const is = this.is;\n const space = this.ownerSpace;\n const builder = this._$builder;\n // mixin dependent behaviors\n const flatAncestors = this._$flatAncestors;\n if (Array.isArray(builder._$behaviors)) {\n for (let i = 0; i < builder._$behaviors.length; i += 1) {\n const parentName = builder._$behaviors[i];\n let parent = null;\n if (parentName instanceof Behavior) {\n parent = parentName;\n }\n else {\n const parentNameStr = String(parentName);\n if (space) {\n parent = space.getBehaviorByUrl(parentNameStr, is);\n }\n if (!parent) {\n dispatchError(new Error(`behavior \"${parentNameStr}\" is not found.`), `[prepare]`, is);\n }\n }\n if (!parent)\n continue;\n if (parent._$unprepared)\n Behavior.prepare(parent);\n // merge trait behaviors\n const traitBehaviors = parent._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n if (!this._$traitBehaviors)\n this._$traitBehaviors = [];\n this._$traitBehaviors.push(...traitBehaviors);\n }\n // merge static data\n const staticData = parent._$staticData;\n if (staticData) {\n if (!this._$staticData)\n this._$staticData = {};\n shallowMerge(this._$staticData, staticData);\n }\n // merge methods\n Object.assign(this._$methodMap, parent._$methodMap);\n // merge properties\n Object.assign(this._$propertyMap, parent._$propertyMap);\n // merge dynamic data\n this._$data.push(...parent._$data);\n // merge observers\n const observers = parent._$observers;\n for (let i = 0; i < observers.length; i += 1) {\n const item = observers[i];\n if (item.once) {\n if (this._$observers.indexOf(item) >= 0)\n continue;\n }\n this._$observers.push(item);\n }\n // merge lifetimes\n const lifetimes = parent._$lifetimes;\n for (let i = 0; i < lifetimes.length; i += 1) {\n const item = lifetimes[i];\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 const pageLifetimes = parent._$pageLifetimes;\n if (pageLifetimes !== undefined) {\n if (this._$pageLifetimes) {\n for (let i = 0; i < pageLifetimes.length; i += 1) {\n const item = pageLifetimes[i];\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.slice();\n }\n }\n // merge legacy listeners\n const listeners = parent._$listeners;\n if (listeners !== undefined) {\n if (!this._$listeners)\n this._$listeners = [];\n this._$listeners.push(...listeners);\n }\n // merge relations\n const relations = parent._$relationMap;\n if (relations !== undefined) {\n if (!this._$relationMap) {\n this._$relationMap = Object.create(null);\n }\n Object.assign(this._$relationMap, relations);\n }\n // merge init\n this._$init.push(...parent._$init);\n // construct flat ancestors\n parent._$flatAncestors.forEach((p) => {\n flatAncestors.add(p);\n });\n }\n }\n // init trait behaviors\n const traitBehaviors = builder._$traitBehaviors;\n if (traitBehaviors !== undefined) {\n if (!this._$traitBehaviors)\n this._$traitBehaviors = [];\n this._$traitBehaviors.push(...traitBehaviors);\n }\n // init using\n if (typeof builder._$using === 'object' && builder._$using !== null) {\n const hasPlaceholders = typeof builder._$placeholders === 'object' && builder._$placeholders !== null;\n const keys = Object.keys(builder._$using);\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const v = builder._$using[k];\n let placeholder = null;\n if (hasPlaceholders) {\n placeholder = (_a = builder._$placeholders[k]) !== null && _a !== void 0 ? _a : null;\n }\n if (v instanceof ComponentDefinition) {\n this._$using[k] = {\n final: v,\n source: this,\n placeholder,\n waiting: null,\n };\n }\n else if (space) {\n const path = String(v);\n const final = space.getComponentByUrlWithoutDefault(path, is);\n if (final) {\n this._$using[k] = {\n final,\n source: this,\n placeholder: null,\n waiting: null,\n };\n }\n else if (placeholder !== null) {\n const p = {\n final: null,\n source: this,\n placeholder,\n waiting: null,\n };\n const wl = space._$componentWaitingList(path, is);\n if (wl) {\n wl.add((c) => {\n p.final = c;\n p.placeholder = null;\n p.waiting = null;\n });\n p.waiting = wl;\n }\n this._$using[k] = p;\n }\n else {\n const final = space.getGlobalUsingComponent(path);\n if (typeof final === 'string') {\n this._$using[k] = final;\n }\n else {\n this._$using[k] = {\n final,\n source: this,\n placeholder: null,\n waiting: null,\n };\n }\n }\n }\n else {\n dispatchError(new Error(`cannot find component \"${String(v)}\"`), `[prepare]`, is);\n }\n }\n }\n // init generics\n if (typeof builder._$generics === 'object' && builder._$generics !== null) {\n const generics = (this._$generics = []);\n const genericDefaults = Object.create(null);\n this._$genericDefaults = genericDefaults;\n const genericKeys = Object.keys(builder._$generics);\n for (let i = 0; i < genericKeys.length; i += 1) {\n const k = genericKeys[i];\n const genericDef = builder._$generics[k];\n let defaultComp = null;\n const 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 const tagName = String(d);\n defaultComp =\n space.getComponentByUrlWithoutDefault(tagName, is) ||\n space.getGlobalUsingComponent(tagName);\n }\n else {\n dispatchError(new Error(`cannot define generic \"${k}\" without a default implementor.`), `[prepare]`, is);\n }\n }\n generics.push(k);\n genericDefaults[k] = defaultComp;\n }\n }\n // init static data\n const 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 const methods = builder._$methods;\n for (let i = 0; i < methods.length; i += 1) {\n const { name, func } = methods[i];\n this._$methodMap[name] = func;\n }\n // init properties\n const properties = builder._$properties;\n if (properties !== undefined) {\n const initValueFuncs = [];\n for (let i = 0; i < properties.length; i += 1) {\n const { name, def } = properties[i];\n const shortHandDef = normalizePropertyTypeShortHand(def);\n let d;\n if (shortHandDef !== null) {\n d = shortHandDef;\n }\n else {\n const propDef = def;\n let type = normalizePropertyType(propDef.type);\n let 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 dispatchError(new Error(`the type of property \"${name}\" is illegal`), `[prepare]`, is);\n }\n let 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 \"${name}\" is not used when its default is provided.`, is);\n }\n let observer;\n if (typeof propDef.observer === 'function') {\n observer = propDef.observer;\n }\n else if (typeof propDef.observer === 'string') {\n observer = this._$methodMap[propDef.observer] || null;\n if (!observer) {\n dispatchError(new Error(`Cannot find method \"${propDef.observer}\" for observer of property \"${name}\".`), `[prepare]`, is);\n }\n }\n else {\n observer = null;\n if (propDef.observer !== undefined) {\n dispatchError(new Error(`The observer of property \"${name}\" is not a function, got \"${typeof propDef.observer}\".`), `[prepare]`, is);\n }\n }\n let comparer;\n if (typeof propDef.comparer === 'function') {\n comparer = propDef.comparer;\n }\n else {\n comparer = null;\n if (propDef.comparer !== undefined) {\n dispatchError(new Error(`the comparer of property \"${name}\" is not a function.`), `[prepare]`, is);\n }\n }\n const reflectIdPrefix = !!propDef.reflectIdPrefix;\n d = {\n type,\n optionalTypes,\n value,\n default: propDef.default,\n observer,\n comparer,\n reflectIdPrefix,\n };\n }\n this._$propertyMap[name] = d;\n initValueFuncs.push({\n name,\n func: d.default === undefined ? () => simpleDeepCopy(d.value) : d.default,\n });\n }\n this._$data.push((component) => {\n const ret = {};\n for (let i = 0; i < initValueFuncs.length; i += 1) {\n const { name, func } = initValueFuncs[i];\n ret[name] = safeCallback(`Property \"${name}\" Default`, func, null, [], component);\n }\n return ret;\n });\n }\n // init dynamic data\n this._$data.push(...builder._$data);\n // observers\n const observers = builder._$observers;\n if (observers !== undefined) {\n for (let i = 0; i < observers.length; i += 1) {\n const { dataPaths, func, once } = observers[i];\n const observer = typeof func === 'function' ? func : this._$methodMap[func];\n if (typeof observer === 'function') {\n this._$observers.push({ dataPaths, observer, once });\n }\n else {\n dispatchError(new Error(`the \"${String(observer)}\" observer is not a function.`), `[prepare]`, is);\n }\n }\n }\n // lifetimes\n const lifetimes = builder._$lifetimes;\n this._$lifetimes.push(...lifetimes);\n // page lifetimes\n const pageLifetimes = builder._$pageLifetimes;\n if (pageLifetimes) {\n if (!this._$pageLifetimes)\n this._$pageLifetimes = [];\n this._$pageLifetimes.push(...pageLifetimes);\n }\n // listeners\n const listeners = builder._$listeners;\n if (listeners !== undefined) {\n const keys = Object.keys(listeners);\n if (keys.length > 0) {\n this._$listeners = [];\n for (let i = 0; i < keys.length; i += 1) {\n const k = keys[i];\n const v = listeners[k];\n const listener = typeof v === 'function' ? v : this._$methodMap[v];\n if (listener) {\n const dot = k.indexOf('.');\n let id;\n let ev;\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, ev, listener });\n }\n else {\n dispatchError(new Error(`the \"${k}\" listener is not a function or a method name`), `[prepare]`, is);\n }\n }\n }\n }\n // relations\n const relations = builder._$relations;\n if (relations !== undefined) {\n if (!this._$relationMap) {\n this._$relationMap = Object.create(null);\n }\n for (let i = 0; i < relations.length; i += 1) {\n const { name: key, rel: relation } = relations[i];\n if (relation === undefined || relation === null)\n continue;\n const rel = normalizeRelation(space, is, key, relation);\n if (rel)\n this._$relationMap[key] = rel;\n }\n }\n // init funcs\n this._$init.push(...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 getTemplate() {\n return this._$template;\n }\n _$updateTemplate(template) {\n this._$template = template;\n }\n /** Check whether the `other` behavior is a dependent behavior of this behavior */\n hasBehavior(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 const 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 getMethods() {\n return this._$methodMap;\n }\n /** @internal */\n _$generateObserverTree() {\n const ot = new DataGroupObserverTree(this._$propertyMap);\n const observers = this._$observers;\n for (let i = 0; i < observers.length; i += 1) {\n const { dataPaths, observer } = observers[i];\n ot.addObserver(observer, dataPaths);\n }\n return ot;\n }\n /** @internal */\n _$getAllLifetimeFuncs() {\n const ret = Object.create(null);\n const lifetimes = this._$lifetimes;\n for (let i = 0; i < lifetimes.length; i += 1) {\n const { name, func } = lifetimes[i];\n if (ret[name]) {\n ret[name].add(func);\n }\n else {\n const fa = (ret[name] = new FuncArr('lifetime'));\n fa.add(func);\n }\n }\n return ret;\n }\n /** @internal */\n _$getAllPageLifetimeFuncs() {\n const ret = Object.create(null);\n const pageLifetimes = this._$pageLifetimes;\n if (!pageLifetimes)\n return ret;\n for (let i = 0; i < pageLifetimes.length; i += 1) {\n const { name, func } = pageLifetimes[i];\n if (ret[name]) {\n ret[name].add(func);\n }\n else {\n const fa = (ret[name] = new FuncArr('pageLifetime'));\n fa.add(func);\n }\n }\n return ret;\n }\n}\n//# sourceMappingURL=behavior.js.map","import { Element } from './element';\nimport { isElement, isTextNode } from './type_symbol';\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 */\nexport class ElementIterator {\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 constructor(node, type, nodeTypeLimit = Element) {\n if (!isElement(node) && !isTextNode(node)) {\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 \"${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 static create(node, type, nodeTypeLimit) {\n return new ElementIterator(node, type, nodeTypeLimit);\n }\n forEach(f) {\n const nodeTypeLimit = this._$nodeTypeLimit;\n const composed = this._$composed;\n if (this._$isAncestor) {\n let cur = this._$node;\n for (;;) {\n if (cur instanceof nodeTypeLimit) {\n if (f(cur) === false)\n return;\n }\n let next;\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 const rootFirst = this._$rootFirst;\n const rec = (node) => {\n if (rootFirst) {\n if (node instanceof nodeTypeLimit) {\n if (f(node) === false)\n return false;\n }\n }\n if (isElement(node)) {\n let interrupted = false;\n const childFn = (child) => {\n if (rec(child) === false) {\n interrupted = 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)\n return false;\n }\n if (!rootFirst) {\n if (node instanceof nodeTypeLimit) {\n if (f(node) === false)\n return false;\n }\n }\n return true;\n };\n rec(this._$node);\n }\n }\n}\n//# sourceMappingURL=element_iterator.js.map","/* eslint-disable import/first */\n/* eslint-disable arrow-body-style */\nexport { BackendMode, backend, composedBackend, domlikeBackend, } from './backend';\nexport { CurrentWindowBackendContext } from './backend/current_window_backend_context';\nexport { EmptyBackendContext } from './backend/empty_backend';\nexport { EmptyComposedBackendContext } from './backend/empty_composed_backend';\nexport { Behavior, BehaviorBuilder, } from './behavior';\nexport { ClassList, StyleScopeManager } from './class_list';\nexport { Component, ComponentDefinition, } from './component';\nexport * as typeUtils from './component_params';\nexport { ComponentSpace, getDefaultComponentSpace } from './component_space';\nexport * as dataPath from './data_path';\nexport { DataGroup, NormalizedPropertyType, } from './data_proxy';\nexport * as dataUtils from './data_utils';\nexport { Element, StyleSegmentIndex } from './element';\nexport { ElementIterator, ElementIteratorType } from './element_iterator';\nexport { Event, EventBubbleStatus, MutLevel as EventMutLevel, } from './event';\nexport { FuncArr, safeCallback } from './func_arr';\nexport { DeepCopyKind, globalOptions, } from './global_options';\nexport { MutationObserver, MutationObserver as Observer } from './mutation_observer';\nexport { NativeNode } from './native_node';\nexport { dumpElement, dumpElementToString, dumpSingleElementToString } from './node';\nexport { RelationType } from './relation';\nexport { triggerRender } from './render';\nexport { ParsedSelector } from './selector';\nexport { ShadowRoot } from './shadow_root';\nexport * as templateEngine from './template_engine';\nexport { TextNode } from './text_node';\nexport * as template from './tmpl';\nexport { TraitBehavior } from './trait_behaviors';\nexport { VirtualNode } from './virtual_node';\nexport { addGlobalErrorListener, addGlobalWarningListener, removeGlobalErrorListener, removeGlobalWarningListener, } from './warning';\nimport { Component, } from './component';\nimport { getDefaultComponentSpace } from './component_space';\nimport { Event } from './event';\nexport const registerBehavior = (def) => {\n return getDefaultComponentSpace().defineBehavior(def);\n};\nexport const registerElement = (def) => {\n return getDefaultComponentSpace().defineComponent(def);\n};\nexport function createElement(tagName, compDef) {\n return Component.create(tagName, compDef || null);\n}\nexport const triggerEvent = Event.triggerEvent;\nexport const triggerExternalEvent = Event.triggerExternalEvent;\n//# sourceMappingURL=index.js.map","import { safeCallback } from './func_arr';\nconst triggerRenderOnContext = (context, cb) => {\n context.render(() => {\n if (typeof cb === 'function') {\n safeCallback('render', cb, context, [null]);\n }\n });\n};\nexport const triggerRender = (element, callback) => {\n const context = element.getBackendContext();\n if (context) {\n triggerRenderOnContext(context, callback || null);\n }\n};\n//# sourceMappingURL=render.js.map"],"names":["BackendMode","DeepCopyKind","DYNAMIC","SHADOW","COMPOSED","DOMLIKE","process","env","NODE_ENV","globalOptions","defaultComponentSpace","externalComponent","templateEngine","styleScope","extraStyleScope","hostNodeTagName","multipleSlots","dynamicSlots","directSlots","reflectToAttributes","writeFieldsToNode","writeIdToDOM","useMethodCallerListeners","idPrefixGenerator","pureDataPattern","dataDeepCopy","Simple","propertyPassingDeepCopy","listenerChangeLifetimes","virtualHost","propertyEarlyInit","throwGlobalError","writeExtraInfoToAttr","backendContext","devtool","normalizeComponentOptions","componentOptions","baseComponentOptions","b","undefined","p","FuncArr","constructor","type","this","empty","_$arr","_$type","add","func","concat","remove","ret","newArr","oldArr","i","length","push","slice","call","caller","args","relatedComponent","arr","safeCallback","FuncArrWithMeta","data","item","f","v","retainFn","handleReturn","rawReturn","dispatchError","method","apply","e","name","TEXT_NODE_SYMBOL","Symbol","ELEMENT_SYMBOL","NATIVE_NODE_SYMBOL","VIRTUAL_NODE_SYMBOL","SHADOW_ROOT_SYMBOL","COMPONENT_SYMBOL","isTextNode","isElement","isNativeNode","isVirtualNode","isShadowRoot","isComponent","dumpSingleElementToString","elem","tagName","is","_$slotName","id","slot","nodeClass","class","style","Object","keys","_$behavior","_$propertyMap","forEach","propName","String","attributes","attr","value","dumpAttributesToString","textContent","trim","dumpElementToString","composed","tabDepth","linePrefix","isExternal","_$external","forEachComposedChild","node","childNodes","insideErrorHandler","errorFuncArr","warningFuncArr","err","element","triggerLifetime","shouldBreak","console","error","Error","message","filter","Boolean","join","triggerWarning","msg","warn","ThirdError","additionalStack","super","DELEGATE_EVENTS","EmptyBackendElementType","EmptyBackendContext","mode","_$styleSheetIdInc","_$renderCallbacks","_$shadowRoot","EmptyBackendShadowRootContext","destroy","getWindowWidth","getWindowHeight","getDevicePixelRatio","getTheme","registerStyleSheetContent","_path","_content","appendStyleSheetPath","_styleScope","disableStyleSheet","_index","render","cb","callbacks","setTimeout","getRootNode","createFragment","EmptyBackendElement","onEvent","_createEvent","_listener","release","associateValue","_v","getShadowRoot","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","setStyle","_styleText","addClass","_className","removeClass","clearClasses","setClassAlias","_target","setAttribute","_value","removeAttribute","setDataset","setText","setListenerStats","_type","_capture","_mutLevel","setModelBindingStat","_attributeName","createElement","_tagName","_stylingName","createTextNode","createComponent","_external","_virtualHost","_extraStyleScope","_externalClasses","createVirtualNode","_virtualName","EmptyComposedBackendElement","setStyleScope","_hostStyleScope","_elementClass","getBoundingClientRect","left","top","width","height","getScrollOffset","scrollLeft","scrollTop","scrollWidth","scrollHeight","createIntersectionObserver","_relativeElement","_relativeElementMargin","_thresholds","disconnect","getContext","CLASS_NAME_REG_EXP","StyleScopeManager","_$names","globalScope","register","queryName","ClassList","externalNames","owner","styleScopeManager","_$externalNames","_$externalRawAlias","_$dirtyExternalNames","_$rawNames","_$backendNames","_$backendNameScopes","_$backendNamesCount","_$hasAliasNames","_$element","_$owner","_$defaultScope","_$extraScope","_$rootScope","_$prefixManager","_$resolvePrefixes","externalIndex","indexOf","rawAlias","n","_$hasAlias","includes","_$setAlias","target","slices","Array","isArray","l","split","s","_$getAlias","_$spreadExternalClassUpdate","dirtyExternalNames","externalRawAlias","shouldUpdate","some","names","_$updateResolvedNames","_$shouldUpdateExternalClass","getBackendMode","targets","_$backendElement","_$markExternalClassUpdated","backendElement","rawNames","oldBackendNames","oldBackendNameScopes","oldBackendNamesCount","newBackendNames","newBackendNameScopes","newBackendNamesCount","j","ll","rawName","found","scopeId","className","changed","_$addClassToBackend","_$removeClassFromBackend","scope","_a","prefix","val","classList","_$addClass","oldClassNames","oldScopeIds","classNamesCount","_$removeClass","splice","toggle","force","segmentIndex","test","rawClassIndex","contains","rn","setClassNames","getClassNames","METHOD_TAG","TraitBehavior","ownerSpace","trans","_$trans","_$implement","impl","TraitGroup","_$traits","WeakMap","implement","traitBehavior","traitImpl","set","get","normalizePath","path","basePath","finalSlices","pop","normalizeUrl","relPath","protoSep","domainSep","domain","absPath","ComponentWaitingList","isPub","alias","_$callbacks","_$ownerSpace","_$isPub","_$alias","callback","hintUsed","_b","_$componentWaitingListener","index","c","cbs","ComponentSpace","defaultComponent","baseSpace","allowUnusedNativeNode","_$behaviorList","create","_$pubBehaviorList","_$list","_$pubList","_$using","_$importedSpaces","_$listWaiting","_$pubListWaiting","_$groupingListWaiting","_$allowUnusedNativeNode","assign","_$defaultComponent","_$componentOptions","updateComponentOptions","getComponentOptions","setGlobalUsingComponent","key","importSpace","protoDomain","space","privateUse","getComponentByUrl","comp","getComponent","getComponentByUrlWithoutDefault","withDefault","list","def","getDefaultComponent","isDefaultComponent","getGlobalUsingComponent","getBehaviorByUrl","_$getBehavior","defineComponent","BehaviorBuilder","definition","registerComponent","defineBehavior","registerBehavior","define","defineWithMethodCaller","_$registerComponent","behavior","waiting","_$registerBehavior","beh","startGroupRegister","endGroupRegister","groupRegister","exportComponent","getExportedComponent","getExportedBehavior","exportBehavior","_$componentWaitingList","wl","setComponentWaitingListener","listener","createComponentByUrl","url","genericTargets","domainPath","paramStr","hashSepIndex","paramSepIndex","compDef","genericImpls","Component","createWithGenericsAndContext","needApplyUpdates","kv","kvSepIndex","decodeURIComponent","_$dataGroup","replaceProperty","applyDataUpdates","defineTraitBehavior","getDefaultComponentSpace","cs","skipWhiteSpace","state","str","cur","next","parseInteger","parseInt","parseFieldName","parseFieldNameWithSpecialChars","next2","parsePath","seg","parseSinglePath","parsePathWithSpecialChars","parseMultiPaths","map","parseState","parseCommaSepPaths","deepCopyWithRecursion","src","visited","dest","k","description","simpleDeepCopy","deepCopy","withRecursion","MutationObserverTarget","boundElement","_$subtreeObserversCount","attrObservers","textObservers","childObservers","attachObservers","_$boundElement","attachChild","child","_$mutationObserverTarget","updateSubtreeCount","detachChild","diff","hasSubtreeListeners","callAttrObservers","eventObj","parentNode","callTextObservers","textNode","callChildObservers","callAttachObservers","MutationObserver","_$subtreeListenersCount","_$boundFuncArrs","_$boundTarget","_$listener","_$normalizedListener","observe","targetElement","options","properties","childList","characterData","subtree","attachStatus","ev","nl","funcArr","hasOwnProperty","prototype","NormalizedPropertyType","shallowMerge","oldDest","newDest","subKeys","subKey","normalizePropertyType","t","Number","Function","convertValueToType","prop","component","defaultFn","default","optionalTypes","matchTypeWithValue","isFinite","DeepCopyStrategy","DataGroupObserverTree","propFields","observerTree","sub","observers","cloneSub","addObserver","dataPath","singlePath","wildcard","pathSlice","callObserver","getMethodCaller","dfsMarkTriggerBitOnPath","observerStatus","markTriggerBitOnPath","root","triggerAndCleanTriggerBit","getDeepCopyStrategy","level","SimpleWithRecursion","DataGroup","_$generateInnerData","_$pureDataPattern","_$dataDeepCopy","innerData","associatedComponent","_$modelBindingListener","_$pendingChanges","_$doingUpdates","_$comp","_$propertyPassingDeepCopy","_$reflectToAttributes","_$propFields","_$observerTree","_$observers","_$observerStatus","setUpdateListener","updateListener","_$updateListener","replaceWholeData","replaceDataOnPath","newData","spliceArrayDataOnPath","del","inserts","setChanges","changes","getChanges","setModelBindingListener","skipModelListener","isChainedUpdates","combinedChanges","propChanges","combined","count","change","maybeSpliceIndex","maybeSpliceDel","isSplice","excluded","oldData","normalizedSpliceIndex","filteredData","comparerResult","spliceIndex","innerNewData","be","getBackendElement","attrValue","reflectIdPrefix","ownerShadowRoot","idPrefix","getHostNode","_$idPrefix","attrName","replace","toLowerCase","JSON","stringify","comparer","general","oldValue","newValue","curData","curSlice","nextSlice","changesCount","observer","propertyName","EventBubbleStatus","relativeTimeStamp","Date","now","prevTimeStamp","MutLevel","FinalChanged","EventMutLevel","EventTarget","listeners","captureListeners","addListener","mutLevel","final","mutated","efa","initialized","capture","useCapture","mutCount","finalCount","removeListener","Event$1","Event","detail","ts","getCurrentTimeStamp","_$eventName","timeStamp","bubbles","_$capturePhase","capturePhase","_$eventBubblingControl","stopped","noDefault","_$originalEvent","originalEvent","_$dispatched","_$handleListenerReturn","handleListenerReturn","extraFields","getEventBubbleStatus","wrapShadowedEvent","targetCaller","mark","currentTargetCaller","currentTarget","getEventName","getOriginalEvent","preventDefault","defaultPrevented","stopPropagation","propagationStopped","markMutated","mutatedMarked","listenerReturnHandler","callListener","isCapture","evName","eventTarget","_$eventTarget","skipMut","mulLevel","dispatch","externalTarget","crossShadow","inExternalOnly","eventBubblingControl","forEachBubblePath","recShadow","collectMarks","containingSlot","_$inheritSlots","bubblingPath","shadowRoot","handleEvent","atTarget","sr","dispatchEvent","event","dispatchExternalEvent","triggerEvent","triggerExternalEvent","SegmentRelation","getOwnerSpace","getRootBehavior","ParsedSelector","_$parseSegment","relation","matches","exec","classes","shift","unions","union","segments","parsedSegs","parsedSeg","isEmpty","_$testSelectorSegment","offset","segment","match","nextNode","nextRelation","testSelector","query","findOne","rec","r","children","StyleSegmentIndex","DESTROYED_SHADOW_BACKEND_CONTEXT","destroyed","DESTROYED_COMPOSED_BACKEND_CONTEXT","DESTROYED_DOMLIKE_BACKEND_CONTEXT","Element","_$initialize","virtual","nodeTreeContext","_$destroyOnDetach","_$nodeTreeContext","_$nodeId","_$nodeAttributes","_$nodeSlot","_$slotElement","_$slotValues","_$subtreeSlotStart","_$subtreeSlotEnd","_$placeholderHandlerRemover","_$virtual","dataset","_$marks","_$attached","_$styleSegments","parentIndex","slotNodes","$$","x","newId","host","_$markIdCacheDirty","attributeName","newSlot","slotParentShadowRoot","_$getParentHostShadowRoot","slotMode","getSlotMode","slotUpdater","_$updateSubtreeSlotNodes","removeSlotNodes","oldSlot","updateContainingSlot","insertChildReassign","insertSlotNodes","entries","classNames","setNodeClass","styleText","setNodeStyle","asTextNode","asElement","asNativeNode","asVirtualNode","asInstanceOf","componentDefinition","getBackendContext","context","destroyBackendElement","destroyBackendElementOnDetach","cancelDestroyBackendElementOnDetach","isVirtual","toggleNodeClass","styleSegment","checkAndCallAttached","callFunc","_$relation","triggerLinkEvent","status","checkAndCallDetached","destroyQueue","checkAndCallMoved","checkChildObservers","childEventObj","addedNodes","removedNodes","hasSubtreeMutationObservers","_$insertChildReassignSlot","_$spliceSlotNodes","_$updateContainingSlot","forEachNodeInSpecifiedSlot","shadowParent","ideaPosIndex","backendParent","findNearestNonVirtual","d","countNonVirtual","before","removeCount","rel","nextSibling","insertChildComposed","firstNode","recNonVirtual","forEachNonVirtualComposedChild","forEachNodeInSlot","forEachNodeInSpecificSlot","forEachSlotContentInSlot","forEachSlotContentInSpecificSlot","_$findFirstNonVirtualChild","parent","inSlot","recvParent","slotIndex","_$findFirstNonVirtualSibling","newPosIndex","insertPos","_$findSlotNodeInsertPosition","newChild","relChild","removal","_c","parentConverted","slotParent","sharedNonVirtualParent","sharedFrag","groupUpdate","sharedBackendParent","frag","firstSlotNode","document","createDocumentFragment","slotNodesSet","Set","_$componentInstanceId","_$updateSubtreeSlotsInsertion","slotStart","slotEnd","posIndex","move","insertSlotPrev","insertSlotNext","findFirstSlot","nextSiblingWithSlot","prev","parentWithSubtreeSlot","isConnected","_$applySlotsInsertion","_$updateSubtreeSlotsRemoval","removeSlotBefore","removeSlotAfter","_$applySlotsRemoval","_$updateSubtreeSlotsReplacement","oldSlotStart","oldSlotEnd","elements","oldShadowRoot","oldSlotMode","removeStart","slotNodesToUpdate","oldContainingSlot","getContainingSlot","slotNodesToInsertMap","Map","slotNodesToRemoveMap","slotNodesWithContainingSlot","slotNodesToRemove","start","slotNodesToInsert","nodes","size","iter","it","done","firstSlotNodeToInsert","insertChildSingleOperation","oriPosIndex","_d","_e","oldParent","oldPosIndex","containingSlotUpdater","parentComponentShadowRoot","newChildContainingSlotUpdater","relChildContainingSlotUpdater","newChildSubtreeSlotStart","newChildSubtreeSlotEnd","relChildSubtreeSlotStart","relChildSubtreeSlotEnd","insertChildBatchRemoval","parentComponent","relChildren","subtreeSlotStart","subtreeSlotEnd","insertChildBatchInsertion","newChildList","pos","insertChildPlaceholderReplace","replacer","_f","placeholder","replacedChildren","placeholderContainingSlot","placeholderSlotIndex","insertChildAt","removeChildAt","replaceChildAt","insertChildren","removeChildren","selfReplaceWith","replaceWith","_$generateIdMap","idMap","dfs","nodeId","_$setListenerStats","finalChanged","_$definition","_$options","getAttribute","updateAttribute","attrs","setMark","marks","replaceDocumentElement","targetParent","targetNode","pretendAttached","pretendDetached","isAttached","slotName","oldSlotName","needInsertSlot","_$applySlotRename","getSlotName","sn","getInheritSlots","isInheritSlots","setSlotElement","recv","deleteCount","insertion","getNodeDepth","depth","targetDepth","comparePos","slotNode1","parentIndex1","slotDepth1","slotNode2","parentIndex2","slotDepth2","nextSlotNode1","leftDepth","right","rightDepth","rst","slotNode","getComposedParent","getComposedChildren","recInheritSlots","forEachSlotContentInSpecifiedSlot","parseSelector","querySelector","selectorStr","querySelectorAll","matchSelector","res","relativeElement","relativeElementMargin","thresholds","RelationType","parentSlotHost","normalizeRelation","checkRelationFunc","ComponentDefinition","Behavior","usingTarget","globalTarget","linked","linkChanged","unlinked","linkFailed","Relation","group","links","definitions","link","_$group","_$sharedGroup","_$links","keyMap","defs","relationType","linksGroup","parentType","isDetach","selfDefs","oldLink","newLink","parentBehavior","hasBehavior","parentRelation","rt","parentDefs","oldTarget","oldDef","newTarget","newDef","getLinkedTargets","typeWithIndex","NativeNode","stylingName","placeholderHandlerRemover","_$backendShadowRoot","ownerHost","ownerComponentOptions","_$modelBindingListeners","getModelBindingListeners","TextNode","text","_$text","newText","VirtualNode","_$initializeVirtual","virtualName","SlotMode","ShadowRoot","createShadowRoot","_$idMap","hostComponentOptions","_$slotMode","_$singleSlot","_$slots","_$slotsList","_$dynamicSlotsInserted","_$dynamicSlots","_$requiredSlotValueNames","_$insertDynamicSlotHandler","_$removeDynamicSlotHandler","_$updateDynamicSlotHandler","_$host","createNativeNode","createNativeNodeWithInit","initPropValues","usingKey","placeholderCallback","hostGenericImpls","_$genericImpls","compName","possibleComponentDefinitions","cwp","resolvePlaceholder","source","_$advancedCreate","convertGenerics","createComponentByDef","componentDef","createComponentOrNativeNode","checkComponentPlaceholder","using","g","getElementById","_$getIdMap","getSlotElementFromName","slots","subTreeRoot","slotElement","getSlotContentArray","forEachSlot","values","_$applyMultipleSlotInsertion","_move","slotsList","firstSlot","insertBeforeFirst","jt","_$applyMultipleSlotsRemoval","newFirstSlot","oldNameNewSlot","newName","oldName","insertDynamicSlot","removeDynamicSlot","updatePathTree","slotValues","delete","setDynamicSlotHandler","requiredSlotValueNames","insertSlotHandler","removeSlotHandler","updateSlotHandler","slotMeta","useDynamicSlotHandlerFrom","replaceSlotValue","applySlotValueUpdates","slotValueUpdatePathTree","applySlotUpdates","RangeListManager","keyName","dataList","newListItem","updateKeys","items","indexes","rawKeys","sharedKeyMap","rawKeyField","rawKey","inc","oriUpdatePathTree","updateListItem","oldRawKeys","oldKeyMap","oldSharedKeyMap","oldIndexes","newRawKeys","newSharedKeyMap","allowFastComparison","needUpdate","subTree","oldIndex","minIndexByLen","minIndexByLenIndexes","minIndexPrev","oldPosList","prevOldIndex","prevMinIndexByLenIndex","bottom","mid","Math","floor","lcsLen","prevLcsIndex","curLcsArrIndex","lcsArr","OpKind","oldListOp","changedItems","prevLcsOldPos","oldPos","realListDiff","opOldPos","opIndex","nextStable","nextStableOldPos","newItem","emptyFilter","getTmplArgs","_$wxTmplArgs","dataValueToString","dashToCamelCase","dash","toUpperCase","ProcGenWrapper","procGen","fallbackListenerOnNativeNode","eventObjectFilter","bindingMapDisabled","changePropFilter","eventListenerFilter","modelLvaluePath","generalLvaluePath","checkFallbackEventListener","camelName","startsWith","nodeDataProxy","getDataProxy","tmplArgs","changeProp","lv","hasExternalClass","setExternalClass","handleChildrenCreationAndInsert","C","B","update","dataUpdatePathTree","handleChildrenUpdate","bindingMapUpdate","field","bindingMapGenList","updaters","prevElement","bindingMapGen","hasPendingChanges","handleChildrenCreation","dynamicSlotName","textInit","createDynamicPlaceholder","propertyInit","dynamicSlotValueNames","createCommonElement","dynamicSlotNameMatched","branchKey","branchFunc","oriListUpdatePathTree","lvaluePath","itemCallback","keyList","childNode","isCreation","defineTextNode","defineElement","defineIfGroup","defineForLoop","defineSlot","definePureVirtualNode","slotValueInit","newElem","dynSlot","dynamicSlotUpdate","indexChanged","slotChildNodes","sort","slot1","slot2","Infinity","firstIndex","slotValueUpdatePathTrees","replacerShadowRoot","elemShadowRoot","isElemDynamicSlots","isReplacerDynamicSlots","y","hasProperty","m","isDynamic","_generalLvaluePath","handler","methodCaller","getMethod","filteredEv","evOptions","dynEvListeners","triggerWorkletChangeLifetime","setFnFilter","GeneralLvaluePathPrefix","noop","ProcGenWrapperDom","shadowRootElement","slotMergeable","slotMerged","appendSlot","setListener","template","methods","DEFAULT_PROC_GEN_DOM","DEFAULT_PROC_GEN_GROUP_DOM","GlassEaselTemplateDOM","_$template","content","genObjectGroupEnv","groupList","updateMode","_$methodMap","createInstance","GlassEaselTemplateDOMInstance","procGenWrapper","initValues","getIdMap","updateValues","_$wxTmplEv","shadowedEvent","DEFAULT_PROC_GEN","DEFAULT_PROC_GEN_GROUP","BindingMapUpdateEnabled","GlassEaselTemplateEngine","GlassEaselTemplate","updateTemplate","GlassEaselTemplateInstance","_$applyTemplate","forceBindingMapUpdate","tryBindingMapUpdate","newVal","spliceDel","startIndex","fill","defaultTemplateEngine","getDefaultTemplateEngine","tmpl","sourceBehavior","hostUsing","_$detail","prepare","childBeh","generics","_$generics","genericDefaults","_$genericDefaults","defaultComp","_$templateEngine","getComponentDependencies","_$updateTemplate","isPrepared","propSetters","enumerable","dataGroup","methodKeys","methodName","protoFunc","writable","proto","dataGroupObserverTree","_$generateObserverTree","_$lifetimeFuncs","_$getAllLifetimeFuncs","_$pageLifetimeFuncs","_$getAllPageLifetimeFuncs","relationDefinitionGroup","relations","generateRelationDefinitionGroup","_$relationMap","componentInstanceIdInc","defaultBackendContext","_$tagMethod","taggedMethod","_$isTaggedMethod","getDefaultBackendContext","external","propEarlyInit","_$methodCaller","_$externalClasses","tmplInst","componentInstanceId","staticData","_$staticData","dataGenFuncs","_$data","_$traitGroup","traitBehaviors","_$traitBehaviors","_$methodCallerInit","initDone","_$init","cowObserver","cowLifetime","cowPageLifetime","cowMethodMap","builderContext","self","setData","bind","relationDef","normalizedRel","listAsTrait","dataPaths","lifetime","fag","pageLifetime","initFuncs","exported","exportedKeys","exportedKey","exportItem","_$tmplInst","_$listeners","gf","collectGenericImpls","createWithGenerics","createWithContext","$","applyTemplateUpdates","listProperties","getMethodsFromDef","callMethod","getComponentDefinition","other","setMethodCaller","triggerLifeTime","triggerPageLifetime","triggerPageLifeTime","getRelationNodes","relationKey","scheduleExternalClassChange","applyExternalClassChanges","getExternalClasses","isInnerDataExcluded","fieldName","getInnerData","dataProxy","groupUpdates","updateData","_$behaviors","_$methods","_$lifetimes","_$pageLifetimes","_$is","methodCallerInit","_$chainingFilter","chainingFilter","oldOptions","usingComponents","placeholders","_$placeholders","externalClasses","gen","property","_$properties","funcs","paths","once","_$relations","init","behaviors","rawData","rawProperties","rawMethods","rawObservers","fields","rawLifetimes","lifetimes","created","attached","moved","detached","ready","rawPageLifetimes","pageLifetimes","rawRelations","builder","_$unprepared","_$builder","_$flatAncestors","dep","has","flatAncestors","parentName","parentNameStr","hasPlaceholders","genericKeys","genericDef","initValueFuncs","shortHandDef","propDef","dot","getTemplate","getMethods","ot","ElementIteratorType","ElementIterator","nodeTypeLimit","_$node","_$nodeTypeLimit","_$composed","_$isAncestor","_$rootFirst","rootFirst","interrupted","childFn","_$styleSheets","_$styleSheetRegistry","_$delegatedEventListeners","_$elementEventListeners","_$elementCaptureEventListeners","_$triggedEvents","WeakSet","documentElement","clientWidth","clientHeight","window","devicePixelRatio","innerHTML","head","ss","requestAnimationFrame","body","__wxElement","_$eventListener","_$initEvent","_$getEventDetail","getPrototypeOf","_$trigger","possibleTaps","disableMouseEvents","handleTapStart","_ev","identifier","clientX","clientY","handleTapMove","u","abs","handleTapEnd","handleTapCancel","handleTouchEnd","changedTouches","__touchCount","removeEventListener","handleTouchCancel","addEventListener","shouldDelegate","elementEventListeners","updateEventListener","valueFn","_$wxArgs","modelListeners","valid","checked","IntersectionObserver","info","entry","intersectionRatio","boundingClientRect","intersectionRect","relativeRect","rootBounds","time","rootMargin","threshold","createMediaQueryObserver","curMatches","listenerFunc","maxWidth","minWidth","maxHeight","minHeight","orientation","calcMatches","_$rootNode","_status","log","triggerRenderOnContext"],"mappings":"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"}