ember-source 7.2.0-alpha.4 → 7.2.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 (326) hide show
  1. package/blueprints/-addon-import.js +4 -6
  2. package/blueprints/-utils.js +6 -9
  3. package/build-metadata.json +3 -3
  4. package/dist/dev/packages/@ember/-internals/browser-environment/index.js +1 -1
  5. package/dist/dev/packages/@ember/-internals/glimmer/index.js +11 -11
  6. package/dist/dev/packages/@ember/-internals/metal/index.js +18 -18
  7. package/dist/dev/packages/@ember/-internals/routing/index.js +3 -3
  8. package/dist/dev/packages/@ember/-internals/runtime/index.js +1 -1
  9. package/dist/dev/packages/@ember/-internals/runtime/lib/ext/rsvp.js +1 -1
  10. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +7 -7
  11. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +1 -1
  12. package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +3 -3
  13. package/dist/dev/packages/@ember/-internals/utils/index.js +2 -2
  14. package/dist/dev/packages/@ember/-internals/views/lib/mixins/action_support.js +1 -1
  15. package/dist/dev/packages/@ember/-internals/views/lib/system/event_dispatcher.js +2 -2
  16. package/dist/dev/packages/@ember/-internals/views/lib/system/utils.js +1 -1
  17. package/dist/dev/packages/@ember/-internals/views/lib/views/core_view.js +1 -1
  18. package/dist/dev/packages/@ember/application/index.js +6 -7
  19. package/dist/dev/packages/@ember/application/instance.js +4 -4
  20. package/dist/dev/packages/@ember/application/namespace.js +3 -3
  21. package/dist/dev/packages/@ember/array/index.js +10 -64
  22. package/dist/dev/packages/@ember/array/lib/is-array.js +71 -0
  23. package/dist/dev/packages/@ember/array/proxy.js +8 -8
  24. package/dist/dev/packages/@ember/component/helper.js +1 -1
  25. package/dist/dev/packages/@ember/component/index.js +21 -15
  26. package/dist/dev/packages/@ember/component/template-only.js +1 -1
  27. package/dist/dev/packages/@ember/controller/index.js +3 -3
  28. package/dist/dev/packages/@ember/debug/data-adapter.js +3 -3
  29. package/dist/dev/packages/@ember/debug/index.js +1 -1
  30. package/dist/dev/packages/@ember/engine/index.js +5 -5
  31. package/dist/dev/packages/@ember/engine/instance.js +2 -2
  32. package/dist/dev/packages/@ember/helper/index.js +8 -27
  33. package/dist/dev/packages/@ember/modifier/index.js +2 -2
  34. package/dist/dev/packages/@ember/modifier/on.js +1 -1
  35. package/dist/dev/packages/@ember/object/-internals.js +2 -2
  36. package/dist/dev/packages/@ember/object/compat.js +3 -3
  37. package/dist/dev/packages/@ember/object/computed.js +2 -2
  38. package/dist/dev/packages/@ember/object/core.js +7 -7
  39. package/dist/dev/packages/@ember/object/evented.js +2 -2
  40. package/dist/dev/packages/@ember/object/events.js +1 -1
  41. package/dist/dev/packages/@ember/object/index.js +30 -25
  42. package/dist/dev/packages/@ember/object/internals.js +1 -1
  43. package/dist/dev/packages/@ember/object/lib/computed/computed_macros.js +5 -5
  44. package/dist/dev/packages/@ember/object/lib/computed/reduce_computed_macros.js +3 -3
  45. package/dist/dev/packages/@ember/object/mixin.js +6 -6
  46. package/dist/dev/packages/@ember/object/observable.js +7 -7
  47. package/dist/dev/packages/@ember/object/observers.js +1 -1
  48. package/dist/dev/packages/@ember/object/promise-proxy-mixin.js +3 -3
  49. package/dist/dev/packages/@ember/reactive/collections.js +153 -153
  50. package/dist/dev/packages/@ember/renderer/index.js +1 -1
  51. package/dist/dev/packages/@ember/routing/-internals.js +3 -3
  52. package/dist/dev/packages/@ember/routing/index.js +12 -8
  53. package/dist/dev/packages/@ember/routing/lib/generate_controller.js +2 -3
  54. package/dist/dev/packages/@ember/routing/lib/routing-service.js +5 -5
  55. package/dist/dev/packages/@ember/routing/lib/utils.js +3 -3
  56. package/dist/dev/packages/@ember/routing/route.js +12 -12
  57. package/dist/dev/packages/@ember/routing/router-service.js +25 -18
  58. package/dist/dev/packages/@ember/routing/router.js +5 -5
  59. package/dist/dev/packages/@ember/runloop/index.js +1 -1
  60. package/dist/dev/packages/@ember/service/index.js +1 -1
  61. package/dist/dev/packages/@ember/template-compiler/lib/compile-options.js +3 -3
  62. package/dist/dev/packages/@ember/template-compiler/lib/template.js +2 -2
  63. package/dist/dev/packages/@ember/template-factory/index.js +1 -1
  64. package/dist/dev/packages/@ember/utils/lib/is_empty.js +1 -1
  65. package/dist/dev/packages/@glimmer/encoder/index.js +1 -1
  66. package/dist/dev/packages/@glimmer/manager/index.js +4 -4
  67. package/dist/dev/packages/@glimmer/node/index.js +3 -3
  68. package/dist/dev/packages/@glimmer/opcode-compiler/index.js +2 -2
  69. package/dist/dev/packages/@glimmer/program/index.js +10 -10
  70. package/dist/dev/packages/@glimmer/reference/index.js +5 -5
  71. package/dist/dev/packages/@glimmer/runtime/index.js +13 -13
  72. package/dist/dev/packages/@glimmer/tracking/index.js +2 -2
  73. package/dist/dev/packages/@glimmer/tracking/primitives/cache/index.js +1 -1
  74. package/dist/dev/packages/@glimmer/util/index.js +4 -4
  75. package/dist/dev/packages/@glimmer/validator/index.js +3 -3
  76. package/dist/dev/packages/@glimmer/vm/index.js +2 -2
  77. package/dist/dev/packages/ember/version.js +1 -1
  78. package/dist/dev/packages/ember-template-compiler/index.js +4 -4
  79. package/dist/dev/packages/router_js/index.js +2 -2
  80. package/dist/dev/packages/rsvp/index.js +2281 -1
  81. package/dist/dev/packages/shared-chunks/{alias-RGbDZoAB.js → alias-DpqL1qx6.js} +7 -7
  82. package/dist/dev/packages/shared-chunks/{api-BT9M3UaD.js → api-BlZDPg1n.js} +6 -6
  83. package/dist/dev/packages/shared-chunks/{element-builder-Cl1kHFJE.js → api-C0PAtEgQ.js} +139 -120
  84. package/dist/dev/packages/shared-chunks/{api-DG5kRT-o.js → api-DuLOZMO_.js} +3 -3
  85. package/dist/dev/packages/shared-chunks/{args-proxy-CB0SM6jC.js → args-proxy-CS5Brs3_.js} +2 -2
  86. package/dist/dev/packages/shared-chunks/{untouchable-this-BHdAERUu.js → arguments-CDkbOqTS.js} +236 -236
  87. package/dist/dev/packages/shared-chunks/{array-BMaSKezP.js → array-CVEnNWng.js} +3 -3
  88. package/dist/dev/packages/shared-chunks/{array-utils-BEaSKdEb.js → array-utils-CZQxrdD3.js} +1 -1
  89. package/dist/dev/packages/shared-chunks/{cache-CeWOBNQg.js → cache-DGDPVCpC.js} +2 -3
  90. package/dist/dev/packages/shared-chunks/{capabilities-CZkuOqqC.js → capabilities-CajW4QjE.js} +1 -1
  91. package/dist/dev/packages/shared-chunks/{chain-tags-DfmU63mS.js → chain-tags-uWSImHzB.js} +4 -4
  92. package/dist/dev/packages/shared-chunks/{collections-DEt-i-8B.js → collections-DPkjqeA3.js} +2 -2
  93. package/dist/dev/packages/shared-chunks/{compiler-DhH2WLpA.js → compiler-QUSl_urU.js} +3 -3
  94. package/dist/dev/packages/shared-chunks/{computed-Daavz6vC.js → computed-BPCtuOxQ.js} +6 -6
  95. package/dist/dev/packages/shared-chunks/{curly-YoYS2vXw.js → curly-Ei5G8jhk.js} +7 -7
  96. package/dist/dev/packages/shared-chunks/{curried-Cnjy9_ug.js → curried-BZnYakIg.js} +1 -1
  97. package/dist/dev/packages/shared-chunks/{decorator-DYQwMItS.js → decorator-B5Uh5NFI.js} +1 -1
  98. package/dist/dev/packages/shared-chunks/{element-bBwMD8cw.js → element-BYLB-q7a.js} +5 -3
  99. package/dist/dev/packages/shared-chunks/{events-B1lx9T1I.js → events-6aFVjD4k.js} +1 -1
  100. package/dist/{prod/packages/shared-chunks/flags-B9qxc-pB.js → dev/packages/shared-chunks/flags-BZxHQ0yn.js} +1 -1
  101. package/dist/dev/packages/shared-chunks/{get-CO3EIWsm.js → get-6I3sjd-I.js} +33 -36
  102. package/dist/{prod/packages/shared-chunks/get_properties-wj_Qmotj.js → dev/packages/shared-chunks/get_properties-Cm2sWt5f.js} +1 -1
  103. package/dist/dev/packages/shared-chunks/{guid-PO2v9BaN.js → guid-Cbq2sNV_.js} +1 -1
  104. package/dist/dev/packages/shared-chunks/{hash-2-93qikL.js → hash-6NDs_5_f.js} +18 -12
  105. package/dist/dev/packages/shared-chunks/{helper-Bm6EhgSW.js → helper-DIj85_-f.js} +21 -9
  106. package/dist/dev/packages/shared-chunks/{index-dyv6rcBf.js → index-B3pPx1fL.js} +113 -134
  107. package/dist/dev/packages/shared-chunks/{index-DX90CU4L.js → index-BGP1rw3B.js} +1 -1
  108. package/dist/dev/packages/shared-chunks/{index-DkwVSPP5.js → index-DaFzpTIE.js} +10 -9
  109. package/dist/dev/packages/shared-chunks/{injected_property-B075jH6c.js → injected_property-CbBLr5jt.js} +2 -2
  110. package/dist/dev/packages/shared-chunks/{internal-Bpr6ihB_.js → internal-DTOXyEGM.js} +4 -4
  111. package/dist/dev/packages/shared-chunks/{internal-helper-IC87S6iZ.js → internal-helper-CKrni0b_.js} +1 -1
  112. package/dist/dev/packages/shared-chunks/{invoke-Ds0KEfP_.js → invoke-d9sqa50M.js} +3 -3
  113. package/dist/dev/packages/shared-chunks/{libraries-P8Ins5CB.js → libraries-DwffpMGE.js} +1 -1
  114. package/dist/dev/packages/shared-chunks/{meta-Cjo3zQJq.js → meta-BqC7f9Ia.js} +1 -1
  115. package/dist/{prod/packages/shared-chunks/namespace_search-TFdmjK_a.js → dev/packages/shared-chunks/namespace_search-BfvzEQzN.js} +1 -1
  116. package/dist/dev/packages/shared-chunks/{normalize-CxG_iVLJ.js → normalize-CKySQVU7.js} +2 -2
  117. package/dist/dev/packages/shared-chunks/{or-Bg6rCMF8.js → not-DYh6AY9Z.js} +36 -36
  118. package/dist/dev/packages/shared-chunks/{observers-CejcZw5s.js → observers-DMlX2nCi.js} +5 -5
  119. package/dist/dev/packages/shared-chunks/{on-Ch_lyozr.js → on-DlF0Wy7P.js} +10 -10
  120. package/dist/dev/packages/shared-chunks/{present-D0EfKzC6.js → present-B1rrjAVM.js} +1 -1
  121. package/dist/{prod/packages/shared-chunks/program-CF651Zuj.js → dev/packages/shared-chunks/program-DlgjqLa6.js} +3 -3
  122. package/dist/dev/packages/shared-chunks/{program-context-BaYVr5GA.js → program-context-Dq8xN2HI.js} +5 -4
  123. package/dist/dev/packages/shared-chunks/{property_get-BjbsrgpU.js → property_get-CRP7MFz_.js} +3 -3
  124. package/dist/dev/packages/shared-chunks/{property_set-LJskl202.js → property_set-qCUylPEK.js} +3 -3
  125. package/dist/dev/packages/shared-chunks/{reference-C-OXd_kp.js → reference-BqOLhKFy.js} +3 -3
  126. package/dist/dev/packages/shared-chunks/{registers-Buvdhhxx.js → registers-C_W2qYHJ.js} +1 -1
  127. package/dist/dev/packages/shared-chunks/{rehydrate-builder-IH4d_JQy.js → rehydrate-builder-C6k1XhET.js} +4 -4
  128. package/dist/dev/packages/shared-chunks/{render-Dz3OWqXy.js → render-87_sKZ_k.js} +94 -94
  129. package/dist/dev/packages/shared-chunks/{rsvp-C6j8G1D1.js → rsvp.es-DR7yS7qg.js} +150 -154
  130. package/dist/dev/packages/shared-chunks/{serialize-builder-DKliZPPG.js → serialize-builder-BlxBjwO-.js} +2 -2
  131. package/dist/dev/packages/shared-chunks/{set_properties-CNds2HCH.js → set_properties-C4TSebH6.js} +2 -2
  132. package/dist/dev/packages/shared-chunks/{setup-registry-C_YovxNX.js → setup-registry-9DCmHTFF.js} +18 -18
  133. package/dist/{prod/packages/shared-chunks/simple-cast-BXTrayoV.js → dev/packages/shared-chunks/simple-cast-DCvJLSin.js} +1 -1
  134. package/dist/{prod/packages/shared-chunks/super-D4qkU4uq.js → dev/packages/shared-chunks/super-BBBjgF69.js} +1 -1
  135. package/dist/{prod/packages/shared-chunks/syscall-ops-nrBHMOTp.js → dev/packages/shared-chunks/syscall-ops-CN7STuUn.js} +1 -1
  136. package/dist/dev/packages/shared-chunks/{template-B0Apv9g2.js → template-BRrQR6KS.js} +1 -1
  137. package/dist/dev/packages/shared-chunks/{template-only-BxYzSEnC.js → template-only-Cu639ICT.js} +2 -4
  138. package/dist/dev/packages/shared-chunks/{textarea-DHjEFpZu.js → textarea-C4lYkaHj.js} +12 -8
  139. package/dist/dev/packages/shared-chunks/{tracked-B76E1nGz.js → tracked-DEyf0T_X.js} +5 -5
  140. package/dist/dev/packages/shared-chunks/{tracked-data-CH1USZZy.js → tracked-data-DgqqRdYO.js} +2 -2
  141. package/dist/dev/packages/shared-chunks/{unique-id-Hd96VZlE.js → unique-id-DQOhouG1.js} +2 -2
  142. package/dist/dev/packages/shared-chunks/{unrecognized-url-error-BQdkjTtZ.js → unrecognized-url-error-BJHjL30Q.js} +2 -2
  143. package/dist/{prod/packages/shared-chunks/vm-ops-5QCUIRx4.js → dev/packages/shared-chunks/vm-ops-ImHv0Wtg.js} +1 -1
  144. package/dist/prod/packages/@ember/-internals/glimmer/index.js +11 -11
  145. package/dist/prod/packages/@ember/-internals/metal/index.js +18 -18
  146. package/dist/prod/packages/@ember/-internals/routing/index.js +3 -3
  147. package/dist/prod/packages/@ember/-internals/runtime/index.js +1 -1
  148. package/dist/prod/packages/@ember/-internals/runtime/lib/ext/rsvp.js +1 -1
  149. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +7 -7
  150. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +1 -1
  151. package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +3 -3
  152. package/dist/prod/packages/@ember/-internals/utils/index.js +2 -2
  153. package/dist/prod/packages/@ember/-internals/views/lib/mixins/action_support.js +1 -1
  154. package/dist/prod/packages/@ember/-internals/views/lib/system/event_dispatcher.js +2 -2
  155. package/dist/prod/packages/@ember/-internals/views/lib/system/utils.js +1 -1
  156. package/dist/prod/packages/@ember/-internals/views/lib/views/core_view.js +1 -1
  157. package/dist/prod/packages/@ember/application/index.js +5 -6
  158. package/dist/prod/packages/@ember/application/instance.js +4 -4
  159. package/dist/prod/packages/@ember/application/namespace.js +3 -3
  160. package/dist/prod/packages/@ember/array/index.js +11 -58
  161. package/dist/prod/packages/@ember/array/lib/is-array.js +64 -0
  162. package/dist/prod/packages/@ember/array/proxy.js +8 -8
  163. package/dist/prod/packages/@ember/component/helper.js +1 -1
  164. package/dist/prod/packages/@ember/component/index.js +20 -14
  165. package/dist/prod/packages/@ember/component/template-only.js +1 -1
  166. package/dist/prod/packages/@ember/controller/index.js +3 -3
  167. package/dist/prod/packages/@ember/debug/data-adapter.js +3 -3
  168. package/dist/prod/packages/@ember/engine/index.js +5 -5
  169. package/dist/prod/packages/@ember/engine/instance.js +2 -2
  170. package/dist/prod/packages/@ember/helper/index.js +8 -27
  171. package/dist/prod/packages/@ember/modifier/index.js +2 -2
  172. package/dist/prod/packages/@ember/modifier/on.js +1 -1
  173. package/dist/prod/packages/@ember/object/-internals.js +2 -2
  174. package/dist/prod/packages/@ember/object/compat.js +3 -3
  175. package/dist/prod/packages/@ember/object/computed.js +2 -2
  176. package/dist/prod/packages/@ember/object/core.js +7 -7
  177. package/dist/prod/packages/@ember/object/evented.js +2 -2
  178. package/dist/prod/packages/@ember/object/events.js +1 -1
  179. package/dist/prod/packages/@ember/object/index.js +30 -25
  180. package/dist/prod/packages/@ember/object/internals.js +2 -2
  181. package/dist/prod/packages/@ember/object/lib/computed/computed_macros.js +4 -4
  182. package/dist/prod/packages/@ember/object/lib/computed/reduce_computed_macros.js +2 -2
  183. package/dist/prod/packages/@ember/object/mixin.js +6 -6
  184. package/dist/prod/packages/@ember/object/observable.js +7 -7
  185. package/dist/prod/packages/@ember/object/observers.js +1 -1
  186. package/dist/prod/packages/@ember/object/promise-proxy-mixin.js +3 -3
  187. package/dist/prod/packages/@ember/reactive/collections.js +153 -153
  188. package/dist/prod/packages/@ember/renderer/index.js +1 -1
  189. package/dist/prod/packages/@ember/routing/index.js +12 -8
  190. package/dist/prod/packages/@ember/routing/lib/generate_controller.js +1 -2
  191. package/dist/prod/packages/@ember/routing/lib/routing-service.js +4 -4
  192. package/dist/prod/packages/@ember/routing/lib/utils.js +3 -3
  193. package/dist/prod/packages/@ember/routing/route.js +12 -12
  194. package/dist/prod/packages/@ember/routing/router-service.js +24 -17
  195. package/dist/prod/packages/@ember/routing/router.js +5 -5
  196. package/dist/prod/packages/@ember/runloop/index.js +1 -1
  197. package/dist/prod/packages/@ember/service/index.js +1 -1
  198. package/dist/prod/packages/@ember/template-compiler/lib/compile-options.js +3 -3
  199. package/dist/prod/packages/@ember/template-compiler/lib/template.js +2 -2
  200. package/dist/prod/packages/@ember/template-factory/index.js +1 -1
  201. package/dist/prod/packages/@ember/utils/lib/is_empty.js +1 -1
  202. package/dist/prod/packages/@glimmer/encoder/index.js +1 -1
  203. package/dist/prod/packages/@glimmer/manager/index.js +4 -4
  204. package/dist/prod/packages/@glimmer/node/index.js +3 -3
  205. package/dist/prod/packages/@glimmer/opcode-compiler/index.js +2 -2
  206. package/dist/prod/packages/@glimmer/program/index.js +10 -10
  207. package/dist/prod/packages/@glimmer/reference/index.js +5 -5
  208. package/dist/prod/packages/@glimmer/runtime/index.js +13 -13
  209. package/dist/prod/packages/@glimmer/tracking/index.js +2 -2
  210. package/dist/prod/packages/@glimmer/tracking/primitives/cache/index.js +1 -1
  211. package/dist/prod/packages/@glimmer/util/index.js +4 -4
  212. package/dist/prod/packages/@glimmer/validator/index.js +3 -3
  213. package/dist/prod/packages/@glimmer/vm/index.js +2 -2
  214. package/dist/prod/packages/ember/version.js +1 -1
  215. package/dist/prod/packages/ember-template-compiler/index.js +4 -4
  216. package/dist/prod/packages/router_js/index.js +2 -2
  217. package/dist/prod/packages/rsvp/index.js +2281 -1
  218. package/dist/prod/packages/shared-chunks/{alias-DsIh-16z.js → alias-Bod6qdNp.js} +7 -7
  219. package/dist/prod/packages/shared-chunks/{api-CGZbGcvX.js → api-B_poQGXS.js} +6 -6
  220. package/dist/prod/packages/shared-chunks/{element-builder-CZePCkbA.js → api-CQexacBn.js} +139 -120
  221. package/dist/prod/packages/shared-chunks/{api-DOLN_cR2.js → api-DlJKfm_f.js} +3 -3
  222. package/dist/prod/packages/shared-chunks/{args-proxy-CaXVcI8G.js → args-proxy-CCoFtYLS.js} +2 -2
  223. package/dist/prod/packages/shared-chunks/{debug-render-tree-CYENUjgX.js → arguments-BzAkZVBa.js} +198 -198
  224. package/dist/prod/packages/shared-chunks/{array-DYFI95FA.js → array-BzReKMeW.js} +3 -3
  225. package/dist/prod/packages/shared-chunks/{array-utils-BEaSKdEb.js → array-utils-CZQxrdD3.js} +1 -1
  226. package/dist/prod/packages/shared-chunks/{cache-CG6_L9db.js → cache-CofLhaS4.js} +1 -2
  227. package/dist/prod/packages/shared-chunks/{capabilities-_5e35539.js → capabilities-BuVYh-vx.js} +1 -1
  228. package/dist/prod/packages/shared-chunks/{chain-tags-BP0V2LnZ.js → chain-tags-B2J7DsxO.js} +4 -4
  229. package/dist/prod/packages/shared-chunks/{collections-By4M3cTy.js → collections-GpG8lT2g.js} +10 -10
  230. package/dist/prod/packages/shared-chunks/{compiler-DQmEjFyx.js → compiler-lBSssiWp.js} +2 -2
  231. package/dist/prod/packages/shared-chunks/{computed-D6MVTTDd.js → computed-DtIStxvq.js} +6 -6
  232. package/dist/prod/packages/shared-chunks/{curly-DCYSwLtz.js → curly-IY06zACp.js} +7 -7
  233. package/dist/prod/packages/shared-chunks/{curried-Cnjy9_ug.js → curried-BZnYakIg.js} +1 -1
  234. package/dist/prod/packages/shared-chunks/{decorator-B8Lpq40g.js → decorator-9ikVwsjY.js} +1 -1
  235. package/dist/prod/packages/shared-chunks/{element-CT5H5uxF.js → element-DgHdPZ8u.js} +5 -3
  236. package/dist/prod/packages/shared-chunks/{events-C7aYCy0N.js → events-DYrYz3V8.js} +1 -1
  237. package/dist/{dev/packages/shared-chunks/flags-B9qxc-pB.js → prod/packages/shared-chunks/flags-BZxHQ0yn.js} +1 -1
  238. package/dist/prod/packages/shared-chunks/{get-tlL23wmp.js → get-Dago5uGl.js} +33 -36
  239. package/dist/{dev/packages/shared-chunks/get_properties-B203vZpz.js → prod/packages/shared-chunks/get_properties-Dg3xFpiS.js} +1 -1
  240. package/dist/prod/packages/shared-chunks/{guid-PO2v9BaN.js → guid-Cbq2sNV_.js} +1 -1
  241. package/dist/prod/packages/shared-chunks/{hash-C6IoC4eR.js → hash-gEXIsSO4.js} +24 -18
  242. package/dist/prod/packages/shared-chunks/{helper-CCK8Ef0x.js → helper-DkXiTBjc.js} +21 -9
  243. package/dist/prod/packages/shared-chunks/{index-D-rcNBLp.js → index-Bf53M8eS.js} +9 -8
  244. package/dist/prod/packages/shared-chunks/{index-DabsnYit.js → index-CslMfEpb.js} +110 -131
  245. package/dist/prod/packages/shared-chunks/{injected_property-COGiYHKc.js → injected_property-Y-FadDej.js} +2 -2
  246. package/dist/prod/packages/shared-chunks/{internal-BEJC2IJ-.js → internal-BQ7zHrqS.js} +4 -4
  247. package/dist/prod/packages/shared-chunks/{internal-helper-CoxiRnnb.js → internal-helper-Bz1lpDXr.js} +1 -1
  248. package/dist/prod/packages/shared-chunks/{invoke-D_jsLbsj.js → invoke-DhQ5QRp2.js} +3 -3
  249. package/dist/prod/packages/shared-chunks/{libraries-Bs3H8iwC.js → libraries-DBql0hdn.js} +2 -2
  250. package/dist/prod/packages/shared-chunks/{meta-Ce6-qROq.js → meta-BJtIZDir.js} +1 -1
  251. package/dist/{dev/packages/shared-chunks/namespace_search-TFdmjK_a.js → prod/packages/shared-chunks/namespace_search-BfvzEQzN.js} +1 -1
  252. package/dist/prod/packages/shared-chunks/{normalize-Bx4H3NjB.js → normalize-C_IStty9.js} +2 -2
  253. package/dist/prod/packages/shared-chunks/{or-sYlRiUn_.js → not-BOIVROuv.js} +28 -28
  254. package/dist/prod/packages/shared-chunks/{observers-Ci31SE36.js → observers-BmobpXAF.js} +5 -5
  255. package/dist/prod/packages/shared-chunks/{on-Dgmychhk.js → on-BZHAxzdq.js} +10 -10
  256. package/dist/{dev/packages/shared-chunks/program-CPXeXWVB.js → prod/packages/shared-chunks/program-BAh__OXZ.js} +3 -3
  257. package/dist/prod/packages/shared-chunks/{program-context-DmI53TzJ.js → program-context-COSioH46.js} +5 -4
  258. package/dist/prod/packages/shared-chunks/{property_get-Sw0SicEZ.js → property_get-DAKgbeJX.js} +2 -2
  259. package/dist/prod/packages/shared-chunks/{property_set-SHEIPMUG.js → property_set-BaQJdVfS.js} +3 -3
  260. package/dist/prod/packages/shared-chunks/{reference-D2agTt1V.js → reference-CG0yPgLy.js} +3 -3
  261. package/dist/prod/packages/shared-chunks/{registers-Buvdhhxx.js → registers-C_W2qYHJ.js} +1 -1
  262. package/dist/prod/packages/shared-chunks/{rehydrate-builder-B7MtrWip.js → rehydrate-builder-Blt1x9MP.js} +4 -4
  263. package/dist/prod/packages/shared-chunks/{render-B790-vbk.js → render-Dx7lr1hR.js} +94 -94
  264. package/dist/prod/packages/shared-chunks/{rsvp-C6j8G1D1.js → rsvp.es-DR7yS7qg.js} +150 -154
  265. package/dist/prod/packages/shared-chunks/{serialize-builder-kEyOKbzp.js → serialize-builder-BvAXYHTr.js} +2 -2
  266. package/dist/prod/packages/shared-chunks/{set_properties-CcLLHg1w.js → set_properties-Qxhw4qzw.js} +2 -2
  267. package/dist/prod/packages/shared-chunks/{setup-registry-D14I0iDX.js → setup-registry-U-6VaNQG.js} +18 -18
  268. package/dist/{dev/packages/shared-chunks/simple-cast-BXTrayoV.js → prod/packages/shared-chunks/simple-cast-DCvJLSin.js} +1 -1
  269. package/dist/{dev/packages/shared-chunks/super-D4qkU4uq.js → prod/packages/shared-chunks/super-BBBjgF69.js} +1 -1
  270. package/dist/{dev/packages/shared-chunks/syscall-ops-nrBHMOTp.js → prod/packages/shared-chunks/syscall-ops-CN7STuUn.js} +1 -1
  271. package/dist/prod/packages/shared-chunks/{template-B0Apv9g2.js → template-BRrQR6KS.js} +1 -1
  272. package/dist/prod/packages/shared-chunks/{template-only-CP0NT7ce.js → template-only-DKNcKM5b.js} +2 -4
  273. package/dist/prod/packages/shared-chunks/{textarea-B_JYBuE8.js → textarea-DOmZ1x0E.js} +11 -7
  274. package/dist/prod/packages/shared-chunks/{tracked-CXcapuAm.js → tracked-B9380JtC.js} +5 -5
  275. package/dist/prod/packages/shared-chunks/{tracked-data-DNDzhYXf.js → tracked-data-CHq42QHb.js} +2 -2
  276. package/dist/prod/packages/shared-chunks/{unique-id-Hn8Qp4dS.js → unique-id-o2pS74go.js} +2 -2
  277. package/dist/prod/packages/shared-chunks/{unrecognized-url-error-ClNyMFJt.js → unrecognized-url-error-EgNrnFu_.js} +2 -2
  278. package/dist/{dev/packages/shared-chunks/vm-ops-5QCUIRx4.js → prod/packages/shared-chunks/vm-ops-ImHv0Wtg.js} +1 -1
  279. package/docs/data.json +316 -334
  280. package/package.json +6 -4
  281. package/types/stable/@ember/-internals/glimmer/index.d.ts +165 -121
  282. package/types/stable/@ember/-internals/glimmer/lib/component-managers/mount.d.ts +1 -1
  283. package/types/stable/@ember/-internals/glimmer/lib/component-managers/outlet.d.ts +1 -1
  284. package/types/stable/@ember/-internals/glimmer/lib/component.d.ts +8 -2
  285. package/types/stable/@ember/-internals/glimmer/lib/glimmer-tracking-docs.d.ts +12 -12
  286. package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +18 -6
  287. package/types/stable/@ember/-internals/glimmer/lib/helpers/array.d.ts +3 -1
  288. package/types/stable/@ember/-internals/glimmer/lib/helpers/component.d.ts +65 -121
  289. package/types/stable/@ember/-internals/glimmer/lib/helpers/concat.d.ts +8 -4
  290. package/types/stable/@ember/-internals/glimmer/lib/helpers/each-in.d.ts +16 -14
  291. package/types/stable/@ember/-internals/glimmer/lib/helpers/element.d.ts +2 -0
  292. package/types/stable/@ember/-internals/glimmer/lib/helpers/fn.d.ts +11 -7
  293. package/types/stable/@ember/-internals/glimmer/lib/helpers/get.d.ts +23 -29
  294. package/types/stable/@ember/-internals/glimmer/lib/helpers/hash.d.ts +3 -1
  295. package/types/stable/@ember/-internals/glimmer/lib/helpers/if-unless.d.ts +95 -49
  296. package/types/stable/@ember/-internals/glimmer/lib/helpers/mut.d.ts +23 -54
  297. package/types/stable/@ember/-internals/glimmer/lib/helpers/page-title.d.ts +6 -2
  298. package/types/stable/@ember/-internals/glimmer/lib/helpers/readonly.d.ts +4 -8
  299. package/types/stable/@ember/-internals/glimmer/lib/modifiers/on.d.ts +10 -10
  300. package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +1 -2
  301. package/types/stable/@ember/-internals/glimmer/lib/syntax/in-element.d.ts +2 -0
  302. package/types/stable/@ember/-internals/glimmer/lib/syntax/let.d.ts +2 -14
  303. package/types/stable/@ember/-internals/glimmer/lib/syntax/mount.d.ts +15 -11
  304. package/types/stable/@ember/-internals/glimmer/lib/syntax/outlet.d.ts +17 -10
  305. package/types/stable/@ember/-internals/runtime/lib/mixins/target_action_support.d.ts +1 -1
  306. package/types/stable/@ember/array/index.d.ts +6 -29
  307. package/types/stable/@ember/array/lib/is-array.d.ts +35 -0
  308. package/types/stable/@ember/component/template-only.d.ts +1 -3
  309. package/types/stable/@ember/controller/index.d.ts +1 -1
  310. package/types/stable/@ember/helper/index.d.ts +0 -19
  311. package/types/stable/@ember/object/index.d.ts +4 -3
  312. package/types/stable/@ember/object/observable.d.ts +4 -0
  313. package/types/stable/@ember/reactive/collections.d.ts +0 -6
  314. package/types/stable/@ember/routing/lib/generate_controller.d.ts +1 -1
  315. package/types/stable/@ember/routing/route.d.ts +2 -2
  316. package/types/stable/@ember/routing/router-service.d.ts +20 -12
  317. package/types/stable/@glimmer/runtime/lib/component/template-only.d.ts +0 -2
  318. package/types/stable/@glimmer/runtime/lib/dom/sanitized-values.d.ts +2 -2
  319. package/types/stable/@glimmer/runtime/lib/helpers/array.d.ts +1 -1
  320. package/types/stable/@glimmer/runtime/lib/helpers/concat.d.ts +8 -3
  321. package/types/stable/@glimmer/runtime/lib/helpers/fn.d.ts +13 -7
  322. package/types/stable/@glimmer/runtime/lib/helpers/get.d.ts +21 -29
  323. package/types/stable/@glimmer/runtime/lib/helpers/hash.d.ts +1 -1
  324. package/types/stable/@glimmer/syntax/lib/get-template-locals.d.ts +1 -1
  325. package/types/stable/@glimmer/tracking/index.d.ts +12 -12
  326. package/types/stable/index.d.ts +1 -0
package/docs/data.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "The Ember API",
4
4
  "description": "The Ember API: a framework for building ambitious web applications",
5
5
  "url": "https://emberjs.com/",
6
- "version": "7.2.0-alpha.4"
6
+ "version": "7.2.0-beta.1"
7
7
  },
8
8
  "files": {
9
9
  "node_modules/rsvp/lib/rsvp/promise/all.js": {
@@ -965,8 +965,8 @@
965
965
  "fors": {},
966
966
  "namespaces": {}
967
967
  },
968
- "packages/@ember/array/lib/make-array.ts": {
969
- "name": "packages/@ember/array/lib/make-array.ts",
968
+ "packages/@ember/array/lib/is-array.ts": {
969
+ "name": "packages/@ember/array/lib/is-array.ts",
970
970
  "modules": {
971
971
  "@ember/array": 1
972
972
  },
@@ -976,6 +976,15 @@
976
976
  },
977
977
  "namespaces": {}
978
978
  },
979
+ "packages/@ember/array/lib/make-array.ts": {
980
+ "name": "packages/@ember/array/lib/make-array.ts",
981
+ "modules": {},
982
+ "classes": {},
983
+ "fors": {
984
+ "@ember/array": 1
985
+ },
986
+ "namespaces": {}
987
+ },
979
988
  "packages/@ember/array/index.ts": {
980
989
  "name": "packages/@ember/array/index.ts",
981
990
  "modules": {},
@@ -2609,7 +2618,7 @@
2609
2618
  "tag": "main",
2610
2619
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
2611
2620
  "line": 57,
2612
- "description": "[Glimmer](https://github.com/tildeio/glimmer) is a templating engine used by Ember.js that is compatible with a subset of the [Handlebars](http://handlebarsjs.com/) syntax.\n\n### Showing a property\n\nTemplates manage the flow of an application's UI, and display state (through\nthe DOM) to a user. For example, given a component with the property \"name\",\nthat component's template can use the name in several ways:\n\n```app/components/person-profile.js\nimport Component from '@ember/component';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class extends Component {\n @tracked name = 'Jill'\n}\n```\n\n```app/components/person-profile.hbs\n{{this.name}}\n<div>{{this.name}}</div>\n<span data-name={{this.name}}></span>\n```\n\nAny time the \"name\" property on the component changes, the DOM will be\nupdated.\n\nProperties can be chained as well:\n\n```handlebars\n{{@aUserModel.name}}\n<div>{{@listOfUsers.firstObject.name}}</div>\n```\n\n### Using Ember helpers\n\nWhen content is passed in mustaches `{{}}`, Ember will first try to find a helper\nor component with that name. For example, the `if` helper:\n\n```app/components/person-profile.hbs\n{{if this.name \"I have a name\" \"I have no name\"}}\n<span data-has-name={{if this.name true}}></span>\n```\n\nThe returned value is placed where the `{{}}` is called. The above style is\ncalled \"inline\". A second style of helper usage is called \"block\". For example:\n\n```handlebars\n{{#if this.name}}\n I have a name\n{{else}}\n I have no name\n{{/if}}\n```\n\nThe block form of helpers allows you to control how the UI is created based\non the values of properties.\nA third form of helper is called \"nested\". For example here the concat\nhelper will add \" Doe\" to a displayed name if the person has no last name:\n\n```handlebars\n<span data-name={{concat this.firstName (\n if this.lastName (concat \" \" this.lastName) \"Doe\"\n)}}></span>\n```\n\nEmber's built-in helpers are described under the [Ember.Templates.helpers](/ember/release/classes/Ember.Templates.helpers)\nnamespace. Documentation on creating custom helpers can be found under\n[helper](/ember/release/functions/@ember%2Fcomponent%2Fhelper/helper) (or\nunder [Helper](/ember/release/classes/Helper) if a helper requires access to\ndependency injection).\n\n### Invoking a Component\n\nEmber components represent state to the UI of an application. Further\nreading on components can be found under [Component](/ember/release/classes/Component).",
2621
+ "description": "[Glimmer](https://github.com/tildeio/glimmer) is a templating engine used by Ember.js that is compatible with a subset of the [Handlebars](http://handlebarsjs.com/) syntax.\n\nEmber ships with two types of JavaScript classes for components:\n\n1. Glimmer components, imported from `@glimmer/component`, which are the\ndefault component's for Ember Octane (3.15) and more recent editions.\n2. Classic components, imported from `@ember/component`, which were the\ndefault for older editions of Ember (pre 3.15) but are still supported.\n\nBelow is the documentation for Classic components. If you are looking for the\nAPI documentation for Template-only or Glimmer components, it is [available\nhere](/ember/release/modules/@glimmer%2Fcomponent).\n\nNote: Prior to Ember 6.8, by default, components were authored in paired `.hbs` and `.js`\nfiles. This is still supported, but the default authoring format is now `.gjs` or \"template tag\".\nThe documentation for `@ember/component` still refers to the older authoring format. To read about\nthe new authoring format, see the\n[Glimmer Component API documentation](/ember/release/modules/@glimmer%2Fcomponent).\n \n### Showing a property\n\nTemplates manage the flow of an application's UI, and display state (through\nthe DOM) to a user. For example, given a component with the property \"name\",\nthat component's template can use the name in several ways:\n\n```app/components/person-profile.js\nimport Component from '@ember/component';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class extends Component {\n @tracked name = 'Jill'\n}\n```\n\n```app/components/person-profile.hbs\n{{this.name}}\n<div>{{this.name}}</div>\n<span data-name={{this.name}}></span>\n```\n\nAny time the \"name\" property on the component changes, the DOM will be\nupdated.\n\nProperties can be chained as well:\n\n```handlebars\n{{@aUserModel.name}}\n<div>{{@listOfUsers.firstObject.name}}</div>\n```\n\n### Using Ember helpers\n\nWhen content is passed in mustaches `{{}}`, Ember will first try to find a helper\nor component with that name. For example, the `if` helper:\n\n```app/components/person-profile.hbs\n{{if this.name \"I have a name\" \"I have no name\"}}\n<span data-has-name={{if this.name true}}></span>\n```\n\nThe returned value is placed where the `{{}}` is called. The above style is\ncalled \"inline\". A second style of helper usage is called \"block\". For example:\n\n```handlebars\n{{#if this.name}}\n I have a name\n{{else}}\n I have no name\n{{/if}}\n```\n\nThe block form of helpers allows you to control how the UI is created based\non the values of properties.\nA third form of helper is called \"nested\". For example here the concat\nhelper will add \" Doe\" to a displayed name if the person has no last name:\n\n```handlebars\n<span data-name={{concat this.firstName (\n if this.lastName (concat \" \" this.lastName) \"Doe\"\n)}}></span>\n```\n\nEmber's built-in helpers are described under the [Ember.Templates.helpers](/ember/release/classes/Ember.Templates.helpers)\nnamespace. Documentation on creating custom helpers can be found under\n[helper](/ember/release/functions/@ember%2Fcomponent%2Fhelper/helper) (or\nunder [Helper](/ember/release/classes/Helper) if a helper requires access to\ndependency injection).\n\n### Invoking a Component\n\nEmber components represent state to the UI of an application. Further\nreading on components can be found under [Component](/ember/release/classes/Component).",
2613
2622
  "itemtype": "main",
2614
2623
  "access": "public",
2615
2624
  "tagname": ""
@@ -2890,7 +2899,7 @@
2890
2899
  "namespaces": {},
2891
2900
  "tag": "module",
2892
2901
  "file": "packages/@ember/array/index.ts",
2893
- "line": 1474
2902
+ "line": 1414
2894
2903
  },
2895
2904
  "@ember/array/proxy": {
2896
2905
  "name": "@ember/array/proxy",
@@ -3355,7 +3364,7 @@
3355
3364
  "tag": "module",
3356
3365
  "file": "packages/@glimmer/component/dist/index.d.ts",
3357
3366
  "line": 3,
3358
- "description": "A component is a reusable UI element that consists of a `.hbs` template and an\noptional JavaScript class that defines its behavior. For example, someone\nmight make a `button` in the template and handle the click behavior in the\nJavaScript file that shares the same name as the template.\n\nComponents are broken down into two categories:\n\n- Components _without_ JavaScript, that are based only on a template. These\n are called Template-only or TO components.\n- Components _with_ JavaScript, which consist of a template and a backing\n class.\n\nEmber ships with two types of JavaScript classes for components:\n\n1. Glimmer components, imported from `@glimmer/component`, which are the\n default components for Ember Octane (3.15) and more recent editions.\n2. Classic components, imported from `@ember/component`, which were the\n default for older editions of Ember (pre 3.15).\n\nBelow is the documentation for Template-only and Glimmer components. If you\nare looking for the API documentation for Classic components, it is\n[available here](/ember/release/classes/Component). The source code for\nGlimmer components can be found in [`@glimmer/component`](https://github.com/glimmerjs/glimmer.js/tree/master/packages/%40glimmer/component).\n\n## Defining a Template-only Component\n\nThe simplest way to create a component is to create a template file in\n`app/templates/components`. For example, if you name a template\n`app/templates/components/person-profile.hbs`:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n<img src={{@person.avatar}}>\n<p class='signature'>{{@person.signature}}</p>\n```\n\nYou will be able to use `<PersonProfile />` to invoke this component elsewhere\nin your application:\n\n```app/templates/application.hbs\n<PersonProfile @person={{this.currentUser}} />\n```\n\nNote that component names are capitalized here in order to distinguish them\nfrom regular HTML elements, but they are dasherized in the file system.\n\nWhile the angle bracket invocation form is generally preferred, it is also\npossible to invoke the same component with the `{{person-profile}}` syntax:\n\n```app/templates/application.hbs\n{{person-profile person=this.currentUser}}\n```\n\nNote that with this syntax, you use dashes in the component name and\narguments are passed without the `@` sign.\n\nIn both cases, Ember will render the content of the component template we\ncreated above. The end result will be something like this:\n\n```html\n<h1>Tomster</h1>\n<img src=\"https://emberjs.com/tomster.jpg\">\n<p class='signature'>Out of office this week</p>\n```\n\n## File System Nesting\n\nComponents can be nested inside sub-folders for logical groupping. For\nexample, if we placed our template in\n`app/templates/components/person/short-profile.hbs`, we can invoke it as\n`<Person::ShortProfile />`:\n\n```app/templates/application.hbs\n<Person::ShortProfile @person={{this.currentUser}} />\n```\n\nOr equivalently, `{{person/short-profile}}`:\n\n```app/templates/application.hbs\n{{person/short-profile person=this.currentUser}}\n```\n\n## Using Blocks\n\nYou can use `yield` inside a template to include the **contents** of any block\nattached to the component. For instance, if we added a `{{yield}}` to our\ncomponent like so:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n{{yield}}\n```\n\nWe could then invoke it like this:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <p>Admin mode</p>\n</PersonProfile>\n```\n\nor with curly syntax like this:\n\n```handlebars\n{{#person-profile person=this.currentUser}}\n <p>Admin mode</p>\n{{/person-profile}}\n```\n\nAnd the content passed in between the brackets of the component would be\nrendered in the same place as the `{{yield}}` within it, replacing it.\n\nBlocks are executed in their original context, meaning they have access to the\nscope and any in-scope variables where they were defined.\n\n### Passing parameters to blocks\n\nYou can also pass positional parameters to `{{yield}}`, which are then made\navailable in the block:\n\n```app/templates/components/person-profile.hbs\n<h1>{{@person.name}}</h1>\n{{yield @person.signature}}\n```\n\nWe can then use this value in the block like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}} as |signature|>\n {{signature}}\n</PersonProfile>\n```\n\n### Passing multiple blocks\n\nYou can pass multiple blocks to a component by giving them names, and\nspecifying which block you are yielding to with `{{yield}}`. For instance, if\nwe wanted to add a way for users to customize the title of our\n`<PersonProfile>` component, we could add a named block inside of the header:\n\n```app/templates/components/person-profile.hbs\n<h1>{{yield to=\"title\"}}</h1>\n{{yield}}\n```\n\nThis component could then be invoked like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <:title>{{this.currentUser.name}}</:title>\n <:default>{{this.currentUser.signature}}</:default>\n</PersonProfile>\n```\n\nWhen passing named blocks, you must name every block, including the `default`\nblock, which is the block that is defined if you do not pass a `to` parameter\nto `{{yield}}`. Whenever you invoke a component without passing explicitly\nnamed blocks, the passed block is considered the `default` block.\n\n### Passing parameters to named blocks\n\nYou can also pass parameters to named blocks:\n\n```app/templates/components/person-profile.hbs\n<h1>{{yield @person.name to=\"title\"}}</h1>\n{{yield @person.signature}}\n```\n\nThese parameters can then be used like so:\n\n```handlebars\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n <:default as |signature|>{{signature}}</:default>\n</PersonProfile>\n```\n\n### Checking to see if a block exists\n\nYou can also check to see if a block exists using the `(has-block)` keyword,\nand conditionally use it, or provide a default template instead.\n\n```app/templates/components/person-profile.hbs\n<h1>\n {{#if (has-block \"title\")}}\n {{yield @person.name to=\"title\"}}\n {{else}}\n {{@person.name}}\n {{/if}}\n</h1>\n\n{{#if (has-block)}}\n {{yield @person.signature}}\n{{else}}\n {{@person.signature}}\n{{/if}}\n```\n\nWith this template, we can then optionally pass in one block, both blocks, or\nnone at all:\n\n```handlebars\n{{! passing both blocks }}\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n <:default as |signature|>{{signature}}</:default>\n</PersonProfile>\n\n{{! passing just the title block }}\n<PersonProfile @person={{this.currentUser}}>\n <:title as |name|>{{name}}</:title>\n</PersonProfile>\n\n{{! passing just the default block }}\n<PersonProfile @person={{this.currentUser}} as |signature|>\n {{signature}}\n</PersonProfile>\n\n{{! not passing any blocks }}\n<PersonProfile @person={{this.currentUser}}/>\n```\n\n### Checking to see if a block has parameters\n\nWe can also check if a block receives parameters using the `(has-block-params)`\nkeyword, and conditionally yield different values if so.\n\n```app/templates/components/person-profile.hbs\n{{#if (has-block-params)}}\n {{yield @person.signature}}\n{{else}}\n {{yield}}\n{{/if}}\n```\n\n## Customizing Components With JavaScript\n\nTo add JavaScript to a component, create a JavaScript file in the same\nlocation as the template file, with the same name, and export a subclass\nof `Component` as the default value. For example, to add Javascript to the\n`PersonProfile` component which we defined above, we would create\n`app/components/person-profile.js` and export our class as the default, like\nso:\n\n```app/components/person-profile.js\nimport Component from '@glimmer/component';\n\nexport default class PersonProfileComponent extends Component {\n get displayName() {\n let { title, firstName, lastName } = this.args.person;\n\n if (title) {\n return `${title} ${lastName}`;\n } else {\n return `${firstName} ${lastName}`;\n }\n })\n}\n```\n\nYou can add your own properties, methods, and lifecycle hooks to this\nsubclass to customize its behavior, and you can reference the instance of the\nclass in your template using `{{this}}`. For instance, we could access the\n`displayName` property of our `PersonProfile` component instance in the\ntemplate like this:\n\n```app/templates/components/person-profile.hbs\n<h1>{{this.displayName}}</h1>\n{{yield}}\n```\n\n## `constructor`\n\nparams: `owner` object and `args` object\n\nConstructs a new component and assigns itself the passed properties. The\nconstructor is run whenever a new instance of the component is created, and\ncan be used to setup the initial state of the component.\n\n```javascript\nimport Component from '@glimmer/component';\n\nexport default class SomeComponent extends Component {\n constructor(owner, args) {\n super(owner, args);\n\n if (this.args.displayMode === 'list') {\n this.items = [];\n }\n }\n}\n```\n\nService injections and arguments are available in the constructor.\n\n```javascript\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class SomeComponent extends Component {\n @service myAnimations;\n\n constructor(owner, args) {\n super(owner, args);\n\n if (this.args.fadeIn === true) {\n this.myAnimations.register(this, 'fade-in');\n }\n }\n}\n```\n\n## `willDestroy`\n\n`willDestroy` is called after the component has been removed from the DOM, but\nbefore the component is fully destroyed. This lifecycle hook can be used to\ncleanup the component and any related state.\n\n```javascript\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class SomeComponent extends Component {\n @service myAnimations;\n\n willDestroy() {\n super.willDestroy();\n\n this.myAnimations.unregister(this);\n }\n}\n```\n\n## `args`\n\nThe `args` property of Glimmer components is an object that contains the\n_arguments_ that are passed to the component. For instance, the\nfollowing component usage:\n\n```handlebars\n<SomeComponent @fadeIn={{true}} />\n```\n\nWould result in the following `args` object to be passed to the component:\n\n```javascript\n{ fadeIn: true }\n```\n\n`args` can be accessed at any point in the component lifecycle, including\n`constructor` and `willDestroy`. They are also automatically marked as tracked\nproperties, and they can be depended on as computed property dependencies:\n\n```javascript\nimport Component from '@glimmer/component';\nimport { computed } from '@ember/object';\n\nexport default class SomeComponent extends Component {\n\n @computed('args.someValue')\n get computedGetter() {\n // updates whenever args.someValue updates\n return this.args.someValue;\n }\n\n get standardGetter() {\n // updates whenever args.anotherValue updates (Ember 3.13+)\n return this.args.anotherValue;\n }\n}\n```\n\n## `isDestroying`\n\nA boolean flag to tell if the component is in the process of destroying. This is set to\ntrue before `willDestroy` is called.\n\n## `isDestroyed`\nA boolean to tell if the component has been fully destroyed. This is set to true\nafter `willDestroy` is called.",
3367
+ "description": "A component is a reusable UI element that consists of a template and an\noptional JavaScript class that defines its behavior. For example, someone\nmight make a `button` in the template and handle the click behavior in the\nJavaScript.\n\nComponents are broken down into two categories:\n\n- Components _without_ JavaScript, that are based only on a template. These\n are called Template-only or TO components.\n- Components _with_ JavaScript, which consist of a template and a backing\n class.\n\nEmber ships with two types of JavaScript classes for components:\n\n1. Glimmer components, imported from `@glimmer/component`, which are the\n default components for Ember Octane (3.15) and more recent editions.\n2. Classic components, imported from `@ember/component`, which were the\n default for older editions of Ember (pre 3.15).\n\nBelow is the documentation for Template-only and Glimmer components. If you\nare looking for the API documentation for Classic components, it is\n[available here](/ember/release/classes/Component). The source code for\nGlimmer components can be found in [`@glimmer/component`](https://github.com/emberjs/ember.js/tree/main/packages/%40glimmer/component).\n\nNote: Prior to Ember 6.8, by default, components were authored in paired `.hbs` and `.js`\nfiles. This is still supported, but the default authoring format is now `.gjs` or \"template tag\".\nTo read more about how components were previously authored, see the\n[6.7 version of this API documentation](https://api.emberjs.com/ember/6.7/modules/@glimmer%2Fcomponent).\n \n## Defining a Template-only Component\n\nThe simplest way to create a component is to create a `gjs` file in\n`app/components` with a `<template>` tag wrapper:\n\n```app/components/person-profile.gjs\n<template>\n <h1>{{@person.name}}</h1>\n <img src={{@person.avatar}}>\n <p class='signature'>{{@person.signature}}</p>\n</template>\n```\n\nYou will be able to use `<PersonProfile />` to invoke this component elsewhere\nin your application:\n\n```app/templates/application.gjs\nimport PersonProfile from '../components/person-profile';\n \n<template>\n <PersonProfile @person={{@model.currentUser}} />\n</template>\n```\n\nNote that component names are capitalized here in order to distinguish them\nfrom regular HTML elements.\n\nEmber will render the content of the component template we\ncreated above. The end result will be something like this:\n\n```html\n<h1>Tomster</h1>\n<img src=\"https://emberjs.com/tomster.jpg\">\n<p class='signature'>Out of office this week</p>\n```\n\n## File System Nesting\n\nIn Ember templates, “invokables” are things you can invoke in a template. These include components,\nhelpers, and modifiers. In the template tag format, these invokables need to be imported before\nthey can be used. This makes it easier to understand where values come from and what they do, as\nwell as unlocks build optimizations.\n\nWhen making use of the `PersonProfile` component as defined before in a different component file,\nit first needs to be imported. This is done using the import statement, just like you would import\nany other JavaScript module -- from your local project or from an external package.\n\nSince they are imported, Components can be placed anywhere in your project on the filesystem, but\nthey are conventionally placed within `app/components` for reusable components and within\n`app/templates` for Route components.\n \nRoute components must be named after the route they are associated with -- and placed in the\n`app/templates` directory. For example, a `Person` route would have a corresponding `Person`\ncomponent defined in `app/templates/person.gjs`. This component would then be rendered whenever\nthe user visits the `/person` route. For more information, see the\n[Routing](https://guides.emberjs.com/release/routing/) section of the guides.\n\n## Using Blocks\n\nYou can use `yield` inside a template to include the **contents** of any block\nattached to the component. For instance, if we added a `{{yield}}` to our\ncomponent like so:\n\n```app/components/person-profile.gjs\n<template>\n <h1>{{@person.name}}</h1>\n {{yield}}\n</template>\n```\n\nWe could then invoke it like this:\n\n```gjs\nimport PersonProfile from '../components/person-profile';\n \n<template>\n <PersonProfile @person={{@model.currentUser}}>\n <p>Admin mode</p>\n </PersonProfile>\n</template>\n```\n \nAnd the content passed in between the brackets of the component would be\nrendered in the same place as the `{{yield}}` within it, replacing it.\n\nBlocks are executed in their original context, meaning they have access to the\nscope and any in-scope variables where they were defined.\n\n### Passing parameters to blocks\n\nYou can also pass positional parameters to `{{yield}}`, which are then made\navailable in the block:\n\n```app/components/person-profile.gjs\n<template>\n <h1>{{@person.name}}</h1>\n {{yield @person.signature}}\n</template>\n```\n\nWe can then use this value in the block like so:\n\n```gjs\nimport PersonProfile from '../components/person-profile';\n \n<template>\n <PersonProfile @person={{@model.currentUser}} as |signature|>\n {{signature}}\n </PersonProfile>\n</template>\n```\n\n### Passing multiple blocks\n\nYou can pass multiple blocks to a component by giving them names, and\nspecifying which block you are yielding to with `{{yield}}`. For instance, if\nwe wanted to add a way for users to customize the title of our\n`<PersonProfile>` component, we could add a named block inside of the header:\n\n```app/components/person-profile.gjs\n<template>\n <h1>{{yield to=\"title\"}}</h1>\n {{yield}}\n</template>\n```\n\nThis component could then be invoked like so:\n\n```gjs\nimport PersonProfile from '../components/person-profile';\n\n<template>\n <PersonProfile @person={{@model.currentUser}}>\n <:title>{{@model.currentUser.name}}</:title>\n <:default>{{@model.currentUser.signature}}</:default>\n </PersonProfile>\n</template>\n```\n\nWhen passing named blocks, you must name every block, including the `default`\nblock, which is the block that is defined if you do not pass a `to` parameter\nto `{{yield}}`. Whenever you invoke a component without passing explicitly\nnamed blocks, the passed block is considered the `default` block.\n\n### Passing parameters to named blocks\n\nYou can also pass parameters to named blocks:\n\n```app/components/person-profile.gjs\n<template>\n <h1>{{yield @person.name to=\"title\"}}</h1>\n {{yield @person.signature}}\n</template>\n```\n\nThese parameters can then be used like so:\n\n```gjs\nimport PersonProfile from '../components/person-profile';\n\n<template>\n <PersonProfile @person={{@model.currentUser}}>\n <:title as |name|>{{name}}</:title>\n <:default as |signature|>{{signature}}</:default>\n </PersonProfile>\n</template>\n```\n\n### Checking to see if a block exists\n\nYou can also check to see if a block exists using the `(has-block)` keyword,\nand conditionally use it, or provide a default template instead.\n\n```app/components/person-profile.gjs\n<template>\n <h1>\n {{#if (has-block \"title\")}}\n {{yield @person.name to=\"title\"}}\n {{else}}\n {{@person.name}}\n {{/if}}\n </h1>\n\n {{#if (has-block)}}\n {{yield @person.signature}}\n {{else}}\n {{@person.signature}}\n {{/if}}\n</template>\n```\n\nWith this template, we can then optionally pass in one block, both blocks, or\nnone at all:\n\n```gjs\nimport PersonProfile from '../components/person-profile';\n\n<template>\n {{! passing both blocks }}\n <PersonProfile @person={{@model.currentUser}}>\n <:title as |name|>{{name}}</:title>\n <:default as |signature|>{{signature}}</:default>\n </PersonProfile>\n\n {{! passing just the title block }}\n <PersonProfile @person={{@model.currentUser}}>\n <:title as |name|>{{name}}</:title>\n </PersonProfile>\n\n {{! passing just the default block }}\n <PersonProfile @person={{@model.currentUser}} as |signature|>\n {{signature}}\n </PersonProfile>\n\n {{! not passing any blocks }}\n <PersonProfile @person={{@model.currentUser}}/>\n</template>\n```\n\n### Checking to see if a block has parameters\n\nWe can also check if a block receives parameters using the `(has-block-params)`\nkeyword, and conditionally yield different values if so.\n\n```app/components/person-profile.gjs\n<template>\n {{#if (has-block-params)}}\n {{yield @person.signature}}\n {{else}}\n {{yield}}\n {{/if}}\n</template>\n```\n\n## Customizing Components With JavaScript\n\nTo add JavaScript to a component, add a class extending from `@glimmer/component` to the `gjs`\nfile, wrapping your `<template>` tag.\nFor example, to add JavaScript to the `PersonProfile` component which we defined above:\n\n```app/components/person-profile.gjs\nimport Component from '@glimmer/component';\n\nexport default class PersonProfile extends Component {\n get displayName() {\n let { title, firstName, lastName } = this.args.person;\n\n if (title) {\n return `${title} ${lastName}`;\n } else {\n return `${firstName} ${lastName}`;\n }\n })\n \n <template>\n <h1>{{this.displayName}}</h1>\n {{yield}}\n </template>\n}\n```\n\nYou can add your own properties, methods, and lifecycle hooks to this\nsubclass to customize its behavior, and you can reference the instance of the\nclass in your template using `{{this}}`. In the example above, we access the\n`displayName` property of our `PersonProfile` component instance in the\ntemplate.\n\n## `constructor`\n\nparams: `owner` object and `args` object\n\nConstructs a new component and assigns itself the passed properties. The\nconstructor is run whenever a new instance of the component is created, and\ncan be used to setup the initial state of the component.\n\n```gjs\nimport Component from '@glimmer/component';\n\nexport default class SomeComponent extends Component {\n constructor(owner, args) {\n super(owner, args);\n\n if (this.args.displayMode === 'list') {\n this.items = [];\n }\n }\n}\n```\n\nService injections and arguments are available in the constructor.\n\n```gjs\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class SomeComponent extends Component {\n @service myAnimations;\n\n constructor(owner, args) {\n super(owner, args);\n\n if (this.args.fadeIn === true) {\n this.myAnimations.register(this, 'fade-in');\n }\n }\n}\n```\n\n## `willDestroy`\n\n`willDestroy` is called after the component has been removed from the DOM, but\nbefore the component is fully destroyed. This lifecycle hook can be used to\ncleanup the component and any related state.\n \nYou may prefer the [@ember/destroyable](/ember/release/modules//@ember%2Fdestroyable) APIs for\nthis purpose.\n\n```gjs\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class SomeComponent extends Component {\n @service myAnimations;\n\n willDestroy() {\n super.willDestroy();\n\n this.myAnimations.unregister(this);\n }\n}\n```\n\n## `args`\n\nThe `args` property of Glimmer components is an object that contains the\n_arguments_ that are passed to the component. For instance, the\nfollowing component usage:\n\n```gjs\n<template>\n <SomeComponent @fadeIn={{true}} />\n</template>\n```\n\nWould result in the following `args` object to be passed to the component:\n\n```javascript\n{ fadeIn: true }\n```\n\n`args` can be accessed at any point in the component lifecycle, including\n`constructor` and `willDestroy`. They are also automatically marked as tracked\nproperties, and they can be depended on to update as any other tracked property:\n\n```gjs\nimport Component from '@glimmer/component';\nimport { computed } from '@ember/object';\n\nexport default class SomeComponent extends Component {\n get standardGetter() {\n // updates whenever args.anotherValue updates\n return this.args.anotherValue;\n }\n}\n```\n \nA components arguments are accessible in the template using the `@` prefix - for example,\n`this.args.fadeIn` from the example above can be accessed in the template as `@fadeIn`.\n\n## `isDestroying`\n\nA boolean flag to tell if the component is in the process of destroying. This is set to\ntrue before `willDestroy` is called.\n\n## `isDestroyed`\nA boolean to tell if the component has been fully destroyed. This is set to true\nafter `willDestroy` is called.",
3359
3368
  "access": "public",
3360
3369
  "tagname": ""
3361
3370
  },
@@ -3493,7 +3502,7 @@
3493
3502
  "module": "ember",
3494
3503
  "namespace": "",
3495
3504
  "file": "packages/@ember/-internals/glimmer/index.ts",
3496
- "line": 87,
3505
+ "line": 104,
3497
3506
  "access": "public",
3498
3507
  "tagname": ""
3499
3508
  },
@@ -3614,7 +3623,7 @@
3614
3623
  "namespace": "",
3615
3624
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
3616
3625
  "line": 209,
3617
- "description": "A component is a reusable UI element that consists of a `.hbs` template and an\noptional JavaScript class that defines its behavior. For example, someone\nmight make a `button` in the template and handle the click behavior in the\nJavaScript file that shares the same name as the template.\n\nComponents are broken down into two categories:\n\n- Components _without_ JavaScript, that are based only on a template. These\n are called Template-only or TO components.\n- Components _with_ JavaScript, which consist of a template and a backing\n class.\n\nEmber ships with two types of JavaScript classes for components:\n\n1. Glimmer components, imported from `@glimmer/component`, which are the\n default component's for Ember Octane (3.15) and more recent editions.\n2. Classic components, imported from `@ember/component`, which were the\n default for older editions of Ember (pre 3.15).\n\nBelow is the documentation for Classic components. If you are looking for the\nAPI documentation for Template-only or Glimmer components, it is [available\nhere](/ember/release/modules/@glimmer%2Fcomponent).\n\n## Defining a Classic Component\n\nIf you want to customize the component in order to handle events, transform\narguments or maintain internal state, you implement a subclass of `Component`.\n\nOne example is to add computed properties to your component:\n\n```app/components/person-profile.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n @computed('person.title', 'person.firstName', 'person.lastName')\n get displayName() {\n let { title, firstName, lastName } = this.person;\n\n if (title) {\n return `${title} ${lastName}`;\n } else {\n return `${firstName} ${lastName}`;\n }\n }\n}\n```\n\nAnd then use it in the component's template:\n\n```app/templates/components/person-profile.hbs\n<h1>{{this.displayName}}</h1>\n{{yield}}\n```\n\n## Customizing a Classic Component's HTML Element in JavaScript\n\n### HTML Tag\n\nThe default HTML tag name used for a component's HTML representation is `div`.\nThis can be customized by setting the `tagName` property.\n\nConsider the following component class:\n\n```app/components/emphasized-paragraph.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n tagName = 'em';\n}\n```\n\nWhen invoked, this component would produce output that looks something like\nthis:\n\n```html\n<em id=\"ember1\" class=\"ember-view\"></em>\n```\n\n### HTML `class` Attribute\n\nThe HTML `class` attribute of a component's tag can be set by providing a\n`classNames` property that is set to an array of strings:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n classNames = ['my-class', 'my-other-class'];\n}\n```\n\nInvoking this component will produce output that looks like this:\n\n```html\n<div id=\"ember1\" class=\"ember-view my-class my-other-class\"></div>\n```\n\n`class` attribute values can also be set by providing a `classNameBindings`\nproperty set to an array of properties names for the component. The return\nvalue of these properties will be added as part of the value for the\ncomponents's `class` attribute. These properties can be computed properties:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default class extends Component {\n classNames = ['my-class', 'my-other-class'];\n classNameBindings = ['propertyA', 'propertyB'];\n\n propertyA = 'from-a';\n\n get propertyB {\n if (someLogic) { return 'from-b'; }\n }\n}\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view my-class my-other-class from-a from-b\"></div>\n```\n\nNote that `classNames` and `classNameBindings` is in addition to the `class`\nattribute passed with the angle bracket invocation syntax. Therefore, if this\ncomponent was invoked like so:\n\n```handlebars\n<MyWidget class=\"from-invocation\" />\n```\n\nThe resulting HTML will look similar to this:\n\n```html\n<div id=\"ember1\" class=\"from-invocation ember-view my-class my-other-class from-a from-b\"></div>\n```\n\nIf the value of a class name binding returns a boolean the property name\nitself will be used as the class name if the property is true. The class name\nwill not be added if the value is `false` or `undefined`.\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n classNameBindings = ['hovered'];\n\n hovered = true;\n}\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view hovered\"></div>\n```\n\n### Custom Class Names for Boolean Values\n\nWhen using boolean class name bindings you can supply a string value other\nthan the property name for use as the `class` HTML attribute by appending the\npreferred value after a \":\" character when defining the binding:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n classNameBindings = ['awesome:so-very-cool'];\n\n awesome = true;\n}\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view so-very-cool\"></div>\n```\n\nBoolean value class name bindings whose property names are in a\ncamelCase-style format will be converted to a dasherized format:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n classNameBindings = ['isUrgent'];\n\n isUrgent = true;\n}\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view is-urgent\"></div>\n```\n\nClass name bindings can also refer to object values that are found by\ntraversing a path relative to the component itself:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\nimport EmberObject from '@ember/object';\n\nexport default class extends Component {\n classNameBindings = ['messages.empty'];\n\n messages = EmberObject.create({\n empty: true\n });\n}\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view empty\"></div>\n```\n\nIf you want to add a class name for a property which evaluates to true and and\na different class name if it evaluates to false, you can pass a binding like\nthis:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n classNameBindings = ['isEnabled:enabled:disabled'];\n\n isEnabled = true;\n}\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view enabled\"></div>\n```\n\nWhen isEnabled is `false`, the resulting HTML representation looks like this:\n\n```html\n<div id=\"ember1\" class=\"ember-view disabled\"></div>\n```\n\nThis syntax offers the convenience to add a class if a property is `false`:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\n// Applies no class when isEnabled is true and class 'disabled' when isEnabled is false\nexport default class extends Component {\n classNameBindings = ['isEnabled::disabled'];\n\n isEnabled = true;\n}\n```\n\nInvoking this component when the `isEnabled` property is true will produce\nHTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view\"></div>\n```\n\nInvoking it when the `isEnabled` property on the component is `false` will\nproduce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view disabled\"></div>\n```\n\nUpdates to the value of a class name binding will result in automatic update\nof the HTML `class` attribute in the component's rendered HTML\nrepresentation. If the value becomes `false` or `undefined` the class name\nwill be removed.\n\nBoth `classNames` and `classNameBindings` are concatenated properties. See\n[EmberObject](/ember/release/classes/EmberObject) documentation for more\ninformation about concatenated properties.\n\n### Other HTML Attributes\n\nThe HTML attribute section of a component's tag can be set by providing an\n`attributeBindings` property set to an array of property names on the\ncomponent. The return value of these properties will be used as the value of\nthe component's HTML associated attribute:\n\n```app/components/my-anchor.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n tagName = 'a';\n attributeBindings = ['href'];\n\n href = 'http://google.com';\n};\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<a id=\"ember1\" class=\"ember-view\" href=\"http://google.com\"></a>\n```\n\nOne property can be mapped on to another by placing a \":\" between the source\nproperty and the destination property:\n\n```app/components/my-anchor.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n tagName = 'a';\n attributeBindings = ['url:href'];\n\n url = 'http://google.com';\n};\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<a id=\"ember1\" class=\"ember-view\" href=\"http://google.com\"></a>\n```\n\nHTML attributes passed with angle bracket invocations will take precedence\nover those specified in `attributeBindings`. Therefore, if this component was\ninvoked like so:\n\n```handlebars\n<MyAnchor href=\"http://bing.com\" @url=\"http://google.com\" />\n```\n\nThe resulting HTML will looks like this:\n\n```html\n<a id=\"ember1\" class=\"ember-view\" href=\"http://bing.com\"></a>\n```\n\nNote that the `href` attribute is ultimately set to `http://bing.com`, despite\nit having attribute binidng to the `url` property, which was set to\n`http://google.com`.\n\nNamespaced attributes (e.g. `xlink:href`) are supported, but have to be\nmapped, since `:` is not a valid character for properties in Javascript:\n\n```app/components/my-use.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n tagName = 'use';\n attributeBindings = ['xlinkHref:xlink:href'];\n\n xlinkHref = '#triangle';\n};\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<use xlink:href=\"#triangle\"></use>\n```\n\nIf the value of a property monitored by `attributeBindings` is a boolean, the\nattribute will be present or absent depending on the value:\n\n```app/components/my-text-input.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n tagName = 'input';\n attributeBindings = ['disabled'];\n\n disabled = false;\n};\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<input id=\"ember1\" class=\"ember-view\" />\n```\n\n`attributeBindings` can refer to computed properties:\n\n```app/components/my-text-input.js\nimport Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default class extends Component {\n tagName = 'input';\n attributeBindings = ['disabled'];\n\n get disabled() {\n if (someLogic) {\n return true;\n } else {\n return false;\n }\n }\n};\n```\n\nTo prevent setting an attribute altogether, use `null` or `undefined` as the\nvalue of the property used in `attributeBindings`:\n\n```app/components/my-text-input.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n tagName = 'form';\n attributeBindings = ['novalidate'];\n novalidate = null;\n};\n```\n\nUpdates to the property of an attribute binding will result in automatic\nupdate of the HTML attribute in the component's HTML output.\n\n`attributeBindings` is a concatenated property. See\n[EmberObject](/ember/release/classes/EmberObject) documentation for more\ninformation about concatenated properties.\n\n## Layouts\n\nThe `layout` property can be used to dynamically specify a template associated\nwith a component class, instead of relying on Ember to link together a\ncomponent class and a template based on file names.\n\nIn general, applications should not use this feature, but it's commonly used\nin addons for historical reasons.\n\nThe `layout` property should be set to the default export of a template\nmodule, which is the name of a template file without the `.hbs` extension.\n\n```app/templates/components/person-profile.hbs\n<h1>Person's Title</h1>\n<div class='details'>{{yield}}</div>\n```\n\n```app/components/person-profile.js\n import Component from '@ember/component';\n import layout from '../templates/components/person-profile';\n\n export default class extends Component {\n layout = layout;\n }\n```\n\nIf you invoke the component:\n\n```handlebars\n<PersonProfile>\n <h2>Chief Basket Weaver</h2>\n <h3>Fisherman Industries</h3>\n</PersonProfile>\n```\n\nor\n\n```handlebars\n{{#person-profile}}\n <h2>Chief Basket Weaver</h2>\n <h3>Fisherman Industries</h3>\n{{/person-profile}}\n```\n\nIt will result in the following HTML output:\n\n```html\n<h1>Person's Title</h1>\n <div class=\"details\">\n <h2>Chief Basket Weaver</h2>\n <h3>Fisherman Industries</h3>\n</div>\n```\n\n## Handling Browser Events\n\nThere are two ways to handle user-initiated events:\n\n### Using the `on` modifier to capture browser events\n\nIn a component's template, you can attach an event handler to any element with the `on` modifier:\n\n```handlebars\n<button {{on 'click' this.doSomething}} />\n```\n\nThis will call the function on your component:\n\n```js\nimport Component from '@ember/component';\n\nexport default class ExampleComponent extends Component {\n doSomething = (event) => {\n // `event` is the native click Event\n console.log('clicked on the button');\n };\n}\n```\n\nSee the [Guide on Component event\nhandlers](https://guides.emberjs.com/release/components/component-state-and-actions/#toc_html-modifiers-and-actions)\nand the [API docs for `on`](../Ember.Templates.helpers/methods/on?anchor=on)\nfor more details.\n\n### Event Handler Methods\n\nComponents can also respond to user-initiated events by implementing a method\nthat matches the event name. This approach is appropriate when the same event\nshould be handled by all instances of the same component.\n\nAn event object will be passed as the argument to the event handler method.\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n click(event) {\n // `event.target` is either the component's element or one of its children\n let tag = event.target.tagName.toLowerCase();\n console.log('clicked on a `<${tag}>` HTML element!');\n }\n}\n```\n\nIn this example, whenever the user clicked anywhere inside the component, it\nwill log a message to the console.\n\nIt is possible to handle event types other than `click` by implementing the\nfollowing event handler methods. In addition, custom events can be registered\nby using `Application.customEvents`.\n\nTouch events:\n\n* `touchStart`\n* `touchMove`\n* `touchEnd`\n* `touchCancel`\n\nKeyboard events:\n\n* `keyDown`\n* `keyUp`\n* `keyPress`\n\nMouse events:\n\n* `mouseDown`\n* `mouseUp`\n* `contextMenu`\n* `click`\n* `doubleClick`\n* `focusIn`\n* `focusOut`\n\nForm events:\n\n* `submit`\n* `change`\n* `focusIn`\n* `focusOut`\n* `input`\n\nDrag and drop events:\n\n* `dragStart`\n* `drag`\n* `dragEnter`\n* `dragLeave`\n* `dragOver`\n* `dragEnd`\n* `drop`",
3626
+ "description": "A component is a reusable UI element that consists of a `.hbs` template and an\noptional JavaScript class that defines its behavior. For example, someone\nmight make a `button` in the template and handle the click behavior in the\nJavaScript file that shares the same name as the template.\n\nComponents are broken down into two categories:\n\n- Components _without_ JavaScript, that are based only on a template. These\n are called Template-only or TO components.\n- Components _with_ JavaScript, which consist of a template and a backing\n class.\n\nEmber ships with two types of JavaScript classes for components:\n\n1. Glimmer components, imported from `@glimmer/component`, which are the\n default component's for Ember Octane (3.15) and more recent editions.\n2. Classic components, imported from `@ember/component`, which were the\n default for older editions of Ember (pre 3.15).\n\nBelow is the documentation for Classic components. If you are looking for the\nAPI documentation for Template-only or Glimmer components, it is [available\nhere](/ember/release/modules/@glimmer%2Fcomponent).\n\nNote: Prior to Ember 6.8, by default, components were authored in paired `.hbs` and `.js`\nfiles. This is still supported, but the default authoring format is now `.gjs` or \"template tag\".\nThe documentation for `@ember/component` still refers to the older authoring format. To read about\nthe new authoring format, see the \n[Glimmer Component API documentation](/ember/release/modules/@glimmer%2Fcomponent).\n \n## Defining a Classic Component\n\nIf you want to customize the component in order to handle events, transform\narguments or maintain internal state, you implement a subclass of `Component`.\n\nOne example is to add computed properties to your component:\n\n```app/components/person-profile.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n @computed('person.title', 'person.firstName', 'person.lastName')\n get displayName() {\n let { title, firstName, lastName } = this.person;\n\n if (title) {\n return `${title} ${lastName}`;\n } else {\n return `${firstName} ${lastName}`;\n }\n }\n}\n```\n\nAnd then use it in the component's template:\n\n```app/components/person-profile.hbs\n<h1>{{this.displayName}}</h1>\n{{yield}}\n```\n\n## Customizing a Classic Component's HTML Element in JavaScript\n\n### HTML Tag\n\nThe default HTML tag name used for a component's HTML representation is `div`.\nThis can be customized by setting the `tagName` property.\n\nConsider the following component class:\n\n```app/components/emphasized-paragraph.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n tagName = 'em';\n}\n```\n\nWhen invoked, this component would produce output that looks something like\nthis:\n\n```html\n<em id=\"ember1\" class=\"ember-view\"></em>\n```\n\n### HTML `class` Attribute\n\nThe HTML `class` attribute of a component's tag can be set by providing a\n`classNames` property that is set to an array of strings:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n classNames = ['my-class', 'my-other-class'];\n}\n```\n\nInvoking this component will produce output that looks like this:\n\n```html\n<div id=\"ember1\" class=\"ember-view my-class my-other-class\"></div>\n```\n\n`class` attribute values can also be set by providing a `classNameBindings`\nproperty set to an array of properties names for the component. The return\nvalue of these properties will be added as part of the value for the\ncomponents's `class` attribute. These properties can be computed properties:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default class extends Component {\n classNames = ['my-class', 'my-other-class'];\n classNameBindings = ['propertyA', 'propertyB'];\n\n propertyA = 'from-a';\n\n get propertyB {\n if (someLogic) { return 'from-b'; }\n }\n}\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view my-class my-other-class from-a from-b\"></div>\n```\n\nNote that `classNames` and `classNameBindings` is in addition to the `class`\nattribute passed with the angle bracket invocation syntax. Therefore, if this\ncomponent was invoked like so:\n\n```handlebars\n<MyWidget class=\"from-invocation\" />\n```\n\nThe resulting HTML will look similar to this:\n\n```html\n<div id=\"ember1\" class=\"from-invocation ember-view my-class my-other-class from-a from-b\"></div>\n```\n\nIf the value of a class name binding returns a boolean the property name\nitself will be used as the class name if the property is true. The class name\nwill not be added if the value is `false` or `undefined`.\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n classNameBindings = ['hovered'];\n\n hovered = true;\n}\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view hovered\"></div>\n```\n\n### Custom Class Names for Boolean Values\n\nWhen using boolean class name bindings you can supply a string value other\nthan the property name for use as the `class` HTML attribute by appending the\npreferred value after a \":\" character when defining the binding:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n classNameBindings = ['awesome:so-very-cool'];\n\n awesome = true;\n}\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view so-very-cool\"></div>\n```\n\nBoolean value class name bindings whose property names are in a\ncamelCase-style format will be converted to a dasherized format:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n classNameBindings = ['isUrgent'];\n\n isUrgent = true;\n}\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view is-urgent\"></div>\n```\n\nClass name bindings can also refer to object values that are found by\ntraversing a path relative to the component itself:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\nimport EmberObject from '@ember/object';\n\nexport default class extends Component {\n classNameBindings = ['messages.empty'];\n\n messages = EmberObject.create({\n empty: true\n });\n}\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view empty\"></div>\n```\n\nIf you want to add a class name for a property which evaluates to true and and\na different class name if it evaluates to false, you can pass a binding like\nthis:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n classNameBindings = ['isEnabled:enabled:disabled'];\n\n isEnabled = true;\n}\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view enabled\"></div>\n```\n\nWhen isEnabled is `false`, the resulting HTML representation looks like this:\n\n```html\n<div id=\"ember1\" class=\"ember-view disabled\"></div>\n```\n\nThis syntax offers the convenience to add a class if a property is `false`:\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\n// Applies no class when isEnabled is true and class 'disabled' when isEnabled is false\nexport default class extends Component {\n classNameBindings = ['isEnabled::disabled'];\n\n isEnabled = true;\n}\n```\n\nInvoking this component when the `isEnabled` property is true will produce\nHTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view\"></div>\n```\n\nInvoking it when the `isEnabled` property on the component is `false` will\nproduce HTML that looks like:\n\n```html\n<div id=\"ember1\" class=\"ember-view disabled\"></div>\n```\n\nUpdates to the value of a class name binding will result in automatic update\nof the HTML `class` attribute in the component's rendered HTML\nrepresentation. If the value becomes `false` or `undefined` the class name\nwill be removed.\n\nBoth `classNames` and `classNameBindings` are concatenated properties. See\n[EmberObject](/ember/release/classes/EmberObject) documentation for more\ninformation about concatenated properties.\n\n### Other HTML Attributes\n\nThe HTML attribute section of a component's tag can be set by providing an\n`attributeBindings` property set to an array of property names on the\ncomponent. The return value of these properties will be used as the value of\nthe component's HTML associated attribute:\n\n```app/components/my-anchor.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n tagName = 'a';\n attributeBindings = ['href'];\n\n href = 'http://google.com';\n};\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<a id=\"ember1\" class=\"ember-view\" href=\"http://google.com\"></a>\n```\n\nOne property can be mapped on to another by placing a \":\" between the source\nproperty and the destination property:\n\n```app/components/my-anchor.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n tagName = 'a';\n attributeBindings = ['url:href'];\n\n url = 'http://google.com';\n};\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<a id=\"ember1\" class=\"ember-view\" href=\"http://google.com\"></a>\n```\n\nHTML attributes passed with angle bracket invocations will take precedence\nover those specified in `attributeBindings`. Therefore, if this component was\ninvoked like so:\n\n```handlebars\n<MyAnchor href=\"http://bing.com\" @url=\"http://google.com\" />\n```\n\nThe resulting HTML will looks like this:\n\n```html\n<a id=\"ember1\" class=\"ember-view\" href=\"http://bing.com\"></a>\n```\n\nNote that the `href` attribute is ultimately set to `http://bing.com`, despite\nit having attribute binidng to the `url` property, which was set to\n`http://google.com`.\n\nNamespaced attributes (e.g. `xlink:href`) are supported, but have to be\nmapped, since `:` is not a valid character for properties in Javascript:\n\n```app/components/my-use.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n tagName = 'use';\n attributeBindings = ['xlinkHref:xlink:href'];\n\n xlinkHref = '#triangle';\n};\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<use xlink:href=\"#triangle\"></use>\n```\n\nIf the value of a property monitored by `attributeBindings` is a boolean, the\nattribute will be present or absent depending on the value:\n\n```app/components/my-text-input.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n tagName = 'input';\n attributeBindings = ['disabled'];\n\n disabled = false;\n};\n```\n\nInvoking this component will produce HTML that looks like:\n\n```html\n<input id=\"ember1\" class=\"ember-view\" />\n```\n\n`attributeBindings` can refer to computed properties:\n\n```app/components/my-text-input.js\nimport Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default class extends Component {\n tagName = 'input';\n attributeBindings = ['disabled'];\n\n get disabled() {\n if (someLogic) {\n return true;\n } else {\n return false;\n }\n }\n};\n```\n\nTo prevent setting an attribute altogether, use `null` or `undefined` as the\nvalue of the property used in `attributeBindings`:\n\n```app/components/my-text-input.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n tagName = 'form';\n attributeBindings = ['novalidate'];\n novalidate = null;\n};\n```\n\nUpdates to the property of an attribute binding will result in automatic\nupdate of the HTML attribute in the component's HTML output.\n\n`attributeBindings` is a concatenated property. See\n[EmberObject](/ember/release/classes/EmberObject) documentation for more\ninformation about concatenated properties.\n\n## Layouts\n\nThe `layout` property can be used to dynamically specify a template associated\nwith a component class, instead of relying on Ember to link together a\ncomponent class and a template based on file names.\n\nIn general, applications should not use this feature, but it's commonly used\nin addons for historical reasons.\n\nThe `layout` property should be set to the default export of a template\nmodule, which is the name of a template file without the `.hbs` extension.\n\n```app/components/person-profile.hbs\n<h1>Person's Title</h1>\n<div class='details'>{{yield}}</div>\n```\n\n```app/components/person-profile.js\n import Component from '@ember/component';\n import layout from '../templates/components/person-profile';\n\n export default class extends Component {\n layout = layout;\n }\n```\n\nIf you invoke the component:\n\n```handlebars\n<PersonProfile>\n <h2>Chief Basket Weaver</h2>\n <h3>Fisherman Industries</h3>\n</PersonProfile>\n```\n\nor\n\n```handlebars\n{{#person-profile}}\n <h2>Chief Basket Weaver</h2>\n <h3>Fisherman Industries</h3>\n{{/person-profile}}\n```\n\nIt will result in the following HTML output:\n\n```html\n<h1>Person's Title</h1>\n <div class=\"details\">\n <h2>Chief Basket Weaver</h2>\n <h3>Fisherman Industries</h3>\n</div>\n```\n\n## Handling Browser Events\n\nThere are two ways to handle user-initiated events:\n\n### Using the `on` modifier to capture browser events\n\nIn a component's template, you can attach an event handler to any element with the `on` modifier:\n\n```handlebars\n<button {{on 'click' this.doSomething}} />\n```\n\nThis will call the function on your component:\n\n```js\nimport Component from '@ember/component';\n\nexport default class ExampleComponent extends Component {\n doSomething = (event) => {\n // `event` is the native click Event\n console.log('clicked on the button');\n };\n}\n```\n\nSee the [Guide on Component event\nhandlers](https://guides.emberjs.com/release/components/component-state-and-actions/#toc_html-modifiers-and-actions)\nand the [API docs for `on`](../Ember.Templates.helpers/methods/on?anchor=on)\nfor more details.\n\n### Event Handler Methods\n\nComponents can also respond to user-initiated events by implementing a method\nthat matches the event name. This approach is appropriate when the same event\nshould be handled by all instances of the same component.\n\nAn event object will be passed as the argument to the event handler method.\n\n```app/components/my-widget.js\nimport Component from '@ember/component';\n\nexport default class extends Component {\n click(event) {\n // `event.target` is either the component's element or one of its children\n let tag = event.target.tagName.toLowerCase();\n console.log('clicked on a `<${tag}>` HTML element!');\n }\n}\n```\n\nIn this example, whenever the user clicked anywhere inside the component, it\nwill log a message to the console.\n\nIt is possible to handle event types other than `click` by implementing the\nfollowing event handler methods. In addition, custom events can be registered\nby using `Application.customEvents`.\n\nTouch events:\n\n* `touchStart`\n* `touchMove`\n* `touchEnd`\n* `touchCancel`\n\nKeyboard events:\n\n* `keyDown`\n* `keyUp`\n* `keyPress`\n\nMouse events:\n\n* `mouseDown`\n* `mouseUp`\n* `contextMenu`\n* `click`\n* `doubleClick`\n* `focusIn`\n* `focusOut`\n\nForm events:\n\n* `submit`\n* `change`\n* `focusIn`\n* `focusOut`\n* `input`\n\nDrag and drop events:\n\n* `dragStart`\n* `drag`\n* `dragEnter`\n* `dragLeave`\n* `dragOver`\n* `dragEnd`\n* `drop`",
3618
3627
  "extends": "Ember.CoreView",
3619
3628
  "uses": [
3620
3629
  "Ember.TargetActionSupport",
@@ -3646,7 +3655,7 @@
3646
3655
  "namespace": "",
3647
3656
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
3648
3657
  "line": 57,
3649
- "description": "Ember Helpers are functions that can compute values, and are used in templates.\nFor example, this code calls a helper named `format-currency`:\n\n```app/templates/application.hbs\n<Cost @cents={{230}} />\n```\n\n```app/components/cost.hbs\n<div>{{format-currency @cents currency=\"$\"}}</div>\n```\n\nAdditionally a helper can be called as a nested helper.\nIn this example, we show the formatted currency value if the `showMoney`\nnamed argument is truthy.\n\n```handlebars\n{{if @showMoney (format-currency @cents currency=\"$\")}}\n```\n\nHelpers defined using a class must provide a `compute` function. For example:\n\n```app/helpers/format-currency.js\nimport Helper from '@ember/component/helper';\n\nexport default class extends Helper {\n compute([cents], { currency }) {\n return `${currency}${cents * 0.01}`;\n }\n}\n```\n\nEach time the input to a helper changes, the `compute` function will be\ncalled again.\n\nAs instances, these helpers also have access to the container and will accept\ninjected dependencies.\n\nAdditionally, class helpers can call `recompute` to force a new computation.",
3658
+ "description": "Ember Helpers are functions that can compute values, and are used in templates.\nFor example, this code calls a helper named `format-currency`:\n\n```app/templates/application.gjs\nimport Cost from '../components/cost';\n \n<template>\n <Cost @cents={{230}} />\n</template>\n```\n\n```app/components/cost.gjs\nimport formatCurrency from '../helpers/format-currency';\n \n<template>\n <div>{{formatCurrency @cents currency=\"$\"}}</div>\n</template>\n```\n\nAdditionally a helper can be called as a nested helper.\nIn this example, we show the formatted currency value if the `showMoney`\nnamed argument is truthy.\n\n```gjs\nimport formatCurrency from '../helpers/format-currency';\n\n<template>\n {{if @showMoney (formatCurrency @cents currency=\"$\")}}\n</template>\n```\n\nHelpers defined using a class must provide a `compute` function. For example:\n\n```app/helpers/format-currency.js\nimport Helper from '@ember/component/helper';\n\nexport default class extends Helper {\n compute([cents], { currency }) {\n return `${currency}${cents * 0.01}`;\n }\n}\n```\n\nEach time the input to a helper changes, the `compute` function will be\ncalled again.\n\nAs instances, these helpers also have access to the container and will accept\ninjected dependencies.\n\nAdditionally, class helpers can call `recompute` to force a new computation.",
3650
3659
  "extends": "CoreObject",
3651
3660
  "access": "public",
3652
3661
  "tagname": "",
@@ -4147,7 +4156,7 @@
4147
4156
  "namespace": "Ember",
4148
4157
  "file": "packages/@ember/-internals/runtime/lib/mixins/target_action_support.ts",
4149
4158
  "line": 12,
4150
- "description": "`TargetActionSupport` is a mixin that can be included in a class\nto add a `triggerAction` method with semantics similar to the Handlebars\n`{{action}}` helper. In normal Ember usage, the `{{action}}` helper is\nusually the best choice. This mixin is most often useful when you are\ndoing more complex event handling in Components.",
4159
+ "description": "`TargetActionSupport` is a mixin that can be included in a class\nto add a `triggerAction` method with semantics similar to the\n`{{action}}` helper. In normal Ember usage, the `{{action}}` helper is\nusually the best choice. This mixin is most often useful when you are\ndoing more complex event handling in Components.",
4151
4160
  "extends": "Mixin",
4152
4161
  "access": "private",
4153
4162
  "tagname": ""
@@ -4327,7 +4336,7 @@
4327
4336
  "module": "@ember/array",
4328
4337
  "namespace": "",
4329
4338
  "file": "packages/@ember/array/index.ts",
4330
- "line": 216,
4339
+ "line": 156,
4331
4340
  "description": "This mixin implements Observer-friendly Array-like behavior. It is not a\nconcrete implementation, but it can be used up by other classes that want\nto appear like arrays.\n\nFor example, ArrayProxy is a concrete class that can be instantiated to\nimplement array-like behavior. This class uses the Array Mixin by way of\nthe MutableArray mixin, which allows observable changes to be made to the\nunderlying array.\n\nThis mixin defines methods specifically for collections that provide\nindex-ordered access to their contents. When you are designing code that\nneeds to accept any kind of Array-like object, you should use these methods\ninstead of Array primitives because these will properly notify observers of\nchanges to the array.\n\nAlthough these methods are efficient, they do add a layer of indirection to\nyour application so it is a good idea to use them only when you need the\nflexibility of using both true JavaScript arrays and \"virtual\" arrays such\nas controllers and collections.\n\nYou can use the methods defined in this module to access and modify array\ncontents in an observable-friendly way. You can also be notified whenever\nthe membership of an array changes by using `.observes('myArray.[]')`.\n\nTo support `EmberArray` in your own class, you must override two\nprimitives to use it: `length()` and `objectAt()`.",
4332
4341
  "uses": [
4333
4342
  "Enumerable"
@@ -4350,7 +4359,7 @@
4350
4359
  "module": "@ember/array",
4351
4360
  "namespace": "",
4352
4361
  "file": "packages/@ember/array/index.ts",
4353
- "line": 1474,
4362
+ "line": 1414,
4354
4363
  "description": "This mixin defines the API for modifying array-like objects. These methods\ncan be applied only to a collection that keeps its items in an ordered set.\nIt builds upon the Array mixin and adds methods to modify the array.\nOne concrete implementations of this class include ArrayProxy.\n\nIt is important to use the methods in this class to modify arrays so that\nchanges are observable. This allows the binding system in Ember to function\ncorrectly.\n\n\nNote that an Array can change even if it does not implement this mixin.\nFor example, one might implement a SparseArray that cannot be directly\nmodified, but if its underlying enumerable changes, it will change also.",
4355
4364
  "uses": [
4356
4365
  "EmberArray",
@@ -4370,7 +4379,7 @@
4370
4379
  "module": "ember",
4371
4380
  "namespace": "",
4372
4381
  "file": "packages/@ember/array/index.ts",
4373
- "line": 2071,
4382
+ "line": 2015,
4374
4383
  "description": "The NativeArray mixin contains the properties needed to make the native\nArray support MutableArray and all of its dependent APIs.",
4375
4384
  "uses": [
4376
4385
  "MutableArray",
@@ -4995,7 +5004,7 @@
4995
5004
  "namespace": "",
4996
5005
  "file": "packages/@ember/routing/router-service.ts",
4997
5006
  "line": 28,
4998
- "description": "The Router service is the public API that provides access to the router.\n\nThe immediate benefit of the Router service is that you can inject it into components,\ngiving them a friendly way to initiate transitions and ask questions about the current\nglobal router state.\n\nIn this example, the Router service is injected into a component to initiate a transition\nto a dedicated route:\n\n```app/components/example.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { service } from '@ember/service';\n\nexport default class ExampleComponent extends Component {\n @service router;\n\n @action\n next() {\n this.router.transitionTo('other.route');\n }\n}\n```\n\nLike any service, it can also be injected into helpers, routes, etc.",
5007
+ "description": "The Router service is the public API that provides access to the router.\n\nThe immediate benefit of the Router service is that you can inject it into components,\ngiving them a friendly way to initiate transitions and ask questions about the current\nglobal router state.\n\nIn this example, the Router service is injected into a component to initiate a transition\nto a dedicated route:\n\n```app/components/example.gjs\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { service } from '@ember/service';\n\nexport default class ExampleComponent extends Component {\n @service router;\n\n @action\n next() {\n this.router.transitionTo('other.route');\n }\n}\n```\n\nLike any service, it can also be injected into helpers, routes, etc.",
4999
5008
  "access": "public",
5000
5009
  "tagname": "",
5001
5010
  "extends": "Service"
@@ -6504,7 +6513,7 @@
6504
6513
  {
6505
6514
  "file": "packages/@ember/-internals/glimmer/lib/components/input.ts",
6506
6515
  "line": 67,
6507
- "description": "The `Input` component lets you create an HTML `<input>` element.\n\n```handlebars\n<Input @value=\"987\" />\n```\n\ncreates an `<input>` element with `type=\"text\"` and value set to 987.\n\n### Text field\n\nIf no `type` argument is specified, a default of type 'text' is used.\n\n```handlebars\nSearch:\n<Input @value={{this.searchWord}} />\n```\n\nIn this example, the initial value in the `<input>` will be set to the value of\n`this.searchWord`. If the user changes the text, the value of `this.searchWord` will also be\nupdated.\n\n### Actions\n\nThe `Input` component takes a number of arguments with callbacks that are invoked in response to\nuser events.\n\n* `enter`\n* `insert-newline`\n* `escape-press`\n* `focus-in`\n* `focus-out`\n* `key-down`\n* `key-press`\n* `key-up`\n\nThese callbacks are passed to `Input` like this:\n\n```handlebars\n<Input @value={{this.searchWord}} @enter={{this.query}} />\n```\n\nStarting with Ember Octane, we recommend using the `{{on}}` modifier to call actions\non specific events, such as the input event.\n\n```handlebars\n<label for=\"input-name\">Name:</label>\n<Input\n @id=\"input-name\"\n @value={{this.name}}\n {{on \"input\" this.validateName}}\n/>\n```\n\nThe event name (e.g. `focusout`, `input`, `keydown`) always follows the casing\nthat the HTML standard uses.\n\n### `<input>` HTML Attributes to Avoid\n\nIn most cases, if you want to pass an attribute to the underlying HTML `<input>` element, you\ncan pass the attribute directly, just like any other Ember component.\n\n```handlebars\n<Input @type=\"text\" size=\"10\" />\n```\n\nIn this example, the `size` attribute will be applied to the underlying `<input>` element in the\noutputted HTML.\n\nHowever, there are a few attributes where you **must** use the `@` version.\n\n* `@type`: This argument is used to control which Ember component is used under the hood\n* `@value`: The `@value` argument installs a two-way binding onto the element. If you wanted a\n one-way binding, use `<input>` with the `value` property and the `input` event instead.\n* `@checked` (for checkboxes): like `@value`, the `@checked` argument installs a two-way binding\n onto the element. If you wanted a one-way binding, use `<input type=\"checkbox\">` with\n `checked` and the `input` event instead.\n\n### Checkbox\n\nTo create an `<input type=\"checkbox\">`:\n\n```handlebars\nEmberize Everything:\n<Input @type=\"checkbox\" @checked={{this.isEmberized}} name=\"isEmberized\" />\n```\n\nThis will bind the checked state of this checkbox to the value of `isEmberized` -- if either one\nchanges, it will be reflected in the other.",
6516
+ "description": "The `Input` component lets you create an HTML `<input>` element.\n\n```gjs\nimport { Input } from '@ember/component';\n \n<template>\n <Input @value=\"987\" />\n</template>\n```\n\ncreates an `<input>` element with `type=\"text\"` and value set to 987.\n\n### Text field\n\nIf no `type` argument is specified, a default of type 'text' is used.\n\n```handlebars\nSearch:\n<Input @value={{this.searchWord}} />\n```\n\nIn this example, the initial value in the `<input>` will be set to the value of\n`this.searchWord`. If the user changes the text, the value of `this.searchWord` will also be\nupdated.\n\n### Actions\n\nThe `Input` component takes a number of arguments with callbacks that are invoked in response to\nuser events.\n\n* `enter`\n* `insert-newline`\n* `escape-press`\n* `focus-in`\n* `focus-out`\n* `key-down`\n* `key-press`\n* `key-up`\n\nThese callbacks are passed to `Input` like this:\n\n```handlebars\n<Input @value={{this.searchWord}} @enter={{this.query}} />\n```\n\nStarting with Ember Octane, we recommend using the `{{on}}` modifier to call actions\non specific events, such as the input event.\n\n```handlebars\n<label for=\"input-name\">Name:</label>\n<Input\n @id=\"input-name\"\n @value={{this.name}}\n {{on \"input\" this.validateName}}\n/>\n```\n\nThe event name (e.g. `focusout`, `input`, `keydown`) always follows the casing\nthat the HTML standard uses.\n\n### `<input>` HTML Attributes to Avoid\n\nIn most cases, if you want to pass an attribute to the underlying HTML `<input>` element, you\ncan pass the attribute directly, just like any other Ember component.\n\n```handlebars\n<Input @type=\"text\" size=\"10\" />\n```\n\nIn this example, the `size` attribute will be applied to the underlying `<input>` element in the\noutputted HTML.\n\nHowever, there are a few attributes where you **must** use the `@` version.\n\n* `@type`: This argument is used to control which Ember component is used under the hood\n* `@value`: The `@value` argument installs a two-way binding onto the element. If you wanted a\n one-way binding, use `<input>` with the `value` property and the `input` event instead.\n* `@checked` (for checkboxes): like `@value`, the `@checked` argument installs a two-way binding\n onto the element. If you wanted a one-way binding, use `<input type=\"checkbox\">` with\n `checked` and the `input` event instead.\n\n### Checkbox\n\nTo create an `<input type=\"checkbox\">`:\n\n```handlebars\nEmberize Everything:\n<Input @type=\"checkbox\" @checked={{this.isEmberized}} name=\"isEmberized\" />\n```\n\nThis will bind the checked state of this checkbox to the value of `isEmberized` -- if either one\nchanges, it will be reflected in the other.",
6508
6517
  "itemtype": "method",
6509
6518
  "name": "Input",
6510
6519
  "params": [
@@ -6521,14 +6530,14 @@
6521
6530
  },
6522
6531
  {
6523
6532
  "file": "packages/@ember/-internals/glimmer/lib/components/input.ts",
6524
- "line": 167,
6533
+ "line": 171,
6525
6534
  "description": "The HTML class attribute.",
6526
6535
  "class": "Ember.Templates.components",
6527
6536
  "module": "@ember/component"
6528
6537
  },
6529
6538
  {
6530
6539
  "file": "packages/@ember/-internals/glimmer/lib/components/input.ts",
6531
- "line": 178,
6540
+ "line": 182,
6532
6541
  "description": "The HTML type attribute.",
6533
6542
  "class": "Ember.Templates.components",
6534
6543
  "module": "@ember/component"
@@ -6550,7 +6559,7 @@
6550
6559
  {
6551
6560
  "file": "packages/@ember/-internals/glimmer/lib/components/link-to.ts",
6552
6561
  "line": 48,
6553
- "description": "The `LinkTo` component renders a link to the supplied `routeName` passing an optionally\nsupplied model to the route as its `model` context of the route. The block for `LinkTo`\nbecomes the contents of the rendered element:\n\n```handlebars\n<LinkTo @route='photoGallery'>\n Great Hamster Photos\n</LinkTo>\n```\n\nThis will result in:\n\n```html\n<a href=\"/hamster-photos\">\n Great Hamster Photos\n</a>\n```\n\n### Disabling the `LinkTo` component\n\nThe `LinkTo` component can be disabled by using the `disabled` argument. A disabled link\ndoesn't result in a transition when activated, and adds the `disabled` class to the `<a>`\nelement.\n\n(The class name to apply to the element can be overridden by using the `disabledClass`\nargument)\n\n```handlebars\n<LinkTo @route='photoGallery' @disabled={{true}}>\n Great Hamster Photos\n</LinkTo>\n```\n\n### Handling `href`\n\n`<LinkTo>` will use your application's Router to fill the element's `href` property with a URL\nthat matches the path to the supplied `routeName`.\n\n### Handling current route\n\nThe `LinkTo` component will apply a CSS class name of 'active' when the application's current\nroute matches the supplied routeName. For example, if the application's current route is\n'photoGallery.recent', then the following invocation of `LinkTo`:\n\n```handlebars\n<LinkTo @route='photoGallery.recent'>\n Great Hamster Photos\n</LinkTo>\n```\n\nwill result in\n\n```html\n<a href=\"/hamster-photos/this-week\" class=\"active\">\n Great Hamster Photos\n</a>\n```\n\nThe CSS class used for active classes can be customized by passing an `activeClass` argument:\n\n```handlebars\n<LinkTo @route='photoGallery.recent' @activeClass=\"current-url\">\n Great Hamster Photos\n</LinkTo>\n```\n\n```html\n<a href=\"/hamster-photos/this-week\" class=\"current-url\">\n Great Hamster Photos\n</a>\n```\n\n### Keeping a link active for other routes\n\nIf you need a link to be 'active' even when it doesn't match the current route, you can use the\n`current-when` argument.\n\n```handlebars\n<LinkTo @route='photoGallery' @current-when='photos'>\n Photo Gallery\n</LinkTo>\n```\n\nThis may be helpful for keeping links active for:\n\n* non-nested routes that are logically related\n* some secondary menu approaches\n* 'top navigation' with 'sub navigation' scenarios\n\nA link will be active if `current-when` is `true` or the current\nroute is the route this link would transition to.\n\nTo match multiple routes 'space-separate' the routes:\n\n```handlebars\n<LinkTo @route='gallery' @current-when='photos drawings paintings'>\n Art Gallery\n</LinkTo>\n```\n\n### Supplying a model\n\nAn optional `model` argument can be used for routes whose\npaths contain dynamic segments. This argument will become\nthe model context of the linked route:\n\n```javascript\nRouter.map(function() {\n this.route(\"photoGallery\", {path: \"hamster-photos/:photo_id\"});\n});\n```\n\n```handlebars\n<LinkTo @route='photoGallery' @model={{this.aPhoto}}>\n {{aPhoto.title}}\n</LinkTo>\n```\n\n```html\n<a href=\"/hamster-photos/42\">\n Tomster\n</a>\n```\n\n### Supplying multiple models\n\nFor deep-linking to route paths that contain multiple\ndynamic segments, the `models` argument can be used.\n\nAs the router transitions through the route path, each\nsupplied model argument will become the context for the\nroute with the dynamic segments:\n\n```javascript\nRouter.map(function() {\n this.route(\"photoGallery\", { path: \"hamster-photos/:photo_id\" }, function() {\n this.route(\"comment\", {path: \"comments/:comment_id\"});\n });\n});\n```\n\nThis argument will become the model context of the linked route:\n\n```handlebars\n<LinkTo @route='photoGallery.comment' @models={{array this.aPhoto this.comment}}>\n {{comment.body}}\n</LinkTo>\n```\n\n```html\n<a href=\"/hamster-photos/42/comments/718\">\n A+++ would snuggle again.\n</a>\n```\n\n### Supplying an explicit dynamic segment value\n\nIf you don't have a model object available to pass to `LinkTo`,\nan optional string or integer argument can be passed for routes whose\npaths contain dynamic segments. This argument will become the value\nof the dynamic segment:\n\n```javascript\nRouter.map(function() {\n this.route(\"photoGallery\", { path: \"hamster-photos/:photo_id\" });\n});\n```\n\n```handlebars\n<LinkTo @route='photoGallery' @model={{aPhotoId}}>\n {{this.aPhoto.title}}\n</LinkTo>\n```\n\n```html\n<a href=\"/hamster-photos/42\">\n Tomster\n</a>\n```\n\nWhen transitioning into the linked route, the `model` hook will\nbe triggered with parameters including this passed identifier.\n\n### Supplying query parameters\n\nIf you need to add optional key-value pairs that appear to the right of the ? in a URL,\nyou can use the `query` argument.\n\n```handlebars\n<LinkTo @route='photoGallery' @query={{hash page=1 per_page=20}}>\n Great Hamster Photos\n</LinkTo>\n```\n\nThis will result in:\n\n```html\n<a href=\"/hamster-photos?page=1&per_page=20\">\n Great Hamster Photos\n</a>\n```",
6562
+ "description": "The `LinkTo` component renders a link to the supplied `routeName` passing an optionally\nsupplied model to the route as its `model` context of the route. The block for `LinkTo`\nbecomes the contents of the rendered element:\n\n```gjs\nimport { LinkTo } from '@ember/routing';\n \n<template>\n <LinkTo @route='photoGallery'>\n Great Hamster Photos\n </LinkTo>\n</template>\n```\n\nThis will result in:\n\n```html\n<a href=\"/hamster-photos\">\n Great Hamster Photos\n</a>\n```\n\n### Disabling the `LinkTo` component\n\nThe `LinkTo` component can be disabled by using the `disabled` argument. A disabled link\ndoesn't result in a transition when activated, and adds the `disabled` class to the `<a>`\nelement.\n\n(The class name to apply to the element can be overridden by using the `disabledClass`\nargument)\n\n```handlebars\n<LinkTo @route='photoGallery' @disabled={{true}}>\n Great Hamster Photos\n</LinkTo>\n```\n\n### Handling `href`\n\n`<LinkTo>` will use your application's Router to fill the element's `href` property with a URL\nthat matches the path to the supplied `routeName`.\n\n### Handling current route\n\nThe `LinkTo` component will apply a CSS class name of 'active' when the application's current\nroute matches the supplied routeName. For example, if the application's current route is\n'photoGallery.recent', then the following invocation of `LinkTo`:\n\n```handlebars\n<LinkTo @route='photoGallery.recent'>\n Great Hamster Photos\n</LinkTo>\n```\n\nwill result in\n\n```html\n<a href=\"/hamster-photos/this-week\" class=\"active\">\n Great Hamster Photos\n</a>\n```\n\nThe CSS class used for active classes can be customized by passing an `activeClass` argument:\n\n```handlebars\n<LinkTo @route='photoGallery.recent' @activeClass=\"current-url\">\n Great Hamster Photos\n</LinkTo>\n```\n\n```html\n<a href=\"/hamster-photos/this-week\" class=\"current-url\">\n Great Hamster Photos\n</a>\n```\n\n### Keeping a link active for other routes\n\nIf you need a link to be 'active' even when it doesn't match the current route, you can use the\n`current-when` argument.\n\n```handlebars\n<LinkTo @route='photoGallery' @current-when='photos'>\n Photo Gallery\n</LinkTo>\n```\n\nThis may be helpful for keeping links active for:\n\n* non-nested routes that are logically related\n* some secondary menu approaches\n* 'top navigation' with 'sub navigation' scenarios\n\nA link will be active if `current-when` is `true` or the current\nroute is the route this link would transition to.\n\nTo match multiple routes 'space-separate' the routes:\n\n```handlebars\n<LinkTo @route='gallery' @current-when='photos drawings paintings'>\n Art Gallery\n</LinkTo>\n```\n\n### Supplying a model\n\nAn optional `model` argument can be used for routes whose\npaths contain dynamic segments. This argument will become\nthe model context of the linked route:\n\n```javascript\nRouter.map(function() {\n this.route(\"photoGallery\", {path: \"hamster-photos/:photo_id\"});\n});\n```\n\n```handlebars\n<LinkTo @route='photoGallery' @model={{this.aPhoto}}>\n {{aPhoto.title}}\n</LinkTo>\n```\n\n```html\n<a href=\"/hamster-photos/42\">\n Tomster\n</a>\n```\n\n### Supplying multiple models\n\nFor deep-linking to route paths that contain multiple\ndynamic segments, the `models` argument can be used.\n\nAs the router transitions through the route path, each\nsupplied model argument will become the context for the\nroute with the dynamic segments:\n\n```javascript\nRouter.map(function() {\n this.route(\"photoGallery\", { path: \"hamster-photos/:photo_id\" }, function() {\n this.route(\"comment\", {path: \"comments/:comment_id\"});\n });\n});\n```\n\nThis argument will become the model context of the linked route:\n\n```handlebars\n<LinkTo @route='photoGallery.comment' @models={{array this.aPhoto this.comment}}>\n {{comment.body}}\n</LinkTo>\n```\n\n```html\n<a href=\"/hamster-photos/42/comments/718\">\n A+++ would snuggle again.\n</a>\n```\n\n### Supplying an explicit dynamic segment value\n\nIf you don't have a model object available to pass to `LinkTo`,\nan optional string or integer argument can be passed for routes whose\npaths contain dynamic segments. This argument will become the value\nof the dynamic segment:\n\n```javascript\nRouter.map(function() {\n this.route(\"photoGallery\", { path: \"hamster-photos/:photo_id\" });\n});\n```\n\n```handlebars\n<LinkTo @route='photoGallery' @model={{aPhotoId}}>\n {{this.aPhoto.title}}\n</LinkTo>\n```\n\n```html\n<a href=\"/hamster-photos/42\">\n Tomster\n</a>\n```\n\nWhen transitioning into the linked route, the `model` hook will\nbe triggered with parameters including this passed identifier.\n\n### Supplying query parameters\n\nIf you need to add optional key-value pairs that appear to the right of the ? in a URL,\nyou can use the `query` argument.\n\n```handlebars\n<LinkTo @route='photoGallery' @query={{hash page=1 per_page=20}}>\n Great Hamster Photos\n</LinkTo>\n```\n\nThis will result in:\n\n```html\n<a href=\"/hamster-photos?page=1&per_page=20\">\n Great Hamster Photos\n</a>\n```",
6554
6563
  "itemtype": "method",
6555
6564
  "name": "LinkTo",
6556
6565
  "access": "public",
@@ -6560,7 +6569,7 @@
6560
6569
  },
6561
6570
  {
6562
6571
  "file": "packages/@ember/-internals/glimmer/lib/components/link-to.ts",
6563
- "line": 260,
6572
+ "line": 264,
6564
6573
  "description": "See [Ember.Templates.components.LinkTo](/ember/release/classes/Ember.Templates.components/methods/input?anchor=LinkTo).",
6565
6574
  "itemtype": "method",
6566
6575
  "name": "link-to",
@@ -6574,7 +6583,7 @@
6574
6583
  },
6575
6584
  {
6576
6585
  "file": "packages/@ember/-internals/glimmer/lib/components/link-to.ts",
6577
- "line": 269,
6586
+ "line": 273,
6578
6587
  "description": "An opaque interface which can be imported and used in strict-mode\ntemplates to call <LinkTo>.\n\nSee [Ember.Templates.components.LinkTo](/ember/release/classes/Ember.Templates.components/methods/input?anchor=LinkTo).",
6579
6588
  "itemtype": "method",
6580
6589
  "name": "LinkTo",
@@ -6589,7 +6598,7 @@
6589
6598
  {
6590
6599
  "file": "packages/@ember/-internals/glimmer/lib/components/textarea.ts",
6591
6600
  "line": 10,
6592
- "description": "The `Textarea` component inserts a new instance of `<textarea>` tag into the template.\n\nThe `@value` argument provides the content of the `<textarea>`.\n\nThis template:\n\n```handlebars\n<Textarea @value=\"A bunch of text\" />\n```\n\nWould result in the following HTML:\n\n```html\n<textarea class=\"ember-text-area\">\n A bunch of text\n</textarea>\n```\n\nThe `@value` argument is two-way bound. If the user types text into the textarea, the `@value`\nargument is updated. If the `@value` argument is updated, the text in the textarea is updated.\n\nIn the following example, the `writtenWords` property on the component will be updated as the user\ntypes 'Lots of text' into the text area of their browser's window.\n\n```app/components/word-editor.js\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class WordEditorComponent extends Component {\n @tracked writtenWords = \"Lots of text that IS bound\";\n}\n```\n\n```handlebars\n<Textarea @value={{writtenWords}} />\n```\n\nWould result in the following HTML:\n\n```html\n<textarea class=\"ember-text-area\">\n Lots of text that IS bound\n</textarea>\n```\n\nIf you wanted a one way binding, you could use the `<textarea>` element directly, and use the\n`value` DOM property and the `input` event.\n\n### Actions\n\nThe `Textarea` component takes a number of arguments with callbacks that are invoked in\nresponse to user events.\n\n* `enter`\n* `insert-newline`\n* `escape-press`\n* `focus-in`\n* `focus-out`\n* `key-press`\n\nThese callbacks are passed to `Textarea` like this:\n\n```handlebars\n<Textarea @value={{this.searchWord}} @enter={{this.query}} />\n```\n\n## Classic Invocation Syntax\n\nThe `Textarea` component can also be invoked using curly braces, just like any other Ember\ncomponent.\n\nFor example, this is an invocation using angle-bracket notation:\n\n```handlebars\n<Textarea @value={{this.searchWord}} @enter={{this.query}} />\n```\n\nYou could accomplish the same thing using classic invocation:\n\n```handlebars\n{{textarea value=this.searchWord enter=this.query}}\n```\n\nThe main difference is that angle-bracket invocation supports any HTML attribute using HTML\nattribute syntax, because attributes and arguments have different syntax when using angle-bracket\ninvocation. Curly brace invocation, on the other hand, only has a single syntax for arguments,\nand components must manually map attributes onto component arguments.\n\nWhen using classic invocation with `{{textarea}}`, only the following attributes are mapped onto\narguments:\n\n* rows\n* cols\n* name\n* selectionEnd\n* selectionStart\n* autocomplete\n* wrap\n* lang\n* dir\n* value\n\n## Classic `layout` and `layoutName` properties\n\nBecause HTML `textarea` elements do not contain inner HTML the `layout` and\n`layoutName` properties will not be applied.",
6601
+ "description": "The `Textarea` component inserts a new instance of `<textarea>` tag into the template.\n\nThe `@value` argument provides the content of the `<textarea>`.\n\nThis template:\n\n```handlebars\nimport { Textarea } from '@ember/component';\n\n<template>\n <Textarea @value=\"A bunch of text\" />\n</template>\n```\n\nWould result in the following HTML:\n\n```html\n<textarea class=\"ember-text-area\">\n A bunch of text\n</textarea>\n```\n\nThe `@value` argument is two-way bound. If the user types text into the textarea, the `@value`\nargument is updated. If the `@value` argument is updated, the text in the textarea is updated.\n\nIn the following example, the `writtenWords` property on the component will be updated as the user\ntypes 'Lots of text' into the text area of their browser's window.\n\n```app/components/word-editor.gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class WordEditorComponent extends Component {\n @tracked writtenWords = \"Lots of text that IS bound\";\n \n <template>\n <Textarea @value={{writtenWords}} />\n </template>\n}\n```\n\nWould result in the following HTML:\n\n```html\n<textarea class=\"ember-text-area\">\n Lots of text that IS bound\n</textarea>\n```\n\nIf you wanted a one way binding, you could use the `<textarea>` element directly, and use the\n`value` DOM property and the `input` event.\n\n### Actions\n\nThe `Textarea` component takes a number of arguments with callbacks that are invoked in\nresponse to user events.\n\n* `enter`\n* `insert-newline`\n* `escape-press`\n* `focus-in`\n* `focus-out`\n* `key-press`\n\nThese callbacks are passed to `Textarea` like this:\n\n```handlebars\n<Textarea @value={{this.searchWord}} @enter={{this.query}} />\n```\n\n## Classic Invocation Syntax\n\nThe `Textarea` component can also be invoked using curly braces, just like any other Ember\ncomponent.\n\nFor example, this is an invocation using angle-bracket notation:\n\n```handlebars\n<Textarea @value={{this.searchWord}} @enter={{this.query}} />\n```\n\nYou could accomplish the same thing using classic invocation:\n\n```handlebars\n{{textarea value=this.searchWord enter=this.query}}\n```\n\nThe main difference is that angle-bracket invocation supports any HTML attribute using HTML\nattribute syntax, because attributes and arguments have different syntax when using angle-bracket\ninvocation. Curly brace invocation, on the other hand, only has a single syntax for arguments,\nand components must manually map attributes onto component arguments.\n\nWhen using classic invocation with `{{textarea}}`, only the following attributes are mapped onto\narguments:\n\n* rows\n* cols\n* name\n* selectionEnd\n* selectionStart\n* autocomplete\n* wrap\n* lang\n* dir\n* value\n\n## Classic `layout` and `layoutName` properties\n\nBecause HTML `textarea` elements do not contain inner HTML the `layout` and\n`layoutName` properties will not be applied.",
6593
6602
  "itemtype": "method",
6594
6603
  "name": "Textarea",
6595
6604
  "access": "public",
@@ -6599,7 +6608,7 @@
6599
6608
  },
6600
6609
  {
6601
6610
  "file": "packages/@ember/-internals/glimmer/lib/components/textarea.ts",
6602
- "line": 123,
6611
+ "line": 127,
6603
6612
  "description": "See [Ember.Templates.components.Textarea](/ember/release/classes/Ember.Templates.components/methods/Textarea?anchor=Textarea)",
6604
6613
  "itemtype": "method",
6605
6614
  "name": "textarea",
@@ -6613,7 +6622,7 @@
6613
6622
  },
6614
6623
  {
6615
6624
  "file": "packages/@ember/-internals/glimmer/lib/components/textarea.ts",
6616
- "line": 132,
6625
+ "line": 136,
6617
6626
  "description": "An opaque interface which can be imported and used in strict-mode\ntemplates to call <Textarea>.\n\nSee [Ember.Templates.components.Textarea](/ember/release/classes/Ember.Templates.components/methods/Textarea?anchor=Textarea).",
6618
6627
  "itemtype": "method",
6619
6628
  "name": "Textarea",
@@ -6635,7 +6644,7 @@
6635
6644
  {
6636
6645
  "file": "packages/@ember/-internals/glimmer/lib/helpers/array.ts",
6637
6646
  "line": 5,
6638
- "description": "Use the `{{array}}` helper to create an array to pass as an option to your\ncomponents.\n\n```handlebars\n<MyComponent @people={{array\n 'Tom Dale'\n 'Yehuda Katz'\n this.myOtherPerson}}\n/>\n```\n or\n```handlebars\n{{my-component people=(array\n 'Tom Dale'\n 'Yehuda Katz'\n this.myOtherPerson)\n}}\n```\n\nWould result in an object such as:\n\n```js\n['Tom Dale', 'Yehuda Katz', this.get('myOtherPerson')]\n```\n\nWhere the 3rd item in the array is bound to updates of the `myOtherPerson` property.",
6647
+ "description": "Use the `{{array}}` helper to create an array to pass as an option to your\ncomponents.\n\n```handlebars\n<MyComponent @people={{array\n 'Tom Dale'\n 'Yehuda Katz'\n this.myOtherPerson}}\n/>\n```\n or\n```handlebars\n{{yield people=(array\n 'Tom Dale'\n 'Yehuda Katz'\n this.myOtherPerson)\n}}\n```\n\nWould result in an object such as:\n\n```js\n['Tom Dale', 'Yehuda Katz', this.get('myOtherPerson')]\n```\n\nWhere the 3rd item in the array is bound to updates of the `myOtherPerson` property.\n \nThe `array` helper is built-in keyword and does not need to be imported as of v7.1.0.",
6639
6648
  "itemtype": "method",
6640
6649
  "name": "array",
6641
6650
  "params": [
@@ -6658,7 +6667,7 @@
6658
6667
  {
6659
6668
  "file": "packages/@ember/-internals/glimmer/lib/helpers/component.ts",
6660
6669
  "line": 5,
6661
- "description": "The `{{component}}` helper lets you add instances of `Component` to a\ntemplate. See [Component](/ember/release/classes/Component) for\nadditional information on how a `Component` functions.\n`{{component}}`'s primary use is for cases where you want to dynamically\nchange which type of component is rendered as the state of your application\nchanges. This helper has three modes: inline, block, and nested.\n\n### Inline Form\n\nGiven the following template:\n\n```app/application.hbs\n{{component this.infographicComponentName}}\n```\n\nAnd the following application code:\n\n```app/controllers/application.js\nimport Controller from '@ember/controller';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class ApplicationController extends Controller {\n @tracked isMarketOpen = 'live-updating-chart'\n\n get infographicComponentName() {\n return this.isMarketOpen ? 'live-updating-chart' : 'market-close-summary';\n }\n}\n```\n\nThe `live-updating-chart` component will be appended when `isMarketOpen` is\n`true`, and the `market-close-summary` component will be appended when\n`isMarketOpen` is `false`. If the value changes while the app is running,\nthe component will be automatically swapped out accordingly.\nNote: You should not use this helper when you are consistently rendering the same\ncomponent. In that case, use standard component syntax, for example:\n\n```app/templates/application.hbs\n<LiveUpdatingChart />\n```\n\nor\n\n```app/templates/application.hbs\n{{live-updating-chart}}\n```\n\n### Block Form\n\nUsing the block form of this helper is similar to using the block form\nof a component. Given the following application template:\n\n```app/templates/application.hbs\n{{#component this.infographicComponentName}}\n Last update: {{this.lastUpdateTimestamp}}\n{{/component}}\n```\n\nThe following controller code:\n\n```app/controllers/application.js\nimport Controller from '@ember/controller';\nimport { computed } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class ApplicationController extends Controller {\n @tracked isMarketOpen = 'live-updating-chart'\n\n get lastUpdateTimestamp() {\n return new Date();\n }\n\n get infographicComponentName() {\n return this.isMarketOpen ? 'live-updating-chart' : 'market-close-summary';\n }\n}\n```\n\nAnd the following component template:\n\n```app/templates/components/live-updating-chart.hbs\n{{! chart }}\n{{yield}}\n```\n\nThe `Last Update: {{this.lastUpdateTimestamp}}` will be rendered in place of the `{{yield}}`.\n\n### Nested Usage\n\nThe `component` helper can be used to package a component path with initial attrs.\nThe included attrs can then be merged during the final invocation.\nFor example, given a `person-form` component with the following template:\n\n```app/templates/components/person-form.hbs\n{{yield (hash\n nameInput=(component \"my-input-component\" value=@model.name placeholder=\"First Name\")\n)}}\n```\n\nWhen yielding the component via the `hash` helper, the component is invoked directly.\nSee the following snippet:\n\n```\n<PersonForm as |form|>\n <form.nameInput @placeholder=\"Username\" />\n</PersonForm>\n```\n\nor\n```\n{{#person-form as |form|}}\n {{form.nameInput placeholder=\"Username\"}}\n{{/person-form}}\n```\n\nWhich outputs an input whose value is already bound to `model.name` and `placeholder`\nis \"Username\".\n\nWhen yielding the component without the `hash` helper use the `component` helper.\nFor example, below is a `full-name` component template:\n\n```handlebars\n{{yield (component \"my-input-component\" value=@model.name placeholder=\"Name\")}}\n```\n\n```\n<FullName as |field|>\n {{component field placeholder=\"Full name\"}}\n</FullName>\n```\nor\n```\n{{#full-name as |field|}}\n {{component field placeholder=\"Full name\"}}\n{{/full-name}}\n```",
6670
+ "description": "The `component` helper is used to package a Component with initial arguments.\nThe included arguments can then be merged during the final invocation.\n\nSee [Component](/ember/release/modules/@glimmer%2Fcomponent/) for\nadditional information on how a `Component` functions.\n\nThis is similar to the concept of Partial Application.\n \nFor example, given a `FullName` component:\n\n```app/components/full-name.gjs\nimport MyInputComponent from './my-input-component';\n\n<template>\n {{yield (component MyInputComponent value=@model.name placeholder=\"Username\")}}\n</template>\n```\n\nThe yielded component can be invoked by the calling component.\nSee the following snippet:\n\n```app/components/person-form.gjs\nimport FullName from './full-name';\n \n<template>\n <FullName @model={{@model}} as |Field|>\n <Field />\n </FullName>\n</template>\n```\n\nWhich will output an input whose value is already bound to `@model.name` and `placeholder`\nis \"Username\".\n \nAny arguments passed at the invocation site of the component will override those applied via\nthe `component` helper. For example, if the invocation site of the component is:\n\n```app/components/person-form.gjs\nimport FullName from './full-name';\n\n<template>\n <FullName @model={{@model}} as |Field|>\n <Field @placeholder=\"Your name\" />\n </FullName>\n</template>\n```\n\nThe output will be an input whose value is bound to `@model.name` and `placeholder`\nis \"Your name\".\n \nThe `component` helper is built-in and does not need to be imported. \n \nPrior to Strict Mode aka \"Template Tag\" or gjs, the component helper was also used to invoke\ncomponents dynamically. This is no longer necessary, and they can be directly invoked, as above.\n\n### Dynamic Component Invocation\n\n```app/templates/application.gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { component } from '@ember/helper';\nimport LiveUpdatingChart from '../components/live-updating-chart';\nimport MarketCloseSummary from '../components/market-close-summary';\n\nexport default class Application extends Component {\n @tracked isMarketOpen = false;\n\n get infographicComponent() {\n return this.isMarketOpen ? LiveUpdatingChart : MarketCloseSummary;\n }\n\n <template>\n {{!-- The component can be invoked directly --}}\n <this.infographicComponent />\n \n {{!-- The component helper here is no longer necessary --}}\n {{component this.infographicComponentName}}\n </template>\n}\n```",
6662
6671
  "itemtype": "method",
6663
6672
  "name": "component",
6664
6673
  "since": "1.11.0",
@@ -6670,7 +6679,7 @@
6670
6679
  {
6671
6680
  "file": "packages/@ember/-internals/glimmer/lib/helpers/concat.ts",
6672
6681
  "line": 5,
6673
- "description": "Concatenates the given arguments into a string.\n\nExample:\n\n```handlebars\n{{some-component name=(concat firstName \" \" lastName)}}\n\n{{! would pass name=\"<first name value> <last name value>\" to the component}}\n```\n\nor for angle bracket invocation, you actually don't need concat at all.\n\n```handlebars\n<SomeComponent @name=\"{{firstName}} {{lastName}}\" />\n```",
6682
+ "description": "Concatenates the given arguments into a string.\n\nExample:\n\n```gjs\nimport { concat } from '@ember/helper';\n \n<template>\n {{yield (concat firstName \" \" lastName)}}\n\n {{! would yield name=\"<first name value> <last name value>\" to the component}}\n</template>\n```\n\nFor invocation of components, you don't need concat at all.\n\n```handlebars\n<SomeComponent @name=\"{{firstName}} {{lastName}}\" />\n```",
6674
6683
  "access": "public",
6675
6684
  "tagname": "",
6676
6685
  "itemtype": "method",
@@ -6682,7 +6691,7 @@
6682
6691
  {
6683
6692
  "file": "packages/@ember/-internals/glimmer/lib/helpers/each-in.ts",
6684
6693
  "line": 13,
6685
- "description": "The `{{#each}}` helper loops over elements in a collection. It is an extension\nof the base Handlebars `{{#each}}` helper.\n\nThe default behavior of `{{#each}}` is to yield its inner block once for every\nitem in an array passing the item as the first block parameter.\n\nAssuming the `@developers` argument contains this array:\n\n```javascript\n[{ name: 'Yehuda' },{ name: 'Tom' }, { name: 'Paul' }];\n```\n\n```handlebars\n<ul>\n {{#each @developers as |person|}}\n <li>Hello, {{person.name}}!</li>\n {{/each}}\n</ul>\n```\n\nThe same rules apply to arrays of primitives.\n\n```javascript\n['Yehuda', 'Tom', 'Paul']\n```\n\n```handlebars\n<ul>\n {{#each @developerNames as |name|}}\n <li>Hello, {{name}}!</li>\n {{/each}}\n</ul>\n```\n\nDuring iteration, the index of each item in the array is provided as a second block\nparameter.\n\n```handlebars\n<ul>\n {{#each @developers as |person index|}}\n <li>Hello, {{person.name}}! You're number {{index}} in line</li>\n {{/each}}\n</ul>\n```\n\n### Specifying Keys\n\nIn order to improve rendering speed, Ember will try to reuse the DOM elements\nwhere possible. Specifically, if the same item is present in the array both\nbefore and after the change, its DOM output will be reused.\n\nThe `key` option is used to tell Ember how to determine if the items in the\narray being iterated over with `{{#each}}` has changed between renders. By\ndefault the item's object identity is used.\n\nThis is usually sufficient, so in most cases, the `key` option is simply not\nneeded. However, in some rare cases, the objects' identities may change even\nthough they represent the same underlying data.\n\nFor example:\n\n```javascript\npeople.map(person => {\n return { ...person, type: 'developer' };\n});\n```\n\nIn this case, each time the `people` array is `map`-ed over, it will produce\nan new array with completely different objects between renders. In these cases,\nyou can help Ember determine how these objects related to each other with the\n`key` option:\n\n```handlebars\n<ul>\n {{#each @developers key=\"name\" as |person|}}\n <li>Hello, {{person.name}}!</li>\n {{/each}}\n</ul>\n```\n\nBy doing so, Ember will use the value of the property specified (`person.name`\nin the example) to find a \"match\" from the previous render. That is, if Ember\nhas previously seen an object from the `@developers` array with a matching\nname, its DOM elements will be re-used.\n\nThere are two special values for `key`:\n\n * `@index` - The index of the item in the array.\n * `@identity` - The item in the array itself.\n\n### {{else}} condition\n\n`{{#each}}` can have a matching `{{else}}`. The contents of this block will render\nif the collection is empty.\n\n```handlebars\n<ul>\n {{#each @developers as |person|}}\n <li>{{person.name}} is available!</li>\n {{else}}\n <li>Sorry, nobody is available for this task.</li>\n {{/each}}\n</ul>\n```",
6694
+ "description": "The `{{#each}}` keyword loops over elements in a collection. It is an extension\nof the base Handlebars `{{#each}}` helper.\n\nThe default behavior of `{{#each}}` is to yield its inner block once for every\nitem in an array passing the item as the first block parameter.\n\nAssuming the `@developers` argument contains this array:\n\n```javascript\n[{ name: 'Yehuda' },{ name: 'Tom' }, { name: 'Paul' }];\n```\n\n```handlebars\n<ul>\n {{#each @developers as |person|}}\n <li>Hello, {{person.name}}!</li>\n {{/each}}\n</ul>\n```\n\nThe same rules apply to arrays of primitives.\n\n```javascript\n['Yehuda', 'Tom', 'Paul']\n```\n\n```handlebars\n<ul>\n {{#each @developerNames as |name|}}\n <li>Hello, {{name}}!</li>\n {{/each}}\n</ul>\n```\n\nDuring iteration, the index of each item in the array is provided as a second block\nparameter.\n\n```handlebars\n<ul>\n {{#each @developers as |person index|}}\n <li>Hello, {{person.name}}! You're number {{index}} in line</li>\n {{/each}}\n</ul>\n```\n \n`#each` is a keyword and does not need to be imported. \n\n### Specifying Keys\n\nIn order to improve rendering speed, Ember will try to reuse the DOM elements\nwhere possible. Specifically, if the same item is present in the array both\nbefore and after the change, its DOM output will be reused.\n\nThe `key` option is used to tell Ember how to determine if the items in the\narray being iterated over with `{{#each}}` has changed between renders. By\ndefault the item's object identity is used.\n\nThis is usually sufficient, so in most cases, the `key` option is simply not\nneeded. However, in some rare cases, the objects' identities may change even\nthough they represent the same underlying data.\n\nFor example:\n\n```javascript\npeople.map(person => {\n return { ...person, type: 'developer' };\n});\n```\n\nIn this case, each time the `people` array is `map`-ed over, it will produce\nan new array with completely different objects between renders. In these cases,\nyou can help Ember determine how these objects related to each other with the\n`key` option:\n\n```handlebars\n<ul>\n {{#each @developers key=\"name\" as |person|}}\n <li>Hello, {{person.name}}!</li>\n {{/each}}\n</ul>\n```\n\nBy doing so, Ember will use the value of the property specified (`person.name`\nin the example) to find a \"match\" from the previous render. That is, if Ember\nhas previously seen an object from the `@developers` array with a matching\nname, its DOM elements will be re-used.\n\nThere are two special values for `key`:\n\n * `@index` - The index of the item in the array.\n * `@identity` - The item in the array itself.\n\n### {{else}} condition\n\n`{{#each}}` can have a matching `{{else}}`. The contents of this block will render\nif the collection is empty.\n\n```handlebars\n<ul>\n {{#each @developers as |person|}}\n <li>{{person.name}} is available!</li>\n {{else}}\n <li>Sorry, nobody is available for this task.</li>\n {{/each}}\n</ul>\n```",
6686
6695
  "itemtype": "method",
6687
6696
  "name": "each",
6688
6697
  "access": "public",
@@ -6692,8 +6701,8 @@
6692
6701
  },
6693
6702
  {
6694
6703
  "file": "packages/@ember/-internals/glimmer/lib/helpers/each-in.ts",
6695
- "line": 124,
6696
- "description": "The `{{each-in}}` helper loops over properties on an object.\n\nFor example, given this component definition:\n\n```app/components/developer-details.js\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class extends Component {\n @tracked developer = {\n \"name\": \"Shelly Sails\",\n \"age\": 42\n };\n}\n```\n\nThis template would display all properties on the `developer`\nobject in a list:\n\n```app/components/developer-details.hbs\n<ul>\n {{#each-in this.developer as |key value|}}\n <li>{{key}}: {{value}}</li>\n {{/each-in}}\n</ul>\n```\n\nOutputting their name and age:\n\n```html\n<ul>\n <li>name: Shelly Sails</li>\n <li>age: 42</li>\n</ul>\n```",
6704
+ "line": 126,
6705
+ "description": "The `{{#each-in}}` keyword loops over properties on an object.\n\nFor example, given this component definition:\n\n```app/components/developer-details.gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class extends Component {\n @tracked developer = {\n \"name\": \"Shelly Sails\",\n \"age\": 42\n };\n \n <template>\n <ul>\n {{#each-in this.developer as |key value|}}\n <li>{{key}}: {{value}}</li>\n {{/each-in}}\n </ul>\n </template>\n}\n```\n\nThis template would display all properties on the `developer`\nobject in a list, outputting their name and age:\n\n```html\n<ul>\n <li>name: Shelly Sails</li>\n <li>age: 42</li>\n</ul>\n```\n \n`#each-in` is a keyword and does not need to be imported.",
6697
6706
  "itemtype": "method",
6698
6707
  "name": "each-in",
6699
6708
  "access": "public",
@@ -6705,7 +6714,7 @@
6705
6714
  {
6706
6715
  "file": "packages/@ember/-internals/glimmer/lib/helpers/element.ts",
6707
6716
  "line": 84,
6708
- "description": "The `element` helper lets you dynamically set the tag name of an element.\n\n```handlebars\n{{#let (element @tagName) as |Tag|}}\n <Tag class=\"my-element\">Hello</Tag>\n{{/let}}\n```\n\nWhen `@tagName` is `\"h1\"`, this renders `<h1 class=\"my-element\">Hello</h1>`.\n\nWhen `@tagName` is an empty string `\"\"`, the block content is rendered without\na wrapping element.\n\nPassing `null`, `undefined`, or non-string values will throw an assertion error.\n\nChanging the tag name will tear down and recreate the element and its contents.",
6717
+ "description": "The `element` helper lets you dynamically set the tag name of an element.\n\n```handlebars\n{{#let (element @tagName) as |Tag|}}\n <Tag class=\"my-element\">Hello</Tag>\n{{/let}}\n```\n\nWhen `@tagName` is `\"h1\"`, this renders `<h1 class=\"my-element\">Hello</h1>`.\n\nWhen `@tagName` is an empty string `\"\"`, the block content is rendered without\na wrapping element.\n\nPassing `null`, `undefined`, or non-string values will throw an assertion error.\n\nChanging the tag name will tear down and recreate the element and its contents.\n \nThe `element` helper is built-in and does not need to be imported.",
6709
6718
  "itemtype": "method",
6710
6719
  "name": "element",
6711
6720
  "access": "public",
@@ -6716,7 +6725,7 @@
6716
6725
  {
6717
6726
  "file": "packages/@ember/-internals/glimmer/lib/helpers/fn.ts",
6718
6727
  "line": 5,
6719
- "description": "The `fn` helper allows you to ensure a function that you are passing off\nto another component, helper, or modifier has access to arguments that are\navailable in the template.\n\nFor example, if you have an `each` helper looping over a number of items, you\nmay need to pass a function that expects to receive the item as an argument\nto a component invoked within the loop. Here's how you could use the `fn`\nhelper to pass both the function and its arguments together:\n\n ```app/templates/components/items-listing.hbs\n{{#each @items as |item|}}\n <DisplayItem @item=item @select={{fn this.handleSelected item}} />\n{{/each}}\n```\n\n```app/components/items-list.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class ItemsList extends Component {\n @action\n handleSelected(item) {\n // ...snip...\n }\n}\n```\n\nIn this case the `display-item` component will receive a normal function\nthat it can invoke. When it invokes the function, the `handleSelected`\nfunction will receive the `item` and any arguments passed, thanks to the\n`fn` helper.\n\nLet's take look at what that means in a couple circumstances:\n\n- When invoked as `this.args.select()` the `handleSelected` function will\n receive the `item` from the loop as its first and only argument.\n- When invoked as `this.args.select('foo')` the `handleSelected` function\n will receive the `item` from the loop as its first argument and the\n string `'foo'` as its second argument.\n\nIn the example above, we used `@action` to ensure that `handleSelected` is\nproperly bound to the `items-list`, but let's explore what happens if we\nleft out `@action`:\n\n```app/components/items-list.js\nimport Component from '@glimmer/component';\n\nexport default class ItemsList extends Component {\n handleSelected(item) {\n // ...snip...\n }\n}\n```\n\nIn this example, when `handleSelected` is invoked inside the `display-item`\ncomponent, it will **not** have access to the component instance. In other\nwords, it will have no `this` context, so please make sure your functions\nare bound (via `@action` or other means) before passing into `fn`!\n\nSee also [partial application](https://en.wikipedia.org/wiki/Partial_application).",
6728
+ "description": "The `fn` helper allows you to ensure a function that you are passing off\nto another component, helper, or modifier has access to arguments that are\navailable in the template.\n\nFor example, if you have an `each` helper looping over a number of items, you\nmay need to pass a function that expects to receive the item as an argument\nto a component invoked within the loop. Here's how you could use the `fn`\nhelper to pass both the function and its arguments together:\n\n```app/components/items-listing.gjs\n<template>\n {{#each @items as |item|}}\n <DisplayItem @item=item @select={{fn this.handleSelected item}} />\n {{/each}}\n</template>\n```\n\n```app/components/items-list.gjs\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class ItemsList extends Component {\n @action\n handleSelected(item) {\n // ...snip...\n }\n}\n```\n\nIn this case the `DisplayItem` component will receive a normal function\nthat it can invoke. When it invokes the function, the `handleSelected`\nfunction will receive the `item` and any arguments passed, thanks to the\n`fn` helper.\n\nLet's take look at what that means in a couple circumstances:\n\n- When invoked as `this.args.select()` the `handleSelected` function will\n receive the `item` from the loop as its first and only argument.\n- When invoked as `this.args.select('foo')` the `handleSelected` function\n will receive the `item` from the loop as its first argument and the\n string `'foo'` as its second argument.\n\nIn the example above, we used `@action` to ensure that `handleSelected` is\nproperly bound to the `items-list`, but let's explore what happens if we\nleft out `@action`:\n\n```app/components/items-list.gjs\nimport Component from '@glimmer/component';\n\nexport default class ItemsList extends Component {\n handleSelected(item) {\n // ...snip...\n }\n}\n```\n\nIn this example, when `handleSelected` is invoked inside the `display-item`\ncomponent, it will **not** have access to the component instance. In other\nwords, it will have no `this` context, so please make sure your functions\nare bound (via `@action` or other means) before passing into `fn`!\n\nSee also [partial application](https://en.wikipedia.org/wiki/Partial_application).\n \n`fn` is built-in and does not need to be imported.",
6720
6729
  "itemtype": "method",
6721
6730
  "name": "fn",
6722
6731
  "access": "public",
@@ -6728,7 +6737,7 @@
6728
6737
  {
6729
6738
  "file": "packages/@ember/-internals/glimmer/lib/helpers/get.ts",
6730
6739
  "line": 5,
6731
- "description": "Dynamically look up a property on an object or an element in an array.\nThe second argument to `{{get}}` should have a string or number value,\nalthough it can be bound.\n\nFor example, these two usages are equivalent:\n\n```app/components/developer-detail.js\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class extends Component {\n @tracked developer = {\n name: \"Sandi Metz\",\n language: \"Ruby\"\n }\n}\n```\n\n```handlebars\n{{this.developer.name}}\n{{get this.developer \"name\"}}\n```\n\nIf there were several facts about a person, the `{{get}}` helper can dynamically\npick one:\n\n```app/templates/application.hbs\n<DeveloperDetail @factName=\"language\" />\n```\n\n```handlebars\n{{get this.developer @factName}}\n```\n\nFor a more complex example, this template would allow the user to switch\nbetween showing the user's name and preferred coding language with a click:\n\n```app/components/developer-detail.js\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class extends Component {\n @tracked developer = {\n name: \"Sandi Metz\",\n language: \"Ruby\"\n }\n\n @tracked currentFact = 'name'\n\n @action\n showFact(fact) {\n this.currentFact = fact;\n }\n}\n```\n\n```app/components/developer-detail.js\n{{get this.developer this.currentFact}}\n\n<button {{on 'click' (fn this.showFact \"name\")}}>Show name</button>\n<button {{on 'click' (fn this.showFact \"language\")}}>Show language</button>\n```\n\nThe `{{get}}` helper can also respect mutable values itself. For example:\n\n```app/components/developer-detail.js\n<Input @value={{mut (get this.person this.currentFact)}} />\n\n<button {{on 'click' (fn this.showFact \"name\")}}>Show name</button>\n<button {{on 'click' (fn this.showFact \"language\")}}>Show language</button>\n```\n\nWould allow the user to swap what fact is being displayed, and also edit\nthat fact via a two-way mutable binding.\n\nThe `{{get}}` helper can also be used for array element access via index.\nThis would display the value of the first element in the array `this.names`:\n\n```handlebars\n{{get this.names 0}}\n```\n\nArray element access also works with a dynamic second argument:\n\n```handlebars\n{{get this.names @index}}\n```",
6740
+ "description": "Dynamically look up a property on an object or an element in an array.\nThe second argument to `{{get}}` should have a string or number value,\nalthough it can be bound.\n\nFor example, these two usages are equivalent:\n\n```app/components/developer-detail.gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get } from '@ember/object';\n\nexport default class extends Component {\n @tracked developer = {\n name: \"Sandi Metz\",\n language: \"Ruby\"\n }\n \n <template>\n {{this.developer.name}}\n {{get this.developer \"name\"}}\n </template>\n}\n```\n \nIf there were several facts about a person, the `{{get}}` helper can dynamically\npick one:\n\n```app/templates/application.gjs\nimport DeveloperDetail from '../components/developer-detail';\n\n<template>\n <DeveloperDetail @factName=\"language\" />\n</template\n```\n\n```handlebars\n{{get this.developer @factName}}\n```\n\nFor a more complex example, this template would allow the user to switch\nbetween showing the user's name and preferred coding language with a click:\n\n```app/components/developer-detail.gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get } from '@ember/object';\n\nexport default class extends Component {\n @tracked developer = {\n name: \"Sandi Metz\",\n language: \"Ruby\"\n }\n\n @tracked currentFact = 'name'\n\n @action\n showFact(fact) {\n this.currentFact = fact;\n }\n \n <template>\n {{get this.developer this.currentFact}}\n\n <button {{on 'click' (fn this.showFact \"name\")}}>Show name</button>\n <button {{on 'click' (fn this.showFact \"language\")}}>Show language</button>\n </template>\n}\n```\n\nThe `{{get}}` helper can also be used for array element access via index.\nThis would display the value of the first element in the array `this.names`:\n\n```handlebars\n{{get this.names 0}}\n```\n\nArray element access also works with a dynamic second argument:\n\n```handlebars\n{{get this.names @index}}\n```",
6732
6741
  "access": "public",
6733
6742
  "tagname": "",
6734
6743
  "itemtype": "method",
@@ -6740,7 +6749,7 @@
6740
6749
  {
6741
6750
  "file": "packages/@ember/-internals/glimmer/lib/helpers/hash.ts",
6742
6751
  "line": 5,
6743
- "description": "Use the `{{hash}}` helper to create a hash to pass as an option to your\ncomponents. This is specially useful for contextual components where you can\njust yield a hash:\n\n```handlebars\n{{yield (hash\n name='Sarah'\n title=office\n)}}\n```\n\nWould result in an object such as:\n\n```js\n{ name: 'Sarah', title: this.get('office') }\n```\n\nWhere the `title` is bound to updates of the `office` property.\n\nNote that the hash is an empty object with no prototype chain, therefore\ncommon methods like `toString` are not available in the resulting hash.\nIf you need to use such a method, you can use the `call` or `apply`\napproach:\n\n```js\nfunction toString(obj) {\n return Object.prototype.toString.apply(obj);\n}\n```",
6752
+ "description": "Use the `{{hash}}` helper to create a hash to pass as an option to your\ncomponents. This is especially useful for contextual components where you can\njust yield a hash:\n\n```handlebars\n{{yield (hash\n name='Sarah'\n title=office\n)}}\n```\n\nWould result in an object such as:\n\n```js\n{ name: 'Sarah', title: this.get('office') }\n```\n\nWhere the `title` is bound to updates of the `office` property.\n\nNote that the hash is an empty object with no prototype chain, therefore\ncommon methods like `toString` are not available in the resulting hash.\nIf you need to use such a method, you can use the `call` or `apply`\napproach:\n\n```js\nfunction toString(obj) {\n return Object.prototype.toString.apply(obj);\n}\n```\n \nThe `hash` helper is a built-in keyword and does not need to be imported as of v7.1.0.",
6744
6753
  "itemtype": "method",
6745
6754
  "name": "hash",
6746
6755
  "params": [
@@ -6775,7 +6784,7 @@
6775
6784
  {
6776
6785
  "file": "packages/@ember/-internals/glimmer/lib/helpers/if-unless.ts",
6777
6786
  "line": 5,
6778
- "description": "The `if` helper allows you to conditionally render one of two branches,\ndepending on the \"truthiness\" of a property.\nFor example the following values are all falsey: `false`, `undefined`, `null`, `\"\"`, `0`, `NaN` or an empty array.\n\nThis helper has two forms, block and inline.\n\n## Block form\n\nYou can use the block form of `if` to conditionally render a section of the template.\n\nTo use it, pass the conditional value to the `if` helper,\nusing the block form to wrap the section of template you want to conditionally render.\nLike so:\n\n```app/templates/application.hbs\n<Weather />\n```\n\n```app/components/weather.hbs\n{{! will not render because greeting is undefined}}\n{{#if @isRaining}}\n Yes, grab an umbrella!\n{{/if}}\n```\n\nYou can also define what to show if the property is falsey by using\nthe `else` helper.\n\n```app/components/weather.hbs\n{{#if @isRaining}}\n Yes, grab an umbrella!\n{{else}}\n No, it's lovely outside!\n{{/if}}\n```\n\nYou are also able to combine `else` and `if` helpers to create more complex\nconditional logic.\n\nFor the following template:\n\n ```app/components/weather.hbs\n{{#if @isRaining}}\n Yes, grab an umbrella!\n{{else if @isCold}}\n Grab a coat, it's chilly!\n{{else}}\n No, it's lovely outside!\n{{/if}}\n```\n\nIf you call it by saying `isCold` is true:\n\n```app/templates/application.hbs\n<Weather @isCold={{true}} />\n```\n\nThen `Grab a coat, it's chilly!` will be rendered.\n\n## Inline form\n\nThe inline `if` helper conditionally renders a single property or string.\n\nIn this form, the `if` helper receives three arguments, the conditional value,\nthe value to render when truthy, and the value to render when falsey.\n\nFor example, if `useLongGreeting` is truthy, the following:\n\n```app/templates/application.hbs\n<Greeting @useLongGreeting={{true}} />\n```\n\n```app/components/greeting.hbs\n{{if @useLongGreeting \"Hello\" \"Hi\"}} Alex\n```\n\nWill render:\n\n```html\nHello Alex\n```\n\nOne detail to keep in mind is that both branches of the `if` helper will be evaluated,\nso if you have `{{if condition \"foo\" (expensive-operation \"bar\")`,\n`expensive-operation` will always calculate.",
6787
+ "description": "The `if` helper allows you to conditionally render one of two branches,\ndepending on the \"truthiness\" of a property.\nFor example the following values are all falsey: `false`, `undefined`, `null`, `\"\"`, `0`, `NaN` or an empty array.\n\nThis helper has two forms, block and inline.\n\n## Block form\n\nYou can use the block form of `if` to conditionally render a section of the template.\n\nTo use it, pass the conditional value to the `if` helper,\nusing the block form to wrap the section of template you want to conditionally render.\nLike so:\n\n```app/templates/application.gjs\nimport Weather from '../components/weather';\n \n<template>\n <Weather />\n</template>\n```\n\n```app/components/weather.gjs\n<template>\n {{! will not render because greeting is undefined}}\n {{#if @isRaining}}\n Yes, grab an umbrella!\n {{/if}}\n</template>\n```\n\nYou can also define what to show if the property is falsey by using\nthe `else` helper.\n\n```app/components/weather.gjs\n<template>\n {{#if @isRaining}}\n Yes, grab an umbrella!\n {{else}}\n No, it's lovely outside!\n {{/if}}\n</template>\n```\n\nYou are also able to combine `else` and `if` helpers to create more complex\nconditional logic.\n\nFor the following template:\n\n ```app/components/weather.gjs\n<template>\n {{#if @isRaining}}\n Yes, grab an umbrella!\n {{else if @isCold}}\n Grab a coat, it's chilly!\n {{else}}\n No, it's lovely outside!\n {{/if}}\n</template> \n```\n\nIf you call it by saying `isCold` is true:\n\n```app/templates/application.gjs\nimport Weather from '../components/weather';\n \n<template>\n <Weather @isCold={{true}} />\n</template>\n```\n\nThen `Grab a coat, it's chilly!` will be rendered.\n\n## Inline form\n\nThe inline `if` helper conditionally renders a single property or string.\n\nIn this form, the `if` helper receives three arguments, the conditional value,\nthe value to render when truthy, and the value to render when falsey.\n\nFor example, if `useLongGreeting` is truthy, the following:\n\n```app/templates/application.gjs\nimport Greeting from '../components/greeting';\n\n<template>\n <Greeting @useLongGreeting={{true}} />\n<template>\n```\n\n```app/components/greeting.gjs\n<template>\n {{if @useLongGreeting \"Hello\" \"Hi\"}} Alex\n<template>\n```\n\nWill render:\n\n```html\nHello Alex\n```\n\nOne detail to keep in mind is that both branches of the `if` helper will be evaluated,\nso if you have `{{if condition \"foo\" (expensive-operation \"bar\")`,\n`expensive-operation` will always calculate.\n \n`if` is built-in and does not need to be imported.",
6779
6788
  "itemtype": "method",
6780
6789
  "name": "if",
6781
6790
  "access": "public",
@@ -6785,8 +6794,8 @@
6785
6794
  },
6786
6795
  {
6787
6796
  "file": "packages/@ember/-internals/glimmer/lib/helpers/if-unless.ts",
6788
- "line": 97,
6789
- "description": "The `unless` helper is the inverse of the `if` helper. It displays if a value\nis falsey (\"not true\" or \"is false\"). Example values that will display with\n`unless`: `false`, `undefined`, `null`, `\"\"`, `0`, `NaN` or an empty array.\n\n## Inline form\n\nThe inline `unless` helper conditionally renders a single property or string.\nThis helper acts like a ternary operator. If the first property is falsy,\nthe second argument will be displayed, otherwise, the third argument will be\ndisplayed\n\nFor example, if you pass a falsey `useLongGreeting` to the `Greeting` component:\n\n```app/templates/application.hbs\n<Greeting @useLongGreeting={{false}} />\n```\n\n```app/components/greeting.hbs\n{{unless @useLongGreeting \"Hi\" \"Hello\"}} Ben\n```\n\nThen it will display:\n\n```html\nHi Ben\n```\n\n## Block form\n\nLike the `if` helper, the `unless` helper also has a block form.\n\nThe following will not render anything:\n\n```app/templates/application.hbs\n<Greeting />\n```\n\n```app/components/greeting.hbs\n{{#unless @greeting}}\n No greeting was found. Why not set one?\n{{/unless}}\n```\n\nYou can also use an `else` helper with the `unless` block. The\n`else` will display if the value is truthy.\n\nIf you have the following component:\n\n```app/components/logged-in.hbs\n{{#unless @userData}}\n Please login.\n{{else}}\n Welcome back!\n{{/unless}}\n```\n\nCalling it with a truthy `userData`:\n\n```app/templates/application.hbs\n<LoggedIn @userData={{hash username=\"Zoey\"}} />\n```\n\nWill render:\n\n```html\nWelcome back!\n```\n\nand calling it with a falsey `userData`:\n\n```app/templates/application.hbs\n<LoggedIn @userData={{false}} />\n```\n\nWill render:\n\n```html\nPlease login.\n```",
6797
+ "line": 119,
6798
+ "description": "The `unless` helper is the inverse of the `if` helper. It displays if a value\nis falsey (\"not true\" or \"is false\"). Example values that will display with\n`unless`: `false`, `undefined`, `null`, `\"\"`, `0`, `NaN` or an empty array.\n\n## Inline form\n\nThe inline `unless` helper conditionally renders a single property or string.\nThis helper acts like a ternary operator. If the first property is falsy,\nthe second argument will be displayed, otherwise, the third argument will be\ndisplayed\n\nFor example, if you pass a falsey `useLongGreeting` to the `Greeting` component:\n\n```app/templates/application.gjs\nimport Greeting from '../components/greeting';\n \n<template>\n <Greeting @useLongGreeting={{false}} />\n</template>\n```\n\n```app/components/greeting.gjs\n<template>\n {{unless @useLongGreeting \"Hi\" \"Hello\"}} Ben\n</template>\n```\n\nThen it will display:\n\n```html\nHi Ben\n```\n\n## Block form\n\nLike the `if` helper, the `unless` helper also has a block form.\n\nThe following will not render anything:\n\n```app/templates/application.gjs\nimport Greeting from '../components/greeting';\n \n<template>\n <Greeting />\n</template>\n```\n\n```app/components/greeting.gjs\n<template>\n {{#unless @greeting}}\n No greeting was found. Why not set one?\n {{/unless}}\n</template>\n```\n\nYou can also use an `else` helper with the `unless` block. The\n`else` will display if the value is truthy.\n\nIf you have the following component:\n\n```app/components/logged-in.gjs\n<template>\n {{#unless @userData}}\n Please login.\n {{else}}\n Welcome back!\n {{/unless}}\n</template>\n```\n\nCalling it with a truthy `userData`:\n\n```app/templates/application.gjs\nimport LoggedIn from '../components/logged-in';\n \n<template>\n <LoggedIn @userData={{hash username=\"Zoey\"}} />\n</template>\n```\n\nWill render:\n\n```html\nWelcome back!\n```\n\nand calling it with a falsey `userData`:\n\n```app/templates/application.gjs\nimport LoggedIn from '../components/logged-in';\n\n<template>\n <LoggedIn @userData={{false}} />\n</template>\n```\n\nWill render:\n\n```html\nPlease login.\n```\n \n`unless` is built-in and does not need to be imported.",
6790
6799
  "itemtype": "method",
6791
6800
  "name": "unless",
6792
6801
  "access": "public",
@@ -6827,7 +6836,7 @@
6827
6836
  {
6828
6837
  "file": "packages/@ember/-internals/glimmer/lib/helpers/mut.ts",
6829
6838
  "line": 9,
6830
- "description": "The `mut` helper lets you __clearly specify__ that a child `Component` can update the\n(mutable) value passed to it, which will __change the value of the parent component__.\n\nTo specify that a parameter is mutable, when invoking the child `Component`:\n\n```handlebars\n<MyChild @childClickCount={{fn (mut totalClicks)}} />\n```\n\n or\n\n```handlebars\n{{my-child childClickCount=(mut totalClicks)}}\n```\n\nThe child `Component` can then modify the parent's value just by modifying its own\nproperty:\n\n```javascript\n// my-child.js\nexport default class MyChild extends Component {\n click() {\n this.incrementProperty('childClickCount');\n }\n}\n```\n\nNote that for curly components (`{{my-component}}`) the bindings are already mutable,\nmaking the `mut` unnecessary.\n\nAdditionally, the `mut` helper can be combined with the `fn` helper to\nmutate a value. For example:\n\n```handlebars\n<MyChild @childClickCount={{this.totalClicks}} @click-count-change={{fn (mut totalClicks))}} />\n```\n\nor\n\n```handlebars\n{{my-child childClickCount=totalClicks click-count-change=(fn (mut totalClicks))}}\n```\n\nThe child `Component` would invoke the function with the new click value:\n\n```javascript\n// my-child.js\nexport default class MyChild extends Component {\n click() {\n this.get('click-count-change')(this.get('childClickCount') + 1);\n }\n}\n```\n\nThe `mut` helper changes the `totalClicks` value to what was provided as the `fn` argument.\n\nThe `mut` helper, when used with `fn`, will return a function that\nsets the value passed to `mut` to its first argument. As an example, we can create a\nbutton that increments a value passing the value directly to the `fn`:\n\n```handlebars\n{{! inc helper is not provided by Ember }}\n<button onclick={{fn (mut count) (inc count)}}>\n Increment count\n</button>\n```",
6839
+ "description": "The `mut` helper is a shortcut for updating for args.\n \nHowever, defining update functions on your backing class is preferable to using `mut`.\n \nMore directly: Don't use `mut`. \n\nThe `mut` helper, when used with `fn`, will return a function that\nsets the value passed to `mut` to its first argument. As an example, we can create a\nbutton that increments a value passing the value directly to the `fn`:\n\n```handlebars\n<MyChild @childClickCount={{this.totalClicks}} @clickCountChange={{fn (mut this.totalClicks)}} />\n```\n\nThe child `Component` would invoke the function with the new click count:\n\n```app/components/my-child.gjs\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n \nexport default class MyChild extends Component {\n @action\n update() {\n this.args.clickCountChange(this.args.childClickCount + 1);\n }\n \n <template>\n <button {{on \"click\" this.update}}>\n Click me!\n </button>\n </template>\n}\n```\n\nThe `mut` helper changes the `totalClicks` value to what was provided as the `fn` argument.",
6831
6840
  "itemtype": "method",
6832
6841
  "name": "mut",
6833
6842
  "params": [
@@ -6846,7 +6855,7 @@
6846
6855
  {
6847
6856
  "file": "packages/@ember/-internals/glimmer/lib/helpers/page-title.ts",
6848
6857
  "line": 5,
6849
- "description": "`page-title` allows you to set the title of any page in your application and\nappend additional titles for each route. For complete documentation, see\nhttps://github.com/ember-cli/ember-page-title.\n\n```handlebars\n{{page-title \"My Page Title\" }}\n```",
6858
+ "description": "`page-title` allows you to set the title of any page in your application and\nappend additional titles for each route. For complete documentation, see\nhttps://github.com/ember-cli/ember-page-title.\n\n```gjs\nimport pageTitle from 'ember-page-title/helpers/page-title';\n\n<template>\n {{pageTitle \"My Page Title\" }}\n</template>\n```",
6850
6859
  "itemtype": "method",
6851
6860
  "name": "page-title",
6852
6861
  "params": [
@@ -6864,7 +6873,7 @@
6864
6873
  {
6865
6874
  "file": "packages/@ember/-internals/glimmer/lib/helpers/readonly.ts",
6866
6875
  "line": 9,
6867
- "description": "The `readonly` helper let's you specify that a binding is one-way only,\ninstead of two-way.\nWhen you pass a `readonly` binding from an outer context (e.g. parent component),\nto to an inner context (e.g. child component), you are saying that changing that\nproperty in the inner context does not change the value in the outer context.\n\nTo specify that a binding is read-only, when invoking the child `Component`:\n\n```app/components/my-parent.js\nexport default class MyParent extends Component {\n totalClicks = 3;\n}\n```\n\n```app/templates/components/my-parent.hbs\n{{log totalClicks}} // -> 3\n<MyChild @childClickCount={{readonly totalClicks}} />\n```\n```\n{{my-child childClickCount=(readonly totalClicks)}}\n```\n\nNow, when you update `childClickCount`:\n\n```app/components/my-child.js\nexport default class MyChild extends Component {\n click() {\n this.incrementProperty('childClickCount');\n }\n}\n```\n\nThe value updates in the child component, but not the parent component:\n\n```app/templates/components/my-child.hbs\n{{log childClickCount}} //-> 4\n```\n\n```app/templates/components/my-parent.hbs\n{{log totalClicks}} //-> 3\n<MyChild @childClickCount={{readonly totalClicks}} />\n```\nor\n```app/templates/components/my-parent.hbs\n{{log totalClicks}} //-> 3\n{{my-child childClickCount=(readonly totalClicks)}}\n```\n\n### Objects and Arrays\n\nWhen passing a property that is a complex object (e.g. object, array) instead of a primitive object (e.g. number, string),\nonly the reference to the object is protected using the readonly helper.\nThis means that you can change properties of the object both on the parent component, as well as the child component.\nThe `readonly` binding behaves similar to the `const` keyword in JavaScript.\n\nLet's look at an example:\n\nFirst let's set up the parent component:\n\n```app/components/my-parent.js\nimport Component from '@ember/component';\n\nexport default class MyParent extends Component {\n clicks: null,\n\n init() {\n this._super(...arguments);\n this.set('clicks', { total: 3 });\n }\n}\n```\n\n```app/templates/components/my-parent.hbs\n{{log clicks.total}} //-> 3\n<MyChild @childClicks={{readonly clicks}} />\n```\n```app/templates/components/my-parent.hbs\n{{log clicks.total}} //-> 3\n{{my-child childClicks=(readonly clicks)}}\n```\n\nNow, if you update the `total` property of `childClicks`:\n\n```app/components/my-child.js\nimport Component from '@ember/component';\n\nexport default class MyChild extends Component {\n click() {\n this.get('clicks').incrementProperty('total');\n }\n}\n```\n\nYou will see the following happen:\n\n```app/templates/components/my-parent.hbs\n{{log clicks.total}} //-> 4\n<MyChild @childClicks={{readonly clicks}} />\n```\nor\n```app/templates/components/my-parent.hbs\n{{log clicks.total}} //-> 4\n{{my-child childClicks=(readonly clicks)}}\n```\n\n```app/templates/components/my-child.hbs\n{{log childClicks.total}} //-> 4\n```",
6876
+ "description": "The `readonly` helper let's you specify that a binding is one-way only,\ninstead of two-way.\n\nThis is a vestigial helper from the days of `@ember/component` and does not apply to\ncomponents extending from `@glimmer/component`.\n \nWhen you pass a `readonly` binding from an outer context (e.g. parent component),\nto to an inner context (e.g. child component), you are saying that changing that\nproperty in the inner context does not change the value in the outer context.\n\nTo specify that a binding is read-only, when invoking the child `Component`:\n\n```app/components/my-parent.js\nexport default class MyParent extends Component {\n totalClicks = 3;\n}\n```\n\nNow, when you update `childClickCount`:\n\n```app/components/my-child.js\nexport default class MyChild extends Component {\n click() {\n this.incrementProperty('childClickCount');\n }\n}\n```\n\nThe value updates in the child component, but not the parent component:\n\n```app/templates/components/my-child.hbs\n{{log childClickCount}} //-> 4\n```\n\n```app/templates/components/my-parent.hbs\n{{log totalClicks}} //-> 3\n<MyChild @childClickCount={{readonly totalClicks}} />\n```\nor\n```app/templates/components/my-parent.hbs\n{{log totalClicks}} //-> 3\n{{my-child childClickCount=(readonly totalClicks)}}\n```\n\n### Objects and Arrays\n\nWhen passing a property that is a complex object (e.g. object, array) instead of a primitive object (e.g. number, string),\nonly the reference to the object is protected using the readonly helper.\nThis means that you can change properties of the object both on the parent component, as well as the child component.\nThe `readonly` binding behaves similar to the `const` keyword in JavaScript.\n\nLet's look at an example:\n\nFirst let's set up the parent component:\n\n```app/components/my-parent.js\nimport Component from '@ember/component';\n\nexport default class MyParent extends Component {\n clicks: null,\n\n init() {\n this._super(...arguments);\n this.set('clicks', { total: 3 });\n }\n}\n```\n\n```app/templates/components/my-parent.hbs\n{{log clicks.total}} //-> 3\n<MyChild @childClicks={{readonly clicks}} />\n```\n```app/templates/components/my-parent.hbs\n{{log clicks.total}} //-> 3\n{{my-child childClicks=(readonly clicks)}}\n```\n\nNow, if you update the `total` property of `childClicks`:\n\n```app/components/my-child.js\nimport Component from '@ember/component';\n\nexport default class MyChild extends Component {\n click() {\n this.get('clicks').incrementProperty('total');\n }\n}\n```\n\nYou will see the following happen:\n\n```app/templates/components/my-parent.hbs\n{{log clicks.total}} //-> 4\n<MyChild @childClicks={{readonly clicks}} />\n```\nor\n```app/templates/components/my-parent.hbs\n{{log clicks.total}} //-> 4\n{{my-child childClicks=(readonly clicks)}}\n```\n\n```app/templates/components/my-child.hbs\n{{log childClicks.total}} //-> 4\n```",
6868
6877
  "itemtype": "method",
6869
6878
  "name": "readonly",
6870
6879
  "params": [
@@ -6906,7 +6915,7 @@
6906
6915
  {
6907
6916
  "file": "packages/@ember/-internals/glimmer/lib/modifiers/on.ts",
6908
6917
  "line": 5,
6909
- "description": "The `{{on}}` modifier lets you easily add event listeners (it uses\n[EventTarget.addEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)\ninternally).\n\nFor example, if you'd like to run a function on your component when a `<button>`\nin the components template is clicked you might do something like:\n\n```app/components/like-post.hbs\n<button {{on 'click' this.saveLike}}>Like this post!</button>\n```\n\n```app/components/like-post.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class LikePostComponent extends Component {\n @action\n saveLike() {\n // someone likes your post!\n // better send a request off to your server...\n }\n}\n```\n\n### Arguments\n\n`{{on}}` accepts two positional arguments, and a few named arguments.\n\nThe positional arguments are:\n\n- `event` -- the name to use when calling `addEventListener`\n- `callback` -- the function to be passed to `addEventListener`\n\nThe named arguments are:\n\n- capture -- a `true` value indicates that events of this type will be dispatched\n to the registered listener before being dispatched to any EventTarget beneath it\n in the DOM tree.\n- once -- indicates that the listener should be invoked at most once after being\n added. If true, the listener would be automatically removed when invoked.\n- passive -- if `true`, indicates that the function specified by listener will never\n call preventDefault(). If a passive listener does call preventDefault(), the user\n agent will do nothing other than generate a console warning. See\n [Improving scrolling performance with passive listeners](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Improving_scrolling_performance_with_passive_listeners)\n to learn more.\n\nThe callback function passed to `{{on}}` will receive any arguments that are passed\nto the event handler. Most commonly this would be the `event` itself.\n\nIf you would like to pass additional arguments to the function you should use\nthe `{{fn}}` helper.\n\nFor example, in our example case above if you'd like to pass in the post that\nwas being liked when the button is clicked you could do something like:\n\n```app/components/like-post.hbs\n<button {{on 'click' (fn this.saveLike @post)}}>Like this post!</button>\n```\n\nIn this case, the `saveLike` function will receive two arguments: the click event\nand the value of `@post`.\n\n### Function Context\n\nIn the example above, we used `@action` to ensure that `likePost` is\nproperly bound to the `items-list`, but let's explore what happens if we\nleft out `@action`:\n\n```app/components/like-post.js\nimport Component from '@glimmer/component';\n\nexport default class LikePostComponent extends Component {\n saveLike() {\n // ...snip...\n }\n}\n```\n\nIn this example, when the button is clicked `saveLike` will be invoked,\nit will **not** have access to the component instance. In other\nwords, it will have no `this` context, so please make sure your functions\nare bound (via `@action` or other means) before passing into `on`!",
6918
+ "description": "The `{{on}}` modifier lets you easily add event listeners (it uses\n[EventTarget.addEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)\ninternally).\n\nFor example, if you'd like to run a function on your component when a `<button>`\nin the components template is clicked you might do something like:\n\n```app/components/like-post.gjs\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class LikePost extends Component {\n @action\n saveLike() {\n // someone likes your post!\n // better send a request off to your server...\n }\n \n <template>\n <button {{on 'click' this.saveLike}}>Like this post!</button>\n </template>\n}\n```\n\n### Arguments\n\n`{{on}}` accepts two positional arguments, and a few named arguments.\n\nThe positional arguments are:\n\n- `event` -- the name to use when calling `addEventListener`\n- `callback` -- the function to be passed to `addEventListener`\n\nThe named arguments are:\n\n- capture -- a `true` value indicates that events of this type will be dispatched\n to the registered listener before being dispatched to any EventTarget beneath it\n in the DOM tree.\n- once -- indicates that the listener should be invoked at most once after being\n added. If true, the listener would be automatically removed when invoked.\n- passive -- if `true`, indicates that the function specified by listener will never\n call preventDefault(). If a passive listener does call preventDefault(), the user\n agent will do nothing other than generate a console warning. See\n [Improving scrolling performance with passive listeners](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Improving_scrolling_performance_with_passive_listeners)\n to learn more.\n\nThe callback function passed to `{{on}}` will receive any arguments that are passed\nto the event handler. Most commonly this would be the `event` itself.\n\nIf you would like to pass additional arguments to the function you should use\nthe `{{fn}}` helper.\n\nFor example, in our example case above if you'd like to pass in the post that\nwas being liked when the button is clicked you could do something like:\n\n```hbs\n<button {{on 'click' (fn this.saveLike @post)}}>Like this post!</button>\n```\n\nIn this case, the `saveLike` function will receive two arguments: the click event\nand the value of `@post`.\n\n### Function Context\n\nIn the example above, we used `@action` to ensure that `likePost` is\nproperly bound to the `LikePost` Component, but let's explore what happens if we\nleft out `@action`:\n\n```app/components/like-post.gjs\nimport Component from '@glimmer/component';\n\nexport default class LikePost extends Component {\n saveLike() {\n // ...snip...\n }\n}\n```\n\nIn this example, when the button is clicked `saveLike` will be invoked,\nit will **not** have access to the component instance. In other\nwords, it will have no `this` context, so please make sure your functions\nare bound (via `@action` or other means) before passing into `on`!",
6910
6919
  "itemtype": "method",
6911
6920
  "name": "on",
6912
6921
  "access": "public",
@@ -6918,7 +6927,7 @@
6918
6927
  {
6919
6928
  "file": "packages/@ember/-internals/glimmer/lib/syntax/in-element.ts",
6920
6929
  "line": 5,
6921
- "description": "The `in-element` helper renders its block content outside of the regular flow,\ninto a DOM element given by its `destinationElement` positional argument.\n\nCommon use cases - often referred to as \"portals\" or \"wormholes\" - are rendering\ndropdowns, modals or tooltips close to the root of the page to bypass CSS overflow\nrules, or to render content to parts of the page that are outside of the control\nof the Ember app itself (e.g. embedded into a static or server rendered HTML page).\n\n```handlebars\n{{#in-element this.destinationElement}}\n <div>Some content</div>\n{{/in-element}}\n```\n\n### Arguments\n\n`{{in-element}}` requires a single positional argument:\n\n- `destinationElement` -- the DOM element to render into. It must exist at the time\nof rendering.\n\nIt also supports an optional named argument:\n\n- `insertBefore` -- by default the DOM element's content is replaced when used as\n`destinationElement`. Passing `null` to `insertBefore` changes the behaviour to\nappend the block content to the end of any existing content. Any other value than\n`null` is currently not supported.\n\n For example:\n\n ```handlebars\n {{#in-element this.destinationElement insertBefore=null}}\n <div>Some content</div>\n {{/in-element}}\n ```",
6930
+ "description": "The `in-element` helper renders its block content outside of the regular flow,\ninto a DOM element given by its `destinationElement` positional argument.\n\nCommon use cases - often referred to as \"portals\" or \"wormholes\" - are rendering\ndropdowns, modals or tooltips close to the root of the page to bypass CSS overflow\nrules, or to render content to parts of the page that are outside of the control\nof the Ember app itself (e.g. embedded into a static or server rendered HTML page).\n\n```handlebars\n{{#in-element this.destinationElement}}\n <div>Some content</div>\n{{/in-element}}\n```\n\n### Arguments\n\n`{{in-element}}` requires a single positional argument:\n\n- `destinationElement` -- the DOM element to render into. It must exist at the time\nof rendering.\n\nIt also supports an optional named argument:\n\n- `insertBefore` -- by default the DOM element's content is replaced when used as\n`destinationElement`. Passing `null` to `insertBefore` changes the behaviour to\nappend the block content to the end of any existing content. Any other value than\n`null` is currently not supported.\n\n For example:\n\n ```handlebars\n {{#in-element this.destinationElement insertBefore=null}}\n <div>Some content</div>\n {{/in-element}}\n ```\n\n`in-element` is built-in and does not need to be imported.",
6922
6931
  "itemtype": "method",
6923
6932
  "name": "in-element",
6924
6933
  "access": "public",
@@ -6929,7 +6938,7 @@
6929
6938
  {
6930
6939
  "file": "packages/@ember/-internals/glimmer/lib/syntax/let.ts",
6931
6940
  "line": 5,
6932
- "description": "The `let` helper receives one or more positional arguments and yields\nthem out as block params.\n\nThis allows the developer to introduce shorter names for certain computations\nin the template.\n\nThis is especially useful if you are passing properties to a component\nthat receives a lot of options and you want to clean up the invocation.\n\nFor the following example, the template receives a `post` object with\n`content` and `title` properties.\n\nWe are going to call the `my-post` component, passing a title which is\nthe title of the post suffixed with the name of the blog, the content\nof the post, and a series of options defined in-place.\n\n```handlebars\n{{#let\n (concat post.title ' | The Ember.js Blog')\n post.content\n (hash\n theme=\"high-contrast\"\n enableComments=true\n )\n as |title content options|\n}}\n <MyPost @title={{title}} @content={{content}} @options={{options}} />\n{{/let}}\n ```\n or\n ```handlebars\n{{#let\n (concat post.title ' | The Ember.js Blog')\n post.content\n (hash\n theme=\"high-contrast\"\n enableComments=true\n )\n as |title content options|\n}}\n {{my-post title=title content=content options=options}}\n{{/let}}\n ```",
6941
+ "description": "The `let` helper receives one or more positional arguments and yields\nthem out as block params.\n\nThis allows the developer to introduce shorter names for certain computations\nin the template.\n\nThis is especially useful if you are passing properties to a component\nthat receives a lot of options and you want to clean up the invocation.\n\nFor the following example, the template receives a `post` object with\n`content` and `title` properties.\n\nWe are going to call the `my-post` component, passing a title which is\nthe title of the post suffixed with the name of the blog, the content\nof the post, and a series of options defined in-place.\n\n```handlebars\n{{#let\n (concat post.title ' | The Ember.js Blog')\n post.content\n (hash\n theme=\"high-contrast\"\n enableComments=true\n )\n as |title content options|\n}}\n <MyPost @title={{title}} @content={{content}} @options={{options}} />\n{{/let}}\n ```\n\n `let` is built-in and does not need to be imported.",
6933
6942
  "itemtype": "method",
6934
6943
  "name": "let",
6935
6944
  "access": "public",
@@ -6940,7 +6949,7 @@
6940
6949
  {
6941
6950
  "file": "packages/@ember/-internals/glimmer/lib/syntax/mount.ts",
6942
6951
  "line": 17,
6943
- "description": "The `{{mount}}` helper lets you embed a routeless engine in a template.\nMounting an engine will cause an instance to be booted and its `application`\ntemplate to be rendered.\n\nFor example, the following template mounts the `ember-chat` engine:\n\n```handlebars\n{{! application.hbs }}\n{{mount \"ember-chat\"}}\n```\n\nAdditionally, you can also pass in a `model` argument that will be\nset as the engines model. This can be an existing object:\n\n```\n<div>\n {{mount 'admin' model=userSettings}}\n</div>\n```\n\nOr an inline `hash`, and you can even pass components:\n\n```\n<div>\n <h1>Application template!</h1>\n {{mount 'admin' model=(hash\n title='Secret Admin'\n signInButton=(component 'sign-in-button')\n )}}\n</div>\n```",
6952
+ "description": "The `{{mount}}` helper lets you embed a routeless engine in a template.\nMounting an engine will cause an instance to be booted and its `application`\ntemplate to be rendered.\n\nFor example, the following template mounts the `ember-chat` engine:\n\n```app/templates/application.gjs\n{{mount \"ember-chat\"}}\n```\n\nAdditionally, you can also pass in a `model` argument that will be\nset as the engines model. This can be an existing object:\n\n```hbs\n<div>\n {{mount 'admin' model=userSettings}}\n</div>\n```\n\nOr an inline `hash`, and you can even pass components:\n\n```gjs\nimport SignInButton from '../components/sign-in-button';\n<template>\n <div>\n <h1>Application template!</h1>\n {{mount 'admin' model=(hash\n title='Secret Admin'\n signInButton=SignInButton\n )}}\n </div>\n</template>\n```\n \n `mount` is built-in and does not need to be imported.",
6944
6953
  "itemtype": "method",
6945
6954
  "name": "mount",
6946
6955
  "params": [
@@ -6964,7 +6973,7 @@
6964
6973
  {
6965
6974
  "file": "packages/@ember/-internals/glimmer/lib/syntax/outlet.ts",
6966
6975
  "line": 28,
6967
- "description": "The `{{outlet}}` helper lets you specify where a child route will render in\nyour template. An important use of the `{{outlet}}` helper is in your\napplication's `application.hbs` file:\n\n```app/templates/application.hbs\n<MyHeader />\n\n<div class=\"my-dynamic-content\">\n <!-- this content will change based on the current route, which depends on the current URL -->\n {{outlet}}\n</div>\n\n<MyFooter />\n```\n\nSee the [routing guide](https://guides.emberjs.com/release/routing/rendering-a-template/) for more\ninformation on how your `route` interacts with the `{{outlet}}` helper.\nNote: Your content __will not render__ if there isn't an `{{outlet}}` for it.",
6976
+ "description": "The `{{outlet}}` helper lets you specify where a child route will render in\nyour template. An important use of the `{{outlet}}` helper is in your\napplication's `application.gjs` file:\n\n```app/templates/application.gjs\nimport MyHeader from '../components/my-header';\nimport MyFooter from '../components/my-footer';\n \n<template>\n <MyHeader />\n\n <div class=\"my-dynamic-content\">\n <!-- this content will change based on the current route, which depends on the current URL -->\n {{outlet}}\n </div>\n\n <MyFooter />\n</template>\n```\n\nSee the [routing guide](https://guides.emberjs.com/release/routing/rendering-a-template/) for more\ninformation on how your `route` interacts with the `{{outlet}}` helper.\nNote: Your content __will not render__ if there isn't an `{{outlet}}` for it.\n\n`outlet` is built-in and does not need to be imported.",
6968
6977
  "itemtype": "method",
6969
6978
  "name": "outlet",
6970
6979
  "access": "public",
@@ -7349,7 +7358,7 @@
7349
7358
  },
7350
7359
  {
7351
7360
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7352
- "line": 832,
7361
+ "line": 838,
7353
7362
  "description": "Standard CSS class names to apply to the view's outer element. This\nproperty automatically inherits any class names defined by the view's\nsuperclasses as well.",
7354
7363
  "itemtype": "property",
7355
7364
  "name": "classNames",
@@ -7362,7 +7371,7 @@
7362
7371
  },
7363
7372
  {
7364
7373
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7365
- "line": 844,
7374
+ "line": 850,
7366
7375
  "description": "A list of properties of the view to apply as class names. If the property\nis a string value, the value of that string will be applied as a class\nname.\n\n```javascript\n// Applies the 'high' class to the view element\nimport Component from '@ember/component';\nComponent.extend({\n classNameBindings: ['priority'],\n priority: 'high'\n});\n```\n\nIf the value of the property is a Boolean, the name of that property is\nadded as a dasherized class name.\n\n```javascript\n// Applies the 'is-urgent' class to the view element\nimport Component from '@ember/component';\nComponent.extend({\n classNameBindings: ['isUrgent'],\n isUrgent: true\n});\n```\n\nIf you would prefer to use a custom value instead of the dasherized\nproperty name, you can pass a binding like this:\n\n```javascript\n// Applies the 'urgent' class to the view element\nimport Component from '@ember/component';\nComponent.extend({\n classNameBindings: ['isUrgent:urgent'],\n isUrgent: true\n});\n```\n\nIf you would like to specify a class that should only be added when the\nproperty is false, you can declare a binding like this:\n\n```javascript\n// Applies the 'disabled' class to the view element\nimport Component from '@ember/component';\nComponent.extend({\n classNameBindings: ['isEnabled::disabled'],\n isEnabled: false\n});\n```\n\nThis list of properties is inherited from the component's superclasses as well.",
7367
7376
  "itemtype": "property",
7368
7377
  "name": "classNameBindings",
@@ -7375,7 +7384,7 @@
7375
7384
  },
7376
7385
  {
7377
7386
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7378
- "line": 1051,
7387
+ "line": 1057,
7379
7388
  "description": "Normally, Ember's component model is \"write-only\". The component takes a\nbunch of attributes that it got passed in, and uses them to render its\ntemplate.\n\nOne nice thing about this model is that if you try to set a value to the\nsame thing as last time, Ember (through HTMLBars) will avoid doing any\nwork on the DOM.\n\nThis is not just a performance optimization. If an attribute has not\nchanged, it is important not to clobber the element's \"hidden state\".\nFor example, if you set an input's `value` to the same value as before,\nit will clobber selection state and cursor position. In other words,\nsetting an attribute is not **always** idempotent.\n\nThis method provides a way to read an element's attribute and also\nupdate the last value Ember knows about at the same time. This makes\nsetting an attribute idempotent.\n\nIn particular, what this means is that if you get an `<input>` element's\n`value` attribute and then re-render the template with the same value,\nit will avoid clobbering the cursor and selection position.\nSince most attribute sets are idempotent in the browser, you typically\ncan get away with reading attributes using jQuery, but the most reliable\nway to do so is through this method.",
7380
7389
  "itemtype": "method",
7381
7390
  "name": "readDOMAttr",
@@ -7396,7 +7405,7 @@
7396
7405
  },
7397
7406
  {
7398
7407
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7399
- "line": 1109,
7408
+ "line": 1115,
7400
7409
  "description": "A list of properties of the view to apply as attributes. If the property\nis a string value, the value of that string will be applied as the value\nfor an attribute of the property's name.\n\nThe following example creates a tag like `<div priority=\"high\" />`.\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n attributeBindings: ['priority'],\n priority: 'high'\n });\n```\n\nIf the value of the property is a Boolean, the attribute is treated as\nan HTML Boolean attribute. It will be present if the property is `true`\nand omitted if the property is `false`.\n\nThe following example creates markup like `<div visible />`.\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n attributeBindings: ['visible'],\n visible: true\n });\n```\n\nIf you would prefer to use a custom value instead of the property name,\nyou can create the same markup as the last example with a binding like\nthis:\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n attributeBindings: ['isVisible:visible'],\n isVisible: true\n });\n```\n\nThis list of attributes is inherited from the component's superclasses,\nas well.",
7401
7410
  "itemtype": "property",
7402
7411
  "name": "attributeBindings",
@@ -7409,7 +7418,7 @@
7409
7418
  },
7410
7419
  {
7411
7420
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7412
- "line": 1163,
7421
+ "line": 1169,
7413
7422
  "description": "Enables components to take a list of parameters as arguments.\n For example, a component that takes two parameters with the names\n `name` and `age`:\n\n ```app/components/my-component.js\n import Component from '@ember/component';\n\n export default class MyComponent extends Component {\n static positionalParams = ['name', 'age'];\n }\n ```\n\n It can then be invoked like this:\n\n ```hbs\n {{my-component \"John\" 38}}\n ```\n\n The parameters can be referred to just like named parameters:\n\n ```hbs\n Name: {{name}}, Age: {{age}}.\n ```\n\n Using a string instead of an array allows for an arbitrary number of\n parameters:\n\n ```app/components/my-component.js\n import Component from '@ember/component';\n\n export default class MyComponent extends Component {\n static positionalParams = 'names';\n }\n ```\n\n It can then be invoked like this:\n\n ```hbs\n {{my-component \"John\" \"Michael\" \"Scott\"}}\n ```\n The parameters can then be referred to by enumerating over the list:\n\n ```hbs\n {{#each names as |name|}}{{name}}{{/each}}\n ```",
7414
7423
  "static": 1,
7415
7424
  "access": "public",
@@ -7422,7 +7431,7 @@
7422
7431
  },
7423
7432
  {
7424
7433
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7425
- "line": 1268,
7434
+ "line": 1274,
7426
7435
  "description": "Layout can be used to wrap content in a component.",
7427
7436
  "itemtype": "property",
7428
7437
  "name": "layout",
@@ -7434,7 +7443,7 @@
7434
7443
  },
7435
7444
  {
7436
7445
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7437
- "line": 1276,
7446
+ "line": 1282,
7438
7447
  "description": "The name of the layout to lookup if no layout is provided.\nBy default `Component` will lookup a template with this name in\n`Ember.TEMPLATES` (a shared global object).",
7439
7448
  "itemtype": "property",
7440
7449
  "name": "layoutName",
@@ -7447,7 +7456,7 @@
7447
7456
  },
7448
7457
  {
7449
7458
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7450
- "line": 1287,
7459
+ "line": 1293,
7451
7460
  "description": "The WAI-ARIA role of the control represented by this view. For example, a\n button may have a role of type 'button', or a pane may have a role of\n type 'alertdialog'. This property is used by assistive software to help\n visually challenged users navigate rich web applications.\n\n The full list of valid WAI-ARIA roles is available at:\n [https://www.w3.org/TR/wai-aria/#roles_categorization](https://www.w3.org/TR/wai-aria/#roles_categorization)",
7452
7461
  "itemtype": "property",
7453
7462
  "name": "ariaRole",
@@ -7460,7 +7469,7 @@
7460
7469
  },
7461
7470
  {
7462
7471
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7463
- "line": 1303,
7472
+ "line": 1309,
7464
7473
  "description": "Array of child views. You should never edit this array directly.",
7465
7474
  "itemtype": "property",
7466
7475
  "name": "childViews",
@@ -7473,7 +7482,7 @@
7473
7482
  },
7474
7483
  {
7475
7484
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7476
- "line": 1343,
7485
+ "line": 1349,
7477
7486
  "description": "Return the nearest ancestor that is an instance of the provided\nclass or mixin.",
7478
7487
  "itemtype": "method",
7479
7488
  "name": "nearestOfType",
@@ -7496,7 +7505,7 @@
7496
7505
  },
7497
7506
  {
7498
7507
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7499
- "line": 1367,
7508
+ "line": 1373,
7500
7509
  "description": "Return the nearest ancestor that has a given property.",
7501
7510
  "itemtype": "method",
7502
7511
  "name": "nearestWithProperty",
@@ -7519,7 +7528,7 @@
7519
7528
  },
7520
7529
  {
7521
7530
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7522
- "line": 1389,
7531
+ "line": 1395,
7523
7532
  "description": "Renders the view again. This will work regardless of whether the\nview is already in the DOM or not. If the view is in the DOM, the\nrendering process will be deferred to give bindings a chance\nto synchronize.\n\nIf children were added during the rendering process using `appendChild`,\n`rerender` will remove them, because they will be added again\nif needed by the next `render`.\n\nIn general, if the display of your view changes, you should modify\nthe DOM element directly instead of manually calling `rerender`, which can\nbe slow.",
7524
7533
  "itemtype": "method",
7525
7534
  "name": "rerender",
@@ -7530,7 +7539,7 @@
7530
7539
  },
7531
7540
  {
7532
7541
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7533
- "line": 1414,
7542
+ "line": 1420,
7534
7543
  "description": "Returns the current DOM element for the view.",
7535
7544
  "itemtype": "property",
7536
7545
  "name": "element",
@@ -7542,7 +7551,7 @@
7542
7551
  },
7543
7552
  {
7544
7553
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7545
- "line": 1427,
7554
+ "line": 1433,
7546
7555
  "description": "Appends the view's element to the specified parent element.\n\nNote that this method just schedules the view to be appended; the DOM\nelement will not be appended to the given element until all bindings have\nfinished synchronizing.\n\nThis is not typically a function that you will need to call directly when\nbuilding your application. If you do need to use `appendTo`, be sure that\nthe target element you are providing is associated with an `Application`\nand does not have an ancestor element that is associated with an Ember view.",
7547
7556
  "itemtype": "method",
7548
7557
  "name": "appendTo",
@@ -7564,7 +7573,7 @@
7564
7573
  },
7565
7574
  {
7566
7575
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7567
- "line": 1492,
7576
+ "line": 1498,
7568
7577
  "description": "Appends the view's element to the document body. If the view does\nnot have an HTML representation yet\nthe element will be generated automatically.\n\nIf your application uses the `rootElement` property, you must append\nthe view within that element. Rendering views outside of the `rootElement`\nis not supported.\n\nNote that this method just schedules the view to be appended; the DOM\nelement will not be appended to the document body until all bindings have\nfinished synchronizing.",
7569
7578
  "itemtype": "method",
7570
7579
  "name": "append",
@@ -7579,7 +7588,7 @@
7579
7588
  },
7580
7589
  {
7581
7590
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7582
- "line": 1513,
7591
+ "line": 1519,
7583
7592
  "description": "The HTML `id` of the view's element in the DOM. You can provide this\nvalue yourself but it must be unique (just as in HTML):\n\n```handlebars\n{{my-component elementId=\"a-really-cool-id\"}}\n```\n\nIf not manually set a default value will be provided by the framework.\n\nOnce rendered an element's `elementId` is considered immutable and you\nshould never change it. If you need to compute a dynamic value for the\n`elementId`, you should do this when the component or element is being\ninstantiated:\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n init() {\n this._super(...arguments);\n let index = this.get('index');\n this.set('elementId', 'component-id' + index);\n }\n });\n```",
7584
7593
  "itemtype": "property",
7585
7594
  "name": "elementId",
@@ -7591,7 +7600,7 @@
7591
7600
  },
7592
7601
  {
7593
7602
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7594
- "line": 1546,
7603
+ "line": 1552,
7595
7604
  "description": "Called when a view is going to insert an element into the DOM.",
7596
7605
  "itemtype": "event",
7597
7606
  "name": "willInsertElement",
@@ -7602,7 +7611,7 @@
7602
7611
  },
7603
7612
  {
7604
7613
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7605
- "line": 1556,
7614
+ "line": 1562,
7606
7615
  "description": "Called when the element of the view has been inserted into the DOM.\nOverride this function to do any set up that requires an element\nin the document body.\n\nWhen a view has children, didInsertElement will be called on the\nchild view(s) first and on itself afterwards.",
7607
7616
  "itemtype": "event",
7608
7617
  "name": "didInsertElement",
@@ -7613,7 +7622,7 @@
7613
7622
  },
7614
7623
  {
7615
7624
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7616
- "line": 1571,
7625
+ "line": 1577,
7617
7626
  "description": "Called when the view is about to rerender, but before anything has\nbeen torn down. This is a good opportunity to tear down any manual\nobservers you have installed based on the DOM state",
7618
7627
  "itemtype": "event",
7619
7628
  "name": "willClearRender",
@@ -7624,7 +7633,7 @@
7624
7633
  },
7625
7634
  {
7626
7635
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7627
- "line": 1583,
7636
+ "line": 1589,
7628
7637
  "description": "You must call `destroy` on a view to destroy the view (and all of its\nchild views). This will remove the view from any parent node, then make\nsure that the DOM element managed by the view can be released by the\nmemory manager.",
7629
7638
  "itemtype": "method",
7630
7639
  "name": "destroy",
@@ -7635,7 +7644,7 @@
7635
7644
  },
7636
7645
  {
7637
7646
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7638
- "line": 1598,
7647
+ "line": 1604,
7639
7648
  "description": "Called when the element of the view is going to be destroyed. Override\nthis function to do any teardown that requires an element, like removing\nevent listeners.\n\nPlease note: any property changes made during this event will have no\neffect on object observers.",
7640
7649
  "itemtype": "event",
7641
7650
  "name": "willDestroyElement",
@@ -7646,7 +7655,7 @@
7646
7655
  },
7647
7656
  {
7648
7657
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7649
- "line": 1613,
7658
+ "line": 1619,
7650
7659
  "description": "Called after the element of the view is destroyed.",
7651
7660
  "itemtype": "event",
7652
7661
  "name": "willDestroyElement",
@@ -7657,7 +7666,7 @@
7657
7666
  },
7658
7667
  {
7659
7668
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7660
- "line": 1623,
7669
+ "line": 1629,
7661
7670
  "description": "Called when the parentView property has changed.",
7662
7671
  "itemtype": "event",
7663
7672
  "name": "parentViewDidChange",
@@ -7668,7 +7677,7 @@
7668
7677
  },
7669
7678
  {
7670
7679
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7671
- "line": 1637,
7680
+ "line": 1643,
7672
7681
  "description": "Tag name for the view's outer element. The tag name is only used when an\nelement is first created. If you change the `tagName` for an element, you\nmust destroy and recreate the view element.\n\nBy default, the render buffer will use a `<div>` tag for views.\n\nIf the tagName is `''`, the view will be tagless, with no outer element.\nComponent properties that depend on the presence of an outer element, such\nas `classNameBindings` and `attributeBindings`, do not work with tagless\ncomponents. Tagless components cannot implement methods to handle events,\nand their `element` property has a `null` value.",
7673
7682
  "itemtype": "property",
7674
7683
  "name": "tagName",
@@ -7681,7 +7690,7 @@
7681
7690
  },
7682
7691
  {
7683
7692
  "file": "packages/@ember/-internals/glimmer/lib/component.ts",
7684
- "line": 1664,
7693
+ "line": 1670,
7685
7694
  "description": "Handle events from `EventDispatcher`",
7686
7695
  "itemtype": "method",
7687
7696
  "name": "handleEvent",
@@ -7705,7 +7714,7 @@
7705
7714
  {
7706
7715
  "file": "packages/@ember/-internals/glimmer/lib/glimmer-tracking-docs.ts",
7707
7716
  "line": 22,
7708
- "description": "Marks a property as tracked. By default, values that are rendered in Ember app\ntemplates are _static_, meaning that updates to them won't cause the\napplication to rerender. Marking a property as tracked means that when that\nproperty changes, any templates that used that property, directly or\nindirectly, will rerender. For instance, consider this component:\n\n```handlebars\n<div>Count: {{this.count}}</div>\n<div>Times Ten: {{this.timesTen}}</div>\n<div>\n <button {{on \"click\" this.plusOne}}>\n Plus One\n </button>\n</div>\n```\n\n```javascript\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nexport default class CounterComponent extends Component {\n @tracked count = 0;\n\n get timesTen() {\n return this.count * 10;\n }\n\n @action\n plusOne() {\n this.count += 1;\n }\n}\n```\n\nBoth the `{{this.count}}` and the `{{this.timesTen}}` properties in the\ntemplate will update whenever the button is clicked. Any tracked properties\nthat are used in any way to calculate a value that is used in the template\nwill cause a rerender when updated - this includes through method calls and\nother means:\n\n```javascript\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nclass Entry {\n @tracked name;\n @tracked phoneNumber;\n\n constructor(name, phoneNumber) {\n this.name = name;\n this.phoneNumber = phoneNumber;\n }\n}\n\nexport default class PhoneBookComponent extends Component {\n entries = [\n new Entry('Pizza Palace', 5551234),\n new Entry('1st Street Cleaners', 5554321),\n new Entry('Plants R Us', 5552468),\n ];\n\n // Any usage of this property will update whenever any of the names in the\n // entries arrays are updated\n get names() {\n return this.entries.map(e => e.name);\n }\n\n // Any usage of this property will update whenever any of the numbers in the\n // entries arrays are updated\n get numbers() {\n return this.getFormattedNumbers();\n }\n\n getFormattedNumbers() {\n return this.entries\n .map(e => e.phoneNumber)\n .map(number => {\n let numberString = '' + number;\n\n return numberString.slice(0, 3) + '-' + numberString.slice(3);\n });\n }\n}\n```\n\nIt's important to note that setting tracked properties will always trigger an\nupdate, even if the property is set to the same value as it was before.\n\n```js\nlet entry = new Entry('Pizza Palace', 5551234);\n\n// if entry was used when rendering, this would cause a rerender, even though\n// the name is being set to the same value as it was before\nentry.name = entry.name;\n```\n\n`tracked` can also be used with the classic Ember object model in a similar\nmanner to classic computed properties:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nconst Entry = EmberObject.extend({\n name: tracked(),\n phoneNumber: tracked()\n});\n```\n\nOften this is unnecessary, but to ensure robust auto-tracking behavior it is\nadvisable to mark tracked state appropriately wherever possible.\n\nThis form of `tracked` also accepts an optional configuration object\ncontaining either an initial `value` or an `initializer` function (but not\nboth).\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nconst Entry = EmberObject.extend({\n name: tracked({ value: 'Zoey' }),\n favoriteSongs: tracked({\n initializer: () => ['Raspberry Beret', 'Time After Time']\n })\n});\n```",
7717
+ "description": "Marks a property as tracked. By default, values that are rendered in Ember app\ntemplates are _static_, meaning that updates to them won't cause the\napplication to rerender. Marking a property as tracked means that when that\nproperty changes, any templates that used that property, directly or\nindirectly, will rerender. For instance, consider this component:\n\n```gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nexport default class CounterComponent extends Component {\n @tracked count = 0;\n\n get timesTen() {\n return this.count * 10;\n }\n\n @action\n plusOne() {\n this.count += 1;\n }\n \n <template>\n <div>Count: {{this.count}}</div>\n <div>Times Ten: {{this.timesTen}}</div>\n <div>\n <button {{on \"click\" this.plusOne}}>\n Plus One\n </button>\n </div>\n </template>\n}\n```\n\nBoth the `{{this.count}}` and the `{{this.timesTen}}` properties in the\ntemplate will update whenever the button is clicked. Any tracked properties\nthat are used in any way to calculate a value that is used in the template\nwill cause a rerender when updated - this includes through method calls and\nother means:\n\n```gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nclass Entry {\n @tracked name;\n @tracked phoneNumber;\n\n constructor(name, phoneNumber) {\n this.name = name;\n this.phoneNumber = phoneNumber;\n }\n}\n\nexport default class PhoneBookComponent extends Component {\n entries = [\n new Entry('Pizza Palace', 5551234),\n new Entry('1st Street Cleaners', 5554321),\n new Entry('Plants R Us', 5552468),\n ];\n\n // Any usage of this property will update whenever any of the names in the\n // entries arrays are updated\n get names() {\n return this.entries.map(e => e.name);\n }\n\n // Any usage of this property will update whenever any of the numbers in the\n // entries arrays are updated\n get numbers() {\n return this.getFormattedNumbers();\n }\n\n getFormattedNumbers() {\n return this.entries\n .map(e => e.phoneNumber)\n .map(number => {\n let numberString = '' + number;\n\n return numberString.slice(0, 3) + '-' + numberString.slice(3);\n });\n }\n}\n```\n\nIt's important to note that setting tracked properties will always trigger an\nupdate, even if the property is set to the same value as it was before.\n\n```js\nlet entry = new Entry('Pizza Palace', 5551234);\n\n// if entry was used when rendering, this would cause a rerender, even though\n// the name is being set to the same value as it was before\nentry.name = entry.name;\n```\n\n`tracked` can also be used with the classic Ember object model in a similar\nmanner to classic computed properties:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nconst Entry = EmberObject.extend({\n name: tracked(),\n phoneNumber: tracked()\n});\n```\n\nOften this is unnecessary, but to ensure robust auto-tracking behavior it is\nadvisable to mark tracked state appropriately wherever possible.\n\nThis form of `tracked` also accepts an optional configuration object\ncontaining either an initial `value` or an `initializer` function (but not\nboth).\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nconst Entry = EmberObject.extend({\n name: tracked({ value: 'Zoey' }),\n favoriteSongs: tracked({\n initializer: () => ['Raspberry Beret', 'Time After Time']\n })\n});\n```",
7709
7718
  "itemtype": "method",
7710
7719
  "name": "tracked",
7711
7720
  "static": 1,
@@ -7728,7 +7737,7 @@
7728
7737
  },
7729
7738
  {
7730
7739
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
7731
- "line": 105,
7740
+ "line": 117,
7732
7741
  "description": "Override this function when writing a class-based helper.",
7733
7742
  "itemtype": "method",
7734
7743
  "name": "compute",
@@ -7752,13 +7761,13 @@
7752
7761
  },
7753
7762
  {
7754
7763
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
7755
- "line": 123,
7764
+ "line": 135,
7756
7765
  "class": "Helper",
7757
7766
  "module": "@ember/component"
7758
7767
  },
7759
7768
  {
7760
7769
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
7761
- "line": 142,
7770
+ "line": 154,
7762
7771
  "description": "On a class-based helper, it may be useful to force a recomputation of that\nhelpers value. This is akin to `rerender` on a component.\n\nIn most cases, `recompute` is not needed because accessing tracked\nproperties in `compute` will automatically re-run the helper when\nthose properties change. Use `recompute` only when you need to\ntrigger a recomputation imperatively, for example in response to an\nexternal event:\n\n```app/helpers/current-time.js\nimport Helper from '@ember/component/helper';\n\nexport default class CurrentTimeHelper extends Helper {\n interval = null;\n\n compute() {\n return new Date().toLocaleTimeString();\n }\n\n constructor() {\n super(...arguments);\n this.interval = setInterval(() => this.recompute(), 1000);\n }\n\n willDestroy() {\n super.willDestroy();\n clearInterval(this.interval);\n }\n}\n```",
7763
7772
  "itemtype": "method",
7764
7773
  "name": "recompute",
@@ -7770,7 +7779,7 @@
7770
7779
  },
7771
7780
  {
7772
7781
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
7773
- "line": 313,
7782
+ "line": 325,
7774
7783
  "description": "The type of a function-based helper.",
7775
7784
  "note": "This is *not* user-constructible: it is exported only so that the type\n returned by the `helper` function can be named (and indeed can be exported\n like `export default helper(...)` safely).",
7776
7785
  "class": "Helper",
@@ -7778,7 +7787,7 @@
7778
7787
  },
7779
7788
  {
7780
7789
  "file": "packages/@ember/-internals/glimmer/lib/helper.ts",
7781
- "line": 344,
7790
+ "line": 356,
7782
7791
  "description": "In many cases it is not necessary to use the full `Helper` class.\nThe `helper` method create pure-function helpers without instances.\nFor example:\n\n```app/helpers/format-currency.js\nimport { helper } from '@ember/component/helper';\n\nexport default helper(function([cents], {currency}) {\n return `${currency}${cents * 0.01}`;\n});\n```",
7783
7792
  "static": 1,
7784
7793
  "params": [
@@ -7798,21 +7807,21 @@
7798
7807
  },
7799
7808
  {
7800
7809
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7801
- "line": 546,
7810
+ "line": 552,
7802
7811
  "description": "Destroys the render tree and removes all rendered content from the element rendered into",
7803
7812
  "class": "@ember/renderer",
7804
7813
  "module": "@ember/renderer"
7805
7814
  },
7806
7815
  {
7807
7816
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7808
- "line": 554,
7817
+ "line": 560,
7809
7818
  "description": "The GlimmerRenderResult from the last render. Used to get positional\ninformation (firstNode) when a re-render replaces the content, so\nthat the new content is placed at the same DOM position.",
7810
7819
  "class": "@ember/renderer",
7811
7820
  "module": "@ember/renderer"
7812
7821
  },
7813
7822
  {
7814
7823
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7815
- "line": 570,
7824
+ "line": 576,
7816
7825
  "description": "Render a component into a DOM element.",
7817
7826
  "itemtype": "method",
7818
7827
  "name": "renderComponent",
@@ -7861,84 +7870,84 @@
7861
7870
  },
7862
7871
  {
7863
7872
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7864
- "line": 585,
7873
+ "line": 591,
7865
7874
  "description": "The component definition to render.\n\nAny component that has had its manager registered is valid.\nFor the component-types that ship with ember, manager registration\ndoes not need to be worried about.",
7866
7875
  "class": "@ember/renderer",
7867
7876
  "module": "@ember/renderer"
7868
7877
  },
7869
7878
  {
7870
7879
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7871
- "line": 599,
7880
+ "line": 605,
7872
7881
  "description": "The element to render the component in to.",
7873
7882
  "class": "@ember/renderer",
7874
7883
  "module": "@ember/renderer"
7875
7884
  },
7876
7885
  {
7877
7886
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7878
- "line": 604,
7887
+ "line": 610,
7879
7888
  "description": "Optional owner. Defaults to `{}`, can be any object, but will need to implement the [Owner](https://api.emberjs.com/ember/release/classes/Owner) API for components within this render tree to access services.",
7880
7889
  "class": "@ember/renderer",
7881
7890
  "module": "@ember/renderer"
7882
7891
  },
7883
7892
  {
7884
7893
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7885
- "line": 608,
7894
+ "line": 614,
7886
7895
  "description": "Optionally configure the rendering environment",
7887
7896
  "class": "@ember/renderer",
7888
7897
  "module": "@ember/renderer"
7889
7898
  },
7890
7899
  {
7891
7900
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7892
- "line": 612,
7901
+ "line": 618,
7893
7902
  "description": "When false, modifiers will not run.",
7894
7903
  "class": "@ember/renderer",
7895
7904
  "module": "@ember/renderer"
7896
7905
  },
7897
7906
  {
7898
7907
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7899
- "line": 616,
7908
+ "line": 622,
7900
7909
  "description": "All other options are forwarded to the underlying renderer.\n(its API is currently private and out of scope for this RFC,\n so passing additional things here is also considered private API)",
7901
7910
  "class": "@ember/renderer",
7902
7911
  "module": "@ember/renderer"
7903
7912
  },
7904
7913
  {
7905
7914
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7906
- "line": 624,
7915
+ "line": 630,
7907
7916
  "description": "These args get passed to the rendered component\n\nIf your args are reactive, re-rendering will happen automatically.",
7908
7917
  "class": "@ember/renderer",
7909
7918
  "module": "@ember/renderer"
7910
7919
  },
7911
7920
  {
7912
7921
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7913
- "line": 633,
7922
+ "line": 639,
7914
7923
  "description": "SAFETY: we should figure out what we need out of a `document` and narrow the API.\n this exercise should also end up beginning to define what we need for CLI rendering (or to other outputs)",
7915
7924
  "class": "@ember/renderer",
7916
7925
  "module": "@ember/renderer"
7917
7926
  },
7918
7927
  {
7919
7928
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7920
- "line": 654,
7929
+ "line": 660,
7921
7930
  "description": "Replace all contents, if we've rendered multiple times.\n\nhttps://github.com/emberjs/rfcs/pull/1099/files#diff-2b962105b9083ca84579cdc957f27f49407440f3c5078083fa369ec18cc46da8R365\n\nWe could later add an option to not do this behavior\n\nNOTE: destruction is async",
7922
7931
  "class": "@ember/renderer",
7923
7932
  "module": "@ember/renderer"
7924
7933
  },
7925
7934
  {
7926
7935
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7927
- "line": 665,
7936
+ "line": 671,
7928
7937
  "description": "We can only replace the inner HTML the first time.\nBecause destruction is async, it won't be safe to\ndo this again, and we'll have to rely on the above destroy.",
7929
7938
  "class": "@ember/renderer",
7930
7939
  "module": "@ember/renderer"
7931
7940
  },
7932
7941
  {
7933
7942
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7934
- "line": 674,
7943
+ "line": 680,
7935
7944
  "description": "If there's an existing render result with valid bounds, use its\nfirstNode as the nextSibling so that new content is inserted at\nthe same DOM position. This ensures stable ordering when multiple\nrenderComponent calls target the same element and one is re-invoked\n(e.g., due to tracked dependency changes).\n\nThe old content's DOM nodes are still present (destruction is async),\nso firstNode() is a valid position reference. The new content is placed\nBEFORE the old content. When the old content is eventually destroyed\n(async clear of bounds), the new content remains in the correct position.",
7936
7945
  "class": "@ember/renderer",
7937
7946
  "module": "@ember/renderer"
7938
7947
  },
7939
7948
  {
7940
7949
  "file": "packages/@ember/-internals/glimmer/lib/renderer.ts",
7941
- "line": 742,
7950
+ "line": 748,
7942
7951
  "description": "SAFETY: are there consequences for being looser with *this* owner?\n the public API for `owner` is kinda `Partial<InternalOwner>`\n aka: implement only what you need.\n But for actual ember apps, you *need* to implement everything\n an app needs (which will actually change and become less over time)",
7943
7952
  "class": "@ember/renderer",
7944
7953
  "module": "@ember/renderer"
@@ -7998,8 +8007,8 @@
7998
8007
  },
7999
8008
  {
8000
8009
  "file": "packages/@ember/-internals/glimmer/index.ts",
8001
- "line": 92,
8002
- "description": "`{{yield}}` denotes an area of a template that will be rendered inside\nof another template.\n\n### Use with `Component`\n\nWhen designing components `{{yield}}` is used to denote where, inside the component's\ntemplate, an optional block passed to the component should render:\n\n```app/templates/application.hbs\n<LabeledTextfield @value={{@model.name}}>\n First name:\n</LabeledTextfield>\n```\n\n```app/components/labeled-textfield.hbs\n<label>\n {{yield}} <Input @value={{@value}} />\n</label>\n```\n\nResult:\n\n```html\n<label>\n First name: <input type=\"text\" />\n</label>\n```\n\nAdditionally you can `yield` properties into the context for use by the consumer:\n\n```app/templates/application.hbs\n<LabeledTextfield @value={{@model.validation}} @validator={{this.firstNameValidator}} as |validationError|>\n {{#if validationError}}\n <p class=\"error\">{{validationError}}</p>\n {{/if}}\n First name:\n</LabeledTextfield>\n```\n\n```app/components/labeled-textfield.hbs\n<label>\n {{yield this.validationError}} <Input @value={{@value}} />\n</label>\n```\n\nResult:\n\n```html\n<label>\n <p class=\"error\">First Name must be at least 3 characters long.</p>\n First name: <input type=\"text\" />\n</label>\n```\n\n`yield` can also be used with the `hash` helper:\n\n```app/templates/application.hbs\n<DateRanges @value={{@model.date}} as |range|>\n Start date: {{range.start}}\n End date: {{range.end}}\n</DateRanges>\n```\n\n```app/components/date-ranges.hbs\n<div>\n {{yield (hash start=@value.start end=@value.end)}}\n</div>\n```\n\nResult:\n\n```html\n<div>\n Start date: July 1st\n End date: July 30th\n</div>\n```\n\nMultiple values can be yielded as block params:\n\n```app/templates/application.hbs\n<Banner @value={{@model}} as |title subtitle body|>\n <h1>{{title}}</h1>\n <h2>{{subtitle}}</h2>\n {{body}}\n</Banner>\n```\n\n```app/components/banner.hbs\n<div>\n {{yield \"Hello title\" \"hello subtitle\" \"body text\"}}\n</div>\n```\n\nResult:\n\n```html\n<div>\n <h1>Hello title</h1>\n <h2>hello subtitle</h2>\n body text\n</div>\n```\n\nHowever, it is preferred to use the hash helper, as this can prevent breaking changes to your component and also simplify the api for the component.\n\nMultiple components can be yielded with the `hash` and `component` helper:\n\n```app/templates/application.hbs\n<Banner @value={{@model}} as |banner|>\n <banner.Title>Banner title</banner.Title>\n <banner.Subtitle>Banner subtitle</banner.Subtitle>\n <banner.Body>A load of body text</banner.Body>\n</Banner>\n```\n\n```app/components/banner.js\nimport Title from './banner/title';\nimport Subtitle from './banner/subtitle';\nimport Body from './banner/body';\n\nexport default class Banner extends Component {\n Title = Title;\n Subtitle = Subtitle;\n Body = Body;\n}\n```\n\n```app/components/banner.hbs\n<div>\n {{yield (hash\n Title=this.Title\n Subtitle=this.Subtitle\n Body=(component this.Body defaultArg=\"some value\")\n )}}\n</div>\n```\n\nResult:\n\n```html\n<div>\n <h1>Banner title</h1>\n <h2>Banner subtitle</h2>\n A load of body text\n</div>\n```\n\nA benefit of using this pattern is that the user of the component can change the order the components are displayed.\n\n```app/templates/application.hbs\n<Banner @value={{@model}} as |banner|>\n <banner.Subtitle>Banner subtitle</banner.Subtitle>\n <banner.Title>Banner title</banner.Title>\n <banner.Body>A load of body text</banner.Body>\n</Banner>\n```\n\nResult:\n\n```html\n<div>\n <h2>Banner subtitle</h2>\n <h1>Banner title</h1>\n A load of body text\n</div>\n```\n\nAnother benefit to using `yield` with the `hash` and `component` helper\nis you can pass attributes and arguments to these components:\n\n```app/templates/application.hbs\n<Banner @value={{@model}} as |banner|>\n <banner.Subtitle class=\"mb-1\">Banner subtitle</banner.Subtitle>\n <banner.Title @variant=\"loud\">Banner title</banner.Title>\n <banner.Body>A load of body text</banner.Body>\n</Banner>\n```\n\n```app/components/banner/subtitle.hbs\n{{!-- note the use of ..attributes --}}\n<h2 ...attributes>\n {{yield}}\n</h2>\n```\n\n```app/components/banner/title.hbs\n{{#if (eq @variant \"loud\")}}\n <h1 class=\"loud\">{{yield}}</h1>\n{{else}}\n <h1 class=\"quiet\">{{yield}}</h1>\n{{/if}}\n```\n\nResult:\n\n```html\n<div>\n <h2 class=\"mb-1\">Banner subtitle</h2>\n <h1 class=\"loud\">Banner title</h1>\n A load of body text\n</div>\n```",
8010
+ "line": 109,
8011
+ "description": "`{{yield}}` denotes an area of a template that will be rendered inside\nof another template.\n\n### Use with `Component`\n\nWhen designing components `{{yield}}` is used to denote where, inside the component's\ntemplate, an optional block passed to the component should render:\n\n```app/templates/application.gjs\nimport LabeledTextField from '../components/labeled-textfield';\n \n<template>\n <LabeledTextField @value={{@model.name}}>\n First name:\n </LabeledTextField>\n</template>\n```\n\n```app/components/labeled-textfield.gjs\nimport { Input } from '@ember/component';\n \n<template>\n <label>\n {{yield}} <Input @value={{@value}} />\n </label>\n</template>\n```\n\nResult:\n\n```html\n<label>\n First name: <input type=\"text\" />\n</label>\n```\n\nAdditionally you can `yield` properties into the context for use by the consumer:\n\n```app/templates/application.gjs\nimport Component from '@glimmer/component';\nimport LabeledTextField from '../components/labeled-textfield';\n \nexport default class Application extends Component {\n firstNameValidator = (value) => {\n // validates\n }\n \n <template>\n <LabeledTextField @value={{@model.validation}} @validator={{this.firstNameValidator}} as |validationError|>\n {{#if validationError}}\n <p class=\"error\">{{validationError}}</p>\n {{/if}}\n First name:\n </LabeledTextField>\n </template>\n}\n```\n\n```app/components/labeled-textfield.gjs\nimport { Input } from '@ember/component';\n \n<template>\n <label>\n {{yield this.validationError}} <Input @value={{@value}} />\n </label>\n</template>\n```\n\nResult:\n\n```html\n<label>\n <p class=\"error\">First Name must be at least 3 characters long.</p>\n First name: <input type=\"text\" />\n</label>\n```\n\n`yield` can also be used with the `hash` helper:\n\n```app/templates/application.gjs\nimport DateRanges from '../components/date-ranges';\n \n<template>\n <DateRanges @value={{@model.date}} as |range|>\n Start date: {{range.start}}\n End date: {{range.end}}\n </DateRanges>\n</template>\n```\n\n```app/components/date-ranges.gjs\n<template>\n <div>\n {{yield (hash start=@value.start end=@value.end)}}\n </div>\n</template>\n```\n\nResult:\n\n```html\n<div>\n Start date: July 1st\n End date: July 30th\n</div>\n```\n\nMultiple values can be yielded as block params:\n \n```app/templates/application.gjs\nimport Banner from '../components/banner';\n \n<template>\n <Banner @value={{@model}} as |title subtitle body|>\n <h1>{{title}}</h1>\n <h2>{{subtitle}}</h2>\n {{body}}\n </Banner>\n</template>\n```\n\n```app/components/banner.gjs\n<template>\n <div>\n {{yield \"Hello title\" \"hello subtitle\" \"body text\"}}\n </div>\n</template>\n```\n\nResult:\n\n```html\n<div>\n <h1>Hello title</h1>\n <h2>hello subtitle</h2>\n body text\n</div>\n```\n\nHowever, it is preferred to use the hash helper, as this can prevent breaking changes to your component and also simplify the api for the component.\n\nMultiple components can be yielded with the `hash` and `component` helper:\n\n```app/templates/application.gjs\nimport Banner from '../components/banner';\n\n<template>\n <Banner @value={{@model}} as |banner|>\n <banner.Title>Banner title</banner.Title>\n <banner.Subtitle>Banner subtitle</banner.Subtitle>\n <banner.Body>A load of body text</banner.Body>\n </Banner>\n</template>\n```\n\n```app/components/banner.gjs\nimport Title from './banner/title';\nimport Subtitle from './banner/subtitle';\nimport Body from './banner/body';\n\nexport default class Banner extends Component {\n Title = Title;\n Subtitle = Subtitle;\n Body = Body;\n \n <template>\n <div>\n {{yield (hash\n Title=this.Title\n Subtitle=this.Subtitle\n Body=(component this.Body defaultArg=\"some value\")\n )}}\n </div>\n </template>\n}\n```\n\nResult:\n\n```html\n<div>\n <h1>Banner title</h1>\n <h2>Banner subtitle</h2>\n A load of body text\n</div>\n```\n\nA benefit of using this pattern is that the user of the component can change the order the components are displayed.\n\n```app/templates/application.gjs\nimport Banner from '../components/banner';\n\n<template>\n <Banner @value={{@model}} as |banner|>\n <banner.Subtitle>Banner subtitle</banner.Subtitle>\n <banner.Title>Banner title</banner.Title>\n <banner.Body>A load of body text</banner.Body>\n </Banner>\n</template>\n```\n\nResult:\n\n```html\n<div>\n <h2>Banner subtitle</h2>\n <h1>Banner title</h1>\n A load of body text\n</div>\n```\n\nAnother benefit to using `yield` with the `hash` and `component` helper\nis you can pass attributes and arguments to these components:\n\n```app/templates/application.gjs\nimport Banner from '../components/banner';\n\n<template>\n <Banner @value={{@model}} as |banner|>\n <banner.Subtitle class=\"mb-1\">Banner subtitle</banner.Subtitle>\n <banner.Title @variant=\"loud\">Banner title</banner.Title>\n <banner.Body>A load of body text</banner.Body>\n </Banner>\n</template>\n```\n\n```app/components/banner/subtitle.gjs\n{{!-- note the use of ..attributes --}}\n<h2 ...attributes>\n {{yield}}\n</h2>\n```\n\n```app/components/banner/title.gjs\n<template>\n {{#if (eq @variant \"loud\")}}\n <h1 class=\"loud\">{{yield}}</h1>\n {{else}}\n <h1 class=\"quiet\">{{yield}}</h1>\n {{/if}}\n</template>\n```\n\nResult:\n\n```html\n<div>\n <h2 class=\"mb-1\">Banner subtitle</h2>\n <h1 class=\"loud\">Banner title</h1>\n A load of body text\n</div>\n```",
8003
8012
  "itemtype": "method",
8004
8013
  "name": "yield",
8005
8014
  "params": [
@@ -8020,8 +8029,8 @@
8020
8029
  },
8021
8030
  {
8022
8031
  "file": "packages/@ember/-internals/glimmer/index.ts",
8023
- "line": 304,
8024
- "description": "`{{(has-block)}}` indicates if the component was invoked with a block.\n\nThis component is invoked with a block:\n\n```handlebars\n{{#my-component}}\n Hi Jen!\n{{/my-component}}\n```\n\nThis component is invoked without a block:\n\n```handlebars\n{{my-component}}\n```\n\nUsing angle bracket invocation, this looks like:\n\n```html\n<MyComponent>Hi Jen!</MyComponent> {{! with a block}}\n```\n\n```html\n<MyComponent/> {{! without a block}}\n```\n\nThis is useful when you want to create a component that can optionally take a block\nand then render a default template when it is not invoked with a block.\n\n```app/templates/components/my-component.hbs\n{{#if (has-block)}}\n Welcome {{yield}}, we are happy you're here!\n{{else}}\n Hey you! You're great!\n{{/if}}\n```",
8032
+ "line": 370,
8033
+ "description": "`{{(has-block)}}` indicates if the component was invoked with a block.\n\nThis component is invoked with a block:\n\n```handlebars\n<MyComponent>\n Hi Jen!\n</MyComponent>\n```\n\nThis component is invoked without a block:\n\n```handlebars\n<MyComponent />\n```\n\nThis is useful when you want to create a component that can optionally take a block\nand then render a default template when it is not invoked with a block.\n\n```app/components/my-component.gjs\n<template>\n {{#if (has-block)}}\n Welcome {{yield}}, we are happy you're here!\n {{else}}\n Hey you! You're great!\n {{/if}}\n</template>\n```",
8025
8034
  "itemtype": "method",
8026
8035
  "name": "has-block",
8027
8036
  "params": [
@@ -8042,8 +8051,8 @@
8042
8051
  },
8043
8052
  {
8044
8053
  "file": "packages/@ember/-internals/glimmer/index.ts",
8045
- "line": 349,
8046
- "description": "`{{(has-block-params)}}` indicates if the component was invoked with block params.\n\nThis component is invoked with block params:\n\n```handlebars\n{{#my-component as |favoriteFlavor|}}\n Hi Jen!\n{{/my-component}}\n```\n\nThis component is invoked without block params:\n\n```handlebars\n{{#my-component}}\n Hi Jenn!\n{{/my-component}}\n```\n\nWith angle bracket syntax, block params look like this:\n\n ```handlebars\n<MyComponent as |favoriteFlavor|>\n Hi Jen!\n</MyComponent>\n```\n\nAnd without block params:\n\n```handlebars\n<MyComponent>\n Hi Jen!\n</MyComponent>\n```\n\nThis is useful when you want to create a component that can render itself\ndifferently when it is not invoked with block params.\n\n```app/templates/components/my-component.hbs\n{{#if (has-block-params)}}\n Welcome {{yield this.favoriteFlavor}}, we're happy you're here and hope you\n enjoy your favorite ice cream flavor.\n{{else}}\n Welcome {{yield}}, we're happy you're here, but we're unsure what\n flavor ice cream you would enjoy.\n{{/if}}\n```",
8054
+ "line": 407,
8055
+ "description": "`{{(has-block-params)}}` indicates if the component was invoked with block params.\n\nThis component is invoked with block params:\n \n```handlebars\n<MyComponent as |favoriteFlavor|>\nHi Jen!\n</MyComponent>\n```\n\nAnd without block params:\n\n```handlebars\n<MyComponent>\nHi Jen!\n</MyComponent>\n```\n\nThis is useful when you want to create a component that can render itself\ndifferently when it is not invoked with block params.\n\n```app/components/my-component.gjs\n<template>\n {{#if (has-block-params)}}\n Welcome {{yield this.favoriteFlavor}}, we're happy you're here and hope you\n enjoy your favorite ice cream flavor.\n {{else}}\n Welcome {{yield}}, we're happy you're here, but we're unsure what\n flavor ice cream you would enjoy.\n {{/if}}\n</template>\n```",
8047
8056
  "itemtype": "method",
8048
8057
  "name": "has-block-params",
8049
8058
  "params": [
@@ -8064,7 +8073,7 @@
8064
8073
  },
8065
8074
  {
8066
8075
  "file": "packages/@ember/-internals/glimmer/index.ts",
8067
- "line": 404,
8076
+ "line": 448,
8068
8077
  "description": "Execute the `debugger` statement in the current template's context.\n\n```handlebars\n{{debugger}}\n```\n\nWhen using the debugger helper you will have access to a `get` function. This\nfunction retrieves values available in the context of the template.\nFor example, if you're wondering why a value `{{foo}}` isn't rendering as\nexpected within a template, you could place a `{{debugger}}` statement and,\nwhen the `debugger;` breakpoint is hit, you can attempt to retrieve this value:\n\n```\n> get('foo')\n```\n\n`get` is also aware of keywords. So in this situation\n\n```handlebars\n{{#each this.items as |item|}}\n {{debugger}}\n{{/each}}\n```\n\nYou'll be able to get values from the current item:\n\n```\n> get('item.name')\n```\n\nYou can also access the context of the view to make sure it is the object that\nyou expect:\n\n```\n> context\n```",
8069
8078
  "itemtype": "method",
8070
8079
  "name": "debugger",
@@ -10875,54 +10884,54 @@
10875
10884
  "namespace": "ApplicationInstance"
10876
10885
  },
10877
10886
  {
10878
- "file": "packages/@ember/array/lib/make-array.ts",
10879
- "line": 5,
10880
- "description": "Forces the passed object to be part of an array. If the object is already\nan array, it will return the object. Otherwise, it will add the object to\nan array. If object is `null` or `undefined`, it will return an empty array.\n\n```javascript\nimport { makeArray } from '@ember/array';\nimport ArrayProxy from '@ember/array/proxy';\n\nmakeArray(); // []\nmakeArray(null); // []\nmakeArray(undefined); // []\nmakeArray('lindsay'); // ['lindsay']\nmakeArray([1, 2, 42]); // [1, 2, 42]\n\nlet proxy = ArrayProxy.create({ content: [] });\n\nmakeArray(proxy) === proxy; // false\n```",
10887
+ "file": "packages/@ember/array/lib/is-array.ts",
10888
+ "line": 11,
10889
+ "description": "Returns true if the passed object is an array or Array-like.\n\nObjects are considered Array-like if any of the following are true:\n\n - the object is a native Array\n - the object has an objectAt property\n - the object is an Object, and has a length property\n\nUnlike `typeOf` this method returns true even if the passed object is\nnot formally an array but appears to be array-like (i.e. implements `Array`)\n\n```javascript\nimport { isArray } from '@ember/array';\nimport ArrayProxy from '@ember/array/proxy';\n\nisArray(); // false\nisArray([]); // true\nisArray(ArrayProxy.create({ content: [] })); // true\n```",
10881
10890
  "itemtype": "method",
10882
- "name": "makeArray",
10891
+ "name": "isArray",
10883
10892
  "static": 1,
10884
10893
  "params": [
10885
10894
  {
10886
10895
  "name": "obj",
10887
- "description": "the object",
10896
+ "description": "The object to test",
10888
10897
  "type": "Object"
10889
10898
  }
10890
10899
  ],
10891
10900
  "return": {
10892
- "description": "",
10893
- "type": "Array"
10901
+ "description": "true if the passed object is an array or Array-like",
10902
+ "type": "Boolean"
10894
10903
  },
10895
- "access": "private",
10904
+ "access": "public",
10896
10905
  "tagname": "",
10897
10906
  "class": "@ember/array",
10898
10907
  "module": "@ember/array"
10899
10908
  },
10900
10909
  {
10901
- "file": "packages/@ember/array/index.ts",
10902
- "line": 140,
10903
- "description": "Returns true if the passed object is an array or Array-like.\n\nObjects are considered Array-like if any of the following are true:\n\n - the object is a native Array\n - the object has an objectAt property\n - the object is an Object, and has a length property\n\nUnlike `typeOf` this method returns true even if the passed object is\nnot formally an array but appears to be array-like (i.e. implements `Array`)\n\n```javascript\nimport { isArray } from '@ember/array';\nimport ArrayProxy from '@ember/array/proxy';\n\nisArray(); // false\nisArray([]); // true\nisArray(ArrayProxy.create({ content: [] })); // true\n```",
10910
+ "file": "packages/@ember/array/lib/make-array.ts",
10911
+ "line": 5,
10912
+ "description": "Forces the passed object to be part of an array. If the object is already\nan array, it will return the object. Otherwise, it will add the object to\nan array. If object is `null` or `undefined`, it will return an empty array.\n\n```javascript\nimport { makeArray } from '@ember/array';\nimport ArrayProxy from '@ember/array/proxy';\n\nmakeArray(); // []\nmakeArray(null); // []\nmakeArray(undefined); // []\nmakeArray('lindsay'); // ['lindsay']\nmakeArray([1, 2, 42]); // [1, 2, 42]\n\nlet proxy = ArrayProxy.create({ content: [] });\n\nmakeArray(proxy) === proxy; // false\n```",
10904
10913
  "itemtype": "method",
10905
- "name": "isArray",
10914
+ "name": "makeArray",
10906
10915
  "static": 1,
10907
10916
  "params": [
10908
10917
  {
10909
10918
  "name": "obj",
10910
- "description": "The object to test",
10919
+ "description": "the object",
10911
10920
  "type": "Object"
10912
10921
  }
10913
10922
  ],
10914
10923
  "return": {
10915
- "description": "true if the passed object is an array or Array-like",
10916
- "type": "Boolean"
10924
+ "description": "",
10925
+ "type": "Array"
10917
10926
  },
10918
- "access": "public",
10927
+ "access": "private",
10919
10928
  "tagname": "",
10920
10929
  "class": "@ember/array",
10921
10930
  "module": "@ember/array"
10922
10931
  },
10923
10932
  {
10924
10933
  "file": "packages/@ember/array/index.ts",
10925
- "line": 250,
10934
+ "line": 190,
10926
10935
  "description": "__Required.__ You must implement this method to apply this mixin.\n\nYour array must support the `length` property. Your replace methods should\nset this property whenever it changes.",
10927
10936
  "itemtype": "property",
10928
10937
  "name": "length",
@@ -10934,7 +10943,7 @@
10934
10943
  },
10935
10944
  {
10936
10945
  "file": "packages/@ember/array/index.ts",
10937
- "line": 260,
10946
+ "line": 200,
10938
10947
  "description": "Returns the object at the given `index`. If the given `index` is negative\nor is greater or equal than the array length, returns `undefined`.\n\nThis is one of the primitives you must implement to support `EmberArray`.\nIf your object supports retrieving the value of an array item using `get()`\n(i.e. `myArray.get(0)`), then you do not need to implement this method\nyourself.\n\n```javascript\nlet arr = ['a', 'b', 'c', 'd'];\n\narr.objectAt(0); // 'a'\narr.objectAt(3); // 'd'\narr.objectAt(-1); // undefined\narr.objectAt(4); // undefined\narr.objectAt(5); // undefined\n```",
10939
10948
  "itemtype": "method",
10940
10949
  "name": "objectAt",
@@ -10956,7 +10965,7 @@
10956
10965
  },
10957
10966
  {
10958
10967
  "file": "packages/@ember/array/index.ts",
10959
- "line": 285,
10968
+ "line": 225,
10960
10969
  "description": "This returns the objects at the specified indexes, using `objectAt`.\n\n```javascript\nlet arr = ['a', 'b', 'c', 'd'];\n\narr.objectsAt([0, 1, 2]); // ['a', 'b', 'c']\narr.objectsAt([2, 3, 4]); // ['c', 'd', undefined]\n```",
10961
10970
  "itemtype": "method",
10962
10971
  "name": "objectsAt",
@@ -10978,7 +10987,7 @@
10978
10987
  },
10979
10988
  {
10980
10989
  "file": "packages/@ember/array/index.ts",
10981
- "line": 301,
10990
+ "line": 241,
10982
10991
  "description": "This is the handler for the special array content property. If you get\nthis property, it will return this. If you set this property to a new\narray, it will replace the current content.\n\n```javascript\nlet peopleToMoon = ['Armstrong', 'Aldrin'];\n\npeopleToMoon.get('[]'); // ['Armstrong', 'Aldrin']\n\npeopleToMoon.set('[]', ['Collins']); // ['Collins']\npeopleToMoon.get('[]'); // ['Collins']\n```",
10983
10992
  "itemtype": "property",
10984
10993
  "name": "[]",
@@ -10992,7 +11001,7 @@
10992
11001
  },
10993
11002
  {
10994
11003
  "file": "packages/@ember/array/index.ts",
10995
- "line": 321,
11004
+ "line": 261,
10996
11005
  "description": "The first object in the array, or `undefined` if the array is empty.\n\n```javascript\nlet vowels = ['a', 'e', 'i', 'o', 'u'];\nvowels.firstObject; // 'a'\n\nvowels.shiftObject();\nvowels.firstObject; // 'e'\n\nvowels.reverseObjects();\nvowels.firstObject; // 'u'\n\nvowels.clear();\nvowels.firstObject; // undefined\n```",
10997
11006
  "itemtype": "property",
10998
11007
  "name": "firstObject",
@@ -11007,7 +11016,7 @@
11007
11016
  },
11008
11017
  {
11009
11018
  "file": "packages/@ember/array/index.ts",
11010
- "line": 343,
11019
+ "line": 283,
11011
11020
  "description": "The last object in the array, or `undefined` if the array is empty.",
11012
11021
  "itemtype": "property",
11013
11022
  "name": "lastObject",
@@ -11022,7 +11031,7 @@
11022
11031
  },
11023
11032
  {
11024
11033
  "file": "packages/@ember/array/index.ts",
11025
- "line": 351,
11034
+ "line": 291,
11026
11035
  "description": "Returns a new array that is a slice of the receiver. This implementation\nuses the observable array methods to retrieve the objects for the new\nslice.\n\n```javascript\nlet arr = ['red', 'green', 'blue'];\n\narr.slice(0); // ['red', 'green', 'blue']\narr.slice(0, 2); // ['red', 'green']\narr.slice(1, 100); // ['green', 'blue']\n```",
11027
11036
  "itemtype": "method",
11028
11037
  "name": "slice",
@@ -11049,7 +11058,7 @@
11049
11058
  },
11050
11059
  {
11051
11060
  "file": "packages/@ember/array/index.ts",
11052
- "line": 371,
11061
+ "line": 311,
11053
11062
  "description": "Used to determine the passed object's first occurrence in the array.\nReturns the index if found, -1 if no match is found.\n\nThe optional `startAt` argument can be used to pass a starting\nindex to search from, effectively slicing the searchable portion\nof the array. If it's negative it will add the array length to\nthe startAt value passed in as the index to search from. If less\nthan or equal to `-1 * array.length` the entire array is searched.\n\n```javascript\nlet arr = ['a', 'b', 'c', 'd', 'a'];\n\narr.indexOf('a'); // 0\narr.indexOf('z'); // -1\narr.indexOf('a', 2); // 4\narr.indexOf('a', -1); // 4, equivalent to indexOf('a', 4)\narr.indexOf('a', -100); // 0, searches entire array\narr.indexOf('b', 3); // -1\narr.indexOf('a', 100); // -1\n\nlet people = [{ name: 'Zoey' }, { name: 'Bob' }]\nlet newPerson = { name: 'Tom' };\npeople = [newPerson, ...people, newPerson];\n\npeople.indexOf(newPerson); // 0\npeople.indexOf(newPerson, 1); // 3\npeople.indexOf(newPerson, -4); // 0\npeople.indexOf(newPerson, 10); // -1\n```",
11054
11063
  "itemtype": "method",
11055
11064
  "name": "indexOf",
@@ -11076,7 +11085,7 @@
11076
11085
  },
11077
11086
  {
11078
11087
  "file": "packages/@ember/array/index.ts",
11079
- "line": 409,
11088
+ "line": 349,
11080
11089
  "description": "Returns the index of the given `object`'s last occurrence.\n\n- If no `startAt` argument is given, the search starts from\nthe last position.\n- If it's greater than or equal to the length of the array,\nthe search starts from the last position.\n- If it's negative, it is taken as the offset from the end\nof the array i.e. `startAt + array.length`.\n- If it's any other positive number, will search backwards\nfrom that index of the array.\n\nReturns -1 if no match is found.\n\n```javascript\nlet arr = ['a', 'b', 'c', 'd', 'a'];\n\narr.lastIndexOf('a'); // 4\narr.lastIndexOf('z'); // -1\narr.lastIndexOf('a', 2); // 0\narr.lastIndexOf('a', -1); // 4\narr.lastIndexOf('a', -3); // 0\narr.lastIndexOf('b', 3); // 1\narr.lastIndexOf('a', 100); // 4\n```",
11081
11090
  "itemtype": "method",
11082
11091
  "name": "lastIndexOf",
@@ -11103,7 +11112,7 @@
11103
11112
  },
11104
11113
  {
11105
11114
  "file": "packages/@ember/array/index.ts",
11106
- "line": 444,
11115
+ "line": 384,
11107
11116
  "description": "Iterates through the array, calling the passed function on each\nitem. This method corresponds to the `forEach()` method defined in\nJavaScript 1.6.\n\nThe callback method you provide should have the following signature (all\nparameters are optional):\n\n```javascript\nfunction(item, index, array);\n```\n\n- `item` is the current item in the iteration.\n- `index` is the current index in the iteration.\n- `array` is the array itself.\n\nNote that in addition to a callback, you can also pass an optional target\nobject that will be set as `this` on the context. This is a good way\nto give your iterator function access to the current object.\n\nExample Usage:\n\n```javascript\nlet foods = [\n { name: 'apple', eaten: false },\n { name: 'banana', eaten: false },\n { name: 'carrot', eaten: false }\n];\n\nfoods.forEach((food) => food.eaten = true);\n\nlet output = '';\nfoods.forEach((item, index, array) =>\n output += `${index + 1}/${array.length} ${item.name}\\n`;\n);\nconsole.log(output);\n// 1/3 apple\n// 2/3 banana\n// 3/3 carrot\n```",
11108
11117
  "itemtype": "method",
11109
11118
  "name": "forEach",
@@ -11131,7 +11140,7 @@
11131
11140
  },
11132
11141
  {
11133
11142
  "file": "packages/@ember/array/index.ts",
11134
- "line": 495,
11143
+ "line": 435,
11135
11144
  "description": "Alias for `mapBy`.\n\nReturns the value of the named\nproperty on all items in the enumeration.\n\n```javascript\nlet people = [{name: 'Joe'}, {name: 'Matt'}];\n\npeople.getEach('name');\n// ['Joe', 'Matt'];\n\npeople.getEach('nonexistentProperty');\n// [undefined, undefined];\n```",
11136
11145
  "itemtype": "method",
11137
11146
  "name": "getEach",
@@ -11153,7 +11162,7 @@
11153
11162
  },
11154
11163
  {
11155
11164
  "file": "packages/@ember/array/index.ts",
11156
- "line": 517,
11165
+ "line": 457,
11157
11166
  "description": "Sets the value on the named property for each member. This is more\nergonomic than using other methods defined on this helper. If the object\nimplements Observable, the value will be changed to `set(),` otherwise\nit will be set directly. `null` objects are skipped.\n\n```javascript\nlet people = [{name: 'Joe'}, {name: 'Matt'}];\n\npeople.setEach('zipCode', '10011');\n// [{name: 'Joe', zipCode: '10011'}, {name: 'Matt', zipCode: '10011'}];\n```",
11158
11167
  "itemtype": "method",
11159
11168
  "name": "setEach",
@@ -11180,7 +11189,7 @@
11180
11189
  },
11181
11190
  {
11182
11191
  "file": "packages/@ember/array/index.ts",
11183
- "line": 537,
11192
+ "line": 477,
11184
11193
  "description": "Maps all of the items in the enumeration to another value, returning\na new array. This method corresponds to `map()` defined in JavaScript 1.6.\n\nThe callback method you provide should have the following signature (all\nparameters are optional):\n\n```javascript\nfunction(item, index, array);\nlet arr = [1, 2, 3, 4, 5, 6];\n\narr.map(element => element * element);\n// [1, 4, 9, 16, 25, 36];\n\narr.map((element, index) => element + index);\n// [1, 3, 5, 7, 9, 11];\n```\n\n- `item` is the current item in the iteration.\n- `index` is the current index in the iteration.\n- `array` is the array itself.\n\nIt should return the mapped value.\n\nNote that in addition to a callback, you can also pass an optional target\nobject that will be set as `this` on the context. This is a good way\nto give your iterator function access to the current object.",
11185
11194
  "itemtype": "method",
11186
11195
  "name": "map",
@@ -11208,7 +11217,7 @@
11208
11217
  },
11209
11218
  {
11210
11219
  "file": "packages/@ember/array/index.ts",
11211
- "line": 575,
11220
+ "line": 515,
11212
11221
  "description": "Similar to map, this specialized function returns the value of the named\nproperty on all items in the enumeration.\n\n```javascript\nlet people = [{name: 'Joe'}, {name: 'Matt'}];\n\npeople.mapBy('name');\n// ['Joe', 'Matt'];\n\npeople.mapBy('unknownProperty');\n// [undefined, undefined];\n```",
11213
11222
  "itemtype": "method",
11214
11223
  "name": "mapBy",
@@ -11230,7 +11239,7 @@
11230
11239
  },
11231
11240
  {
11232
11241
  "file": "packages/@ember/array/index.ts",
11233
- "line": 596,
11242
+ "line": 536,
11234
11243
  "description": "Returns a new array with all of the items in the enumeration that the provided\ncallback function returns true for. This method corresponds to [Array.prototype.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter).\n\nThe callback method should have the following signature:\n\n```javascript\nfunction(item, index, array);\n```\n\n- `item` is the current item in the iteration.\n- `index` is the current index in the iteration.\n- `array` is the array itself.\n\nAll parameters are optional. The function should return `true` to include the item\nin the results, and `false` otherwise.\n\nExample:\n\n```javascript\nimport { A } from '@ember/array';\nfunction isAdult(person) {\n return person.age > 18;\n};\n\nlet people = A([{ name: 'John', age: 14 }, { name: 'Joan', age: 45 }]);\n\npeople.filter(isAdult); // returns [{ name: 'Joan', age: 45 }];\n```\n\nNote that in addition to a callback, you can pass an optional target object\nthat will be set as `this` on the context. This is a good way to give your\niterator function access to the current object. For example:\n\n```javascript\nfunction isAdultAndEngineer(person) {\n return person.age > 18 && this.engineering;\n}\n\nclass AdultsCollection {\n engineering = false;\n\n constructor(opts = {}) {\n super(...arguments);\n\n this.engineering = opts.engineering;\n this.people = A([{ name: 'John', age: 14 }, { name: 'Joan', age: 45 }]);\n }\n}\n\nlet collection = new AdultsCollection({ engineering: true });\ncollection.people.filter(isAdultAndEngineer, { target: collection });\n```",
11235
11244
  "itemtype": "method",
11236
11245
  "name": "filter",
@@ -11258,7 +11267,7 @@
11258
11267
  },
11259
11268
  {
11260
11269
  "file": "packages/@ember/array/index.ts",
11261
- "line": 660,
11270
+ "line": 600,
11262
11271
  "description": "Returns an array with all of the items in the enumeration where the passed\nfunction returns false. This method is the inverse of filter().\n\nThe callback method you provide should have the following signature (all\nparameters are optional):\n\n```javascript\nfunction(item, index, array);\n```\n\n- *item* is the current item in the iteration.\n- *index* is the current index in the iteration\n- *array* is the array itself.\n\nIt should return a falsey value to include the item in the results.\n\nNote that in addition to a callback, you can also pass an optional target\nobject that will be set as \"this\" on the context. This is a good way\nto give your iterator function access to the current object.\n\nExample Usage:\n\n```javascript\nconst food = [\n { food: 'apple', isFruit: true },\n { food: 'bread', isFruit: false },\n { food: 'banana', isFruit: true }\n];\nconst nonFruits = food.reject(function(thing) {\n return thing.isFruit;\n}); // [{food: 'bread', isFruit: false}]\n```",
11263
11272
  "itemtype": "method",
11264
11273
  "name": "reject",
@@ -11286,7 +11295,7 @@
11286
11295
  },
11287
11296
  {
11288
11297
  "file": "packages/@ember/array/index.ts",
11289
- "line": 704,
11298
+ "line": 644,
11290
11299
  "description": "Filters the array by the property and an optional value. If a value is given, it returns\nthe items that have said value for the property. If not, it returns all the items that\nhave a truthy value for the property.\n\nExample Usage:\n\n```javascript\nimport { A } from '@ember/array';\nlet things = A([{ food: 'apple', isFruit: true }, { food: 'beans', isFruit: false }]);\n\nthings.filterBy('food', 'beans'); // [{ food: 'beans', isFruit: false }]\nthings.filterBy('isFruit'); // [{ food: 'apple', isFruit: true }]\n```",
11291
11300
  "itemtype": "method",
11292
11301
  "name": "filterBy",
@@ -11314,7 +11323,7 @@
11314
11323
  },
11315
11324
  {
11316
11325
  "file": "packages/@ember/array/index.ts",
11317
- "line": 726,
11326
+ "line": 666,
11318
11327
  "description": "Returns an array with the items that do not have truthy values for the provided key.\nYou can pass an optional second argument with a target value to reject for the key.\nOtherwise this will reject objects where the provided property evaluates to false.\n\nExample Usage:\n\n```javascript\n let food = [\n { name: \"apple\", isFruit: true },\n { name: \"carrot\", isFruit: false },\n { name: \"bread\", isFruit: false },\n ];\n food.rejectBy('isFruit'); // [{ name: \"carrot\", isFruit: false }, { name: \"bread\", isFruit: false }]\n food.rejectBy('name', 'carrot'); // [{ name: \"apple\", isFruit: true }}, { name: \"bread\", isFruit: false }]\n```",
11319
11328
  "itemtype": "method",
11320
11329
  "name": "rejectBy",
@@ -11342,7 +11351,7 @@
11342
11351
  },
11343
11352
  {
11344
11353
  "file": "packages/@ember/array/index.ts",
11345
- "line": 750,
11354
+ "line": 690,
11346
11355
  "description": "Returns the first item in the array for which the callback returns true.\nThis method is similar to the `find()` method defined in ECMAScript 2015.\n\nThe callback method you provide should have the following signature (all\nparameters are optional):\n\n```javascript\nfunction(item, index, array);\n```\n\n- `item` is the current item in the iteration.\n- `index` is the current index in the iteration.\n- `array` is the array itself.\n\nIt should return the `true` to include the item in the results, `false`\notherwise.\n\nNote that in addition to a callback, you can also pass an optional target\nobject that will be set as `this` on the context. This is a good way\nto give your iterator function access to the current object.\n\nExample Usage:\n\n```javascript\nlet users = [\n { id: 1, name: 'Yehuda' },\n { id: 2, name: 'Tom' },\n { id: 3, name: 'Melanie' },\n { id: 4, name: 'Leah' }\n];\n\nusers.find((user) => user.name == 'Tom'); // [{ id: 2, name: 'Tom' }]\nusers.find(({ id }) => id == 3); // [{ id: 3, name: 'Melanie' }]\n```",
11347
11356
  "itemtype": "method",
11348
11357
  "name": "find",
@@ -11370,7 +11379,7 @@
11370
11379
  },
11371
11380
  {
11372
11381
  "file": "packages/@ember/array/index.ts",
11373
- "line": 800,
11382
+ "line": 740,
11374
11383
  "description": "Returns the first item with a property matching the passed value. You\ncan pass an optional second argument with the target value. Otherwise\nthis will match any property that evaluates to `true`.\n\nThis method works much like the more generic `find()` method.\n\nUsage Example:\n\n```javascript\nlet users = [\n { id: 1, name: 'Yehuda', isTom: false },\n { id: 2, name: 'Tom', isTom: true },\n { id: 3, name: 'Melanie', isTom: false },\n { id: 4, name: 'Leah', isTom: false }\n];\n\nusers.findBy('id', 4); // { id: 4, name: 'Leah', isTom: false }\nusers.findBy('name', 'Melanie'); // { id: 3, name: 'Melanie', isTom: false }\nusers.findBy('isTom'); // { id: 2, name: 'Tom', isTom: true }\n```",
11375
11384
  "itemtype": "method",
11376
11385
  "name": "findBy",
@@ -11398,7 +11407,7 @@
11398
11407
  },
11399
11408
  {
11400
11409
  "file": "packages/@ember/array/index.ts",
11401
- "line": 830,
11410
+ "line": 770,
11402
11411
  "description": "Returns `true` if the passed function returns true for every item in the\nenumeration. This corresponds with the `Array.prototype.every()` method defined in ES5.\n\nThe callback method should have the following signature:\n\n```javascript\nfunction(item, index, array);\n```\n\n- `item` is the current item in the iteration.\n- `index` is the current index in the iteration.\n- `array` is the array itself.\n\nAll params are optional. The method should return `true` or `false`.\n\nNote that in addition to a callback, you can also pass an optional target\nobject that will be set as `this` on the context. This is a good way\nto give your iterator function access to the current object.\n\nUsage example:\n\n```javascript\nimport { A } from '@ember/array';\nfunction isAdult(person) {\n return person.age > 18;\n};\n\nconst people = A([{ name: 'John', age: 24 }, { name: 'Joan', age: 45 }]);\nconst areAllAdults = people.every(isAdult);\n```",
11403
11412
  "itemtype": "method",
11404
11413
  "name": "every",
@@ -11426,7 +11435,7 @@
11426
11435
  },
11427
11436
  {
11428
11437
  "file": "packages/@ember/array/index.ts",
11429
- "line": 872,
11438
+ "line": 812,
11430
11439
  "description": "Returns `true` if the passed property resolves to the value of the second\nargument for all items in the array. This method is often simpler/faster\nthan using a callback.\n\nNote that like the native `Array.every`, `isEvery` will return true when called\non any empty array.\n```javascript\nclass Language {\n constructor(name, isProgrammingLanguage) {\n this.name = name;\n this.programmingLanguage = isProgrammingLanguage;\n }\n}\n\nconst compiledLanguages = [\n new Language('Java', true),\n new Language('Go', true),\n new Language('Rust', true)\n]\n\nconst languagesKnownByMe = [\n new Language('Javascript', true),\n new Language('English', false),\n new Language('Ruby', true)\n]\n\ncompiledLanguages.isEvery('programmingLanguage'); // true\nlanguagesKnownByMe.isEvery('programmingLanguage'); // false\n```",
11431
11440
  "itemtype": "method",
11432
11441
  "name": "isEvery",
@@ -11455,7 +11464,7 @@
11455
11464
  },
11456
11465
  {
11457
11466
  "file": "packages/@ember/array/index.ts",
11458
- "line": 912,
11467
+ "line": 852,
11459
11468
  "description": "The any() method executes the callback function once for each element\npresent in the array until it finds the one where callback returns a truthy\nvalue (i.e. `true`). If such an element is found, any() immediately returns\ntrue. Otherwise, any() returns false.\n\n```javascript\nfunction(item, index, array);\n```\n\n- `item` is the current item in the iteration.\n- `index` is the current index in the iteration.\n- `array` is the array object itself.\n\nNote that in addition to a callback, you can also pass an optional target\nobject that will be set as `this` on the context. It can be a good way\nto give your iterator function access to an object in cases where an ES6\narrow function would not be appropriate.\n\nUsage Example:\n\n```javascript\nlet includesManager = people.any(this.findPersonInManagersList, this);\n\nlet includesStockHolder = people.any(person => {\n return this.findPersonInStockHoldersList(person)\n});\n\nif (includesManager || includesStockHolder) {\n Paychecks.addBiggerBonus();\n}\n```",
11460
11469
  "itemtype": "method",
11461
11470
  "name": "any",
@@ -11483,7 +11492,7 @@
11483
11492
  },
11484
11493
  {
11485
11494
  "file": "packages/@ember/array/index.ts",
11486
- "line": 955,
11495
+ "line": 895,
11487
11496
  "description": "Returns `true` if the passed property resolves to the value of the second\nargument for any item in the array. This method is often simpler/faster\nthan using a callback.\n\nExample usage:\n\n```javascript\nconst food = [\n { food: 'apple', isFruit: true },\n { food: 'bread', isFruit: false },\n { food: 'banana', isFruit: true }\n];\n\nfood.isAny('isFruit'); // true\n```",
11488
11497
  "itemtype": "method",
11489
11498
  "name": "isAny",
@@ -11512,7 +11521,7 @@
11512
11521
  },
11513
11522
  {
11514
11523
  "file": "packages/@ember/array/index.ts",
11515
- "line": 981,
11524
+ "line": 921,
11516
11525
  "description": "This will combine the values of the array into a single value. It\nis a useful way to collect a summary value from an array. This\ncorresponds to the `reduce()` method defined in JavaScript 1.8.\n\nThe callback method you provide should have the following signature (all\nparameters are optional):\n\n```javascript\nfunction(previousValue, item, index, array);\n```\n\n- `previousValue` is the value returned by the last call to the iterator.\n- `item` is the current item in the iteration.\n- `index` is the current index in the iteration.\n- `array` is the array itself.\n\nReturn the new cumulative value.\n\nIn addition to the callback you can also pass an `initialValue`. An error\nwill be raised if you do not pass an initial value and the enumerator is\nempty.\n\nNote that unlike the other methods, this method does not allow you to\npass a target object to set as this for the callback. It's part of the\nspec. Sorry.\n\nExample Usage:\n\n```javascript\n let numbers = [1, 2, 3, 4, 5];\n\n numbers.reduce(function(summation, current) {\n return summation + current;\n }); // 15 (1 + 2 + 3 + 4 + 5)\n\n numbers.reduce(function(summation, current) {\n return summation + current;\n }, -15); // 0 (-15 + 1 + 2 + 3 + 4 + 5)\n\n\n let binaryValues = [true, false, false];\n\n binaryValues.reduce(function(truthValue, current) {\n return truthValue && current;\n }); // false (true && false && false)\n```",
11517
11526
  "itemtype": "method",
11518
11527
  "name": "reduce",
@@ -11539,7 +11548,7 @@
11539
11548
  },
11540
11549
  {
11541
11550
  "file": "packages/@ember/array/index.ts",
11542
- "line": 1039,
11551
+ "line": 979,
11543
11552
  "description": "Invokes the named method on every object in the receiver that\nimplements it. This method corresponds to the implementation in\nPrototype 1.6.\n\n```javascript\nclass Person {\n name = null;\n\n constructor(name) {\n this.name = name;\n }\n\n greet(prefix='Hello') {\n return `${prefix} ${this.name}`;\n }\n}\n\nlet people = [new Person('Joe'), new Person('Matt')];\n\npeople.invoke('greet'); // ['Hello Joe', 'Hello Matt']\npeople.invoke('greet', 'Bonjour'); // ['Bonjour Joe', 'Bonjour Matt']\n```",
11544
11553
  "itemtype": "method",
11545
11554
  "name": "invoke",
@@ -11566,7 +11575,7 @@
11566
11575
  },
11567
11576
  {
11568
11577
  "file": "packages/@ember/array/index.ts",
11569
- "line": 1073,
11578
+ "line": 1013,
11570
11579
  "description": "Simply converts the object into a genuine array. The order is not\nguaranteed. Corresponds to the method implemented by Prototype.",
11571
11580
  "itemtype": "method",
11572
11581
  "name": "toArray",
@@ -11581,7 +11590,7 @@
11581
11590
  },
11582
11591
  {
11583
11592
  "file": "packages/@ember/array/index.ts",
11584
- "line": 1082,
11593
+ "line": 1022,
11585
11594
  "description": "Returns a copy of the array with all `null` and `undefined` elements removed.\n\n```javascript\nlet arr = ['a', null, 'c', undefined];\narr.compact(); // ['a', 'c']\n```",
11586
11595
  "itemtype": "method",
11587
11596
  "name": "compact",
@@ -11596,7 +11605,7 @@
11596
11605
  },
11597
11606
  {
11598
11607
  "file": "packages/@ember/array/index.ts",
11599
- "line": 1095,
11608
+ "line": 1035,
11600
11609
  "description": "Used to determine if the array contains the passed object.\nReturns `true` if found, `false` otherwise.\n\nThe optional `startAt` argument can be used to pass a starting\nindex to search from, effectively slicing the searchable portion\nof the array. If it's negative it will add the array length to\nthe startAt value passed in as the index to search from. If less\nthan or equal to `-1 * array.length` the entire array is searched.\n\nThis method has the same behavior of JavaScript's [Array.includes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes).\n\n```javascript\n[1, 2, 3].includes(2); // true\n[1, 2, 3].includes(4); // false\n[1, 2, 3].includes(3, 2); // true\n[1, 2, 3].includes(3, 3); // false\n[1, 2, 3].includes(3, -1); // true\n[1, 2, 3].includes(1, -1); // false\n[1, 2, 3].includes(1, -4); // true\n[1, 2, NaN].includes(NaN); // true\n```",
11601
11610
  "itemtype": "method",
11602
11611
  "name": "includes",
@@ -11623,7 +11632,7 @@
11623
11632
  },
11624
11633
  {
11625
11634
  "file": "packages/@ember/array/index.ts",
11626
- "line": 1125,
11635
+ "line": 1065,
11627
11636
  "description": "Sorts the array by the keys specified in the argument.\n\nYou may provide multiple arguments to sort by multiple properties.\n\n```javascript\n let colors = [\n { name: 'red', weight: 500 },\n { name: 'green', weight: 600 },\n { name: 'blue', weight: 500 }\n];\n\n colors.sortBy('name');\n // [{name: 'blue', weight: 500}, {name: 'green', weight: 600}, {name: 'red', weight: 500}]\n\n colors.sortBy('weight', 'name');\n // [{name: 'blue', weight: 500}, {name: 'red', weight: 500}, {name: 'green', weight: 600}]\n ```",
11628
11637
  "itemtype": "method",
11629
11638
  "name": "sortBy",
@@ -11646,7 +11655,7 @@
11646
11655
  },
11647
11656
  {
11648
11657
  "file": "packages/@ember/array/index.ts",
11649
- "line": 1150,
11658
+ "line": 1090,
11650
11659
  "description": "Returns a new array that contains only unique values. The default\nimplementation returns an array regardless of the receiver type.\n\n```javascript\nlet arr = ['a', 'a', 'b', 'b'];\narr.uniq(); // ['a', 'b']\n```\n\nThis only works on primitive data types, e.g. Strings, Numbers, etc.",
11651
11660
  "itemtype": "method",
11652
11661
  "name": "uniq",
@@ -11661,7 +11670,7 @@
11661
11670
  },
11662
11671
  {
11663
11672
  "file": "packages/@ember/array/index.ts",
11664
- "line": 1166,
11673
+ "line": 1106,
11665
11674
  "description": "Returns a new array that contains only items containing a unique property value.\nThe default implementation returns an array regardless of the receiver type.\n\n```javascript\nlet arr = [{ value: 'a' }, { value: 'a' }, { value: 'b' }, { value: 'b' }];\narr.uniqBy('value'); // [{ value: 'a' }, { value: 'b' }]\n\nlet arr = [2.2, 2.1, 3.2, 3.3];\narr.uniqBy(Math.floor); // [2.2, 3.2];\n```",
11666
11675
  "itemtype": "method",
11667
11676
  "name": "uniqBy",
@@ -11683,7 +11692,7 @@
11683
11692
  },
11684
11693
  {
11685
11694
  "file": "packages/@ember/array/index.ts",
11686
- "line": 1185,
11695
+ "line": 1125,
11687
11696
  "description": "Returns a new array that excludes the passed value. The default\nimplementation returns an array regardless of the receiver type.\nIf the receiver does not contain the value it returns the original array.\n\n```javascript\nlet arr = ['a', 'b', 'a', 'c'];\narr.without('a'); // ['b', 'c']\n```",
11688
11697
  "itemtype": "method",
11689
11698
  "name": "without",
@@ -11705,7 +11714,7 @@
11705
11714
  },
11706
11715
  {
11707
11716
  "file": "packages/@ember/array/index.ts",
11708
- "line": 1495,
11717
+ "line": 1435,
11709
11718
  "description": "__Required.__ You must implement this method to apply this mixin.\n\nThis is one of the primitives you must implement to support `Array`.\nYou should replace amt objects started at idx with the objects in the\npassed array.\n\nNote that this method is expected to validate the type(s) of objects that it expects.",
11710
11719
  "itemtype": "method",
11711
11720
  "name": "replace",
@@ -11734,7 +11743,7 @@
11734
11743
  },
11735
11744
  {
11736
11745
  "file": "packages/@ember/array/index.ts",
11737
- "line": 1514,
11746
+ "line": 1454,
11738
11747
  "description": "Remove all elements from the array. This is useful if you\nwant to reuse an existing array without having to recreate it.\n\n```javascript\nlet colors = ['red', 'green', 'blue'];\n\ncolors.length; // 3\ncolors.clear(); // []\ncolors.length; // 0\n```",
11739
11748
  "itemtype": "method",
11740
11749
  "name": "clear",
@@ -11749,7 +11758,7 @@
11749
11758
  },
11750
11759
  {
11751
11760
  "file": "packages/@ember/array/index.ts",
11752
- "line": 1531,
11761
+ "line": 1471,
11753
11762
  "description": "This will use the primitive `replace()` method to insert an object at the\nspecified index.\n\n```javascript\nlet colors = ['red', 'green', 'blue'];\n\ncolors.insertAt(2, 'yellow'); // ['red', 'green', 'yellow', 'blue']\ncolors.insertAt(5, 'orange'); // Error: Index out of range\n```",
11754
11763
  "itemtype": "method",
11755
11764
  "name": "insertAt",
@@ -11776,7 +11785,7 @@
11776
11785
  },
11777
11786
  {
11778
11787
  "file": "packages/@ember/array/index.ts",
11779
- "line": 1549,
11788
+ "line": 1489,
11780
11789
  "description": "Remove an object at the specified index using the `replace()` primitive\nmethod. You can pass either a single index, or a start and a length.\n\nIf you pass a start and length that is beyond the\nlength this method will throw an assertion.\n\n```javascript\nlet colors = ['red', 'green', 'blue', 'yellow', 'orange'];\n\ncolors.removeAt(0); // ['green', 'blue', 'yellow', 'orange']\ncolors.removeAt(2, 2); // ['green', 'blue']\ncolors.removeAt(4, 2); // Error: Index out of range\n```",
11781
11790
  "itemtype": "method",
11782
11791
  "name": "removeAt",
@@ -11803,7 +11812,7 @@
11803
11812
  },
11804
11813
  {
11805
11814
  "file": "packages/@ember/array/index.ts",
11806
- "line": 1571,
11815
+ "line": 1511,
11807
11816
  "description": "Push the object onto the end of the array. Works just like `push()` but it\nis KVO-compliant.\n\n```javascript\nlet colors = ['red', 'green'];\n\ncolors.pushObject('black'); // ['red', 'green', 'black']\ncolors.pushObject(['yellow']); // ['red', 'green', ['yellow']]\n```",
11808
11817
  "itemtype": "method",
11809
11818
  "name": "pushObject",
@@ -11824,7 +11833,7 @@
11824
11833
  },
11825
11834
  {
11826
11835
  "file": "packages/@ember/array/index.ts",
11827
- "line": 1588,
11836
+ "line": 1528,
11828
11837
  "description": "Add the objects in the passed array to the end of the array. Defers\nnotifying observers of the change until all objects are added.\n\n```javascript\nlet colors = ['red'];\n\ncolors.pushObjects(['yellow', 'orange']); // ['red', 'yellow', 'orange']\n```",
11829
11838
  "itemtype": "method",
11830
11839
  "name": "pushObjects",
@@ -11846,7 +11855,7 @@
11846
11855
  },
11847
11856
  {
11848
11857
  "file": "packages/@ember/array/index.ts",
11849
- "line": 1604,
11858
+ "line": 1544,
11850
11859
  "description": "Pop object from array or nil if none are left. Works just like `pop()` but\nit is KVO-compliant.\n\n```javascript\nlet colors = ['red', 'green', 'blue'];\n\ncolors.popObject(); // 'blue'\nconsole.log(colors); // ['red', 'green']\n```",
11851
11860
  "itemtype": "method",
11852
11861
  "name": "popObject",
@@ -11860,7 +11869,7 @@
11860
11869
  },
11861
11870
  {
11862
11871
  "file": "packages/@ember/array/index.ts",
11863
- "line": 1620,
11872
+ "line": 1560,
11864
11873
  "description": "Shift an object from start of array or nil if none are left. Works just\nlike `shift()` but it is KVO-compliant.\n\n```javascript\nlet colors = ['red', 'green', 'blue'];\n\ncolors.shiftObject(); // 'red'\nconsole.log(colors); // ['green', 'blue']\n```",
11865
11874
  "itemtype": "method",
11866
11875
  "name": "shiftObject",
@@ -11874,7 +11883,7 @@
11874
11883
  },
11875
11884
  {
11876
11885
  "file": "packages/@ember/array/index.ts",
11877
- "line": 1636,
11886
+ "line": 1576,
11878
11887
  "description": "Unshift an object to start of array. Works just like `unshift()` but it is\nKVO-compliant.\n\n```javascript\nlet colors = ['red'];\n\ncolors.unshiftObject('yellow'); // ['yellow', 'red']\ncolors.unshiftObject(['black']); // [['black'], 'yellow', 'red']\n```",
11879
11888
  "itemtype": "method",
11880
11889
  "name": "unshiftObject",
@@ -11895,7 +11904,7 @@
11895
11904
  },
11896
11905
  {
11897
11906
  "file": "packages/@ember/array/index.ts",
11898
- "line": 1653,
11907
+ "line": 1593,
11899
11908
  "description": "Adds the named objects to the beginning of the array. Defers notifying\nobservers until all objects have been added.\n\n```javascript\nlet colors = ['red'];\n\ncolors.unshiftObjects(['black', 'white']); // ['black', 'white', 'red']\ncolors.unshiftObjects('yellow'); // Type Error: 'undefined' is not a function\n```",
11900
11909
  "itemtype": "method",
11901
11910
  "name": "unshiftObjects",
@@ -11917,7 +11926,7 @@
11917
11926
  },
11918
11927
  {
11919
11928
  "file": "packages/@ember/array/index.ts",
11920
- "line": 1670,
11929
+ "line": 1610,
11921
11930
  "description": "Reverse objects in the array. Works just like `reverse()` but it is\nKVO-compliant.",
11922
11931
  "itemtype": "method",
11923
11932
  "name": "reverseObjects",
@@ -11932,7 +11941,7 @@
11932
11941
  },
11933
11942
  {
11934
11943
  "file": "packages/@ember/array/index.ts",
11935
- "line": 1679,
11944
+ "line": 1619,
11936
11945
  "description": "Replace all the receiver's content with content of the argument.\nIf argument is an empty array receiver will be cleared.\n\n```javascript\nlet colors = ['red', 'green', 'blue'];\n\ncolors.setObjects(['black', 'white']); // ['black', 'white']\ncolors.setObjects([]); // []\n```",
11937
11946
  "itemtype": "method",
11938
11947
  "name": "setObjects",
@@ -11954,7 +11963,7 @@
11954
11963
  },
11955
11964
  {
11956
11965
  "file": "packages/@ember/array/index.ts",
11957
- "line": 1697,
11966
+ "line": 1637,
11958
11967
  "description": "Remove all occurrences of an object in the array.\n\n```javascript\nlet cities = ['Chicago', 'Berlin', 'Lima', 'Chicago'];\n\ncities.removeObject('Chicago'); // ['Berlin', 'Lima']\ncities.removeObject('Lima'); // ['Berlin']\ncities.removeObject('Tokyo') // ['Berlin']\n```",
11959
11968
  "itemtype": "method",
11960
11969
  "name": "removeObject",
@@ -11976,7 +11985,7 @@
11976
11985
  },
11977
11986
  {
11978
11987
  "file": "packages/@ember/array/index.ts",
11979
- "line": 1714,
11988
+ "line": 1654,
11980
11989
  "description": "Removes each object in the passed array from the receiver.",
11981
11990
  "itemtype": "method",
11982
11991
  "name": "removeObjects",
@@ -11998,7 +12007,7 @@
11998
12007
  },
11999
12008
  {
12000
12009
  "file": "packages/@ember/array/index.ts",
12001
- "line": 1723,
12010
+ "line": 1663,
12002
12011
  "description": "Push the object onto the end of the array if it is not already\npresent in the array.\n\n```javascript\nlet cities = ['Chicago', 'Berlin'];\n\ncities.addObject('Lima'); // ['Chicago', 'Berlin', 'Lima']\ncities.addObject('Berlin'); // ['Chicago', 'Berlin', 'Lima']\n```",
12003
12012
  "itemtype": "method",
12004
12013
  "name": "addObject",
@@ -12020,7 +12029,7 @@
12020
12029
  },
12021
12030
  {
12022
12031
  "file": "packages/@ember/array/index.ts",
12023
- "line": 1740,
12032
+ "line": 1680,
12024
12033
  "description": "Adds each object in the passed array to the receiver.",
12025
12034
  "itemtype": "method",
12026
12035
  "name": "addObjects",
@@ -12042,8 +12051,8 @@
12042
12051
  },
12043
12052
  {
12044
12053
  "file": "packages/@ember/array/index.ts",
12045
- "line": 1870,
12046
- "description": "Creates an `NativeArray` from an Array-like object.\nDoes not modify the original object's contents.\n\nExample\n\n```app/components/my-component.js\nimport Component from '@ember/component';\nimport { A } from '@ember/array';\n\nexport default Component.extend({\n tagName: 'ul',\n classNames: ['pagination'],\n\n init() {\n this._super(...arguments);\n\n if (!this.get('content')) {\n this.set('content', A());\n this.set('otherContent', A([1,2,3]));\n }\n }\n});\n```",
12054
+ "line": 1810,
12055
+ "description": "Creates an `NativeArray` from an Array-like object.\nDoes not modify the original object's contents.\n \nThis exists primarily for historic reasons and should not be used\nin new code. Prefer native [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)\nor [trackedArray](/ember/release/functions/@ember%2Freactive%2Fcollections/trackedArray).\n\nExample\n\n```app/components/my-component.js\nimport Component from '@ember/component';\nimport { A } from '@ember/array';\n\nexport default Component.extend({\n tagName: 'ul',\n classNames: ['pagination'],\n\n init() {\n this._super(...arguments);\n\n if (!this.get('content')) {\n this.set('content', A());\n this.set('otherContent', A([1,2,3]));\n }\n }\n});\n```",
12047
12056
  "itemtype": "method",
12048
12057
  "name": "A",
12049
12058
  "static": 1,
@@ -12058,70 +12067,70 @@
12058
12067
  },
12059
12068
  {
12060
12069
  "file": "packages/@ember/array/index.ts",
12061
- "line": 1911,
12070
+ "line": 1855,
12062
12071
  "description": "The final definition of NativeArray removes all native methods. This is the list of removed methods\nwhen run in Chrome 106.",
12063
12072
  "class": "@ember/array",
12064
12073
  "module": "ember"
12065
12074
  },
12066
12075
  {
12067
12076
  "file": "packages/@ember/array/index.ts",
12068
- "line": 1928,
12077
+ "line": 1872,
12069
12078
  "description": "These additional items must be redefined since `Omit` causes methods that return `this` to return the\ntype at the time of the Omit.",
12070
12079
  "class": "@ember/array",
12071
12080
  "module": "ember"
12072
12081
  },
12073
12082
  {
12074
12083
  "file": "packages/@ember/array/index.ts",
12075
- "line": 1952,
12084
+ "line": 1896,
12076
12085
  "description": "Remove all elements from the array. This is useful if you\nwant to reuse an existing array without having to recreate it.",
12077
12086
  "class": "@ember/array",
12078
12087
  "module": "ember"
12079
12088
  },
12080
12089
  {
12081
12090
  "file": "packages/@ember/array/index.ts",
12082
- "line": 1957,
12091
+ "line": 1901,
12083
12092
  "description": "This will use the primitive `replace()` method to insert an object at the\nspecified index.",
12084
12093
  "class": "@ember/array",
12085
12094
  "module": "ember"
12086
12095
  },
12087
12096
  {
12088
12097
  "file": "packages/@ember/array/index.ts",
12089
- "line": 1962,
12098
+ "line": 1906,
12090
12099
  "description": "Remove an object at the specified index using the `replace()` primitive\nmethod. You can pass either a single index, or a start and a length.",
12091
12100
  "class": "@ember/array",
12092
12101
  "module": "ember"
12093
12102
  },
12094
12103
  {
12095
12104
  "file": "packages/@ember/array/index.ts",
12096
- "line": 1967,
12105
+ "line": 1911,
12097
12106
  "description": "Add the objects in the passed numerable to the end of the array. Defers\nnotifying observers of the change until all objects are added.",
12098
12107
  "class": "@ember/array",
12099
12108
  "module": "ember"
12100
12109
  },
12101
12110
  {
12102
12111
  "file": "packages/@ember/array/index.ts",
12103
- "line": 1972,
12112
+ "line": 1916,
12104
12113
  "description": "Adds the named objects to the beginning of the array. Defers notifying\nobservers until all objects have been added.",
12105
12114
  "class": "@ember/array",
12106
12115
  "module": "ember"
12107
12116
  },
12108
12117
  {
12109
12118
  "file": "packages/@ember/array/index.ts",
12110
- "line": 1977,
12119
+ "line": 1921,
12111
12120
  "description": "Reverse objects in the array. Works just like `reverse()` but it is\nKVO-compliant.",
12112
12121
  "class": "@ember/array",
12113
12122
  "module": "ember"
12114
12123
  },
12115
12124
  {
12116
12125
  "file": "packages/@ember/array/index.ts",
12117
- "line": 1982,
12126
+ "line": 1926,
12118
12127
  "description": "Replace all the receiver's content with content of the argument.\nIf argument is an empty array receiver will be cleared.",
12119
12128
  "class": "@ember/array",
12120
12129
  "module": "ember"
12121
12130
  },
12122
12131
  {
12123
12132
  "file": "packages/@ember/array/index.ts",
12124
- "line": 1987,
12133
+ "line": 1931,
12125
12134
  "description": "Remove all occurrences of an object in the array.\n\n```javascript\nlet cities = ['Chicago', 'Berlin', 'Lima', 'Chicago'];\n\ncities.removeObject('Chicago'); // ['Berlin', 'Lima']\ncities.removeObject('Lima'); // ['Berlin']\ncities.removeObject('Tokyo') // ['Berlin']\n```",
12126
12135
  "itemtype": "method",
12127
12136
  "name": "removeObject",
@@ -12143,14 +12152,14 @@
12143
12152
  },
12144
12153
  {
12145
12154
  "file": "packages/@ember/array/index.ts",
12146
- "line": 2004,
12155
+ "line": 1948,
12147
12156
  "description": "Removes each object in the passed array from the receiver.",
12148
12157
  "class": "@ember/array",
12149
12158
  "module": "ember"
12150
12159
  },
12151
12160
  {
12152
12161
  "file": "packages/@ember/array/index.ts",
12153
- "line": 2008,
12162
+ "line": 1952,
12154
12163
  "description": "Push the object onto the end of the array if it is not already\npresent in the array.\n\n```javascript\nlet cities = ['Chicago', 'Berlin'];\n\ncities.addObject('Lima'); // ['Chicago', 'Berlin', 'Lima']\ncities.addObject('Berlin'); // ['Chicago', 'Berlin', 'Lima']\n```",
12155
12164
  "itemtype": "method",
12156
12165
  "name": "addObject",
@@ -12172,14 +12181,14 @@
12172
12181
  },
12173
12182
  {
12174
12183
  "file": "packages/@ember/array/index.ts",
12175
- "line": 2025,
12184
+ "line": 1969,
12176
12185
  "description": "Adds each object in the passed enumerable to the receiver.",
12177
12186
  "class": "@ember/array",
12178
12187
  "module": "ember"
12179
12188
  },
12180
12189
  {
12181
12190
  "file": "packages/@ember/array/index.ts",
12182
- "line": 2029,
12191
+ "line": 1973,
12183
12192
  "description": "Sets the value on the named property for each member. This is more\nergonomic than using other methods defined on this helper. If the object\nimplements Observable, the value will be changed to `set(),` otherwise\nit will be set directly. `null` objects are skipped.\n\n```javascript\nlet people = [{name: 'Joe'}, {name: 'Matt'}];\n\npeople.setEach('zipCode', '10011');\n// [{name: 'Joe', zipCode: '10011'}, {name: 'Matt', zipCode: '10011'}];\n```",
12184
12193
  "itemtype": "method",
12185
12194
  "name": "setEach",
@@ -12206,7 +12215,7 @@
12206
12215
  },
12207
12216
  {
12208
12217
  "file": "packages/@ember/array/index.ts",
12209
- "line": 2049,
12218
+ "line": 1993,
12210
12219
  "description": "This is the handler for the special array content property. If you get\nthis property, it will return this. If you set this property to a new\narray, it will replace the current content.\n\n```javascript\nlet peopleToMoon = ['Armstrong', 'Aldrin'];\n\npeopleToMoon.get('[]'); // ['Armstrong', 'Aldrin']\n\npeopleToMoon.set('[]', ['Collins']); // ['Collins']\npeopleToMoon.get('[]'); // ['Collins']\n```",
12211
12220
  "itemtype": "property",
12212
12221
  "name": "[]",
@@ -12476,10 +12485,7 @@
12476
12485
  {
12477
12486
  "file": "packages/@ember/component/template-only.ts",
12478
12487
  "line": 6,
12479
- "description": "This utility function is used to declare a given component has no backing class. When the rendering engine detects this it\nis able to perform a number of optimizations. Templates that are associated with `templateOnly()` will be rendered _as is_\nwithout adding a wrapping `<div>` (or any of the other element customization behaviors of [@ember/component](/ember/release/classes/Component)).\nSpecifically, this means that the template will be rendered as \"outer HTML\".\n\nIn apps, this method will usually be inserted by build-time tooling the handles converting `.hbs` files into component Javascript modules and\nwould not be directly written by the application author.\n\nAddons may want to use this method directly to ensure that a template-only component is treated consistently in all Ember versions (Ember versions\nbefore 4.0 have a \"template-only-glimmer-components\" optional feature that causes a standalone `.hbs` file to be interpreted differently).",
12480
- "example": [
12481
- "\n\n```js\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n```"
12482
- ],
12488
+ "description": "This utility function is used to declare a given component has no backing class. When the rendering engine detects this it\nis able to perform a number of optimizations. Templates that are associated with `templateOnly()` will be rendered _as is_\nwithout adding a wrapping `<div>` (or any of the other element customization behaviors of [@ember/component](/ember/release/classes/Component)).\nSpecifically, this means that the template will be rendered as \"outer HTML\".\n\nIn apps, this method will usually be inserted by build-time tooling the handles converting `.hbs` files into component Javascript modules and\nwould not be directly written by the application author.\n\nAddons may want to use this method directly to ensure that a template-only component is treated consistently in all Ember versions (Ember versions\nbefore 4.0 have a \"template-only-glimmer-components\" optional feature that causes a standalone `.hbs` file to be interpreted differently).\n \n```js\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n```",
12483
12489
  "access": "public",
12484
12490
  "tagname": "",
12485
12491
  "static": 1,
@@ -12500,14 +12506,14 @@
12500
12506
  },
12501
12507
  {
12502
12508
  "file": "packages/@ember/component/template-only.ts",
12503
- "line": 36,
12509
+ "line": 34,
12504
12510
  "description": "Template-only components have no backing class instance, so `this` in their\ntemplates is null. This means that you can only reference passed in arguments\n(e.g. `{{@arg}}`).",
12505
12511
  "class": "@ember/component/template-only",
12506
12512
  "module": "@ember/component/template-only"
12507
12513
  },
12508
12514
  {
12509
12515
  "file": "packages/@ember/component/template-only.ts",
12510
- "line": 44,
12516
+ "line": 42,
12511
12517
  "description": "A convenience alias for {@link TemplateOnlyComponent}",
12512
12518
  "class": "@ember/component/template-only",
12513
12519
  "module": "@ember/component/template-only"
@@ -12522,7 +12528,7 @@
12522
12528
  {
12523
12529
  "file": "packages/@ember/controller/index.ts",
12524
12530
  "line": 39,
12525
- "description": "The object to which actions from the view should be sent.\n\nFor example, when a Handlebars template uses the `{{action}}` helper,\nit will attempt to send the action to the view's controller's `target`.\n\nBy default, the value of the target property is set to the router, and\nis injected when a controller is instantiated. This injection is applied\nas part of the application's initialization process. In most cases the\n`target` property will automatically be set to the logical consumer of\nactions for the controller.",
12531
+ "description": "The object to which actions from the view should be sent.\n\nFor example, when a template uses the `{{action}}` helper,\nit will attempt to send the action to the view's controller's `target`.\n\nBy default, the value of the target property is set to the router, and\nis injected when a controller is instantiated. This injection is applied\nas part of the application's initialization process. In most cases the\n`target` property will automatically be set to the logical consumer of\nactions for the controller.",
12526
12532
  "itemtype": "property",
12527
12533
  "name": "target",
12528
12534
  "default": "null",
@@ -14056,41 +14062,41 @@
14056
14062
  {
14057
14063
  "file": "packages/@ember/helper/index.ts",
14058
14064
  "line": 346,
14059
- "description": "Using the `{{hash}}` helper, you can pass objects directly from the template\nas an argument to your components.\n\n```\nimport { hash } from '@ember/helper';\n\n<template>\n {{#each-in (hash givenName='Jen' familyName='Weber') as |key value|}}\n <p>{{key}}: {{value}}</p>\n {{/each-in}}\n</template>\n```\n\n**NOTE:** this example uses the experimental `<template>` feature, which is\nthe only place you need to import `hash` to use it (it is a built-in when\nwriting standalone `.hbs` files).",
14065
+ "description": "Using the `{{hash}}` helper, you can pass objects directly from the template\nas an argument to your components.\n\n```\n<template>\n {{#each-in (hash givenName='Jen' familyName='Weber') as |key value|}}\n <p>{{key}}: {{value}}</p>\n {{/each-in}}\n</template>\n```",
14060
14066
  "class": "@ember/helper",
14061
14067
  "module": "@ember/helper"
14062
14068
  },
14063
14069
  {
14064
14070
  "file": "packages/@ember/helper/index.ts",
14065
- "line": 367,
14066
- "description": "Using the `{{array}}` helper, you can pass arrays directly from the template\nas an argument to your components.\n\n```js\nimport { array } from '@ember/helper';\n\n<template>\n <ul>\n {{#each (array 'Tom Dale' 'Yehuda Katz' @anotherPerson) as |person|}}\n <li>{{person}}</li>\n {{/each}}\n </ul>\n</template>\n\n**NOTE:** this example uses the experimental `<template>` feature, which is\nthe only place you need to import `array` to use it (it is a built-in when\nwriting standalone `.hbs` files).\n```",
14071
+ "line": 361,
14072
+ "description": "Using the `{{array}}` helper, you can pass arrays directly from the template\nas an argument to your components.\n\n```js\n\n<template>\n <ul>\n {{#each (array 'Tom Dale' 'Yehuda Katz' @anotherPerson) as |person|}}\n <li>{{person}}</li>\n {{/each}}\n </ul>\n</template>\n```",
14067
14073
  "class": "@ember/helper",
14068
14074
  "module": "@ember/helper"
14069
14075
  },
14070
14076
  {
14071
14077
  "file": "packages/@ember/helper/index.ts",
14072
- "line": 390,
14073
- "description": "The `{{concat}}` helper makes it easy to dynamically send a number of\nparameters to a component or helper as a single parameter in the format of a\nconcatenated string.\n\nFor example:\n\n```js\nimport { concat } from '@ember/helper';\n\n<template>\n {{get @foo (concat \"item\" @index)}}\n</template>\n```\n\nThis will display the result of `@foo.item1` when `index` is `1`, and\n`this.foo.item2` when `index` is `2`, etc.\n\n**NOTE:** this example uses the experimental `<template>` feature, which is\nthe only place you need to import `concat` to use it (it is a built-in when\nwriting standalone `.hbs` files).",
14078
+ "line": 379,
14079
+ "description": "The `{{concat}}` helper makes it easy to dynamically send a number of\nparameters to a component or helper as a single parameter in the format of a\nconcatenated string.\n\nFor example:\n\n```js\nimport { concat } from '@ember/helper';\n\n<template>\n {{get @foo (concat \"item\" @index)}}\n</template>\n```\n\nThis will display the result of `@foo.item1` when `index` is `1`, and\n`this.foo.item2` when `index` is `2`, etc.",
14074
14080
  "class": "@ember/helper",
14075
14081
  "module": "@ember/helper"
14076
14082
  },
14077
14083
  {
14078
14084
  "file": "packages/@ember/helper/index.ts",
14079
- "line": 415,
14080
- "description": "The `{{get}}` helper makes it easy to dynamically look up a property on an\nobject or an element in an array. The second argument to `{{get}}` can be a\nstring or a number, depending on the object being accessed.\n\nTo access a property on an object with a string key:\n\n```js\nimport { get } from '@ember/helper';\n\n<template>\n {{get @someObject \"objectKey\"}}\n</template>\n```\n\nTo access the first element in an array:\n\n```js\nimport { get } from '@ember/helper';\n\n<template>\n {{get @someArray 0}}\n</template>\n```\n\nTo access a property on an object with a dynamic key:\n\n```js\nimport { get } from '@ember/helper';\n\n<template>\n {{get @address @field}}\n</template>\n```\n\nThis will display the result of `@foo.item1` when `index` is `1`, and\n`this.foo.item2` when `index` is `2`, etc.\n\n**NOTE:** this example uses the experimental `<template>` feature, which is\nthe only place you need to import `concat` to use it (it is a built-in when\nwriting standalone `.hbs` files).",
14085
+ "line": 400,
14086
+ "description": "The `{{get}}` helper makes it easy to dynamically look up a property on an\nobject or an element in an array. The second argument to `{{get}}` can be a\nstring or a number, depending on the object being accessed.\n\nTo access a property on an object with a string key:\n\n```js\nimport { get } from '@ember/helper';\n\n<template>\n {{get @someObject \"objectKey\"}}\n</template>\n```\n\nTo access the first element in an array:\n\n```js\nimport { get } from '@ember/helper';\n\n<template>\n {{get @someArray 0}}\n</template>\n```\n\nTo access a property on an object with a dynamic key:\n\n```js\nimport { get } from '@ember/helper';\n\n<template>\n {{get @address @field}}\n</template>\n```\n\nThis will display the result of `@foo.item1` when `index` is `1`, and\n`this.foo.item2` when `index` is `2`, etc.",
14081
14087
  "class": "@ember/helper",
14082
14088
  "module": "@ember/helper"
14083
14089
  },
14084
14090
  {
14085
14091
  "file": "packages/@ember/helper/index.ts",
14086
- "line": 460,
14092
+ "line": 441,
14087
14093
  "description": "`{{fn}}` is a helper that receives a function and some arguments, and returns\na new function that combines. This allows you to pass parameters along to\nfunctions in your templates:\n\n```js\nimport { fn } from '@ember/helper';\n\nfunction showAlert(message) {\n alert(`The message is: '${message}'`);\n}\n\n<template>\n <button type=\"button\" {{on \"click\" (fn showAlert \"Hello!\")}}>\n Click me!\n </button>\n</template>\n```",
14088
14094
  "class": "@ember/helper",
14089
14095
  "module": "@ember/helper"
14090
14096
  },
14091
14097
  {
14092
14098
  "file": "packages/@ember/helper/index.ts",
14093
- "line": 482,
14099
+ "line": 463,
14094
14100
  "description": "The `{{gt}}` helper returns `true` if the first argument is greater than\nthe second argument.\n\n```js\nimport { gt } from '@ember/helper';\n\n<template>\n {{if (gt @score 100) \"High score!\" \"Keep trying\"}}\n</template>\n```\n\nIn strict-mode (gjs/gts) templates, `gt` is available as a keyword and\ndoes not need to be imported.",
14095
14101
  "itemtype": "method",
14096
14102
  "name": "gt",
@@ -14115,7 +14121,7 @@
14115
14121
  },
14116
14122
  {
14117
14123
  "file": "packages/@ember/helper/index.ts",
14118
- "line": 505,
14124
+ "line": 486,
14119
14125
  "description": "The `{{gte}}` helper returns `true` if the first argument is greater than\nor equal to the second argument.\n\n```js\nimport { gte } from '@ember/helper';\n\n<template>\n {{if (gte @age 18) \"Adult\" \"Minor\"}}\n</template>\n```\n\nIn strict-mode (gjs/gts) templates, `gte` is available as a keyword and\ndoes not need to be imported.",
14120
14126
  "itemtype": "method",
14121
14127
  "name": "gte",
@@ -14140,7 +14146,7 @@
14140
14146
  },
14141
14147
  {
14142
14148
  "file": "packages/@ember/helper/index.ts",
14143
- "line": 528,
14149
+ "line": 509,
14144
14150
  "description": "The `{{lt}}` helper returns `true` if the first argument is less than\nthe second argument.\n\n```js\nimport { lt } from '@ember/helper';\n\n<template>\n {{if (lt @temperature 0) \"Freezing\" \"Above zero\"}}\n</template>\n```\n\nIn strict-mode (gjs/gts) templates, `lt` is available as a keyword and\ndoes not need to be imported.",
14145
14151
  "itemtype": "method",
14146
14152
  "name": "lt",
@@ -14165,7 +14171,7 @@
14165
14171
  },
14166
14172
  {
14167
14173
  "file": "packages/@ember/helper/index.ts",
14168
- "line": 551,
14174
+ "line": 532,
14169
14175
  "description": "The `{{lte}}` helper returns `true` if the first argument is less than\nor equal to the second argument.\n\n```js\nimport { lte } from '@ember/helper';\n\n<template>\n {{if (lte @count 0) \"Empty\" \"Has items\"}}\n</template>\n```\n\nIn strict-mode (gjs/gts) templates, `lte` is available as a keyword and\ndoes not need to be imported.",
14170
14176
  "itemtype": "method",
14171
14177
  "name": "lte",
@@ -14190,7 +14196,7 @@
14190
14196
  },
14191
14197
  {
14192
14198
  "file": "packages/@ember/helper/index.ts",
14193
- "line": 574,
14199
+ "line": 555,
14194
14200
  "description": "The `element` helper lets you dynamically set the tag name of an element.\n\n```js\nimport { element } from '@ember/helper';\n\n<template>\n {{#let (element @tagName) as |Tag|}}\n <Tag class=\"my-element\">Hello</Tag>\n {{/let}}\n</template>\n```\n\nWhen `@tagName` is `\"h1\"`, this renders `<h1 class=\"my-element\">Hello</h1>`.\nWhen `@tagName` is an empty string, the block content is rendered without a\nwrapping element. When `@tagName` is `null` or `undefined`, nothing is rendered.",
14195
14201
  "itemtype": "method",
14196
14202
  "name": "element",
@@ -14206,14 +14212,14 @@
14206
14212
  },
14207
14213
  {
14208
14214
  "file": "packages/@ember/helper/index.ts",
14209
- "line": 597,
14215
+ "line": 578,
14210
14216
  "description": "Use the {{uniqueId}} helper to generate a unique ID string suitable for use as\nan ID attribute in the DOM.\n\nEach invocation of {{uniqueId}} will return a new, unique ID string.\nYou can use the `let` helper to create an ID that can be reused within a template.\n\n```js\nimport { uniqueId } from '@ember/helper';\n\n<template>\n {{#let (uniqueId) as |emailId|}}\n <label for={{emailId}}>Email address</label>\n <input id={{emailId}} type=\"email\" />\n {{/let}}\n</template>\n```",
14211
14217
  "class": "@ember/helper",
14212
14218
  "module": "@ember/helper"
14213
14219
  },
14214
14220
  {
14215
14221
  "file": "packages/@ember/helper/index.ts",
14216
- "line": 618,
14222
+ "line": 599,
14217
14223
  "description": "The `{{eq}}` helper returns `true` if its two arguments are strictly equal\n(`===`). Takes exactly two arguments.\n\n```js\nimport { eq } from '@ember/helper';\n\n<template>\n {{if (eq @status \"active\") \"Active\" \"Inactive\"}}\n</template>\n```\n\nIn strict-mode (gjs/gts) templates, `eq` is available as a keyword and\ndoes not need to be imported.",
14218
14224
  "itemtype": "method",
14219
14225
  "name": "eq",
@@ -14238,7 +14244,7 @@
14238
14244
  },
14239
14245
  {
14240
14246
  "file": "packages/@ember/helper/index.ts",
14241
- "line": 641,
14247
+ "line": 622,
14242
14248
  "description": "The `{{neq}}` helper returns `true` if its two arguments are strictly\nnot equal (`!==`). Takes exactly two arguments.\n\n```js\nimport { neq } from '@ember/helper';\n\n<template>\n {{if (neq @status \"active\") \"Not active\" \"Active\"}}\n</template>\n```\n\nIn strict-mode (gjs/gts) templates, `neq` is available as a keyword and\ndoes not need to be imported.",
14243
14249
  "itemtype": "method",
14244
14250
  "name": "neq",
@@ -14263,7 +14269,7 @@
14263
14269
  },
14264
14270
  {
14265
14271
  "file": "packages/@ember/helper/index.ts",
14266
- "line": 664,
14272
+ "line": 645,
14267
14273
  "description": "The `{{and}}` helper evaluates arguments left to right, returning the first\nfalsy value (using Handlebars truthiness) or the right-most value if all\nare truthy. Requires at least two arguments.\n\n```js\nimport { and } from '@ember/helper';\n\n<template>\n {{if (and @isAdmin @isLoggedIn) \"Welcome, admin!\" \"Access denied\"}}\n</template>\n```\n\nIn strict-mode (gjs/gts) templates, `and` is available as a keyword and\ndoes not need to be imported.",
14268
14274
  "itemtype": "method",
14269
14275
  "name": "and",
@@ -14283,7 +14289,7 @@
14283
14289
  },
14284
14290
  {
14285
14291
  "file": "packages/@ember/helper/index.ts",
14286
- "line": 687,
14292
+ "line": 668,
14287
14293
  "description": "The `{{or}}` helper evaluates arguments left to right, returning the first\ntruthy value (using Handlebars truthiness) or the right-most value if all\nare falsy. Requires at least two arguments.\n\n```js\nimport { or } from '@ember/helper';\n\n<template>\n {{if (or @hasAccess @isAdmin) \"Welcome!\" \"No access\"}}\n</template>\n```\n\nIn strict-mode (gjs/gts) templates, `or` is available as a keyword and\ndoes not need to be imported.",
14288
14294
  "itemtype": "method",
14289
14295
  "name": "or",
@@ -14303,7 +14309,7 @@
14303
14309
  },
14304
14310
  {
14305
14311
  "file": "packages/@ember/helper/index.ts",
14306
- "line": 710,
14312
+ "line": 691,
14307
14313
  "description": "The `{{not}}` helper returns the logical negation of its argument using\nHandlebars truthiness. Takes exactly one argument.\n\n```js\nimport { not } from '@ember/helper';\n\n<template>\n {{if (not @isDisabled) \"Enabled\" \"Disabled\"}}\n</template>\n```\n\nIn strict-mode (gjs/gts) templates, `not` is available as a keyword and\ndoes not need to be imported.",
14308
14314
  "itemtype": "method",
14309
14315
  "name": "not",
@@ -15709,7 +15715,7 @@
15709
15715
  {
15710
15716
  "file": "packages/@ember/object/index.ts",
15711
15717
  "line": 48,
15712
- "description": "Decorator that turns the target function into an Action which can be accessed\ndirectly by reference.\n\n```js\nimport Component from '@ember/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nexport default class Tooltip extends Component {\n @tracked isShowing = false;\n\n @action\n toggleShowing() {\n this.isShowing = !this.isShowing;\n }\n}\n```\n```hbs\n<!-- template.hbs -->\n<button {{on \"click\" this.toggleShowing}}>Show tooltip</button>\n\n{{#if isShowing}}\n <div class=\"tooltip\">\n I'm a tooltip!\n </div>\n{{/if}}\n```\n\nIt also binds the function directly to the instance, so it can be used in any\ncontext and will correctly refer to the class it came from:\n\n```js\nimport Component from '@ember/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nexport default class Tooltip extends Component {\n constructor() {\n super(...arguments);\n\n // this.toggleShowing is still bound correctly when added to\n // the event listener\n document.addEventListener('click', this.toggleShowing);\n }\n\n @tracked isShowing = false;\n\n @action\n toggleShowing() {\n this.isShowing = !this.isShowing;\n }\n}\n```",
15718
+ "description": "Decorator that turns the target function into an Action which can be accessed\ndirectly by reference.\n\n```gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nexport default class Tooltip extends Component {\n @tracked isShowing = false;\n\n @action\n toggleShowing() {\n this.isShowing = !this.isShowing;\n }\n \n <template>\n <button {{on \"click\" this.toggleShowing}}>Show tooltip</button>\n \n {{#if isShowing}}\n <div class=\"tooltip\">\n I'm a tooltip!\n </div>\n {{/if}}\n </template>\n}\n```\n\nIt also binds the function directly to the instance, so it can be used in any\ncontext and will correctly refer to the class it came from:\n\n```gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nexport default class Tooltip extends Component {\n constructor() {\n super(...arguments);\n\n // this.toggleShowing is still bound correctly when added to\n // the event listener\n document.addEventListener('click', this.toggleShowing);\n }\n\n @tracked isShowing = false;\n\n @action\n toggleShowing() {\n this.isShowing = !this.isShowing;\n }\n \n <template>\n {{!-- ...--}}\n </template>\n}\n```",
15713
15719
  "access": "public",
15714
15720
  "tagname": "",
15715
15721
  "itemtype": "method",
@@ -15731,8 +15737,8 @@
15731
15737
  },
15732
15738
  {
15733
15739
  "file": "packages/@ember/object/index.ts",
15734
- "line": 237,
15735
- "description": "Specify a method that observes property changes.\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { observer } from '@ember/object';\n\nexport default EmberObject.extend({\n valueObserver: observer('value', function() {\n // Executes whenever the \"value\" property changes\n })\n});\n```\n\nAlso available as `Function.prototype.observes` if prototype extensions are\nenabled.",
15740
+ "line": 241,
15741
+ "description": "Specify a method that observes property changes.\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { observer } from '@ember/object';\n\nexport default EmberObject.extend({\n valueObserver: observer('value', function() {\n // Executes whenever the \"value\" property changes\n })\n});\n```\n\nWhile observers are still supported, there are [plans to deprecate them](https://github.com/emberjs/rfcs/pull/1115)\nSee the [in-progress deprecation guide](https://github.com/ember-learn/deprecation-app/pull/1407) \nfor guidance on how to avoid using observers.",
15736
15742
  "itemtype": "method",
15737
15743
  "name": "observer",
15738
15744
  "params": [
@@ -16042,7 +16048,7 @@
16042
16048
  {
16043
16049
  "file": "packages/@ember/object/observable.ts",
16044
16050
  "line": 250,
16045
- "description": "Adds an observer on a property.\n\nThis is the core method used to register an observer for a property.\n\nOnce you call this method, any time the key's value is set, your observer\nwill be notified. Note that the observers are triggered any time the\nvalue is set, regardless of whether it has actually changed. Your\nobserver should be prepared to handle that.\n\nThere are two common invocation patterns for `.addObserver()`:\n\n- Passing two arguments:\n - the name of the property to observe (as a string)\n - the function to invoke (an actual function)\n- Passing three arguments:\n - the name of the property to observe (as a string)\n - the target object (will be used to look up and invoke a\n function on)\n - the name of the function to invoke on the target object\n (as a string).\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n init() {\n this._super(...arguments);\n\n // the following are equivalent:\n\n // using three arguments\n this.addObserver('foo', this, 'fooDidChange');\n\n // using two arguments\n this.addObserver('foo', (...args) => {\n this.fooDidChange(...args);\n });\n },\n\n fooDidChange() {\n // your custom logic code\n }\n});\n```\n\n### Observer Methods\n\nObserver methods have the following signature:\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n init() {\n this._super(...arguments);\n this.addObserver('foo', this, 'fooDidChange');\n },\n\n fooDidChange(sender, key, value, rev) {\n // your code\n }\n});\n```\n\nThe `sender` is the object that changed. The `key` is the property that\nchanges. The `value` property is currently reserved and unused. The `rev`\nis the last property revision of the object when it changed, which you can\nuse to detect if the key value has really changed or not.\n\nUsually you will not need the value or revision parameters at\nthe end. In this case, it is common to write observer methods that take\nonly a sender and key value as parameters or, if you aren't interested in\nany of these values, to write an observer that has no parameters at all.",
16051
+ "description": "Adds an observer on a property.\n\nThis is the core method used to register an observer for a property.\n\nOnce you call this method, any time the key's value is set, your observer\nwill be notified. Note that the observers are triggered any time the\nvalue is set, regardless of whether it has actually changed. Your\nobserver should be prepared to handle that.\n\nThere are two common invocation patterns for `.addObserver()`:\n\n- Passing two arguments:\n - the name of the property to observe (as a string)\n - the function to invoke (an actual function)\n- Passing three arguments:\n - the name of the property to observe (as a string)\n - the target object (will be used to look up and invoke a\n function on)\n - the name of the function to invoke on the target object\n (as a string).\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n init() {\n this._super(...arguments);\n\n // the following are equivalent:\n\n // using three arguments\n this.addObserver('foo', this, 'fooDidChange');\n\n // using two arguments\n this.addObserver('foo', (...args) => {\n this.fooDidChange(...args);\n });\n },\n\n fooDidChange() {\n // your custom logic code\n }\n});\n```\n\n### Observer Methods\n\nObserver methods have the following signature:\n\n```app/components/my-component.js\nimport Component from '@ember/component';\n\nexport default Component.extend({\n init() {\n this._super(...arguments);\n this.addObserver('foo', this, 'fooDidChange');\n },\n\n fooDidChange(sender, key, value, rev) {\n // your code\n }\n});\n```\n\nThe `sender` is the object that changed. The `key` is the property that\nchanges. The `value` property is currently reserved and unused. The `rev`\nis the last property revision of the object when it changed, which you can\nuse to detect if the key value has really changed or not.\n\nUsually you will not need the value or revision parameters at\nthe end. In this case, it is common to write observer methods that take\nonly a sender and key value as parameters or, if you aren't interested in\nany of these values, to write an observer that has no parameters at all.\n\nWhile observers are still supported, there are [plans to deprecate them](https://github.com/emberjs/rfcs/pull/1115)\nSee the [in-progress deprecation guide](https://github.com/ember-learn/deprecation-app/pull/1407)\nfor guidance on how to avoid using observers.",
16046
16052
  "itemtype": "method",
16047
16053
  "name": "addObserver",
16048
16054
  "params": [
@@ -16078,7 +16084,7 @@
16078
16084
  },
16079
16085
  {
16080
16086
  "file": "packages/@ember/object/observable.ts",
16081
- "line": 336,
16087
+ "line": 340,
16082
16088
  "description": "Remove an observer you have previously registered on this object. Pass\nthe same key, target, and method you passed to `addObserver()` and your\ntarget will no longer receive notifications.",
16083
16089
  "itemtype": "method",
16084
16090
  "name": "removeObserver",
@@ -16115,7 +16121,7 @@
16115
16121
  },
16116
16122
  {
16117
16123
  "file": "packages/@ember/object/observable.ts",
16118
- "line": 357,
16124
+ "line": 361,
16119
16125
  "description": "Set the value of a property to the current value plus some amount.\n\n```javascript\nperson.incrementProperty('age');\nteam.incrementProperty('score', 2);\n```",
16120
16126
  "itemtype": "method",
16121
16127
  "name": "incrementProperty",
@@ -16142,7 +16148,7 @@
16142
16148
  },
16143
16149
  {
16144
16150
  "file": "packages/@ember/object/observable.ts",
16145
- "line": 374,
16151
+ "line": 378,
16146
16152
  "description": "Set the value of a property to the current value minus some amount.\n\n```javascript\nplayer.decrementProperty('lives');\norc.decrementProperty('health', 5);\n```",
16147
16153
  "itemtype": "method",
16148
16154
  "name": "decrementProperty",
@@ -16169,7 +16175,7 @@
16169
16175
  },
16170
16176
  {
16171
16177
  "file": "packages/@ember/object/observable.ts",
16172
- "line": 391,
16178
+ "line": 395,
16173
16179
  "description": "Set the value of a boolean property to the opposite of its\ncurrent value.\n\n```javascript\nstarship.toggleProperty('warpDriveEngaged');\n```",
16174
16180
  "itemtype": "method",
16175
16181
  "name": "toggleProperty",
@@ -16191,7 +16197,7 @@
16191
16197
  },
16192
16198
  {
16193
16199
  "file": "packages/@ember/object/observable.ts",
16194
- "line": 406,
16200
+ "line": 410,
16195
16201
  "description": "Returns the cached value of a computed property, if it exists.\nThis allows you to inspect the value of a computed property\nwithout accidentally invoking it if it is intended to be\ngenerated lazily.",
16196
16202
  "itemtype": "method",
16197
16203
  "name": "cacheFor",
@@ -16213,7 +16219,7 @@
16213
16219
  },
16214
16220
  {
16215
16221
  "file": "packages/@ember/object/observable.ts",
16216
- "line": 436,
16222
+ "line": 440,
16217
16223
  "description": "Begins a grouping of property changes.\n\nYou can use this method to group property changes so that notifications\nwill not be sent until the changes are finished. If you plan to make a\nlarge number of changes to an object at one time, you should call this\nmethod at the beginning of the changes to begin deferring change\nnotifications. When you are done making changes, call\n`endPropertyChanges()` to deliver the deferred change notifications and end\ndeferring.",
16218
16224
  "itemtype": "method",
16219
16225
  "name": "beginPropertyChanges",
@@ -16228,7 +16234,7 @@
16228
16234
  },
16229
16235
  {
16230
16236
  "file": "packages/@ember/object/observable.ts",
16231
- "line": 456,
16237
+ "line": 460,
16232
16238
  "description": "Ends a grouping of property changes.\n\nYou can use this method to group property changes so that notifications\nwill not be sent until the changes are finished. If you plan to make a\nlarge number of changes to an object at one time, you should call\n`beginPropertyChanges()` at the beginning of the changes to defer change\nnotifications. When you are done making changes, call this method to\ndeliver the deferred change notifications and end deferring.",
16233
16239
  "itemtype": "method",
16234
16240
  "name": "endPropertyChanges",
@@ -16243,7 +16249,7 @@
16243
16249
  },
16244
16250
  {
16245
16251
  "file": "packages/@ember/object/observable.ts",
16246
- "line": 500,
16252
+ "line": 504,
16247
16253
  "description": "Returns `true` if the object currently has observers registered for a\nparticular key. You can use this method to potentially defer performing\nan expensive action until someone begins observing a particular property\non the object.",
16248
16254
  "itemtype": "method",
16249
16255
  "name": "hasObserverFor",
@@ -16429,10 +16435,7 @@
16429
16435
  {
16430
16436
  "file": "packages/@ember/reactive/collections.ts",
16431
16437
  "line": 8,
16432
- "description": "A utility for creating tracked arrays, copying the original data so that\nmutations to the tracked data don't mutate the original untracked data.\n\n`trackedArray` can be used in templates and in JavaScript via import.\nAll property accesses entangle with that property, all property sets dirty\nthat property, and changes to the collection only render what changed\nwithout causing unneeded renders.\n\nSee [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)",
16433
- "example": [
16434
- "\n```javascript\nimport { trackedArray } from '@ember/reactive/collections';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n\nconst nonTrackedArray = [1, 2, 3];\nconst addTo = (arr) => arr.push(Math.random());\n\n<template>\n {{#let (trackedArray nonTrackedArray) as |arr|}}\n {{#each arr as |datum|}}\n {{datum}}\n {{/each}}\n\n <button {{on 'click' (fn addTo arr)}}>Add Item</button>\n {{/let}}\n</template>\n```"
16435
- ],
16438
+ "description": "A utility for creating tracked arrays, copying the original data so that\nmutations to the tracked data don't mutate the original untracked data.\n\n`trackedArray` can be used in templates and in JavaScript via import.\nAll property accesses entangle with that property, all property sets dirty\nthat property, and changes to the collection only render what changed\nwithout causing unneeded renders.\n\nSee [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)\n\n```javascript\nimport { trackedArray } from '@ember/reactive/collections';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n\nconst nonTrackedArray = [1, 2, 3];\nconst addTo = (arr) => arr.push(Math.random());\n\n<template>\n {{#let (trackedArray nonTrackedArray) as |arr|}}\n {{#each arr as |datum|}}\n {{datum}}\n {{/each}}\n\n <button {{on 'click' (fn addTo arr)}}>Add Item</button>\n {{/let}}\n</template>\n```",
16436
16439
  "itemtype": "method",
16437
16440
  "name": "trackedArray",
16438
16441
  "static": 1,
@@ -16475,11 +16478,8 @@
16475
16478
  },
16476
16479
  {
16477
16480
  "file": "packages/@ember/reactive/collections.ts",
16478
- "line": 51,
16479
- "description": "A utility for creating tracked objects, copying the original data so that\nmutations to the tracked data don't mutate the original untracked data.\n\n`trackedObject` can be used in templates and in JavaScript via import.\nAll property accesses entangle with that property, all property sets dirty\nthat property, and changes to the collection only render what changed\nwithout causing unneeded renders.\n\nSee [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)",
16480
- "example": [
16481
- "\n```gjs\nimport { trackedObject } from '@ember/reactive/collections';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n\nconst nonTrackedObject = { a: 1 };\nconst addTo = (obj) => obj[Math.random()] = Math.random();\n\n<template>\n {{#let (trackedObject nonTrackedObject) as |obj|}}\n {{#each-in obj as |key value|}}\n {{key}} => {{value}}<br>\n {{/each-in}}\n\n <button {{on 'click' (fn addTo obj)}}>Add Pair</button>\n {{/let}}\n</template>\n```"
16482
- ],
16481
+ "line": 50,
16482
+ "description": "A utility for creating tracked objects, copying the original data so that\nmutations to the tracked data don't mutate the original untracked data.\n\n`trackedObject` can be used in templates and in JavaScript via import.\nAll property accesses entangle with that property, all property sets dirty\nthat property, and changes to the collection only render what changed\nwithout causing unneeded renders.\n\nSee [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)\n\n```gjs\nimport { trackedObject } from '@ember/reactive/collections';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n\nconst nonTrackedObject = { a: 1 };\nconst addTo = (obj) => obj[Math.random()] = Math.random();\n\n<template>\n {{#let (trackedObject nonTrackedObject) as |obj|}}\n {{#each-in obj as |key value|}}\n {{key}} => {{value}}<br>\n {{/each-in}}\n\n <button {{on 'click' (fn addTo obj)}}>Add Pair</button>\n {{/let}}\n</template>\n```",
16483
16483
  "itemtype": "method",
16484
16484
  "name": "trackedObject",
16485
16485
  "static": 1,
@@ -16522,11 +16522,8 @@
16522
16522
  },
16523
16523
  {
16524
16524
  "file": "packages/@ember/reactive/collections.ts",
16525
- "line": 94,
16526
- "description": "A utility for creating tracked sets, copying the original data so that\nmutations to the tracked data don't mutate the original untracked data.\n\n`trackedSet` can be used in templates and in JavaScript via import.\nAll property accesses entangle with that property, all property sets dirty\nthat property, and changes to the collection only render what changed\nwithout causing unneeded renders.\n\nSee [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set)",
16527
- "example": [
16528
- "\n```gjs\nimport { trackedSet } from '@ember/reactive/collections';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n\nconst nonTrackedSet = new Set();\nnonTrackedSet.add(1);\nconst addTo = (set) => set.add(Math.random());\n\n<template>\n {{#let (trackedSet nonTrackedSet) as |set|}}\n {{#each set as |value|}}\n {{value}}<br>\n {{/each}}\n\n <button {{on 'click' (fn addTo set)}}>Add</button>\n {{/let}}\n</template>\n```"
16529
- ],
16525
+ "line": 92,
16526
+ "description": "A utility for creating tracked sets, copying the original data so that\nmutations to the tracked data don't mutate the original untracked data.\n\n`trackedSet` can be used in templates and in JavaScript via import.\nAll property accesses entangle with that property, all property sets dirty\nthat property, and changes to the collection only render what changed\nwithout causing unneeded renders.\n\nSee [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set)\n\n```gjs\nimport { trackedSet } from '@ember/reactive/collections';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n\nconst nonTrackedSet = new Set();\nnonTrackedSet.add(1);\nconst addTo = (set) => set.add(Math.random());\n\n<template>\n {{#let (trackedSet nonTrackedSet) as |set|}}\n {{#each set as |value|}}\n {{value}}<br>\n {{/each}}\n\n <button {{on 'click' (fn addTo set)}}>Add</button>\n {{/let}}\n</template>\n```",
16530
16527
  "itemtype": "method",
16531
16528
  "name": "trackedSet",
16532
16529
  "static": 1,
@@ -16569,11 +16566,8 @@
16569
16566
  },
16570
16567
  {
16571
16568
  "file": "packages/@ember/reactive/collections.ts",
16572
- "line": 138,
16573
- "description": "A utility for creating tracked weak sets, copying the original data so that\nmutations to the tracked data don't mutate the original untracked data.\n\n`trackedWeakSet` can be used in templates and in JavaScript via import.\nAll property accesses entangle with that property, all property sets dirty\nthat property, and changes to the collection only render what changed\nwithout causing unneeded renders.\n\nWeakSets hold weak references to their values, allowing garbage collection\nwhen objects are no longer referenced elsewhere.\n\nSee [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet)",
16574
- "example": [
16575
- "\n```gjs\nimport { trackedWeakSet } from '@ember/reactive/collections';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n\nconst nonTrackedWeakSet = new WeakSet();\n\n<template>\n {{#let (trackedWeakSet nonTrackedWeakSet) as |weakSet|}}\n {{log weakSet}}\n {{/let}}\n</template>\n```"
16576
- ],
16569
+ "line": 135,
16570
+ "description": "A utility for creating tracked weak sets, copying the original data so that\nmutations to the tracked data don't mutate the original untracked data.\n\n`trackedWeakSet` can be used in templates and in JavaScript via import.\nAll property accesses entangle with that property, all property sets dirty\nthat property, and changes to the collection only render what changed\nwithout causing unneeded renders.\n\nWeakSets hold weak references to their values, allowing garbage collection\nwhen objects are no longer referenced elsewhere.\n\nSee [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet)\n\n```gjs\nimport { trackedWeakSet } from '@ember/reactive/collections';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n\nconst nonTrackedWeakSet = new WeakSet();\n\n<template>\n {{#let (trackedWeakSet nonTrackedWeakSet) as |weakSet|}}\n {{log weakSet}}\n {{/let}}\n</template>\n```",
16577
16571
  "itemtype": "method",
16578
16572
  "name": "trackedWeakSet",
16579
16573
  "static": 1,
@@ -16616,11 +16610,8 @@
16616
16610
  },
16617
16611
  {
16618
16612
  "file": "packages/@ember/reactive/collections.ts",
16619
- "line": 179,
16620
- "description": "A utility for creating tracked maps, copying the original data so that\nmutations to the tracked data don't mutate the original untracked data.\n\n`trackedMap` can be used in templates and in JavaScript via import.\nAll property accesses entangle with that property, all property sets dirty\nthat property, and changes to the collection only render what changed\nwithout causing unneeded renders.\n\nSee [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)",
16621
- "example": [
16622
- "\n```gjs\nimport { trackedMap } from '@ember/reactive/collections';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n\nconst nonTrackedMap = new Map();\nnonTrackedMap.set('a', 1);\nconst addTo = (map) => map.set(Math.random(), Math.random());\n\n<template>\n {{#let (trackedMap nonTrackedMap) as |map|}}\n {{#each-in map as |key value|}}\n {{key}} => {{value}}<br>\n {{/each-in}}\n\n <button {{on 'click' (fn addTo map)}}>Add Pair</button>\n {{/let}}\n</template>\n```"
16623
- ],
16613
+ "line": 175,
16614
+ "description": "A utility for creating tracked maps, copying the original data so that\nmutations to the tracked data don't mutate the original untracked data.\n\n`trackedMap` can be used in templates and in JavaScript via import.\nAll property accesses entangle with that property, all property sets dirty\nthat property, and changes to the collection only render what changed\nwithout causing unneeded renders.\n\nSee [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)\n\n```gjs\nimport { trackedMap } from '@ember/reactive/collections';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n\nconst nonTrackedMap = new Map();\nnonTrackedMap.set('a', 1);\nconst addTo = (map) => map.set(Math.random(), Math.random());\n\n<template>\n {{#let (trackedMap nonTrackedMap) as |map|}}\n {{#each-in map as |key value|}}\n {{key}} => {{value}}<br>\n {{/each-in}}\n\n <button {{on 'click' (fn addTo map)}}>Add Pair</button>\n {{/let}}\n</template>\n```",
16624
16615
  "itemtype": "method",
16625
16616
  "name": "trackedMap",
16626
16617
  "static": 1,
@@ -16663,11 +16654,8 @@
16663
16654
  },
16664
16655
  {
16665
16656
  "file": "packages/@ember/reactive/collections.ts",
16666
- "line": 223,
16667
- "description": "A utility for creating tracked weak maps, copying the original data so that\nmutations to the tracked data don't mutate the original untracked data.\n\n`trackedWeakMap` can be used in templates and in JavaScript via import.\nAll property accesses entangle with that property, all property sets dirty\nthat property, and changes to the collection only render what changed\nwithout causing unneeded renders.\n\nWeakMaps hold weak references to their keys, allowing garbage collection\nwhen key objects are no longer referenced elsewhere.\n\nSee [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap)",
16668
- "example": [
16669
- "\n```gjs\nimport { trackedWeakMap } from '@ember/reactive/collections';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n\nconst nonTrackedWeakMap = new WeakMap();\n\n<template>\n {{#let (trackedWeakMap nonTrackedWeakMap) as |weakMap|}}\n {{log weakMap}}\n {{/let}}\n</template>\n```"
16670
- ],
16657
+ "line": 218,
16658
+ "description": "A utility for creating tracked weak maps, copying the original data so that\nmutations to the tracked data don't mutate the original untracked data.\n\n`trackedWeakMap` can be used in templates and in JavaScript via import.\nAll property accesses entangle with that property, all property sets dirty\nthat property, and changes to the collection only render what changed\nwithout causing unneeded renders.\n\nWeakMaps hold weak references to their keys, allowing garbage collection\nwhen key objects are no longer referenced elsewhere.\n\nSee [MDN for more information](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap)\n\n```gjs\nimport { trackedWeakMap } from '@ember/reactive/collections';\nimport { on } from '@ember/modifier';\nimport { fn } from '@ember/helper';\n\nconst nonTrackedWeakMap = new WeakMap();\n\n<template>\n {{#let (trackedWeakMap nonTrackedWeakMap) as |weakMap|}}\n {{log weakMap}}\n {{/let}}\n</template>\n```",
16671
16659
  "itemtype": "method",
16672
16660
  "name": "trackedWeakMap",
16673
16661
  "static": 1,
@@ -18076,7 +18064,7 @@
18076
18064
  {
18077
18065
  "file": "packages/@ember/routing/route.ts",
18078
18066
  "line": 1104,
18079
- "description": "A hook you can implement to convert the URL into the model for\nthis route.\n\n```app/router.js\n// ...\n\nRouter.map(function() {\n this.route('post', { path: '/posts/:post_id' });\n});\n\nexport default Router;\n```\n\nNote that for routes with dynamic segments, this hook is not always\nexecuted. If the route is entered through a transition (e.g. when\nusing the `link-to` Handlebars helper or the `transitionTo` method\nof routes), and a model context is already provided this hook\nis not called.\n\nA model context does not include a primitive string or number,\nwhich does cause the model hook to be called.\n\nRoutes without dynamic segments will always execute the model hook.\n\n```javascript\n// no dynamic segment, model hook always called\nthis.router.transitionTo('posts');\n\n// model passed in, so model hook not called\nthePost = store.findRecord('post', 1);\nthis.router.transitionTo('post', thePost);\n\n// integer passed in, model hook is called\nthis.router.transitionTo('post', 1);\n\n// model id passed in, model hook is called\n// useful for forcing the hook to execute\nthePost = store.findRecord('post', 1);\nthis.router.transitionTo('post', thePost.id);\n```\n\nThis hook follows the asynchronous/promise semantics\ndescribed in the documentation for `beforeModel`. In particular,\nif a promise returned from `model` fails, the error will be\nhandled by the `error` hook on `Route`.\n\nNote that the legacy behavior of automatically defining a model\nhook when a dynamic segment ending in `_id` is present is\n[deprecated](https://deprecations.emberjs.com/v5.x#toc_deprecate-implicit-route-model).\nYou should explicitly define a model hook whenever any segments are\npresent.\n\nExample\n\n```app/routes/post.js\nimport Route from '@ember/routing/route';\nimport { service } from '@ember/service';\n\nexport default class PostRoute extends Route {\n @service store;\n\n model(params) {\n return this.store.findRecord('post', params.post_id);\n }\n}\n```",
18067
+ "description": "A hook you can implement to convert the URL into the model for\nthis route.\n\n```app/router.js\n// ...\n\nRouter.map(function() {\n this.route('post', { path: '/posts/:post_id' });\n});\n\nexport default Router;\n```\n\nNote that for routes with dynamic segments, this hook is not always\nexecuted. If the route is entered through a transition (e.g. when\nusing the `link-to` helper or the `transitionTo` method\nof routes), and a model context is already provided this hook\nis not called.\n\nA model context does not include a primitive string or number,\nwhich does cause the model hook to be called.\n\nRoutes without dynamic segments will always execute the model hook.\n\n```javascript\n// no dynamic segment, model hook always called\nthis.router.transitionTo('posts');\n\n// model passed in, so model hook not called\nthePost = store.findRecord('post', 1);\nthis.router.transitionTo('post', thePost);\n\n// integer passed in, model hook is called\nthis.router.transitionTo('post', 1);\n\n// model id passed in, model hook is called\n// useful for forcing the hook to execute\nthePost = store.findRecord('post', 1);\nthis.router.transitionTo('post', thePost.id);\n```\n\nThis hook follows the asynchronous/promise semantics\ndescribed in the documentation for `beforeModel`. In particular,\nif a promise returned from `model` fails, the error will be\nhandled by the `error` hook on `Route`.\n\nNote that the legacy behavior of automatically defining a model\nhook when a dynamic segment ending in `_id` is present is\n[deprecated](https://deprecations.emberjs.com/v5.x#toc_deprecate-implicit-route-model).\nYou should explicitly define a model hook whenever any segments are\npresent.\n\nExample\n\n```app/routes/post.js\nimport Route from '@ember/routing/route';\nimport { service } from '@ember/service';\n\nexport default class PostRoute extends Route {\n @service store;\n\n model(params) {\n return this.store.findRecord('post', params.post_id);\n }\n}\n```",
18080
18068
  "itemtype": "method",
18081
18069
  "name": "model",
18082
18070
  "params": [
@@ -18130,10 +18118,7 @@
18130
18118
  {
18131
18119
  "file": "packages/@ember/routing/route.ts",
18132
18120
  "line": 1234,
18133
- "description": "A hook you can use to setup the controller for the current route.\n\nThis method is called with the controller for the current route and the\nmodel supplied by the `model` hook.\n\nBy default, the `setupController` hook sets the `model` property of\nthe controller to the specified `model` when it is not `undefined`.\n\nIf you implement the `setupController` hook in your Route, it will\nprevent this default behavior. If you want to preserve that behavior\nwhen implementing your `setupController` function, make sure to call\n`super`:\n\n```app/routes/photos.js\nimport Route from '@ember/routing/route';\nimport { service } from '@ember/service';\n\nexport default class PhotosRoute extends Route {\n @service store;\n\n model() {\n return this.store.findAll('photo');\n }\n\n setupController(controller, model) {\n super.setupController(controller, model);\n\n this.controllerFor('application').set('showingPhotos', true);\n }\n}\n```\n\nThe provided controller will be one resolved based on the name\nof this route.\n\nIf no explicit controller is defined, Ember will automatically create one.\n\nAs an example, consider the router:\n\n```app/router.js\n// ...\n\nRouter.map(function() {\n this.route('post', { path: '/posts/:post_id' });\n});\n\nexport default Router;\n```\n\nIf you have defined a file for the post controller,\nthe framework will use it.\nIf it is not defined, a basic `Controller` instance would be used.",
18134
- "example": [
18135
- " Behavior of a basic Controller\n\n```app/routes/post.js\nimport Route from '@ember/routing/route';\n\nexport default class PostRoute extends Route {\n setupController(controller, model) {\n controller.set('model', model);\n }\n});\n```"
18136
- ],
18121
+ "description": "A hook you can use to setup the controller for the current route.\n\nThis method is called with the controller for the current route and the\nmodel supplied by the `model` hook.\n\nBy default, the `setupController` hook sets the `model` property of\nthe controller to the specified `model` when it is not `undefined`.\n\nIf you implement the `setupController` hook in your Route, it will\nprevent this default behavior. If you want to preserve that behavior\nwhen implementing your `setupController` function, make sure to call\n`super`:\n\n```app/routes/photos.js\nimport Route from '@ember/routing/route';\nimport { service } from '@ember/service';\n\nexport default class PhotosRoute extends Route {\n @service store;\n\n model() {\n return this.store.findAll('photo');\n }\n\n setupController(controller, model) {\n super.setupController(controller, model);\n\n this.controllerFor('application').set('showingPhotos', true);\n }\n}\n```\n\nThe provided controller will be one resolved based on the name\nof this route.\n\nIf no explicit controller is defined, Ember will automatically create one.\n\nAs an example, consider the router:\n\n```app/router.js\n// ...\n\nRouter.map(function() {\n this.route('post', { path: '/posts/:post_id' });\n});\n\nexport default Router;\n```\n\nIf you have defined a file for the post controller,\nthe framework will use it.\nIf it is not defined, a basic `Controller` instance would be used.\n\nExample Behavior of a basic Controller\n\n```app/routes/post.js\nimport Route from '@ember/routing/route';\n\nexport default class PostRoute extends Route {\n setupController(controller, model) {\n controller.set('model', model);\n }\n});\n```",
18137
18122
  "itemtype": "method",
18138
18123
  "name": "setupController",
18139
18124
  "params": [
@@ -18348,7 +18333,7 @@
18348
18333
  {
18349
18334
  "file": "packages/@ember/routing/router-service.ts",
18350
18335
  "line": 90,
18351
- "description": "Transition the application into another route. The route may\nbe either a single route or route path:\n\nCalling `transitionTo` from the Router service will cause default query parameter values to be included in the URL.\nThis behavior is different from calling `transitionTo` on a route or `transitionToRoute` on a controller.\nSee the [Router Service RFC](https://github.com/emberjs/rfcs/blob/master/text/0095-router-service.md#query-parameter-semantics) for more info.\n\nIn the following example we use the Router service to navigate to a route with a\nspecific model from a Component in the first action, and in the second we trigger\na query-params only transition.\n\n```app/components/example.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n @action\n goToComments(post) {\n this.router.transitionTo('comments', post);\n }\n\n @action\n fetchMoreComments(latestComment) {\n this.router.transitionTo({\n queryParams: { commentsAfter: latestComment }\n });\n }\n}\n```",
18336
+ "description": "Transition the application into another route. The route may\nbe either a single route or route path:\n\nCalling `transitionTo` from the Router service will cause default query parameter values to be included in the URL.\nThis behavior is different from calling `transitionTo` on a route or `transitionToRoute` on a controller.\nSee the [Router Service RFC](https://github.com/emberjs/rfcs/blob/master/text/0095-router-service.md#query-parameter-semantics) for more info.\n\nIn the following example we use the Router service to navigate to a route with a\nspecific model from a Component in the first action, and in the second we trigger\na query-params only transition.\n\n```app/components/example.gjs\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n @action\n goToComments(post) {\n this.router.transitionTo('comments', post);\n }\n\n @action\n fetchMoreComments(latestComment) {\n this.router.transitionTo({\n queryParams: { commentsAfter: latestComment }\n });\n }\n}\n```",
18352
18337
  "itemtype": "method",
18353
18338
  "name": "transitionTo",
18354
18339
  "params": [
@@ -18416,7 +18401,7 @@
18416
18401
  {
18417
18402
  "file": "packages/@ember/routing/router-service.ts",
18418
18403
  "line": 190,
18419
- "description": "Generate a URL based on the supplied route name and optionally a model. The\nURL is returned as a string that can be used for any purpose.\n\nIn this example, the URL for the `author.books` route for a given author\nis copied to the clipboard.\n\n```app/templates/application.hbs\n<CopyLink @author={{hash id=\"tomster\" name=\"Tomster\"}} />\n```\n\n```app/components/copy-link.js\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class CopyLinkComponent extends Component {\n @service router;\n @service clipboard;\n\n @action\n copyBooksURL() {\n if (this.author) {\n const url = this.router.urlFor('author.books', this.args.author);\n this.clipboard.set(url);\n // Clipboard now has /author/tomster/books\n }\n }\n}\n```\n\nJust like with `transitionTo` and `replaceWith`, `urlFor` can also handle\nquery parameters.\n\n```app/templates/application.hbs\n<CopyLink @author={{hash id=\"tomster\" name=\"Tomster\"}} />\n```\n\n```app/components/copy-link.js\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class CopyLinkComponent extends Component {\n @service router;\n @service clipboard;\n\n @action\n copyOnlyEmberBooksURL() {\n if (this.author) {\n const url = this.router.urlFor('author.books', this.author, {\n queryParams: { filter: 'emberjs' }\n });\n this.clipboard.set(url);\n // Clipboard now has /author/tomster/books?filter=emberjs\n }\n }\n}\n```",
18404
+ "description": "Generate a URL based on the supplied route name and optionally a model. The\nURL is returned as a string that can be used for any purpose.\n\nIn this example, the URL for the `author.books` route for a given author\nis copied to the clipboard.\n\n```app/templates/application.gjs\nimport CopyLink from '../components/copy-link';\n \n<template>\n <CopyLink @author={{hash id=\"tomster\" name=\"Tomster\"}} />\n</template>\n```\n\n```app/components/copy-link.gjs\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class CopyLinkComponent extends Component {\n @service router;\n @service clipboard;\n\n @action\n copyBooksURL() {\n if (this.author) {\n const url = this.router.urlFor('author.books', this.args.author);\n this.clipboard.set(url);\n // Clipboard now has /author/tomster/books\n }\n }\n}\n```\n\nJust like with `transitionTo` and `replaceWith`, `urlFor` can also handle\nquery parameters.\n\n```app/templates/application.gjs\nimport CopyLink from '../components/copy-link';\n\n<template>\n <CopyLink @author={{hash id=\"tomster\" name=\"Tomster\"}} />\n</template>\n```\n\n```app/components/copy-link.gjs\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class CopyLinkComponent extends Component {\n @service router;\n @service clipboard;\n\n @action\n copyOnlyEmberBooksURL() {\n if (this.author) {\n const url = this.router.urlFor('author.books', this.author, {\n queryParams: { filter: 'emberjs' }\n });\n this.clipboard.set(url);\n // Clipboard now has /author/tomster/books?filter=emberjs\n }\n }\n}\n```",
18420
18405
  "itemtype": "method",
18421
18406
  "name": "urlFor",
18422
18407
  "params": [
@@ -18448,8 +18433,8 @@
18448
18433
  },
18449
18434
  {
18450
18435
  "file": "packages/@ember/routing/router-service.ts",
18451
- "line": 266,
18452
- "description": "Returns `true` if `routeName/models/queryParams` is the active route, where `models` and `queryParams` are optional.\nSee [model](api/ember/release/classes/Route/methods/model?anchor=model) and\n[queryParams](/api/ember/3.7/classes/Route/properties/queryParams?anchor=queryParams) for more information about these arguments.\n\nIn the following example, `isActive` will return `true` if the current route is `/posts`.\n\n```app/components/posts.js\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n displayComments() {\n return this.router.isActive('posts');\n }\n});\n```\n\nThe next example includes a dynamic segment, and will return `true` if the current route is `/posts/1`,\nassuming the post has an id of 1:\n\n```app/components/posts.js\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n displayComments(post) {\n return this.router.isActive('posts', post.id);\n }\n});\n```\n\nWhere `post.id` is the id of a specific post, which is represented in the route as /posts/[post.id].\nIf `post.id` is equal to 1, then isActive will return true if the current route is /posts/1, and false if the route is anything else.",
18436
+ "line": 274,
18437
+ "description": "Returns `true` if `routeName/models/queryParams` is the active route, where `models` and `queryParams` are optional.\nSee [model](api/ember/release/classes/Route/methods/model?anchor=model) and\n[queryParams](/api/ember/3.7/classes/Route/properties/queryParams?anchor=queryParams) for more information about these arguments.\n\nIn the following example, `isActive` will return `true` if the current route is `/posts`.\n\n```app/components/posts.gjs\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n displayComments() {\n return this.router.isActive('posts');\n }\n});\n```\n\nThe next example includes a dynamic segment, and will return `true` if the current route is `/posts/1`,\nassuming the post has an id of 1:\n\n```app/components/posts.gjs\nimport Component from '@glimmer/component';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n\n displayComments(post) {\n return this.router.isActive('posts', post.id);\n }\n});\n```\n\nWhere `post.id` is the id of a specific post, which is represented in the route as /posts/[post.id].\nIf `post.id` is equal to 1, then isActive will return true if the current route is /posts/1, and false if the route is anything else.",
18453
18438
  "itemtype": "method",
18454
18439
  "name": "isActive",
18455
18440
  "params": [
@@ -18481,8 +18466,8 @@
18481
18466
  },
18482
18467
  {
18483
18468
  "file": "packages/@ember/routing/router-service.ts",
18484
- "line": 371,
18485
- "description": "Takes a string URL and returns a `RouteInfo` for the leafmost route represented\nby the URL. Returns `null` if the URL is not recognized. This method expects to\nreceive the actual URL as seen by the browser including the app's `rootURL`.\n\nSee [RouteInfo](/ember/release/classes/RouteInfo) for more info.\n\nIn the following example `recognize` is used to verify if a path belongs to our\napplication before transitioning to it.\n\n```\nimport Component from '@ember/component';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n path = '/';\n\n click() {\n if (this.router.recognize(this.path)) {\n this.router.transitionTo(this.path);\n }\n }\n}\n```",
18469
+ "line": 379,
18470
+ "description": "Takes a string URL and returns a `RouteInfo` for the leafmost route represented\nby the URL. Returns `null` if the URL is not recognized. This method expects to\nreceive the actual URL as seen by the browser including the app's `rootURL`.\n\nSee [RouteInfo](/ember/release/classes/RouteInfo) for more info.\n\nIn the following example `recognize` is used to verify if a path belongs to our\napplication before transitioning to it.\n\n```js\nimport Component from '@ember/component';\nimport { service } from '@ember/service';\n\nexport default class extends Component {\n @service router;\n path = '/';\n\n click() {\n if (this.router.recognize(this.path)) {\n this.router.transitionTo(this.path);\n }\n }\n}\n```",
18486
18471
  "itemtype": "method",
18487
18472
  "name": "recognize",
18488
18473
  "params": [
@@ -18503,7 +18488,7 @@
18503
18488
  },
18504
18489
  {
18505
18490
  "file": "packages/@ember/routing/router-service.ts",
18506
- "line": 412,
18491
+ "line": 420,
18507
18492
  "description": "Takes a string URL and returns a promise that resolves to a\n`RouteInfoWithAttributes` for the leafmost route represented by the URL.\nThe promise rejects if the URL is not recognized or an unhandled exception\nis encountered. This method expects to receive the actual URL as seen by\nthe browser including the app's `rootURL`.",
18508
18493
  "itemtype": "method",
18509
18494
  "name": "recognizeAndLoad",
@@ -18525,7 +18510,7 @@
18525
18510
  },
18526
18511
  {
18527
18512
  "file": "packages/@ember/routing/router-service.ts",
18528
- "line": 434,
18513
+ "line": 442,
18529
18514
  "description": "You can register a listener for events emitted by this service with `.on()`:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n activate() {\n this.router.on('routeWillChange', (transition) => {\n if (!transition.to.find(route => route.name === this.routeName)) {\n alert(\"Please save or cancel your changes.\");\n transition.abort();\n }\n })\n }\n}\n```",
18530
18515
  "itemtype": "method",
18531
18516
  "name": "on",
@@ -18548,7 +18533,7 @@
18548
18533
  },
18549
18534
  {
18550
18535
  "file": "packages/@ember/routing/router-service.ts",
18551
- "line": 461,
18536
+ "line": 469,
18552
18537
  "description": "You can unregister a listener for events emitted by this service with `.off()`:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { service } from '@ember/service';\n\nexport default class ContactFormRoute extends Route {\n @service router;\n\n callback = (transition) => {\n if (!transition.to.find(route => route.name === this.routeName)) {\n alert('Please save or cancel your changes.');\n transition.abort();\n }\n };\n\n activate() {\n this.router.on('routeWillChange', this.callback);\n }\n\n deactivate() {\n this.router.off('routeWillChange', this.callback);\n }\n}\n```",
18553
18538
  "itemtype": "method",
18554
18539
  "name": "off",
@@ -18571,7 +18556,7 @@
18571
18556
  },
18572
18557
  {
18573
18558
  "file": "packages/@ember/routing/router-service.ts",
18574
- "line": 494,
18559
+ "line": 502,
18575
18560
  "description": "The `routeWillChange` event is fired at the beginning of any\nattempted transition with a `Transition` object as the sole\nargument. This action can be used for aborting, redirecting,\nor decorating the transition from the currently active routes.\n\nA good example is preventing navigation when a form is\nhalf-filled out:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n activate() {\n this.router.on('routeWillChange', (transition) => {\n if (!transition.to.find(route => route.name === this.routeName)) {\n alert(\"Please save or cancel your changes.\");\n transition.abort();\n }\n })\n }\n}\n```\n\nThe `routeWillChange` event fires whenever a new route is chosen as the desired target of a transition. This includes `transitionTo`, `replaceWith`, all redirection for any reason including error handling, and abort. Aborting implies changing the desired target back to where you already were. Once a transition has completed, `routeDidChange` fires.",
18576
18561
  "itemtype": "event",
18577
18562
  "name": "routeWillChange",
@@ -18589,7 +18574,7 @@
18589
18574
  },
18590
18575
  {
18591
18576
  "file": "packages/@ember/routing/router-service.ts",
18592
- "line": 528,
18577
+ "line": 536,
18593
18578
  "description": "The `routeDidChange` event only fires once a transition has settled.\nThis includes aborts and error substates. Like the `routeWillChange` event\nit receives a Transition as the sole argument.\n\nA good example is sending some analytics when the route has transitioned:\n\n```app/routes/contact-form.js\nimport Route from '@ember/routing';\nimport { service } from '@ember/service';\n\nexport default class extends Route {\n @service router;\n\n activate() {\n this.router.on('routeDidChange', (transition) => {\n ga.send('pageView', {\n current: transition.to.name,\n from: transition.from.name\n });\n })\n }\n}\n```\n\n`routeDidChange` will be called after any `Route`'s\n[didTransition](/ember/release/classes/Route/events/didTransition?anchor=didTransition)\naction has been fired.\nThe updates of properties\n[currentURL](/ember/release/classes/RouterService/properties/currentURL?anchor=currentURL),\n[currentRouteName](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRouteName)\nand\n[currentRoute](/ember/release/classes/RouterService/properties/currentURL?anchor=currentRoute)\nare completed at the time `routeDidChange` is called.",
18594
18579
  "itemtype": "event",
18595
18580
  "name": "routeDidChange",
@@ -18607,7 +18592,7 @@
18607
18592
  },
18608
18593
  {
18609
18594
  "file": "packages/@ember/routing/router-service.ts",
18610
- "line": 568,
18595
+ "line": 576,
18611
18596
  "description": "Refreshes all currently active routes, doing a full transition.\nIf a route name is provided and refers to a currently active route,\nit will refresh only that route and its descendents.\nReturns a promise that will be resolved once the refresh is complete.\nAll resetController, beforeModel, model, afterModel, redirect, and setupController\nhooks will be called again. You will get new data from the model hook.",
18612
18597
  "itemtype": "method",
18613
18598
  "name": "refresh",
@@ -18629,7 +18614,7 @@
18629
18614
  },
18630
18615
  {
18631
18616
  "file": "packages/@ember/routing/router-service.ts",
18632
- "line": 596,
18617
+ "line": 604,
18633
18618
  "description": "Name of the current route.\n\n This property represents the logical name of the route,\n which is dot separated.\n For the following router:\n\n ```app/router.js\n Router.map(function() {\n this.route('about');\n this.route('blog', function () {\n this.route('post', { path: ':post_id' });\n });\n });\n ```\n\n It will return:\n\n * `index` when you visit `/`\n * `about` when you visit `/about`\n * `blog.index` when you visit `/blog`\n * `blog.post` when you visit `/blog/some-post-id`",
18634
18619
  "itemtype": "property",
18635
18620
  "name": "currentRouteName",
@@ -18641,7 +18626,7 @@
18641
18626
  },
18642
18627
  {
18643
18628
  "file": "packages/@ember/routing/router-service.ts",
18644
- "line": 626,
18629
+ "line": 634,
18645
18630
  "description": "Current URL for the application.\n\n This property represents the URL path for this route.\n For the following router:\n\n ```app/router.js\n Router.map(function() {\n this.route('about');\n this.route('blog', function () {\n this.route('post', { path: ':post_id' });\n });\n });\n ```\n\n It will return:\n\n * `/` when you visit `/`\n * `/about` when you visit `/about`\n * `/blog` when you visit `/blog`\n * `/blog/some-post-id` when you visit `/blog/some-post-id`",
18646
18631
  "itemtype": "property",
18647
18632
  "name": "currentURL",
@@ -18653,7 +18638,7 @@
18653
18638
  },
18654
18639
  {
18655
18640
  "file": "packages/@ember/routing/router-service.ts",
18656
- "line": 655,
18641
+ "line": 663,
18657
18642
  "description": "The `location` property returns what implementation of the `location` API\nyour application is using, which determines what type of URL is being used.\n\nSee [Location](/ember/release/classes/Location) for more information.\n\nTo force a particular `location` API implementation to be used in your\napplication you can set a location type on your `config/environment`.\nFor example, to set the `history` type:\n\n```config/environment.js\n'use strict';\n\nmodule.exports = function(environment) {\n let ENV = {\n modulePrefix: 'router-service',\n environment,\n rootURL: '/',\n locationType: 'history',\n ...\n }\n}\n```\n\nThe following location types are available by default:\n`hash`, `history`, `none`.\n\nSee [HashLocation](/ember/release/classes/HashLocation).\nSee [HistoryLocation](/ember/release/classes/HistoryLocation).\nSee [NoneLocation](/ember/release/classes/NoneLocation).",
18658
18643
  "itemtype": "property",
18659
18644
  "name": "location",
@@ -18668,7 +18653,7 @@
18668
18653
  },
18669
18654
  {
18670
18655
  "file": "packages/@ember/routing/router-service.ts",
18671
- "line": 694,
18656
+ "line": 702,
18672
18657
  "description": "The `rootURL` property represents the URL of the root of\nthe application, '/' by default.\nThis prefix is assumed on all routes defined on this app.\n\nIf you change the `rootURL` in your environment configuration\nlike so:\n\n```config/environment.js\n'use strict';\n\nmodule.exports = function(environment) {\n let ENV = {\n modulePrefix: 'router-service',\n environment,\n rootURL: '/my-root',\n …\n }\n]\n```\n\nThis property will return `/my-root`.",
18673
18658
  "itemtype": "property",
18674
18659
  "name": "rootURL",
@@ -18680,8 +18665,8 @@
18680
18665
  },
18681
18666
  {
18682
18667
  "file": "packages/@ember/routing/router-service.ts",
18683
- "line": 724,
18684
- "description": "The `currentRoute` property contains metadata about the current leaf route.\nIt returns a `RouteInfo` object that has information like the route name,\nparams, query params and more.\n\nSee [RouteInfo](/ember/release/classes/RouteInfo) for more info.\n\nThis property is guaranteed to change whenever a route transition\nhappens (even when that transition only changes parameters\nand doesn't change the active route).\n\nUsage example:\n```app/components/header.js\n import Component from '@glimmer/component';\n import { service } from '@ember/service';\n import { notEmpty } from '@ember/object/computed';\n\n export default class extends Component {\n @service router;\n\n @notEmpty('router.currentRoute.child') isChildRoute;\n });\n```",
18668
+ "line": 732,
18669
+ "description": "The `currentRoute` property contains metadata about the current leaf route.\nIt returns a `RouteInfo` object that has information like the route name,\nparams, query params and more.\n\nSee [RouteInfo](/ember/release/classes/RouteInfo) for more info.\n\nThis property is guaranteed to change whenever a route transition\nhappens (even when that transition only changes parameters\nand doesn't change the active route).\n\nUsage example:\n```app/components/header.gjs\n import Component from '@glimmer/component';\n import { service } from '@ember/service';\n import { notEmpty } from '@ember/object/computed';\n\n export default class extends Component {\n @service router;\n\n @notEmpty('router.currentRoute.child') isChildRoute;\n });\n```",
18685
18670
  "itemtype": "property",
18686
18671
  "name": "currentRoute",
18687
18672
  "type": "RouteInfo",
@@ -21987,10 +21972,7 @@
21987
21972
  {
21988
21973
  "file": "packages/@glimmer/runtime/lib/component/template-only.ts",
21989
21974
  "line": 59,
21990
- "description": "This utility function is used to declare a given component has no backing class. When the rendering engine detects this it\nis able to perform a number of optimizations. Templates that are associated with `templateOnly()` will be rendered _as is_\nwithout adding a wrapping `<div>` (or any of the other element customization behaviors of [@ember/component](/ember/release/classes/Component)).\nSpecifically, this means that the template will be rendered as \"outer HTML\".\n\nIn general, this method will be used by build time tooling and would not be directly written in an application. However,\nat times it may be useful to use directly to leverage the \"outer HTML\" semantics mentioned above. For example, if an addon would like\nto use these semantics for its templates but cannot be certain it will only be consumed by applications that have enabled the\n`template-only-glimmer-components` optional feature.",
21991
- "example": [
21992
- "\n\n```js\nimport { templateOnlyComponent } from '@glimmer/runtime';\n\nexport default templateOnlyComponent();\n```"
21993
- ],
21975
+ "description": "This utility function is used to declare a given component has no backing class. When the rendering engine detects this it\nis able to perform a number of optimizations. Templates that are associated with `templateOnly()` will be rendered _as is_\nwithout adding a wrapping `<div>` (or any of the other element customization behaviors of [@ember/component](/ember/release/classes/Component)).\nSpecifically, this means that the template will be rendered as \"outer HTML\".\n\nIn general, this method will be used by build time tooling and would not be directly written in an application. However,\nat times it may be useful to use directly to leverage the \"outer HTML\" semantics mentioned above. For example, if an addon would like\nto use these semantics for its templates but cannot be certain it will only be consumed by applications that have enabled the\n`template-only-glimmer-components` optional feature.\n\n```js\nimport { templateOnlyComponent } from '@glimmer/runtime';\n\nexport default templateOnlyComponent();\n```",
21994
21976
  "access": "public",
21995
21977
  "tagname": "",
21996
21978
  "itemtype": "method",
@@ -22011,7 +21993,7 @@
22011
21993
  {
22012
21994
  "file": "packages/@glimmer/runtime/lib/helpers/array.ts",
22013
21995
  "line": 8,
22014
- "description": "Use the `{{array}}` helper to create an array to pass as an option to your\ncomponents.\n\n```handlebars\n<MyComponent @people={{array\n 'Tom Dale'\n 'Yehuda Katz'\n this.myOtherPerson}}\n/>\n```\n or\n```handlebars\n{{my-component people=(array\n 'Tom Dale'\n 'Yehuda Katz'\n this.myOtherPerson)\n}}\n```\n\nWould result in an object such as:\n\n```js\n['Tom Dale', 'Yehuda Katz', this.get('myOtherPerson')]\n```\n\nWhere the 3rd item in the array is bound to updates of the `myOtherPerson` property.",
21996
+ "description": "Use the `{{array}}` helper to create an array to pass as an option to your\ncomponents.\n\n```handlebars\n<MyComponent @people={{array\n 'Tom Dale'\n 'Yehuda Katz'\n this.myOtherPerson}}\n/>\n```\n or\n```handlebars\n{{yield people=(array\n 'Tom Dale'\n 'Yehuda Katz'\n this.myOtherPerson)\n}}\n```\n\nWould result in an object such as:\n\n```js\n['Tom Dale', 'Yehuda Katz', this.get('myOtherPerson')]\n```\n\nWhere the 3rd item in the array is bound to updates of the `myOtherPerson` property.",
22015
21997
  "itemtype": "method",
22016
21998
  "name": "array",
22017
21999
  "params": [
@@ -22033,7 +22015,7 @@
22033
22015
  {
22034
22016
  "file": "packages/@glimmer/runtime/lib/helpers/concat.ts",
22035
22017
  "line": 18,
22036
- "description": "Concatenates the given arguments into a string.\n\nExample:\n\n```handlebars\n{{some-component name=(concat firstName \" \" lastName)}}\n\n{{! would pass name=\"<first name value> <last name value>\" to the component}}\n```\n\nor for angle bracket invocation, you actually don't need concat at all.\n\n```handlebars\n<SomeComponent @name=\"{{firstName}} {{lastName}}\" />\n```",
22018
+ "description": "Concatenates the given arguments into a string.\n\nExample:\n\n\n```gjs\nimport { concat } from '@ember/helper';\n\n<template>\n{{yield (concat firstName \" \" lastName)}}\n\n{{! would yield name=\"<first name value> <last name value>\" to the component}}\n</template>\n```\n\nor for angle bracket invocation, you actually don't need concat at all.\n\n```handlebars\n<SomeComponent @name=\"{{firstName}} {{lastName}}\" />\n```",
22037
22019
  "access": "public",
22038
22020
  "tagname": "",
22039
22021
  "itemtype": "method",
@@ -22051,7 +22033,7 @@
22051
22033
  {
22052
22034
  "file": "packages/@glimmer/runtime/lib/helpers/fn.ts",
22053
22035
  "line": 18,
22054
- "description": "The `fn` helper allows you to ensure a function that you are passing off\nto another component, helper, or modifier has access to arguments that are\navailable in the template.\n\nFor example, if you have an `each` helper looping over a number of items, you\nmay need to pass a function that expects to receive the item as an argument\nto a component invoked within the loop. Here's how you could use the `fn`\nhelper to pass both the function and its arguments together:\n\n ```app/templates/components/items-listing.hbs\n{{#each @items as |item|}}\n <DisplayItem @item=item @select={{fn this.handleSelected item}} />\n{{/each}}\n```\n\n```app/components/items-list.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class ItemsList extends Component {\n handleSelected = (item) => {\n // ...snip...\n }\n}\n```\n\nIn this case the `display-item` component will receive a normal function\nthat it can invoke. When it invokes the function, the `handleSelected`\nfunction will receive the `item` and any arguments passed, thanks to the\n`fn` helper.\n\nLet's take look at what that means in a couple circumstances:\n\n- When invoked as `this.args.select()` the `handleSelected` function will\n receive the `item` from the loop as its first and only argument.\n- When invoked as `this.args.select('foo')` the `handleSelected` function\n will receive the `item` from the loop as its first argument and the\n string `'foo'` as its second argument.\n\nIn the example above, we used an arrow function to ensure that\n`handleSelected` is properly bound to the `items-list`, but let's explore what\nhappens if we left out the arrow function:\n\n```app/components/items-list.js\nimport Component from '@glimmer/component';\n\nexport default class ItemsList extends Component {\n handleSelected(item) {\n // ...snip...\n }\n}\n```\n\nIn this example, when `handleSelected` is invoked inside the `display-item`\ncomponent, it will **not** have access to the component instance. In other\nwords, it will have no `this` context, so please make sure your functions\nare bound (via an arrow function or other means) before passing into `fn`!\n\nSee also [partial application](https://en.wikipedia.org/wiki/Partial_application).",
22036
+ "description": "The `fn` helper allows you to ensure a function that you are passing off\nto another component, helper, or modifier has access to arguments that are\navailable in the template.\n\nFor example, if you have an `each` helper looping over a number of items, you\nmay need to pass a function that expects to receive the item as an argument\nto a component invoked within the loop. Here's how you could use the `fn`\nhelper to pass both the function and its arguments together:\n\n```app/components/items-listing.gjs\nimport DisplayItem from './display-item';\n \n<template>\n {{#each @items as |item|}}\n <DisplayItem @item=item @select={{fn this.handleSelected item}} />\n {{/each}}\n</template>\n```\n\n```app/components/items-list.gjs\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class ItemsList extends Component {\n handleSelected = (item) => {\n // ...snip...\n }\n}\n```\n\nIn this case the `DisplayItem` component will receive a normal function\nthat it can invoke. When it invokes the function, the `handleSelected`\nfunction will receive the `item` and any arguments passed, thanks to the\n`fn` helper.\n\nLet's take look at what that means in a couple circumstances:\n\n- When invoked as `this.args.select()` the `handleSelected` function will\n receive the `item` from the loop as its first and only argument.\n- When invoked as `this.args.select('foo')` the `handleSelected` function\n will receive the `item` from the loop as its first argument and the\n string `'foo'` as its second argument.\n\nIn the example above, we used an arrow function to ensure that\n`handleSelected` is properly bound to the `items-list`, but let's explore what\nhappens if we left out the arrow function:\n\n```app/components/items-list.gjs\nimport Component from '@glimmer/component';\n\nexport default class ItemsList extends Component {\n handleSelected(item) {\n // ...snip...\n }\n}\n```\n\nIn this example, when `handleSelected` is invoked inside the `display-item`\ncomponent, it will **not** have access to the component instance. In other\nwords, it will have no `this` context, so please make sure your functions\nare bound (via an arrow function or other means) before passing into `fn`!\n\nSee also [partial application](https://en.wikipedia.org/wiki/Partial_application).\n\n`fn` is built-in and does not require any additional imports.",
22055
22037
  "itemtype": "method",
22056
22038
  "name": "fn",
22057
22039
  "access": "public",
@@ -22062,7 +22044,7 @@
22062
22044
  {
22063
22045
  "file": "packages/@glimmer/runtime/lib/helpers/get.ts",
22064
22046
  "line": 12,
22065
- "description": "Dynamically look up a property on an object. The second argument to `{{get}}`\nshould have a string value, although it can be bound.\n\nFor example, these two usages are equivalent:\n\n```app/components/developer-detail.js\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class extends Component {\n @tracked developer = {\n name: \"Sandi Metz\",\n language: \"Ruby\"\n }\n}\n```\n\n```handlebars\n{{this.developer.name}}\n{{get this.developer \"name\"}}\n```\n\nIf there were several facts about a person, the `{{get}}` helper can dynamically\npick one:\n\n```app/templates/application.hbs\n<DeveloperDetail @factName=\"language\" />\n```\n\n```handlebars\n{{get this.developer @factName}}\n```\n\nFor a more complex example, this template would allow the user to switch\nbetween showing the user's height and weight with a click:\n\n```app/components/developer-detail.js\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class extends Component {\n @tracked developer = {\n name: \"Sandi Metz\",\n language: \"Ruby\"\n }\n\n @tracked currentFact = 'name'\n\n showFact = (fact) => {\n this.currentFact = fact;\n }\n}\n```\n\n```app/components/developer-detail.js\n{{get this.developer this.currentFact}}\n\n<button {{on 'click' (fn this.showFact \"name\")}}>Show name</button>\n<button {{on 'click' (fn this.showFact \"language\")}}>Show language</button>\n```\n\nThe `{{get}}` helper can also respect mutable values itself. For example:\n\n```app/components/developer-detail.js\n<Input @value={{mut (get this.person this.currentFact)}} />\n\n<button {{on 'click' (fn this.showFact \"name\")}}>Show name</button>\n<button {{on 'click' (fn this.showFact \"language\")}}>Show language</button>\n```\n\nWould allow the user to swap what fact is being displayed, and also edit\nthat fact via a two-way mutable binding.",
22047
+ "description": "Dynamically look up a property on an object. The second argument to `{{get}}`\nshould have a string value, although it can be bound.\n\nFor example, these two usages are equivalent:\n\n```app/components/developer-detail.gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get } from '@ember/object';\n\nexport default class extends Component {\n @tracked developer = {\n name: \"Sandi Metz\",\n language: \"Ruby\"\n }\n \n <template>\n {{this.developer.name}}\n {{get this.developer \"name\"}}\n </template>\n}\n```\n\nIf there were several facts about a person, the `{{get}}` helper can dynamically\npick one:\n\n```app/templates/application.gjs\n<template>\n <DeveloperDetail @factName=\"language\" />\n</template>\n```\n\n```handlebars\n{{get this.developer @factName}}\n```\n\nFor a more complex example, this template would allow the user to switch\nbetween showing the user's height and weight with a click:\n\n```app/components/developer-detail.gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get } from '@ember/object';\n \nexport default class extends Component {\n @tracked developer = {\n name: \"Sandi Metz\",\n language: \"Ruby\"\n }\n\n @tracked currentFact = 'name'\n\n showFact = (fact) => {\n this.currentFact = fact;\n }\n \n <template>\n {{get this.developer this.currentFact}}\n\n <button {{on 'click' (fn this.showFact \"name\")}}>Show name</button>\n <button {{on 'click' (fn this.showFact \"language\")}}>Show language</button>\n </template>\n}\n```",
22066
22048
  "access": "public",
22067
22049
  "tagname": "",
22068
22050
  "itemtype": "method",
@@ -22087,7 +22069,7 @@
22087
22069
  {
22088
22070
  "file": "packages/@glimmer/runtime/lib/helpers/hash.ts",
22089
22071
  "line": 8,
22090
- "description": "Use the `{{hash}}` helper to create a hash to pass as an option to your\ncomponents. This is specially useful for contextual components where you can\njust yield a hash:\n\n```handlebars\n{{yield (hash\n name='Sarah'\n title=office\n)}}\n```\n\nWould result in an object such as:\n\n```js\n{ name: 'Sarah', title: this.get('office') }\n```\n\nWhere the `title` is bound to updates of the `office` property.\n\nNote that the hash is an empty object with no prototype chain, therefore\ncommon methods like `toString` are not available in the resulting hash.\nIf you need to use such a method, you can use the `call` or `apply`\napproach:\n\n```js\nfunction toString(obj) {\n return Object.prototype.toString.apply(obj);\n}\n```",
22072
+ "description": "Use the `{{hash}}` helper to create a hash to pass as an option to your\ncomponents. This is especially useful for contextual components where you can\njust yield a hash:\n\n```handlebars\n{{yield (hash\n name='Sarah'\n title=office\n)}}\n```\n\nWould result in an object such as:\n\n```js\n{ name: 'Sarah', title: this.get('office') }\n```\n\nWhere the `title` is bound to updates of the `office` property.\n\nNote that the hash is an empty object with no prototype chain, therefore\ncommon methods like `toString` are not available in the resulting hash.\nIf you need to use such a method, you can use the `call` or `apply`\napproach:\n\n```js\nfunction toString(obj) {\n return Object.prototype.toString.apply(obj);\n}\n```",
22091
22073
  "itemtype": "method",
22092
22074
  "name": "hash",
22093
22075
  "params": [
@@ -22130,7 +22112,7 @@
22130
22112
  {
22131
22113
  "file": "packages/@glimmer/runtime/lib/modifiers/on.ts",
22132
22114
  "line": 249,
22133
- "description": "The `{{on}}` modifier lets you easily add event listeners (it uses\n[EventTarget.addEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)\ninternally).\n\nFor example, if you'd like to run a function on your component when a `<button>`\nin the components template is clicked you might do something like:\n\n```app/components/like-post.hbs\n<button {{on 'click' this.saveLike}}>Like this post!</button>\n```\n\n```app/components/like-post.js\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class LikePostComponent extends Component {\n saveLike = () => {\n // someone likes your post!\n // better send a request off to your server...\n }\n}\n```\n\n### Arguments\n\n`{{on}}` accepts two positional arguments, and a few named arguments.\n\nThe positional arguments are:\n\n- `event` -- the name to use when calling `addEventListener`\n- `callback` -- the function to be passed to `addEventListener`\n\nThe named arguments are:\n\n- capture -- a `true` value indicates that events of this type will be dispatched\n to the registered listener before being dispatched to any EventTarget beneath it\n in the DOM tree.\n- once -- indicates that the listener should be invoked at most once after being\n added. If true, the listener would be automatically removed when invoked.\n- passive -- if `true`, indicates that the function specified by listener will never\n call preventDefault(). If a passive listener does call preventDefault(), the user\n agent will do nothing other than generate a console warning. See\n [Improving scrolling performance with passive listeners](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Improving_scrolling_performance_with_passive_listeners)\n to learn more.\n\nThe callback function passed to `{{on}}` will receive any arguments that are passed\nto the event handler. Most commonly this would be the `event` itself.\n\nIf you would like to pass additional arguments to the function you should use\nthe `{{fn}}` helper.\n\nFor example, in our example case above if you'd like to pass in the post that\nwas being liked when the button is clicked you could do something like:\n\n```app/components/like-post.hbs\n<button {{on 'click' (fn this.saveLike @post)}}>Like this post!</button>\n```\n\nIn this case, the `saveLike` function will receive two arguments: the click event\nand the value of `@post`.\n\n### Function Context\n\nIn the example above, we used an arrow function to ensure that `likePost` is\nproperly bound to the `items-list`, but let's explore what happens if we\nleft out the arrow function:\n\n```app/components/like-post.js\nimport Component from '@glimmer/component';\n\nexport default class LikePostComponent extends Component {\n saveLike() {\n // ...snip...\n }\n}\n```\n\nIn this example, when the button is clicked `saveLike` will be invoked,\nit will **not** have access to the component instance. In other\nwords, it will have no `this` context, so please make sure your functions\nare bound (via an arrow function or other means) before passing into `on`!",
22115
+ "description": "The `{{on}}` modifier lets you easily add event listeners (it uses\n[EventTarget.addEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)\ninternally).\n\nFor example, if you'd like to run a function on your component when a `<button>`\nin the components template is clicked you might do something like:\n\n```app/components/like-post.gjs\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class LikePostComponent extends Component {\n saveLike = () => {\n // someone likes your post!\n // better send a request off to your server...\n }\n \n <template>\n <button {{on 'click' this.saveLike}}>Like this post!</button>\n </template>\n}\n```\n\n### Arguments\n\n`{{on}}` accepts two positional arguments, and a few named arguments.\n\nThe positional arguments are:\n\n- `event` -- the name to use when calling `addEventListener`\n- `callback` -- the function to be passed to `addEventListener`\n\nThe named arguments are:\n\n- capture -- a `true` value indicates that events of this type will be dispatched\n to the registered listener before being dispatched to any EventTarget beneath it\n in the DOM tree.\n- once -- indicates that the listener should be invoked at most once after being\n added. If true, the listener would be automatically removed when invoked.\n- passive -- if `true`, indicates that the function specified by listener will never\n call preventDefault(). If a passive listener does call preventDefault(), the user\n agent will do nothing other than generate a console warning. See\n [Improving scrolling performance with passive listeners](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Improving_scrolling_performance_with_passive_listeners)\n to learn more.\n\nThe callback function passed to `{{on}}` will receive any arguments that are passed\nto the event handler. Most commonly this would be the `event` itself.\n\nIf you would like to pass additional arguments to the function you should use\nthe `{{fn}}` helper.\n\nFor example, in our example case above if you'd like to pass in the post that\nwas being liked when the button is clicked you could do something like:\n\n```app/components/like-post.hbs\n<button {{on 'click' (fn this.saveLike @post)}}>Like this post!</button>\n```\n\nIn this case, the `saveLike` function will receive two arguments: the click event\nand the value of `@post`.\n\n### Function Context\n\nIn the example above, we used an arrow function to ensure that `likePost` is\nproperly bound to the `items-list`, but let's explore what happens if we\nleft out the arrow function:\n\n```app/components/like-post.gjs\nimport Component from '@glimmer/component';\n\nexport default class LikePostComponent extends Component {\n saveLike() {\n // ...snip...\n }\n}\n```\n\nIn this example, when the button is clicked `saveLike` will be invoked,\nit will **not** have access to the component instance. In other\nwords, it will have no `this` context, so please make sure your functions\nare bound (via an arrow function or other means) before passing into `on`!",
22134
22116
  "itemtype": "method",
22135
22117
  "name": "on",
22136
22118
  "access": "public",
@@ -22838,7 +22820,7 @@
22838
22820
  {
22839
22821
  "file": "packages/@glimmer/syntax/dist/es/index.js",
22840
22822
  "line": 9480,
22841
- "description": "Parses and traverses a given handlebars html template to extract all template locals\nreferenced that could possible come from the parent scope. Can exclude known keywords\noptionally.",
22823
+ "description": "Parses and traverses a given template to extract all template locals\nreferenced that could possible come from the parent scope. Can exclude known keywords\noptionally.",
22842
22824
  "class": "@glimmer/tracking",
22843
22825
  "module": "@glimmer/component"
22844
22826
  },
@@ -24233,7 +24215,7 @@
24233
24215
  {
24234
24216
  "file": "packages/@glimmer/syntax/lib/get-template-locals.ts",
24235
24217
  "line": 84,
24236
- "description": "Parses and traverses a given handlebars html template to extract all template locals\nreferenced that could possible come from the parent scope. Can exclude known keywords\noptionally.",
24218
+ "description": "Parses and traverses a given template to extract all template locals\nreferenced that could possible come from the parent scope. Can exclude known keywords\noptionally.",
24237
24219
  "class": "@glimmer/tracking",
24238
24220
  "module": "@glimmer/component"
24239
24221
  },
@@ -24259,7 +24241,7 @@
24259
24241
  {
24260
24242
  "file": "packages/@glimmer/tracking/index.ts",
24261
24243
  "line": 17,
24262
- "description": "Marks a property as tracked. By default, values that are rendered in Ember app\ntemplates are _static_, meaning that updates to them won't cause the\napplication to rerender. Marking a property as tracked means that when that\nproperty changes, any templates that used that property, directly or\nindirectly, will rerender. For instance, consider this component:\n\n```handlebars\n<div>Count: {{this.count}}</div>\n<div>Times Ten: {{this.timesTen}}</div>\n<div>\n <button {{on \"click\" this.plusOne}}>\n Plus One\n </button>\n</div>\n```\n\n```javascript\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nexport default class CounterComponent extends Component {\n @tracked count = 0;\n\n get timesTen() {\n return this.count * 10;\n }\n\n @action\n plusOne() {\n this.count += 1;\n }\n}\n```\n\nBoth the `{{this.count}}` and the `{{this.timesTen}}` properties in the\ntemplate will update whenever the button is clicked. Any tracked properties\nthat are used in any way to calculate a value that is used in the template\nwill cause a rerender when updated - this includes through method calls and\nother means:\n\n```javascript\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nclass Entry {\n @tracked name;\n @tracked phoneNumber;\n\n constructor(name, phoneNumber) {\n this.name = name;\n this.phoneNumber = phoneNumber;\n }\n}\n\nexport default class PhoneBookComponent extends Component {\n entries = [\n new Entry('Pizza Palace', 5551234),\n new Entry('1st Street Cleaners', 5554321),\n new Entry('Plants R Us', 5552468),\n ];\n\n // Any usage of this property will update whenever any of the names in the\n // entries arrays are updated\n get names() {\n return this.entries.map(e => e.name);\n }\n\n // Any usage of this property will update whenever any of the numbers in the\n // entries arrays are updated\n get numbers() {\n return this.getFormattedNumbers();\n }\n\n getFormattedNumbers() {\n return this.entries\n .map(e => e.phoneNumber)\n .map(number => {\n let numberString = '' + number;\n\n return numberString.slice(0, 3) + '-' + numberString.slice(3);\n });\n }\n}\n```\n\nIt's important to note that setting tracked properties will always trigger an\nupdate, even if the property is set to the same value as it was before.\n\n```js\nlet entry = new Entry('Pizza Palace', 5551234);\n// if entry was used when rendering, this would cause a rerender, even though\n// the name is being set to the same value as it was before\nentry.name = entry.name;\n```\n\n`tracked` can also be used with the classic Ember object model in a similar\nmanner to classic computed properties:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nconst Entry = EmberObject.extend({\n name: tracked(),\n phoneNumber: tracked()\n});\n```\n\nOften this is unnecessary, but to ensure robust auto-tracking behavior it is\nadvisable to mark tracked state appropriately wherever possible.\nThis form of `tracked` also accepts an optional configuration object\ncontaining either an initial `value` or an `initializer` function (but not\nboth).\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nconst Entry = EmberObject.extend({\n name: tracked({ value: 'Zoey' }),\n favoriteSongs: tracked({\n initializer: () => ['Raspberry Beret', 'Time After Time']\n })\n});\n```",
24244
+ "description": "Marks a property as tracked. By default, values that are rendered in Ember app\ntemplates are _static_, meaning that updates to them won't cause the\napplication to rerender. Marking a property as tracked means that when that\nproperty changes, any templates that used that property, directly or\nindirectly, will rerender. For instance, consider this component:\n\n```gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nexport default class CounterComponent extends Component {\n @tracked count = 0;\n\n get timesTen() {\n return this.count * 10;\n }\n\n @action\n plusOne() {\n this.count += 1;\n }\n \n <template>\n <div>Count: {{this.count}}</div>\n <div>Times Ten: {{this.timesTen}}</div>\n <div>\n <button {{on \"click\" this.plusOne}}>\n Plus One\n </button>\n </div>\n </template>\n}\n```\n\nBoth the `{{this.count}}` and the `{{this.timesTen}}` properties in the\ntemplate will update whenever the button is clicked. Any tracked properties\nthat are used in any way to calculate a value that is used in the template\nwill cause a rerender when updated - this includes through method calls and\nother means:\n\n```gjs\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nclass Entry {\n @tracked name;\n @tracked phoneNumber;\n\n constructor(name, phoneNumber) {\n this.name = name;\n this.phoneNumber = phoneNumber;\n }\n}\n\nexport default class PhoneBookComponent extends Component {\n entries = [\n new Entry('Pizza Palace', 5551234),\n new Entry('1st Street Cleaners', 5554321),\n new Entry('Plants R Us', 5552468),\n ];\n\n // Any usage of this property will update whenever any of the names in the\n // entries arrays are updated\n get names() {\n return this.entries.map(e => e.name);\n }\n\n // Any usage of this property will update whenever any of the numbers in the\n // entries arrays are updated\n get numbers() {\n return this.getFormattedNumbers();\n }\n\n getFormattedNumbers() {\n return this.entries\n .map(e => e.phoneNumber)\n .map(number => {\n let numberString = '' + number;\n\n return numberString.slice(0, 3) + '-' + numberString.slice(3);\n });\n }\n}\n```\n\nIt's important to note that setting tracked properties will always trigger an\nupdate, even if the property is set to the same value as it was before.\n\n```js\nlet entry = new Entry('Pizza Palace', 5551234);\n// if entry was used when rendering, this would cause a rerender, even though\n// the name is being set to the same value as it was before\nentry.name = entry.name;\n```\n\n`tracked` can also be used with the classic Ember object model in a similar\nmanner to classic computed properties:\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nconst Entry = EmberObject.extend({\n name: tracked(),\n phoneNumber: tracked()\n});\n```\n\nOften this is unnecessary, but to ensure robust auto-tracking behavior it is\nadvisable to mark tracked state appropriately wherever possible.\nThis form of `tracked` also accepts an optional configuration object\ncontaining either an initial `value` or an `initializer` function (but not\nboth).\n\n```javascript\nimport EmberObject from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nconst Entry = EmberObject.extend({\n name: tracked({ value: 'Zoey' }),\n favoriteSongs: tracked({\n initializer: () => ['Raspberry Beret', 'Time After Time']\n })\n});\n```",
24263
24245
  "itemtype": "method",
24264
24246
  "name": "tracked",
24265
24247
  "static": 1,
@@ -24400,7 +24382,7 @@
24400
24382
  },
24401
24383
  {
24402
24384
  "file": "packages/@glimmer/validator/lib/validators.ts",
24403
- "line": 50,
24385
+ "line": 49,
24404
24386
  "description": "`value` receives a tag and returns an opaque Revision based on that tag. This\nsnapshot can then later be passed to `validate` with the same tag to\ndetermine if the tag has changed at all since the time that `value` was\ncalled.",
24405
24387
  "params": [
24406
24388
  {
@@ -24413,7 +24395,7 @@
24413
24395
  },
24414
24396
  {
24415
24397
  "file": "packages/@glimmer/validator/lib/validators.ts",
24416
- "line": 62,
24398
+ "line": 61,
24417
24399
  "description": "`validate` receives a tag and a snapshot from a previous call to `value` with\nthe same tag, and determines if the tag is still valid compared to the\nsnapshot. If the tag's state has changed at all since then, `validate` will\nreturn false, otherwise it will return true. This is used to determine if a\ncalculation related to the tags should be rerun.",
24418
24400
  "params": [
24419
24401
  {
@@ -24559,7 +24541,7 @@
24559
24541
  },
24560
24542
  {
24561
24543
  "message": "unknown tag: note",
24562
- "line": " packages/@ember/-internals/glimmer/lib/helper.ts:313"
24544
+ "line": " packages/@ember/-internals/glimmer/lib/helper.ts:325"
24563
24545
  },
24564
24546
  {
24565
24547
  "message": "unknown tag: decorator",
@@ -24615,23 +24597,23 @@
24615
24597
  },
24616
24598
  {
24617
24599
  "message": "replacing incorrect tag: returns with return",
24618
- "line": " packages/@ember/reactive/collections.ts:51"
24600
+ "line": " packages/@ember/reactive/collections.ts:50"
24619
24601
  },
24620
24602
  {
24621
24603
  "message": "replacing incorrect tag: returns with return",
24622
- "line": " packages/@ember/reactive/collections.ts:94"
24604
+ "line": " packages/@ember/reactive/collections.ts:92"
24623
24605
  },
24624
24606
  {
24625
24607
  "message": "replacing incorrect tag: returns with return",
24626
- "line": " packages/@ember/reactive/collections.ts:138"
24608
+ "line": " packages/@ember/reactive/collections.ts:135"
24627
24609
  },
24628
24610
  {
24629
24611
  "message": "replacing incorrect tag: returns with return",
24630
- "line": " packages/@ember/reactive/collections.ts:179"
24612
+ "line": " packages/@ember/reactive/collections.ts:175"
24631
24613
  },
24632
24614
  {
24633
24615
  "message": "replacing incorrect tag: returns with return",
24634
- "line": " packages/@ember/reactive/collections.ts:223"
24616
+ "line": " packages/@ember/reactive/collections.ts:218"
24635
24617
  },
24636
24618
  {
24637
24619
  "message": "replacing incorrect tag: returns with return",
@@ -24747,11 +24729,11 @@
24747
24729
  },
24748
24730
  {
24749
24731
  "message": "Missing item type\nThe HTML class attribute.",
24750
- "line": " packages/@ember/-internals/glimmer/lib/components/input.ts:167"
24732
+ "line": " packages/@ember/-internals/glimmer/lib/components/input.ts:171"
24751
24733
  },
24752
24734
  {
24753
24735
  "message": "Missing item type\nThe HTML type attribute.",
24754
- "line": " packages/@ember/-internals/glimmer/lib/components/input.ts:178"
24736
+ "line": " packages/@ember/-internals/glimmer/lib/components/input.ts:182"
24755
24737
  },
24756
24738
  {
24757
24739
  "message": "Missing item type\nThe default HTML id attribute. We don't really _need_ one, this is just\nadded for compatibility as it's hard to tell if people rely on it being\npresent, and it doens't really hurt.\n\nHowever, don't rely on this internally, like passing it to `getElementId`.\nThis can be (and often is) overriden by passing an `id` attribute on the\ninvocation, which shadows this default id via `...attributes`.",
@@ -24803,67 +24785,67 @@
24803
24785
  },
24804
24786
  {
24805
24787
  "message": "Missing item type",
24806
- "line": " packages/@ember/-internals/glimmer/lib/helper.ts:123"
24788
+ "line": " packages/@ember/-internals/glimmer/lib/helper.ts:135"
24807
24789
  },
24808
24790
  {
24809
24791
  "message": "Missing item type\nThe type of a function-based helper.",
24810
- "line": " packages/@ember/-internals/glimmer/lib/helper.ts:313"
24792
+ "line": " packages/@ember/-internals/glimmer/lib/helper.ts:325"
24811
24793
  },
24812
24794
  {
24813
24795
  "message": "Missing item type\nDestroys the render tree and removes all rendered content from the element rendered into",
24814
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:546"
24796
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:552"
24815
24797
  },
24816
24798
  {
24817
24799
  "message": "Missing item type\nThe GlimmerRenderResult from the last render. Used to get positional\ninformation (firstNode) when a re-render replaces the content, so\nthat the new content is placed at the same DOM position.",
24818
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:554"
24800
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:560"
24819
24801
  },
24820
24802
  {
24821
24803
  "message": "Missing item type\nThe component definition to render.\n\nAny component that has had its manager registered is valid.\nFor the component-types that ship with ember, manager registration\ndoes not need to be worried about.",
24822
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:585"
24804
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:591"
24823
24805
  },
24824
24806
  {
24825
24807
  "message": "Missing item type\nThe element to render the component in to.",
24826
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:599"
24808
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:605"
24827
24809
  },
24828
24810
  {
24829
24811
  "message": "Missing item type\nOptional owner. Defaults to `{}`, can be any object, but will need to implement the [Owner](https://api.emberjs.com/ember/release/classes/Owner) API for components within this render tree to access services.",
24830
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:604"
24812
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:610"
24831
24813
  },
24832
24814
  {
24833
24815
  "message": "Missing item type\nOptionally configure the rendering environment",
24834
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:608"
24816
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:614"
24835
24817
  },
24836
24818
  {
24837
24819
  "message": "Missing item type\nWhen false, modifiers will not run.",
24838
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:612"
24820
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:618"
24839
24821
  },
24840
24822
  {
24841
24823
  "message": "Missing item type\nAll other options are forwarded to the underlying renderer.\n(its API is currently private and out of scope for this RFC,\n so passing additional things here is also considered private API)",
24842
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:616"
24824
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:622"
24843
24825
  },
24844
24826
  {
24845
24827
  "message": "Missing item type\nThese args get passed to the rendered component\n\nIf your args are reactive, re-rendering will happen automatically.",
24846
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:624"
24828
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:630"
24847
24829
  },
24848
24830
  {
24849
24831
  "message": "Missing item type\nSAFETY: we should figure out what we need out of a `document` and narrow the API.\n this exercise should also end up beginning to define what we need for CLI rendering (or to other outputs)",
24850
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:633"
24832
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:639"
24851
24833
  },
24852
24834
  {
24853
24835
  "message": "Missing item type\nReplace all contents, if we've rendered multiple times.\n\nhttps://github.com/emberjs/rfcs/pull/1099/files#diff-2b962105b9083ca84579cdc957f27f49407440f3c5078083fa369ec18cc46da8R365\n\nWe could later add an option to not do this behavior\n\nNOTE: destruction is async",
24854
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:654"
24836
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:660"
24855
24837
  },
24856
24838
  {
24857
24839
  "message": "Missing item type\nWe can only replace the inner HTML the first time.\nBecause destruction is async, it won't be safe to\ndo this again, and we'll have to rely on the above destroy.",
24858
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:665"
24840
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:671"
24859
24841
  },
24860
24842
  {
24861
24843
  "message": "Missing item type\nIf there's an existing render result with valid bounds, use its\nfirstNode as the nextSibling so that new content is inserted at\nthe same DOM position. This ensures stable ordering when multiple\nrenderComponent calls target the same element and one is re-invoked\n(e.g., due to tracked dependency changes).\n\nThe old content's DOM nodes are still present (destruction is async),\nso firstNode() is a valid position reference. The new content is placed\nBEFORE the old content. When the old content is eventually destroyed\n(async clear of bounds), the new content remains in the correct position.",
24862
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:674"
24844
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:680"
24863
24845
  },
24864
24846
  {
24865
24847
  "message": "Missing item type\nSAFETY: are there consequences for being looser with *this* owner?\n the public API for `owner` is kinda `Partial<InternalOwner>`\n aka: implement only what you need.\n But for actual ember apps, you *need* to implement everything\n an app needs (which will actually change and become less over time)",
24866
- "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:742"
24848
+ "line": " packages/@ember/-internals/glimmer/lib/renderer.ts:748"
24867
24849
  },
24868
24850
  {
24869
24851
  "message": "Missing item type\nTest skipped because when an error occurs,\nwe mess up the cache used by renderComponent.",
@@ -25155,47 +25137,47 @@
25155
25137
  },
25156
25138
  {
25157
25139
  "message": "Missing item type\nThe final definition of NativeArray removes all native methods. This is the list of removed methods\nwhen run in Chrome 106.",
25158
- "line": " packages/@ember/array/index.ts:1911"
25140
+ "line": " packages/@ember/array/index.ts:1855"
25159
25141
  },
25160
25142
  {
25161
25143
  "message": "Missing item type\nThese additional items must be redefined since `Omit` causes methods that return `this` to return the\ntype at the time of the Omit.",
25162
- "line": " packages/@ember/array/index.ts:1928"
25144
+ "line": " packages/@ember/array/index.ts:1872"
25163
25145
  },
25164
25146
  {
25165
25147
  "message": "Missing item type\nRemove all elements from the array. This is useful if you\nwant to reuse an existing array without having to recreate it.",
25166
- "line": " packages/@ember/array/index.ts:1952"
25148
+ "line": " packages/@ember/array/index.ts:1896"
25167
25149
  },
25168
25150
  {
25169
25151
  "message": "Missing item type\nThis will use the primitive `replace()` method to insert an object at the\nspecified index.",
25170
- "line": " packages/@ember/array/index.ts:1957"
25152
+ "line": " packages/@ember/array/index.ts:1901"
25171
25153
  },
25172
25154
  {
25173
25155
  "message": "Missing item type\nRemove an object at the specified index using the `replace()` primitive\nmethod. You can pass either a single index, or a start and a length.",
25174
- "line": " packages/@ember/array/index.ts:1962"
25156
+ "line": " packages/@ember/array/index.ts:1906"
25175
25157
  },
25176
25158
  {
25177
25159
  "message": "Missing item type\nAdd the objects in the passed numerable to the end of the array. Defers\nnotifying observers of the change until all objects are added.",
25178
- "line": " packages/@ember/array/index.ts:1967"
25160
+ "line": " packages/@ember/array/index.ts:1911"
25179
25161
  },
25180
25162
  {
25181
25163
  "message": "Missing item type\nAdds the named objects to the beginning of the array. Defers notifying\nobservers until all objects have been added.",
25182
- "line": " packages/@ember/array/index.ts:1972"
25164
+ "line": " packages/@ember/array/index.ts:1916"
25183
25165
  },
25184
25166
  {
25185
25167
  "message": "Missing item type\nReverse objects in the array. Works just like `reverse()` but it is\nKVO-compliant.",
25186
- "line": " packages/@ember/array/index.ts:1977"
25168
+ "line": " packages/@ember/array/index.ts:1921"
25187
25169
  },
25188
25170
  {
25189
25171
  "message": "Missing item type\nReplace all the receiver's content with content of the argument.\nIf argument is an empty array receiver will be cleared.",
25190
- "line": " packages/@ember/array/index.ts:1982"
25172
+ "line": " packages/@ember/array/index.ts:1926"
25191
25173
  },
25192
25174
  {
25193
25175
  "message": "Missing item type\nRemoves each object in the passed array from the receiver.",
25194
- "line": " packages/@ember/array/index.ts:2004"
25176
+ "line": " packages/@ember/array/index.ts:1948"
25195
25177
  },
25196
25178
  {
25197
25179
  "message": "Missing item type\nAdds each object in the passed enumerable to the receiver.",
25198
- "line": " packages/@ember/array/index.ts:2025"
25180
+ "line": " packages/@ember/array/index.ts:1969"
25199
25181
  },
25200
25182
  {
25201
25183
  "message": "Missing item type",
@@ -25239,11 +25221,11 @@
25239
25221
  },
25240
25222
  {
25241
25223
  "message": "Missing item type\nTemplate-only components have no backing class instance, so `this` in their\ntemplates is null. This means that you can only reference passed in arguments\n(e.g. `{{@arg}}`).",
25242
- "line": " packages/@ember/component/template-only.ts:36"
25224
+ "line": " packages/@ember/component/template-only.ts:34"
25243
25225
  },
25244
25226
  {
25245
25227
  "message": "Missing item type\nA convenience alias for {@link TemplateOnlyComponent}",
25246
- "line": " packages/@ember/component/template-only.ts:44"
25228
+ "line": " packages/@ember/component/template-only.ts:42"
25247
25229
  },
25248
25230
  {
25249
25231
  "message": "Missing item type",
@@ -25266,28 +25248,28 @@
25266
25248
  "line": " packages/@ember/engine/instance.ts:132"
25267
25249
  },
25268
25250
  {
25269
- "message": "Missing item type\nUsing the `{{hash}}` helper, you can pass objects directly from the template\nas an argument to your components.\n\n```\nimport { hash } from '@ember/helper';\n\n<template>\n {{#each-in (hash givenName='Jen' familyName='Weber') as |key value|}}\n <p>{{key}}: {{value}}</p>\n {{/each-in}}\n</template>\n```\n\n**NOTE:** this example uses the experimental `<template>` feature, which is\nthe only place you need to import `hash` to use it (it is a built-in when\nwriting standalone `.hbs` files).",
25251
+ "message": "Missing item type\nUsing the `{{hash}}` helper, you can pass objects directly from the template\nas an argument to your components.\n\n```\n<template>\n {{#each-in (hash givenName='Jen' familyName='Weber') as |key value|}}\n <p>{{key}}: {{value}}</p>\n {{/each-in}}\n</template>\n```",
25270
25252
  "line": " packages/@ember/helper/index.ts:346"
25271
25253
  },
25272
25254
  {
25273
- "message": "Missing item type\nUsing the `{{array}}` helper, you can pass arrays directly from the template\nas an argument to your components.\n\n```js\nimport { array } from '@ember/helper';\n\n<template>\n <ul>\n {{#each (array 'Tom Dale' 'Yehuda Katz' @anotherPerson) as |person|}}\n <li>{{person}}</li>\n {{/each}}\n </ul>\n</template>\n\n**NOTE:** this example uses the experimental `<template>` feature, which is\nthe only place you need to import `array` to use it (it is a built-in when\nwriting standalone `.hbs` files).\n```",
25274
- "line": " packages/@ember/helper/index.ts:367"
25255
+ "message": "Missing item type\nUsing the `{{array}}` helper, you can pass arrays directly from the template\nas an argument to your components.\n\n```js\n\n<template>\n <ul>\n {{#each (array 'Tom Dale' 'Yehuda Katz' @anotherPerson) as |person|}}\n <li>{{person}}</li>\n {{/each}}\n </ul>\n</template>\n```",
25256
+ "line": " packages/@ember/helper/index.ts:361"
25275
25257
  },
25276
25258
  {
25277
- "message": "Missing item type\nThe `{{concat}}` helper makes it easy to dynamically send a number of\nparameters to a component or helper as a single parameter in the format of a\nconcatenated string.\n\nFor example:\n\n```js\nimport { concat } from '@ember/helper';\n\n<template>\n {{get @foo (concat \"item\" @index)}}\n</template>\n```\n\nThis will display the result of `@foo.item1` when `index` is `1`, and\n`this.foo.item2` when `index` is `2`, etc.\n\n**NOTE:** this example uses the experimental `<template>` feature, which is\nthe only place you need to import `concat` to use it (it is a built-in when\nwriting standalone `.hbs` files).",
25278
- "line": " packages/@ember/helper/index.ts:390"
25259
+ "message": "Missing item type\nThe `{{concat}}` helper makes it easy to dynamically send a number of\nparameters to a component or helper as a single parameter in the format of a\nconcatenated string.\n\nFor example:\n\n```js\nimport { concat } from '@ember/helper';\n\n<template>\n {{get @foo (concat \"item\" @index)}}\n</template>\n```\n\nThis will display the result of `@foo.item1` when `index` is `1`, and\n`this.foo.item2` when `index` is `2`, etc.",
25260
+ "line": " packages/@ember/helper/index.ts:379"
25279
25261
  },
25280
25262
  {
25281
- "message": "Missing item type\nThe `{{get}}` helper makes it easy to dynamically look up a property on an\nobject or an element in an array. The second argument to `{{get}}` can be a\nstring or a number, depending on the object being accessed.\n\nTo access a property on an object with a string key:\n\n```js\nimport { get } from '@ember/helper';\n\n<template>\n {{get @someObject \"objectKey\"}}\n</template>\n```\n\nTo access the first element in an array:\n\n```js\nimport { get } from '@ember/helper';\n\n<template>\n {{get @someArray 0}}\n</template>\n```\n\nTo access a property on an object with a dynamic key:\n\n```js\nimport { get } from '@ember/helper';\n\n<template>\n {{get @address @field}}\n</template>\n```\n\nThis will display the result of `@foo.item1` when `index` is `1`, and\n`this.foo.item2` when `index` is `2`, etc.\n\n**NOTE:** this example uses the experimental `<template>` feature, which is\nthe only place you need to import `concat` to use it (it is a built-in when\nwriting standalone `.hbs` files).",
25282
- "line": " packages/@ember/helper/index.ts:415"
25263
+ "message": "Missing item type\nThe `{{get}}` helper makes it easy to dynamically look up a property on an\nobject or an element in an array. The second argument to `{{get}}` can be a\nstring or a number, depending on the object being accessed.\n\nTo access a property on an object with a string key:\n\n```js\nimport { get } from '@ember/helper';\n\n<template>\n {{get @someObject \"objectKey\"}}\n</template>\n```\n\nTo access the first element in an array:\n\n```js\nimport { get } from '@ember/helper';\n\n<template>\n {{get @someArray 0}}\n</template>\n```\n\nTo access a property on an object with a dynamic key:\n\n```js\nimport { get } from '@ember/helper';\n\n<template>\n {{get @address @field}}\n</template>\n```\n\nThis will display the result of `@foo.item1` when `index` is `1`, and\n`this.foo.item2` when `index` is `2`, etc.",
25264
+ "line": " packages/@ember/helper/index.ts:400"
25283
25265
  },
25284
25266
  {
25285
25267
  "message": "Missing item type\n`{{fn}}` is a helper that receives a function and some arguments, and returns\na new function that combines. This allows you to pass parameters along to\nfunctions in your templates:\n\n```js\nimport { fn } from '@ember/helper';\n\nfunction showAlert(message) {\n alert(`The message is: '${message}'`);\n}\n\n<template>\n <button type=\"button\" {{on \"click\" (fn showAlert \"Hello!\")}}>\n Click me!\n </button>\n</template>\n```",
25286
- "line": " packages/@ember/helper/index.ts:460"
25268
+ "line": " packages/@ember/helper/index.ts:441"
25287
25269
  },
25288
25270
  {
25289
25271
  "message": "Missing item type\nUse the {{uniqueId}} helper to generate a unique ID string suitable for use as\nan ID attribute in the DOM.\n\nEach invocation of {{uniqueId}} will return a new, unique ID string.\nYou can use the `let` helper to create an ID that can be reused within a template.\n\n```js\nimport { uniqueId } from '@ember/helper';\n\n<template>\n {{#let (uniqueId) as |emailId|}}\n <label for={{emailId}}>Email address</label>\n <input id={{emailId}} type=\"email\" />\n {{/let}}\n</template>\n```",
25290
- "line": " packages/@ember/helper/index.ts:597"
25272
+ "line": " packages/@ember/helper/index.ts:578"
25291
25273
  },
25292
25274
  {
25293
25275
  "message": "Missing item type",
@@ -26650,7 +26632,7 @@
26650
26632
  "line": " packages/@glimmer/syntax/dist/es/index.js:9467"
26651
26633
  },
26652
26634
  {
26653
- "message": "Missing item type\nParses and traverses a given handlebars html template to extract all template locals\nreferenced that could possible come from the parent scope. Can exclude known keywords\noptionally.",
26635
+ "message": "Missing item type\nParses and traverses a given template to extract all template locals\nreferenced that could possible come from the parent scope. Can exclude known keywords\noptionally.",
26654
26636
  "line": " packages/@glimmer/syntax/dist/es/index.js:9480"
26655
26637
  },
26656
26638
  {
@@ -27422,7 +27404,7 @@
27422
27404
  "line": " packages/@glimmer/syntax/lib/get-template-locals.ts:65"
27423
27405
  },
27424
27406
  {
27425
- "message": "Missing item type\nParses and traverses a given handlebars html template to extract all template locals\nreferenced that could possible come from the parent scope. Can exclude known keywords\noptionally.",
27407
+ "message": "Missing item type\nParses and traverses a given template to extract all template locals\nreferenced that could possible come from the parent scope. Can exclude known keywords\noptionally.",
27426
27408
  "line": " packages/@glimmer/syntax/lib/get-template-locals.ts:84"
27427
27409
  },
27428
27410
  {
@@ -27503,11 +27485,11 @@
27503
27485
  },
27504
27486
  {
27505
27487
  "message": "Missing item type\n`value` receives a tag and returns an opaque Revision based on that tag. This\nsnapshot can then later be passed to `validate` with the same tag to\ndetermine if the tag has changed at all since the time that `value` was\ncalled.",
27506
- "line": " packages/@glimmer/validator/lib/validators.ts:50"
27488
+ "line": " packages/@glimmer/validator/lib/validators.ts:49"
27507
27489
  },
27508
27490
  {
27509
27491
  "message": "Missing item type\n`validate` receives a tag and a snapshot from a previous call to `value` with\nthe same tag, and determines if the tag is still valid compared to the\nsnapshot. If the tag's state has changed at all since then, `validate` will\nreturn false, otherwise it will return true. This is used to determine if a\ncalculation related to the tags should be rerun.",
27510
- "line": " packages/@glimmer/validator/lib/validators.ts:62"
27492
+ "line": " packages/@glimmer/validator/lib/validators.ts:61"
27511
27493
  },
27512
27494
  {
27513
27495
  "message": "Missing item type\nRegisters\n\nFor the most part, these follows MIPS naming conventions, however the\nregister numbers are different.",