ember-source 7.2.0-alpha.4 → 7.3.0-alpha.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.
- package/blueprints/-addon-import.js +4 -6
- package/blueprints/-utils.js +6 -9
- package/build-metadata.json +3 -3
- package/dist/dev/packages/@ember/-internals/browser-environment/index.js +1 -1
- package/dist/dev/packages/@ember/-internals/deprecations/index.js +10 -0
- package/dist/dev/packages/@ember/-internals/glimmer/index.js +11 -11
- package/dist/dev/packages/@ember/-internals/metal/index.js +18 -18
- package/dist/dev/packages/@ember/-internals/routing/index.js +3 -3
- package/dist/dev/packages/@ember/-internals/runtime/index.js +1 -1
- package/dist/dev/packages/@ember/-internals/runtime/lib/ext/rsvp.js +1 -1
- package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +8 -8
- package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +1 -1
- package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/comparable.js +5 -0
- package/dist/dev/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +3 -3
- package/dist/dev/packages/@ember/-internals/utils/index.js +2 -2
- package/dist/dev/packages/@ember/-internals/views/lib/mixins/action_support.js +1 -1
- package/dist/dev/packages/@ember/-internals/views/lib/system/event_dispatcher.js +2 -2
- package/dist/dev/packages/@ember/-internals/views/lib/system/utils.js +1 -1
- package/dist/dev/packages/@ember/-internals/views/lib/views/core_view.js +1 -1
- package/dist/dev/packages/@ember/application/index.js +6 -7
- package/dist/dev/packages/@ember/application/instance.js +24 -4
- package/dist/dev/packages/@ember/application/namespace.js +3 -3
- package/dist/dev/packages/@ember/array/index.js +10 -64
- package/dist/dev/packages/@ember/array/lib/is-array.js +71 -0
- package/dist/dev/packages/@ember/array/proxy.js +8 -8
- package/dist/dev/packages/@ember/component/helper.js +321 -1
- package/dist/dev/packages/@ember/component/index.js +21 -15
- package/dist/dev/packages/@ember/component/template-only.js +1 -1
- package/dist/dev/packages/@ember/controller/index.js +3 -3
- package/dist/dev/packages/@ember/debug/data-adapter.js +3 -3
- package/dist/dev/packages/@ember/debug/index.js +1 -1
- package/dist/dev/packages/@ember/engine/index.js +5 -5
- package/dist/dev/packages/@ember/engine/instance.js +2 -2
- package/dist/dev/packages/@ember/helper/index.js +8 -27
- package/dist/dev/packages/@ember/modifier/index.js +2 -2
- package/dist/dev/packages/@ember/modifier/on.js +1 -1
- package/dist/dev/packages/@ember/object/-internals.js +2 -2
- package/dist/dev/packages/@ember/object/compat.js +3 -3
- package/dist/dev/packages/@ember/object/computed.js +2 -2
- package/dist/dev/packages/@ember/object/core.js +7 -7
- package/dist/dev/packages/@ember/object/evented.js +2 -2
- package/dist/dev/packages/@ember/object/events.js +1 -1
- package/dist/dev/packages/@ember/object/index.js +30 -25
- package/dist/dev/packages/@ember/object/internals.js +1 -1
- package/dist/dev/packages/@ember/object/lib/computed/computed_macros.js +5 -5
- package/dist/dev/packages/@ember/object/lib/computed/reduce_computed_macros.js +3 -3
- package/dist/dev/packages/@ember/object/mixin.js +6 -6
- package/dist/dev/packages/@ember/object/observable.js +7 -7
- package/dist/dev/packages/@ember/object/observers.js +1 -1
- package/dist/dev/packages/@ember/object/promise-proxy-mixin.js +3 -3
- package/dist/dev/packages/@ember/reactive/collections.js +153 -153
- package/dist/dev/packages/@ember/renderer/index.js +1 -1
- package/dist/dev/packages/@ember/routing/-internals.js +3 -3
- package/dist/dev/packages/@ember/routing/index.js +12 -8
- package/dist/dev/packages/@ember/routing/lib/generate_controller.js +2 -3
- package/dist/dev/packages/@ember/routing/lib/routing-service.js +5 -6
- package/dist/dev/packages/@ember/routing/lib/utils.js +3 -3
- package/dist/dev/packages/@ember/routing/route.js +12 -12
- package/dist/dev/packages/@ember/routing/router-service.js +25 -19
- package/dist/dev/packages/@ember/routing/router.js +5 -5
- package/dist/dev/packages/@ember/runloop/index.js +1 -1
- package/dist/dev/packages/@ember/service/index.js +1 -1
- package/dist/dev/packages/@ember/template-compiler/lib/compile-options.js +3 -3
- package/dist/dev/packages/@ember/template-compiler/lib/template.js +2 -2
- package/dist/dev/packages/@ember/template-factory/index.js +1 -1
- package/dist/dev/packages/@ember/utils/lib/compare.js +5 -2
- package/dist/dev/packages/@ember/utils/lib/is_empty.js +1 -1
- package/dist/dev/packages/@glimmer/encoder/index.js +1 -1
- package/dist/dev/packages/@glimmer/manager/index.js +4 -4
- package/dist/dev/packages/@glimmer/node/index.js +3 -3
- package/dist/dev/packages/@glimmer/opcode-compiler/index.js +2 -2
- package/dist/dev/packages/@glimmer/program/index.js +10 -10
- package/dist/dev/packages/@glimmer/reference/index.js +5 -5
- package/dist/dev/packages/@glimmer/runtime/index.js +13 -13
- package/dist/dev/packages/@glimmer/tracking/index.js +2 -2
- package/dist/dev/packages/@glimmer/tracking/primitives/cache/index.js +1 -1
- package/dist/dev/packages/@glimmer/util/index.js +4 -4
- package/dist/dev/packages/@glimmer/validator/index.js +3 -3
- package/dist/dev/packages/@glimmer/vm/index.js +2 -2
- package/dist/dev/packages/ember/version.js +1 -1
- package/dist/dev/packages/ember-template-compiler/index.js +4 -4
- package/dist/dev/packages/router_js/index.js +3 -3
- package/dist/dev/packages/rsvp/index.js +2281 -1
- package/dist/dev/packages/shared-chunks/{alias-RGbDZoAB.js → alias-DpqL1qx6.js} +7 -7
- package/dist/dev/packages/shared-chunks/{api-BT9M3UaD.js → api-BlZDPg1n.js} +6 -6
- package/dist/dev/packages/shared-chunks/{element-builder-Cl1kHFJE.js → api-C0PAtEgQ.js} +139 -120
- package/dist/dev/packages/shared-chunks/{api-DG5kRT-o.js → api-DuLOZMO_.js} +3 -3
- package/dist/dev/packages/shared-chunks/{args-proxy-CB0SM6jC.js → args-proxy-CS5Brs3_.js} +2 -2
- package/dist/dev/packages/shared-chunks/{untouchable-this-BHdAERUu.js → arguments-CDkbOqTS.js} +236 -236
- package/dist/dev/packages/shared-chunks/{array-BMaSKezP.js → array-CVEnNWng.js} +3 -3
- package/dist/dev/packages/shared-chunks/{array-utils-BEaSKdEb.js → array-utils-CZQxrdD3.js} +1 -1
- package/dist/dev/packages/shared-chunks/{cache-CeWOBNQg.js → cache-DGDPVCpC.js} +2 -3
- package/dist/dev/packages/shared-chunks/{capabilities-CZkuOqqC.js → capabilities-CajW4QjE.js} +1 -1
- package/dist/dev/packages/shared-chunks/{chain-tags-DfmU63mS.js → chain-tags-uWSImHzB.js} +4 -4
- package/dist/dev/packages/shared-chunks/{collections-DEt-i-8B.js → collections-DPkjqeA3.js} +2 -2
- package/dist/dev/packages/shared-chunks/{compiler-DhH2WLpA.js → compiler-QUSl_urU.js} +3 -3
- package/dist/dev/packages/shared-chunks/{computed-Daavz6vC.js → computed-BPCtuOxQ.js} +6 -6
- package/dist/dev/packages/shared-chunks/{curly-YoYS2vXw.js → curly-DGUCLOud.js} +10 -11
- package/dist/dev/packages/shared-chunks/curly-brand-B_F79Dep.js +12 -0
- package/dist/dev/packages/shared-chunks/{curried-Cnjy9_ug.js → curried-BZnYakIg.js} +1 -1
- package/dist/dev/packages/shared-chunks/{decorator-DYQwMItS.js → decorator-B5Uh5NFI.js} +1 -1
- package/dist/dev/packages/shared-chunks/{element-bBwMD8cw.js → element-BYLB-q7a.js} +5 -3
- package/dist/dev/packages/shared-chunks/{events-B1lx9T1I.js → events-6aFVjD4k.js} +1 -1
- package/dist/{prod/packages/shared-chunks/flags-B9qxc-pB.js → dev/packages/shared-chunks/flags-BZxHQ0yn.js} +1 -1
- package/dist/dev/packages/shared-chunks/{get-CO3EIWsm.js → get-6I3sjd-I.js} +33 -36
- package/dist/{prod/packages/shared-chunks/get_properties-wj_Qmotj.js → dev/packages/shared-chunks/get_properties-Cm2sWt5f.js} +1 -1
- package/dist/dev/packages/shared-chunks/{guid-PO2v9BaN.js → guid-Cbq2sNV_.js} +1 -1
- package/dist/dev/packages/shared-chunks/{hash-2-93qikL.js → hash-6NDs_5_f.js} +18 -12
- package/dist/dev/packages/shared-chunks/helper-brand-C9_8vvOf.js +12 -0
- package/dist/dev/packages/shared-chunks/{index-DX90CU4L.js → index-BGP1rw3B.js} +1 -1
- package/dist/dev/packages/shared-chunks/{index-dyv6rcBf.js → index-CCyXUNBa.js} +655 -1633
- package/dist/dev/packages/shared-chunks/{index-DkwVSPP5.js → index-DaFzpTIE.js} +10 -9
- package/dist/dev/packages/shared-chunks/{injected_property-B075jH6c.js → injected_property-CbBLr5jt.js} +2 -2
- package/dist/dev/packages/shared-chunks/{internal-Bpr6ihB_.js → internal-DTOXyEGM.js} +4 -4
- package/dist/dev/packages/shared-chunks/{internal-helper-IC87S6iZ.js → internal-helper-CKrni0b_.js} +1 -1
- package/dist/dev/packages/shared-chunks/{invoke-Ds0KEfP_.js → invoke-d9sqa50M.js} +3 -3
- package/dist/dev/packages/shared-chunks/{libraries-P8Ins5CB.js → libraries-DwffpMGE.js} +1 -1
- package/dist/dev/packages/shared-chunks/{meta-Cjo3zQJq.js → meta-BqC7f9Ia.js} +1 -1
- package/dist/{prod/packages/shared-chunks/namespace_search-TFdmjK_a.js → dev/packages/shared-chunks/namespace_search-BfvzEQzN.js} +1 -1
- package/dist/dev/packages/shared-chunks/{normalize-CxG_iVLJ.js → normalize-CKySQVU7.js} +2 -2
- package/dist/dev/packages/shared-chunks/{or-Bg6rCMF8.js → not-DYh6AY9Z.js} +36 -36
- package/dist/dev/packages/shared-chunks/{observers-CejcZw5s.js → observers-DMlX2nCi.js} +5 -5
- package/dist/dev/packages/shared-chunks/{on-Ch_lyozr.js → on-DlF0Wy7P.js} +10 -10
- package/dist/dev/packages/shared-chunks/outlet-CHFL7tun.js +135 -0
- package/dist/dev/packages/shared-chunks/{present-D0EfKzC6.js → present-B1rrjAVM.js} +1 -1
- package/dist/{prod/packages/shared-chunks/program-CF651Zuj.js → dev/packages/shared-chunks/program-DlgjqLa6.js} +3 -3
- package/dist/dev/packages/shared-chunks/{program-context-BaYVr5GA.js → program-context-Dq8xN2HI.js} +5 -4
- package/dist/dev/packages/shared-chunks/{property_get-BjbsrgpU.js → property_get-CRP7MFz_.js} +3 -3
- package/dist/dev/packages/shared-chunks/{property_set-LJskl202.js → property_set-qCUylPEK.js} +3 -3
- package/dist/dev/packages/shared-chunks/{reference-C-OXd_kp.js → reference-BqOLhKFy.js} +3 -3
- package/dist/dev/packages/shared-chunks/{registers-Buvdhhxx.js → registers-C_W2qYHJ.js} +1 -1
- package/dist/dev/packages/shared-chunks/{rehydrate-builder-IH4d_JQy.js → rehydrate-builder-C6k1XhET.js} +4 -4
- package/dist/dev/packages/shared-chunks/{render-Dz3OWqXy.js → render-87_sKZ_k.js} +94 -94
- package/dist/dev/packages/shared-chunks/{rsvp-C6j8G1D1.js → rsvp.es-DR7yS7qg.js} +150 -154
- package/dist/dev/packages/shared-chunks/{serialize-builder-DKliZPPG.js → serialize-builder-BlxBjwO-.js} +2 -2
- package/dist/dev/packages/shared-chunks/{set_properties-CNds2HCH.js → set_properties-C4TSebH6.js} +2 -2
- package/dist/dev/packages/shared-chunks/setup-registry-BHdDJATP.js +951 -0
- package/dist/{prod/packages/shared-chunks/simple-cast-BXTrayoV.js → dev/packages/shared-chunks/simple-cast-DCvJLSin.js} +1 -1
- package/dist/{prod/packages/shared-chunks/super-D4qkU4uq.js → dev/packages/shared-chunks/super-BBBjgF69.js} +1 -1
- package/dist/{prod/packages/shared-chunks/syscall-ops-nrBHMOTp.js → dev/packages/shared-chunks/syscall-ops-CN7STuUn.js} +1 -1
- package/dist/dev/packages/shared-chunks/{template-B0Apv9g2.js → template-BRrQR6KS.js} +1 -1
- package/dist/dev/packages/shared-chunks/{template-only-BxYzSEnC.js → template-only-Cu639ICT.js} +2 -4
- package/dist/dev/packages/shared-chunks/{textarea-DHjEFpZu.js → textarea-C4lYkaHj.js} +12 -8
- package/dist/dev/packages/shared-chunks/{tracked-B76E1nGz.js → tracked-DEyf0T_X.js} +5 -5
- package/dist/dev/packages/shared-chunks/{tracked-data-CH1USZZy.js → tracked-data-DgqqRdYO.js} +2 -2
- package/dist/dev/packages/shared-chunks/{unique-id-Hd96VZlE.js → unique-id-DQOhouG1.js} +2 -2
- package/dist/dev/packages/shared-chunks/{unrecognized-url-error-BQdkjTtZ.js → unrecognized-url-error-B8loxkay.js} +3 -3
- package/dist/{prod/packages/shared-chunks/vm-ops-5QCUIRx4.js → dev/packages/shared-chunks/vm-ops-ImHv0Wtg.js} +1 -1
- package/dist/prod/packages/@ember/-internals/deprecations/index.js +10 -0
- package/dist/prod/packages/@ember/-internals/glimmer/index.js +11 -11
- package/dist/prod/packages/@ember/-internals/metal/index.js +18 -18
- package/dist/prod/packages/@ember/-internals/routing/index.js +3 -3
- package/dist/prod/packages/@ember/-internals/runtime/index.js +1 -1
- package/dist/prod/packages/@ember/-internals/runtime/lib/ext/rsvp.js +1 -1
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +8 -8
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +1 -1
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/comparable.js +5 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +3 -3
- package/dist/prod/packages/@ember/-internals/utils/index.js +2 -2
- package/dist/prod/packages/@ember/-internals/views/lib/mixins/action_support.js +1 -1
- package/dist/prod/packages/@ember/-internals/views/lib/system/event_dispatcher.js +2 -2
- package/dist/prod/packages/@ember/-internals/views/lib/system/utils.js +1 -1
- package/dist/prod/packages/@ember/-internals/views/lib/views/core_view.js +1 -1
- package/dist/prod/packages/@ember/application/index.js +5 -6
- package/dist/prod/packages/@ember/application/instance.js +19 -4
- package/dist/prod/packages/@ember/application/namespace.js +3 -3
- package/dist/prod/packages/@ember/array/index.js +11 -58
- package/dist/prod/packages/@ember/array/lib/is-array.js +64 -0
- package/dist/prod/packages/@ember/array/proxy.js +8 -8
- package/dist/prod/packages/@ember/component/helper.js +305 -1
- package/dist/prod/packages/@ember/component/index.js +20 -14
- package/dist/prod/packages/@ember/component/template-only.js +1 -1
- package/dist/prod/packages/@ember/controller/index.js +3 -3
- package/dist/prod/packages/@ember/debug/data-adapter.js +3 -3
- package/dist/prod/packages/@ember/engine/index.js +5 -5
- package/dist/prod/packages/@ember/engine/instance.js +2 -2
- package/dist/prod/packages/@ember/helper/index.js +8 -27
- package/dist/prod/packages/@ember/modifier/index.js +2 -2
- package/dist/prod/packages/@ember/modifier/on.js +1 -1
- package/dist/prod/packages/@ember/object/-internals.js +2 -2
- package/dist/prod/packages/@ember/object/compat.js +3 -3
- package/dist/prod/packages/@ember/object/computed.js +2 -2
- package/dist/prod/packages/@ember/object/core.js +7 -7
- package/dist/prod/packages/@ember/object/evented.js +2 -2
- package/dist/prod/packages/@ember/object/events.js +1 -1
- package/dist/prod/packages/@ember/object/index.js +30 -25
- package/dist/prod/packages/@ember/object/internals.js +2 -2
- package/dist/prod/packages/@ember/object/lib/computed/computed_macros.js +4 -4
- package/dist/prod/packages/@ember/object/lib/computed/reduce_computed_macros.js +2 -2
- package/dist/prod/packages/@ember/object/mixin.js +6 -6
- package/dist/prod/packages/@ember/object/observable.js +7 -7
- package/dist/prod/packages/@ember/object/observers.js +1 -1
- package/dist/prod/packages/@ember/object/promise-proxy-mixin.js +3 -3
- package/dist/prod/packages/@ember/reactive/collections.js +153 -153
- package/dist/prod/packages/@ember/renderer/index.js +1 -1
- package/dist/prod/packages/@ember/routing/index.js +12 -8
- package/dist/prod/packages/@ember/routing/lib/generate_controller.js +1 -2
- package/dist/prod/packages/@ember/routing/lib/routing-service.js +4 -5
- package/dist/prod/packages/@ember/routing/lib/utils.js +3 -3
- package/dist/prod/packages/@ember/routing/route.js +12 -12
- package/dist/prod/packages/@ember/routing/router-service.js +24 -18
- package/dist/prod/packages/@ember/routing/router.js +5 -5
- package/dist/prod/packages/@ember/runloop/index.js +1 -1
- package/dist/prod/packages/@ember/service/index.js +1 -1
- package/dist/prod/packages/@ember/template-compiler/lib/compile-options.js +3 -3
- package/dist/prod/packages/@ember/template-compiler/lib/template.js +2 -2
- package/dist/prod/packages/@ember/template-factory/index.js +1 -1
- package/dist/prod/packages/@ember/utils/lib/compare.js +5 -2
- package/dist/prod/packages/@ember/utils/lib/is_empty.js +1 -1
- package/dist/prod/packages/@glimmer/encoder/index.js +1 -1
- package/dist/prod/packages/@glimmer/manager/index.js +4 -4
- package/dist/prod/packages/@glimmer/node/index.js +3 -3
- package/dist/prod/packages/@glimmer/opcode-compiler/index.js +2 -2
- package/dist/prod/packages/@glimmer/program/index.js +10 -10
- package/dist/prod/packages/@glimmer/reference/index.js +5 -5
- package/dist/prod/packages/@glimmer/runtime/index.js +13 -13
- package/dist/prod/packages/@glimmer/tracking/index.js +2 -2
- package/dist/prod/packages/@glimmer/tracking/primitives/cache/index.js +1 -1
- package/dist/prod/packages/@glimmer/util/index.js +4 -4
- package/dist/prod/packages/@glimmer/validator/index.js +3 -3
- package/dist/prod/packages/@glimmer/vm/index.js +2 -2
- package/dist/prod/packages/ember/version.js +1 -1
- package/dist/prod/packages/ember-template-compiler/index.js +4 -4
- package/dist/prod/packages/router_js/index.js +3 -3
- package/dist/prod/packages/rsvp/index.js +2281 -1
- package/dist/prod/packages/shared-chunks/{alias-DsIh-16z.js → alias-Bod6qdNp.js} +7 -7
- package/dist/prod/packages/shared-chunks/{api-CGZbGcvX.js → api-B_poQGXS.js} +6 -6
- package/dist/prod/packages/shared-chunks/{element-builder-CZePCkbA.js → api-CQexacBn.js} +139 -120
- package/dist/prod/packages/shared-chunks/{api-DOLN_cR2.js → api-DlJKfm_f.js} +3 -3
- package/dist/prod/packages/shared-chunks/{args-proxy-CaXVcI8G.js → args-proxy-CCoFtYLS.js} +2 -2
- package/dist/prod/packages/shared-chunks/{debug-render-tree-CYENUjgX.js → arguments-BzAkZVBa.js} +198 -198
- package/dist/prod/packages/shared-chunks/{array-DYFI95FA.js → array-BzReKMeW.js} +3 -3
- package/dist/prod/packages/shared-chunks/{array-utils-BEaSKdEb.js → array-utils-CZQxrdD3.js} +1 -1
- package/dist/prod/packages/shared-chunks/{cache-CG6_L9db.js → cache-CofLhaS4.js} +1 -2
- package/dist/prod/packages/shared-chunks/{capabilities-_5e35539.js → capabilities-BuVYh-vx.js} +1 -1
- package/dist/prod/packages/shared-chunks/{chain-tags-BP0V2LnZ.js → chain-tags-B2J7DsxO.js} +4 -4
- package/dist/prod/packages/shared-chunks/{collections-By4M3cTy.js → collections-GpG8lT2g.js} +10 -10
- package/dist/prod/packages/shared-chunks/{compiler-DQmEjFyx.js → compiler-lBSssiWp.js} +2 -2
- package/dist/prod/packages/shared-chunks/{computed-D6MVTTDd.js → computed-DtIStxvq.js} +6 -6
- package/dist/prod/packages/shared-chunks/{curly-DCYSwLtz.js → curly-a6DP7r87.js} +10 -11
- package/dist/prod/packages/shared-chunks/curly-brand-B_F79Dep.js +12 -0
- package/dist/prod/packages/shared-chunks/{curried-Cnjy9_ug.js → curried-BZnYakIg.js} +1 -1
- package/dist/prod/packages/shared-chunks/{decorator-B8Lpq40g.js → decorator-9ikVwsjY.js} +1 -1
- package/dist/prod/packages/shared-chunks/{element-CT5H5uxF.js → element-DgHdPZ8u.js} +5 -3
- package/dist/prod/packages/shared-chunks/{events-C7aYCy0N.js → events-DYrYz3V8.js} +1 -1
- package/dist/{dev/packages/shared-chunks/flags-B9qxc-pB.js → prod/packages/shared-chunks/flags-BZxHQ0yn.js} +1 -1
- package/dist/prod/packages/shared-chunks/{get-tlL23wmp.js → get-Dago5uGl.js} +33 -36
- package/dist/{dev/packages/shared-chunks/get_properties-B203vZpz.js → prod/packages/shared-chunks/get_properties-Dg3xFpiS.js} +1 -1
- package/dist/prod/packages/shared-chunks/{guid-PO2v9BaN.js → guid-Cbq2sNV_.js} +1 -1
- package/dist/prod/packages/shared-chunks/{hash-C6IoC4eR.js → hash-gEXIsSO4.js} +24 -18
- package/dist/prod/packages/shared-chunks/helper-brand-C9_8vvOf.js +12 -0
- package/dist/prod/packages/shared-chunks/{index-D-rcNBLp.js → index-Bf53M8eS.js} +9 -8
- package/dist/prod/packages/shared-chunks/{index-DabsnYit.js → index-npr2B-vu.js} +541 -1465
- package/dist/prod/packages/shared-chunks/{injected_property-COGiYHKc.js → injected_property-Y-FadDej.js} +2 -2
- package/dist/prod/packages/shared-chunks/{internal-BEJC2IJ-.js → internal-BQ7zHrqS.js} +4 -4
- package/dist/prod/packages/shared-chunks/{internal-helper-CoxiRnnb.js → internal-helper-Bz1lpDXr.js} +1 -1
- package/dist/prod/packages/shared-chunks/{invoke-D_jsLbsj.js → invoke-DhQ5QRp2.js} +3 -3
- package/dist/prod/packages/shared-chunks/{libraries-Bs3H8iwC.js → libraries-DBql0hdn.js} +2 -2
- package/dist/prod/packages/shared-chunks/{meta-Ce6-qROq.js → meta-BJtIZDir.js} +1 -1
- package/dist/{dev/packages/shared-chunks/namespace_search-TFdmjK_a.js → prod/packages/shared-chunks/namespace_search-BfvzEQzN.js} +1 -1
- package/dist/prod/packages/shared-chunks/{normalize-Bx4H3NjB.js → normalize-C_IStty9.js} +2 -2
- package/dist/prod/packages/shared-chunks/{or-sYlRiUn_.js → not-BOIVROuv.js} +28 -28
- package/dist/prod/packages/shared-chunks/{observers-Ci31SE36.js → observers-BmobpXAF.js} +5 -5
- package/dist/prod/packages/shared-chunks/{on-Dgmychhk.js → on-BZHAxzdq.js} +10 -10
- package/dist/prod/packages/shared-chunks/outlet--lIm3q7t.js +132 -0
- package/dist/{dev/packages/shared-chunks/program-CPXeXWVB.js → prod/packages/shared-chunks/program-BAh__OXZ.js} +3 -3
- package/dist/prod/packages/shared-chunks/{program-context-DmI53TzJ.js → program-context-COSioH46.js} +5 -4
- package/dist/prod/packages/shared-chunks/{property_get-Sw0SicEZ.js → property_get-DAKgbeJX.js} +2 -2
- package/dist/prod/packages/shared-chunks/{property_set-SHEIPMUG.js → property_set-BaQJdVfS.js} +3 -3
- package/dist/prod/packages/shared-chunks/{reference-D2agTt1V.js → reference-CG0yPgLy.js} +3 -3
- package/dist/prod/packages/shared-chunks/{registers-Buvdhhxx.js → registers-C_W2qYHJ.js} +1 -1
- package/dist/prod/packages/shared-chunks/{rehydrate-builder-B7MtrWip.js → rehydrate-builder-Blt1x9MP.js} +4 -4
- package/dist/prod/packages/shared-chunks/{render-B790-vbk.js → render-Dx7lr1hR.js} +94 -94
- package/dist/prod/packages/shared-chunks/{rsvp-C6j8G1D1.js → rsvp.es-DR7yS7qg.js} +150 -154
- package/dist/prod/packages/shared-chunks/{serialize-builder-kEyOKbzp.js → serialize-builder-BvAXYHTr.js} +2 -2
- package/dist/prod/packages/shared-chunks/{set_properties-CcLLHg1w.js → set_properties-Qxhw4qzw.js} +2 -2
- package/dist/prod/packages/shared-chunks/setup-registry-Dfu8EyLU.js +886 -0
- package/dist/{dev/packages/shared-chunks/simple-cast-BXTrayoV.js → prod/packages/shared-chunks/simple-cast-DCvJLSin.js} +1 -1
- package/dist/{dev/packages/shared-chunks/super-D4qkU4uq.js → prod/packages/shared-chunks/super-BBBjgF69.js} +1 -1
- package/dist/{dev/packages/shared-chunks/syscall-ops-nrBHMOTp.js → prod/packages/shared-chunks/syscall-ops-CN7STuUn.js} +1 -1
- package/dist/prod/packages/shared-chunks/{template-B0Apv9g2.js → template-BRrQR6KS.js} +1 -1
- package/dist/prod/packages/shared-chunks/{template-only-CP0NT7ce.js → template-only-DKNcKM5b.js} +2 -4
- package/dist/prod/packages/shared-chunks/{textarea-B_JYBuE8.js → textarea-DOmZ1x0E.js} +11 -7
- package/dist/prod/packages/shared-chunks/{tracked-CXcapuAm.js → tracked-B9380JtC.js} +5 -5
- package/dist/prod/packages/shared-chunks/{tracked-data-DNDzhYXf.js → tracked-data-CHq42QHb.js} +2 -2
- package/dist/prod/packages/shared-chunks/{unique-id-Hn8Qp4dS.js → unique-id-o2pS74go.js} +2 -2
- package/dist/prod/packages/shared-chunks/{unrecognized-url-error-ClNyMFJt.js → unrecognized-url-error-jjQ-FqKB.js} +3 -3
- package/dist/{dev/packages/shared-chunks/vm-ops-5QCUIRx4.js → prod/packages/shared-chunks/vm-ops-ImHv0Wtg.js} +1 -1
- package/docs/data.json +616 -569
- package/package.json +8 -6
- package/types/stable/@ember/-internals/deprecations/index.d.ts +6 -0
- package/types/stable/@ember/-internals/glimmer/index.d.ts +165 -121
- package/types/stable/@ember/-internals/glimmer/lib/base-renderer.d.ts +150 -0
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly-brand.d.ts +10 -0
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly.d.ts +3 -2
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/mount.d.ts +1 -1
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/outlet.d.ts +1 -1
- package/types/stable/@ember/-internals/glimmer/lib/component.d.ts +8 -2
- package/types/stable/@ember/-internals/glimmer/lib/glimmer-tracking-docs.d.ts +12 -12
- package/types/stable/@ember/-internals/glimmer/lib/helper-brand.d.ts +10 -0
- package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +20 -10
- package/types/stable/@ember/-internals/glimmer/lib/helpers/array.d.ts +3 -1
- package/types/stable/@ember/-internals/glimmer/lib/helpers/component.d.ts +65 -121
- package/types/stable/@ember/-internals/glimmer/lib/helpers/concat.d.ts +8 -4
- package/types/stable/@ember/-internals/glimmer/lib/helpers/each-in.d.ts +16 -14
- package/types/stable/@ember/-internals/glimmer/lib/helpers/element.d.ts +2 -0
- package/types/stable/@ember/-internals/glimmer/lib/helpers/fn.d.ts +11 -7
- package/types/stable/@ember/-internals/glimmer/lib/helpers/get.d.ts +23 -29
- package/types/stable/@ember/-internals/glimmer/lib/helpers/hash.d.ts +3 -1
- package/types/stable/@ember/-internals/glimmer/lib/helpers/if-unless.d.ts +95 -49
- package/types/stable/@ember/-internals/glimmer/lib/helpers/mut.d.ts +23 -54
- package/types/stable/@ember/-internals/glimmer/lib/helpers/page-title.d.ts +6 -2
- package/types/stable/@ember/-internals/glimmer/lib/helpers/readonly.d.ts +4 -8
- package/types/stable/@ember/-internals/glimmer/lib/modifiers/on.d.ts +10 -10
- package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +7 -155
- package/types/stable/@ember/-internals/glimmer/lib/router-resolver.d.ts +17 -0
- package/types/stable/@ember/-internals/glimmer/lib/syntax/in-element.d.ts +2 -0
- package/types/stable/@ember/-internals/glimmer/lib/syntax/let.d.ts +2 -14
- package/types/stable/@ember/-internals/glimmer/lib/syntax/mount.d.ts +15 -11
- package/types/stable/@ember/-internals/glimmer/lib/syntax/outlet.d.ts +17 -10
- package/types/stable/@ember/-internals/runtime/lib/mixins/target_action_support.d.ts +1 -1
- package/types/stable/@ember/array/index.d.ts +6 -29
- package/types/stable/@ember/array/lib/is-array.d.ts +35 -0
- package/types/stable/@ember/component/template-only.d.ts +1 -3
- package/types/stable/@ember/controller/index.d.ts +1 -1
- package/types/stable/@ember/helper/index.d.ts +0 -19
- package/types/stable/@ember/object/index.d.ts +4 -3
- package/types/stable/@ember/object/observable.d.ts +4 -0
- package/types/stable/@ember/reactive/collections.d.ts +0 -6
- package/types/stable/@ember/renderer/index.d.ts +2 -2
- package/types/stable/@ember/routing/lib/generate_controller.d.ts +1 -1
- package/types/stable/@ember/routing/route.d.ts +2 -2
- package/types/stable/@ember/routing/router-service.d.ts +20 -12
- package/types/stable/@glimmer/runtime/lib/component/template-only.d.ts +0 -2
- package/types/stable/@glimmer/runtime/lib/dom/sanitized-values.d.ts +2 -2
- package/types/stable/@glimmer/runtime/lib/helpers/array.d.ts +1 -1
- package/types/stable/@glimmer/runtime/lib/helpers/concat.d.ts +8 -3
- package/types/stable/@glimmer/runtime/lib/helpers/fn.d.ts +13 -7
- package/types/stable/@glimmer/runtime/lib/helpers/get.d.ts +21 -29
- package/types/stable/@glimmer/runtime/lib/helpers/hash.d.ts +1 -1
- package/types/stable/@glimmer/syntax/lib/get-template-locals.d.ts +1 -1
- package/types/stable/@glimmer/tracking/index.d.ts +12 -12
- package/types/stable/index.d.ts +590 -585
- package/dist/dev/packages/shared-chunks/helper-Bm6EhgSW.js +0 -314
- package/dist/dev/packages/shared-chunks/setup-registry-C_YovxNX.js +0 -77
- package/dist/prod/packages/shared-chunks/helper-CCK8Ef0x.js +0 -298
- package/dist/prod/packages/shared-chunks/setup-registry-D14I0iDX.js +0 -74
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
declare module '@ember/-internals/glimmer/lib/component-managers/outlet' {
|
|
2
2
|
import type { InternalOwner } from "@ember/-internals/owner";
|
|
3
3
|
import type { Nullable } from "@ember/-internals/utility-types";
|
|
4
|
-
import EngineInstance from "@ember/engine/instance";
|
|
4
|
+
import type EngineInstance from "@ember/engine/instance";
|
|
5
5
|
import type { CompilableProgram, ComponentDefinition, CustomRenderNode, Destroyable, Environment, InternalComponentCapabilities, VMArguments, WithCreateInstance, WithCustomDebugRenderTree } from "@glimmer/interfaces";
|
|
6
6
|
import type { Reference } from "@glimmer/reference/lib/reference";
|
|
7
7
|
import type { DynamicScope } from "@ember/-internals/glimmer/lib/renderer";
|
|
@@ -168,6 +168,12 @@ declare module '@ember/-internals/glimmer/lib/component' {
|
|
|
168
168
|
API documentation for Template-only or Glimmer components, it is [available
|
|
169
169
|
here](/ember/release/modules/@glimmer%2Fcomponent).
|
|
170
170
|
|
|
171
|
+
Note: Prior to Ember 6.8, by default, components were authored in paired `.hbs` and `.js`
|
|
172
|
+
files. This is still supported, but the default authoring format is now `.gjs` or "template tag".
|
|
173
|
+
The documentation for `@ember/component` still refers to the older authoring format. To read about
|
|
174
|
+
the new authoring format, see the
|
|
175
|
+
[Glimmer Component API documentation](/ember/release/modules/@glimmer%2Fcomponent).
|
|
176
|
+
|
|
171
177
|
## Defining a Classic Component
|
|
172
178
|
|
|
173
179
|
If you want to customize the component in order to handle events, transform
|
|
@@ -194,7 +200,7 @@ declare module '@ember/-internals/glimmer/lib/component' {
|
|
|
194
200
|
|
|
195
201
|
And then use it in the component's template:
|
|
196
202
|
|
|
197
|
-
```app/
|
|
203
|
+
```app/components/person-profile.hbs
|
|
198
204
|
<h1>{{this.displayName}}</h1>
|
|
199
205
|
{{yield}}
|
|
200
206
|
```
|
|
@@ -582,7 +588,7 @@ declare module '@ember/-internals/glimmer/lib/component' {
|
|
|
582
588
|
The `layout` property should be set to the default export of a template
|
|
583
589
|
module, which is the name of a template file without the `.hbs` extension.
|
|
584
590
|
|
|
585
|
-
```app/
|
|
591
|
+
```app/components/person-profile.hbs
|
|
586
592
|
<h1>Person's Title</h1>
|
|
587
593
|
<div class='details'>{{yield}}</div>
|
|
588
594
|
```
|
|
@@ -26,17 +26,7 @@ declare module '@ember/-internals/glimmer/lib/glimmer-tracking-docs' {
|
|
|
26
26
|
property changes, any templates that used that property, directly or
|
|
27
27
|
indirectly, will rerender. For instance, consider this component:
|
|
28
28
|
|
|
29
|
-
```
|
|
30
|
-
<div>Count: {{this.count}}</div>
|
|
31
|
-
<div>Times Ten: {{this.timesTen}}</div>
|
|
32
|
-
<div>
|
|
33
|
-
<button {{on "click" this.plusOne}}>
|
|
34
|
-
Plus One
|
|
35
|
-
</button>
|
|
36
|
-
</div>
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
```javascript
|
|
29
|
+
```gjs
|
|
40
30
|
import Component from '@glimmer/component';
|
|
41
31
|
import { tracked } from '@glimmer/tracking';
|
|
42
32
|
import { action } from '@ember/object';
|
|
@@ -52,6 +42,16 @@ declare module '@ember/-internals/glimmer/lib/glimmer-tracking-docs' {
|
|
|
52
42
|
plusOne() {
|
|
53
43
|
this.count += 1;
|
|
54
44
|
}
|
|
45
|
+
|
|
46
|
+
<template>
|
|
47
|
+
<div>Count: {{this.count}}</div>
|
|
48
|
+
<div>Times Ten: {{this.timesTen}}</div>
|
|
49
|
+
<div>
|
|
50
|
+
<button {{on "click" this.plusOne}}>
|
|
51
|
+
Plus One
|
|
52
|
+
</button>
|
|
53
|
+
</div>
|
|
54
|
+
</template>
|
|
55
55
|
}
|
|
56
56
|
```
|
|
57
57
|
|
|
@@ -61,7 +61,7 @@ declare module '@ember/-internals/glimmer/lib/glimmer-tracking-docs' {
|
|
|
61
61
|
will cause a rerender when updated - this includes through method calls and
|
|
62
62
|
other means:
|
|
63
63
|
|
|
64
|
-
```
|
|
64
|
+
```gjs
|
|
65
65
|
import Component from '@glimmer/component';
|
|
66
66
|
import { tracked } from '@glimmer/tracking';
|
|
67
67
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare module '@ember/-internals/glimmer/lib/helper-brand' {
|
|
2
|
+
/**
|
|
3
|
+
* The brand for classic (class-based) helpers lives in its own module so that
|
|
4
|
+
* code which only needs to *detect* classic helpers (e.g. the resolver) does
|
|
5
|
+
* not have to import the classic `Helper` base class (and with it the classic
|
|
6
|
+
* object model: `EmberObject`, `Mixin`, meta, etc.).
|
|
7
|
+
*/
|
|
8
|
+
export const IS_CLASSIC_HELPER: unique symbol;
|
|
9
|
+
export function isClassicHelper(obj: object): boolean;
|
|
10
|
+
}
|
|
@@ -4,6 +4,8 @@ declare module '@ember/-internals/glimmer/lib/helper' {
|
|
|
4
4
|
*/
|
|
5
5
|
import { FrameworkObject } from "@ember/object/-internals";
|
|
6
6
|
import type { DirtyableTag } from "@glimmer/interfaces";
|
|
7
|
+
import { IS_CLASSIC_HELPER } from "@ember/-internals/glimmer/lib/helper-brand";
|
|
8
|
+
export { isClassicHelper } from "@ember/-internals/glimmer/lib/helper-brand";
|
|
7
9
|
const RECOMPUTE_TAG: unique symbol;
|
|
8
10
|
type GetOr<T, K, Else> = K extends keyof T ? T[K] : Else;
|
|
9
11
|
type Args<S> = GetOr<S, "Args", {}>;
|
|
@@ -20,7 +22,6 @@ declare module '@ember/-internals/glimmer/lib/helper' {
|
|
|
20
22
|
destroy(): void;
|
|
21
23
|
[RECOMPUTE_TAG]: DirtyableTag;
|
|
22
24
|
}
|
|
23
|
-
const IS_CLASSIC_HELPER: unique symbol;
|
|
24
25
|
export interface SimpleHelper<S> {
|
|
25
26
|
compute: (positional: Positional<S>, named: Named<S>) => Return<S>;
|
|
26
27
|
}
|
|
@@ -29,20 +30,32 @@ declare module '@ember/-internals/glimmer/lib/helper' {
|
|
|
29
30
|
Ember Helpers are functions that can compute values, and are used in templates.
|
|
30
31
|
For example, this code calls a helper named `format-currency`:
|
|
31
32
|
|
|
32
|
-
```app/templates/application.
|
|
33
|
-
|
|
33
|
+
```app/templates/application.gjs
|
|
34
|
+
import Cost from '../components/cost';
|
|
35
|
+
|
|
36
|
+
<template>
|
|
37
|
+
<Cost @cents={{230}} />
|
|
38
|
+
</template>
|
|
34
39
|
```
|
|
35
40
|
|
|
36
|
-
```app/components/cost.
|
|
37
|
-
|
|
41
|
+
```app/components/cost.gjs
|
|
42
|
+
import formatCurrency from '../helpers/format-currency';
|
|
43
|
+
|
|
44
|
+
<template>
|
|
45
|
+
<div>{{formatCurrency @cents currency="$"}}</div>
|
|
46
|
+
</template>
|
|
38
47
|
```
|
|
39
48
|
|
|
40
49
|
Additionally a helper can be called as a nested helper.
|
|
41
50
|
In this example, we show the formatted currency value if the `showMoney`
|
|
42
51
|
named argument is truthy.
|
|
43
52
|
|
|
44
|
-
```
|
|
45
|
-
|
|
53
|
+
```gjs
|
|
54
|
+
import formatCurrency from '../helpers/format-currency';
|
|
55
|
+
|
|
56
|
+
<template>
|
|
57
|
+
{{if @showMoney (formatCurrency @cents currency="$")}}
|
|
58
|
+
</template>
|
|
46
59
|
```
|
|
47
60
|
|
|
48
61
|
Helpers defined using a class must provide a `compute` function. For example:
|
|
@@ -128,8 +141,6 @@ declare module '@ember/-internals/glimmer/lib/helper' {
|
|
|
128
141
|
*/
|
|
129
142
|
recompute(): void;
|
|
130
143
|
}
|
|
131
|
-
export function isClassicHelper(obj: object): boolean;
|
|
132
|
-
export const CLASSIC_HELPER_MANAGER: import("@glimmer/interfaces").Helper<object> | import("@glimmer/manager").CustomHelperManager<object>;
|
|
133
144
|
/**
|
|
134
145
|
* The type of a function-based helper.
|
|
135
146
|
*
|
|
@@ -169,5 +180,4 @@ declare module '@ember/-internals/glimmer/lib/helper' {
|
|
|
169
180
|
Return: R;
|
|
170
181
|
}>;
|
|
171
182
|
export function helper<S>(helperFn: (positional: Positional<S>, named: Named<S>) => Return<S>): FunctionBasedHelper<S>;
|
|
172
|
-
export {};
|
|
173
183
|
}
|
|
@@ -15,7 +15,7 @@ declare module '@ember/-internals/glimmer/lib/helpers/array' {
|
|
|
15
15
|
```
|
|
16
16
|
or
|
|
17
17
|
```handlebars
|
|
18
|
-
{{
|
|
18
|
+
{{yield people=(array
|
|
19
19
|
'Tom Dale'
|
|
20
20
|
'Yehuda Katz'
|
|
21
21
|
this.myOtherPerson)
|
|
@@ -29,6 +29,8 @@ declare module '@ember/-internals/glimmer/lib/helpers/array' {
|
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
Where the 3rd item in the array is bound to updates of the `myOtherPerson` property.
|
|
32
|
+
|
|
33
|
+
The `array` helper is built-in keyword and does not need to be imported as of v7.1.0.
|
|
32
34
|
|
|
33
35
|
@method array
|
|
34
36
|
@for @ember/helper
|
|
@@ -3,143 +3,87 @@ declare module '@ember/-internals/glimmer/lib/helpers/component' {
|
|
|
3
3
|
@module ember
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
The `
|
|
7
|
-
|
|
8
|
-
additional information on how a `Component` functions.
|
|
9
|
-
`{{component}}`'s primary use is for cases where you want to dynamically
|
|
10
|
-
change which type of component is rendered as the state of your application
|
|
11
|
-
changes. This helper has three modes: inline, block, and nested.
|
|
12
|
-
|
|
13
|
-
### Inline Form
|
|
14
|
-
|
|
15
|
-
Given the following template:
|
|
16
|
-
|
|
17
|
-
```app/application.hbs
|
|
18
|
-
{{component this.infographicComponentName}}
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
And the following application code:
|
|
22
|
-
|
|
23
|
-
```app/controllers/application.js
|
|
24
|
-
import Controller from '@ember/controller';
|
|
25
|
-
import { tracked } from '@glimmer/tracking';
|
|
26
|
-
|
|
27
|
-
export default class ApplicationController extends Controller {
|
|
28
|
-
@tracked isMarketOpen = 'live-updating-chart'
|
|
29
|
-
|
|
30
|
-
get infographicComponentName() {
|
|
31
|
-
return this.isMarketOpen ? 'live-updating-chart' : 'market-close-summary';
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
```
|
|
6
|
+
The `component` helper is used to package a Component with initial arguments.
|
|
7
|
+
The included arguments can then be merged during the final invocation.
|
|
35
8
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
`isMarketOpen` is `false`. If the value changes while the app is running,
|
|
39
|
-
the component will be automatically swapped out accordingly.
|
|
40
|
-
Note: You should not use this helper when you are consistently rendering the same
|
|
41
|
-
component. In that case, use standard component syntax, for example:
|
|
9
|
+
See [Component](/ember/release/modules/@glimmer%2Fcomponent/) for
|
|
10
|
+
additional information on how a `Component` functions.
|
|
42
11
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
12
|
+
This is similar to the concept of Partial Application.
|
|
13
|
+
|
|
14
|
+
For example, given a `FullName` component:
|
|
15
|
+
|
|
16
|
+
```app/components/full-name.gjs
|
|
17
|
+
import MyInputComponent from './my-input-component';
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
{{yield (component MyInputComponent value=@model.name placeholder="Username")}}
|
|
21
|
+
</template>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The yielded component can be invoked by the calling component.
|
|
25
|
+
See the following snippet:
|
|
26
|
+
|
|
27
|
+
```app/components/person-form.gjs
|
|
28
|
+
import FullName from './full-name';
|
|
29
|
+
|
|
30
|
+
<template>
|
|
31
|
+
<FullName @model={{@model}} as |Field|>
|
|
32
|
+
<Field />
|
|
33
|
+
</FullName>
|
|
34
|
+
</template>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Which will output an input whose value is already bound to `@model.name` and `placeholder`
|
|
38
|
+
is "Username".
|
|
39
|
+
|
|
40
|
+
Any arguments passed at the invocation site of the component will override those applied via
|
|
41
|
+
the `component` helper. For example, if the invocation site of the component is:
|
|
46
42
|
|
|
47
|
-
|
|
43
|
+
```app/components/person-form.gjs
|
|
44
|
+
import FullName from './full-name';
|
|
48
45
|
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
<template>
|
|
47
|
+
<FullName @model={{@model}} as |Field|>
|
|
48
|
+
<Field @placeholder="Your name" />
|
|
49
|
+
</FullName>
|
|
50
|
+
</template>
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
The output will be an input whose value is bound to `@model.name` and `placeholder`
|
|
54
|
+
is "Your name".
|
|
55
|
+
|
|
56
|
+
The `component` helper is built-in and does not need to be imported.
|
|
57
|
+
|
|
58
|
+
Prior to Strict Mode aka "Template Tag" or gjs, the component helper was also used to invoke
|
|
59
|
+
components dynamically. This is no longer necessary, and they can be directly invoked, as above.
|
|
57
60
|
|
|
58
|
-
|
|
59
|
-
{{#component this.infographicComponentName}}
|
|
60
|
-
Last update: {{this.lastUpdateTimestamp}}
|
|
61
|
-
{{/component}}
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
The following controller code:
|
|
61
|
+
### Dynamic Component Invocation
|
|
65
62
|
|
|
66
|
-
```app/
|
|
67
|
-
import
|
|
68
|
-
import { computed } from '@ember/object';
|
|
63
|
+
```app/templates/application.gjs
|
|
64
|
+
import Component from '@glimmer/component';
|
|
69
65
|
import { tracked } from '@glimmer/tracking';
|
|
66
|
+
import { component } from '@ember/helper';
|
|
67
|
+
import LiveUpdatingChart from '../components/live-updating-chart';
|
|
68
|
+
import MarketCloseSummary from '../components/market-close-summary';
|
|
70
69
|
|
|
71
|
-
export default class
|
|
72
|
-
@tracked isMarketOpen =
|
|
70
|
+
export default class Application extends Component {
|
|
71
|
+
@tracked isMarketOpen = false;
|
|
73
72
|
|
|
74
|
-
get
|
|
75
|
-
return
|
|
73
|
+
get infographicComponent() {
|
|
74
|
+
return this.isMarketOpen ? LiveUpdatingChart : MarketCloseSummary;
|
|
76
75
|
}
|
|
77
76
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
<template>
|
|
78
|
+
{{!-- The component can be invoked directly --}}
|
|
79
|
+
<this.infographicComponent />
|
|
80
|
+
|
|
81
|
+
{{!-- The component helper here is no longer necessary --}}
|
|
82
|
+
{{component this.infographicComponentName}}
|
|
83
|
+
</template>
|
|
81
84
|
}
|
|
82
85
|
```
|
|
83
86
|
|
|
84
|
-
And the following component template:
|
|
85
|
-
|
|
86
|
-
```app/templates/components/live-updating-chart.hbs
|
|
87
|
-
{{! chart }}
|
|
88
|
-
{{yield}}
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
The `Last Update: {{this.lastUpdateTimestamp}}` will be rendered in place of the `{{yield}}`.
|
|
92
|
-
|
|
93
|
-
### Nested Usage
|
|
94
|
-
|
|
95
|
-
The `component` helper can be used to package a component path with initial attrs.
|
|
96
|
-
The included attrs can then be merged during the final invocation.
|
|
97
|
-
For example, given a `person-form` component with the following template:
|
|
98
|
-
|
|
99
|
-
```app/templates/components/person-form.hbs
|
|
100
|
-
{{yield (hash
|
|
101
|
-
nameInput=(component "my-input-component" value=@model.name placeholder="First Name")
|
|
102
|
-
)}}
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
When yielding the component via the `hash` helper, the component is invoked directly.
|
|
106
|
-
See the following snippet:
|
|
107
|
-
|
|
108
|
-
```
|
|
109
|
-
<PersonForm as |form|>
|
|
110
|
-
<form.nameInput @placeholder="Username" />
|
|
111
|
-
</PersonForm>
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
or
|
|
115
|
-
```
|
|
116
|
-
{{#person-form as |form|}}
|
|
117
|
-
{{form.nameInput placeholder="Username"}}
|
|
118
|
-
{{/person-form}}
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
Which outputs an input whose value is already bound to `model.name` and `placeholder`
|
|
122
|
-
is "Username".
|
|
123
|
-
|
|
124
|
-
When yielding the component without the `hash` helper use the `component` helper.
|
|
125
|
-
For example, below is a `full-name` component template:
|
|
126
|
-
|
|
127
|
-
```handlebars
|
|
128
|
-
{{yield (component "my-input-component" value=@model.name placeholder="Name")}}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
```
|
|
132
|
-
<FullName as |field|>
|
|
133
|
-
{{component field placeholder="Full name"}}
|
|
134
|
-
</FullName>
|
|
135
|
-
```
|
|
136
|
-
or
|
|
137
|
-
```
|
|
138
|
-
{{#full-name as |field|}}
|
|
139
|
-
{{component field placeholder="Full name"}}
|
|
140
|
-
{{/full-name}}
|
|
141
|
-
```
|
|
142
|
-
|
|
143
87
|
@method component
|
|
144
88
|
@since 1.11.0
|
|
145
89
|
@for Ember.Templates.helpers
|
|
@@ -7,13 +7,17 @@ declare module '@ember/-internals/glimmer/lib/helpers/concat' {
|
|
|
7
7
|
|
|
8
8
|
Example:
|
|
9
9
|
|
|
10
|
-
```
|
|
11
|
-
{
|
|
10
|
+
```gjs
|
|
11
|
+
import { concat } from '@ember/helper';
|
|
12
|
+
|
|
13
|
+
<template>
|
|
14
|
+
{{yield (concat firstName " " lastName)}}
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
{{! would yield name="<first name value> <last name value>" to the component}}
|
|
17
|
+
</template>
|
|
14
18
|
```
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
For invocation of components, you don't need concat at all.
|
|
17
21
|
|
|
18
22
|
```handlebars
|
|
19
23
|
<SomeComponent @name="{{firstName}} {{lastName}}" />
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare module '@ember/-internals/glimmer/lib/helpers/each-in' {
|
|
2
2
|
/**
|
|
3
|
-
The `{{#each}}`
|
|
3
|
+
The `{{#each}}` keyword loops over elements in a collection. It is an extension
|
|
4
4
|
of the base Handlebars `{{#each}}` helper.
|
|
5
5
|
|
|
6
6
|
The default behavior of `{{#each}}` is to yield its inner block once for every
|
|
@@ -44,6 +44,8 @@ declare module '@ember/-internals/glimmer/lib/helpers/each-in' {
|
|
|
44
44
|
{{/each}}
|
|
45
45
|
</ul>
|
|
46
46
|
```
|
|
47
|
+
|
|
48
|
+
`#each` is a keyword and does not need to be imported.
|
|
47
49
|
|
|
48
50
|
### Specifying Keys
|
|
49
51
|
|
|
@@ -110,11 +112,11 @@ declare module '@ember/-internals/glimmer/lib/helpers/each-in' {
|
|
|
110
112
|
@public
|
|
111
113
|
*/
|
|
112
114
|
/**
|
|
113
|
-
The `{{each-in}}`
|
|
115
|
+
The `{{#each-in}}` keyword loops over properties on an object.
|
|
114
116
|
|
|
115
117
|
For example, given this component definition:
|
|
116
118
|
|
|
117
|
-
```app/components/developer-details.
|
|
119
|
+
```app/components/developer-details.gjs
|
|
118
120
|
import Component from '@glimmer/component';
|
|
119
121
|
import { tracked } from '@glimmer/tracking';
|
|
120
122
|
|
|
@@ -123,21 +125,19 @@ declare module '@ember/-internals/glimmer/lib/helpers/each-in' {
|
|
|
123
125
|
"name": "Shelly Sails",
|
|
124
126
|
"age": 42
|
|
125
127
|
};
|
|
128
|
+
|
|
129
|
+
<template>
|
|
130
|
+
<ul>
|
|
131
|
+
{{#each-in this.developer as |key value|}}
|
|
132
|
+
<li>{{key}}: {{value}}</li>
|
|
133
|
+
{{/each-in}}
|
|
134
|
+
</ul>
|
|
135
|
+
</template>
|
|
126
136
|
}
|
|
127
137
|
```
|
|
128
138
|
|
|
129
139
|
This template would display all properties on the `developer`
|
|
130
|
-
object in a list:
|
|
131
|
-
|
|
132
|
-
```app/components/developer-details.hbs
|
|
133
|
-
<ul>
|
|
134
|
-
{{#each-in this.developer as |key value|}}
|
|
135
|
-
<li>{{key}}: {{value}}</li>
|
|
136
|
-
{{/each-in}}
|
|
137
|
-
</ul>
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
Outputting their name and age:
|
|
140
|
+
object in a list, outputting their name and age:
|
|
141
141
|
|
|
142
142
|
```html
|
|
143
143
|
<ul>
|
|
@@ -145,6 +145,8 @@ declare module '@ember/-internals/glimmer/lib/helpers/each-in' {
|
|
|
145
145
|
<li>age: 42</li>
|
|
146
146
|
</ul>
|
|
147
147
|
```
|
|
148
|
+
|
|
149
|
+
`#each-in` is a keyword and does not need to be imported.
|
|
148
150
|
|
|
149
151
|
@method each-in
|
|
150
152
|
@for Ember.Templates.helpers
|
|
@@ -19,6 +19,8 @@ declare module '@ember/-internals/glimmer/lib/helpers/element' {
|
|
|
19
19
|
Passing `null`, `undefined`, or non-string values will throw an assertion error.
|
|
20
20
|
|
|
21
21
|
Changing the tag name will tear down and recreate the element and its contents.
|
|
22
|
+
|
|
23
|
+
The `element` helper is built-in and does not need to be imported.
|
|
22
24
|
|
|
23
25
|
@method element
|
|
24
26
|
@for Ember.Templates.helpers
|
|
@@ -12,13 +12,15 @@ declare module '@ember/-internals/glimmer/lib/helpers/fn' {
|
|
|
12
12
|
to a component invoked within the loop. Here's how you could use the `fn`
|
|
13
13
|
helper to pass both the function and its arguments together:
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
```app/components/items-listing.gjs
|
|
16
|
+
<template>
|
|
17
|
+
{{#each @items as |item|}}
|
|
18
|
+
<DisplayItem @item=item @select={{fn this.handleSelected item}} />
|
|
19
|
+
{{/each}}
|
|
20
|
+
</template>
|
|
19
21
|
```
|
|
20
22
|
|
|
21
|
-
```app/components/items-list.
|
|
23
|
+
```app/components/items-list.gjs
|
|
22
24
|
import Component from '@glimmer/component';
|
|
23
25
|
import { action } from '@ember/object';
|
|
24
26
|
|
|
@@ -30,7 +32,7 @@ declare module '@ember/-internals/glimmer/lib/helpers/fn' {
|
|
|
30
32
|
}
|
|
31
33
|
```
|
|
32
34
|
|
|
33
|
-
In this case the `
|
|
35
|
+
In this case the `DisplayItem` component will receive a normal function
|
|
34
36
|
that it can invoke. When it invokes the function, the `handleSelected`
|
|
35
37
|
function will receive the `item` and any arguments passed, thanks to the
|
|
36
38
|
`fn` helper.
|
|
@@ -47,7 +49,7 @@ declare module '@ember/-internals/glimmer/lib/helpers/fn' {
|
|
|
47
49
|
properly bound to the `items-list`, but let's explore what happens if we
|
|
48
50
|
left out `@action`:
|
|
49
51
|
|
|
50
|
-
```app/components/items-list.
|
|
52
|
+
```app/components/items-list.gjs
|
|
51
53
|
import Component from '@glimmer/component';
|
|
52
54
|
|
|
53
55
|
export default class ItemsList extends Component {
|
|
@@ -63,6 +65,8 @@ declare module '@ember/-internals/glimmer/lib/helpers/fn' {
|
|
|
63
65
|
are bound (via `@action` or other means) before passing into `fn`!
|
|
64
66
|
|
|
65
67
|
See also [partial application](https://en.wikipedia.org/wiki/Partial_application).
|
|
68
|
+
|
|
69
|
+
`fn` is built-in and does not need to be imported.
|
|
66
70
|
|
|
67
71
|
@method fn
|
|
68
72
|
@for @ember/helper
|
|
@@ -9,28 +9,33 @@ declare module '@ember/-internals/glimmer/lib/helpers/get' {
|
|
|
9
9
|
|
|
10
10
|
For example, these two usages are equivalent:
|
|
11
11
|
|
|
12
|
-
```app/components/developer-detail.
|
|
12
|
+
```app/components/developer-detail.gjs
|
|
13
13
|
import Component from '@glimmer/component';
|
|
14
14
|
import { tracked } from '@glimmer/tracking';
|
|
15
|
+
import { get } from '@ember/object';
|
|
15
16
|
|
|
16
17
|
export default class extends Component {
|
|
17
18
|
@tracked developer = {
|
|
18
19
|
name: "Sandi Metz",
|
|
19
20
|
language: "Ruby"
|
|
20
21
|
}
|
|
22
|
+
|
|
23
|
+
<template>
|
|
24
|
+
{{this.developer.name}}
|
|
25
|
+
{{get this.developer "name"}}
|
|
26
|
+
</template>
|
|
21
27
|
}
|
|
22
28
|
```
|
|
23
|
-
|
|
24
|
-
```handlebars
|
|
25
|
-
{{this.developer.name}}
|
|
26
|
-
{{get this.developer "name"}}
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
+
|
|
29
30
|
If there were several facts about a person, the `{{get}}` helper can dynamically
|
|
30
31
|
pick one:
|
|
31
32
|
|
|
32
|
-
```app/templates/application.
|
|
33
|
-
|
|
33
|
+
```app/templates/application.gjs
|
|
34
|
+
import DeveloperDetail from '../components/developer-detail';
|
|
35
|
+
|
|
36
|
+
<template>
|
|
37
|
+
<DeveloperDetail @factName="language" />
|
|
38
|
+
</template
|
|
34
39
|
```
|
|
35
40
|
|
|
36
41
|
```handlebars
|
|
@@ -40,9 +45,10 @@ declare module '@ember/-internals/glimmer/lib/helpers/get' {
|
|
|
40
45
|
For a more complex example, this template would allow the user to switch
|
|
41
46
|
between showing the user's name and preferred coding language with a click:
|
|
42
47
|
|
|
43
|
-
```app/components/developer-detail.
|
|
48
|
+
```app/components/developer-detail.gjs
|
|
44
49
|
import Component from '@glimmer/component';
|
|
45
50
|
import { tracked } from '@glimmer/tracking';
|
|
51
|
+
import { get } from '@ember/object';
|
|
46
52
|
|
|
47
53
|
export default class extends Component {
|
|
48
54
|
@tracked developer = {
|
|
@@ -56,28 +62,16 @@ declare module '@ember/-internals/glimmer/lib/helpers/get' {
|
|
|
56
62
|
showFact(fact) {
|
|
57
63
|
this.currentFact = fact;
|
|
58
64
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
```app/components/developer-detail.js
|
|
63
|
-
{{get this.developer this.currentFact}}
|
|
65
|
+
|
|
66
|
+
<template>
|
|
67
|
+
{{get this.developer this.currentFact}}
|
|
64
68
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
The `{{get}}` helper can also respect mutable values itself. For example:
|
|
70
|
-
|
|
71
|
-
```app/components/developer-detail.js
|
|
72
|
-
<Input @value={{mut (get this.person this.currentFact)}} />
|
|
73
|
-
|
|
74
|
-
<button {{on 'click' (fn this.showFact "name")}}>Show name</button>
|
|
75
|
-
<button {{on 'click' (fn this.showFact "language")}}>Show language</button>
|
|
69
|
+
<button {{on 'click' (fn this.showFact "name")}}>Show name</button>
|
|
70
|
+
<button {{on 'click' (fn this.showFact "language")}}>Show language</button>
|
|
71
|
+
</template>
|
|
72
|
+
}
|
|
76
73
|
```
|
|
77
74
|
|
|
78
|
-
Would allow the user to swap what fact is being displayed, and also edit
|
|
79
|
-
that fact via a two-way mutable binding.
|
|
80
|
-
|
|
81
75
|
The `{{get}}` helper can also be used for array element access via index.
|
|
82
76
|
This would display the value of the first element in the array `this.names`:
|
|
83
77
|
|
|
@@ -4,7 +4,7 @@ declare module '@ember/-internals/glimmer/lib/helpers/hash' {
|
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
Use the `{{hash}}` helper to create a hash to pass as an option to your
|
|
7
|
-
components. This is
|
|
7
|
+
components. This is especially useful for contextual components where you can
|
|
8
8
|
just yield a hash:
|
|
9
9
|
|
|
10
10
|
```handlebars
|
|
@@ -32,6 +32,8 @@ declare module '@ember/-internals/glimmer/lib/helpers/hash' {
|
|
|
32
32
|
return Object.prototype.toString.apply(obj);
|
|
33
33
|
}
|
|
34
34
|
```
|
|
35
|
+
|
|
36
|
+
The `hash` helper is a built-in keyword and does not need to be imported as of v7.1.0.
|
|
35
37
|
|
|
36
38
|
@method hash
|
|
37
39
|
@for @ember/helper
|