ember-source 7.1.0-alpha.4 → 7.1.0-beta.1

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 (499) hide show
  1. package/build-metadata.json +3 -3
  2. package/dist/dev/packages/@ember/-internals/container/index.js +4 -401
  3. package/dist/dev/packages/@ember/-internals/deprecations/index.js +1 -1
  4. package/dist/dev/packages/@ember/-internals/environment/index.js +3 -161
  5. package/dist/dev/packages/@ember/-internals/glimmer/index.js +14 -15
  6. package/dist/dev/packages/@ember/-internals/meta/lib/meta.js +0 -1
  7. package/dist/dev/packages/@ember/-internals/metal/index.js +18 -9
  8. package/dist/dev/packages/@ember/-internals/routing/index.js +1 -10
  9. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +10 -12
  10. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +1 -10
  11. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +3 -10
  12. package/dist/dev/packages/@ember/-internals/string/index.js +0 -1
  13. package/dist/dev/packages/@ember/-internals/utils/index.js +8 -3
  14. package/dist/dev/packages/@ember/-internals/views/index.js +0 -1
  15. package/dist/dev/packages/@ember/-internals/views/lib/compat/fallback-view-registry.js +0 -1
  16. package/dist/dev/packages/@ember/-internals/views/lib/mixins/action_support.js +3 -12
  17. package/dist/dev/packages/@ember/-internals/views/lib/system/event_dispatcher.js +2 -11
  18. package/dist/dev/packages/@ember/-internals/views/lib/system/utils.js +1 -1
  19. package/dist/dev/packages/@ember/-internals/views/lib/views/core_view.js +2 -19
  20. package/dist/dev/packages/@ember/-internals/views/lib/views/states.js +1 -1
  21. package/dist/dev/packages/@ember/application/index.js +5 -28
  22. package/dist/dev/packages/@ember/application/instance.js +3 -22
  23. package/dist/dev/packages/@ember/application/namespace.js +4 -11
  24. package/dist/dev/packages/@ember/array/index.js +7 -15
  25. package/dist/dev/packages/@ember/array/proxy.js +10 -14
  26. package/dist/dev/packages/@ember/canary-features/index.js +1 -1
  27. package/dist/dev/packages/@ember/component/helper.js +1 -14
  28. package/dist/dev/packages/@ember/component/index.js +1356 -17
  29. package/dist/dev/packages/@ember/component/template-only.js +1 -9
  30. package/dist/dev/packages/@ember/controller/index.js +3 -19
  31. package/dist/dev/packages/@ember/debug/container-debug-adapter.js +0 -19
  32. package/dist/dev/packages/@ember/debug/data-adapter.js +4 -11
  33. package/dist/dev/packages/@ember/debug/index.js +1 -1
  34. package/dist/dev/packages/@ember/debug/lib/deprecate.js +1 -1
  35. package/dist/dev/packages/@ember/engine/index.js +3 -31
  36. package/dist/dev/packages/@ember/engine/instance.js +3 -8
  37. package/dist/dev/packages/@ember/helper/index.js +159 -21
  38. package/dist/dev/packages/@ember/instrumentation/index.js +1 -1
  39. package/dist/dev/packages/@ember/modifier/index.js +2 -16
  40. package/dist/dev/packages/@ember/modifier/on.js +1 -9
  41. package/dist/dev/packages/@ember/object/-internals.js +3 -11
  42. package/dist/dev/packages/@ember/object/compat.js +3 -10
  43. package/dist/dev/packages/@ember/object/computed.js +2 -12
  44. package/dist/dev/packages/@ember/object/core.js +10 -18
  45. package/dist/dev/packages/@ember/object/evented.js +2 -12
  46. package/dist/dev/packages/@ember/object/events.js +1 -11
  47. package/dist/dev/packages/@ember/object/index.js +10 -14
  48. package/dist/dev/packages/@ember/object/internals.js +1 -1
  49. package/dist/dev/packages/@ember/object/lib/computed/computed_macros.js +6 -23
  50. package/dist/dev/packages/@ember/object/lib/computed/reduce_computed_macros.js +3 -12
  51. package/dist/dev/packages/@ember/object/mixin.js +7 -10
  52. package/dist/dev/packages/@ember/object/observable.js +8 -12
  53. package/dist/dev/packages/@ember/object/observers.js +1 -11
  54. package/dist/dev/packages/@ember/object/promise-proxy-mixin.js +3 -13
  55. package/dist/dev/packages/@ember/object/proxy.js +0 -7
  56. package/dist/dev/packages/@ember/reactive/collections.js +591 -1
  57. package/dist/dev/packages/@ember/renderer/index.js +1 -14
  58. package/dist/dev/packages/@ember/routing/-internals.js +1 -10
  59. package/dist/dev/packages/@ember/routing/index.js +614 -14
  60. package/dist/dev/packages/@ember/routing/lib/generate_controller.js +2 -11
  61. package/dist/dev/packages/@ember/routing/lib/routing-service.js +7 -17
  62. package/dist/dev/packages/@ember/routing/lib/utils.js +2 -11
  63. package/dist/dev/packages/@ember/routing/route.js +13 -24
  64. package/dist/dev/packages/@ember/routing/router-service.js +9 -18
  65. package/dist/dev/packages/@ember/routing/router.js +5 -21
  66. package/dist/dev/packages/@ember/runloop/index.js +1 -10
  67. package/dist/dev/packages/@ember/service/index.js +1 -11
  68. package/dist/dev/packages/@ember/template/index.js +1 -14
  69. package/dist/dev/packages/@ember/template-compiler/lib/compile-options.js +12 -15
  70. package/dist/dev/packages/@ember/template-compiler/lib/dasherize-component-name.js +0 -1
  71. package/dist/dev/packages/@ember/template-compiler/lib/plugins/auto-import-builtins.js +13 -60
  72. package/dist/dev/packages/@ember/template-compiler/lib/plugins/index.js +1 -1
  73. package/dist/dev/packages/@ember/template-compiler/lib/plugins/transform-resolutions.js +1 -3
  74. package/dist/dev/packages/@ember/template-compiler/lib/template.js +3 -11
  75. package/dist/dev/packages/@ember/template-factory/index.js +1 -8
  76. package/dist/dev/packages/@ember/utils/lib/compare.js +0 -7
  77. package/dist/dev/packages/@ember/utils/lib/is_empty.js +1 -12
  78. package/dist/dev/packages/@glimmer/destroyable/index.js +1 -1
  79. package/dist/dev/packages/@glimmer/manager/index.js +5 -315
  80. package/dist/dev/packages/@glimmer/node/index.js +3 -11
  81. package/dist/dev/packages/@glimmer/opcode-compiler/index.js +2 -7
  82. package/dist/dev/packages/@glimmer/program/index.js +194 -3
  83. package/dist/dev/packages/@glimmer/reference/index.js +4 -5
  84. package/dist/dev/packages/@glimmer/runtime/index.js +15 -10
  85. package/dist/dev/packages/@glimmer/tracking/index.js +2 -11
  86. package/dist/dev/packages/@glimmer/tracking/primitives/cache/index.js +1 -11
  87. package/dist/dev/packages/@glimmer/util/index.js +1 -2
  88. package/dist/dev/packages/@glimmer/validator/index.js +4 -1253
  89. package/dist/dev/packages/@glimmer/vm/index.js +1 -1
  90. package/dist/dev/packages/@glimmer/wire-format/index.js +3 -65
  91. package/dist/dev/packages/ember/version.js +1 -1
  92. package/dist/dev/packages/ember-template-compiler/index.js +7 -7
  93. package/dist/dev/packages/shared-chunks/{alias-CSC0WIbj.js → alias-ZcMQckQV.js} +8 -4
  94. package/dist/dev/packages/shared-chunks/api-BAmlf_CN.js +310 -0
  95. package/dist/dev/packages/shared-chunks/{api-BQMslHhq.js → api-BawZUDYD.js} +5 -6
  96. package/dist/dev/packages/shared-chunks/{args-proxy-DgXMc9b5.js → args-proxy-BNLuRFlO.js} +2 -4
  97. package/dist/dev/packages/shared-chunks/{array-D8PfjQHi.js → array-Bh_kUjzy.js} +2 -1
  98. package/dist/dev/packages/shared-chunks/assert-Zqc4wiAV.js +6 -0
  99. package/dist/dev/packages/shared-chunks/cache-B7dqAS38.js +596 -0
  100. package/dist/dev/packages/shared-chunks/{capabilities-O_xc7Yqk.js → capabilities-CZkuOqqC.js} +0 -5
  101. package/dist/dev/packages/shared-chunks/chain-tags-D6tuFUj_.js +190 -0
  102. package/dist/dev/packages/shared-chunks/{collections-D_nY_0UJ.js → collections-DPkjqeA3.js} +0 -1
  103. package/dist/dev/packages/shared-chunks/{compiler-D1leQ3Gl.js → compiler-QUSl_urU.js} +7043 -235
  104. package/dist/dev/packages/shared-chunks/computed-CJnghmXC.js +980 -0
  105. package/dist/dev/packages/shared-chunks/container-BzzHmCNj.js +404 -0
  106. package/dist/dev/packages/shared-chunks/curly-BBzF_bI8.js +617 -0
  107. package/dist/dev/packages/shared-chunks/curried-BZnYakIg.js +5 -0
  108. package/dist/dev/packages/shared-chunks/{debug-to-string-CFb7h0lY.js → debug-to-string-C6LsA_qz.js} +1 -2
  109. package/dist/dev/packages/shared-chunks/decorator-B5Uh5NFI.js +135 -0
  110. package/dist/dev/packages/shared-chunks/element-DQJOvSlQ.js +109 -0
  111. package/dist/dev/packages/shared-chunks/element-builder--iTIJyCB.js +812 -0
  112. package/dist/dev/packages/shared-chunks/env-g-kaAFLN.js +161 -0
  113. package/dist/dev/packages/shared-chunks/events-6aFVjD4k.js +180 -0
  114. package/dist/dev/packages/shared-chunks/get-D5b5QlqE.js +138 -0
  115. package/dist/dev/packages/shared-chunks/get-debug-name-CSniHBsn.js +45 -0
  116. package/dist/dev/packages/shared-chunks/get_properties-CIm8IAtP.js +55 -0
  117. package/dist/dev/packages/shared-chunks/guid-Cbq2sNV_.js +123 -0
  118. package/dist/dev/packages/shared-chunks/hash-BRRFQJ99.js +192 -0
  119. package/dist/dev/packages/shared-chunks/helper-Do7NCZHI.js +314 -0
  120. package/dist/dev/packages/shared-chunks/index-CwnQYqK5.js +2500 -0
  121. package/dist/dev/packages/shared-chunks/{index-BUPd6pkm.js → index-CyZiGiEI.js} +28 -29
  122. package/dist/dev/packages/shared-chunks/index-D-xTBV4B.js +220 -0
  123. package/dist/dev/packages/shared-chunks/injected_property-B4T-FzZZ.js +70 -0
  124. package/dist/dev/packages/shared-chunks/intern-zquhAEIg.js +51 -0
  125. package/dist/dev/packages/shared-chunks/internal-CAL-jHZt.js +140 -0
  126. package/dist/dev/packages/shared-chunks/internal-helper-Ez7zbEIa.js +7 -0
  127. package/dist/dev/packages/shared-chunks/{neq-DujMPv1k.js → invoke-B8M5fQQS.js} +4 -32
  128. package/dist/{prod/packages/shared-chunks/is_proxy-Cr1qlMv_.js → dev/packages/shared-chunks/is_proxy-Bzg0d4m4.js} +1 -1
  129. package/dist/dev/packages/shared-chunks/libraries-CHBwbR72.js +79 -0
  130. package/dist/dev/packages/shared-chunks/mandatory-setter-BpbAMTzV.js +107 -0
  131. package/dist/dev/packages/shared-chunks/meta-BmRXesrk.js +46 -0
  132. package/dist/{prod/packages/shared-chunks/name-C68GLLO3.js → dev/packages/shared-chunks/name-Clp4Vsod.js} +1 -1
  133. package/dist/dev/packages/shared-chunks/{namespace_search-uT8odThF.js → namespace_search-BfvzEQzN.js} +1 -2
  134. package/dist/dev/packages/shared-chunks/normalize-CKySQVU7.js +84 -0
  135. package/dist/dev/packages/shared-chunks/observers-C2DurkLG.js +199 -0
  136. package/dist/dev/packages/shared-chunks/on-BueSMv9L.js +253 -0
  137. package/dist/dev/packages/shared-chunks/opcodes-CplRyHl_.js +50 -0
  138. package/dist/dev/packages/shared-chunks/or-O0eJQ4K-.js +118 -0
  139. package/dist/{prod/packages/shared-chunks/program-B7SJZ5NF.js → dev/packages/shared-chunks/program-DzAfcWFj.js} +1 -1
  140. package/dist/{prod/packages/shared-chunks/program-context-DFiwaPMR.js → dev/packages/shared-chunks/program-context-CadjldRr.js} +4 -3
  141. package/dist/dev/packages/shared-chunks/property_get-CIBS9umw.js +139 -0
  142. package/dist/dev/packages/shared-chunks/{property_set-DaoZXGM5.js → property_set-D3PKyisF.js} +4 -2
  143. package/dist/dev/packages/shared-chunks/props-fiqxqhAH.js +85 -0
  144. package/dist/dev/packages/shared-chunks/{reference-C3TKDRnP.js → reference-BoPB2LfI.js} +3 -4
  145. package/dist/{prod/packages/shared-chunks/registers-ylirb0dq.js → dev/packages/shared-chunks/registers-C_W2qYHJ.js} +1 -1
  146. package/dist/{prod/packages/shared-chunks/rehydrate-builder-D3t52iGR.js → dev/packages/shared-chunks/rehydrate-builder-DCyIgnCR.js} +7 -4
  147. package/dist/dev/packages/shared-chunks/{render-DCchifOK.js → render-CpKaO-BO.js} +512 -16
  148. package/dist/{prod/packages/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js → dev/packages/shared-chunks/runtime-CYyqkz5q-BOdRhmsS.js} +4 -59
  149. package/dist/{prod/packages/shared-chunks/serialize-builder-iXiRs1Pg.js → dev/packages/shared-chunks/serialize-builder-DxgGRvH_.js} +2 -7
  150. package/dist/dev/packages/shared-chunks/set_properties-BghuuGJx.js +48 -0
  151. package/dist/dev/packages/shared-chunks/{setup-registry-DxchCIL2.js → setup-registry-BC5VMvei.js} +34 -14
  152. package/dist/dev/packages/shared-chunks/spec-BXl1reqK.js +16 -0
  153. package/dist/dev/packages/shared-chunks/super-BBBjgF69.js +91 -0
  154. package/dist/dev/packages/shared-chunks/syscall-ops-BPFtDquC.js +133 -0
  155. package/dist/dev/packages/shared-chunks/template-BRrQR6KS.js +16 -0
  156. package/dist/dev/packages/shared-chunks/{template-kM-7TTcc.js → template-R_5UMHhb.js} +1 -1
  157. package/dist/dev/packages/shared-chunks/template-only-BqOt8bDl.js +78 -0
  158. package/dist/dev/packages/shared-chunks/textarea-WSlUEr0y.js +468 -0
  159. package/dist/dev/packages/shared-chunks/tracked-CKE4wnE6.js +148 -0
  160. package/dist/dev/packages/shared-chunks/tracked-data-CGnA4ytZ.js +31 -0
  161. package/dist/dev/packages/shared-chunks/transform-resolutions-h1ik8gqW.js +645 -0
  162. package/dist/dev/packages/shared-chunks/unique-id-CgmHQiwi.js +32 -0
  163. package/dist/{prod/packages/shared-chunks/on-CersD7PL.js → dev/packages/shared-chunks/untouchable-this-B3DVwpHS.js} +215 -1397
  164. package/dist/dev/packages/shared-chunks/vm-ops-ImHv0Wtg.js +12 -0
  165. package/dist/dev/packages/shared-chunks/well-known-_EVO9RaV.js +17 -0
  166. package/dist/prod/packages/@ember/-internals/container/index.js +4 -315
  167. package/dist/prod/packages/@ember/-internals/deprecations/index.js +1 -1
  168. package/dist/prod/packages/@ember/-internals/environment/index.js +3 -158
  169. package/dist/prod/packages/@ember/-internals/glimmer/index.js +14 -13
  170. package/dist/prod/packages/@ember/-internals/meta/lib/meta.js +0 -3
  171. package/dist/prod/packages/@ember/-internals/metal/index.js +18 -13
  172. package/dist/prod/packages/@ember/-internals/routing/index.js +1 -6
  173. package/dist/prod/packages/@ember/-internals/runtime/lib/ext/rsvp.js +0 -1
  174. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +9 -10
  175. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +1 -6
  176. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/registry_proxy.js +0 -1
  177. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +2 -6
  178. package/dist/prod/packages/@ember/-internals/string/index.js +0 -2
  179. package/dist/prod/packages/@ember/-internals/utils/index.js +32 -30
  180. package/dist/prod/packages/@ember/-internals/views/index.js +0 -1
  181. package/dist/prod/packages/@ember/-internals/views/lib/compat/fallback-view-registry.js +0 -2
  182. package/dist/prod/packages/@ember/-internals/views/lib/mixins/action_support.js +1 -6
  183. package/dist/prod/packages/@ember/-internals/views/lib/system/event_dispatcher.js +2 -7
  184. package/dist/prod/packages/@ember/-internals/views/lib/system/utils.js +1 -2
  185. package/dist/prod/packages/@ember/-internals/views/lib/views/core_view.js +2 -15
  186. package/dist/prod/packages/@ember/-internals/views/lib/views/states.js +0 -2
  187. package/dist/prod/packages/@ember/application/index.js +5 -24
  188. package/dist/prod/packages/@ember/application/instance.js +5 -18
  189. package/dist/prod/packages/@ember/application/namespace.js +4 -8
  190. package/dist/prod/packages/@ember/array/index.js +7 -12
  191. package/dist/prod/packages/@ember/array/proxy.js +9 -10
  192. package/dist/prod/packages/@ember/canary-features/index.js +1 -1
  193. package/dist/prod/packages/@ember/component/helper.js +1 -12
  194. package/dist/prod/packages/@ember/component/index.js +1291 -15
  195. package/dist/prod/packages/@ember/component/template-only.js +1 -6
  196. package/dist/prod/packages/@ember/controller/index.js +3 -16
  197. package/dist/prod/packages/@ember/debug/container-debug-adapter.js +1 -15
  198. package/dist/prod/packages/@ember/debug/data-adapter.js +5 -7
  199. package/dist/prod/packages/@ember/debug/index.js +1 -1
  200. package/dist/prod/packages/@ember/debug/lib/deprecate.js +1 -1
  201. package/dist/prod/packages/@ember/engine/index.js +3 -27
  202. package/dist/prod/packages/@ember/engine/instance.js +3 -9
  203. package/dist/prod/packages/@ember/helper/index.js +159 -19
  204. package/dist/prod/packages/@ember/instrumentation/index.js +1 -1
  205. package/dist/prod/packages/@ember/modifier/index.js +2 -14
  206. package/dist/prod/packages/@ember/modifier/on.js +1 -6
  207. package/dist/prod/packages/@ember/object/-internals.js +2 -6
  208. package/dist/prod/packages/@ember/object/compat.js +3 -7
  209. package/dist/prod/packages/@ember/object/computed.js +2 -8
  210. package/dist/prod/packages/@ember/object/core.js +8 -15
  211. package/dist/prod/packages/@ember/object/evented.js +2 -7
  212. package/dist/prod/packages/@ember/object/events.js +1 -6
  213. package/dist/prod/packages/@ember/object/index.js +10 -12
  214. package/dist/prod/packages/@ember/object/internals.js +2 -6
  215. package/dist/prod/packages/@ember/object/lib/computed/computed_macros.js +5 -20
  216. package/dist/prod/packages/@ember/object/lib/computed/reduce_computed_macros.js +2 -9
  217. package/dist/prod/packages/@ember/object/mixin.js +6 -9
  218. package/dist/prod/packages/@ember/object/observable.js +7 -9
  219. package/dist/prod/packages/@ember/object/observers.js +1 -6
  220. package/dist/prod/packages/@ember/object/promise-proxy-mixin.js +3 -9
  221. package/dist/prod/packages/@ember/object/proxy.js +0 -7
  222. package/dist/prod/packages/@ember/reactive/collections.js +591 -1
  223. package/dist/prod/packages/@ember/renderer/index.js +1 -12
  224. package/dist/prod/packages/@ember/routing/history-location.js +0 -1
  225. package/dist/prod/packages/@ember/routing/index.js +580 -12
  226. package/dist/prod/packages/@ember/routing/lib/dsl.js +0 -2
  227. package/dist/prod/packages/@ember/routing/lib/generate_controller.js +1 -6
  228. package/dist/prod/packages/@ember/routing/lib/routing-service.js +4 -14
  229. package/dist/prod/packages/@ember/routing/lib/utils.js +1 -6
  230. package/dist/prod/packages/@ember/routing/none-location.js +0 -1
  231. package/dist/prod/packages/@ember/routing/route.js +12 -22
  232. package/dist/prod/packages/@ember/routing/router-service.js +6 -15
  233. package/dist/prod/packages/@ember/routing/router.js +4 -17
  234. package/dist/prod/packages/@ember/runloop/index.js +1 -6
  235. package/dist/prod/packages/@ember/service/index.js +1 -7
  236. package/dist/prod/packages/@ember/template/index.js +1 -12
  237. package/dist/prod/packages/@ember/template-compiler/lib/compile-options.js +12 -14
  238. package/dist/prod/packages/@ember/template-compiler/lib/dasherize-component-name.js +0 -2
  239. package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-against-attrs.js +0 -1
  240. package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-against-named-outlets.js +0 -1
  241. package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.js +0 -1
  242. package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.js +0 -2
  243. package/dist/prod/packages/@ember/template-compiler/lib/plugins/auto-import-builtins.js +13 -60
  244. package/dist/prod/packages/@ember/template-compiler/lib/plugins/index.js +1 -1
  245. package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-each-track-array.js +0 -1
  246. package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-in-element.js +0 -1
  247. package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-resolutions.js +126 -4
  248. package/dist/prod/packages/@ember/template-compiler/lib/template.js +2 -7
  249. package/dist/prod/packages/@ember/template-factory/index.js +1 -5
  250. package/dist/prod/packages/@ember/utils/lib/compare.js +0 -8
  251. package/dist/prod/packages/@ember/utils/lib/is_empty.js +1 -7
  252. package/dist/prod/packages/@glimmer/manager/index.js +4 -292
  253. package/dist/prod/packages/@glimmer/node/index.js +3 -8
  254. package/dist/prod/packages/@glimmer/opcode-compiler/index.js +2 -5
  255. package/dist/prod/packages/@glimmer/program/index.js +194 -3
  256. package/dist/prod/packages/@glimmer/reference/index.js +4 -4
  257. package/dist/prod/packages/@glimmer/runtime/index.js +14 -8
  258. package/dist/prod/packages/@glimmer/tracking/index.js +2 -7
  259. package/dist/prod/packages/@glimmer/tracking/primitives/cache/index.js +1 -6
  260. package/dist/prod/packages/@glimmer/util/index.js +2 -2
  261. package/dist/prod/packages/@glimmer/validator/index.js +5 -1016
  262. package/dist/prod/packages/@glimmer/vm/index.js +1 -1
  263. package/dist/prod/packages/@glimmer/wire-format/index.js +3 -65
  264. package/dist/prod/packages/ember/version.js +1 -1
  265. package/dist/prod/packages/ember-template-compiler/index.js +4 -7
  266. package/dist/prod/packages/shared-chunks/{alias-BLBQkche.js → alias-DBW_V5vD.js} +7 -6
  267. package/dist/prod/packages/shared-chunks/api-CM1trl_4.js +289 -0
  268. package/dist/prod/packages/shared-chunks/{api-B5UrgITK.js → api-zh_k31vb.js} +4 -5
  269. package/dist/prod/packages/shared-chunks/{args-proxy-Dl0A0YWI.js → args-proxy-BDXbXCF9.js} +2 -2
  270. package/dist/prod/packages/shared-chunks/{array-kVQfzrQn.js → array-D6Couewv.js} +2 -3
  271. package/dist/prod/packages/shared-chunks/assert-Zqc4wiAV.js +6 -0
  272. package/dist/prod/packages/shared-chunks/cache-BIlOoPA7.js +371 -0
  273. package/dist/prod/packages/shared-chunks/{capabilities-DXA-L0iT.js → capabilities-_5e35539.js} +0 -3
  274. package/dist/prod/packages/shared-chunks/chain-tags-C9rFtQ_x.js +178 -0
  275. package/dist/prod/packages/shared-chunks/{compiler-Bbki2GT_.js → compiler-c4yUVrl_.js} +7044 -193
  276. package/dist/prod/packages/shared-chunks/{namespace_search-Dcdalhj6.js → computed-DjCIU_ht.js} +108 -239
  277. package/dist/prod/packages/shared-chunks/container-BYOnjnwz.js +315 -0
  278. package/dist/prod/packages/shared-chunks/curly-ZzX43b50.js +545 -0
  279. package/dist/prod/packages/shared-chunks/curried-BZnYakIg.js +5 -0
  280. package/dist/prod/packages/shared-chunks/debug-render-tree-CF5O4-WI.js +2049 -0
  281. package/dist/prod/packages/shared-chunks/{decorator-BdDDBUd2.js → decorator-9ikVwsjY.js} +0 -1
  282. package/dist/prod/packages/shared-chunks/element-DUOVW5Ho.js +100 -0
  283. package/dist/prod/packages/shared-chunks/{element-builder-CzXb9l1W.js → element-builder-CnlTPNyw.js} +109 -88
  284. package/dist/prod/packages/shared-chunks/env-DXxsTFkM.js +158 -0
  285. package/dist/prod/packages/shared-chunks/events-DYrYz3V8.js +174 -0
  286. package/dist/prod/packages/shared-chunks/get-t0-itmA-.js +138 -0
  287. package/dist/prod/packages/shared-chunks/get_properties-Nn08mLAH.js +55 -0
  288. package/dist/prod/packages/shared-chunks/guid-Cbq2sNV_.js +123 -0
  289. package/dist/prod/packages/shared-chunks/hash-mcs3pEFO.js +192 -0
  290. package/dist/prod/packages/shared-chunks/helper-DLjV2ZZW.js +298 -0
  291. package/dist/prod/packages/shared-chunks/{index-CjaDF9kC.js → index-Bj71BDDA.js} +17 -10
  292. package/dist/prod/packages/shared-chunks/index-D-xTBV4B.js +220 -0
  293. package/dist/prod/packages/shared-chunks/index-qDFz6Mfe.js +2322 -0
  294. package/dist/prod/packages/shared-chunks/{injected_property-CTVs5FPh.js → injected_property--eJunJph.js} +2 -3
  295. package/dist/prod/packages/shared-chunks/intern-zquhAEIg.js +51 -0
  296. package/dist/prod/packages/shared-chunks/internal-DidurjJB.js +137 -0
  297. package/dist/prod/packages/shared-chunks/internal-helper-DIbr1RgC.js +7 -0
  298. package/dist/prod/packages/shared-chunks/{neq-BqdovTuC.js → invoke-Cj5zMqHz.js} +4 -24
  299. package/dist/{dev/packages/shared-chunks/is_proxy-B0smdQy8.js → prod/packages/shared-chunks/is_proxy-Bzg0d4m4.js} +1 -1
  300. package/dist/prod/packages/shared-chunks/libraries-_k-4KK5_.js +59 -0
  301. package/dist/prod/packages/shared-chunks/meta-B9mldqPL.js +36 -0
  302. package/dist/{dev/packages/shared-chunks/name-Z7dpqvzn.js → prod/packages/shared-chunks/name-Clp4Vsod.js} +1 -1
  303. package/dist/prod/packages/shared-chunks/namespace_search-BfvzEQzN.js +134 -0
  304. package/dist/prod/packages/shared-chunks/normalize-D9jDJVGg.js +84 -0
  305. package/dist/prod/packages/shared-chunks/observers-CDkeR0nI.js +199 -0
  306. package/dist/prod/packages/shared-chunks/on-B5NVufs_.js +228 -0
  307. package/dist/prod/packages/shared-chunks/opcodes-CplRyHl_.js +50 -0
  308. package/dist/prod/packages/shared-chunks/or-3AxY5TPj.js +91 -0
  309. package/dist/{dev/packages/shared-chunks/program-DfV0v8aa.js → prod/packages/shared-chunks/program-B7CWdS8W.js} +1 -2
  310. package/dist/{dev/packages/shared-chunks/program-context-sJz0oHOA.js → prod/packages/shared-chunks/program-context-B8HKU7wu.js} +4 -3
  311. package/dist/prod/packages/shared-chunks/property_get-CAFdpRyu.js +121 -0
  312. package/dist/prod/packages/shared-chunks/{property_set-B2sZxeCw.js → property_set-BunbMFtp.js} +3 -5
  313. package/dist/prod/packages/shared-chunks/props-fiqxqhAH.js +85 -0
  314. package/dist/prod/packages/shared-chunks/{reference-BNqcwZWH.js → reference-BshxG6wn.js} +3 -3
  315. package/dist/{dev/packages/shared-chunks/registers-ylirb0dq.js → prod/packages/shared-chunks/registers-C_W2qYHJ.js} +1 -1
  316. package/dist/{dev/packages/shared-chunks/rehydrate-builder-BRH0p0wA.js → prod/packages/shared-chunks/rehydrate-builder-DJ8k-6fg.js} +7 -7
  317. package/dist/prod/packages/shared-chunks/{render-D78XHdek.js → render-DkJJmoI4.js} +488 -12
  318. package/dist/{dev/packages/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js → prod/packages/shared-chunks/runtime-CYyqkz5q-BOdRhmsS.js} +4 -59
  319. package/dist/{dev/packages/shared-chunks/serialize-builder-DiO7Ak9_.js → prod/packages/shared-chunks/serialize-builder-R3Ozg0sC.js} +2 -10
  320. package/dist/prod/packages/shared-chunks/set_properties-LT3RzRmJ.js +48 -0
  321. package/dist/prod/packages/shared-chunks/{setup-registry-Cs-7NIJU.js → setup-registry-C2KfZJWI.js} +34 -13
  322. package/dist/prod/packages/shared-chunks/spec-BXl1reqK.js +16 -0
  323. package/dist/prod/packages/shared-chunks/super-BBBjgF69.js +91 -0
  324. package/dist/prod/packages/shared-chunks/syscall-ops-BPFtDquC.js +133 -0
  325. package/dist/prod/packages/shared-chunks/template-BRrQR6KS.js +16 -0
  326. package/dist/prod/packages/shared-chunks/template-only-BtLl0uH0.js +78 -0
  327. package/dist/prod/packages/shared-chunks/textarea-CHqL0Rdh.js +454 -0
  328. package/dist/prod/packages/shared-chunks/{tracked-Cl5l4v8b.js → tracked-DAVrVqJl.js} +5 -4
  329. package/dist/prod/packages/shared-chunks/tracked-data-C83f5V5S.js +31 -0
  330. package/dist/prod/packages/shared-chunks/unique-id-CfHImDRV.js +32 -0
  331. package/dist/prod/packages/shared-chunks/vm-ops-ImHv0Wtg.js +12 -0
  332. package/dist/prod/packages/shared-chunks/well-known-_EVO9RaV.js +17 -0
  333. package/docs/data.json +1237 -1023
  334. package/lib/index.js +0 -1
  335. package/package.json +14 -12
  336. package/types/stable/@ember/-internals/container/lib/registry.d.ts +1 -1
  337. package/types/stable/@ember/-internals/deprecations/index.d.ts +1 -1
  338. package/types/stable/@ember/-internals/glimmer/index.d.ts +1 -1
  339. package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly.d.ts +1 -1
  340. package/types/stable/@ember/-internals/glimmer/lib/component-managers/mount.d.ts +1 -1
  341. package/types/stable/@ember/-internals/glimmer/lib/component-managers/outlet.d.ts +1 -1
  342. package/types/stable/@ember/-internals/glimmer/lib/component-managers/route-template.d.ts +2 -2
  343. package/types/stable/@ember/-internals/glimmer/lib/component.d.ts +9 -7
  344. package/types/stable/@ember/-internals/glimmer/lib/components/abstract-input.d.ts +1 -1
  345. package/types/stable/@ember/-internals/glimmer/lib/dom.d.ts +6 -2
  346. package/types/stable/@ember/-internals/glimmer/lib/environment.d.ts +1 -1
  347. package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +1 -1
  348. package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +3 -3
  349. package/types/stable/@ember/-internals/glimmer/lib/setup-registry.d.ts +1 -1
  350. package/types/stable/@ember/-internals/glimmer/lib/utils/bindings.d.ts +1 -1
  351. package/types/stable/@ember/-internals/glimmer/lib/utils/curly-component-state-bucket.d.ts +3 -2
  352. package/types/stable/@ember/-internals/glimmer/lib/utils/iterator.d.ts +1 -1
  353. package/types/stable/@ember/-internals/glimmer/lib/utils/managers.d.ts +2 -1
  354. package/types/stable/@ember/-internals/glimmer/lib/utils/serialization-first-node-helpers.d.ts +1 -1
  355. package/types/stable/@ember/-internals/glimmer/lib/utils/string.d.ts +1 -1
  356. package/types/stable/@ember/-internals/meta/lib/meta.d.ts +3 -2
  357. package/types/stable/@ember/-internals/metal/lib/cache.d.ts +1 -1
  358. package/types/stable/@ember/-internals/metal/lib/chain-tags.d.ts +3 -2
  359. package/types/stable/@ember/-internals/metal/lib/computed.d.ts +1 -1
  360. package/types/stable/@ember/-internals/metal/lib/decorator.d.ts +1 -1
  361. package/types/stable/@ember/-internals/metal/lib/deprecate_property.d.ts +1 -1
  362. package/types/stable/@ember/-internals/metal/lib/events.d.ts +1 -1
  363. package/types/stable/@ember/-internals/metal/lib/observer.d.ts +1 -1
  364. package/types/stable/@ember/-internals/metal/lib/properties.d.ts +1 -1
  365. package/types/stable/@ember/-internals/metal/lib/property_events.d.ts +1 -1
  366. package/types/stable/@ember/-internals/metal/lib/tags.d.ts +2 -1
  367. package/types/stable/@ember/-internals/runtime/lib/mixins/container_proxy.d.ts +1 -1
  368. package/types/stable/@ember/-internals/runtime/lib/mixins/registry_proxy.d.ts +1 -1
  369. package/types/stable/@ember/-internals/utils/lib/is_proxy.d.ts +1 -1
  370. package/types/stable/@ember/-internals/utils/lib/mandatory-setter.d.ts +1 -1
  371. package/types/stable/@ember/-internals/views/index.d.ts +0 -1
  372. package/types/stable/@ember/-internals/views/lib/system/utils.d.ts +1 -1
  373. package/types/stable/@ember/-internals/views/lib/views/core_view.d.ts +2 -2
  374. package/types/stable/@ember/-internals/views/lib/views/states.d.ts +1 -1
  375. package/types/stable/@ember/application/index.d.ts +5 -4
  376. package/types/stable/@ember/application/instance.d.ts +4 -3
  377. package/types/stable/@ember/application/namespace.d.ts +1 -1
  378. package/types/stable/@ember/array/proxy.d.ts +4 -3
  379. package/types/stable/@ember/component/helper.d.ts +1 -1
  380. package/types/stable/@ember/component/index.d.ts +6 -3
  381. package/types/stable/@ember/controller/index.d.ts +2 -2
  382. package/types/stable/@ember/debug/container-debug-adapter.d.ts +1 -1
  383. package/types/stable/@ember/engine/index.d.ts +3 -3
  384. package/types/stable/@ember/engine/instance.d.ts +4 -3
  385. package/types/stable/@ember/helper/index.d.ts +167 -5
  386. package/types/stable/@ember/modifier/index.d.ts +1 -1
  387. package/types/stable/@ember/object/-internals.d.ts +2 -2
  388. package/types/stable/@ember/object/compat.d.ts +2 -2
  389. package/types/stable/@ember/object/computed.d.ts +3 -1
  390. package/types/stable/@ember/object/evented.d.ts +1 -1
  391. package/types/stable/@ember/object/events.d.ts +1 -1
  392. package/types/stable/@ember/object/index.d.ts +8 -2
  393. package/types/stable/@ember/object/lib/computed/computed_macros.d.ts +1 -1
  394. package/types/stable/@ember/object/mixin.d.ts +1 -1
  395. package/types/stable/@ember/object/observers.d.ts +1 -1
  396. package/types/stable/@ember/object/proxy.d.ts +1 -1
  397. package/types/stable/@ember/reactive/collections.d.ts +6 -6
  398. package/types/stable/@ember/renderer/index.d.ts +2 -2
  399. package/types/stable/@ember/routing/index.d.ts +1 -1
  400. package/types/stable/@ember/routing/lib/controller_for.d.ts +2 -2
  401. package/types/stable/@ember/routing/route.d.ts +2 -2
  402. package/types/stable/@ember/routing/router.d.ts +2 -2
  403. package/types/stable/@ember/service/index.d.ts +1 -1
  404. package/types/stable/@ember/template/index.d.ts +1 -1
  405. package/types/stable/@ember/template-compiler/lib/dasherize-component-name.d.ts +1 -1
  406. package/types/stable/@ember/template-compiler/lib/plugins/assert-against-attrs.d.ts +1 -1
  407. package/types/stable/@ember/template-compiler/lib/plugins/assert-against-named-outlets.d.ts +1 -1
  408. package/types/stable/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.d.ts +1 -1
  409. package/types/stable/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.d.ts +1 -1
  410. package/types/stable/@ember/template-compiler/lib/plugins/auto-import-builtins.d.ts +1 -4
  411. package/types/stable/@ember/template-compiler/lib/plugins/transform-action-syntax.d.ts +1 -1
  412. package/types/stable/@ember/template-compiler/lib/plugins/transform-each-in-into-each.d.ts +1 -1
  413. package/types/stable/@ember/template-compiler/lib/plugins/transform-each-track-array.d.ts +1 -1
  414. package/types/stable/@ember/template-compiler/lib/plugins/transform-in-element.d.ts +1 -1
  415. package/types/stable/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.d.ts +1 -1
  416. package/types/stable/@ember/template-compiler/lib/plugins/transform-resolutions.d.ts +1 -1
  417. package/types/stable/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.d.ts +1 -1
  418. package/types/stable/@ember/template-compiler/lib/plugins/utils.d.ts +1 -1
  419. package/types/stable/@ember/template-compiler/lib/system/calculate-location-display.d.ts +1 -1
  420. package/types/stable/@ember/template-compiler/lib/types.d.ts +2 -1
  421. package/types/stable/@ember/template-factory/index.d.ts +1 -1
  422. package/types/stable/@glimmer/compiler/lib/builder/builder-interface.d.ts +2 -2
  423. package/types/stable/@glimmer/compiler/lib/builder/builder.d.ts +2 -2
  424. package/types/stable/@glimmer/compiler/lib/compiler.d.ts +1 -1
  425. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/context.d.ts +2 -1
  426. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/index.d.ts +2 -1
  427. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/keywords/impl.d.ts +2 -1
  428. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/curry.d.ts +1 -1
  429. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/dynamic-vars.d.ts +1 -1
  430. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/has-block.d.ts +2 -1
  431. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/if-unless.d.ts +1 -1
  432. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/keywords/utils/log.d.ts +1 -1
  433. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/visitors/element/classified.d.ts +1 -1
  434. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/visitors/element/component.d.ts +1 -1
  435. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/visitors/element/simple-element.d.ts +2 -1
  436. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/visitors/expressions.d.ts +1 -1
  437. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/visitors/statements.d.ts +1 -1
  438. package/types/stable/@glimmer/compiler/lib/passes/1-normalization/visitors/strict-mode.d.ts +1 -1
  439. package/types/stable/@glimmer/compiler/lib/passes/2-encoding/expressions.d.ts +1 -1
  440. package/types/stable/@glimmer/compiler/lib/passes/2-encoding/mir.d.ts +3 -1
  441. package/types/stable/@glimmer/compiler/lib/shared/result.d.ts +1 -1
  442. package/types/stable/@glimmer/manager/lib/public/component.d.ts +1 -1
  443. package/types/stable/@glimmer/manager/lib/util/args-proxy.d.ts +1 -1
  444. package/types/stable/@glimmer/manager/lib/util/capabilities.d.ts +1 -1
  445. package/types/stable/@glimmer/node/lib/node-dom-helper.d.ts +1 -1
  446. package/types/stable/@glimmer/opcode-compiler/lib/opcode-builder/helpers/components.d.ts +1 -1
  447. package/types/stable/@glimmer/runtime/index.d.ts +7 -4
  448. package/types/stable/@glimmer/runtime/lib/compiled/expressions/concat.d.ts +1 -1
  449. package/types/stable/@glimmer/runtime/lib/compiled/opcodes/-debug-strip.d.ts +4 -3
  450. package/types/stable/@glimmer/runtime/lib/compiled/opcodes/component.d.ts +1 -1
  451. package/types/stable/@glimmer/runtime/lib/compiled/opcodes/dom.d.ts +2 -2
  452. package/types/stable/@glimmer/runtime/lib/compiled/opcodes/vm.d.ts +2 -2
  453. package/types/stable/@glimmer/runtime/lib/component/template-only.d.ts +1 -1
  454. package/types/stable/@glimmer/runtime/lib/curried-value.d.ts +1 -1
  455. package/types/stable/@glimmer/runtime/lib/helpers/and.d.ts +3 -0
  456. package/types/stable/@glimmer/runtime/lib/helpers/gt.d.ts +8 -0
  457. package/types/stable/@glimmer/runtime/lib/helpers/gte.d.ts +8 -0
  458. package/types/stable/@glimmer/runtime/lib/helpers/invoke.d.ts +1 -1
  459. package/types/stable/@glimmer/runtime/lib/helpers/lt.d.ts +8 -0
  460. package/types/stable/@glimmer/runtime/lib/helpers/lte.d.ts +8 -0
  461. package/types/stable/@glimmer/runtime/lib/helpers/not.d.ts +3 -0
  462. package/types/stable/@glimmer/runtime/lib/helpers/or.d.ts +3 -0
  463. package/types/stable/@glimmer/runtime/lib/opcodes.d.ts +2 -2
  464. package/types/stable/@glimmer/runtime/lib/references/class-list.d.ts +1 -1
  465. package/types/stable/@glimmer/runtime/lib/references/curry-value.d.ts +1 -1
  466. package/types/stable/@glimmer/runtime/lib/render.d.ts +1 -1
  467. package/types/stable/@glimmer/runtime/lib/scope.d.ts +1 -1
  468. package/types/stable/@glimmer/runtime/lib/vm/append.d.ts +3 -2
  469. package/types/stable/@glimmer/runtime/lib/vm/arguments.d.ts +2 -2
  470. package/types/stable/@glimmer/runtime/lib/vm/content/text.d.ts +1 -1
  471. package/types/stable/@glimmer/runtime/lib/vm/element-builder.d.ts +1 -1
  472. package/types/stable/@glimmer/runtime/lib/vm/low-level.d.ts +2 -1
  473. package/types/stable/@glimmer/runtime/lib/vm/rehydrate-builder.d.ts +1 -1
  474. package/types/stable/@glimmer/runtime/lib/vm/update.d.ts +2 -1
  475. package/types/stable/@glimmer/syntax/lib/keywords.d.ts +2 -2
  476. package/types/stable/@glimmer/tracking/index.d.ts +2 -1
  477. package/types/stable/@glimmer/tracking/primitives/cache.d.ts +1 -1
  478. package/types/stable/index.d.ts +7 -1
  479. package/dist/dev/packages/@ember/-internals/views/lib/component_lookup.js +0 -14
  480. package/dist/dev/packages/shared-chunks/assert-CUCJBR2C.js +0 -19
  481. package/dist/dev/packages/shared-chunks/constants-BbdWMvgs.js +0 -213
  482. package/dist/dev/packages/shared-chunks/dynamic-CgX8M02_.js +0 -3823
  483. package/dist/dev/packages/shared-chunks/element-builder-BpJIoi99.js +0 -404
  484. package/dist/dev/packages/shared-chunks/fragment-Cc5k9Oy4.js +0 -911
  485. package/dist/dev/packages/shared-chunks/index-RzG0Jvjx.js +0 -6306
  486. package/dist/dev/packages/shared-chunks/mandatory-setter-DHZe7-kW.js +0 -425
  487. package/dist/dev/packages/shared-chunks/observers-Bj9qLVau.js +0 -2062
  488. package/dist/dev/packages/shared-chunks/set_properties-kVGzZL_a.js +0 -100
  489. package/dist/dev/packages/shared-chunks/transform-resolutions-D-YtZ0_g.js +0 -7458
  490. package/dist/prod/packages/@ember/-internals/views/lib/component_lookup.js +0 -14
  491. package/dist/prod/packages/shared-chunks/constants-DThhT5fu.js +0 -210
  492. package/dist/prod/packages/shared-chunks/fragment-D7nBU9ae.js +0 -925
  493. package/dist/prod/packages/shared-chunks/index-r-Dz_hzt.js +0 -5931
  494. package/dist/prod/packages/shared-chunks/observers-tZ2aOzr4.js +0 -714
  495. package/dist/prod/packages/shared-chunks/set_properties-C1T46IiN.js +0 -101
  496. package/dist/prod/packages/shared-chunks/super-Cm_a_cLQ.js +0 -275
  497. package/dist/prod/packages/shared-chunks/transform-resolutions-DR4GLmR2.js +0 -6936
  498. package/types/stable/@ember/-internals/views/lib/component_lookup.d.ts +0 -8
  499. package/dist/prod/packages/shared-chunks/{collections-GpG8lT2g.js → collections-C3Y8z_9v.js} +9 -9
@@ -0,0 +1,812 @@
1
+ import { e as expect, S as StackImpl } from './collections-DPkjqeA3.js';
2
+ import { C as ConcreteBounds, i as isSafeString, n as normalizeStringValue, a as CursorImpl, c as clear } from './normalize-CKySQVU7.js';
3
+ import { a as assert } from './assert-Zqc4wiAV.js';
4
+ import { s as setLocalDebugType } from './debug-brand-B1TWjOCH.js';
5
+ import { registerDestructor, destroy } from '../@glimmer/destroyable/index.js';
6
+ import { a as castToBrowser } from './simple-cast-DCvJLSin.js';
7
+ import { warnIfStyleNotTrusted } from '../@glimmer/global-context/index.js';
8
+ import { n as normalizeProperty } from './props-fiqxqhAH.js';
9
+
10
+ const ELEMENT_NODE = 1;
11
+ const TEXT_NODE = 3;
12
+ const COMMENT_NODE = 8;
13
+ const NS_MATHML = 'http://www.w3.org/1998/Math/MathML';
14
+ const NS_SVG = 'http://www.w3.org/2000/svg';
15
+ const INSERT_BEFORE_BEGIN = 'beforebegin';
16
+ const INSERT_BEFORE_END = 'beforeend';
17
+
18
+ // http://www.w3.org/TR/html/syntax.html#html-integration-point
19
+ const SVG_INTEGRATION_POINTS = {
20
+ foreignObject: 1,
21
+ desc: 1,
22
+ title: 1
23
+ };
24
+
25
+ // http://www.w3.org/TR/html/syntax.html#adjust-svg-attributes
26
+ // TODO: Adjust SVG attributes
27
+
28
+ // http://www.w3.org/TR/html/syntax.html#parsing-main-inforeign
29
+ // TODO: Adjust SVG elements
30
+
31
+ // http://www.w3.org/TR/html/syntax.html#parsing-main-inforeign
32
+ const BLACKLIST_TABLE = Object.create(null);
33
+ class DOMOperations {
34
+ // Set by this.setupUselessElement() in constructor
35
+
36
+ constructor(document) {
37
+ this.document = document;
38
+ this.setupUselessElement();
39
+ }
40
+
41
+ // split into separate method so that NodeDOMTreeConstruction
42
+ // can override it.
43
+ setupUselessElement() {
44
+ this.uselessElement = this.document.createElement('div');
45
+ }
46
+ createElement(tag, context) {
47
+ let isElementInSVGNamespace, isHTMLIntegrationPoint, isElementInMathMlNamespace, ns;
48
+ if (context) {
49
+ isElementInSVGNamespace = context.namespaceURI === NS_SVG || tag === 'svg';
50
+ isElementInMathMlNamespace = context.namespaceURI === NS_MATHML || tag === 'math';
51
+ isHTMLIntegrationPoint = !!SVG_INTEGRATION_POINTS[context.tagName];
52
+ } else {
53
+ isElementInSVGNamespace = tag === 'svg';
54
+ isElementInMathMlNamespace = tag === 'math';
55
+ isHTMLIntegrationPoint = false;
56
+ }
57
+ if ((isElementInMathMlNamespace || isElementInSVGNamespace) && !isHTMLIntegrationPoint) {
58
+ // FIXME: This does not properly handle <font> with color, face, or
59
+ // size attributes, which is also disallowed by the spec. We should fix
60
+ // this.
61
+ if (BLACKLIST_TABLE[tag]) {
62
+ throw new Error(`Cannot create a ${tag} inside an SVG context`);
63
+ }
64
+ if (isElementInMathMlNamespace) {
65
+ ns = NS_MATHML;
66
+ } else {
67
+ ns = NS_SVG;
68
+ }
69
+ return this.document.createElementNS(ns, tag);
70
+ } else {
71
+ return this.document.createElement(tag);
72
+ }
73
+ }
74
+ insertBefore(parent, node, reference) {
75
+ parent.insertBefore(node, reference);
76
+ }
77
+ insertHTMLBefore(parent, nextSibling, html) {
78
+ if (html === '') {
79
+ const comment = this.createComment('');
80
+ parent.insertBefore(comment, nextSibling);
81
+ return new ConcreteBounds(parent, comment, comment);
82
+ }
83
+ const prev = nextSibling ? nextSibling.previousSibling : parent.lastChild;
84
+ let last;
85
+ if (nextSibling === null) {
86
+ parent.insertAdjacentHTML(INSERT_BEFORE_END, html);
87
+ last = expect(parent.lastChild);
88
+ } else if (nextSibling instanceof HTMLElement) {
89
+ nextSibling.insertAdjacentHTML('beforebegin', html);
90
+ last = expect(nextSibling.previousSibling);
91
+ } else {
92
+ // Non-element nodes do not support insertAdjacentHTML, so add an
93
+ // element and call it on that element. Then remove the element.
94
+ const {
95
+ uselessElement
96
+ } = this;
97
+ parent.insertBefore(uselessElement, nextSibling);
98
+ uselessElement.insertAdjacentHTML(INSERT_BEFORE_BEGIN, html);
99
+ last = expect(uselessElement.previousSibling);
100
+ parent.removeChild(uselessElement);
101
+ }
102
+ const first = expect(prev ? prev.nextSibling : parent.firstChild);
103
+ return new ConcreteBounds(parent, first, last);
104
+ }
105
+ createTextNode(text) {
106
+ return this.document.createTextNode(text);
107
+ }
108
+ createComment(data) {
109
+ return this.document.createComment(data);
110
+ }
111
+ }
112
+
113
+ class TreeConstruction extends DOMOperations {
114
+ createElementNS(namespace, tag) {
115
+ return this.document.createElementNS(namespace, tag);
116
+ }
117
+ setAttribute(element, name, value, namespace = null) {
118
+ if (namespace) {
119
+ element.setAttributeNS(namespace, name, value);
120
+ } else {
121
+ element.setAttribute(name, value);
122
+ }
123
+ }
124
+ }
125
+ const DOMTreeConstruction = TreeConstruction;
126
+
127
+ const badProtocols = ['javascript:', 'vbscript:'];
128
+ const badTags = ['A', 'BODY', 'LINK', 'IMG', 'IFRAME', 'BASE', 'FORM'];
129
+ const badTagsForDataURI = ['EMBED'];
130
+ const badAttributes = ['href', 'src', 'background', 'action'];
131
+ const badAttributesForDataURI = ['src'];
132
+ function has(array, item) {
133
+ return array.indexOf(item) !== -1;
134
+ }
135
+ function checkURI(tagName, attribute) {
136
+ return (tagName === null || has(badTags, tagName)) && has(badAttributes, attribute);
137
+ }
138
+ function checkDataURI(tagName, attribute) {
139
+ if (tagName === null) return false;
140
+ return has(badTagsForDataURI, tagName) && has(badAttributesForDataURI, attribute);
141
+ }
142
+ function requiresSanitization(tagName, attribute) {
143
+ return checkURI(tagName, attribute) || checkDataURI(tagName, attribute);
144
+ }
145
+ function findProtocolForURL() {
146
+ const weirdURL = URL;
147
+ if (typeof weirdURL === 'object' && weirdURL !== null &&
148
+ // this is super annoying, TS thinks that URL **must** be a function so `URL.parse` check
149
+ // thinks it is `never` without this `as unknown as any`
150
+
151
+ typeof weirdURL.parse === 'function') {
152
+ // In Ember-land the `fastboot` package sets the `URL` global to `require('url')`
153
+ // ultimately, this should be changed (so that we can either rely on the natural `URL` global
154
+ // that exists) but for now we have to detect the specific `FastBoot` case first
155
+ //
156
+ // a future version of `fastboot` will detect if this legacy URL setup is required (by
157
+ // inspecting Ember version) and if new enough, it will avoid shadowing the `URL` global
158
+ // constructor with `require('url')`.
159
+ let nodeURL = weirdURL;
160
+ return url => {
161
+ let protocol = null;
162
+ if (typeof url === 'string') {
163
+ protocol = nodeURL.parse(url).protocol;
164
+ }
165
+ return protocol === null ? ':' : protocol;
166
+ };
167
+ } else if (typeof weirdURL === 'function') {
168
+ return _url => {
169
+ try {
170
+ let url = new weirdURL(_url);
171
+ return url.protocol;
172
+ } catch {
173
+ // any non-fully qualified url string will trigger an error (because there is no
174
+ // baseURI that we can provide; in that case we **know** that the protocol is
175
+ // "safe" because it isn't specifically one of the `badProtocols` listed above
176
+ // (and those protocols can never be the default baseURI)
177
+ return ':';
178
+ }
179
+ };
180
+ } else {
181
+ throw new Error(`@glimmer/runtime needs a valid "globalThis.URL"`);
182
+ }
183
+ }
184
+ let _protocolForUrlImplementation;
185
+ function protocolForUrl(url) {
186
+ if (!_protocolForUrlImplementation) {
187
+ _protocolForUrlImplementation = findProtocolForURL();
188
+ }
189
+ return _protocolForUrlImplementation(url);
190
+ }
191
+ function sanitizeAttributeValue(element, attribute, value) {
192
+ if (value === null || value === undefined) {
193
+ return value;
194
+ }
195
+ if (isSafeString(value)) {
196
+ return value.toHTML();
197
+ }
198
+ const tagName = element.tagName.toUpperCase();
199
+ let str = normalizeStringValue(value);
200
+ if (checkURI(tagName, attribute)) {
201
+ let protocol = protocolForUrl(str);
202
+ if (has(badProtocols, protocol)) {
203
+ return `unsafe:${str}`;
204
+ }
205
+ }
206
+ if (checkDataURI(tagName, attribute)) {
207
+ return `unsafe:${str}`;
208
+ }
209
+ return str;
210
+ }
211
+
212
+ function dynamicAttribute(element, attr, namespace, isTrusting = false) {
213
+ const {
214
+ tagName,
215
+ namespaceURI
216
+ } = element;
217
+ const attribute = {
218
+ element,
219
+ name: attr,
220
+ namespace
221
+ };
222
+ if (attr === 'style' && !isTrusting) {
223
+ return new DebugStyleAttributeManager(attribute);
224
+ }
225
+ if (namespaceURI === NS_SVG) {
226
+ return buildDynamicAttribute(tagName, attr, attribute);
227
+ }
228
+ const {
229
+ type,
230
+ normalized
231
+ } = normalizeProperty(element, attr);
232
+ if (type === 'attr') {
233
+ return buildDynamicAttribute(tagName, normalized, attribute);
234
+ } else {
235
+ return buildDynamicProperty(tagName, normalized, attribute);
236
+ }
237
+ }
238
+ function buildDynamicAttribute(tagName, name, attribute) {
239
+ if (requiresSanitization(tagName, name)) {
240
+ return new SafeDynamicAttribute(attribute);
241
+ } else {
242
+ return new SimpleDynamicAttribute(attribute);
243
+ }
244
+ }
245
+ function buildDynamicProperty(tagName, name, attribute) {
246
+ if (requiresSanitization(tagName, name)) {
247
+ return new SafeDynamicProperty(name, attribute);
248
+ }
249
+ if (isUserInputValue(tagName, name)) {
250
+ return new InputValueDynamicAttribute(name, attribute);
251
+ }
252
+ if (isOptionSelected(tagName, name)) {
253
+ return new OptionSelectedDynamicAttribute(name, attribute);
254
+ }
255
+ return new DefaultDynamicProperty(name, attribute);
256
+ }
257
+ class DynamicAttribute {
258
+ constructor(attribute) {
259
+ this.attribute = attribute;
260
+ }
261
+ }
262
+ class SimpleDynamicAttribute extends DynamicAttribute {
263
+ set(dom, value, _env) {
264
+ const normalizedValue = normalizeValue(value);
265
+ if (normalizedValue !== null) {
266
+ const {
267
+ name,
268
+ namespace
269
+ } = this.attribute;
270
+ dom.__setAttribute(name, normalizedValue, namespace);
271
+ }
272
+ }
273
+ update(value, _env) {
274
+ const normalizedValue = normalizeValue(value);
275
+ const {
276
+ element,
277
+ name
278
+ } = this.attribute;
279
+ if (normalizedValue === null) {
280
+ element.removeAttribute(name);
281
+ } else {
282
+ element.setAttribute(name, normalizedValue);
283
+ }
284
+ }
285
+ }
286
+ class DefaultDynamicProperty extends DynamicAttribute {
287
+ constructor(normalizedName, attribute) {
288
+ super(attribute);
289
+ this.normalizedName = normalizedName;
290
+ }
291
+ value;
292
+ set(dom, value, _env) {
293
+ if (value !== null && value !== undefined) {
294
+ this.value = value;
295
+ dom.__setProperty(this.normalizedName, value);
296
+ }
297
+ }
298
+ update(value, _env) {
299
+ const {
300
+ element
301
+ } = this.attribute;
302
+ if (this.value !== value) {
303
+ element[this.normalizedName] = this.value = value;
304
+ if (value === null || value === undefined) {
305
+ this.removeAttribute();
306
+ }
307
+ }
308
+ }
309
+ removeAttribute() {
310
+ // TODO this sucks but to preserve properties first and to meet current
311
+ // semantics we must do this.
312
+ const {
313
+ element,
314
+ namespace
315
+ } = this.attribute;
316
+ if (namespace) {
317
+ element.removeAttributeNS(namespace, this.normalizedName);
318
+ } else {
319
+ element.removeAttribute(this.normalizedName);
320
+ }
321
+ }
322
+ }
323
+ class SafeDynamicProperty extends DefaultDynamicProperty {
324
+ set(dom, value, env) {
325
+ const {
326
+ element,
327
+ name
328
+ } = this.attribute;
329
+ const sanitized = sanitizeAttributeValue(element, name, value);
330
+ super.set(dom, sanitized, env);
331
+ }
332
+ update(value, env) {
333
+ const {
334
+ element,
335
+ name
336
+ } = this.attribute;
337
+ const sanitized = sanitizeAttributeValue(element, name, value);
338
+ super.update(sanitized, env);
339
+ }
340
+ }
341
+ class SafeDynamicAttribute extends SimpleDynamicAttribute {
342
+ set(dom, value, env) {
343
+ const {
344
+ element,
345
+ name
346
+ } = this.attribute;
347
+ const sanitized = sanitizeAttributeValue(element, name, value);
348
+ super.set(dom, sanitized, env);
349
+ }
350
+ update(value, env) {
351
+ const {
352
+ element,
353
+ name
354
+ } = this.attribute;
355
+ const sanitized = sanitizeAttributeValue(element, name, value);
356
+ super.update(sanitized, env);
357
+ }
358
+ }
359
+ class InputValueDynamicAttribute extends DefaultDynamicProperty {
360
+ set(dom, value) {
361
+ const normalized = normalizeStringValue(value);
362
+ dom.__setProperty('value', normalized);
363
+
364
+ // GH#19219: Browsers don't reflect `input.value = ''` as a value attribute when
365
+ // type is later changed to "radio"/"checkbox". Explicitly set the attribute for <input>.
366
+ // Not needed for <textarea> (no value attribute).
367
+ if (value === '' && this.attribute.element.tagName === 'INPUT') {
368
+ dom.__setAttribute('value', '', null);
369
+ }
370
+ }
371
+ update(value) {
372
+ const input = castToBrowser(this.attribute.element);
373
+ const currentValue = input.value;
374
+ const normalizedValue = normalizeStringValue(value);
375
+ if (currentValue !== normalizedValue) {
376
+ input.value = normalizedValue;
377
+ }
378
+ }
379
+ }
380
+ class OptionSelectedDynamicAttribute extends DefaultDynamicProperty {
381
+ set(dom, value) {
382
+ if (value !== null && value !== undefined && value !== false) {
383
+ dom.__setProperty('selected', true);
384
+ }
385
+ }
386
+ update(value) {
387
+ const option = castToBrowser(this.attribute.element);
388
+ if (value) {
389
+ option.selected = true;
390
+ } else {
391
+ option.selected = false;
392
+ }
393
+ }
394
+ }
395
+ function isOptionSelected(tagName, attribute) {
396
+ return tagName === 'OPTION' && attribute === 'selected';
397
+ }
398
+ function isUserInputValue(tagName, attribute) {
399
+ return (tagName === 'INPUT' || tagName === 'TEXTAREA') && attribute === 'value';
400
+ }
401
+ function normalizeValue(value) {
402
+ if (value === false || value === undefined || value === null || typeof value.toString === 'undefined') {
403
+ return null;
404
+ }
405
+ if (value === true) {
406
+ return '';
407
+ }
408
+ // onclick function etc in SSR
409
+ if (typeof value === 'function') {
410
+ return null;
411
+ }
412
+
413
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string -- @fixme
414
+ return String(value);
415
+ }
416
+ let DebugStyleAttributeManager;
417
+ {
418
+ DebugStyleAttributeManager = class extends SimpleDynamicAttribute {
419
+ set(dom, value, env) {
420
+ warnIfStyleNotTrusted(value);
421
+ super.set(dom, value, env);
422
+ }
423
+ update(value, env) {
424
+ warnIfStyleNotTrusted(value);
425
+ super.update(value, env);
426
+ }
427
+ };
428
+ }
429
+
430
+ class First {
431
+ constructor(node) {
432
+ this.node = node;
433
+ }
434
+ firstNode() {
435
+ return this.node;
436
+ }
437
+ }
438
+ class Last {
439
+ constructor(node) {
440
+ this.node = node;
441
+ }
442
+ lastNode() {
443
+ return this.node;
444
+ }
445
+ }
446
+ class NewTreeBuilder {
447
+ dom;
448
+ updateOperations;
449
+ constructing = null;
450
+ operations = null;
451
+ env;
452
+ cursors = new StackImpl();
453
+ modifierStack = new StackImpl();
454
+ blockStack = new StackImpl();
455
+ static forInitialRender(env, cursor) {
456
+ return new this(env, cursor.element, cursor.nextSibling).initialize();
457
+ }
458
+ static resume(env, block) {
459
+ let parentNode = block.parentElement();
460
+ let nextSibling = block.reset(env);
461
+ let stack = new this(env, parentNode, nextSibling).initialize();
462
+ stack.pushBlock(block);
463
+ return stack;
464
+ }
465
+ constructor(env, parentNode, nextSibling) {
466
+ this.pushElement(parentNode, nextSibling);
467
+ this.env = env;
468
+ this.dom = env.getAppendOperations();
469
+ this.updateOperations = env.getDOM();
470
+ }
471
+ initialize() {
472
+ this.pushAppendingBlock();
473
+ return this;
474
+ }
475
+ debugBlocks() {
476
+ return this.blockStack.toArray();
477
+ }
478
+ get element() {
479
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme
480
+ return this.cursors.current.element;
481
+ }
482
+ get nextSibling() {
483
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme
484
+ return this.cursors.current.nextSibling;
485
+ }
486
+ get hasBlocks() {
487
+ return this.blockStack.size > 0;
488
+ }
489
+ block() {
490
+ return expect(this.blockStack.current);
491
+ }
492
+ popElement() {
493
+ this.cursors.pop();
494
+ expect(this.cursors.current);
495
+ }
496
+ pushAppendingBlock() {
497
+ return this.pushBlock(new AppendingBlockImpl(this.element));
498
+ }
499
+ pushResettableBlock() {
500
+ return this.pushBlock(new ResettableBlockImpl(this.element));
501
+ }
502
+ pushBlockList(list) {
503
+ return this.pushBlock(new AppendingBlockList(this.element, list));
504
+ }
505
+ pushBlock(block, isRemote = false) {
506
+ let current = this.blockStack.current;
507
+ if (current !== null) {
508
+ if (!isRemote) {
509
+ current.didAppendBounds(block);
510
+ }
511
+ }
512
+ this.__openBlock();
513
+ this.blockStack.push(block);
514
+ return block;
515
+ }
516
+ popBlock() {
517
+ this.block().finalize(this);
518
+ this.__closeBlock();
519
+ return expect(this.blockStack.pop());
520
+ }
521
+ __openBlock() {}
522
+ __closeBlock() {}
523
+
524
+ // todo return seems unused
525
+ openElement(tag) {
526
+ let element = this.__openElement(tag);
527
+ this.constructing = element;
528
+ return element;
529
+ }
530
+ __openElement(tag) {
531
+ return this.dom.createElement(tag, this.element);
532
+ }
533
+ flushElement(modifiers) {
534
+ let parent = this.element;
535
+ let element = expect(this.constructing);
536
+ this.__flushElement(parent, element);
537
+ this.constructing = null;
538
+ this.operations = null;
539
+ this.pushModifiers(modifiers);
540
+ this.pushElement(element, null);
541
+ this.didOpenElement(element);
542
+ }
543
+ __flushElement(parent, constructing) {
544
+ this.dom.insertBefore(parent, constructing, this.nextSibling);
545
+ }
546
+ closeElement() {
547
+ this.willCloseElement();
548
+ this.popElement();
549
+ return this.popModifiers();
550
+ }
551
+ pushRemoteElement(element, guid, insertBefore) {
552
+ return this.__pushRemoteElement(element, guid, insertBefore);
553
+ }
554
+ __pushRemoteElement(element, _guid, insertBefore) {
555
+ this.pushElement(element, insertBefore);
556
+ if (insertBefore === undefined) {
557
+ while (element.lastChild) {
558
+ element.removeChild(element.lastChild);
559
+ }
560
+ }
561
+ let block = new RemoteBlock(element);
562
+ return this.pushBlock(block, true);
563
+ }
564
+ popRemoteElement() {
565
+ const block = this.popBlock();
566
+ this.popElement();
567
+ return block;
568
+ }
569
+ pushElement(element, nextSibling = null) {
570
+ this.cursors.push(new CursorImpl(element, nextSibling));
571
+ }
572
+ pushModifiers(modifiers) {
573
+ this.modifierStack.push(modifiers);
574
+ }
575
+ popModifiers() {
576
+ return this.modifierStack.pop();
577
+ }
578
+ didAppendBounds(bounds) {
579
+ this.block().didAppendBounds(bounds);
580
+ return bounds;
581
+ }
582
+ didAppendNode(node) {
583
+ this.block().didAppendNode(node);
584
+ return node;
585
+ }
586
+ didOpenElement(element) {
587
+ this.block().openElement(element);
588
+ return element;
589
+ }
590
+ willCloseElement() {
591
+ this.block().closeElement();
592
+ }
593
+ appendText(string) {
594
+ return this.didAppendNode(this.__appendText(string));
595
+ }
596
+ __appendText(text) {
597
+ let {
598
+ dom,
599
+ element,
600
+ nextSibling
601
+ } = this;
602
+ let node = dom.createTextNode(text);
603
+ dom.insertBefore(element, node, nextSibling);
604
+ return node;
605
+ }
606
+ __appendNode(node) {
607
+ this.dom.insertBefore(this.element, node, this.nextSibling);
608
+ return node;
609
+ }
610
+ __appendFragment(fragment) {
611
+ let first = fragment.firstChild;
612
+ if (first) {
613
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme
614
+ let ret = new ConcreteBounds(this.element, first, fragment.lastChild);
615
+ this.dom.insertBefore(this.element, fragment, this.nextSibling);
616
+ return ret;
617
+ } else {
618
+ const comment = this.__appendComment('');
619
+ return new ConcreteBounds(this.element, comment, comment);
620
+ }
621
+ }
622
+ __appendHTML(html) {
623
+ return this.dom.insertHTMLBefore(this.element, this.nextSibling, html);
624
+ }
625
+ appendDynamicHTML(value) {
626
+ let bounds = this.trustedContent(value);
627
+ this.didAppendBounds(bounds);
628
+ }
629
+ appendDynamicText(value) {
630
+ let node = this.untrustedContent(value);
631
+ this.didAppendNode(node);
632
+ return node;
633
+ }
634
+ appendDynamicFragment(value) {
635
+ let bounds = this.__appendFragment(value);
636
+ this.didAppendBounds(bounds);
637
+ }
638
+ appendDynamicNode(value) {
639
+ let node = this.__appendNode(value);
640
+ let bounds = new ConcreteBounds(this.element, node, node);
641
+ this.didAppendBounds(bounds);
642
+ }
643
+ trustedContent(value) {
644
+ return this.__appendHTML(value);
645
+ }
646
+ untrustedContent(value) {
647
+ return this.__appendText(value);
648
+ }
649
+ appendComment(string) {
650
+ return this.didAppendNode(this.__appendComment(string));
651
+ }
652
+ __appendComment(string) {
653
+ let {
654
+ dom,
655
+ element,
656
+ nextSibling
657
+ } = this;
658
+ let node = dom.createComment(string);
659
+ dom.insertBefore(element, node, nextSibling);
660
+ return node;
661
+ }
662
+ __setAttribute(name, value, namespace) {
663
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme
664
+ this.dom.setAttribute(this.constructing, name, value, namespace);
665
+ }
666
+ __setProperty(name, value) {
667
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme
668
+ this.constructing[name] = value;
669
+ }
670
+ setStaticAttribute(name, value, namespace) {
671
+ this.__setAttribute(name, value, namespace);
672
+ }
673
+ setDynamicAttribute(name, value, trusting, namespace) {
674
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- @fixme
675
+ let element = this.constructing;
676
+ let attribute = dynamicAttribute(element, name, namespace, trusting);
677
+ attribute.set(this, value, this.env);
678
+ return attribute;
679
+ }
680
+ }
681
+ class AppendingBlockImpl {
682
+ first = null;
683
+ last = null;
684
+ nesting = 0;
685
+ constructor(parent) {
686
+ this.parent = parent;
687
+ setLocalDebugType('block:simple', this);
688
+ }
689
+ parentElement() {
690
+ return this.parent;
691
+ }
692
+ firstNode() {
693
+ let first = expect(this.first);
694
+ return first.firstNode();
695
+ }
696
+ lastNode() {
697
+ let last = expect(this.last);
698
+ return last.lastNode();
699
+ }
700
+ openElement(element) {
701
+ this.didAppendNode(element);
702
+ this.nesting++;
703
+ }
704
+ closeElement() {
705
+ this.nesting--;
706
+ }
707
+ didAppendNode(node) {
708
+ if (this.nesting !== 0) return;
709
+ if (!this.first) {
710
+ this.first = new First(node);
711
+ }
712
+ this.last = new Last(node);
713
+ }
714
+ didAppendBounds(bounds) {
715
+ if (this.nesting !== 0) return;
716
+ if (!this.first) {
717
+ this.first = bounds;
718
+ }
719
+ this.last = bounds;
720
+ }
721
+ finalize(stack) {
722
+ if (this.first === null) {
723
+ stack.appendComment('');
724
+ }
725
+ }
726
+ }
727
+ class RemoteBlock extends AppendingBlockImpl {
728
+ constructor(parent) {
729
+ super(parent);
730
+ setLocalDebugType('block:remote', this);
731
+ registerDestructor(this, () => {
732
+ // In general, you only need to clear the root of a hierarchy, and should never
733
+ // need to clear any child nodes. This is an important constraint that gives us
734
+ // a strong guarantee that clearing a subtree is a single DOM operation.
735
+ //
736
+ // Because remote blocks are not normally physically nested inside of the tree
737
+ // that they are logically nested inside, we manually clear remote blocks when
738
+ // a logical parent is cleared.
739
+ //
740
+ // HOWEVER, it is currently possible for a remote block to be physically nested
741
+ // inside of the block it is logically contained inside of. This happens when
742
+ // the remote block is appended to the end of the application's entire element.
743
+ //
744
+ // The problem with that scenario is that Glimmer believes that it owns more of
745
+ // the DOM than it actually does. The code is attempting to write past the end
746
+ // of the Glimmer-managed root, but Glimmer isn't aware of that.
747
+ //
748
+ // The correct solution to that problem is for Glimmer to be aware of the end
749
+ // of the bounds that it owns, and once we make that change, this check could
750
+ // be removed.
751
+ //
752
+ // For now, a more targeted fix is to check whether the node was already removed
753
+ // and avoid clearing the node if it was. In most cases this shouldn't happen,
754
+ // so this might hide bugs where the code clears nested nodes unnecessarily,
755
+ // so we should eventually try to do the correct fix.
756
+ if (this.parentElement() === this.firstNode().parentNode) {
757
+ clear(this);
758
+ }
759
+ });
760
+ }
761
+ }
762
+ class ResettableBlockImpl extends AppendingBlockImpl {
763
+ constructor(parent) {
764
+ super(parent);
765
+ setLocalDebugType('block:resettable', this);
766
+ }
767
+ reset() {
768
+ destroy(this);
769
+ let nextSibling = clear(this);
770
+ this.first = null;
771
+ this.last = null;
772
+ this.nesting = 0;
773
+ return nextSibling;
774
+ }
775
+ }
776
+
777
+ // FIXME: All the noops in here indicate a modelling problem
778
+ class AppendingBlockList {
779
+ constructor(parent, boundList) {
780
+ this.parent = parent;
781
+ this.boundList = boundList;
782
+ this.parent = parent;
783
+ this.boundList = boundList;
784
+ }
785
+ parentElement() {
786
+ return this.parent;
787
+ }
788
+ firstNode() {
789
+ let head = expect(this.boundList[0]);
790
+ return head.firstNode();
791
+ }
792
+ lastNode() {
793
+ let boundList = this.boundList;
794
+ let tail = expect(boundList[boundList.length - 1]);
795
+ return tail.lastNode();
796
+ }
797
+ openElement(_element) {
798
+ }
799
+ closeElement() {
800
+ }
801
+ didAppendNode(_node) {
802
+ }
803
+ didAppendBounds(_bounds) {}
804
+ finalize(_stack) {
805
+ assert(this.boundList.length > 0);
806
+ }
807
+ }
808
+ function clientBuilder(env, cursor) {
809
+ return NewTreeBuilder.forInitialRender(env, cursor);
810
+ }
811
+
812
+ export { BLACKLIST_TABLE as B, COMMENT_NODE as C, DOMTreeConstruction as D, ELEMENT_NODE as E, NewTreeBuilder as N, RemoteBlock as R, SimpleDynamicAttribute as S, TEXT_NODE as T, DynamicAttribute as a, ResettableBlockImpl as b, clientBuilder as c, dynamicAttribute as d, NS_SVG as e, DOMOperations as f };