ember-source 6.12.0-beta.3 → 7.0.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/initializer-test/files/__root__/__testType__/__path__/__name__-test.ts +2 -2
- package/blueprints/instance-initializer-test/files/__root__/__testType__/__path__/__name__-test.ts +3 -3
- package/build-metadata.json +3 -3
- package/dist/{packages/shared-chunks/registry-XY5cfmbH.js → dev/packages/@ember/-internals/container/index.js} +28 -27
- package/dist/{packages → dev/packages}/@ember/-internals/deprecations/index.js +5 -16
- package/dist/{packages/shared-chunks/env-DEd6hPbj.js → dev/packages/@ember/-internals/environment/index.js} +31 -53
- package/dist/dev/packages/@ember/-internals/glimmer/index.js +42 -0
- package/dist/{packages → dev/packages}/@ember/-internals/meta/lib/meta.js +37 -38
- package/dist/dev/packages/@ember/-internals/metal/index.js +63 -0
- package/dist/{packages → dev/packages}/@ember/-internals/routing/index.js +7 -8
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/ext/rsvp.js +1 -2
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/-proxy.js +14 -15
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/action_handler.js +21 -9
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/registry_proxy.js +11 -2
- package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/target_action_support.js +22 -9
- package/dist/{packages → dev/packages}/@ember/-internals/string/index.js +1 -2
- package/dist/dev/packages/@ember/-internals/utils/index.js +34 -0
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/compat/fallback-view-registry.js +1 -2
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/mixins/action_support.js +16 -10
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/system/event_dispatcher.js +19 -20
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/system/utils.js +7 -23
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/views/core_view.js +6 -7
- package/dist/{packages → dev/packages}/@ember/-internals/views/lib/views/states.js +3 -4
- package/dist/{packages → dev/packages}/@ember/application/index.js +50 -121
- package/dist/{packages → dev/packages}/@ember/application/instance.js +17 -17
- package/dist/{packages → dev/packages}/@ember/application/namespace.js +27 -9
- package/dist/{packages → dev/packages}/@ember/array/index.js +34 -25
- package/dist/{packages → dev/packages}/@ember/array/proxy.js +19 -20
- package/dist/{packages → dev/packages}/@ember/canary-features/index.js +1 -1
- package/dist/dev/packages/@ember/component/helper.js +14 -0
- package/dist/{packages → dev/packages}/@ember/component/index.js +12 -12
- package/dist/{packages → dev/packages}/@ember/component/template-only.js +6 -6
- package/dist/{packages → dev/packages}/@ember/controller/index.js +7 -9
- package/dist/{packages → dev/packages}/@ember/debug/container-debug-adapter.js +6 -7
- package/dist/{packages → dev/packages}/@ember/debug/data-adapter.js +6 -7
- package/dist/{packages → dev/packages}/@ember/debug/index.js +4 -11
- package/dist/{packages → dev/packages}/@ember/debug/lib/assert.js +1 -3
- package/dist/{packages → dev/packages}/@ember/debug/lib/deprecate.js +7 -3
- package/dist/{packages → dev/packages}/@ember/debug/lib/handlers.js +1 -3
- package/dist/{packages → dev/packages}/@ember/debug/lib/warn.js +1 -2
- package/dist/{packages → dev/packages}/@ember/engine/index.js +22 -22
- package/dist/dev/packages/@ember/engine/instance.js +200 -0
- package/dist/{packages → dev/packages}/@ember/helper/index.js +12 -11
- package/dist/{packages → dev/packages}/@ember/instrumentation/index.js +3 -8
- package/dist/dev/packages/@ember/modifier/index.js +23 -0
- package/dist/{packages → dev/packages}/@ember/modifier/on.js +6 -6
- package/dist/dev/packages/@ember/object/-internals.js +49 -0
- package/dist/{packages → dev/packages}/@ember/object/compat.js +11 -12
- package/dist/{packages → dev/packages}/@ember/object/computed.js +7 -8
- package/dist/{packages → dev/packages}/@ember/object/core.js +28 -29
- package/dist/{packages → dev/packages}/@ember/object/evented.js +7 -8
- package/dist/dev/packages/@ember/object/events.js +11 -0
- package/dist/{packages → dev/packages}/@ember/object/index.js +18 -19
- package/dist/{packages → dev/packages}/@ember/object/internals.js +1 -1
- package/dist/{packages → dev/packages}/@ember/object/lib/computed/computed_macros.js +30 -27
- package/dist/{packages → dev/packages}/@ember/object/lib/computed/reduce_computed_macros.js +36 -37
- package/dist/{packages → dev/packages}/@ember/object/mixin.js +15 -23
- package/dist/dev/packages/@ember/object/observable.js +181 -0
- package/dist/dev/packages/@ember/object/observers.js +11 -0
- package/dist/{packages → dev/packages}/@ember/object/promise-proxy-mixin.js +7 -8
- package/dist/dev/packages/@ember/renderer/index.js +14 -0
- package/dist/dev/packages/@ember/routing/-internals.js +22 -0
- package/dist/{packages → dev/packages}/@ember/routing/hash-location.js +1 -1
- package/dist/{packages → dev/packages}/@ember/routing/history-location.js +9 -25
- package/dist/dev/packages/@ember/routing/index.js +14 -0
- package/dist/{packages → dev/packages}/@ember/routing/lib/dsl.js +5 -6
- package/dist/{packages → dev/packages}/@ember/routing/lib/generate_controller.js +22 -10
- package/dist/{packages → dev/packages}/@ember/routing/lib/location-utils.js +3 -16
- package/dist/{packages → dev/packages}/@ember/routing/lib/routing-service.js +19 -9
- package/dist/{packages → dev/packages}/@ember/routing/lib/utils.js +12 -13
- package/dist/{packages → dev/packages}/@ember/routing/none-location.js +2 -4
- package/dist/{packages → dev/packages}/@ember/routing/route.js +38 -39
- package/dist/{packages → dev/packages}/@ember/routing/router-service.js +13 -14
- package/dist/{packages → dev/packages}/@ember/routing/router.js +63 -71
- package/dist/{packages → dev/packages}/@ember/runloop/index.js +9 -8
- package/dist/{packages → dev/packages}/@ember/service/index.js +6 -7
- package/dist/dev/packages/@ember/template/index.js +14 -0
- package/dist/{packages → dev/packages}/@ember/template-compilation/index.js +3 -3
- package/dist/dev/packages/@ember/template-compiler/index.js +2 -0
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/compile-options.js +11 -6
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/dasherize-component-name.js +1 -2
- package/dist/dev/packages/@ember/template-compiler/lib/plugins/allowed-globals.js +56 -0
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-against-attrs.js +19 -3
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-against-named-outlets.js +11 -2
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.js +1 -2
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.js +3 -4
- package/dist/dev/packages/@ember/template-compiler/lib/plugins/index.js +40 -0
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-each-track-array.js +21 -2
- package/dist/dev/packages/@ember/template-compiler/lib/plugins/transform-in-element.js +50 -0
- package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-resolutions.js +2 -3
- package/dist/dev/packages/@ember/template-compiler/lib/template.js +248 -0
- package/dist/dev/packages/@ember/template-factory/index.js +8 -0
- package/dist/dev/packages/@ember/test/index.js +18 -0
- package/dist/{packages → dev/packages}/@ember/utils/lib/compare.js +5 -6
- package/dist/{packages → dev/packages}/@ember/utils/lib/is_empty.js +6 -7
- package/dist/{packages → dev/packages}/@glimmer/destroyable/index.js +21 -16
- package/dist/{packages/shared-chunks/encoder-CT1wqYMF.js → dev/packages/@glimmer/encoder/index.js} +3 -4
- package/dist/{packages → dev/packages}/@glimmer/global-context/index.js +6 -5
- package/dist/{packages/shared-chunks/api-1B_9SjFR.js → dev/packages/@glimmer/manager/index.js} +17 -14
- package/dist/dev/packages/@glimmer/node/index.js +40 -0
- package/dist/{packages → dev/packages}/@glimmer/opcode-compiler/index.js +5 -6
- package/dist/dev/packages/@glimmer/program/index.js +12 -0
- package/dist/dev/packages/@glimmer/reference/index.js +208 -0
- package/dist/dev/packages/@glimmer/runtime/index.js +11 -0
- package/dist/dev/packages/@glimmer/tracking/index.js +137 -0
- package/dist/dev/packages/@glimmer/tracking/primitives/cache/index.js +11 -0
- package/dist/{packages → dev/packages}/@glimmer/util/index.js +2 -3
- package/dist/{packages → dev/packages}/@glimmer/validator/index.js +304 -372
- package/dist/{packages → dev/packages}/@glimmer/vm/index.js +1 -1
- package/dist/{packages → dev/packages}/ember/version.js +2 -2
- package/dist/dev/packages/ember-template-compiler/index.js +109 -0
- package/dist/{packages → dev/packages}/ember-testing/index.js +1 -3
- package/dist/dev/packages/ember-testing/lib/public-api.js +2 -0
- package/dist/dev/packages/ember-testing/lib/test/pending_requests.js +10 -0
- package/dist/dev/packages/ember-testing/lib/test.js +25 -0
- package/dist/{packages/shared-chunks/router-DSi8WnDi.js → dev/packages/router_js/index.js} +120 -58
- package/dist/{packages/shared-chunks/alias-BEMS3qgG.js → dev/packages/shared-chunks/alias-CSC0WIbj.js} +4 -5
- package/dist/{packages/shared-chunks/api-CkUl6KyJ.js → dev/packages/shared-chunks/api-BqXkkT0p.js} +14 -16
- package/dist/{packages/shared-chunks/args-proxy-B91L3LRK.js → dev/packages/shared-chunks/args-proxy-DgXMc9b5.js} +7 -8
- package/dist/{packages/shared-chunks/array-BqYCCatg.js → dev/packages/shared-chunks/array-D8PfjQHi.js} +3 -4
- package/dist/dev/packages/shared-chunks/capabilities-O_xc7Yqk.js +34 -0
- package/dist/{packages/shared-chunks/collections-B8me-ZlQ.js → dev/packages/shared-chunks/collections-D_nY_0UJ.js} +1 -2
- package/dist/{packages/@ember/template-compiler/lib/template.js → dev/packages/shared-chunks/compiler-CNj62pww.js} +22 -243
- package/dist/{packages/shared-chunks/constants-oDhF27qL.js → dev/packages/shared-chunks/constants-eoaL3OJQ.js} +9 -9
- package/dist/{packages/shared-chunks/debug-to-string-BsFOvUtQ.js → dev/packages/shared-chunks/debug-to-string-CFb7h0lY.js} +1 -3
- package/dist/{packages/shared-chunks/dynamic-CuBsUXX8.js → dev/packages/shared-chunks/dynamic-CFg3dljk.js} +108 -134
- package/dist/{packages/shared-chunks/element-builder-BuVym8EM.js → dev/packages/shared-chunks/element-builder-BOxP8emt.js} +4 -5
- package/dist/{packages/shared-chunks/flags-BsZlvEeR.js → dev/packages/shared-chunks/flags-B9qxc-pB.js} +1 -1
- package/dist/{packages/shared-chunks/capabilities-DHiXCCuB.js → dev/packages/shared-chunks/fragment-Cc5k9Oy4.js} +2 -33
- package/dist/{packages/shared-chunks/index-ByyoGpfz.js → dev/packages/shared-chunks/index-PxU6E7q8.js} +658 -214
- package/dist/{packages/shared-chunks/index-CQkjwqTv.js → dev/packages/shared-chunks/index-Q7JnrdBn.js} +20 -19
- package/dist/dev/packages/shared-chunks/invoke-DxRPE05O.js +67 -0
- package/dist/{packages/shared-chunks/is_proxy-C2q5rUMp.js → dev/packages/shared-chunks/is_proxy-B0smdQy8.js} +1 -1
- package/dist/{packages/shared-chunks/mandatory-setter-DLKyVs4Q.js → dev/packages/shared-chunks/mandatory-setter-DHZe7-kW.js} +47 -48
- package/dist/{packages/shared-chunks/name-DVtQREj6.js → dev/packages/shared-chunks/name-Z7dpqvzn.js} +1 -1
- package/dist/{packages/shared-chunks/namespace_search-ClQOZuFA.js → dev/packages/shared-chunks/namespace_search-uT8odThF.js} +3 -4
- package/dist/{packages/shared-chunks/observers-DhgQ6ba5.js → dev/packages/shared-chunks/observers-Bj9qLVau.js} +231 -87
- package/dist/{packages/shared-chunks/program-CcLlGnAU.js → dev/packages/shared-chunks/program-DfV0v8aa.js} +4 -6
- package/dist/{packages/shared-chunks/program-context-CZJnCFdo.js → dev/packages/shared-chunks/program-context-BRjCC_BA.js} +2 -2
- package/dist/{packages/shared-chunks/property_set-DrZnfGQ7.js → dev/packages/shared-chunks/property_set-DaoZXGM5.js} +11 -16
- package/dist/dev/packages/shared-chunks/public-api-C3KlJmEr.js +10 -0
- package/dist/{packages/shared-chunks/reference-B6HMX4y0.js → dev/packages/shared-chunks/reference-C3TKDRnP.js} +11 -12
- package/dist/{packages/@glimmer/runtime/index.js → dev/packages/shared-chunks/rehydrate-builder-DPImr9e9.js} +8 -16
- package/dist/{packages/shared-chunks/render-DTOhhssy.js → dev/packages/shared-chunks/render-sg8BuFaE.js} +16 -23
- package/dist/{packages/shared-chunks/serialize-builder-DEgRJgNQ.js → dev/packages/shared-chunks/serialize-builder-b_gSYCSS.js} +7 -7
- package/dist/{packages/shared-chunks/set_properties-Dag9Xz6u.js → dev/packages/shared-chunks/set_properties-kVGzZL_a.js} +2 -2
- package/dist/{packages/shared-chunks/setup-registry-Bbj8WQen.js → dev/packages/shared-chunks/setup-registry-DGdDOxrk.js} +12 -12
- package/dist/{packages/shared-chunks/simple-cast-BXTrayoV.js → dev/packages/shared-chunks/simple-cast-DCvJLSin.js} +1 -1
- package/dist/{packages/shared-chunks/template-CMHIG4cn.js → dev/packages/shared-chunks/template-kM-7TTcc.js} +3 -4
- package/dist/dev/packages/shared-chunks/to-string-C7M8LBLH.js +36 -0
- package/dist/{packages/shared-chunks/transform-resolutions-vHYYonpB.js → dev/packages/shared-chunks/transform-resolutions-fXGQKGsL.js} +331 -288
- package/dist/{packages/shared-chunks/unrecognized-url-error-BBMMZhBN.js → dev/packages/shared-chunks/unrecognized-url-error-B3wUTorp.js} +103 -39
- package/dist/prod/packages/@ember/-internals/browser-environment/index.js +2 -0
- package/dist/prod/packages/@ember/-internals/container/index.js +697 -0
- package/dist/prod/packages/@ember/-internals/deprecations/index.js +114 -0
- package/dist/prod/packages/@ember/-internals/environment/index.js +171 -0
- package/dist/prod/packages/@ember/-internals/error-handling/index.js +26 -0
- package/dist/prod/packages/@ember/-internals/glimmer/index.js +39 -0
- package/dist/prod/packages/@ember/-internals/meta/index.js +1 -0
- package/dist/prod/packages/@ember/-internals/meta/lib/meta.js +455 -0
- package/dist/prod/packages/@ember/-internals/metal/index.js +61 -0
- package/dist/prod/packages/@ember/-internals/owner/index.js +252 -0
- package/dist/prod/packages/@ember/-internals/routing/index.js +14 -0
- package/dist/prod/packages/@ember/-internals/runtime/index.js +9 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/ext/rsvp.js +51 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/-proxy.js +89 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/action_handler.js +187 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/comparable.js +37 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/container_proxy.js +44 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/registry_proxy.js +42 -0
- package/dist/prod/packages/@ember/-internals/runtime/lib/mixins/target_action_support.js +142 -0
- package/dist/prod/packages/@ember/-internals/string/index.js +93 -0
- package/dist/prod/packages/@ember/-internals/utility-types/index.js +12 -0
- package/dist/prod/packages/@ember/-internals/utils/index.js +75 -0
- package/dist/prod/packages/@ember/-internals/views/index.js +7 -0
- package/dist/prod/packages/@ember/-internals/views/lib/compat/attrs.js +3 -0
- package/dist/prod/packages/@ember/-internals/views/lib/compat/fallback-view-registry.js +7 -0
- package/dist/prod/packages/@ember/-internals/views/lib/component_lookup.js +14 -0
- package/dist/prod/packages/@ember/-internals/views/lib/mixins/action_support.js +35 -0
- package/dist/prod/packages/@ember/-internals/views/lib/system/event_dispatcher.js +227 -0
- package/dist/prod/packages/@ember/-internals/views/lib/system/utils.js +172 -0
- package/dist/prod/packages/@ember/-internals/views/lib/views/core_view.js +87 -0
- package/dist/prod/packages/@ember/-internals/views/lib/views/states.js +83 -0
- package/dist/prod/packages/@ember/application/index.js +899 -0
- package/dist/prod/packages/@ember/application/instance.js +438 -0
- package/dist/prod/packages/@ember/application/namespace.js +68 -0
- package/dist/prod/packages/@ember/array/-internals.js +9 -0
- package/dist/prod/packages/@ember/array/index.js +591 -0
- package/dist/prod/packages/@ember/array/lib/make-array.js +42 -0
- package/dist/prod/packages/@ember/array/make.js +1 -0
- package/dist/prod/packages/@ember/array/mutable.js +1 -0
- package/dist/prod/packages/@ember/array/proxy.js +267 -0
- package/dist/prod/packages/@ember/canary-features/index.js +67 -0
- package/dist/prod/packages/@ember/component/helper.js +12 -0
- package/dist/prod/packages/@ember/component/index.js +32 -0
- package/dist/prod/packages/@ember/component/template-only.js +39 -0
- package/dist/prod/packages/@ember/controller/index.js +177 -0
- package/dist/prod/packages/@ember/debug/container-debug-adapter.js +117 -0
- package/dist/prod/packages/@ember/debug/data-adapter.js +553 -0
- package/dist/prod/packages/@ember/debug/index.js +30 -0
- package/dist/prod/packages/@ember/debug/lib/assert.js +7 -0
- package/dist/prod/packages/@ember/debug/lib/capture-render-tree.js +28 -0
- package/dist/prod/packages/@ember/debug/lib/deprecate.js +56 -0
- package/dist/prod/packages/@ember/debug/lib/handlers.js +5 -0
- package/dist/prod/packages/@ember/debug/lib/inspect.js +120 -0
- package/dist/prod/packages/@ember/debug/lib/testing.js +9 -0
- package/dist/prod/packages/@ember/debug/lib/warn.js +6 -0
- package/dist/prod/packages/@ember/deprecated-features/index.js +7 -0
- package/dist/prod/packages/@ember/destroyable/index.js +251 -0
- package/dist/prod/packages/@ember/engine/index.js +450 -0
- package/dist/{packages → prod/packages}/@ember/engine/instance.js +24 -10
- package/dist/prod/packages/@ember/engine/lib/engine-parent.js +33 -0
- package/dist/prod/packages/@ember/engine/parent.js +1 -0
- package/dist/prod/packages/@ember/enumerable/index.js +20 -0
- package/dist/prod/packages/@ember/enumerable/mutable.js +22 -0
- package/dist/prod/packages/@ember/helper/index.js +489 -0
- package/dist/prod/packages/@ember/instrumentation/index.js +242 -0
- package/dist/prod/packages/@ember/modifier/index.js +21 -0
- package/dist/prod/packages/@ember/modifier/on.js +20 -0
- package/dist/prod/packages/@ember/object/-internals.js +28 -0
- package/dist/prod/packages/@ember/object/compat.js +128 -0
- package/dist/prod/packages/@ember/object/computed.js +10 -0
- package/dist/prod/packages/@ember/object/core.js +781 -0
- package/dist/prod/packages/@ember/object/evented.js +76 -0
- package/dist/prod/packages/@ember/object/events.js +6 -0
- package/dist/prod/packages/@ember/object/index.js +205 -0
- package/dist/prod/packages/@ember/object/internals.js +8 -0
- package/dist/prod/packages/@ember/object/lib/computed/computed_macros.js +776 -0
- package/dist/prod/packages/@ember/object/lib/computed/reduce_computed_macros.js +1032 -0
- package/dist/prod/packages/@ember/object/mixin.js +560 -0
- package/dist/{packages → prod/packages}/@ember/object/observable.js +80 -15
- package/dist/prod/packages/@ember/object/observers.js +6 -0
- package/dist/prod/packages/@ember/object/promise-proxy-mixin.js +138 -0
- package/dist/prod/packages/@ember/object/proxy.js +98 -0
- package/dist/prod/packages/@ember/owner/index.js +88 -0
- package/dist/prod/packages/@ember/reactive/collections.js +1 -0
- package/dist/prod/packages/@ember/reactive/index.js +12 -0
- package/dist/prod/packages/@ember/renderer/index.js +12 -0
- package/dist/prod/packages/@ember/routing/hash-location.js +153 -0
- package/dist/prod/packages/@ember/routing/history-location.js +250 -0
- package/dist/prod/packages/@ember/routing/index.js +12 -0
- package/dist/prod/packages/@ember/routing/lib/cache.js +37 -0
- package/dist/prod/packages/@ember/routing/lib/controller_for.js +16 -0
- package/dist/prod/packages/@ember/routing/lib/dsl.js +178 -0
- package/dist/prod/packages/@ember/routing/lib/generate_controller.js +62 -0
- package/dist/prod/packages/@ember/routing/lib/location-utils.js +48 -0
- package/dist/prod/packages/@ember/routing/lib/query_params.js +9 -0
- package/dist/prod/packages/@ember/routing/lib/router_state.js +26 -0
- package/dist/prod/packages/@ember/routing/lib/routing-service.js +125 -0
- package/dist/prod/packages/@ember/routing/lib/utils.js +236 -0
- package/dist/prod/packages/@ember/routing/none-location.js +120 -0
- package/dist/prod/packages/@ember/routing/route.js +1604 -0
- package/dist/prod/packages/@ember/routing/router-service.js +640 -0
- package/dist/prod/packages/@ember/routing/router.js +1335 -0
- package/dist/prod/packages/@ember/runloop/index.js +736 -0
- package/dist/prod/packages/@ember/service/index.js +124 -0
- package/dist/prod/packages/@ember/template/index.js +12 -0
- package/dist/prod/packages/@ember/template-compilation/index.js +20 -0
- package/dist/prod/packages/@ember/template-compiler/-internal-primitives.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/-internal-utils.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/index.js +2 -0
- package/dist/prod/packages/@ember/template-compiler/lib/-internal/primitives.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/lib/compile-options.js +103 -0
- package/dist/prod/packages/@ember/template-compiler/lib/dasherize-component-name.js +21 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/allowed-globals.js +56 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-against-attrs.js +49 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-against-named-outlets.js +34 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-input-helper-without-block.js +22 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/assert-reserved-named-arguments.js +37 -0
- package/dist/{packages → prod/packages}/@ember/template-compiler/lib/plugins/index.js +1 -1
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-action-syntax.js +65 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-each-in-into-each.js +51 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-each-track-array.js +50 -0
- package/dist/{packages → prod/packages}/@ember/template-compiler/lib/plugins/transform-in-element.js +20 -6
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js +37 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-resolutions.js +4 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js +57 -0
- package/dist/prod/packages/@ember/template-compiler/lib/plugins/utils.js +55 -0
- package/dist/prod/packages/@ember/template-compiler/lib/public-api.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/lib/runtime.js +1 -0
- package/dist/prod/packages/@ember/template-compiler/lib/system/calculate-location-display.js +28 -0
- package/dist/prod/packages/@ember/template-compiler/lib/template.js +245 -0
- package/dist/prod/packages/@ember/template-factory/index.js +5 -0
- package/dist/prod/packages/@ember/test/adapter.js +2 -0
- package/dist/prod/packages/@ember/test/index.js +18 -0
- package/dist/prod/packages/@ember/utils/index.js +7 -0
- package/dist/prod/packages/@ember/utils/lib/compare.js +159 -0
- package/dist/prod/packages/@ember/utils/lib/is-equal.js +60 -0
- package/dist/prod/packages/@ember/utils/lib/is_blank.js +36 -0
- package/dist/prod/packages/@ember/utils/lib/is_empty.js +67 -0
- package/dist/prod/packages/@ember/utils/lib/is_none.js +28 -0
- package/dist/prod/packages/@ember/utils/lib/is_present.js +39 -0
- package/dist/prod/packages/@ember/utils/lib/type-of.js +110 -0
- package/dist/prod/packages/@ember/version/index.js +1 -0
- package/dist/prod/packages/@glimmer/destroyable/index.js +128 -0
- package/dist/prod/packages/@glimmer/encoder/index.js +28 -0
- package/dist/prod/packages/@glimmer/env/index.js +4 -0
- package/dist/prod/packages/@glimmer/global-context/index.js +138 -0
- package/dist/prod/packages/@glimmer/manager/index.js +293 -0
- package/dist/{packages/shared-chunks/node-dom-helper-BYL7Plyj.js → prod/packages/@glimmer/node/index.js} +10 -12
- package/dist/prod/packages/@glimmer/opcode-compiler/index.js +40 -0
- package/dist/prod/packages/@glimmer/owner/index.js +19 -0
- package/dist/prod/packages/@glimmer/program/index.js +12 -0
- package/dist/{packages/shared-chunks/iterable-BKS7az3P.js → prod/packages/@glimmer/reference/index.js} +13 -12
- package/dist/prod/packages/@glimmer/runtime/index.js +9 -0
- package/dist/prod/packages/@glimmer/tracking/index.js +115 -0
- package/dist/prod/packages/@glimmer/tracking/primitives/cache/index.js +6 -0
- package/dist/prod/packages/@glimmer/util/index.js +129 -0
- package/dist/prod/packages/@glimmer/validator/index.js +1027 -0
- package/dist/prod/packages/@glimmer/vm/index.js +15 -0
- package/dist/prod/packages/@glimmer/wire-format/index.js +102 -0
- package/dist/prod/packages/@simple-dom/document/index.js +355 -0
- package/dist/prod/packages/backburner.js/index.js +939 -0
- package/dist/prod/packages/dag-map/index.js +202 -0
- package/dist/prod/packages/ember/version.js +4 -0
- package/dist/prod/packages/ember-template-compiler/index.js +100 -0
- package/dist/prod/packages/ember-testing/index.js +6 -0
- package/dist/prod/packages/ember-testing/lib/adapters/adapter.js +49 -0
- package/dist/prod/packages/ember-testing/lib/public-api.js +2 -0
- package/dist/prod/packages/ember-testing/lib/test/adapter.js +32 -0
- package/dist/prod/packages/ember-testing/lib/test/pending_requests.js +10 -0
- package/dist/prod/packages/ember-testing/lib/test/waiters.js +128 -0
- package/dist/prod/packages/ember-testing/lib/test.js +25 -0
- package/dist/prod/packages/route-recognizer/index.js +671 -0
- package/dist/prod/packages/router_js/index.js +1527 -0
- package/dist/prod/packages/rsvp/index.js +1 -0
- package/dist/prod/packages/shared-chunks/alias-BkT-0B1G.js +81 -0
- package/dist/prod/packages/shared-chunks/api-Co-k4HVs.js +200 -0
- package/dist/prod/packages/shared-chunks/args-proxy-Dl0A0YWI.js +131 -0
- package/dist/prod/packages/shared-chunks/array-EwekEvId.js +117 -0
- package/dist/prod/packages/shared-chunks/array-utils-CZQxrdD3.js +45 -0
- package/dist/prod/packages/shared-chunks/assert-CUCJBR2C.js +19 -0
- package/dist/prod/packages/shared-chunks/cache-qDyqAcpg.js +35 -0
- package/dist/prod/packages/shared-chunks/capabilities-DGmQ_mz4.js +26 -0
- package/dist/prod/packages/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js +121 -0
- package/dist/prod/packages/shared-chunks/collections-GpG8lT2g.js +75 -0
- package/dist/prod/packages/shared-chunks/compiler-Ddfo5StE.js +6806 -0
- package/dist/prod/packages/shared-chunks/computed_cache-DmYKevAP.js +12 -0
- package/dist/prod/packages/shared-chunks/constants-b-2IVErl.js +210 -0
- package/dist/prod/packages/shared-chunks/debug-brand-B1TWjOCH.js +12 -0
- package/dist/prod/packages/shared-chunks/decorator-BdDDBUd2.js +123 -0
- package/dist/prod/packages/shared-chunks/dictionary-gc5gpyOG.js +13 -0
- package/dist/prod/packages/shared-chunks/element-builder-CiLTrXD6.js +776 -0
- package/dist/prod/packages/shared-chunks/flags-B9qxc-pB.js +24 -0
- package/dist/prod/packages/shared-chunks/fragment-EpVz5Xuc.js +910 -0
- package/dist/prod/packages/shared-chunks/get-debug-name-BDxIL2Y1.js +3 -0
- package/dist/prod/packages/shared-chunks/has-dom-DdQORPzI.js +4 -0
- package/dist/prod/packages/shared-chunks/index-CSVCFS_p.js +1904 -0
- package/dist/prod/packages/shared-chunks/index-Cc8WmrB-.js +21 -0
- package/dist/prod/packages/shared-chunks/index-DZLHQAlb.js +5842 -0
- package/dist/prod/packages/shared-chunks/injected_property-DL3vQoFA.js +58 -0
- package/dist/prod/packages/shared-chunks/invoke-DxL00a1D.js +53 -0
- package/dist/prod/packages/shared-chunks/is_proxy-Cr1qlMv_.js +16 -0
- package/dist/prod/packages/shared-chunks/lookup-descriptor-CwcVgaLv.js +13 -0
- package/dist/prod/packages/shared-chunks/name-C68GLLO3.js +11 -0
- package/dist/prod/packages/shared-chunks/namespace_search-Aog9nySA.js +1070 -0
- package/dist/prod/packages/shared-chunks/object-utils-AijlD-JH.js +12 -0
- package/dist/prod/packages/shared-chunks/observers-R1ZklwWy.js +714 -0
- package/dist/prod/packages/shared-chunks/on-CrTl7JQU.js +3329 -0
- package/dist/prod/packages/shared-chunks/program-B7SJZ5NF.js +176 -0
- package/dist/prod/packages/shared-chunks/program-context-C-JdYXRA.js +146 -0
- package/dist/prod/packages/shared-chunks/property_set-O080KTKZ.js +99 -0
- package/dist/prod/packages/shared-chunks/public-api-C3KlJmEr.js +10 -0
- package/dist/prod/packages/shared-chunks/reference-BNqcwZWH.js +151 -0
- package/dist/prod/packages/shared-chunks/registers-ylirb0dq.js +35 -0
- package/dist/prod/packages/shared-chunks/rehydrate-builder-CSn1aIO1.js +459 -0
- package/dist/prod/packages/shared-chunks/render-C1ZnScKH.js +1464 -0
- package/dist/prod/packages/shared-chunks/rsvp-CnCSY930.js +2306 -0
- package/dist/prod/packages/shared-chunks/serialize-builder-CVQ3q8rJ.js +124 -0
- package/dist/prod/packages/shared-chunks/set_properties-CjsDTRey.js +101 -0
- package/dist/prod/packages/shared-chunks/setup-registry-CMNYh2jY.js +53 -0
- package/dist/prod/packages/shared-chunks/simple-cast-DCvJLSin.js +33 -0
- package/dist/prod/packages/shared-chunks/super-Cm_a_cLQ.js +275 -0
- package/dist/prod/packages/shared-chunks/template-Dc_cBOoX.js +19 -0
- package/dist/prod/packages/shared-chunks/tracked-ChVNBE2f.js +131 -0
- package/dist/prod/packages/shared-chunks/transform-resolutions-C7wq_Q_c.js +6939 -0
- package/dist/prod/packages/shared-chunks/unrecognized-url-error-DDBwfzdm.js +537 -0
- package/docs/data.json +3009 -2358
- package/lib/index.js +157 -279
- package/package.json +27 -58
- package/types/stable/@ember/-internals/deprecations/index.d.ts +0 -6
- package/types/stable/@ember/-internals/environment/index.d.ts +0 -1
- package/types/stable/@ember/-internals/environment/lib/env.d.ts +0 -3
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/curly.d.ts +3 -6
- package/types/stable/@ember/-internals/glimmer/lib/component-managers/root.d.ts +1 -2
- package/types/stable/@ember/-internals/glimmer/lib/helper.d.ts +22 -29
- package/types/stable/@ember/-internals/glimmer/lib/renderer.d.ts +2 -2
- package/types/stable/@ember/-internals/glimmer/lib/resolver.d.ts +0 -2
- package/types/stable/@ember/-internals/glimmer/lib/utils/bindings.d.ts +0 -1
- package/types/stable/@ember/-internals/meta/lib/meta.d.ts +1 -1
- package/types/stable/@ember/-internals/metal/lib/alias.d.ts +0 -11
- package/types/stable/@ember/-internals/metal/lib/decorator.d.ts +0 -1
- package/types/stable/@ember/-internals/metal/lib/each_proxy_events.d.ts +0 -1
- package/types/stable/@ember/-internals/metal/lib/observer.d.ts +0 -2
- package/types/stable/@ember/-internals/metal/lib/property_get.d.ts +4 -10
- package/types/stable/@ember/-internals/utils/index.d.ts +0 -1
- package/types/stable/@ember/-internals/views/lib/system/utils.d.ts +3 -15
- package/types/stable/@ember/application/index.d.ts +2 -63
- package/types/stable/@ember/routing/history-location.d.ts +0 -1
- package/types/stable/@ember/routing/lib/location-utils.d.ts +1 -2
- package/types/stable/@ember/routing/none-location.d.ts +1 -2
- package/types/stable/@ember/template-compiler/index.d.ts +1 -0
- package/types/stable/@ember/template-compiler/lib/plugins/allowed-globals.d.ts +26 -0
- package/types/stable/@ember/test/index.d.ts +0 -3
- package/types/stable/@glimmer/interfaces/lib/compile/wire-format/api.d.ts +1 -1
- package/types/stable/@glimmer/interfaces/lib/template.d.ts +1 -1
- package/types/stable/@glimmer/program/lib/program.d.ts +0 -1
- package/types/stable/@glimmer/validator/lib/collections/map.d.ts +1 -1
- package/types/stable/@handlebars/parser/types/ast.d.ts +148 -0
- package/types/stable/@handlebars/parser/types/index.d.ts +13 -0
- package/types/stable/ember-template-compiler/index.d.ts +0 -2
- package/types/stable/ember-template-compiler/lib/public-api.d.ts +0 -1
- package/types/stable/ember-testing/lib/public-api.d.ts +0 -6
- package/types/stable/ember-testing/lib/test/pending_requests.d.ts +0 -3
- package/types/stable/ember-testing/lib/test.d.ts +0 -23
- package/types/stable/index.d.ts +15 -32
- package/types/stable/router_js/index.d.ts +7 -0
- package/types/stable/router_js/lib/core.d.ts +9 -0
- package/types/stable/router_js/lib/route-info.d.ts +107 -0
- package/types/stable/router_js/lib/router.d.ts +245 -0
- package/types/stable/router_js/lib/transition-aborted-error.d.ts +15 -0
- package/types/stable/router_js/lib/transition-intent/named-transition-intent.d.ts +23 -0
- package/types/stable/router_js/lib/transition-intent/url-transition-intent.d.ts +12 -0
- package/types/stable/router_js/lib/transition-intent.d.ts +13 -0
- package/types/stable/router_js/lib/transition-state.d.ts +25 -0
- package/types/stable/router_js/lib/transition.d.ts +241 -0
- package/types/stable/router_js/lib/unrecognized-url-error.d.ts +11 -0
- package/types/stable/router_js/lib/utils.d.ts +41 -0
- package/dist/ember-template-compiler.js +0 -20631
- package/dist/ember-template-compiler.js.map +0 -1
- package/dist/ember-testing.js +0 -1351
- package/dist/ember-testing.js.map +0 -1
- package/dist/ember.debug.js +0 -52306
- package/dist/ember.debug.js.map +0 -1
- package/dist/ember.prod.js +0 -49369
- package/dist/ember.prod.js.map +0 -1
- package/dist/packages/@ember/-internals/container/index.js +0 -1
- package/dist/packages/@ember/-internals/environment/index.js +0 -1
- package/dist/packages/@ember/-internals/glimmer/index.js +0 -18
- package/dist/packages/@ember/-internals/metal/index.js +0 -51
- package/dist/packages/@ember/-internals/utils/index.js +0 -7
- package/dist/packages/@ember/application/lib/lazy_load.js +0 -68
- package/dist/packages/@ember/component/helper.js +0 -14
- package/dist/packages/@ember/modifier/index.js +0 -23
- package/dist/packages/@ember/object/-internals.js +0 -35
- package/dist/packages/@ember/object/events.js +0 -12
- package/dist/packages/@ember/object/observers.js +0 -12
- package/dist/packages/@ember/renderer/index.js +0 -14
- package/dist/packages/@ember/routing/index.js +0 -14
- package/dist/packages/@ember/template/index.js +0 -14
- package/dist/packages/@ember/template-factory/index.js +0 -8
- package/dist/packages/@ember/test/index.js +0 -27
- package/dist/packages/@glimmer/encoder/index.js +0 -1
- package/dist/packages/@glimmer/manager/index.js +0 -5
- package/dist/packages/@glimmer/node/index.js +0 -2
- package/dist/packages/@glimmer/program/index.js +0 -3
- package/dist/packages/@glimmer/reference/index.js +0 -2
- package/dist/packages/@glimmer/tracking/index.js +0 -48
- package/dist/packages/@glimmer/tracking/primitives/cache/index.js +0 -12
- package/dist/packages/ember/barrel.js +0 -511
- package/dist/packages/ember/index.js +0 -20
- package/dist/packages/ember-template-compiler/index.js +0 -17135
- package/dist/packages/ember-testing/lib/adapters/qunit.js +0 -53
- package/dist/packages/ember-testing/lib/ext/application.js +0 -174
- package/dist/packages/ember-testing/lib/ext/rsvp.js +0 -17
- package/dist/packages/ember-testing/lib/helpers/and_then.js +0 -11
- package/dist/packages/ember-testing/lib/helpers/current_path.js +0 -32
- package/dist/packages/ember-testing/lib/helpers/current_route_name.js +0 -32
- package/dist/packages/ember-testing/lib/helpers/current_url.js +0 -29
- package/dist/packages/ember-testing/lib/helpers/pause_test.js +0 -76
- package/dist/packages/ember-testing/lib/helpers/visit.js +0 -51
- package/dist/packages/ember-testing/lib/helpers/wait.js +0 -55
- package/dist/packages/ember-testing/lib/helpers.js +0 -17
- package/dist/packages/ember-testing/lib/initializers.js +0 -56
- package/dist/packages/ember-testing/lib/public-api.js +0 -8
- package/dist/packages/ember-testing/lib/setup_for_testing.js +0 -31
- package/dist/packages/ember-testing/lib/test/helpers.js +0 -133
- package/dist/packages/ember-testing/lib/test/on_inject_helpers.js +0 -39
- package/dist/packages/ember-testing/lib/test/pending_requests.js +0 -22
- package/dist/packages/ember-testing/lib/test/promise.js +0 -83
- package/dist/packages/ember-testing/lib/test/run.js +0 -11
- package/dist/packages/ember-testing/lib/test.js +0 -68
- package/dist/packages/router_js/index.js +0 -2
- package/dist/packages/shared-chunks/helpers-C1rIkuSd.js +0 -11
- package/dist/packages/shared-chunks/invoke-BjRgvK2V.js +0 -27
- package/dist/packages/shared-chunks/public-api-BQsJemZG.js +0 -20
- package/dist/packages/shared-chunks/template_registry-DigcUg9m.js +0 -24
- package/dist/packages/shared-chunks/to-string-CqD7_vQ4.js +0 -60
- package/types/stable/@ember/-internals/environment/lib/global.d.ts +0 -4
- package/types/stable/@ember/-internals/glimmer/lib/modifiers/internal.d.ts +0 -34
- package/types/stable/@ember/-internals/glimmer/lib/syntax/utils.d.ts +0 -5
- package/types/stable/@ember/-internals/glimmer/lib/templates/empty.d.ts +0 -4
- package/types/stable/@ember/-internals/glimmer/lib/utils/debug-render-message.d.ts +0 -4
- package/types/stable/@ember/-internals/metal/lib/dependent_keys.d.ts +0 -3
- package/types/stable/@ember/-internals/utils/lib/symbol.d.ts +0 -5
- package/types/stable/@ember/application/lib/lazy_load.d.ts +0 -38
- package/types/stable/@ember/template-compiler/lib/public-types.d.ts +0 -3
- package/types/stable/ember/barrel.d.ts +0 -358
- package/types/stable/ember/index.d.ts +0 -358
- package/types/stable/ember-template-compiler/lib/system/bootstrap.d.ts +0 -26
- package/types/stable/ember-template-compiler/lib/system/initializer.d.ts +0 -3
- package/types/stable/ember-testing/lib/adapters/qunit.d.ts +0 -22
- package/types/stable/ember-testing/lib/ext/application.d.ts +0 -12
- package/types/stable/ember-testing/lib/ext/rsvp.d.ts +0 -4
- package/types/stable/ember-testing/lib/helpers/and_then.d.ts +0 -4
- package/types/stable/ember-testing/lib/helpers/current_path.d.ts +0 -22
- package/types/stable/ember-testing/lib/helpers/current_route_name.d.ts +0 -21
- package/types/stable/ember-testing/lib/helpers/current_url.d.ts +0 -22
- package/types/stable/ember-testing/lib/helpers/pause_test.d.ts +0 -52
- package/types/stable/ember-testing/lib/helpers/visit.d.ts +0 -22
- package/types/stable/ember-testing/lib/helpers/wait.d.ts +0 -34
- package/types/stable/ember-testing/lib/helpers.d.ts +0 -3
- package/types/stable/ember-testing/lib/initializers.d.ts +0 -3
- package/types/stable/ember-testing/lib/setup_for_testing.d.ts +0 -15
- package/types/stable/ember-testing/lib/test/helpers.d.ts +0 -116
- package/types/stable/ember-testing/lib/test/on_inject_helpers.d.ts +0 -33
- package/types/stable/ember-testing/lib/test/promise.d.ts +0 -37
- package/types/stable/ember-testing/lib/test/run.d.ts +0 -3
- package/types/stable/loader/lib/index.d.ts +0 -4
- package/types/stable/require.d.ts +0 -4
- /package/dist/{packages → dev/packages}/@ember/-internals/browser-environment/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/error-handling/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/meta/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/owner/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/runtime/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/comparable.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/runtime/lib/mixins/container_proxy.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/utility-types/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/views/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/views/lib/compat/attrs.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/-internals/views/lib/component_lookup.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/array/-internals.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/array/lib/make-array.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/array/make.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/array/mutable.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/debug/lib/capture-render-tree.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/debug/lib/inspect.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/debug/lib/testing.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/deprecated-features/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/destroyable/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/engine/lib/engine-parent.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/engine/parent.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/enumerable/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/enumerable/mutable.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/object/proxy.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/owner/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/reactive/collections.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/reactive/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/routing/lib/cache.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/routing/lib/controller_for.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/routing/lib/query_params.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/routing/lib/router_state.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/-internal-primitives.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/-internal-utils.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/-internal/primitives.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-action-syntax.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-each-in-into-each.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-quoted-bindings-into-just-bindings.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/transform-wrap-mount-and-outlet.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/plugins/utils.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/public-api.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/runtime.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/lib/system/calculate-location-display.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/template-compiler/runtime.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/test/adapter.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/index.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/is-equal.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/is_blank.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/is_none.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/is_present.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/utils/lib/type-of.js +0 -0
- /package/dist/{packages → dev/packages}/@ember/version/index.js +0 -0
- /package/dist/{packages → dev/packages}/@glimmer/env/index.js +0 -0
- /package/dist/{packages → dev/packages}/@glimmer/owner/index.js +0 -0
- /package/dist/{packages → dev/packages}/@glimmer/wire-format/index.js +0 -0
- /package/dist/{packages → dev/packages}/@simple-dom/document/index.js +0 -0
- /package/dist/{packages → dev/packages}/backburner.js/index.js +0 -0
- /package/dist/{packages → dev/packages}/dag-map/index.js +0 -0
- /package/dist/{packages → dev/packages}/ember-testing/lib/adapters/adapter.js +0 -0
- /package/dist/{packages → dev/packages}/ember-testing/lib/test/adapter.js +0 -0
- /package/dist/{packages → dev/packages}/ember-testing/lib/test/waiters.js +0 -0
- /package/dist/{packages → dev/packages}/route-recognizer/index.js +0 -0
- /package/dist/{packages → dev/packages}/rsvp/index.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/array-utils-CZQxrdD3.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/assert-CUCJBR2C.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/cache-qDyqAcpg.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/chunk-3SQBS3Y5-Cj4eryg1.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/computed_cache-DmYKevAP.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/debug-brand-B1TWjOCH.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/dictionary-gc5gpyOG.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/index-BGP1rw3B.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/object-utils-AijlD-JH.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/present-B1rrjAVM.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/registers-ylirb0dq.js +0 -0
- /package/dist/{packages → dev/packages}/shared-chunks/rsvp-CnCSY930.js +0 -0
- /package/dist/{packages → prod/packages}/@ember/routing/-internals.js +0 -0
- /package/dist/{packages/@ember/template-compiler/index.js → prod/packages/@ember/template-compiler/runtime.js} +0 -0
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import
|
|
2
|
-
import './debug-to-string-
|
|
3
|
-
import { isDevelopingApp } from '@embroider/macros';
|
|
1
|
+
import './fragment-Cc5k9Oy4.js';
|
|
2
|
+
import './debug-to-string-CFb7h0lY.js';
|
|
4
3
|
import setGlobalContext from '../@glimmer/global-context/index.js';
|
|
5
4
|
import { untrack, consumeTag, tagFor, createCache, getValue, valueForTag, beginUntrackFrame, endUntrackFrame, beginTrackFrame, endTrackFrame, validateTag, createTag, dirtyTag as DIRTY_TAG$1, CONSTANT_TAG, isTracking, debug, CURRENT_TAG } from '../@glimmer/validator/index.js';
|
|
6
|
-
import { v as valueForRef,
|
|
7
|
-
import { t as templateFactory } from './index-
|
|
5
|
+
import { v as valueForRef, i as isConstRef, a as createConstRef, l as isUpdatableRef, u as updateRef, c as createComputeRef, d as createPrimitiveRef, b as childRefFor, g as childRefFromParts, U as UNDEFINED_REFERENCE, h as createInvokableRef, j as createReadOnlyRef, k as createUnboundRef, e as createDebugAliasRef } from './reference-C3TKDRnP.js';
|
|
6
|
+
import { t as templateFactory } from './index-Q7JnrdBn.js';
|
|
8
7
|
import { registerDestructor, associateDestroyableChild, isDestroyed, destroy, isDestroying } from '../@glimmer/destroyable/index.js';
|
|
9
|
-
import {
|
|
8
|
+
import { c as capabilityFlagsFrom } from './capabilities-O_xc7Yqk.js';
|
|
9
|
+
import { getFactoryFor, privatize } from '../@ember/-internals/container/index.js';
|
|
10
10
|
import { warn, debugFreeze, deprecate } from '../@ember/debug/index.js';
|
|
11
|
-
import {
|
|
12
|
-
import './constants-
|
|
11
|
+
import { w as reifyPositional, s as normalizeProperty, E as EMPTY_ARGS, l as createCapturedArgs, e as EMPTY_POSITIONAL, m as curry, q as hash, p as get$1, o as fn, k as concat, i as array, t as on$1, T as TEMPLATE_ONLY_COMPONENT_MANAGER, z as templateOnlyComponent } from './dynamic-CFg3dljk.js';
|
|
12
|
+
import './constants-eoaL3OJQ.js';
|
|
13
13
|
import { join, schedule, _backburner, _getCurrentRunLoop } from '../@ember/runloop/index.js';
|
|
14
14
|
import { h as hasDOM } from './index-BGP1rw3B.js';
|
|
15
15
|
import { action } from '../@ember/object/index.js';
|
|
16
16
|
import { on } from '../@ember/modifier/on.js';
|
|
17
17
|
import '../@ember/-internals/meta/lib/meta.js';
|
|
18
|
-
import { g as guidFor,
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
18
|
+
import { g as guidFor, f as getDebugName, i as isObject } from './mandatory-setter-DHZe7-kW.js';
|
|
19
|
+
import { $ as tracked, g as get, b as descriptorForProperty, O as PROPERTY_DID_CHANGE, x as nativeDescDecorator, t as tagForObject, Q as objectAt, a as tagForProperty, X as _getProp } from './observers-Bj9qLVau.js';
|
|
20
|
+
import { ENV } from '../@ember/-internals/environment/index.js';
|
|
21
21
|
import { setOwner, getOwner, isFactory } from '../@ember/-internals/owner/index.js';
|
|
22
|
-
import { s as setInternalComponentManager,
|
|
23
|
-
import { s as setComponentTemplate, g as getComponentTemplate } from './template-
|
|
22
|
+
import { s as setInternalComponentManager, g as getInternalHelperManager, c as helperCapabilities, i as setInternalHelperManager, b as hasInternalComponentManager, e as getInternalComponentManager } from './api-BqXkkT0p.js';
|
|
23
|
+
import { s as setComponentTemplate, g as getComponentTemplate } from './template-kM-7TTcc.js';
|
|
24
24
|
import { assert } from '../@ember/debug/lib/assert.js';
|
|
25
25
|
import { d as decorateFieldV2, i as initializeDeferredDecorator, a as decorateMethodV2 } from './chunk-3SQBS3Y5-Cj4eryg1.js';
|
|
26
26
|
import { isSimpleClick, getViewElement, clearElementView, clearViewElement, addChildView, setViewElement, setElementView, getChildViews, constructStyleDeprecationMessage, getViewId } from '../@ember/-internals/views/lib/system/utils.js';
|
|
@@ -40,28 +40,27 @@ import '../@ember/enumerable/mutable.js';
|
|
|
40
40
|
import TargetActionSupport from '../@ember/-internals/runtime/lib/mixins/target_action_support.js';
|
|
41
41
|
import '../@ember/-internals/runtime/lib/ext/rsvp.js';
|
|
42
42
|
import EventDispatcher from '../@ember/-internals/views/lib/system/event_dispatcher.js';
|
|
43
|
-
import { e as enumerableSymbol } from './to-string-CqD7_vQ4.js';
|
|
44
43
|
import { E as EMPTY_ARRAY$2 } from './array-utils-CZQxrdD3.js';
|
|
45
44
|
import { dasherize } from '../@ember/-internals/string/index.js';
|
|
46
45
|
import { MUTABLE_CELL } from '../@ember/-internals/views/lib/compat/attrs.js';
|
|
47
46
|
import { FrameworkObject } from '../@ember/object/-internals.js';
|
|
48
|
-
import {
|
|
49
|
-
import { d as dict } from './collections-
|
|
50
|
-
import {
|
|
51
|
-
import { R as RuntimeOpImpl } from './program-
|
|
52
|
-
import { c as runtimeOptions, i as inTransaction, r as renderComponent$1, a as renderMain } from './render-
|
|
53
|
-
import { c as clientBuilder } from './element-builder-
|
|
47
|
+
import { setHelperManager } from '../@glimmer/manager/index.js';
|
|
48
|
+
import { d as dict } from './collections-D_nY_0UJ.js';
|
|
49
|
+
import { artifacts } from '../@glimmer/program/index.js';
|
|
50
|
+
import { R as RuntimeOpImpl } from './program-DfV0v8aa.js';
|
|
51
|
+
import { c as runtimeOptions, i as inTransaction, r as renderComponent$1, a as renderMain } from './render-sg8BuFaE.js';
|
|
52
|
+
import { c as clientBuilder } from './element-builder-BOxP8emt.js';
|
|
54
53
|
import { a as RSVP } from './rsvp-CnCSY930.js';
|
|
55
54
|
import EngineInstance from '../@ember/engine/instance.js';
|
|
56
|
-
import { _ as _setProp, s as set } from './property_set-
|
|
55
|
+
import { _ as _setProp, s as set } from './property_set-DaoZXGM5.js';
|
|
57
56
|
import { isEmberArray } from '../@ember/array/-internals.js';
|
|
58
|
-
import { i as isProxy } from './is_proxy-
|
|
57
|
+
import { i as isProxy } from './is_proxy-B0smdQy8.js';
|
|
59
58
|
import { isArray } from '../@ember/array/index.js';
|
|
60
59
|
import '../route-recognizer/index.js';
|
|
61
|
-
import './unrecognized-url-error-
|
|
60
|
+
import './unrecognized-url-error-B3wUTorp.js';
|
|
62
61
|
import '../@ember/routing/lib/routing-service.js';
|
|
63
62
|
import { generateControllerFactory } from '../@ember/routing/lib/generate_controller.js';
|
|
64
|
-
import { E as EvaluationContextImpl } from './program-context-
|
|
63
|
+
import { E as EvaluationContextImpl } from './program-context-BRjCC_BA.js';
|
|
65
64
|
|
|
66
65
|
const RootTemplate = templateFactory(
|
|
67
66
|
/*
|
|
@@ -98,7 +97,9 @@ const InputTemplate = templateFactory(
|
|
|
98
97
|
"id": null,
|
|
99
98
|
"block": "[[[11,\"input\"],[16,1,[30,0,[\"id\"]]],[16,0,[30,0,[\"class\"]]],[17,1],[16,4,[30,0,[\"type\"]]],[16,\"checked\",[30,0,[\"checked\"]]],[16,2,[30,0,[\"value\"]]],[4,[32,0],[\"change\",[30,0,[\"change\"]]],null],[4,[32,0],[\"input\",[30,0,[\"input\"]]],null],[4,[32,0],[\"keyup\",[30,0,[\"keyUp\"]]],null],[4,[32,0],[\"paste\",[30,0,[\"valueDidChange\"]]],null],[4,[32,0],[\"cut\",[30,0,[\"valueDidChange\"]]],null],[12],[13]],[\"&attrs\"],[]]",
|
|
100
99
|
"moduleName": "packages/@ember/-internals/glimmer/lib/templates/input.hbs",
|
|
101
|
-
"scope": () =>
|
|
100
|
+
"scope": () => ({
|
|
101
|
+
on
|
|
102
|
+
}),
|
|
102
103
|
"isStrictMode": true
|
|
103
104
|
});
|
|
104
105
|
|
|
@@ -154,7 +155,7 @@ class InternalComponent {
|
|
|
154
155
|
listenerFor(name) {
|
|
155
156
|
let listener = this.named(name);
|
|
156
157
|
if (listener) {
|
|
157
|
-
(
|
|
158
|
+
(!(typeof listener === 'function') && assert(`The \`@${name}\` argument to the <${this.constructor}> component must be a function`, typeof listener === 'function'));
|
|
158
159
|
return listener;
|
|
159
160
|
} else {
|
|
160
161
|
return NOOP$1;
|
|
@@ -187,7 +188,7 @@ function opaquify(constructor, template) {
|
|
|
187
188
|
}
|
|
188
189
|
function deopaquify(opaque) {
|
|
189
190
|
let constructor = OPAQUE_CONSTRUCTOR_MAP.get(opaque);
|
|
190
|
-
(
|
|
191
|
+
(!(constructor) && assert(`[BUG] Invalid internal component constructor: ${opaque}`, constructor));
|
|
191
192
|
return constructor;
|
|
192
193
|
}
|
|
193
194
|
const CAPABILITIES$3 = {
|
|
@@ -210,7 +211,7 @@ class InternalManager {
|
|
|
210
211
|
return CAPABILITIES$3;
|
|
211
212
|
}
|
|
212
213
|
create(owner, definition, args, _env, _dynamicScope, caller) {
|
|
213
|
-
(
|
|
214
|
+
(!(isConstRef(caller)) && assert('caller must be const', isConstRef(caller)));
|
|
214
215
|
let ComponentClass = deopaquify(definition);
|
|
215
216
|
let instance = new ComponentClass(owner, args.capture(), valueForRef(caller));
|
|
216
217
|
untrack(instance['validateArguments'].bind(instance));
|
|
@@ -234,7 +235,7 @@ const INTERNAL_COMPONENT_MANAGER = new InternalManager();
|
|
|
234
235
|
|
|
235
236
|
const UNINITIALIZED = Object.freeze({});
|
|
236
237
|
function elementForEvent(event) {
|
|
237
|
-
(
|
|
238
|
+
(!(event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) && assert('[BUG] event target must be an <input> or <textarea> element', event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement));
|
|
238
239
|
return event.target;
|
|
239
240
|
}
|
|
240
241
|
function valueForEvent(event) {
|
|
@@ -293,17 +294,17 @@ class ForkedValue {
|
|
|
293
294
|
this.lastUpstreamValue = upstreamValue;
|
|
294
295
|
this.local = new LocalValue(upstreamValue);
|
|
295
296
|
}
|
|
296
|
-
(
|
|
297
|
+
(!(this.local) && assert('[BUG] this.local must have been initialized at this point', this.local));
|
|
297
298
|
return this.local.get();
|
|
298
299
|
}
|
|
299
300
|
set(value) {
|
|
300
|
-
(
|
|
301
|
+
(!(this.local) && assert('[BUG] this.local must have been initialized at this point', this.local));
|
|
301
302
|
this.local.set(value);
|
|
302
303
|
}
|
|
303
304
|
}
|
|
304
305
|
class AbstractInput extends InternalComponent {
|
|
305
306
|
validateArguments() {
|
|
306
|
-
(
|
|
307
|
+
(!(this.args.positional.length === 0) && assert(`The ${this.constructor} component does not take any positional arguments`, this.args.positional.length === 0));
|
|
307
308
|
super.validateArguments();
|
|
308
309
|
}
|
|
309
310
|
_value = valueFrom(this.args.named['value']);
|
|
@@ -540,7 +541,7 @@ class _Input extends AbstractInput {
|
|
|
540
541
|
if (type === null || type === undefined) {
|
|
541
542
|
return 'text';
|
|
542
543
|
}
|
|
543
|
-
(
|
|
544
|
+
(!(typeof type === 'string') && assert('The `@type` argument to the <Input> component must be a string', typeof type === 'string'));
|
|
544
545
|
return isValidInputType(type) ? type : 'text';
|
|
545
546
|
}
|
|
546
547
|
get isCheckbox() {
|
|
@@ -549,7 +550,7 @@ class _Input extends AbstractInput {
|
|
|
549
550
|
_checked = valueFrom(this.args.named['checked']);
|
|
550
551
|
get checked() {
|
|
551
552
|
if (this.isCheckbox) {
|
|
552
|
-
(
|
|
553
|
+
(warn('`<Input @type="checkbox" />` reflects its checked state via the `@checked` argument. ' + 'You wrote `<Input @type="checkbox" @value={{...}} />` which is likely not what you intended. ' + 'Did you mean `<Input @type="checkbox" @checked={{...}} />`?', untrack(() => this.args.named['checked'] !== undefined || this.args.named['value'] === undefined || typeof valueForRef(this.args.named['value']) === 'string'), {
|
|
553
554
|
id: 'ember.built-in-components.input-checkbox-value'
|
|
554
555
|
}));
|
|
555
556
|
return this._checked.get();
|
|
@@ -558,7 +559,7 @@ class _Input extends AbstractInput {
|
|
|
558
559
|
}
|
|
559
560
|
}
|
|
560
561
|
set checked(checked) {
|
|
561
|
-
(
|
|
562
|
+
(warn('`<Input @type="checkbox" />` reflects its checked state via the `@checked` argument. ' + 'You wrote `<Input @type="checkbox" @value={{...}} />` which is likely not what you intended. ' + 'Did you mean `<Input @type="checkbox" @checked={{...}} />`?', untrack(() => this.args.named['checked'] !== undefined || this.args.named['value'] === undefined || typeof valueForRef(this.args.named['value']) === 'string'), {
|
|
562
563
|
id: 'ember.built-in-components.input-checkbox-value'
|
|
563
564
|
}));
|
|
564
565
|
this._checked.set(checked);
|
|
@@ -583,7 +584,7 @@ class _Input extends AbstractInput {
|
|
|
583
584
|
}
|
|
584
585
|
checkedDidChange(event) {
|
|
585
586
|
let element = event.target;
|
|
586
|
-
(
|
|
587
|
+
(!(element instanceof HTMLInputElement) && assert('[BUG] element must be an <input>', element instanceof HTMLInputElement));
|
|
587
588
|
this.checked = element.checked;
|
|
588
589
|
}
|
|
589
590
|
static {
|
|
@@ -621,7 +622,9 @@ const LinkToTemplate = templateFactory(
|
|
|
621
622
|
"id": null,
|
|
622
623
|
"block": "[[[11,3],[16,1,[30,0,[\"id\"]]],[16,0,[30,0,[\"class\"]]],[16,\"role\",[30,0,[\"role\"]]],[16,\"title\",[30,0,[\"title\"]]],[16,\"rel\",[30,0,[\"rel\"]]],[16,\"tabindex\",[30,0,[\"tabindex\"]]],[16,\"target\",[30,0,[\"target\"]]],[17,1],[16,6,[30,0,[\"href\"]]],[4,[32,0],[\"click\",[30,0,[\"click\"]]],null],[12],[18,2,null],[13]],[\"&attrs\",\"&default\"],[\"yield\"]]",
|
|
623
624
|
"moduleName": "packages/@ember/-internals/glimmer/lib/templates/link-to.hbs",
|
|
624
|
-
"scope": () =>
|
|
625
|
+
"scope": () => ({
|
|
626
|
+
on
|
|
627
|
+
}),
|
|
625
628
|
"isStrictMode": true
|
|
626
629
|
});
|
|
627
630
|
|
|
@@ -881,9 +884,9 @@ class _LinkTo extends InternalComponent {
|
|
|
881
884
|
}
|
|
882
885
|
#routing = (initializeDeferredDecorator(this, "routing"), void 0);
|
|
883
886
|
validateArguments() {
|
|
884
|
-
(
|
|
885
|
-
(
|
|
886
|
-
(
|
|
887
|
+
(!(!this.isEngine || this.engineMountPoint !== undefined) && assert('You attempted to use the <LinkTo> component within a routeless engine, this is not supported. ' + 'If you are using the ember-engines addon, use the <LinkToExternal> component instead. ' + 'See https://github.com/ember-engines/ember-engines for more info.', !this.isEngine || this.engineMountPoint !== undefined));
|
|
888
|
+
(!('route' in this.args.named || 'model' in this.args.named || 'models' in this.args.named || 'query' in this.args.named) && assert('You must provide at least one of the `@route`, `@model`, `@models` or `@query` arguments to `<LinkTo>`.', 'route' in this.args.named || 'model' in this.args.named || 'models' in this.args.named || 'query' in this.args.named));
|
|
889
|
+
(!(!('model' in this.args.named && 'models' in this.args.named)) && assert('You cannot provide both the `@model` and `@models` arguments to the <LinkTo> component.', !('model' in this.args.named && 'models' in this.args.named)));
|
|
887
890
|
super.validateArguments();
|
|
888
891
|
}
|
|
889
892
|
get class() {
|
|
@@ -914,10 +917,10 @@ class _LinkTo extends InternalComponent {
|
|
|
914
917
|
models,
|
|
915
918
|
query
|
|
916
919
|
} = this;
|
|
917
|
-
(
|
|
920
|
+
(!(isPresent(route)) && assert('[BUG] route can only be missing if isLoading is true', isPresent(route))); // consume the current router state so we invalidate when QP changes
|
|
918
921
|
// TODO: can we narrow this down to QP changes only?
|
|
919
922
|
consumeTag(tagFor(routing, 'currentState'));
|
|
920
|
-
|
|
923
|
+
{
|
|
921
924
|
try {
|
|
922
925
|
return routing.generateURL(route, models, query);
|
|
923
926
|
} catch (e) {
|
|
@@ -930,8 +933,6 @@ class _LinkTo extends InternalComponent {
|
|
|
930
933
|
throw message;
|
|
931
934
|
}
|
|
932
935
|
}
|
|
933
|
-
} else {
|
|
934
|
-
return routing.generateURL(route, models, query);
|
|
935
936
|
}
|
|
936
937
|
}
|
|
937
938
|
click(event) {
|
|
@@ -939,8 +940,9 @@ class _LinkTo extends InternalComponent {
|
|
|
939
940
|
return;
|
|
940
941
|
}
|
|
941
942
|
let element = event.currentTarget;
|
|
942
|
-
(
|
|
943
|
-
let
|
|
943
|
+
(!(element instanceof HTMLAnchorElement || element instanceof SVGAElement) && assert('[BUG] must be an <a> element', element instanceof HTMLAnchorElement || element instanceof SVGAElement));
|
|
944
|
+
let target = element instanceof SVGAElement ? element.target.baseVal : element.target;
|
|
945
|
+
let isSelf = target === '' || target === '_self';
|
|
944
946
|
if (isSelf) {
|
|
945
947
|
this.preventDefault(event);
|
|
946
948
|
} else {
|
|
@@ -950,7 +952,7 @@ class _LinkTo extends InternalComponent {
|
|
|
950
952
|
return;
|
|
951
953
|
}
|
|
952
954
|
if (this.isLoading) {
|
|
953
|
-
(
|
|
955
|
+
(warn('This link is in an inactive loading state because at least one of its models ' + 'currently has a null/undefined value, or the provided route name is invalid.', false, {
|
|
954
956
|
id: 'ember-glimmer.link-to.inactive-loading-state'
|
|
955
957
|
}));
|
|
956
958
|
return;
|
|
@@ -966,7 +968,7 @@ class _LinkTo extends InternalComponent {
|
|
|
966
968
|
transition: undefined
|
|
967
969
|
};
|
|
968
970
|
flaggedInstrument('interaction.link-to', payload, () => {
|
|
969
|
-
(
|
|
971
|
+
(!(isPresent(route)) && assert('[BUG] route can only be missing if isLoading is true', isPresent(route)));
|
|
970
972
|
payload.transition = routing.transitionTo(route, models, query, replace);
|
|
971
973
|
});
|
|
972
974
|
}
|
|
@@ -976,7 +978,7 @@ class _LinkTo extends InternalComponent {
|
|
|
976
978
|
get route() {
|
|
977
979
|
if ('route' in this.args.named) {
|
|
978
980
|
let route = this.named('route');
|
|
979
|
-
(
|
|
981
|
+
(!(isMissing(route) || typeof route === 'string') && assert('The `@route` argument to the <LinkTo> component must be a string', isMissing(route) || typeof route === 'string'));
|
|
980
982
|
return route && this.namespaceRoute(route);
|
|
981
983
|
} else {
|
|
982
984
|
return this.currentRoute;
|
|
@@ -997,7 +999,7 @@ class _LinkTo extends InternalComponent {
|
|
|
997
999
|
get models() {
|
|
998
1000
|
if ('models' in this.args.named) {
|
|
999
1001
|
let models = this.named('models');
|
|
1000
|
-
(
|
|
1002
|
+
(!(Array.isArray(models)) && assert('The `@models` argument to the <LinkTo> component must be an array.', Array.isArray(models)));
|
|
1001
1003
|
return models;
|
|
1002
1004
|
} else if ('model' in this.args.named) {
|
|
1003
1005
|
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
@@ -1009,7 +1011,7 @@ class _LinkTo extends InternalComponent {
|
|
|
1009
1011
|
get query() {
|
|
1010
1012
|
if ('query' in this.args.named) {
|
|
1011
1013
|
let query = this.named('query');
|
|
1012
|
-
(
|
|
1014
|
+
(!(query !== null && typeof query === 'object') && assert('The `@query` argument to the <LinkTo> component must be an object.', query !== null && typeof query === 'object'));
|
|
1013
1015
|
return {
|
|
1014
1016
|
...query
|
|
1015
1017
|
};
|
|
@@ -1048,7 +1050,7 @@ class _LinkTo extends InternalComponent {
|
|
|
1048
1050
|
}
|
|
1049
1051
|
classFor(state) {
|
|
1050
1052
|
let className = this.named(`${state}Class`);
|
|
1051
|
-
(
|
|
1053
|
+
(!(isMissing(className) || typeof className === 'string' || typeof className === 'boolean') && assert(`The \`@${state}Class\` argument to the <LinkTo> component must be a string or boolean`, isMissing(className) || typeof className === 'string' || typeof className === 'boolean'));
|
|
1052
1054
|
if (className === true || isMissing(className)) {
|
|
1053
1055
|
return ` ${state}`;
|
|
1054
1056
|
} else if (className) {
|
|
@@ -1081,10 +1083,9 @@ class _LinkTo extends InternalComponent {
|
|
|
1081
1083
|
return currentWhen;
|
|
1082
1084
|
} else if (typeof currentWhen === 'string') {
|
|
1083
1085
|
let {
|
|
1084
|
-
models,
|
|
1085
1086
|
routing
|
|
1086
1087
|
} = this;
|
|
1087
|
-
return currentWhen.split(' ').some(route => routing.isActiveForRoute(
|
|
1088
|
+
return currentWhen.split(' ').some(route => routing.isActiveForRoute([], undefined, this.namespaceRoute(route), state));
|
|
1088
1089
|
} else {
|
|
1089
1090
|
let {
|
|
1090
1091
|
route,
|
|
@@ -1092,7 +1093,7 @@ class _LinkTo extends InternalComponent {
|
|
|
1092
1093
|
query,
|
|
1093
1094
|
routing
|
|
1094
1095
|
} = this;
|
|
1095
|
-
(
|
|
1096
|
+
(!(isPresent(route)) && assert('[BUG] route can only be missing if isLoading is true', isPresent(route)));
|
|
1096
1097
|
return routing.isActiveForRoute(models, query, route, state);
|
|
1097
1098
|
}
|
|
1098
1099
|
}
|
|
@@ -1123,7 +1124,7 @@ let descriptorFor = (target, property) => {
|
|
|
1123
1124
|
enumerable: false,
|
|
1124
1125
|
value: function onUnsupportedArgument(name) {
|
|
1125
1126
|
if (name === 'href') {
|
|
1126
|
-
(
|
|
1127
|
+
(assert(`Passing the \`@href\` argument to <LinkTo> is not supported.`));
|
|
1127
1128
|
} else {
|
|
1128
1129
|
superOnUnsupportedArgument.call(this, name);
|
|
1129
1130
|
}
|
|
@@ -1134,7 +1135,7 @@ let descriptorFor = (target, property) => {
|
|
|
1134
1135
|
// QP
|
|
1135
1136
|
{
|
|
1136
1137
|
let superModelsDescriptor = descriptorFor(prototype, 'models');
|
|
1137
|
-
(
|
|
1138
|
+
(!(superModelsDescriptor && typeof superModelsDescriptor.get === 'function') && assert(`[BUG] expecting models to be a getter on <LinkTo>`, superModelsDescriptor && typeof superModelsDescriptor.get === 'function')); // eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
1138
1139
|
let superModelsGetter = superModelsDescriptor.get;
|
|
1139
1140
|
Object.defineProperty(prototype, 'models', {
|
|
1140
1141
|
configurable: true,
|
|
@@ -1151,7 +1152,7 @@ let descriptorFor = (target, property) => {
|
|
|
1151
1152
|
}
|
|
1152
1153
|
});
|
|
1153
1154
|
let superQueryDescriptor = descriptorFor(prototype, 'query');
|
|
1154
|
-
(
|
|
1155
|
+
(!(superQueryDescriptor && typeof superQueryDescriptor.get === 'function') && assert(`[BUG] expecting query to be a getter on <LinkTo>`, superQueryDescriptor && typeof superQueryDescriptor.get === 'function')); // eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
1155
1156
|
let superQueryGetter = superQueryDescriptor.get;
|
|
1156
1157
|
Object.defineProperty(prototype, 'query', {
|
|
1157
1158
|
configurable: true,
|
|
@@ -1216,7 +1217,9 @@ const TextareaTemplate = templateFactory(
|
|
|
1216
1217
|
"id": null,
|
|
1217
1218
|
"block": "[[[11,\"textarea\"],[16,1,[30,0,[\"id\"]]],[16,0,[30,0,[\"class\"]]],[17,1],[16,2,[30,0,[\"value\"]]],[4,[32,0],[\"change\",[30,0,[\"change\"]]],null],[4,[32,0],[\"input\",[30,0,[\"input\"]]],null],[4,[32,0],[\"keyup\",[30,0,[\"keyUp\"]]],null],[4,[32,0],[\"paste\",[30,0,[\"valueDidChange\"]]],null],[4,[32,0],[\"cut\",[30,0,[\"valueDidChange\"]]],null],[12],[13]],[\"&attrs\"],[]]",
|
|
1218
1219
|
"moduleName": "packages/@ember/-internals/glimmer/lib/templates/textarea.hbs",
|
|
1219
|
-
"scope": () =>
|
|
1220
|
+
"scope": () => ({
|
|
1221
|
+
on
|
|
1222
|
+
}),
|
|
1220
1223
|
"isStrictMode": true
|
|
1221
1224
|
});
|
|
1222
1225
|
|
|
@@ -1282,12 +1285,12 @@ function referenceForParts(rootRef, parts) {
|
|
|
1282
1285
|
function parseAttributeBinding(microsyntax) {
|
|
1283
1286
|
let colonIndex = microsyntax.indexOf(':');
|
|
1284
1287
|
if (colonIndex === -1) {
|
|
1285
|
-
(
|
|
1288
|
+
(!(microsyntax !== 'class') && assert('You cannot use class as an attributeBinding, use classNameBindings instead.', microsyntax !== 'class'));
|
|
1286
1289
|
return [microsyntax, microsyntax, true];
|
|
1287
1290
|
} else {
|
|
1288
1291
|
let prop = microsyntax.substring(0, colonIndex);
|
|
1289
1292
|
let attribute = microsyntax.substring(colonIndex + 1);
|
|
1290
|
-
(
|
|
1293
|
+
(!(attribute !== 'class') && assert('You cannot use class as an attributeBinding, use classNameBindings instead.', attribute !== 'class'));
|
|
1291
1294
|
return [prop, attribute, false];
|
|
1292
1295
|
}
|
|
1293
1296
|
}
|
|
@@ -1306,14 +1309,14 @@ function installAttributeBinding(component, rootRef, parsed, operations) {
|
|
|
1306
1309
|
}
|
|
1307
1310
|
let isPath = prop.indexOf('.') > -1;
|
|
1308
1311
|
let reference = isPath ? referenceForParts(rootRef, prop.split('.')) : childRefFor(rootRef, prop);
|
|
1309
|
-
(
|
|
1312
|
+
(!(!(isSimple && isPath)) && assert(`Illegal attributeBinding: '${prop}' is not a valid attribute name.`, !(isSimple && isPath)));
|
|
1310
1313
|
operations.setAttribute(attribute, reference, false, null);
|
|
1311
1314
|
}
|
|
1312
1315
|
function createClassNameBindingRef(rootRef, microsyntax, operations) {
|
|
1313
1316
|
let parts = microsyntax.split(':');
|
|
1314
1317
|
let [prop, truthy, falsy] = parts;
|
|
1315
1318
|
// NOTE: This could be an empty string
|
|
1316
|
-
(
|
|
1319
|
+
(!(prop !== undefined) && assert('has prop', prop !== undefined)); // Will always have at least one part
|
|
1317
1320
|
let isStatic = prop === '';
|
|
1318
1321
|
if (isStatic) {
|
|
1319
1322
|
operations.setAttribute('class', createPrimitiveRef(truthy), true, null);
|
|
@@ -1335,7 +1338,7 @@ function createSimpleClassNameBindingRef(inner, path) {
|
|
|
1335
1338
|
return createComputeRef(() => {
|
|
1336
1339
|
let value = valueForRef(inner);
|
|
1337
1340
|
if (value === true) {
|
|
1338
|
-
(
|
|
1341
|
+
(!(path !== undefined) && assert('You must pass a path when binding a to a class name using classNameBindings', path !== undefined));
|
|
1339
1342
|
return dasherizedPath || (dasherizedPath = dasherize(path));
|
|
1340
1343
|
} else if (value || value === 0) {
|
|
1341
1344
|
return String(value);
|
|
@@ -1406,12 +1409,15 @@ class ComponentStateBucket {
|
|
|
1406
1409
|
}
|
|
1407
1410
|
}
|
|
1408
1411
|
|
|
1412
|
+
// ComponentArgs takes EvaluatedNamedArgs and converts them into the
|
|
1413
|
+
// inputs needed by CurlyComponents (attrs and props, with mutable
|
|
1414
|
+
// cells, etc).
|
|
1409
1415
|
function processComponentArgs(namedArgs) {
|
|
1410
1416
|
let attrs = Object.create(null);
|
|
1411
1417
|
let props = Object.create(null);
|
|
1412
1418
|
for (let name in namedArgs) {
|
|
1413
1419
|
let ref = namedArgs[name];
|
|
1414
|
-
(
|
|
1420
|
+
(!(ref) && assert('expected ref', ref));
|
|
1415
1421
|
let value = valueForRef(ref);
|
|
1416
1422
|
if (isUpdatableRef(ref)) {
|
|
1417
1423
|
attrs[name] = new MutableCell(ref, value);
|
|
@@ -1438,15 +1444,17 @@ class MutableCell {
|
|
|
1438
1444
|
}
|
|
1439
1445
|
}
|
|
1440
1446
|
|
|
1441
|
-
const
|
|
1442
|
-
|
|
1447
|
+
const COMPONENT_ARGS_MAP = new WeakMap();
|
|
1448
|
+
function getComponentCapturedArgs(component) {
|
|
1449
|
+
return COMPONENT_ARGS_MAP.get(component);
|
|
1450
|
+
}
|
|
1443
1451
|
const DIRTY_TAG = Symbol('DIRTY_TAG');
|
|
1444
1452
|
const IS_DISPATCHING_ATTRS = Symbol('IS_DISPATCHING_ATTRS');
|
|
1445
1453
|
const BOUNDS = Symbol('BOUNDS');
|
|
1446
1454
|
const EMBER_VIEW_REF = createPrimitiveRef('ember-view');
|
|
1447
1455
|
function aliasIdToElementId(args, props) {
|
|
1448
1456
|
if (args.named.has('id')) {
|
|
1449
|
-
(
|
|
1457
|
+
(!(!args.named.has('elementId')) && assert(`You cannot invoke a component with both 'id' and 'elementId' at the same time.`, !args.named.has('elementId')));
|
|
1450
1458
|
props.elementId = props.id;
|
|
1451
1459
|
}
|
|
1452
1460
|
}
|
|
@@ -1459,7 +1467,7 @@ function applyAttributeBindings(attributeBindings, component, rootRef, operation
|
|
|
1459
1467
|
let i = attributeBindings.length - 1;
|
|
1460
1468
|
while (i !== -1) {
|
|
1461
1469
|
let binding = attributeBindings[i];
|
|
1462
|
-
(
|
|
1470
|
+
(!(binding) && assert('has binding', binding));
|
|
1463
1471
|
let parsed = parseAttributeBinding(binding);
|
|
1464
1472
|
let attribute = parsed[1];
|
|
1465
1473
|
if (seen.indexOf(attribute) === -1) {
|
|
@@ -1482,12 +1490,12 @@ class CurlyComponentManager {
|
|
|
1482
1490
|
layoutName
|
|
1483
1491
|
} = component;
|
|
1484
1492
|
let owner = getOwner(component);
|
|
1485
|
-
(
|
|
1493
|
+
(!(owner) && assert('Component is unexpectedly missing an owner', owner));
|
|
1486
1494
|
let factory;
|
|
1487
1495
|
if (layout === undefined) {
|
|
1488
1496
|
if (layoutName !== undefined) {
|
|
1489
1497
|
let _factory = owner.lookup(`template:${layoutName}`);
|
|
1490
|
-
(
|
|
1498
|
+
(!(_factory !== undefined) && assert(`Layout \`${layoutName}\` not found!`, _factory !== undefined));
|
|
1491
1499
|
factory = _factory;
|
|
1492
1500
|
} else {
|
|
1493
1501
|
return null;
|
|
@@ -1518,12 +1526,12 @@ class CurlyComponentManager {
|
|
|
1518
1526
|
}
|
|
1519
1527
|
prepareArgs(ComponentClass, args) {
|
|
1520
1528
|
if (args.named.has('__ARGS__')) {
|
|
1521
|
-
(
|
|
1529
|
+
(!(args.positional.length === 0) && assert('[BUG] cannot pass both __ARGS__ and positional arguments', args.positional.length === 0));
|
|
1522
1530
|
let {
|
|
1523
1531
|
__ARGS__,
|
|
1524
1532
|
...rest
|
|
1525
1533
|
} = args.named.capture();
|
|
1526
|
-
(
|
|
1534
|
+
(!(__ARGS__) && assert('[BUG] unexpectedly missing __ARGS__ after check', __ARGS__)); // does this need to be untracked?
|
|
1527
1535
|
let __args__ = valueForRef(__ARGS__);
|
|
1528
1536
|
let prepared = {
|
|
1529
1537
|
positional: __args__.positional,
|
|
@@ -1544,7 +1552,7 @@ class CurlyComponentManager {
|
|
|
1544
1552
|
}
|
|
1545
1553
|
let named;
|
|
1546
1554
|
if (typeof positionalParams === 'string') {
|
|
1547
|
-
(
|
|
1555
|
+
(!(!args.named.has(positionalParams)) && assert(`You cannot specify positional parameters and the hash argument \`${positionalParams}\`.`, !args.named.has(positionalParams)));
|
|
1548
1556
|
let captured = args.positional.capture();
|
|
1549
1557
|
named = {
|
|
1550
1558
|
[positionalParams]: createComputeRef(() => reifyPositional(captured))
|
|
@@ -1556,8 +1564,8 @@ class CurlyComponentManager {
|
|
|
1556
1564
|
Object.assign(named, args.named.capture());
|
|
1557
1565
|
for (let i = 0; i < count; i++) {
|
|
1558
1566
|
let name = positionalParams[i];
|
|
1559
|
-
(
|
|
1560
|
-
(
|
|
1567
|
+
(!(name) && assert('Expected at least one positional param', name));
|
|
1568
|
+
(!(!args.named.has(name)) && assert(`You cannot specify both a positional param (at position ${i}) and the hash argument \`${name}\`.`, !args.named.has(name)));
|
|
1561
1569
|
named[name] = args.positional.at(i);
|
|
1562
1570
|
}
|
|
1563
1571
|
} else {
|
|
@@ -1577,7 +1585,7 @@ class CurlyComponentManager {
|
|
|
1577
1585
|
*/
|
|
1578
1586
|
create(owner, ComponentClass, args, {
|
|
1579
1587
|
isInteractive
|
|
1580
|
-
}, dynamicScope, callerSelfRef
|
|
1588
|
+
}, dynamicScope, callerSelfRef) {
|
|
1581
1589
|
// Get the nearest concrete component instance from the scope. "Virtual"
|
|
1582
1590
|
// components will be skipped.
|
|
1583
1591
|
let parentView = dynamicScope.view;
|
|
@@ -1587,7 +1595,6 @@ class CurlyComponentManager {
|
|
|
1587
1595
|
let capturedArgs = args.named.capture();
|
|
1588
1596
|
beginTrackFrame();
|
|
1589
1597
|
let props = processComponentArgs(capturedArgs);
|
|
1590
|
-
props[ARGS] = capturedArgs;
|
|
1591
1598
|
let argsTag = endTrackFrame();
|
|
1592
1599
|
|
|
1593
1600
|
// Alias `id` argument to `elementId` property on the component instance.
|
|
@@ -1597,11 +1604,6 @@ class CurlyComponentManager {
|
|
|
1597
1604
|
// component.
|
|
1598
1605
|
props.parentView = parentView;
|
|
1599
1606
|
|
|
1600
|
-
// Set whether this component was invoked with a block
|
|
1601
|
-
// (`{{#my-component}}{{/my-component}}`) or without one
|
|
1602
|
-
// (`{{my-component}}`).
|
|
1603
|
-
props[HAS_BLOCK] = hasBlock;
|
|
1604
|
-
|
|
1605
1607
|
// Save the current `this` context of the template as the component's
|
|
1606
1608
|
// `_target`, so bubbled actions are routed to the right place.
|
|
1607
1609
|
props._target = valueForRef(callerSelfRef);
|
|
@@ -1617,6 +1619,10 @@ class CurlyComponentManager {
|
|
|
1617
1619
|
// actually create it.
|
|
1618
1620
|
beginUntrackFrame();
|
|
1619
1621
|
let component = ComponentClass.create(props);
|
|
1622
|
+
|
|
1623
|
+
// Store capturedArgs in a WeakMap keyed by the component instance so that
|
|
1624
|
+
// PROPERTY_DID_CHANGE can look them up
|
|
1625
|
+
COMPONENT_ARGS_MAP.set(component, capturedArgs);
|
|
1620
1626
|
let finalizer = _instrumentStart('render.component', initialRenderInstrumentDetails, component);
|
|
1621
1627
|
|
|
1622
1628
|
// We become the new parentView for downstream components, so save our
|
|
@@ -1648,7 +1654,7 @@ class CurlyComponentManager {
|
|
|
1648
1654
|
if (args.named.has('class')) {
|
|
1649
1655
|
bucket.classRef = args.named.get('class');
|
|
1650
1656
|
}
|
|
1651
|
-
|
|
1657
|
+
{
|
|
1652
1658
|
processComponentInitializationAssertions(component, props);
|
|
1653
1659
|
}
|
|
1654
1660
|
if (isInteractive && hasWrappedElement) {
|
|
@@ -1773,7 +1779,7 @@ class CurlyComponentManager {
|
|
|
1773
1779
|
}
|
|
1774
1780
|
}
|
|
1775
1781
|
function processComponentInitializationAssertions(component, props) {
|
|
1776
|
-
(
|
|
1782
|
+
(!((() => {
|
|
1777
1783
|
let {
|
|
1778
1784
|
classNameBindings
|
|
1779
1785
|
} = component;
|
|
@@ -1796,7 +1802,7 @@ function processComponentInitializationAssertions(component, props) {
|
|
|
1796
1802
|
}
|
|
1797
1803
|
return true;
|
|
1798
1804
|
})()));
|
|
1799
|
-
(
|
|
1805
|
+
(!((() => {
|
|
1800
1806
|
let {
|
|
1801
1807
|
classNameBindings
|
|
1802
1808
|
} = component;
|
|
@@ -1817,9 +1823,9 @@ function processComponentInitializationAssertions(component, props) {
|
|
|
1817
1823
|
}
|
|
1818
1824
|
return true;
|
|
1819
1825
|
})()));
|
|
1820
|
-
(
|
|
1821
|
-
(
|
|
1822
|
-
(
|
|
1826
|
+
(!(component.tagName !== '' || !component.classNameBindings || component.classNameBindings.length === 0) && assert(`You cannot use \`classNameBindings\` on a tag-less component: ${component}`, component.tagName !== '' || !component.classNameBindings || component.classNameBindings.length === 0));
|
|
1827
|
+
(!(component.tagName !== '' || props.id === component.elementId || !component.elementId && component.elementId !== '') && assert(`You cannot use \`elementId\` on a tag-less component: ${component}`, component.tagName !== '' || props.id === component.elementId || !component.elementId && component.elementId !== ''));
|
|
1828
|
+
(!(component.tagName !== '' || !component.attributeBindings || component.attributeBindings.length === 0) && assert(`You cannot use \`attributeBindings\` on a tag-less component: ${component}`, component.tagName !== '' || !component.attributeBindings || component.attributeBindings.length === 0));
|
|
1823
1829
|
}
|
|
1824
1830
|
function initialRenderInstrumentDetails(component) {
|
|
1825
1831
|
return component.instrumentDetails({
|
|
@@ -1864,7 +1870,7 @@ const EMPTY_ARRAY = Object.freeze([]);
|
|
|
1864
1870
|
*/
|
|
1865
1871
|
const elMatches = typeof Element !== 'undefined' ? Element.prototype.matches : undefined;
|
|
1866
1872
|
function matches(el, selector) {
|
|
1867
|
-
(
|
|
1873
|
+
(!(elMatches !== undefined) && assert('cannot call `matches` in fastboot mode', elMatches !== undefined));
|
|
1868
1874
|
return elMatches.call(el, selector);
|
|
1869
1875
|
}
|
|
1870
1876
|
|
|
@@ -2572,7 +2578,7 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
|
|
|
2572
2578
|
lazyEventsProcessedForComponentClass.add(proto);
|
|
2573
2579
|
}
|
|
2574
2580
|
}
|
|
2575
|
-
if (
|
|
2581
|
+
if (eventDispatcher && this.renderer._isInteractive && this.tagName === '') {
|
|
2576
2582
|
let eventNames = [];
|
|
2577
2583
|
let events = eventDispatcher.finalEventNameMapping;
|
|
2578
2584
|
for (let key in events) {
|
|
@@ -2582,16 +2588,16 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
|
|
|
2582
2588
|
}
|
|
2583
2589
|
}
|
|
2584
2590
|
// If in a tagless component, assert that no event handlers are defined
|
|
2585
|
-
(
|
|
2591
|
+
(!(!eventNames.length) && assert(`You can not define \`${eventNames}\` function(s) to handle DOM event in the \`${this}\` tagless component since it doesn't have any DOM element.`, !eventNames.length));
|
|
2586
2592
|
}
|
|
2587
|
-
(
|
|
2588
|
-
(
|
|
2593
|
+
(!(descriptorForProperty(this, 'classNameBindings') === undefined && Array.isArray(this.classNameBindings)) && assert(`Only arrays are allowed for 'classNameBindings'`, descriptorForProperty(this, 'classNameBindings') === undefined && Array.isArray(this.classNameBindings)));
|
|
2594
|
+
(!(descriptorForProperty(this, 'classNames') === undefined && Array.isArray(this.classNames)) && assert(`Only arrays of static class strings are allowed for 'classNames'. For dynamic classes, use 'classNameBindings'.`, descriptorForProperty(this, 'classNames') === undefined && Array.isArray(this.classNames))); // ViewMixin
|
|
2589
2595
|
// Setup a view, but do not finish waking it up.
|
|
2590
2596
|
// * configure `childViews`
|
|
2591
2597
|
// * register the view with the global views hash, which is used for event
|
|
2592
2598
|
// dispatch
|
|
2593
|
-
(
|
|
2594
|
-
(
|
|
2599
|
+
(!(descriptorForProperty(this, 'elementId') === undefined) && assert(`You cannot use a computed property for the component's \`elementId\` (${this}).`, descriptorForProperty(this, 'elementId') === undefined));
|
|
2600
|
+
(!(descriptorForProperty(this, 'tagName') === undefined) && assert(`You cannot use a computed property for the component's \`tagName\` (${this}).`, descriptorForProperty(this, 'tagName') === undefined));
|
|
2595
2601
|
if (!this.elementId && this.tagName !== '') {
|
|
2596
2602
|
this.elementId = guidFor(this);
|
|
2597
2603
|
}
|
|
@@ -2600,10 +2606,10 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
|
|
|
2600
2606
|
get _dispatcher() {
|
|
2601
2607
|
if (this.__dispatcher === undefined) {
|
|
2602
2608
|
let owner = getOwner(this);
|
|
2603
|
-
(
|
|
2609
|
+
(!(owner) && assert('Component is unexpectedly missing an owner', owner));
|
|
2604
2610
|
if (owner.lookup('-environment:main').isInteractive) {
|
|
2605
2611
|
let dispatcher = owner.lookup('event_dispatcher:main');
|
|
2606
|
-
(
|
|
2612
|
+
(!(dispatcher instanceof EventDispatcher) && assert('Expected dispatcher to be an EventDispatcher', dispatcher instanceof EventDispatcher));
|
|
2607
2613
|
this.__dispatcher = dispatcher;
|
|
2608
2614
|
} else {
|
|
2609
2615
|
// In FastBoot we have no EventDispatcher. Set to null to not try again to look it up.
|
|
@@ -2629,7 +2635,7 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
|
|
|
2629
2635
|
if (this[IS_DISPATCHING_ATTRS]) {
|
|
2630
2636
|
return;
|
|
2631
2637
|
}
|
|
2632
|
-
let args = this
|
|
2638
|
+
let args = getComponentCapturedArgs(this);
|
|
2633
2639
|
let reference = args !== undefined ? args[key] : undefined;
|
|
2634
2640
|
if (reference !== undefined && isUpdatableRef(reference)) {
|
|
2635
2641
|
updateRef(reference, arguments.length === 2 ? value : get(this, key));
|
|
@@ -2669,7 +2675,7 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
|
|
|
2669
2675
|
readDOMAttr(name) {
|
|
2670
2676
|
// TODO revisit this
|
|
2671
2677
|
let _element = getViewElement(this);
|
|
2672
|
-
(
|
|
2678
|
+
(!(_element !== null) && assert(`Cannot call \`readDOMAttr\` on ${this} which does not have an element`, _element !== null));
|
|
2673
2679
|
let element = _element;
|
|
2674
2680
|
let isSVG = element.namespaceURI === 'http://www.w3.org/2000/svg';
|
|
2675
2681
|
let {
|
|
@@ -2972,11 +2978,11 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
|
|
|
2972
2978
|
appendTo(selector) {
|
|
2973
2979
|
let target;
|
|
2974
2980
|
if (hasDOM) {
|
|
2975
|
-
(
|
|
2981
|
+
(!(typeof selector === 'string' || selector instanceof Element) && assert(`Expected a selector or instance of Element`, typeof selector === 'string' || selector instanceof Element));
|
|
2976
2982
|
target = typeof selector === 'string' ? document.querySelector(selector) : selector;
|
|
2977
|
-
(
|
|
2978
|
-
(
|
|
2979
|
-
(
|
|
2983
|
+
(!(target) && assert(`You tried to append to (${selector}) but that isn't in the DOM`, target));
|
|
2984
|
+
(!(!matches(target, '.ember-view')) && assert('You cannot append to an existing Ember.View.', !matches(target, '.ember-view')));
|
|
2985
|
+
(!((() => {
|
|
2980
2986
|
let node = target.parentNode;
|
|
2981
2987
|
while (node instanceof Element) {
|
|
2982
2988
|
if (matches(node, '.ember-view')) {
|
|
@@ -2997,8 +3003,8 @@ class Component extends CoreView.extend(TargetActionSupport, ActionSupport, {
|
|
|
2997
3003
|
})()));
|
|
2998
3004
|
} else {
|
|
2999
3005
|
target = selector;
|
|
3000
|
-
(
|
|
3001
|
-
(
|
|
3006
|
+
(!(typeof target !== 'string') && assert(`You tried to append to a selector string (${selector}) in an environment without a DOM`, typeof target !== 'string'));
|
|
3007
|
+
(!(typeof target.appendChild === 'function') && assert(`You tried to append to a non-Element (${selector}) in an environment without a DOM`, typeof target.appendChild === 'function'));
|
|
3002
3008
|
}
|
|
3003
3009
|
|
|
3004
3010
|
// SAFETY: SimpleElement is supposed to be a subset of Element so this _should_ be safe.
|
|
@@ -3266,27 +3272,33 @@ class Helper extends FrameworkObject {
|
|
|
3266
3272
|
init(properties) {
|
|
3267
3273
|
super.init(properties);
|
|
3268
3274
|
this[RECOMPUTE_TAG] = createTag();
|
|
3269
|
-
(
|
|
3275
|
+
(!(this.compute) && assert('expected compute to be defined', this.compute));
|
|
3270
3276
|
}
|
|
3271
3277
|
|
|
3272
3278
|
/**
|
|
3273
3279
|
On a class-based helper, it may be useful to force a recomputation of that
|
|
3274
3280
|
helpers value. This is akin to `rerender` on a component.
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3283
|
-
|
|
3284
|
-
this.recompute();
|
|
3285
|
-
}),
|
|
3281
|
+
In most cases, `recompute` is not needed because accessing tracked
|
|
3282
|
+
properties in `compute` will automatically re-run the helper when
|
|
3283
|
+
those properties change. Use `recompute` only when you need to
|
|
3284
|
+
trigger a recomputation imperatively, for example in response to an
|
|
3285
|
+
external event:
|
|
3286
|
+
```app/helpers/current-time.js
|
|
3287
|
+
import Helper from '@ember/component/helper';
|
|
3288
|
+
export default class CurrentTimeHelper extends Helper {
|
|
3289
|
+
interval = null;
|
|
3286
3290
|
compute() {
|
|
3287
|
-
return
|
|
3291
|
+
return new Date().toLocaleTimeString();
|
|
3288
3292
|
}
|
|
3289
|
-
|
|
3293
|
+
constructor() {
|
|
3294
|
+
super(...arguments);
|
|
3295
|
+
this.interval = setInterval(() => this.recompute(), 1000);
|
|
3296
|
+
}
|
|
3297
|
+
willDestroy() {
|
|
3298
|
+
super.willDestroy();
|
|
3299
|
+
clearInterval(this.interval);
|
|
3300
|
+
}
|
|
3301
|
+
}
|
|
3290
3302
|
```
|
|
3291
3303
|
@method recompute
|
|
3292
3304
|
@public
|
|
@@ -3314,7 +3326,7 @@ class ClassicHelperManager {
|
|
|
3314
3326
|
}
|
|
3315
3327
|
createHelper(definition, args) {
|
|
3316
3328
|
let instance = isFactoryManager(definition) ? definition.create() : definition.create(this.ownerInjection);
|
|
3317
|
-
(
|
|
3329
|
+
(!(function (instance) {
|
|
3318
3330
|
if (instance !== null && typeof instance === 'object') {
|
|
3319
3331
|
let cast = instance;
|
|
3320
3332
|
return typeof cast.compute === 'function' && typeof cast.destroy === 'function';
|
|
@@ -3738,7 +3750,7 @@ class OutletComponentManager {
|
|
|
3738
3750
|
let currentState = valueForRef(currentStateRef);
|
|
3739
3751
|
let currentOwner = currentState?.render?.owner;
|
|
3740
3752
|
if (parentOwner && parentOwner !== currentOwner) {
|
|
3741
|
-
(
|
|
3753
|
+
(!(currentOwner instanceof EngineInstance) && assert('Expected currentOwner to be an EngineInstance', currentOwner instanceof EngineInstance));
|
|
3742
3754
|
let {
|
|
3743
3755
|
mountPoint
|
|
3744
3756
|
} = currentOwner;
|
|
@@ -3804,7 +3816,7 @@ const OUTLET_COMPONENT_TEMPLATE = templateFactory(
|
|
|
3804
3816
|
{
|
|
3805
3817
|
"id": null,
|
|
3806
3818
|
"block": "[[[8,[30,1],null,[[\"@controller\",\"@model\"],[[30,2],[30,3]]],null]],[\"@Component\",\"@controller\",\"@model\"],[]]",
|
|
3807
|
-
"moduleName": "
|
|
3819
|
+
"moduleName": "(unknown template module)",
|
|
3808
3820
|
"isStrictMode": true
|
|
3809
3821
|
});
|
|
3810
3822
|
class OutletComponent {
|
|
@@ -3847,7 +3859,7 @@ class RootComponentManager extends CurlyComponentManager {
|
|
|
3847
3859
|
component.trigger('willInsertElement');
|
|
3848
3860
|
}
|
|
3849
3861
|
}
|
|
3850
|
-
|
|
3862
|
+
{
|
|
3851
3863
|
processComponentInitializationAssertions(component, {});
|
|
3852
3864
|
}
|
|
3853
3865
|
let bucket = new ComponentStateBucket(component, null, CONSTANT_TAG, finalizer, hasWrappedElement, isInteractive);
|
|
@@ -3884,7 +3896,7 @@ class RootComponentDefinition {
|
|
|
3884
3896
|
constructor(component) {
|
|
3885
3897
|
this.manager = new RootComponentManager(component);
|
|
3886
3898
|
let factory = getFactoryFor(component);
|
|
3887
|
-
(
|
|
3899
|
+
(!(factory !== undefined) && assert('missing factory for component', factory !== undefined));
|
|
3888
3900
|
this.state = factory;
|
|
3889
3901
|
}
|
|
3890
3902
|
}
|
|
@@ -3896,6 +3908,160 @@ function internalHelper(helper) {
|
|
|
3896
3908
|
/**
|
|
3897
3909
|
@module ember
|
|
3898
3910
|
*/
|
|
3911
|
+
|
|
3912
|
+
/**
|
|
3913
|
+
The `{{#each}}` helper loops over elements in a collection. It is an extension
|
|
3914
|
+
of the base Handlebars `{{#each}}` helper.
|
|
3915
|
+
|
|
3916
|
+
The default behavior of `{{#each}}` is to yield its inner block once for every
|
|
3917
|
+
item in an array passing the item as the first block parameter.
|
|
3918
|
+
|
|
3919
|
+
Assuming the `@developers` argument contains this array:
|
|
3920
|
+
|
|
3921
|
+
```javascript
|
|
3922
|
+
[{ name: 'Yehuda' },{ name: 'Tom' }, { name: 'Paul' }];
|
|
3923
|
+
```
|
|
3924
|
+
|
|
3925
|
+
```handlebars
|
|
3926
|
+
<ul>
|
|
3927
|
+
{{#each @developers as |person|}}
|
|
3928
|
+
<li>Hello, {{person.name}}!</li>
|
|
3929
|
+
{{/each}}
|
|
3930
|
+
</ul>
|
|
3931
|
+
```
|
|
3932
|
+
|
|
3933
|
+
The same rules apply to arrays of primitives.
|
|
3934
|
+
|
|
3935
|
+
```javascript
|
|
3936
|
+
['Yehuda', 'Tom', 'Paul']
|
|
3937
|
+
```
|
|
3938
|
+
|
|
3939
|
+
```handlebars
|
|
3940
|
+
<ul>
|
|
3941
|
+
{{#each @developerNames as |name|}}
|
|
3942
|
+
<li>Hello, {{name}}!</li>
|
|
3943
|
+
{{/each}}
|
|
3944
|
+
</ul>
|
|
3945
|
+
```
|
|
3946
|
+
|
|
3947
|
+
During iteration, the index of each item in the array is provided as a second block
|
|
3948
|
+
parameter.
|
|
3949
|
+
|
|
3950
|
+
```handlebars
|
|
3951
|
+
<ul>
|
|
3952
|
+
{{#each @developers as |person index|}}
|
|
3953
|
+
<li>Hello, {{person.name}}! You're number {{index}} in line</li>
|
|
3954
|
+
{{/each}}
|
|
3955
|
+
</ul>
|
|
3956
|
+
```
|
|
3957
|
+
|
|
3958
|
+
### Specifying Keys
|
|
3959
|
+
|
|
3960
|
+
In order to improve rendering speed, Ember will try to reuse the DOM elements
|
|
3961
|
+
where possible. Specifically, if the same item is present in the array both
|
|
3962
|
+
before and after the change, its DOM output will be reused.
|
|
3963
|
+
|
|
3964
|
+
The `key` option is used to tell Ember how to determine if the items in the
|
|
3965
|
+
array being iterated over with `{{#each}}` has changed between renders. By
|
|
3966
|
+
default the item's object identity is used.
|
|
3967
|
+
|
|
3968
|
+
This is usually sufficient, so in most cases, the `key` option is simply not
|
|
3969
|
+
needed. However, in some rare cases, the objects' identities may change even
|
|
3970
|
+
though they represent the same underlying data.
|
|
3971
|
+
|
|
3972
|
+
For example:
|
|
3973
|
+
|
|
3974
|
+
```javascript
|
|
3975
|
+
people.map(person => {
|
|
3976
|
+
return { ...person, type: 'developer' };
|
|
3977
|
+
});
|
|
3978
|
+
```
|
|
3979
|
+
|
|
3980
|
+
In this case, each time the `people` array is `map`-ed over, it will produce
|
|
3981
|
+
an new array with completely different objects between renders. In these cases,
|
|
3982
|
+
you can help Ember determine how these objects related to each other with the
|
|
3983
|
+
`key` option:
|
|
3984
|
+
|
|
3985
|
+
```handlebars
|
|
3986
|
+
<ul>
|
|
3987
|
+
{{#each @developers key="name" as |person|}}
|
|
3988
|
+
<li>Hello, {{person.name}}!</li>
|
|
3989
|
+
{{/each}}
|
|
3990
|
+
</ul>
|
|
3991
|
+
```
|
|
3992
|
+
|
|
3993
|
+
By doing so, Ember will use the value of the property specified (`person.name`
|
|
3994
|
+
in the example) to find a "match" from the previous render. That is, if Ember
|
|
3995
|
+
has previously seen an object from the `@developers` array with a matching
|
|
3996
|
+
name, its DOM elements will be re-used.
|
|
3997
|
+
|
|
3998
|
+
There are two special values for `key`:
|
|
3999
|
+
|
|
4000
|
+
* `@index` - The index of the item in the array.
|
|
4001
|
+
* `@identity` - The item in the array itself.
|
|
4002
|
+
|
|
4003
|
+
### {{else}} condition
|
|
4004
|
+
|
|
4005
|
+
`{{#each}}` can have a matching `{{else}}`. The contents of this block will render
|
|
4006
|
+
if the collection is empty.
|
|
4007
|
+
|
|
4008
|
+
```handlebars
|
|
4009
|
+
<ul>
|
|
4010
|
+
{{#each @developers as |person|}}
|
|
4011
|
+
<li>{{person.name}} is available!</li>
|
|
4012
|
+
{{else}}
|
|
4013
|
+
<li>Sorry, nobody is available for this task.</li>
|
|
4014
|
+
{{/each}}
|
|
4015
|
+
</ul>
|
|
4016
|
+
```
|
|
4017
|
+
|
|
4018
|
+
@method each
|
|
4019
|
+
@for Ember.Templates.helpers
|
|
4020
|
+
@public
|
|
4021
|
+
*/
|
|
4022
|
+
|
|
4023
|
+
/**
|
|
4024
|
+
The `{{each-in}}` helper loops over properties on an object.
|
|
4025
|
+
|
|
4026
|
+
For example, given this component definition:
|
|
4027
|
+
|
|
4028
|
+
```app/components/developer-details.js
|
|
4029
|
+
import Component from '@glimmer/component';
|
|
4030
|
+
import { tracked } from '@glimmer/tracking';
|
|
4031
|
+
|
|
4032
|
+
export default class extends Component {
|
|
4033
|
+
@tracked developer = {
|
|
4034
|
+
"name": "Shelly Sails",
|
|
4035
|
+
"age": 42
|
|
4036
|
+
};
|
|
4037
|
+
}
|
|
4038
|
+
```
|
|
4039
|
+
|
|
4040
|
+
This template would display all properties on the `developer`
|
|
4041
|
+
object in a list:
|
|
4042
|
+
|
|
4043
|
+
```app/components/developer-details.hbs
|
|
4044
|
+
<ul>
|
|
4045
|
+
{{#each-in this.developer as |key value|}}
|
|
4046
|
+
<li>{{key}}: {{value}}</li>
|
|
4047
|
+
{{/each-in}}
|
|
4048
|
+
</ul>
|
|
4049
|
+
```
|
|
4050
|
+
|
|
4051
|
+
Outputting their name and age:
|
|
4052
|
+
|
|
4053
|
+
```html
|
|
4054
|
+
<ul>
|
|
4055
|
+
<li>name: Shelly Sails</li>
|
|
4056
|
+
<li>age: 42</li>
|
|
4057
|
+
</ul>
|
|
4058
|
+
```
|
|
4059
|
+
|
|
4060
|
+
@method each-in
|
|
4061
|
+
@for Ember.Templates.helpers
|
|
4062
|
+
@public
|
|
4063
|
+
@since 2.1.0
|
|
4064
|
+
*/
|
|
3899
4065
|
class EachInWrapper {
|
|
3900
4066
|
constructor(inner) {
|
|
3901
4067
|
this.inner = inner;
|
|
@@ -3905,7 +4071,7 @@ const eachIn = internalHelper(({
|
|
|
3905
4071
|
positional
|
|
3906
4072
|
}) => {
|
|
3907
4073
|
const inner = positional[0];
|
|
3908
|
-
(
|
|
4074
|
+
(!(inner) && assert('expected at least one positional arg', inner));
|
|
3909
4075
|
return createComputeRef(() => {
|
|
3910
4076
|
let iterable = valueForRef(inner);
|
|
3911
4077
|
consumeTag(tagForObject(iterable));
|
|
@@ -4151,6 +4317,10 @@ function toBool(predicate) {
|
|
|
4151
4317
|
}
|
|
4152
4318
|
}
|
|
4153
4319
|
|
|
4320
|
+
///////////
|
|
4321
|
+
|
|
4322
|
+
// Setup global context
|
|
4323
|
+
|
|
4154
4324
|
setGlobalContext({
|
|
4155
4325
|
scheduleRevalidate() {
|
|
4156
4326
|
_backburner.ensureInstance();
|
|
@@ -4168,7 +4338,7 @@ setGlobalContext({
|
|
|
4168
4338
|
schedule('destroy', null, finalizeDestructor);
|
|
4169
4339
|
},
|
|
4170
4340
|
warnIfStyleNotTrusted(value) {
|
|
4171
|
-
(
|
|
4341
|
+
(warn(constructStyleDeprecationMessage(String(value)), (() => {
|
|
4172
4342
|
if (value === null || value === undefined || isHTMLSafe(value)) {
|
|
4173
4343
|
return true;
|
|
4174
4344
|
}
|
|
@@ -4178,14 +4348,14 @@ setGlobalContext({
|
|
|
4178
4348
|
}));
|
|
4179
4349
|
},
|
|
4180
4350
|
assert(test, msg, options) {
|
|
4181
|
-
|
|
4351
|
+
{
|
|
4182
4352
|
let id = options?.id;
|
|
4183
4353
|
let override = VM_ASSERTION_OVERRIDES.filter(o => o.id === id)[0];
|
|
4184
|
-
(
|
|
4354
|
+
(!(test) && assert(override?.message ?? msg, test));
|
|
4185
4355
|
}
|
|
4186
4356
|
},
|
|
4187
4357
|
deprecate(msg, test, options) {
|
|
4188
|
-
|
|
4358
|
+
{
|
|
4189
4359
|
let {
|
|
4190
4360
|
id
|
|
4191
4361
|
} = options;
|
|
@@ -4197,12 +4367,12 @@ setGlobalContext({
|
|
|
4197
4367
|
|
|
4198
4368
|
// allow deprecations to be disabled in the VM_DEPRECATION_OVERRIDES array below
|
|
4199
4369
|
if (!override.disabled) {
|
|
4200
|
-
(
|
|
4370
|
+
(!(Boolean(test)) && deprecate(override.message ?? msg, Boolean(test), override));
|
|
4201
4371
|
}
|
|
4202
4372
|
}
|
|
4203
4373
|
}
|
|
4204
4374
|
});
|
|
4205
|
-
|
|
4375
|
+
{
|
|
4206
4376
|
debug?.setTrackingTransactionEnv?.({
|
|
4207
4377
|
debugMessage(obj, keyName) {
|
|
4208
4378
|
let dirtyString = keyName ? `\`${keyName}\` on \`${getDebugName?.(obj)}\`` : `\`${getDebugName?.(obj)}\``;
|
|
@@ -4247,46 +4417,40 @@ const disallowDynamicResolution = internalHelper(({
|
|
|
4247
4417
|
named
|
|
4248
4418
|
}) => {
|
|
4249
4419
|
const nameOrValueRef = positional[0];
|
|
4250
|
-
(
|
|
4420
|
+
(!(positional.length === 1 && nameOrValueRef) && assert(`[BUG] wrong number of positional arguments, expecting 1, got ${positional.length}`, positional.length === 1 && nameOrValueRef));
|
|
4251
4421
|
let typeRef = named['type'];
|
|
4252
4422
|
let locRef = named['loc'];
|
|
4253
4423
|
let originalRef = named['original'];
|
|
4254
|
-
(
|
|
4255
|
-
(
|
|
4256
|
-
(
|
|
4424
|
+
(!(typeRef) && assert(`[BUG] expecting \`type\` named argument`, typeRef));
|
|
4425
|
+
(!(locRef) && assert(`[BUG] expecting \`loc\` named argument`, locRef));
|
|
4426
|
+
(!(originalRef) && assert(`[BUG] expecting \`original\` named argument`, originalRef)); // Bug: why do these fail?
|
|
4257
4427
|
// assert('[BUG] expecting a string literal for the `type` argument', isConstRef(typeRef));
|
|
4258
4428
|
// assert('[BUG] expecting a string literal for the `loc` argument', isConstRef(locRef));
|
|
4259
4429
|
// assert('[BUG] expecting a string literal for the `original` argument', isConstRef(originalRef));
|
|
4260
4430
|
const type = valueForRef(typeRef);
|
|
4261
4431
|
const loc = valueForRef(locRef);
|
|
4262
4432
|
const original = valueForRef(originalRef);
|
|
4263
|
-
(
|
|
4264
|
-
(
|
|
4265
|
-
(
|
|
4433
|
+
(!(typeof type === 'string') && assert('[BUG] expecting a string literal for the `type` argument', typeof type === 'string'));
|
|
4434
|
+
(!(typeof loc === 'string') && assert('[BUG] expecting a string literal for the `loc` argument', typeof loc === 'string'));
|
|
4435
|
+
(!(typeof original === 'string') && assert('[BUG] expecting a string literal for the `original` argument', typeof original === 'string'));
|
|
4266
4436
|
return createComputeRef(() => {
|
|
4267
4437
|
let nameOrValue = valueForRef(nameOrValueRef);
|
|
4268
|
-
(
|
|
4438
|
+
(!(typeof nameOrValue !== 'string') && assert(`Passing a dynamic string to the \`(${type})\` keyword is disallowed. ` + `(You specified \`(${type} ${original})\` and \`${original}\` evaluated into "${nameOrValue}".) ` + `This ensures we can statically analyze the template and determine which ${type}s are used. ` + `If the ${type} name is always the same, use a string literal instead, i.e. \`(${type} "${nameOrValue}")\`. ` + `Otherwise, import the ${type}s into JavaScript and pass them directly. ` + 'See https://github.com/emberjs/rfcs/blob/master/text/0496-handlebars-strict-mode.md#4-no-dynamic-resolution for details. ' + loc, typeof nameOrValue !== 'string'));
|
|
4269
4439
|
return nameOrValue;
|
|
4270
4440
|
});
|
|
4271
4441
|
});
|
|
4272
4442
|
|
|
4273
4443
|
let helper;
|
|
4274
|
-
|
|
4444
|
+
{
|
|
4275
4445
|
helper = args => {
|
|
4276
4446
|
const inner = args.positional[0];
|
|
4277
|
-
(
|
|
4447
|
+
(!(inner) && assert('expected at least one positional arg', inner));
|
|
4278
4448
|
return createComputeRef(() => {
|
|
4279
4449
|
let value = valueForRef(inner);
|
|
4280
|
-
(
|
|
4450
|
+
(!(value !== null && value !== undefined) && assert('You cannot pass a null or undefined destination element to in-element', value !== null && value !== undefined));
|
|
4281
4451
|
return value;
|
|
4282
4452
|
});
|
|
4283
4453
|
};
|
|
4284
|
-
} else {
|
|
4285
|
-
helper = args => {
|
|
4286
|
-
let arg = args.positional[0];
|
|
4287
|
-
(isDevelopingApp() && !(arg) && assert('expected at least one positional arg', arg));
|
|
4288
|
-
return arg;
|
|
4289
|
-
};
|
|
4290
4454
|
}
|
|
4291
4455
|
const inElementNullCheckHelper = internalHelper(helper);
|
|
4292
4456
|
|
|
@@ -4296,10 +4460,10 @@ const normalizeClassHelper = internalHelper(({
|
|
|
4296
4460
|
return createComputeRef(() => {
|
|
4297
4461
|
let classNameArg = positional[0];
|
|
4298
4462
|
let valueArg = positional[1];
|
|
4299
|
-
(
|
|
4463
|
+
(!(classNameArg && valueArg) && assert('expected at least two positional args', classNameArg && valueArg));
|
|
4300
4464
|
let classNameParts = valueForRef(classNameArg).split('.');
|
|
4301
4465
|
let className = classNameParts[classNameParts.length - 1];
|
|
4302
|
-
(
|
|
4466
|
+
(!(className) && assert('has className', className)); // Always at least one split result
|
|
4303
4467
|
let value = valueForRef(valueArg);
|
|
4304
4468
|
if (value === true) {
|
|
4305
4469
|
return dasherize(className);
|
|
@@ -4319,16 +4483,16 @@ const resolve = internalHelper(({
|
|
|
4319
4483
|
positional
|
|
4320
4484
|
}, owner) => {
|
|
4321
4485
|
// why is this allowed to be undefined in the first place?
|
|
4322
|
-
(
|
|
4323
|
-
(
|
|
4486
|
+
(!(owner) && assert('[BUG] missing owner', owner));
|
|
4487
|
+
(!(positional.length === 1) && assert(`[BUG] wrong number of positional arguments, expecting 1, got ${positional.length}`, positional.length === 1));
|
|
4324
4488
|
let fullNameRef = positional[0];
|
|
4325
|
-
(
|
|
4489
|
+
(!(fullNameRef && isConstRef(fullNameRef)) && assert('[BUG] expecting a string literal as argument', fullNameRef && isConstRef(fullNameRef)));
|
|
4326
4490
|
let fullName = valueForRef(fullNameRef);
|
|
4327
|
-
(
|
|
4328
|
-
(
|
|
4329
|
-
|
|
4491
|
+
(!(typeof fullName === 'string') && assert('[BUG] expecting a string literal as argument', typeof fullName === 'string'));
|
|
4492
|
+
(!((s => s.split(':').length === 2)(fullName)) && assert('[BUG] expecting a valid full name', (s => s.split(':').length === 2)(fullName)));
|
|
4493
|
+
{
|
|
4330
4494
|
let [type, name] = fullName.split(':');
|
|
4331
|
-
(
|
|
4495
|
+
(!(owner.hasRegistration(fullName)) && assert(`Attempted to invoke \`(-resolve "${fullName}")\`, but ${name} was not a valid ${type} name.`, owner.hasRegistration(fullName)));
|
|
4332
4496
|
}
|
|
4333
4497
|
return createConstRef(owner.factoryFor(fullName)?.class, `(-resolve "${fullName}")`);
|
|
4334
4498
|
});
|
|
@@ -4336,11 +4500,17 @@ const resolve = internalHelper(({
|
|
|
4336
4500
|
/**
|
|
4337
4501
|
@module ember
|
|
4338
4502
|
*/
|
|
4503
|
+
|
|
4504
|
+
/**
|
|
4505
|
+
This reference is used to get the `[]` tag of iterables, so we can trigger
|
|
4506
|
+
updates to `{{each}}` when it changes. It is put into place by a template
|
|
4507
|
+
transform at build time, similar to the (-each-in) helper
|
|
4508
|
+
*/
|
|
4339
4509
|
const trackArray = internalHelper(({
|
|
4340
4510
|
positional
|
|
4341
4511
|
}) => {
|
|
4342
4512
|
const inner = positional[0];
|
|
4343
|
-
(
|
|
4513
|
+
(!(inner) && assert('expected at least one positional arg', inner));
|
|
4344
4514
|
return createComputeRef(() => {
|
|
4345
4515
|
let iterable = valueForRef(inner);
|
|
4346
4516
|
if (isObject(iterable)) {
|
|
@@ -4353,11 +4523,86 @@ const trackArray = internalHelper(({
|
|
|
4353
4523
|
/**
|
|
4354
4524
|
@module ember
|
|
4355
4525
|
*/
|
|
4526
|
+
|
|
4527
|
+
/**
|
|
4528
|
+
The `mut` helper lets you __clearly specify__ that a child `Component` can update the
|
|
4529
|
+
(mutable) value passed to it, which will __change the value of the parent component__.
|
|
4530
|
+
|
|
4531
|
+
To specify that a parameter is mutable, when invoking the child `Component`:
|
|
4532
|
+
|
|
4533
|
+
```handlebars
|
|
4534
|
+
<MyChild @childClickCount={{fn (mut totalClicks)}} />
|
|
4535
|
+
```
|
|
4536
|
+
|
|
4537
|
+
or
|
|
4538
|
+
|
|
4539
|
+
```handlebars
|
|
4540
|
+
{{my-child childClickCount=(mut totalClicks)}}
|
|
4541
|
+
```
|
|
4542
|
+
|
|
4543
|
+
The child `Component` can then modify the parent's value just by modifying its own
|
|
4544
|
+
property:
|
|
4545
|
+
|
|
4546
|
+
```javascript
|
|
4547
|
+
// my-child.js
|
|
4548
|
+
export default class MyChild extends Component {
|
|
4549
|
+
click() {
|
|
4550
|
+
this.incrementProperty('childClickCount');
|
|
4551
|
+
}
|
|
4552
|
+
}
|
|
4553
|
+
```
|
|
4554
|
+
|
|
4555
|
+
Note that for curly components (`{{my-component}}`) the bindings are already mutable,
|
|
4556
|
+
making the `mut` unnecessary.
|
|
4557
|
+
|
|
4558
|
+
Additionally, the `mut` helper can be combined with the `fn` helper to
|
|
4559
|
+
mutate a value. For example:
|
|
4560
|
+
|
|
4561
|
+
```handlebars
|
|
4562
|
+
<MyChild @childClickCount={{this.totalClicks}} @click-count-change={{fn (mut totalClicks))}} />
|
|
4563
|
+
```
|
|
4564
|
+
|
|
4565
|
+
or
|
|
4566
|
+
|
|
4567
|
+
```handlebars
|
|
4568
|
+
{{my-child childClickCount=totalClicks click-count-change=(fn (mut totalClicks))}}
|
|
4569
|
+
```
|
|
4570
|
+
|
|
4571
|
+
The child `Component` would invoke the function with the new click value:
|
|
4572
|
+
|
|
4573
|
+
```javascript
|
|
4574
|
+
// my-child.js
|
|
4575
|
+
export default class MyChild extends Component {
|
|
4576
|
+
click() {
|
|
4577
|
+
this.get('click-count-change')(this.get('childClickCount') + 1);
|
|
4578
|
+
}
|
|
4579
|
+
}
|
|
4580
|
+
```
|
|
4581
|
+
|
|
4582
|
+
The `mut` helper changes the `totalClicks` value to what was provided as the `fn` argument.
|
|
4583
|
+
|
|
4584
|
+
The `mut` helper, when used with `fn`, will return a function that
|
|
4585
|
+
sets the value passed to `mut` to its first argument. As an example, we can create a
|
|
4586
|
+
button that increments a value passing the value directly to the `fn`:
|
|
4587
|
+
|
|
4588
|
+
```handlebars
|
|
4589
|
+
{{! inc helper is not provided by Ember }}
|
|
4590
|
+
<button onclick={{fn (mut count) (inc count)}}>
|
|
4591
|
+
Increment count
|
|
4592
|
+
</button>
|
|
4593
|
+
```
|
|
4594
|
+
|
|
4595
|
+
@method mut
|
|
4596
|
+
@param {Object} [attr] the "two-way" attribute that can be modified.
|
|
4597
|
+
@for Ember.Templates.helpers
|
|
4598
|
+
@public
|
|
4599
|
+
*/
|
|
4600
|
+
|
|
4356
4601
|
const mut = internalHelper(({
|
|
4357
4602
|
positional
|
|
4358
4603
|
}) => {
|
|
4359
4604
|
let ref = positional[0];
|
|
4360
|
-
(
|
|
4605
|
+
(!(ref) && assert('expected at least one positional arg', ref)); // TODO: Improve this error message. This covers at least two distinct
|
|
4361
4606
|
// cases:
|
|
4362
4607
|
//
|
|
4363
4608
|
// 1. (mut "not a path") – passing a literal, result from a helper
|
|
@@ -4369,7 +4614,7 @@ const mut = internalHelper(({
|
|
|
4369
4614
|
//
|
|
4370
4615
|
// This message is alright for the first case, but could be quite
|
|
4371
4616
|
// confusing for the second case.
|
|
4372
|
-
(
|
|
4617
|
+
(!(isUpdatableRef(ref)) && assert('You can only pass a path to mut', isUpdatableRef(ref)));
|
|
4373
4618
|
return createInvokableRef(ref);
|
|
4374
4619
|
});
|
|
4375
4620
|
|
|
@@ -4377,11 +4622,127 @@ const mut = internalHelper(({
|
|
|
4377
4622
|
@module ember
|
|
4378
4623
|
*/
|
|
4379
4624
|
|
|
4625
|
+
|
|
4626
|
+
/**
|
|
4627
|
+
The `readonly` helper let's you specify that a binding is one-way only,
|
|
4628
|
+
instead of two-way.
|
|
4629
|
+
When you pass a `readonly` binding from an outer context (e.g. parent component),
|
|
4630
|
+
to to an inner context (e.g. child component), you are saying that changing that
|
|
4631
|
+
property in the inner context does not change the value in the outer context.
|
|
4632
|
+
|
|
4633
|
+
To specify that a binding is read-only, when invoking the child `Component`:
|
|
4634
|
+
|
|
4635
|
+
```app/components/my-parent.js
|
|
4636
|
+
export default class MyParent extends Component {
|
|
4637
|
+
totalClicks = 3;
|
|
4638
|
+
}
|
|
4639
|
+
```
|
|
4640
|
+
|
|
4641
|
+
```app/templates/components/my-parent.hbs
|
|
4642
|
+
{{log totalClicks}} // -> 3
|
|
4643
|
+
<MyChild @childClickCount={{readonly totalClicks}} />
|
|
4644
|
+
```
|
|
4645
|
+
```
|
|
4646
|
+
{{my-child childClickCount=(readonly totalClicks)}}
|
|
4647
|
+
```
|
|
4648
|
+
|
|
4649
|
+
Now, when you update `childClickCount`:
|
|
4650
|
+
|
|
4651
|
+
```app/components/my-child.js
|
|
4652
|
+
export default class MyChild extends Component {
|
|
4653
|
+
click() {
|
|
4654
|
+
this.incrementProperty('childClickCount');
|
|
4655
|
+
}
|
|
4656
|
+
}
|
|
4657
|
+
```
|
|
4658
|
+
|
|
4659
|
+
The value updates in the child component, but not the parent component:
|
|
4660
|
+
|
|
4661
|
+
```app/templates/components/my-child.hbs
|
|
4662
|
+
{{log childClickCount}} //-> 4
|
|
4663
|
+
```
|
|
4664
|
+
|
|
4665
|
+
```app/templates/components/my-parent.hbs
|
|
4666
|
+
{{log totalClicks}} //-> 3
|
|
4667
|
+
<MyChild @childClickCount={{readonly totalClicks}} />
|
|
4668
|
+
```
|
|
4669
|
+
or
|
|
4670
|
+
```app/templates/components/my-parent.hbs
|
|
4671
|
+
{{log totalClicks}} //-> 3
|
|
4672
|
+
{{my-child childClickCount=(readonly totalClicks)}}
|
|
4673
|
+
```
|
|
4674
|
+
|
|
4675
|
+
### Objects and Arrays
|
|
4676
|
+
|
|
4677
|
+
When passing a property that is a complex object (e.g. object, array) instead of a primitive object (e.g. number, string),
|
|
4678
|
+
only the reference to the object is protected using the readonly helper.
|
|
4679
|
+
This means that you can change properties of the object both on the parent component, as well as the child component.
|
|
4680
|
+
The `readonly` binding behaves similar to the `const` keyword in JavaScript.
|
|
4681
|
+
|
|
4682
|
+
Let's look at an example:
|
|
4683
|
+
|
|
4684
|
+
First let's set up the parent component:
|
|
4685
|
+
|
|
4686
|
+
```app/components/my-parent.js
|
|
4687
|
+
import Component from '@ember/component';
|
|
4688
|
+
|
|
4689
|
+
export default class MyParent extends Component {
|
|
4690
|
+
clicks: null,
|
|
4691
|
+
|
|
4692
|
+
init() {
|
|
4693
|
+
this._super(...arguments);
|
|
4694
|
+
this.set('clicks', { total: 3 });
|
|
4695
|
+
}
|
|
4696
|
+
}
|
|
4697
|
+
```
|
|
4698
|
+
|
|
4699
|
+
```app/templates/components/my-parent.hbs
|
|
4700
|
+
{{log clicks.total}} //-> 3
|
|
4701
|
+
<MyChild @childClicks={{readonly clicks}} />
|
|
4702
|
+
```
|
|
4703
|
+
```app/templates/components/my-parent.hbs
|
|
4704
|
+
{{log clicks.total}} //-> 3
|
|
4705
|
+
{{my-child childClicks=(readonly clicks)}}
|
|
4706
|
+
```
|
|
4707
|
+
|
|
4708
|
+
Now, if you update the `total` property of `childClicks`:
|
|
4709
|
+
|
|
4710
|
+
```app/components/my-child.js
|
|
4711
|
+
import Component from '@ember/component';
|
|
4712
|
+
|
|
4713
|
+
export default class MyChild extends Component {
|
|
4714
|
+
click() {
|
|
4715
|
+
this.get('clicks').incrementProperty('total');
|
|
4716
|
+
}
|
|
4717
|
+
}
|
|
4718
|
+
```
|
|
4719
|
+
|
|
4720
|
+
You will see the following happen:
|
|
4721
|
+
|
|
4722
|
+
```app/templates/components/my-parent.hbs
|
|
4723
|
+
{{log clicks.total}} //-> 4
|
|
4724
|
+
<MyChild @childClicks={{readonly clicks}} />
|
|
4725
|
+
```
|
|
4726
|
+
or
|
|
4727
|
+
```app/templates/components/my-parent.hbs
|
|
4728
|
+
{{log clicks.total}} //-> 4
|
|
4729
|
+
{{my-child childClicks=(readonly clicks)}}
|
|
4730
|
+
```
|
|
4731
|
+
|
|
4732
|
+
```app/templates/components/my-child.hbs
|
|
4733
|
+
{{log childClicks.total}} //-> 4
|
|
4734
|
+
```
|
|
4735
|
+
|
|
4736
|
+
@method readonly
|
|
4737
|
+
@param {Object} [attr] the read-only attribute.
|
|
4738
|
+
@for Ember.Templates.helpers
|
|
4739
|
+
@private
|
|
4740
|
+
*/
|
|
4380
4741
|
const readonly = internalHelper(({
|
|
4381
4742
|
positional
|
|
4382
4743
|
}) => {
|
|
4383
4744
|
let firstArg = positional[0];
|
|
4384
|
-
(
|
|
4745
|
+
(!(firstArg) && assert('has first arg', firstArg));
|
|
4385
4746
|
return createReadOnlyRef(firstArg);
|
|
4386
4747
|
});
|
|
4387
4748
|
|
|
@@ -4389,11 +4750,40 @@ const readonly = internalHelper(({
|
|
|
4389
4750
|
@module ember
|
|
4390
4751
|
*/
|
|
4391
4752
|
|
|
4753
|
+
|
|
4754
|
+
/**
|
|
4755
|
+
The `{{unbound}}` helper disconnects the one-way binding of a property,
|
|
4756
|
+
essentially freezing its value at the moment of rendering. For example,
|
|
4757
|
+
in this example the display of the variable `name` will not change even
|
|
4758
|
+
if it is set with a new value:
|
|
4759
|
+
|
|
4760
|
+
```handlebars
|
|
4761
|
+
{{unbound this.name}}
|
|
4762
|
+
```
|
|
4763
|
+
|
|
4764
|
+
Like any helper, the `unbound` helper can accept a nested helper expression.
|
|
4765
|
+
This allows for custom helpers to be rendered unbound:
|
|
4766
|
+
|
|
4767
|
+
```handlebars
|
|
4768
|
+
{{unbound (some-custom-helper)}}
|
|
4769
|
+
{{unbound (capitalize this.name)}}
|
|
4770
|
+
{{! You can use any helper, including unbound, in a nested expression }}
|
|
4771
|
+
{{capitalize (unbound this.name)}}
|
|
4772
|
+
```
|
|
4773
|
+
|
|
4774
|
+
The `unbound` helper only accepts a single argument, and it return an
|
|
4775
|
+
unbound value.
|
|
4776
|
+
|
|
4777
|
+
@method unbound
|
|
4778
|
+
@for Ember.Templates.helpers
|
|
4779
|
+
@public
|
|
4780
|
+
*/
|
|
4781
|
+
|
|
4392
4782
|
const unbound = internalHelper(({
|
|
4393
4783
|
positional,
|
|
4394
4784
|
named
|
|
4395
4785
|
}) => {
|
|
4396
|
-
(
|
|
4786
|
+
(!(positional.length === 1 && Object.keys(named).length === 0) && assert('unbound helper cannot be called with multiple params or hash params', positional.length === 1 && Object.keys(named).length === 0));
|
|
4397
4787
|
return createUnboundRef(valueForRef(positional[0]), '(result of an `unbound` helper)');
|
|
4398
4788
|
});
|
|
4399
4789
|
|
|
@@ -4458,7 +4848,7 @@ class MountManager {
|
|
|
4458
4848
|
// mount is a runtime helper, this shouldn't use dynamic layout
|
|
4459
4849
|
// we should resolve the engine app template in the helper
|
|
4460
4850
|
// it also should use the owner that looked up the mount helper.
|
|
4461
|
-
(
|
|
4851
|
+
(!(owner instanceof EngineInstance) && assert('Expected owner to be an EngineInstance', owner instanceof EngineInstance));
|
|
4462
4852
|
let engine = owner.buildChildEngineInstance(name);
|
|
4463
4853
|
engine.boot();
|
|
4464
4854
|
let applicationFactory = engine.factoryFor(`controller:application`);
|
|
@@ -4560,15 +4950,56 @@ class MountDefinition {
|
|
|
4560
4950
|
@module ember
|
|
4561
4951
|
*/
|
|
4562
4952
|
|
|
4953
|
+
|
|
4954
|
+
/**
|
|
4955
|
+
The `{{mount}}` helper lets you embed a routeless engine in a template.
|
|
4956
|
+
Mounting an engine will cause an instance to be booted and its `application`
|
|
4957
|
+
template to be rendered.
|
|
4958
|
+
|
|
4959
|
+
For example, the following template mounts the `ember-chat` engine:
|
|
4960
|
+
|
|
4961
|
+
```handlebars
|
|
4962
|
+
{{! application.hbs }}
|
|
4963
|
+
{{mount "ember-chat"}}
|
|
4964
|
+
```
|
|
4965
|
+
|
|
4966
|
+
Additionally, you can also pass in a `model` argument that will be
|
|
4967
|
+
set as the engines model. This can be an existing object:
|
|
4968
|
+
|
|
4969
|
+
```
|
|
4970
|
+
<div>
|
|
4971
|
+
{{mount 'admin' model=userSettings}}
|
|
4972
|
+
</div>
|
|
4973
|
+
```
|
|
4974
|
+
|
|
4975
|
+
Or an inline `hash`, and you can even pass components:
|
|
4976
|
+
|
|
4977
|
+
```
|
|
4978
|
+
<div>
|
|
4979
|
+
<h1>Application template!</h1>
|
|
4980
|
+
{{mount 'admin' model=(hash
|
|
4981
|
+
title='Secret Admin'
|
|
4982
|
+
signInButton=(component 'sign-in-button')
|
|
4983
|
+
)}}
|
|
4984
|
+
</div>
|
|
4985
|
+
```
|
|
4986
|
+
|
|
4987
|
+
@method mount
|
|
4988
|
+
@param {String} name Name of the engine to mount.
|
|
4989
|
+
@param {Object} [model] Object that will be set as
|
|
4990
|
+
the model of the engine.
|
|
4991
|
+
@for Ember.Templates.helpers
|
|
4992
|
+
@public
|
|
4993
|
+
*/
|
|
4563
4994
|
const mountHelper = internalHelper((args, owner) => {
|
|
4564
|
-
(
|
|
4995
|
+
(!(owner) && assert('{{mount}} must be used within a component that has an owner', owner));
|
|
4565
4996
|
let nameRef = args.positional[0];
|
|
4566
4997
|
let captured;
|
|
4567
|
-
(
|
|
4568
|
-
if (
|
|
4998
|
+
(!(args.positional.length === 1) && assert('You can only pass a single positional argument to the {{mount}} helper, e.g. {{mount "chat-engine"}}.', args.positional.length === 1));
|
|
4999
|
+
if (args.named) {
|
|
4569
5000
|
let keys = Object.keys(args.named);
|
|
4570
5001
|
let extra = keys.filter(k => k !== 'model');
|
|
4571
|
-
(
|
|
5002
|
+
(!(extra.length === 0) && assert('You can only pass a `model` argument to the {{mount}} helper, ' + 'e.g. {{mount "profile-engine" model=this.profile}}. ' + `You passed ${extra.join(',')}.`, extra.length === 0));
|
|
4572
5003
|
}
|
|
4573
5004
|
captured = createCapturedArgs(args.named, EMPTY_POSITIONAL);
|
|
4574
5005
|
let lastName, lastDef;
|
|
@@ -4578,12 +5009,12 @@ const mountHelper = internalHelper((args, owner) => {
|
|
|
4578
5009
|
if (lastName === name) {
|
|
4579
5010
|
return lastDef;
|
|
4580
5011
|
}
|
|
4581
|
-
(
|
|
5012
|
+
(!(owner.hasRegistration(`engine:${name}`)) && assert(`You used \`{{mount '${name}'}}\`, but the engine '${name}' can not be found.`, owner.hasRegistration(`engine:${name}`)));
|
|
4582
5013
|
lastName = name;
|
|
4583
5014
|
lastDef = curry(0, new MountDefinition(name), owner, captured, true);
|
|
4584
5015
|
return lastDef;
|
|
4585
5016
|
} else {
|
|
4586
|
-
(
|
|
5017
|
+
(!(name === null || name === undefined) && assert(`Invalid engine name '${name}' specified, engine name must be either a string, null or undefined.`, name === null || name === undefined));
|
|
4587
5018
|
lastDef = null;
|
|
4588
5019
|
lastName = null;
|
|
4589
5020
|
return null;
|
|
@@ -4610,7 +5041,7 @@ const CAPABILITIES_MASK = capabilityFlagsFrom(CAPABILITIES);
|
|
|
4610
5041
|
class RouteTemplateManager {
|
|
4611
5042
|
create(_owner, _definition, args) {
|
|
4612
5043
|
let self = args.named.get('controller');
|
|
4613
|
-
|
|
5044
|
+
{
|
|
4614
5045
|
self = createDebugAliasRef('this', self);
|
|
4615
5046
|
}
|
|
4616
5047
|
let controller = valueForRef(self);
|
|
@@ -4720,8 +5151,8 @@ function makeRouteTemplate(owner, name, template) {
|
|
|
4720
5151
|
@public
|
|
4721
5152
|
*/
|
|
4722
5153
|
const outletHelper = internalHelper((_args, owner, scope) => {
|
|
4723
|
-
(
|
|
4724
|
-
(
|
|
5154
|
+
(!(owner) && assert('Expected owner to be present, {{outlet}} requires an owner', owner));
|
|
5155
|
+
(!(scope) && assert('Expected dynamic scope to be present. You may have attempted to use the {{outlet}} keyword dynamically. This keyword cannot be used dynamically.', scope));
|
|
4725
5156
|
let outletRef = createComputeRef(() => {
|
|
4726
5157
|
let state = valueForRef(scope.get('outletState'));
|
|
4727
5158
|
return state?.outlets?.main;
|
|
@@ -4761,7 +5192,7 @@ const outletHelper = internalHelper((_args, owner, scope) => {
|
|
|
4761
5192
|
if (hasInternalComponentManager(template)) {
|
|
4762
5193
|
component = template;
|
|
4763
5194
|
} else {
|
|
4764
|
-
|
|
5195
|
+
{
|
|
4765
5196
|
// We don't appear to have a standard way or a brand to check, but for the
|
|
4766
5197
|
// purpose of avoiding obvious user errors, this probably gets you close
|
|
4767
5198
|
// enough.
|
|
@@ -4786,7 +5217,7 @@ const outletHelper = internalHelper((_args, owner, scope) => {
|
|
|
4786
5217
|
} catch {
|
|
4787
5218
|
label = 'an unknown object';
|
|
4788
5219
|
}
|
|
4789
|
-
(
|
|
5220
|
+
(assert(`Failed to render the \`${state.name}\` route: expected ` + `a component or Template object, but got ${label}.`));
|
|
4790
5221
|
}
|
|
4791
5222
|
}
|
|
4792
5223
|
component = makeRouteTemplate(outletOwner, state.name, template);
|
|
@@ -4816,7 +5247,7 @@ const outletHelper = internalHelper((_args, owner, scope) => {
|
|
|
4816
5247
|
}
|
|
4817
5248
|
return model;
|
|
4818
5249
|
});
|
|
4819
|
-
|
|
5250
|
+
{
|
|
4820
5251
|
named['model'] = createDebugAliasRef('@model', named['model']);
|
|
4821
5252
|
}
|
|
4822
5253
|
let args = createCapturedArgs(named, EMPTY_POSITIONAL);
|
|
@@ -4904,17 +5335,7 @@ const BUILTIN_HELPERS = {
|
|
|
4904
5335
|
hash,
|
|
4905
5336
|
'unique-id': uniqueId
|
|
4906
5337
|
};
|
|
4907
|
-
|
|
4908
|
-
BUILTIN_HELPERS['-disallow-dynamic-resolution'] = disallowDynamicResolution;
|
|
4909
|
-
} else {
|
|
4910
|
-
// Bug: this may be a quirk of our test setup?
|
|
4911
|
-
// In prod builds, this is a no-op helper and is unused in practice. We shouldn't need
|
|
4912
|
-
// to add it at all, but the current test build doesn't produce a "prod compiler", so
|
|
4913
|
-
// we ended up running the debug-build for the template compliler in prod tests. Once
|
|
4914
|
-
// that is fixed, this can be removed. For now, this allows the test to work and does
|
|
4915
|
-
// not really harm anything, since it's just a no-op pass-through helper and the bytes
|
|
4916
|
-
// has to be included anyway. In the future, perhaps we can avoid the latter by using
|
|
4917
|
-
// `import(...)`?
|
|
5338
|
+
{
|
|
4918
5339
|
BUILTIN_HELPERS['-disallow-dynamic-resolution'] = disallowDynamicResolution;
|
|
4919
5340
|
}
|
|
4920
5341
|
|
|
@@ -4932,7 +5353,7 @@ class ResolverImpl {
|
|
|
4932
5353
|
return null;
|
|
4933
5354
|
}
|
|
4934
5355
|
lookupHelper(name, owner) {
|
|
4935
|
-
(
|
|
5356
|
+
(!(!(BUILTIN_HELPERS[name] && owner.hasRegistration(`helper:${name}`))) && assert(`You attempted to overwrite the built-in helper "${name}" which is not allowed. Please rename the helper.`, !(BUILTIN_HELPERS[name] && owner.hasRegistration(`helper:${name}`))));
|
|
4936
5357
|
let helper = BUILTIN_HELPERS[name];
|
|
4937
5358
|
if (helper !== undefined) {
|
|
4938
5359
|
return helper;
|
|
@@ -4950,15 +5371,13 @@ class ResolverImpl {
|
|
|
4950
5371
|
// than the raw value (`factoryFor(...).class`). This is because injections are already
|
|
4951
5372
|
// bound in the factoryFor result, including type-based injections
|
|
4952
5373
|
|
|
4953
|
-
|
|
5374
|
+
{
|
|
4954
5375
|
// In DEBUG we need to only set the associated value once, otherwise
|
|
4955
5376
|
// we'll trigger an assertion
|
|
4956
5377
|
if (!CLASSIC_HELPER_MANAGER_ASSOCIATED.has(factory)) {
|
|
4957
5378
|
CLASSIC_HELPER_MANAGER_ASSOCIATED.add(factory);
|
|
4958
5379
|
setInternalHelperManager(CLASSIC_HELPER_MANAGER, factory);
|
|
4959
5380
|
}
|
|
4960
|
-
} else {
|
|
4961
|
-
setInternalHelperManager(CLASSIC_HELPER_MANAGER, factory);
|
|
4962
5381
|
}
|
|
4963
5382
|
return factory;
|
|
4964
5383
|
}
|
|
@@ -4984,7 +5403,7 @@ class ResolverImpl {
|
|
|
4984
5403
|
lookupComponent(name, owner) {
|
|
4985
5404
|
let pair = lookupComponentPair(owner, name);
|
|
4986
5405
|
if (pair === null) {
|
|
4987
|
-
(
|
|
5406
|
+
(!(name !== 'text-area') && assert('Could not find component `<TextArea />` (did you mean `<Textarea />`?)', name !== 'text-area'));
|
|
4988
5407
|
return null;
|
|
4989
5408
|
}
|
|
4990
5409
|
let template = null;
|
|
@@ -5011,7 +5430,7 @@ class ResolverImpl {
|
|
|
5011
5430
|
};
|
|
5012
5431
|
} else {
|
|
5013
5432
|
let factory = pair.component;
|
|
5014
|
-
(
|
|
5433
|
+
(!(factory.class !== undefined) && assert(`missing component class ${name}`, factory.class !== undefined));
|
|
5015
5434
|
let ComponentClass = factory.class;
|
|
5016
5435
|
let manager = getInternalComponentManager(ComponentClass);
|
|
5017
5436
|
definition = {
|
|
@@ -5022,7 +5441,7 @@ class ResolverImpl {
|
|
|
5022
5441
|
}
|
|
5023
5442
|
finalizer();
|
|
5024
5443
|
this.componentDefinitionCache.set(key, definition);
|
|
5025
|
-
(
|
|
5444
|
+
(!(!(definition === null && name === 'text-area')) && assert('Could not find component `<TextArea />` (did you mean `<Textarea />`?)', !(definition === null && name === 'text-area')));
|
|
5026
5445
|
return definition;
|
|
5027
5446
|
}
|
|
5028
5447
|
}
|
|
@@ -5054,7 +5473,7 @@ class OutletView {
|
|
|
5054
5473
|
template: templateFactory
|
|
5055
5474
|
} = options;
|
|
5056
5475
|
let owner = getOwner(options);
|
|
5057
|
-
(
|
|
5476
|
+
(!(owner) && assert('OutletView is unexpectedly missing an owner', owner));
|
|
5058
5477
|
let template = templateFactory(owner);
|
|
5059
5478
|
return new OutletView(_environment, owner, template, namespace);
|
|
5060
5479
|
}
|
|
@@ -5125,11 +5544,11 @@ class DynamicScope {
|
|
|
5125
5544
|
return new DynamicScope(this.view, this.outletState);
|
|
5126
5545
|
}
|
|
5127
5546
|
get(key) {
|
|
5128
|
-
(
|
|
5547
|
+
(!(key === 'outletState') && assert(`Using \`-get-dynamic-scope\` is only supported for \`outletState\` (you used \`${key}\`).`, key === 'outletState'));
|
|
5129
5548
|
return this.outletState;
|
|
5130
5549
|
}
|
|
5131
5550
|
set(key, value) {
|
|
5132
|
-
(
|
|
5551
|
+
(!(key === 'outletState') && assert(`Using \`-with-dynamic-scope\` is only supported for \`outletState\` (you used \`${key}\`).`, key === 'outletState'));
|
|
5133
5552
|
this.outletState = value;
|
|
5134
5553
|
return value;
|
|
5135
5554
|
}
|
|
@@ -5140,7 +5559,7 @@ const NO_OP = () => {};
|
|
|
5140
5559
|
// during render. This prevents infinite revalidation type loops from occuring,
|
|
5141
5560
|
// and ensures that errors are not swallowed by subsequent follow on failures.
|
|
5142
5561
|
function errorLoopTransaction(fn) {
|
|
5143
|
-
|
|
5562
|
+
{
|
|
5144
5563
|
return () => {
|
|
5145
5564
|
let didError = true;
|
|
5146
5565
|
try {
|
|
@@ -5157,8 +5576,6 @@ function errorLoopTransaction(fn) {
|
|
|
5157
5576
|
}
|
|
5158
5577
|
}
|
|
5159
5578
|
};
|
|
5160
|
-
} else {
|
|
5161
|
-
return fn;
|
|
5162
5579
|
}
|
|
5163
5580
|
}
|
|
5164
5581
|
class ComponentRootState {
|
|
@@ -5203,7 +5620,7 @@ class ClassicRootState {
|
|
|
5203
5620
|
env;
|
|
5204
5621
|
constructor(root, context, owner, template, self, parentElement, dynamicScope, builder) {
|
|
5205
5622
|
this.root = root;
|
|
5206
|
-
(
|
|
5623
|
+
(!(template !== undefined) && assert(`You cannot render \`${valueForRef(self)}\` without a template.`, template !== undefined));
|
|
5207
5624
|
this.id = root instanceof OutletView ? guidFor(root) : getViewId(root);
|
|
5208
5625
|
this.result = undefined;
|
|
5209
5626
|
this.destroyed = false;
|
|
@@ -5255,12 +5672,12 @@ function _resetRenderers() {
|
|
|
5255
5672
|
renderers.length = 0;
|
|
5256
5673
|
}
|
|
5257
5674
|
function register(renderer) {
|
|
5258
|
-
(
|
|
5675
|
+
(!(renderers.indexOf(renderer) === -1) && assert('Cannot register the same renderer twice', renderers.indexOf(renderer) === -1));
|
|
5259
5676
|
renderers.push(renderer);
|
|
5260
5677
|
}
|
|
5261
5678
|
function deregister(renderer) {
|
|
5262
5679
|
let index = renderers.indexOf(renderer);
|
|
5263
|
-
(
|
|
5680
|
+
(!(index !== -1) && assert('Cannot deregister unknown unregistered renderer', index !== -1));
|
|
5264
5681
|
renderers.splice(index, 1);
|
|
5265
5682
|
}
|
|
5266
5683
|
function loopBegin() {
|
|
@@ -5401,7 +5818,7 @@ class RendererState {
|
|
|
5401
5818
|
// each root is processed
|
|
5402
5819
|
for (let i = 0; i < roots.length; i++) {
|
|
5403
5820
|
let root = roots[i];
|
|
5404
|
-
(
|
|
5821
|
+
(true && !(root) && assert('has root', root));
|
|
5405
5822
|
if (root.destroyed) {
|
|
5406
5823
|
// add to the list of roots to be removed
|
|
5407
5824
|
// they will be removed from `this._roots` later
|
|
@@ -5533,7 +5950,7 @@ component, {
|
|
|
5533
5950
|
* NOTE: destruction is async
|
|
5534
5951
|
*/
|
|
5535
5952
|
let existing = RENDER_CACHE.get(into);
|
|
5536
|
-
existing?.destroy();
|
|
5953
|
+
existing?.result.destroy();
|
|
5537
5954
|
/**
|
|
5538
5955
|
* We can only replace the inner HTML the first time.
|
|
5539
5956
|
* Because destruction is async, it won't be safe to
|
|
@@ -5542,8 +5959,30 @@ component, {
|
|
|
5542
5959
|
if (!existing && into instanceof Element) {
|
|
5543
5960
|
into.innerHTML = '';
|
|
5544
5961
|
}
|
|
5962
|
+
|
|
5963
|
+
/**
|
|
5964
|
+
* If there's an existing render result with valid bounds, use its
|
|
5965
|
+
* firstNode as the nextSibling so that new content is inserted at
|
|
5966
|
+
* the same DOM position. This ensures stable ordering when multiple
|
|
5967
|
+
* renderComponent calls target the same element and one is re-invoked
|
|
5968
|
+
* (e.g., due to tracked dependency changes).
|
|
5969
|
+
*
|
|
5970
|
+
* The old content's DOM nodes are still present (destruction is async),
|
|
5971
|
+
* so firstNode() is a valid position reference. The new content is placed
|
|
5972
|
+
* BEFORE the old content. When the old content is eventually destroyed
|
|
5973
|
+
* (async clear of bounds), the new content remains in the correct position.
|
|
5974
|
+
*/
|
|
5975
|
+
let renderTarget = into;
|
|
5976
|
+
if (existing?.glimmerResult) {
|
|
5977
|
+
let parentElement = into instanceof Element ? into : into.element;
|
|
5978
|
+
let firstNode = existing.glimmerResult.firstNode();
|
|
5979
|
+
renderTarget = {
|
|
5980
|
+
element: parentElement,
|
|
5981
|
+
nextSibling: firstNode
|
|
5982
|
+
};
|
|
5983
|
+
}
|
|
5545
5984
|
let innerResult = renderer.render(component, {
|
|
5546
|
-
into,
|
|
5985
|
+
into: renderTarget,
|
|
5547
5986
|
args
|
|
5548
5987
|
}).result;
|
|
5549
5988
|
if (innerResult) {
|
|
@@ -5556,7 +5995,10 @@ component, {
|
|
|
5556
5995
|
}
|
|
5557
5996
|
}
|
|
5558
5997
|
};
|
|
5559
|
-
RENDER_CACHE.set(into,
|
|
5998
|
+
RENDER_CACHE.set(into, {
|
|
5999
|
+
result,
|
|
6000
|
+
glimmerResult: innerResult
|
|
6001
|
+
});
|
|
5560
6002
|
return result;
|
|
5561
6003
|
}
|
|
5562
6004
|
const RENDER_CACHE = new WeakMap();
|
|
@@ -5594,7 +6036,7 @@ class BaseRenderer {
|
|
|
5594
6036
|
let {
|
|
5595
6037
|
debugRenderTree
|
|
5596
6038
|
} = this.state.env;
|
|
5597
|
-
(
|
|
6039
|
+
(!(debugRenderTree) && assert('Attempted to access the DebugRenderTree, but it did not exist. Is the Ember Inspector open?', debugRenderTree));
|
|
5598
6040
|
return debugRenderTree;
|
|
5599
6041
|
}
|
|
5600
6042
|
isValid() {
|
|
@@ -5632,7 +6074,7 @@ class Renderer extends BaseRenderer {
|
|
|
5632
6074
|
_viewRegistry
|
|
5633
6075
|
} = props;
|
|
5634
6076
|
let owner = getOwner(props);
|
|
5635
|
-
(
|
|
6077
|
+
(!(owner) && assert('Renderer is unexpectedly missing an owner', owner));
|
|
5636
6078
|
let document = owner.lookup('service:-document');
|
|
5637
6079
|
let env = owner.lookup('-environment:main');
|
|
5638
6080
|
let rootTemplate = owner.lookup(privatize`template:-root`);
|
|
@@ -5696,7 +6138,7 @@ class Renderer extends BaseRenderer {
|
|
|
5696
6138
|
let i = roots.length;
|
|
5697
6139
|
while (i--) {
|
|
5698
6140
|
let root = roots[i];
|
|
5699
|
-
(
|
|
6141
|
+
(!(root) && assert('has root', root));
|
|
5700
6142
|
if (root.type === 'classic' && root.isFor(component)) {
|
|
5701
6143
|
root.destroy();
|
|
5702
6144
|
roots.splice(i, 1);
|
|
@@ -5724,7 +6166,7 @@ class Renderer extends BaseRenderer {
|
|
|
5724
6166
|
}
|
|
5725
6167
|
register(view) {
|
|
5726
6168
|
let id = getViewId(view);
|
|
5727
|
-
(
|
|
6169
|
+
(!(!this._viewRegistry[id]) && assert('Attempted to register a view with an id already in use: ' + id, !this._viewRegistry[id]));
|
|
5728
6170
|
this._viewRegistry[id] = view;
|
|
5729
6171
|
}
|
|
5730
6172
|
unregister(view) {
|
|
@@ -5739,7 +6181,7 @@ class Renderer extends BaseRenderer {
|
|
|
5739
6181
|
}
|
|
5740
6182
|
getBounds(component) {
|
|
5741
6183
|
let bounds = component[BOUNDS];
|
|
5742
|
-
(
|
|
6184
|
+
(!(bounds) && assert('object passed to getBounds must have the BOUNDS symbol as a property', bounds));
|
|
5743
6185
|
let parentElement = bounds.parentElement();
|
|
5744
6186
|
let firstNode = bounds.firstNode();
|
|
5745
6187
|
let lastNode = bounds.lastNode();
|
|
@@ -5759,8 +6201,10 @@ const OutletTemplate = templateFactory(
|
|
|
5759
6201
|
"id": null,
|
|
5760
6202
|
"block": "[[[46,[28,[32,0],null,null],null,null,null]],[],[\"component\"]]",
|
|
5761
6203
|
"moduleName": "packages/@ember/-internals/glimmer/lib/templates/outlet.hbs",
|
|
5762
|
-
"scope": () =>
|
|
6204
|
+
"scope": () => ({
|
|
6205
|
+
outletHelper
|
|
6206
|
+
}),
|
|
5763
6207
|
"isStrictMode": true
|
|
5764
6208
|
});
|
|
5765
6209
|
|
|
5766
|
-
export { Component as C, Helper as H, Input as I, LinkTo as L, OutletView as O,
|
|
6210
|
+
export { Component as C, Helper as H, Input as I, LinkTo as L, OutletView as O, RootTemplate as R, SafeString as S, Textarea as T, _resetRenderers as _, OutletTemplate as a, Renderer as b, TrustedHTML as c, htmlSafe as d, isTrustedHTML as e, renderComponent as f, helper$1 as h, isHTMLSafe as i, renderSettled as r, trustHTML as t, uniqueId$1 as u };
|