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