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
|
@@ -0,0 +1,1032 @@
|
|
|
1
|
+
import '../../../-internals/environment/index.js';
|
|
2
|
+
import { c as computed, m as autoComputed } from '../../../../shared-chunks/namespace_search-Aog9nySA.js';
|
|
3
|
+
import '../../../../shared-chunks/super-Cm_a_cLQ.js';
|
|
4
|
+
import '../../../../@glimmer/validator/index.js';
|
|
5
|
+
import '../../../../shared-chunks/reference-BNqcwZWH.js';
|
|
6
|
+
import '../../../../shared-chunks/capabilities-DGmQ_mz4.js';
|
|
7
|
+
import { g as get } from '../../../../shared-chunks/observers-R1ZklwWy.js';
|
|
8
|
+
import '../../index.js';
|
|
9
|
+
import '../../core.js';
|
|
10
|
+
import compare from '../../../utils/lib/compare.js';
|
|
11
|
+
import EmberArray, { A, uniqBy as uniqBy$1 } from '../../../array/index.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
@module @ember/object
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
function isNativeOrEmberArray(obj) {
|
|
18
|
+
return Array.isArray(obj) || EmberArray.detect(obj);
|
|
19
|
+
}
|
|
20
|
+
function reduceMacro(dependentKey, callback, initialValue, name) {
|
|
21
|
+
return computed(`${dependentKey}.[]`, function () {
|
|
22
|
+
let arr = get(this, dependentKey);
|
|
23
|
+
if (arr === null || typeof arr !== 'object') {
|
|
24
|
+
return initialValue;
|
|
25
|
+
}
|
|
26
|
+
return arr.reduce(callback, initialValue, this);
|
|
27
|
+
}).readOnly();
|
|
28
|
+
}
|
|
29
|
+
function arrayMacro(dependentKey, additionalDependentKeys, callback) {
|
|
30
|
+
// This is a bit ugly
|
|
31
|
+
let propertyName;
|
|
32
|
+
if (/@each/.test(dependentKey)) {
|
|
33
|
+
propertyName = dependentKey.replace(/\.@each.*$/, '');
|
|
34
|
+
} else {
|
|
35
|
+
propertyName = dependentKey;
|
|
36
|
+
dependentKey += '.[]';
|
|
37
|
+
}
|
|
38
|
+
return computed(dependentKey, ...additionalDependentKeys, function () {
|
|
39
|
+
let value = get(this, propertyName);
|
|
40
|
+
if (isNativeOrEmberArray(value)) {
|
|
41
|
+
return A(callback.call(this, value));
|
|
42
|
+
} else {
|
|
43
|
+
return A();
|
|
44
|
+
}
|
|
45
|
+
}).readOnly();
|
|
46
|
+
}
|
|
47
|
+
function multiArrayMacro(_dependentKeys, callback, name) {
|
|
48
|
+
let dependentKeys = _dependentKeys.map(key => `${key}.[]`);
|
|
49
|
+
return computed(...dependentKeys, function () {
|
|
50
|
+
return A(callback.call(this, _dependentKeys));
|
|
51
|
+
}).readOnly();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
A computed property that returns the sum of the values in the dependent array.
|
|
56
|
+
|
|
57
|
+
Example:
|
|
58
|
+
|
|
59
|
+
```javascript
|
|
60
|
+
import { sum } from '@ember/object/computed';
|
|
61
|
+
|
|
62
|
+
class Invoice {
|
|
63
|
+
lineItems = [1.00, 2.50, 9.99];
|
|
64
|
+
|
|
65
|
+
@sum('lineItems') total;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
let invoice = new Invoice();
|
|
69
|
+
|
|
70
|
+
invoice.total; // 13.49
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
@method sum
|
|
74
|
+
@for @ember/object/computed
|
|
75
|
+
@static
|
|
76
|
+
@param {String} dependentKey
|
|
77
|
+
@return {ComputedProperty} computes the sum of all values in the
|
|
78
|
+
dependentKey's array
|
|
79
|
+
@since 1.4.0
|
|
80
|
+
@public
|
|
81
|
+
*/
|
|
82
|
+
function sum(dependentKey) {
|
|
83
|
+
return reduceMacro(dependentKey, (sum, item) => sum + item, 0);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
A computed property that calculates the maximum value in the dependent array.
|
|
88
|
+
This will return `-Infinity` when the dependent array is empty.
|
|
89
|
+
|
|
90
|
+
Example:
|
|
91
|
+
|
|
92
|
+
```javascript
|
|
93
|
+
import { set } from '@ember/object';
|
|
94
|
+
import { mapBy, max } from '@ember/object/computed';
|
|
95
|
+
|
|
96
|
+
class Person {
|
|
97
|
+
children = [];
|
|
98
|
+
|
|
99
|
+
@mapBy('children', 'age') childAges;
|
|
100
|
+
@max('childAges') maxChildAge;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
let lordByron = new Person();
|
|
104
|
+
|
|
105
|
+
lordByron.maxChildAge; // -Infinity
|
|
106
|
+
|
|
107
|
+
set(lordByron, 'children', [
|
|
108
|
+
{
|
|
109
|
+
name: 'Augusta Ada Byron',
|
|
110
|
+
age: 7
|
|
111
|
+
}
|
|
112
|
+
]);
|
|
113
|
+
lordByron.maxChildAge; // 7
|
|
114
|
+
|
|
115
|
+
set(lordByron, 'children', [
|
|
116
|
+
...lordByron.children,
|
|
117
|
+
{
|
|
118
|
+
name: 'Allegra Byron',
|
|
119
|
+
age: 5
|
|
120
|
+
}, {
|
|
121
|
+
name: 'Elizabeth Medora Leigh',
|
|
122
|
+
age: 8
|
|
123
|
+
}
|
|
124
|
+
]);
|
|
125
|
+
lordByron.maxChildAge; // 8
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
If the types of the arguments are not numbers, they will be converted to
|
|
129
|
+
numbers and the type of the return value will always be `Number`. For example,
|
|
130
|
+
the max of a list of Date objects will be the highest timestamp as a `Number`.
|
|
131
|
+
This behavior is consistent with `Math.max`.
|
|
132
|
+
|
|
133
|
+
@method max
|
|
134
|
+
@for @ember/object/computed
|
|
135
|
+
@static
|
|
136
|
+
@param {String} dependentKey
|
|
137
|
+
@return {ComputedProperty} computes the largest value in the dependentKey's
|
|
138
|
+
array
|
|
139
|
+
@public
|
|
140
|
+
*/
|
|
141
|
+
function max(dependentKey) {
|
|
142
|
+
return reduceMacro(dependentKey, (max, item) => Math.max(max, item), -Infinity);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
A computed property that calculates the minimum value in the dependent array.
|
|
147
|
+
This will return `Infinity` when the dependent array is empty.
|
|
148
|
+
|
|
149
|
+
Example:
|
|
150
|
+
|
|
151
|
+
```javascript
|
|
152
|
+
import { set } from '@ember/object';
|
|
153
|
+
import { mapBy, min } from '@ember/object/computed';
|
|
154
|
+
|
|
155
|
+
class Person {
|
|
156
|
+
children = [];
|
|
157
|
+
|
|
158
|
+
@mapBy('children', 'age') childAges;
|
|
159
|
+
@min('childAges') minChildAge;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
let lordByron = Person.create({ children: [] });
|
|
163
|
+
|
|
164
|
+
lordByron.minChildAge; // Infinity
|
|
165
|
+
|
|
166
|
+
set(lordByron, 'children', [
|
|
167
|
+
{
|
|
168
|
+
name: 'Augusta Ada Byron',
|
|
169
|
+
age: 7
|
|
170
|
+
}
|
|
171
|
+
]);
|
|
172
|
+
lordByron.minChildAge; // 7
|
|
173
|
+
|
|
174
|
+
set(lordByron, 'children', [
|
|
175
|
+
...lordByron.children,
|
|
176
|
+
{
|
|
177
|
+
name: 'Allegra Byron',
|
|
178
|
+
age: 5
|
|
179
|
+
}, {
|
|
180
|
+
name: 'Elizabeth Medora Leigh',
|
|
181
|
+
age: 8
|
|
182
|
+
}
|
|
183
|
+
]);
|
|
184
|
+
lordByron.minChildAge; // 5
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
If the types of the arguments are not numbers, they will be converted to
|
|
188
|
+
numbers and the type of the return value will always be `Number`. For example,
|
|
189
|
+
the min of a list of Date objects will be the lowest timestamp as a `Number`.
|
|
190
|
+
This behavior is consistent with `Math.min`.
|
|
191
|
+
|
|
192
|
+
@method min
|
|
193
|
+
@for @ember/object/computed
|
|
194
|
+
@static
|
|
195
|
+
@param {String} dependentKey
|
|
196
|
+
@return {ComputedProperty} computes the smallest value in the dependentKey's array
|
|
197
|
+
@public
|
|
198
|
+
*/
|
|
199
|
+
function min(dependentKey) {
|
|
200
|
+
return reduceMacro(dependentKey, (min, item) => Math.min(min, item), Infinity);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
Returns an array mapped via the callback
|
|
205
|
+
|
|
206
|
+
The callback method you provide should have the following signature:
|
|
207
|
+
- `item` is the current item in the iteration.
|
|
208
|
+
- `index` is the integer index of the current item in the iteration.
|
|
209
|
+
|
|
210
|
+
```javascript
|
|
211
|
+
function mapCallback(item, index);
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Example:
|
|
215
|
+
|
|
216
|
+
```javascript
|
|
217
|
+
import { set } from '@ember/object';
|
|
218
|
+
import { map } from '@ember/object/computed';
|
|
219
|
+
|
|
220
|
+
class Hamster {
|
|
221
|
+
constructor(chores) {
|
|
222
|
+
set(this, 'chores', chores);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
@map('chores', function(chore, index) {
|
|
226
|
+
return `${chore.toUpperCase()}!`;
|
|
227
|
+
})
|
|
228
|
+
excitingChores;
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
let hamster = new Hamster(['clean', 'write more unit tests']);
|
|
232
|
+
|
|
233
|
+
hamster.excitingChores; // ['CLEAN!', 'WRITE MORE UNIT TESTS!']
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
You can optionally pass an array of additional dependent keys as the second
|
|
237
|
+
parameter to the macro, if your map function relies on any external values:
|
|
238
|
+
|
|
239
|
+
```javascript
|
|
240
|
+
import { set } from '@ember/object';
|
|
241
|
+
import { map } from '@ember/object/computed';
|
|
242
|
+
|
|
243
|
+
class Hamster {
|
|
244
|
+
shouldUpperCase = false;
|
|
245
|
+
|
|
246
|
+
constructor(chores) {
|
|
247
|
+
set(this, 'chores', chores);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
@map('chores', ['shouldUpperCase'], function(chore, index) {
|
|
251
|
+
if (this.shouldUpperCase) {
|
|
252
|
+
return `${chore.toUpperCase()}!`;
|
|
253
|
+
} else {
|
|
254
|
+
return `${chore}!`;
|
|
255
|
+
}
|
|
256
|
+
})
|
|
257
|
+
excitingChores;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
let hamster = new Hamster(['clean', 'write more unit tests']);
|
|
261
|
+
|
|
262
|
+
hamster.excitingChores; // ['clean!', 'write more unit tests!']
|
|
263
|
+
|
|
264
|
+
set(hamster, 'shouldUpperCase', true);
|
|
265
|
+
hamster.excitingChores; // ['CLEAN!', 'WRITE MORE UNIT TESTS!']
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
@method map
|
|
269
|
+
@for @ember/object/computed
|
|
270
|
+
@static
|
|
271
|
+
@param {String} dependentKey
|
|
272
|
+
@param {Array} [additionalDependentKeys] optional array of additional
|
|
273
|
+
dependent keys
|
|
274
|
+
@param {Function} callback
|
|
275
|
+
@return {ComputedProperty} an array mapped via the callback
|
|
276
|
+
@public
|
|
277
|
+
*/
|
|
278
|
+
|
|
279
|
+
function map(dependentKey, additionalDependentKeysOrCallback, callback) {
|
|
280
|
+
let additionalDependentKeys;
|
|
281
|
+
if (typeof additionalDependentKeysOrCallback === 'function') {
|
|
282
|
+
callback = additionalDependentKeysOrCallback;
|
|
283
|
+
additionalDependentKeys = [];
|
|
284
|
+
} else {
|
|
285
|
+
additionalDependentKeys = additionalDependentKeysOrCallback;
|
|
286
|
+
}
|
|
287
|
+
const cCallback = callback;
|
|
288
|
+
return arrayMacro(dependentKey, additionalDependentKeys, function (value) {
|
|
289
|
+
// This is so dumb...
|
|
290
|
+
return Array.isArray(value) ? value.map(cCallback, this) : value.map(cCallback, this);
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
Returns an array mapped to the specified key.
|
|
296
|
+
|
|
297
|
+
Example:
|
|
298
|
+
|
|
299
|
+
```javascript
|
|
300
|
+
import { set } from '@ember/object';
|
|
301
|
+
import { mapBy } from '@ember/object/computed';
|
|
302
|
+
|
|
303
|
+
class Person {
|
|
304
|
+
children = [];
|
|
305
|
+
|
|
306
|
+
@mapBy('children', 'age') childAges;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
let lordByron = new Person();
|
|
310
|
+
|
|
311
|
+
lordByron.childAges; // []
|
|
312
|
+
|
|
313
|
+
set(lordByron, 'children', [
|
|
314
|
+
{
|
|
315
|
+
name: 'Augusta Ada Byron',
|
|
316
|
+
age: 7
|
|
317
|
+
}
|
|
318
|
+
]);
|
|
319
|
+
lordByron.childAges; // [7]
|
|
320
|
+
|
|
321
|
+
set(lordByron, 'children', [
|
|
322
|
+
...lordByron.children,
|
|
323
|
+
{
|
|
324
|
+
name: 'Allegra Byron',
|
|
325
|
+
age: 5
|
|
326
|
+
}, {
|
|
327
|
+
name: 'Elizabeth Medora Leigh',
|
|
328
|
+
age: 8
|
|
329
|
+
}
|
|
330
|
+
]);
|
|
331
|
+
lordByron.childAges; // [7, 5, 8]
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
@method mapBy
|
|
335
|
+
@for @ember/object/computed
|
|
336
|
+
@static
|
|
337
|
+
@param {String} dependentKey
|
|
338
|
+
@param {String} propertyKey
|
|
339
|
+
@return {ComputedProperty} an array mapped to the specified key
|
|
340
|
+
@public
|
|
341
|
+
*/
|
|
342
|
+
function mapBy(dependentKey, propertyKey) {
|
|
343
|
+
return map(`${dependentKey}.@each.${propertyKey}`, item => get(item, propertyKey));
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
Filters the array by the callback, like the `Array.prototype.filter` method.
|
|
348
|
+
|
|
349
|
+
The callback method you provide should have the following signature:
|
|
350
|
+
- `item` is the current item in the iteration.
|
|
351
|
+
- `index` is the integer index of the current item in the iteration.
|
|
352
|
+
- `array` is the dependant array itself.
|
|
353
|
+
|
|
354
|
+
```javascript
|
|
355
|
+
function filterCallback(item, index, array);
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
In the callback, return a truthy value that coerces to true to keep the
|
|
359
|
+
element, or a falsy to reject it.
|
|
360
|
+
|
|
361
|
+
Example:
|
|
362
|
+
|
|
363
|
+
```javascript
|
|
364
|
+
import { set } from '@ember/object';
|
|
365
|
+
import { filter } from '@ember/object/computed';
|
|
366
|
+
|
|
367
|
+
class Hamster {
|
|
368
|
+
constructor(chores) {
|
|
369
|
+
set(this, 'chores', chores);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
@filter('chores', function(chore, index, array) {
|
|
373
|
+
return !chore.done;
|
|
374
|
+
})
|
|
375
|
+
remainingChores;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
let hamster = Hamster.create([
|
|
379
|
+
{ name: 'cook', done: true },
|
|
380
|
+
{ name: 'clean', done: true },
|
|
381
|
+
{ name: 'write more unit tests', done: false }
|
|
382
|
+
]);
|
|
383
|
+
|
|
384
|
+
hamster.remainingChores; // [{name: 'write more unit tests', done: false}]
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
You can also use `@each.property` in your dependent key, the callback will
|
|
388
|
+
still use the underlying array:
|
|
389
|
+
|
|
390
|
+
```javascript
|
|
391
|
+
import { set } from '@ember/object';
|
|
392
|
+
import { filter } from '@ember/object/computed';
|
|
393
|
+
|
|
394
|
+
class Hamster {
|
|
395
|
+
constructor(chores) {
|
|
396
|
+
set(this, 'chores', chores);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
@filter('chores.@each.done', function(chore, index, array) {
|
|
400
|
+
return !chore.done;
|
|
401
|
+
})
|
|
402
|
+
remainingChores;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
let hamster = new Hamster([
|
|
406
|
+
{ name: 'cook', done: true },
|
|
407
|
+
{ name: 'clean', done: true },
|
|
408
|
+
{ name: 'write more unit tests', done: false }
|
|
409
|
+
]);
|
|
410
|
+
hamster.remainingChores; // [{name: 'write more unit tests', done: false}]
|
|
411
|
+
|
|
412
|
+
set(hamster.chores[2], 'done', true);
|
|
413
|
+
hamster.remainingChores; // []
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
Finally, you can optionally pass an array of additional dependent keys as the
|
|
417
|
+
second parameter to the macro, if your filter function relies on any external
|
|
418
|
+
values:
|
|
419
|
+
|
|
420
|
+
```javascript
|
|
421
|
+
import { filter } from '@ember/object/computed';
|
|
422
|
+
|
|
423
|
+
class Hamster {
|
|
424
|
+
constructor(chores) {
|
|
425
|
+
set(this, 'chores', chores);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
doneKey = 'finished';
|
|
429
|
+
|
|
430
|
+
@filter('chores', ['doneKey'], function(chore, index, array) {
|
|
431
|
+
return !chore[this.doneKey];
|
|
432
|
+
})
|
|
433
|
+
remainingChores;
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
let hamster = new Hamster([
|
|
437
|
+
{ name: 'cook', finished: true },
|
|
438
|
+
{ name: 'clean', finished: true },
|
|
439
|
+
{ name: 'write more unit tests', finished: false }
|
|
440
|
+
]);
|
|
441
|
+
|
|
442
|
+
hamster.remainingChores; // [{name: 'write more unit tests', finished: false}]
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
@method filter
|
|
446
|
+
@for @ember/object/computed
|
|
447
|
+
@static
|
|
448
|
+
@param {String} dependentKey
|
|
449
|
+
@param {Array} [additionalDependentKeys] optional array of additional dependent keys
|
|
450
|
+
@param {Function} callback
|
|
451
|
+
@return {ComputedProperty} the filtered array
|
|
452
|
+
@public
|
|
453
|
+
*/
|
|
454
|
+
|
|
455
|
+
function filter(dependentKey, additionalDependentKeysOrCallback, callback) {
|
|
456
|
+
let additionalDependentKeys;
|
|
457
|
+
if (typeof additionalDependentKeysOrCallback === 'function') {
|
|
458
|
+
callback = additionalDependentKeysOrCallback;
|
|
459
|
+
additionalDependentKeys = [];
|
|
460
|
+
} else {
|
|
461
|
+
additionalDependentKeys = additionalDependentKeysOrCallback;
|
|
462
|
+
}
|
|
463
|
+
const cCallback = callback;
|
|
464
|
+
return arrayMacro(dependentKey, additionalDependentKeys, function (value) {
|
|
465
|
+
// This is a really silly way to keep TS happy
|
|
466
|
+
return Array.isArray(value) ? value.filter(cCallback, this) : value.filter(cCallback, this);
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
Filters the array by the property and value.
|
|
472
|
+
|
|
473
|
+
Example:
|
|
474
|
+
|
|
475
|
+
```javascript
|
|
476
|
+
import { set } from '@ember/object';
|
|
477
|
+
import { filterBy } from '@ember/object/computed';
|
|
478
|
+
|
|
479
|
+
class Hamster {
|
|
480
|
+
constructor(chores) {
|
|
481
|
+
set(this, 'chores', chores);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
@filterBy('chores', 'done', false) remainingChores;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
let hamster = new Hamster([
|
|
488
|
+
{ name: 'cook', done: true },
|
|
489
|
+
{ name: 'clean', done: true },
|
|
490
|
+
{ name: 'write more unit tests', done: false }
|
|
491
|
+
]);
|
|
492
|
+
|
|
493
|
+
hamster.remainingChores; // [{ name: 'write more unit tests', done: false }]
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
@method filterBy
|
|
497
|
+
@for @ember/object/computed
|
|
498
|
+
@static
|
|
499
|
+
@param {String} dependentKey
|
|
500
|
+
@param {String} propertyKey
|
|
501
|
+
@param {*} value
|
|
502
|
+
@return {ComputedProperty} the filtered array
|
|
503
|
+
@public
|
|
504
|
+
*/
|
|
505
|
+
function filterBy(dependentKey, propertyKey, value) {
|
|
506
|
+
let callback;
|
|
507
|
+
if (arguments.length === 2) {
|
|
508
|
+
callback = item => get(item, propertyKey);
|
|
509
|
+
} else {
|
|
510
|
+
callback = item => get(item, propertyKey) === value;
|
|
511
|
+
}
|
|
512
|
+
return filter(`${dependentKey}.@each.${propertyKey}`, callback);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/**
|
|
516
|
+
A computed property which returns a new array with all the unique elements
|
|
517
|
+
from one or more dependent arrays.
|
|
518
|
+
|
|
519
|
+
Example:
|
|
520
|
+
|
|
521
|
+
```javascript
|
|
522
|
+
import { set } from '@ember/object';
|
|
523
|
+
import { uniq } from '@ember/object/computed';
|
|
524
|
+
|
|
525
|
+
class Hamster {
|
|
526
|
+
constructor(fruits) {
|
|
527
|
+
set(this, 'fruits', fruits);
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
@uniq('fruits') uniqueFruits;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
let hamster = new Hamster([
|
|
534
|
+
'banana',
|
|
535
|
+
'grape',
|
|
536
|
+
'kale',
|
|
537
|
+
'banana'
|
|
538
|
+
]);
|
|
539
|
+
|
|
540
|
+
hamster.uniqueFruits; // ['banana', 'grape', 'kale']
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
@method uniq
|
|
544
|
+
@for @ember/object/computed
|
|
545
|
+
@static
|
|
546
|
+
@param {String} propertyKey*
|
|
547
|
+
@return {ComputedProperty} computes a new array with all the
|
|
548
|
+
unique elements from the dependent array
|
|
549
|
+
@public
|
|
550
|
+
*/
|
|
551
|
+
function uniq(dependentKey, ...additionalDependentKeys) {
|
|
552
|
+
let args = [dependentKey, ...additionalDependentKeys];
|
|
553
|
+
return multiArrayMacro(args, function (dependentKeys) {
|
|
554
|
+
let uniq = A();
|
|
555
|
+
let seen = new Set();
|
|
556
|
+
dependentKeys.forEach(dependentKey => {
|
|
557
|
+
let value = get(this, dependentKey);
|
|
558
|
+
if (isNativeOrEmberArray(value)) {
|
|
559
|
+
value.forEach(item => {
|
|
560
|
+
if (!seen.has(item)) {
|
|
561
|
+
seen.add(item);
|
|
562
|
+
uniq.push(item);
|
|
563
|
+
}
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
});
|
|
567
|
+
return uniq;
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
A computed property which returns a new array with all the unique elements
|
|
573
|
+
from an array, with uniqueness determined by specific key.
|
|
574
|
+
|
|
575
|
+
Example:
|
|
576
|
+
|
|
577
|
+
```javascript
|
|
578
|
+
import { set } from '@ember/object';
|
|
579
|
+
import { uniqBy } from '@ember/object/computed';
|
|
580
|
+
|
|
581
|
+
class Hamster {
|
|
582
|
+
constructor(fruits) {
|
|
583
|
+
set(this, 'fruits', fruits);
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
@uniqBy('fruits', 'id') uniqueFruits;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
let hamster = new Hamster([
|
|
590
|
+
{ id: 1, 'banana' },
|
|
591
|
+
{ id: 2, 'grape' },
|
|
592
|
+
{ id: 3, 'peach' },
|
|
593
|
+
{ id: 1, 'banana' }
|
|
594
|
+
]);
|
|
595
|
+
|
|
596
|
+
hamster.uniqueFruits; // [ { id: 1, 'banana' }, { id: 2, 'grape' }, { id: 3, 'peach' }]
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
@method uniqBy
|
|
600
|
+
@for @ember/object/computed
|
|
601
|
+
@static
|
|
602
|
+
@param {String} dependentKey
|
|
603
|
+
@param {String} propertyKey
|
|
604
|
+
@return {ComputedProperty} computes a new array with all the
|
|
605
|
+
unique elements from the dependent array
|
|
606
|
+
@public
|
|
607
|
+
*/
|
|
608
|
+
function uniqBy(dependentKey, propertyKey) {
|
|
609
|
+
return computed(`${dependentKey}.[]`, function () {
|
|
610
|
+
let list = get(this, dependentKey);
|
|
611
|
+
return isNativeOrEmberArray(list) ? uniqBy$1(list, propertyKey) : A();
|
|
612
|
+
}).readOnly();
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
/**
|
|
616
|
+
A computed property which returns a new array with all the unique elements
|
|
617
|
+
from one or more dependent arrays.
|
|
618
|
+
|
|
619
|
+
Example:
|
|
620
|
+
|
|
621
|
+
```javascript
|
|
622
|
+
import { set } from '@ember/object';
|
|
623
|
+
import { union } from '@ember/object/computed';
|
|
624
|
+
|
|
625
|
+
class Hamster {
|
|
626
|
+
constructor(fruits, vegetables) {
|
|
627
|
+
set(this, 'fruits', fruits);
|
|
628
|
+
set(this, 'vegetables', vegetables);
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
@union('fruits', 'vegetables') uniqueFruits;
|
|
632
|
+
});
|
|
633
|
+
|
|
634
|
+
let hamster = new, Hamster(
|
|
635
|
+
[
|
|
636
|
+
'banana',
|
|
637
|
+
'grape',
|
|
638
|
+
'kale',
|
|
639
|
+
'banana',
|
|
640
|
+
'tomato'
|
|
641
|
+
],
|
|
642
|
+
[
|
|
643
|
+
'tomato',
|
|
644
|
+
'carrot',
|
|
645
|
+
'lettuce'
|
|
646
|
+
]
|
|
647
|
+
);
|
|
648
|
+
|
|
649
|
+
hamster.uniqueFruits; // ['banana', 'grape', 'kale', 'tomato', 'carrot', 'lettuce']
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
@method union
|
|
653
|
+
@for @ember/object/computed
|
|
654
|
+
@static
|
|
655
|
+
@param {String} propertyKey*
|
|
656
|
+
@return {ComputedProperty} computes a new array with all the unique elements
|
|
657
|
+
from one or more dependent arrays.
|
|
658
|
+
@public
|
|
659
|
+
*/
|
|
660
|
+
let union = uniq;
|
|
661
|
+
|
|
662
|
+
/**
|
|
663
|
+
A computed property which returns a new array with all the elements
|
|
664
|
+
two or more dependent arrays have in common.
|
|
665
|
+
|
|
666
|
+
Example:
|
|
667
|
+
|
|
668
|
+
```javascript
|
|
669
|
+
import { set } from '@ember/object';
|
|
670
|
+
import { intersect } from '@ember/object/computed';
|
|
671
|
+
|
|
672
|
+
class FriendGroups {
|
|
673
|
+
constructor(adaFriends, charlesFriends) {
|
|
674
|
+
set(this, 'adaFriends', adaFriends);
|
|
675
|
+
set(this, 'charlesFriends', charlesFriends);
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
@intersect('adaFriends', 'charlesFriends') friendsInCommon;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
let groups = new FriendGroups(
|
|
682
|
+
['Charles Babbage', 'John Hobhouse', 'William King', 'Mary Somerville'],
|
|
683
|
+
['William King', 'Mary Somerville', 'Ada Lovelace', 'George Peacock']
|
|
684
|
+
);
|
|
685
|
+
|
|
686
|
+
groups.friendsInCommon; // ['William King', 'Mary Somerville']
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
@method intersect
|
|
690
|
+
@for @ember/object/computed
|
|
691
|
+
@static
|
|
692
|
+
@param {String} propertyKey*
|
|
693
|
+
@return {ComputedProperty} computes a new array with all the duplicated
|
|
694
|
+
elements from the dependent arrays
|
|
695
|
+
@public
|
|
696
|
+
*/
|
|
697
|
+
function intersect(dependentKey, ...additionalDependentKeys) {
|
|
698
|
+
let args = [dependentKey, ...additionalDependentKeys];
|
|
699
|
+
return multiArrayMacro(args, function (dependentKeys) {
|
|
700
|
+
let arrays = dependentKeys.map(dependentKey => {
|
|
701
|
+
let array = get(this, dependentKey);
|
|
702
|
+
return Array.isArray(array) ? array : [];
|
|
703
|
+
});
|
|
704
|
+
let firstArray = arrays.pop();
|
|
705
|
+
let results = firstArray.filter(candidate => {
|
|
706
|
+
for (let array of arrays) {
|
|
707
|
+
let found = false;
|
|
708
|
+
for (let item of array) {
|
|
709
|
+
if (item === candidate) {
|
|
710
|
+
found = true;
|
|
711
|
+
break;
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
if (found === false) {
|
|
715
|
+
return false;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
return true;
|
|
719
|
+
});
|
|
720
|
+
return A(results);
|
|
721
|
+
});
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
/**
|
|
725
|
+
A computed property which returns a new array with all the properties from the
|
|
726
|
+
first dependent array that are not in the second dependent array.
|
|
727
|
+
|
|
728
|
+
Example:
|
|
729
|
+
|
|
730
|
+
```javascript
|
|
731
|
+
import { set } from '@ember/object';
|
|
732
|
+
import { setDiff } from '@ember/object/computed';
|
|
733
|
+
|
|
734
|
+
class Hamster {
|
|
735
|
+
constructor(likes, fruits) {
|
|
736
|
+
set(this, 'likes', likes);
|
|
737
|
+
set(this, 'fruits', fruits);
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
@setDiff('likes', 'fruits') wants;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
let hamster = new Hamster(
|
|
744
|
+
[
|
|
745
|
+
'banana',
|
|
746
|
+
'grape',
|
|
747
|
+
'kale'
|
|
748
|
+
],
|
|
749
|
+
[
|
|
750
|
+
'grape',
|
|
751
|
+
'kale',
|
|
752
|
+
]
|
|
753
|
+
);
|
|
754
|
+
|
|
755
|
+
hamster.wants; // ['banana']
|
|
756
|
+
```
|
|
757
|
+
|
|
758
|
+
@method setDiff
|
|
759
|
+
@for @ember/object/computed
|
|
760
|
+
@static
|
|
761
|
+
@param {String} setAProperty
|
|
762
|
+
@param {String} setBProperty
|
|
763
|
+
@return {ComputedProperty} computes a new array with all the items from the
|
|
764
|
+
first dependent array that are not in the second dependent array
|
|
765
|
+
@public
|
|
766
|
+
*/
|
|
767
|
+
function setDiff(setAProperty, setBProperty) {
|
|
768
|
+
return computed(`${setAProperty}.[]`, `${setBProperty}.[]`, function () {
|
|
769
|
+
let setA = get(this, setAProperty);
|
|
770
|
+
let setB = get(this, setBProperty);
|
|
771
|
+
if (!isNativeOrEmberArray(setA)) {
|
|
772
|
+
return A();
|
|
773
|
+
}
|
|
774
|
+
if (!isNativeOrEmberArray(setB)) {
|
|
775
|
+
return setA;
|
|
776
|
+
}
|
|
777
|
+
return setA.filter(x => setB.indexOf(x) === -1);
|
|
778
|
+
}).readOnly();
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
/**
|
|
782
|
+
A computed property that returns the array of values for the provided
|
|
783
|
+
dependent properties.
|
|
784
|
+
|
|
785
|
+
Example:
|
|
786
|
+
|
|
787
|
+
```javascript
|
|
788
|
+
import { set } from '@ember/object';
|
|
789
|
+
import { collect } from '@ember/object/computed';
|
|
790
|
+
|
|
791
|
+
class Hamster {
|
|
792
|
+
@collect('hat', 'shirt') clothes;
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
let hamster = new Hamster();
|
|
796
|
+
|
|
797
|
+
hamster.clothes; // [null, null]
|
|
798
|
+
|
|
799
|
+
set(hamster, 'hat', 'Camp Hat');
|
|
800
|
+
set(hamster, 'shirt', 'Camp Shirt');
|
|
801
|
+
hamster.clothes; // ['Camp Hat', 'Camp Shirt']
|
|
802
|
+
```
|
|
803
|
+
|
|
804
|
+
@method collect
|
|
805
|
+
@for @ember/object/computed
|
|
806
|
+
@static
|
|
807
|
+
@param {String} dependentKey*
|
|
808
|
+
@return {ComputedProperty} computed property which maps values of all passed
|
|
809
|
+
in properties to an array.
|
|
810
|
+
@public
|
|
811
|
+
*/
|
|
812
|
+
function collect(dependentKey, ...additionalDependentKeys) {
|
|
813
|
+
let dependentKeys = [dependentKey, ...additionalDependentKeys];
|
|
814
|
+
return multiArrayMacro(dependentKeys, function () {
|
|
815
|
+
let res = dependentKeys.map(key => {
|
|
816
|
+
let val = get(this, key);
|
|
817
|
+
return val === undefined ? null : val;
|
|
818
|
+
});
|
|
819
|
+
return A(res);
|
|
820
|
+
});
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
// (UN)SAFETY: we use `any` here to match how TS defines the sorting for arrays.
|
|
824
|
+
// Additionally, since we're using it with *decorators*, we don't have any way
|
|
825
|
+
// to plumb through the relationship between the types in a way that would be
|
|
826
|
+
// variance-safe.
|
|
827
|
+
|
|
828
|
+
/**
|
|
829
|
+
A computed property which returns a new array with all the properties from the
|
|
830
|
+
first dependent array sorted based on a property or sort function. The sort
|
|
831
|
+
macro can be used in two different ways:
|
|
832
|
+
|
|
833
|
+
1. By providing a sort callback function
|
|
834
|
+
2. By providing an array of keys to sort the array
|
|
835
|
+
|
|
836
|
+
In the first form, the callback method you provide should have the following
|
|
837
|
+
signature:
|
|
838
|
+
|
|
839
|
+
```javascript
|
|
840
|
+
function sortCallback(itemA, itemB);
|
|
841
|
+
```
|
|
842
|
+
|
|
843
|
+
- `itemA` the first item to compare.
|
|
844
|
+
- `itemB` the second item to compare.
|
|
845
|
+
|
|
846
|
+
This function should return negative number (e.g. `-1`) when `itemA` should
|
|
847
|
+
come before `itemB`. It should return positive number (e.g. `1`) when `itemA`
|
|
848
|
+
should come after `itemB`. If the `itemA` and `itemB` are equal this function
|
|
849
|
+
should return `0`.
|
|
850
|
+
|
|
851
|
+
Therefore, if this function is comparing some numeric values, simple `itemA -
|
|
852
|
+
itemB` or `itemA.get( 'foo' ) - itemB.get( 'foo' )` can be used instead of
|
|
853
|
+
series of `if`.
|
|
854
|
+
|
|
855
|
+
Example:
|
|
856
|
+
|
|
857
|
+
```javascript
|
|
858
|
+
import { set } from '@ember/object';
|
|
859
|
+
import { sort } from '@ember/object/computed';
|
|
860
|
+
|
|
861
|
+
class ToDoList {
|
|
862
|
+
constructor(todos) {
|
|
863
|
+
set(this, 'todos', todos);
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
// using a custom sort function
|
|
867
|
+
@sort('todos', function(a, b){
|
|
868
|
+
if (a.priority > b.priority) {
|
|
869
|
+
return 1;
|
|
870
|
+
} else if (a.priority < b.priority) {
|
|
871
|
+
return -1;
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
return 0;
|
|
875
|
+
})
|
|
876
|
+
priorityTodos;
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
let todoList = new ToDoList([
|
|
880
|
+
{ name: 'Unit Test', priority: 2 },
|
|
881
|
+
{ name: 'Documentation', priority: 3 },
|
|
882
|
+
{ name: 'Release', priority: 1 }
|
|
883
|
+
]);
|
|
884
|
+
|
|
885
|
+
todoList.priorityTodos; // [{ name:'Release', priority:1 }, { name:'Unit Test', priority:2 }, { name:'Documentation', priority:3 }]
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
You can also optionally pass an array of additional dependent keys as the
|
|
889
|
+
second parameter, if your sort function is dependent on additional values that
|
|
890
|
+
could changes:
|
|
891
|
+
|
|
892
|
+
```js
|
|
893
|
+
import EmberObject, { set } from '@ember/object';
|
|
894
|
+
import { sort } from '@ember/object/computed';
|
|
895
|
+
|
|
896
|
+
class ToDoList {
|
|
897
|
+
sortKey = 'priority';
|
|
898
|
+
|
|
899
|
+
constructor(todos) {
|
|
900
|
+
set(this, 'todos', todos);
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
// using a custom sort function
|
|
904
|
+
@sort('todos', ['sortKey'], function(a, b){
|
|
905
|
+
if (a[this.sortKey] > b[this.sortKey]) {
|
|
906
|
+
return 1;
|
|
907
|
+
} else if (a[this.sortKey] < b[this.sortKey]) {
|
|
908
|
+
return -1;
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
return 0;
|
|
912
|
+
})
|
|
913
|
+
sortedTodos;
|
|
914
|
+
});
|
|
915
|
+
|
|
916
|
+
let todoList = new ToDoList([
|
|
917
|
+
{ name: 'Unit Test', priority: 2 },
|
|
918
|
+
{ name: 'Documentation', priority: 3 },
|
|
919
|
+
{ name: 'Release', priority: 1 }
|
|
920
|
+
]);
|
|
921
|
+
|
|
922
|
+
todoList.priorityTodos; // [{ name:'Release', priority:1 }, { name:'Unit Test', priority:2 }, { name:'Documentation', priority:3 }]
|
|
923
|
+
```
|
|
924
|
+
|
|
925
|
+
In the second form, you should provide the key of the array of sort values as
|
|
926
|
+
the second parameter:
|
|
927
|
+
|
|
928
|
+
```javascript
|
|
929
|
+
import { set } from '@ember/object';
|
|
930
|
+
import { sort } from '@ember/object/computed';
|
|
931
|
+
|
|
932
|
+
class ToDoList {
|
|
933
|
+
constructor(todos) {
|
|
934
|
+
set(this, 'todos', todos);
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
// using standard ascending sort
|
|
938
|
+
todosSorting = ['name'];
|
|
939
|
+
@sort('todos', 'todosSorting') sortedTodos;
|
|
940
|
+
|
|
941
|
+
// using descending sort
|
|
942
|
+
todosSortingDesc = ['name:desc'];
|
|
943
|
+
@sort('todos', 'todosSortingDesc') sortedTodosDesc;
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
let todoList = new ToDoList([
|
|
947
|
+
{ name: 'Unit Test', priority: 2 },
|
|
948
|
+
{ name: 'Documentation', priority: 3 },
|
|
949
|
+
{ name: 'Release', priority: 1 }
|
|
950
|
+
]);
|
|
951
|
+
|
|
952
|
+
todoList.sortedTodos; // [{ name:'Documentation', priority:3 }, { name:'Release', priority:1 }, { name:'Unit Test', priority:2 }]
|
|
953
|
+
todoList.sortedTodosDesc; // [{ name:'Unit Test', priority:2 }, { name:'Release', priority:1 }, { name:'Documentation', priority:3 }]
|
|
954
|
+
```
|
|
955
|
+
|
|
956
|
+
@method sort
|
|
957
|
+
@for @ember/object/computed
|
|
958
|
+
@static
|
|
959
|
+
@param {String} itemsKey
|
|
960
|
+
@param {String|Function|Array} sortDefinitionOrDependentKeys The key of the sort definition (an array of sort properties),
|
|
961
|
+
the sort function, or an array of additional dependent keys
|
|
962
|
+
@param {Function?} sortDefinition the sort function (when used with additional dependent keys)
|
|
963
|
+
@return {ComputedProperty} computes a new sorted array based on the sort
|
|
964
|
+
property array or callback function
|
|
965
|
+
@public
|
|
966
|
+
*/
|
|
967
|
+
|
|
968
|
+
function sort(itemsKey, additionalDependentKeysOrDefinition, sortDefinition) {
|
|
969
|
+
let additionalDependentKeys;
|
|
970
|
+
let sortDefinitionOrString;
|
|
971
|
+
if (Array.isArray(additionalDependentKeysOrDefinition)) {
|
|
972
|
+
additionalDependentKeys = additionalDependentKeysOrDefinition;
|
|
973
|
+
sortDefinitionOrString = sortDefinition;
|
|
974
|
+
} else {
|
|
975
|
+
additionalDependentKeys = [];
|
|
976
|
+
sortDefinitionOrString = additionalDependentKeysOrDefinition;
|
|
977
|
+
}
|
|
978
|
+
if (typeof sortDefinitionOrString === 'function') {
|
|
979
|
+
return customSort(itemsKey, additionalDependentKeys, sortDefinitionOrString);
|
|
980
|
+
} else {
|
|
981
|
+
return propertySort(itemsKey, sortDefinitionOrString);
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
function customSort(itemsKey, additionalDependentKeys, comparator) {
|
|
985
|
+
return arrayMacro(itemsKey, additionalDependentKeys, function (value) {
|
|
986
|
+
return value.slice().sort((x, y) => comparator.call(this, x, y));
|
|
987
|
+
});
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
// This one needs to dynamically set up and tear down observers on the itemsKey
|
|
991
|
+
// depending on the sortProperties
|
|
992
|
+
function propertySort(itemsKey, sortPropertiesKey) {
|
|
993
|
+
let cp = autoComputed(function (key) {
|
|
994
|
+
let sortProperties = get(this, sortPropertiesKey);
|
|
995
|
+
let itemsKeyIsAtThis = itemsKey === '@this';
|
|
996
|
+
let normalizedSortProperties = normalizeSortProperties(sortProperties);
|
|
997
|
+
let items = itemsKeyIsAtThis ? this : get(this, itemsKey);
|
|
998
|
+
if (!isNativeOrEmberArray(items)) {
|
|
999
|
+
return A();
|
|
1000
|
+
}
|
|
1001
|
+
if (normalizedSortProperties.length === 0) {
|
|
1002
|
+
return A(items.slice());
|
|
1003
|
+
} else {
|
|
1004
|
+
return sortByNormalizedSortProperties(items, normalizedSortProperties);
|
|
1005
|
+
}
|
|
1006
|
+
}).readOnly();
|
|
1007
|
+
return cp;
|
|
1008
|
+
}
|
|
1009
|
+
function normalizeSortProperties(sortProperties) {
|
|
1010
|
+
let callback = p => {
|
|
1011
|
+
let [prop, direction] = p.split(':');
|
|
1012
|
+
direction = direction || 'asc';
|
|
1013
|
+
|
|
1014
|
+
// SAFETY: There will always be at least one value returned by split
|
|
1015
|
+
return [prop, direction];
|
|
1016
|
+
};
|
|
1017
|
+
// This nonsense is necessary since technically the two map implementations diverge.
|
|
1018
|
+
return Array.isArray(sortProperties) ? sortProperties.map(callback) : sortProperties.map(callback);
|
|
1019
|
+
}
|
|
1020
|
+
function sortByNormalizedSortProperties(items, normalizedSortProperties) {
|
|
1021
|
+
return A(items.slice().sort((itemA, itemB) => {
|
|
1022
|
+
for (let [prop, direction] of normalizedSortProperties) {
|
|
1023
|
+
let result = compare(get(itemA, prop), get(itemB, prop));
|
|
1024
|
+
if (result !== 0) {
|
|
1025
|
+
return direction === 'desc' ? -1 * result : result;
|
|
1026
|
+
}
|
|
1027
|
+
}
|
|
1028
|
+
return 0;
|
|
1029
|
+
}));
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
export { collect, filter, filterBy, intersect, map, mapBy, max, min, setDiff, sort, sum, union, uniq, uniqBy };
|