@angular/core 16.0.0-next.4 → 16.0.0-next.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/{esm2020 → esm2022}/src/application_init.mjs +3 -3
- package/{esm2020 → esm2022}/src/application_module.mjs +4 -4
- package/esm2022/src/application_ref.mjs +908 -0
- package/{esm2020 → esm2022}/src/change_detection/change_detector_ref.mjs +6 -6
- package/esm2022/src/change_detection/differs/iterable_differs.mjs +81 -0
- package/esm2022/src/change_detection/differs/keyvalue_differs.mjs +74 -0
- package/{esm2020 → esm2022}/src/console.mjs +3 -3
- package/{esm2020 → esm2022}/src/core.mjs +2 -1
- package/esm2022/src/core_private_export.mjs +39 -0
- package/esm2022/src/core_reactivity_export_internal.mjs +12 -0
- package/esm2022/src/di/contextual.mjs +54 -0
- package/esm2022/src/di/index.mjs +29 -0
- package/esm2022/src/di/injector.mjs +62 -0
- package/esm2022/src/di/injector_compatibility.mjs +239 -0
- package/esm2022/src/di/provider_collection.mjs +279 -0
- package/esm2022/src/di/reflective_injector.mjs +311 -0
- package/esm2022/src/hydration/annotate.mjs +426 -0
- package/esm2022/src/hydration/api.mjs +143 -0
- package/esm2022/src/hydration/cleanup.mjs +103 -0
- package/esm2022/src/hydration/node_lookup_utils.mjs +273 -0
- package/esm2022/src/hydration/utils.mjs +219 -0
- package/esm2022/src/initial_render_pending_tasks.mjs +75 -0
- package/{esm2020 → esm2022}/src/linker/compiler.mjs +5 -5
- package/esm2022/src/linker/component_factory_resolver.mjs +42 -0
- package/{esm2020 → esm2022}/src/linker/destroy_ref.mjs +11 -11
- package/{esm2020 → esm2022}/src/linker/element_ref.mjs +6 -6
- package/esm2022/src/linker/query_list.mjs +169 -0
- package/{esm2020 → esm2022}/src/linker/template_ref.mjs +6 -6
- package/{esm2020 → esm2022}/src/linker/view_container_ref.mjs +6 -6
- package/esm2022/src/metadata/di.mjs +69 -0
- package/{esm2020 → esm2022}/src/metadata/directives.mjs +1 -1
- package/{esm2020 → esm2022}/src/metadata/do_boostrap.mjs +1 -1
- package/{esm2020 → esm2022}/src/metadata/ng_module.mjs +2 -2
- package/esm2022/src/metadata.mjs +18 -0
- package/{esm2020 → esm2022}/src/render/api.mjs +6 -6
- package/esm2022/src/render3/component_ref.mjs +386 -0
- package/{esm2020 → esm2022}/src/render3/context_discovery.mjs +1 -1
- package/esm2022/src/render3/features/standalone_feature.mjs +70 -0
- package/{esm2020 → esm2022}/src/render3/instructions/element.mjs +2 -2
- package/esm2022/src/render3/instructions/listener.mjs +244 -0
- package/esm2022/src/render3/instructions/mark_view_dirty.mjs +35 -0
- package/esm2022/src/render3/instructions/shared.mjs +1681 -0
- package/{esm2020 → esm2022}/src/render3/instructions/styling.mjs +5 -2
- package/esm2022/src/render3/interfaces/view.mjs +49 -0
- package/esm2022/src/render3/jit/module.mjs +531 -0
- package/esm2022/src/render3/node_manipulation.mjs +960 -0
- package/esm2022/src/render3/reactive_lview_consumer.mjs +80 -0
- package/esm2022/src/render3/reactivity/effect.mjs +67 -0
- package/{esm2020 → esm2022}/src/render3/util/change_detection_utils.mjs +2 -2
- package/esm2022/src/render3/view_ref.mjs +307 -0
- package/{esm2020 → esm2022}/src/sanitization/sanitizer.mjs +7 -7
- package/esm2022/src/signals/index.mjs +15 -0
- package/esm2022/src/signals/src/api.mjs +47 -0
- package/esm2022/src/signals/src/computed.mjs +139 -0
- package/esm2022/src/signals/src/graph.mjs +165 -0
- package/esm2022/src/signals/src/signal.mjs +75 -0
- package/esm2022/src/signals/src/watch.mjs +62 -0
- package/esm2022/src/signals/src/weak_ref.mjs +35 -0
- package/{esm2020 → esm2022}/src/testability/testability.mjs +5 -5
- package/esm2022/src/transfer_state.mjs +153 -0
- package/{esm2020 → esm2022}/src/version.mjs +1 -1
- package/{esm2020 → esm2022}/testing/src/logger.mjs +4 -4
- package/{esm2020 → esm2022}/testing/src/ng_zone_mock.mjs +4 -4
- package/{esm2020 → esm2022}/testing/src/test_bed.mjs +2 -2
- package/{fesm2020 → fesm2022}/core.mjs +869 -639
- package/fesm2022/core.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/testing.mjs +406 -124
- package/fesm2022/testing.mjs.map +1 -0
- package/index.d.ts +334 -187
- package/package.json +8 -16
- package/schematics/migrations/guard-and-resolve-interfaces/bundle.js +694 -0
- package/schematics/migrations/guard-and-resolve-interfaces/bundle.js.map +7 -0
- package/schematics/migrations/{router-link-with-href → remove-module-id}/bundle.js +149 -151
- package/schematics/migrations/remove-module-id/bundle.js.map +7 -0
- package/schematics/migrations.json +8 -8
- package/schematics/ng-generate/standalone-migration/bundle.js +617 -251
- package/schematics/ng-generate/standalone-migration/bundle.js.map +2 -2
- package/testing/index.d.ts +1 -1
- package/esm2020/src/application_ref.mjs +0 -907
- package/esm2020/src/change_detection/differs/iterable_differs.mjs +0 -81
- package/esm2020/src/change_detection/differs/keyvalue_differs.mjs +0 -74
- package/esm2020/src/core_private_export.mjs +0 -38
- package/esm2020/src/core_reactivity_export_internal.mjs +0 -9
- package/esm2020/src/di/contextual.mjs +0 -37
- package/esm2020/src/di/index.mjs +0 -29
- package/esm2020/src/di/injector.mjs +0 -62
- package/esm2020/src/di/injector_compatibility.mjs +0 -236
- package/esm2020/src/di/provider_collection.mjs +0 -279
- package/esm2020/src/di/reflective_injector.mjs +0 -311
- package/esm2020/src/hydration/annotate.mjs +0 -384
- package/esm2020/src/hydration/api.mjs +0 -141
- package/esm2020/src/hydration/cleanup.mjs +0 -101
- package/esm2020/src/hydration/node_lookup_utils.mjs +0 -275
- package/esm2020/src/hydration/utils.mjs +0 -219
- package/esm2020/src/linker/component_factory_resolver.mjs +0 -42
- package/esm2020/src/linker/query_list.mjs +0 -169
- package/esm2020/src/metadata/di.mjs +0 -108
- package/esm2020/src/metadata.mjs +0 -18
- package/esm2020/src/render3/component_ref.mjs +0 -377
- package/esm2020/src/render3/features/standalone_feature.mjs +0 -70
- package/esm2020/src/render3/instructions/listener.mjs +0 -243
- package/esm2020/src/render3/instructions/shared.mjs +0 -1696
- package/esm2020/src/render3/interfaces/view.mjs +0 -47
- package/esm2020/src/render3/jit/module.mjs +0 -544
- package/esm2020/src/render3/node_manipulation.mjs +0 -961
- package/esm2020/src/render3/view_ref.mjs +0 -306
- package/esm2020/src/signals/index.mjs +0 -16
- package/esm2020/src/signals/src/api.mjs +0 -46
- package/esm2020/src/signals/src/computed.mjs +0 -142
- package/esm2020/src/signals/src/effect.mjs +0 -67
- package/esm2020/src/signals/src/graph.mjs +0 -114
- package/esm2020/src/signals/src/signal.mjs +0 -78
- package/esm2020/src/signals/src/watch.mjs +0 -54
- package/esm2020/src/signals/src/weak_ref.mjs +0 -27
- package/esm2020/src/transfer_state.mjs +0 -153
- package/fesm2015/core.mjs +0 -30473
- package/fesm2015/core.mjs.map +0 -1
- package/fesm2015/testing.mjs +0 -26417
- package/fesm2015/testing.mjs.map +0 -1
- package/fesm2020/core.mjs.map +0 -1
- package/fesm2020/testing.mjs.map +0 -1
- package/schematics/migrations/relative-link-resolution/bundle.js +0 -283
- package/schematics/migrations/relative-link-resolution/bundle.js.map +0 -7
- package/schematics/migrations/router-link-with-href/bundle.js.map +0 -7
- /package/{esm2020 → esm2022}/core.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/src/application_config.mjs +0 -0
- /package/{esm2020 → esm2022}/src/application_tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/src/change_detection/change_detection.mjs +0 -0
- /package/{esm2020 → esm2022}/src/change_detection/constants.mjs +0 -0
- /package/{esm2020 → esm2022}/src/change_detection/differs/default_iterable_differ.mjs +0 -0
- /package/{esm2020 → esm2022}/src/change_detection/differs/default_keyvalue_differ.mjs +0 -0
- /package/{esm2020 → esm2022}/src/change_detection/pipe_transform.mjs +0 -0
- /package/{esm2020 → esm2022}/src/change_detection.mjs +0 -0
- /package/{esm2020 → esm2022}/src/compiler/compiler_facade.mjs +0 -0
- /package/{esm2020 → esm2022}/src/compiler/compiler_facade_interface.mjs +0 -0
- /package/{esm2020 → esm2022}/src/core_reactivity_export.mjs +0 -0
- /package/{esm2020 → esm2022}/src/core_render3_private_export.mjs +0 -0
- /package/{esm2020 → esm2022}/src/debug/debug_node.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/create_injector.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/forward_ref.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/initializer_token.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/inject_switch.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/injectable.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/injection_token.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/injector_marker.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/injector_token.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/interface/defs.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/interface/injector.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/interface/provider.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/internal_tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/jit/environment.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/jit/injectable.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/jit/util.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/metadata.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/metadata_attr.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/null_injector.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/provider_token.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/r3_injector.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/reflective_errors.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/reflective_key.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/reflective_provider.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di/scope.mjs +0 -0
- /package/{esm2020 → esm2022}/src/di.mjs +0 -0
- /package/{esm2020 → esm2022}/src/error_details_base_url.mjs +0 -0
- /package/{esm2020 → esm2022}/src/error_handler.mjs +0 -0
- /package/{esm2020 → esm2022}/src/errors.mjs +0 -0
- /package/{esm2020 → esm2022}/src/event_emitter.mjs +0 -0
- /package/{esm2020 → esm2022}/src/hydration/compression.mjs +0 -0
- /package/{esm2020 → esm2022}/src/hydration/error_handling.mjs +0 -0
- /package/{esm2020 → esm2022}/src/hydration/interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/src/hydration/skip_hydration.mjs +0 -0
- /package/{esm2020 → esm2022}/src/hydration/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/src/hydration/views.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/locale_data_api.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/locale_en.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/localization.mjs +0 -0
- /package/{esm2020 → esm2022}/src/i18n/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/src/interface/lifecycle_hooks.mjs +0 -0
- /package/{esm2020 → esm2022}/src/interface/simple_change.mjs +0 -0
- /package/{esm2020 → esm2022}/src/interface/type.mjs +0 -0
- /package/{esm2020 → esm2022}/src/linker/component_factory.mjs +0 -0
- /package/{esm2020 → esm2022}/src/linker/ng_module_factory.mjs +0 -0
- /package/{esm2020 → esm2022}/src/linker/ng_module_factory_loader.mjs +0 -0
- /package/{esm2020 → esm2022}/src/linker/ng_module_factory_loader_impl.mjs +0 -0
- /package/{esm2020 → esm2022}/src/linker/ng_module_registration.mjs +0 -0
- /package/{esm2020 → esm2022}/src/linker/view_ref.mjs +0 -0
- /package/{esm2020 → esm2022}/src/linker.mjs +0 -0
- /package/{esm2020 → esm2022}/src/metadata/ng_module_def.mjs +0 -0
- /package/{esm2020 → esm2022}/src/metadata/resource_loading.mjs +0 -0
- /package/{esm2020 → esm2022}/src/metadata/schema.mjs +0 -0
- /package/{esm2020 → esm2022}/src/metadata/view.mjs +0 -0
- /package/{esm2020 → esm2022}/src/platform_core_providers.mjs +0 -0
- /package/{esm2020 → esm2022}/src/r3_symbols.mjs +0 -0
- /package/{esm2020 → esm2022}/src/reflection/platform_reflection_capabilities.mjs +0 -0
- /package/{esm2020 → esm2022}/src/reflection/reflection_capabilities.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render/api_flags.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/assert.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/bindings.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/collect_native_nodes.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/component.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/definition.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/definition_factory.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/di.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/di_setup.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/errors.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/errors_di.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/features/copy_definition_feature.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/features/host_directives_feature.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/features/inherit_definition_feature.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/features/ng_onchanges_feature.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/features/providers_feature.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/fields.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/global_utils_api.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/hooks.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/i18n/i18n_apply.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/i18n/i18n_debug.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/i18n/i18n_insert_before_index.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/i18n/i18n_locale_id.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/i18n/i18n_parse.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/i18n/i18n_postprocess.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/i18n/i18n_tree_shaking.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/i18n/i18n_util.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/index.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/advance.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/all.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/attribute.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/attribute_interpolation.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/change_detection.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/class_map_interpolation.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/di.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/di_attr.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/element_container.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/element_validation.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/get_current_view.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/host_property.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/i18n.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/i18n_icu_container_visitor.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/interpolation.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/namespace.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/next_context.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/projection.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/property.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/property_interpolation.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/storage.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/style_map_interpolation.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/style_prop_interpolation.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/template.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/text.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/instructions/text_interpolation.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/container.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/context.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/definition.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/document.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/i18n.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/injector.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/lview_tracking.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/node.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/projection.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/public_definitions.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/query.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/renderer.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/renderer_dom.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/sanitization.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/styling.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/interfaces/type_checks.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/jit/directive.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/jit/environment.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/jit/jit_options.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/jit/module_patch.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/jit/partial.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/jit/pipe.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/jit/util.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/metadata.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/namespaces.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/ng_module_ref.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/node_assert.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/node_manipulation_i18n.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/node_selector_matcher.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/pipe.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/profiler.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/pure_function.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/query.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/state.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/styling/class_differ.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/styling/static_styling.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/styling/style_binding_list.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/styling/styling_parser.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/util/attrs_utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/util/discovery_utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/util/global_utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/util/injector_utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/util/misc_utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/util/stringify_utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/util/view_traversal_utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/util/view_utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/render3/view_engine_compatibility_prebound.mjs +0 -0
- /package/{esm2020 → esm2022}/src/sanitization/bypass.mjs +0 -0
- /package/{esm2020 → esm2022}/src/sanitization/html_sanitizer.mjs +0 -0
- /package/{esm2020 → esm2022}/src/sanitization/iframe_attrs_validation.mjs +0 -0
- /package/{esm2020 → esm2022}/src/sanitization/inert_body.mjs +0 -0
- /package/{esm2020 → esm2022}/src/sanitization/sanitization.mjs +0 -0
- /package/{esm2020 → esm2022}/src/sanitization/security.mjs +0 -0
- /package/{esm2020 → esm2022}/src/sanitization/url_sanitizer.mjs +0 -0
- /package/{esm2020 → esm2022}/src/signals/src/untracked.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/array_utils.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/assert.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/char_code.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/closure.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/coercion.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/comparison.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/decorators.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/dom.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/empty.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/errors.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/global.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/is_dev_mode.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/iterable.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/lang.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/microtask.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/ng_dev_mode.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/ng_i18n_closure_mode.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/ng_jit_mode.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/ng_reflect.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/noop.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/property.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/raf.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/security/trusted_type_defs.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/security/trusted_types.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/security/trusted_types_bypass.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util/stringify.mjs +0 -0
- /package/{esm2020 → esm2022}/src/view/provider_flags.mjs +0 -0
- /package/{esm2020 → esm2022}/src/zone/async-stack-tagging.mjs +0 -0
- /package/{esm2020 → esm2022}/src/zone/ng_zone.mjs +0 -0
- /package/{esm2020 → esm2022}/src/zone.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/index.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/async.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/component_fixture.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/fake_async.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/metadata_override.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/metadata_overrider.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/resolvers.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/styling.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/test_bed_common.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/test_bed_compiler.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/test_hooks.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/testing.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/src/testing_internal.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/testing.mjs +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v16.0.0-next.
|
|
2
|
+
* @license Angular v16.0.0-next.5
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -1842,6 +1842,9 @@ const SOURCE = '__source';
|
|
|
1842
1842
|
* - Injector instance: Use the injector for resolution.
|
|
1843
1843
|
*/
|
|
1844
1844
|
let _currentInjector = undefined;
|
|
1845
|
+
function getCurrentInjector() {
|
|
1846
|
+
return _currentInjector;
|
|
1847
|
+
}
|
|
1845
1848
|
function setCurrentInjector(injector) {
|
|
1846
1849
|
const former = _currentInjector;
|
|
1847
1850
|
_currentInjector = injector;
|
|
@@ -1850,7 +1853,7 @@ function setCurrentInjector(injector) {
|
|
|
1850
1853
|
function injectInjectorOnly(token, flags = InjectFlags.Default) {
|
|
1851
1854
|
if (_currentInjector === undefined) {
|
|
1852
1855
|
throw new RuntimeError(-203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, ngDevMode &&
|
|
1853
|
-
`inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with \`
|
|
1856
|
+
`inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with \`runInInjectionContext\`.`);
|
|
1854
1857
|
}
|
|
1855
1858
|
else if (_currentInjector === null) {
|
|
1856
1859
|
return injectRootLimpMode(token, undefined, flags);
|
|
@@ -3231,6 +3234,8 @@ const ID = 20;
|
|
|
3231
3234
|
const EMBEDDED_VIEW_INJECTOR = 21;
|
|
3232
3235
|
const ON_DESTROY_HOOKS = 22;
|
|
3233
3236
|
const HYDRATION = 23;
|
|
3237
|
+
const REACTIVE_TEMPLATE_CONSUMER = 24;
|
|
3238
|
+
const REACTIVE_HOST_BINDING_CONSUMER = 25;
|
|
3234
3239
|
/**
|
|
3235
3240
|
* Size of LView's header. Necessary to adjust for it when setting slots.
|
|
3236
3241
|
*
|
|
@@ -3238,7 +3243,7 @@ const HYDRATION = 23;
|
|
|
3238
3243
|
* instruction index into `LView` index. All other indexes should be in the `LView` index space and
|
|
3239
3244
|
* there should be no need to refer to `HEADER_OFFSET` anywhere else.
|
|
3240
3245
|
*/
|
|
3241
|
-
const HEADER_OFFSET =
|
|
3246
|
+
const HEADER_OFFSET = 26;
|
|
3242
3247
|
// Note: This hack is necessary so we don't erroneously get a circular dependency
|
|
3243
3248
|
// failure based on types.
|
|
3244
3249
|
const unusedValueExportToPlacateAjd$4 = 1;
|
|
@@ -6739,6 +6744,8 @@ function detachView(lContainer, removeIndex) {
|
|
|
6739
6744
|
function destroyLView(tView, lView) {
|
|
6740
6745
|
if (!(lView[FLAGS] & 128 /* LViewFlags.Destroyed */)) {
|
|
6741
6746
|
const renderer = lView[RENDERER];
|
|
6747
|
+
lView[REACTIVE_TEMPLATE_CONSUMER]?.destroy();
|
|
6748
|
+
lView[REACTIVE_HOST_BINDING_CONSUMER]?.destroy();
|
|
6742
6749
|
if (renderer.destroyNode) {
|
|
6743
6750
|
applyView(tView, lView, renderer, 3 /* WalkTNodeTreeAction.Destroy */, null, null);
|
|
6744
6751
|
}
|
|
@@ -7139,15 +7146,12 @@ function nativeRemoveNode(renderer, rNode, isHostElement) {
|
|
|
7139
7146
|
}
|
|
7140
7147
|
}
|
|
7141
7148
|
/**
|
|
7142
|
-
*
|
|
7149
|
+
* Clears the contents of a given RElement.
|
|
7143
7150
|
*
|
|
7144
|
-
* @param renderer A renderer to be used
|
|
7145
7151
|
* @param rElement the native RElement to be cleared
|
|
7146
7152
|
*/
|
|
7147
|
-
function clearElementContents(
|
|
7148
|
-
|
|
7149
|
-
nativeRemoveChild(renderer, rElement, rElement.firstChild, false);
|
|
7150
|
-
}
|
|
7153
|
+
function clearElementContents(rElement) {
|
|
7154
|
+
rElement.textContent = '';
|
|
7151
7155
|
}
|
|
7152
7156
|
/**
|
|
7153
7157
|
* Performs the operation of `action` on the node. Typically this involves inserting or removing
|
|
@@ -8540,7 +8544,7 @@ function internalImportProvidersFrom(checkForStandaloneCmp, ...sources) {
|
|
|
8540
8544
|
// Narrow `source` to access the internal type analogue for `ModuleWithProviders`.
|
|
8541
8545
|
const internalSource = source;
|
|
8542
8546
|
if (walkProviderTree(internalSource, providersOut, [], dedup)) {
|
|
8543
|
-
injectorTypesWithProviders
|
|
8547
|
+
injectorTypesWithProviders ||= [];
|
|
8544
8548
|
injectorTypesWithProviders.push(internalSource);
|
|
8545
8549
|
}
|
|
8546
8550
|
});
|
|
@@ -8636,7 +8640,7 @@ function walkProviderTree(container, providersOut, parents, dedup) {
|
|
|
8636
8640
|
try {
|
|
8637
8641
|
deepForEach(injDef.imports, imported => {
|
|
8638
8642
|
if (walkProviderTree(imported, providersOut, parents, dedup)) {
|
|
8639
|
-
importTypesWithProviders
|
|
8643
|
+
importTypesWithProviders ||= [];
|
|
8640
8644
|
// If the processed import is an injector type with providers, we store it in the
|
|
8641
8645
|
// list of import types with providers, so that we can process those afterwards.
|
|
8642
8646
|
importTypesWithProviders.push(imported);
|
|
@@ -9294,6 +9298,13 @@ class TransferState {
|
|
|
9294
9298
|
this.store = {};
|
|
9295
9299
|
this.onSerializeCallbacks = {};
|
|
9296
9300
|
}
|
|
9301
|
+
/** @nocollapse */
|
|
9302
|
+
static { this.ɵprov =
|
|
9303
|
+
/** @pureOrBreakMyCode */ ɵɵdefineInjectable({
|
|
9304
|
+
token: TransferState,
|
|
9305
|
+
providedIn: 'root',
|
|
9306
|
+
factory: initTransferState,
|
|
9307
|
+
}); }
|
|
9297
9308
|
/**
|
|
9298
9309
|
* Get the value corresponding to a key. Return `defaultValue` if key is not found.
|
|
9299
9310
|
*/
|
|
@@ -9348,13 +9359,6 @@ class TransferState {
|
|
|
9348
9359
|
return JSON.stringify(this.store);
|
|
9349
9360
|
}
|
|
9350
9361
|
}
|
|
9351
|
-
/** @nocollapse */
|
|
9352
|
-
TransferState.ɵprov =
|
|
9353
|
-
/** @pureOrBreakMyCode */ ɵɵdefineInjectable({
|
|
9354
|
-
token: TransferState,
|
|
9355
|
-
providedIn: 'root',
|
|
9356
|
-
factory: initTransferState,
|
|
9357
|
-
});
|
|
9358
9362
|
function retrieveTransferredState(doc, appId) {
|
|
9359
9363
|
// Locate the script tag with the JSON data transferred from the server.
|
|
9360
9364
|
// The id of the script tag is set to the Angular appId + 'state'.
|
|
@@ -9550,7 +9554,7 @@ function isRNodeClaimedForHydration(node) {
|
|
|
9550
9554
|
return !!node.__claimed;
|
|
9551
9555
|
}
|
|
9552
9556
|
function setSegmentHead(hydrationInfo, index, node) {
|
|
9553
|
-
hydrationInfo.segmentHeads
|
|
9557
|
+
hydrationInfo.segmentHeads ??= {};
|
|
9554
9558
|
hydrationInfo.segmentHeads[index] = node;
|
|
9555
9559
|
}
|
|
9556
9560
|
function getSegmentHead(hydrationInfo, index) {
|
|
@@ -9629,7 +9633,7 @@ class ComponentFactory$1 {
|
|
|
9629
9633
|
}
|
|
9630
9634
|
|
|
9631
9635
|
function noComponentFactoryError(component) {
|
|
9632
|
-
const error = Error(`No component factory found for ${stringify(component)}
|
|
9636
|
+
const error = Error(`No component factory found for ${stringify(component)}.`);
|
|
9633
9637
|
error[ERROR_COMPONENT] = component;
|
|
9634
9638
|
return error;
|
|
9635
9639
|
}
|
|
@@ -9658,8 +9662,8 @@ class _NullComponentFactoryResolver {
|
|
|
9658
9662
|
* Component class can be used directly.
|
|
9659
9663
|
*/
|
|
9660
9664
|
class ComponentFactoryResolver$1 {
|
|
9665
|
+
static { this.NULL = ( /* @__PURE__ */new _NullComponentFactoryResolver()); }
|
|
9661
9666
|
}
|
|
9662
|
-
ComponentFactoryResolver$1.NULL = ( /* @__PURE__ */new _NullComponentFactoryResolver());
|
|
9663
9667
|
|
|
9664
9668
|
/**
|
|
9665
9669
|
* Creates an ElementRef from the most recent node.
|
|
@@ -9698,12 +9702,12 @@ class ElementRef {
|
|
|
9698
9702
|
constructor(nativeElement) {
|
|
9699
9703
|
this.nativeElement = nativeElement;
|
|
9700
9704
|
}
|
|
9705
|
+
/**
|
|
9706
|
+
* @internal
|
|
9707
|
+
* @nocollapse
|
|
9708
|
+
*/
|
|
9709
|
+
static { this.__NG_ELEMENT_ID__ = injectElementRef; }
|
|
9701
9710
|
}
|
|
9702
|
-
/**
|
|
9703
|
-
* @internal
|
|
9704
|
-
* @nocollapse
|
|
9705
|
-
*/
|
|
9706
|
-
ElementRef.__NG_ELEMENT_ID__ = injectElementRef;
|
|
9707
9711
|
/**
|
|
9708
9712
|
* Unwraps `ElementRef` and return the `nativeElement`.
|
|
9709
9713
|
*
|
|
@@ -9737,12 +9741,12 @@ class RendererFactory2 {
|
|
|
9737
9741
|
* @publicApi
|
|
9738
9742
|
*/
|
|
9739
9743
|
class Renderer2 {
|
|
9744
|
+
/**
|
|
9745
|
+
* @internal
|
|
9746
|
+
* @nocollapse
|
|
9747
|
+
*/
|
|
9748
|
+
static { this.__NG_ELEMENT_ID__ = () => injectRenderer2(); }
|
|
9740
9749
|
}
|
|
9741
|
-
/**
|
|
9742
|
-
* @internal
|
|
9743
|
-
* @nocollapse
|
|
9744
|
-
*/
|
|
9745
|
-
Renderer2.__NG_ELEMENT_ID__ = () => injectRenderer2();
|
|
9746
9750
|
/** Injects a Renderer2 for the current component. */
|
|
9747
9751
|
function injectRenderer2() {
|
|
9748
9752
|
// We need the Renderer to be based on the component that it's being injected into, however since
|
|
@@ -9759,13 +9763,13 @@ function injectRenderer2() {
|
|
|
9759
9763
|
* @publicApi
|
|
9760
9764
|
*/
|
|
9761
9765
|
class Sanitizer {
|
|
9766
|
+
/** @nocollapse */
|
|
9767
|
+
static { this.ɵprov = ɵɵdefineInjectable({
|
|
9768
|
+
token: Sanitizer,
|
|
9769
|
+
providedIn: 'root',
|
|
9770
|
+
factory: () => null,
|
|
9771
|
+
}); }
|
|
9762
9772
|
}
|
|
9763
|
-
/** @nocollapse */
|
|
9764
|
-
Sanitizer.ɵprov = ɵɵdefineInjectable({
|
|
9765
|
-
token: Sanitizer,
|
|
9766
|
-
providedIn: 'root',
|
|
9767
|
-
factory: () => null,
|
|
9768
|
-
});
|
|
9769
9773
|
|
|
9770
9774
|
/**
|
|
9771
9775
|
* @description Represents the version of Angular
|
|
@@ -9783,7 +9787,7 @@ class Version {
|
|
|
9783
9787
|
/**
|
|
9784
9788
|
* @publicApi
|
|
9785
9789
|
*/
|
|
9786
|
-
const VERSION = new Version('16.0.0-next.
|
|
9790
|
+
const VERSION = new Version('16.0.0-next.5');
|
|
9787
9791
|
|
|
9788
9792
|
// This default value is when checking the hierarchy for a token.
|
|
9789
9793
|
//
|
|
@@ -9864,11 +9868,11 @@ class ErrorHandler {
|
|
|
9864
9868
|
}
|
|
9865
9869
|
}
|
|
9866
9870
|
|
|
9867
|
-
const NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;
|
|
9871
|
+
const NG_DEV_MODE$1 = typeof ngDevMode === 'undefined' || !!ngDevMode;
|
|
9868
9872
|
/**
|
|
9869
9873
|
* Internal token that specifies whether hydration is enabled.
|
|
9870
9874
|
*/
|
|
9871
|
-
const IS_HYDRATION_FEATURE_ENABLED = new InjectionToken(NG_DEV_MODE ? 'IS_HYDRATION_FEATURE_ENABLED' : '');
|
|
9875
|
+
const IS_HYDRATION_FEATURE_ENABLED = new InjectionToken(NG_DEV_MODE$1 ? 'IS_HYDRATION_FEATURE_ENABLED' : '');
|
|
9872
9876
|
// By default (in client rendering mode), we remove all the contents
|
|
9873
9877
|
// of the host element and render an application after that.
|
|
9874
9878
|
const PRESERVE_HOST_CONTENT_DEFAULT = false;
|
|
@@ -9876,7 +9880,7 @@ const PRESERVE_HOST_CONTENT_DEFAULT = false;
|
|
|
9876
9880
|
* Internal token that indicates whether host element content should be
|
|
9877
9881
|
* retained during the bootstrap.
|
|
9878
9882
|
*/
|
|
9879
|
-
const PRESERVE_HOST_CONTENT = new InjectionToken(NG_DEV_MODE ? 'PRESERVE_HOST_CONTENT' : '', {
|
|
9883
|
+
const PRESERVE_HOST_CONTENT = new InjectionToken(NG_DEV_MODE$1 ? 'PRESERVE_HOST_CONTENT' : '', {
|
|
9880
9884
|
providedIn: 'root',
|
|
9881
9885
|
factory: () => PRESERVE_HOST_CONTENT_DEFAULT,
|
|
9882
9886
|
});
|
|
@@ -9986,6 +9990,285 @@ function getExpressionChangedErrorDetails(lView, bindingIndex, oldValue, newValu
|
|
|
9986
9990
|
return { propName: undefined, oldValue, newValue };
|
|
9987
9991
|
}
|
|
9988
9992
|
|
|
9993
|
+
/**
|
|
9994
|
+
* A `WeakRef`-compatible reference that fakes the API with a strong reference
|
|
9995
|
+
* internally.
|
|
9996
|
+
*/
|
|
9997
|
+
class LeakyRef {
|
|
9998
|
+
constructor(ref) {
|
|
9999
|
+
this.ref = ref;
|
|
10000
|
+
}
|
|
10001
|
+
deref() {
|
|
10002
|
+
return this.ref;
|
|
10003
|
+
}
|
|
10004
|
+
}
|
|
10005
|
+
// `WeakRef` is not always defined in every TS environment where Angular is compiled. Instead,
|
|
10006
|
+
// read it off of the global context if available.
|
|
10007
|
+
// tslint:disable-next-line: no-toplevel-property-access
|
|
10008
|
+
let WeakRefImpl = _global$1['WeakRef'] ?? LeakyRef;
|
|
10009
|
+
function newWeakRef(value) {
|
|
10010
|
+
if (typeof ngDevMode !== 'undefined' && ngDevMode && WeakRefImpl === undefined) {
|
|
10011
|
+
throw new Error(`Angular requires a browser which supports the 'WeakRef' API`);
|
|
10012
|
+
}
|
|
10013
|
+
return new WeakRefImpl(value);
|
|
10014
|
+
}
|
|
10015
|
+
function setAlternateWeakRefImpl(impl) {
|
|
10016
|
+
// no-op since the alternate impl is included by default by the framework. Remove once internal
|
|
10017
|
+
// migration is complete.
|
|
10018
|
+
}
|
|
10019
|
+
|
|
10020
|
+
/**
|
|
10021
|
+
* Counter tracking the next `ProducerId` or `ConsumerId`.
|
|
10022
|
+
*/
|
|
10023
|
+
let _nextReactiveId = 0;
|
|
10024
|
+
/**
|
|
10025
|
+
* Tracks the currently active reactive consumer (or `null` if there is no active
|
|
10026
|
+
* consumer).
|
|
10027
|
+
*/
|
|
10028
|
+
let activeConsumer = null;
|
|
10029
|
+
function setActiveConsumer(consumer) {
|
|
10030
|
+
const prev = activeConsumer;
|
|
10031
|
+
activeConsumer = consumer;
|
|
10032
|
+
return prev;
|
|
10033
|
+
}
|
|
10034
|
+
/**
|
|
10035
|
+
* A node in the reactive graph.
|
|
10036
|
+
*
|
|
10037
|
+
* Nodes can be producers of reactive values, consumers of other reactive values, or both.
|
|
10038
|
+
*
|
|
10039
|
+
* Producers are nodes that produce values, and can be depended upon by consumer nodes.
|
|
10040
|
+
*
|
|
10041
|
+
* Producers expose a monotonic `valueVersion` counter, and are responsible for incrementing this
|
|
10042
|
+
* version when their value semantically changes. Some producers may produce their values lazily and
|
|
10043
|
+
* thus at times need to be polled for potential updates to their value (and by extension their
|
|
10044
|
+
* `valueVersion`). This is accomplished via the `onProducerUpdateValueVersion` method for
|
|
10045
|
+
* implemented by producers, which should perform whatever calculations are necessary to ensure
|
|
10046
|
+
* `valueVersion` is up to date.
|
|
10047
|
+
*
|
|
10048
|
+
* Consumers are nodes that depend on the values of producers and are notified when those values
|
|
10049
|
+
* might have changed.
|
|
10050
|
+
*
|
|
10051
|
+
* Consumers do not wrap the reads they consume themselves, but rather can be set as the active
|
|
10052
|
+
* reader via `setActiveConsumer`. Reads of producers that happen while a consumer is active will
|
|
10053
|
+
* result in those producers being added as dependencies of that consumer node.
|
|
10054
|
+
*
|
|
10055
|
+
* The set of dependencies of a consumer is dynamic. Implementers expose a monotonically increasing
|
|
10056
|
+
* `trackingVersion` counter, which increments whenever the consumer is about to re-run any reactive
|
|
10057
|
+
* reads it needs and establish a new set of dependencies as a result.
|
|
10058
|
+
*
|
|
10059
|
+
* Producers store the last `trackingVersion` they've seen from `Consumer`s which have read them.
|
|
10060
|
+
* This allows a producer to identify whether its record of the dependency is current or stale, by
|
|
10061
|
+
* comparing the consumer's `trackingVersion` to the version at which the dependency was
|
|
10062
|
+
* last observed.
|
|
10063
|
+
*/
|
|
10064
|
+
class ReactiveNode {
|
|
10065
|
+
constructor() {
|
|
10066
|
+
this.id = _nextReactiveId++;
|
|
10067
|
+
/**
|
|
10068
|
+
* A cached weak reference to this node, which will be used in `ReactiveEdge`s.
|
|
10069
|
+
*/
|
|
10070
|
+
this.ref = newWeakRef(this);
|
|
10071
|
+
/**
|
|
10072
|
+
* Edges to producers on which this node depends (in its consumer capacity).
|
|
10073
|
+
*/
|
|
10074
|
+
this.producers = new Map();
|
|
10075
|
+
/**
|
|
10076
|
+
* Edges to consumers on which this node depends (in its producer capacity).
|
|
10077
|
+
*/
|
|
10078
|
+
this.consumers = new Map();
|
|
10079
|
+
/**
|
|
10080
|
+
* Monotonically increasing counter representing a version of this `Consumer`'s
|
|
10081
|
+
* dependencies.
|
|
10082
|
+
*/
|
|
10083
|
+
this.trackingVersion = 0;
|
|
10084
|
+
/**
|
|
10085
|
+
* Monotonically increasing counter which increases when the value of this `Producer`
|
|
10086
|
+
* semantically changes.
|
|
10087
|
+
*/
|
|
10088
|
+
this.valueVersion = 0;
|
|
10089
|
+
}
|
|
10090
|
+
/**
|
|
10091
|
+
* Polls dependencies of a consumer to determine if they have actually changed.
|
|
10092
|
+
*
|
|
10093
|
+
* If this returns `false`, then even though the consumer may have previously been notified of a
|
|
10094
|
+
* change, the values of its dependencies have not actually changed and the consumer should not
|
|
10095
|
+
* rerun any reactions.
|
|
10096
|
+
*/
|
|
10097
|
+
consumerPollProducersForChange() {
|
|
10098
|
+
for (const [producerId, edge] of this.producers) {
|
|
10099
|
+
const producer = edge.producerNode.deref();
|
|
10100
|
+
if (producer === undefined || edge.atTrackingVersion !== this.trackingVersion) {
|
|
10101
|
+
// This dependency edge is stale, so remove it.
|
|
10102
|
+
this.producers.delete(producerId);
|
|
10103
|
+
producer?.consumers.delete(this.id);
|
|
10104
|
+
continue;
|
|
10105
|
+
}
|
|
10106
|
+
if (producer.producerPollStatus(edge.seenValueVersion)) {
|
|
10107
|
+
// One of the dependencies reports a real value change.
|
|
10108
|
+
return true;
|
|
10109
|
+
}
|
|
10110
|
+
}
|
|
10111
|
+
// No dependency reported a real value change, so the `Consumer` has also not been
|
|
10112
|
+
// impacted.
|
|
10113
|
+
return false;
|
|
10114
|
+
}
|
|
10115
|
+
/**
|
|
10116
|
+
* Notify all consumers of this producer that its value may have changed.
|
|
10117
|
+
*/
|
|
10118
|
+
producerMayHaveChanged() {
|
|
10119
|
+
for (const [consumerId, edge] of this.consumers) {
|
|
10120
|
+
const consumer = edge.consumerNode.deref();
|
|
10121
|
+
if (consumer === undefined || consumer.trackingVersion !== edge.atTrackingVersion) {
|
|
10122
|
+
this.consumers.delete(consumerId);
|
|
10123
|
+
consumer?.producers.delete(this.id);
|
|
10124
|
+
continue;
|
|
10125
|
+
}
|
|
10126
|
+
consumer.onConsumerDependencyMayHaveChanged();
|
|
10127
|
+
}
|
|
10128
|
+
}
|
|
10129
|
+
/**
|
|
10130
|
+
* Mark that this producer node has been accessed in the current reactive context.
|
|
10131
|
+
*/
|
|
10132
|
+
producerAccessed() {
|
|
10133
|
+
if (activeConsumer === null) {
|
|
10134
|
+
return;
|
|
10135
|
+
}
|
|
10136
|
+
// Either create or update the dependency `Edge` in both directions.
|
|
10137
|
+
let edge = activeConsumer.producers.get(this.id);
|
|
10138
|
+
if (edge === undefined) {
|
|
10139
|
+
edge = {
|
|
10140
|
+
consumerNode: activeConsumer.ref,
|
|
10141
|
+
producerNode: this.ref,
|
|
10142
|
+
seenValueVersion: this.valueVersion,
|
|
10143
|
+
atTrackingVersion: activeConsumer.trackingVersion,
|
|
10144
|
+
};
|
|
10145
|
+
activeConsumer.producers.set(this.id, edge);
|
|
10146
|
+
this.consumers.set(activeConsumer.id, edge);
|
|
10147
|
+
}
|
|
10148
|
+
else {
|
|
10149
|
+
edge.seenValueVersion = this.valueVersion;
|
|
10150
|
+
edge.atTrackingVersion = activeConsumer.trackingVersion;
|
|
10151
|
+
}
|
|
10152
|
+
}
|
|
10153
|
+
/**
|
|
10154
|
+
* Whether this consumer currently has any producers registered.
|
|
10155
|
+
*/
|
|
10156
|
+
get hasProducers() {
|
|
10157
|
+
return this.producers.size > 0;
|
|
10158
|
+
}
|
|
10159
|
+
/**
|
|
10160
|
+
* Checks if a `Producer` has a current value which is different than the value
|
|
10161
|
+
* last seen at a specific version by a `Consumer` which recorded a dependency on
|
|
10162
|
+
* this `Producer`.
|
|
10163
|
+
*/
|
|
10164
|
+
producerPollStatus(lastSeenValueVersion) {
|
|
10165
|
+
// `producer.valueVersion` may be stale, but a mismatch still means that the value
|
|
10166
|
+
// last seen by the `Consumer` is also stale.
|
|
10167
|
+
if (this.valueVersion !== lastSeenValueVersion) {
|
|
10168
|
+
return true;
|
|
10169
|
+
}
|
|
10170
|
+
// Trigger the `Producer` to update its `valueVersion` if necessary.
|
|
10171
|
+
this.onProducerUpdateValueVersion();
|
|
10172
|
+
// At this point, we can trust `producer.valueVersion`.
|
|
10173
|
+
return this.valueVersion !== lastSeenValueVersion;
|
|
10174
|
+
}
|
|
10175
|
+
}
|
|
10176
|
+
|
|
10177
|
+
/**
|
|
10178
|
+
* Marks current view and all ancestors dirty.
|
|
10179
|
+
*
|
|
10180
|
+
* Returns the root view because it is found as a byproduct of marking the view tree
|
|
10181
|
+
* dirty, and can be used by methods that consume markViewDirty() to easily schedule
|
|
10182
|
+
* change detection. Otherwise, such methods would need to traverse up the view tree
|
|
10183
|
+
* an additional time to get the root view and schedule a tick on it.
|
|
10184
|
+
*
|
|
10185
|
+
* @param lView The starting LView to mark dirty
|
|
10186
|
+
* @returns the root LView
|
|
10187
|
+
*/
|
|
10188
|
+
function markViewDirty(lView) {
|
|
10189
|
+
while (lView) {
|
|
10190
|
+
lView[FLAGS] |= 32 /* LViewFlags.Dirty */;
|
|
10191
|
+
const parent = getLViewParent(lView);
|
|
10192
|
+
// Stop traversing up as soon as you find a root view that wasn't attached to any container
|
|
10193
|
+
if (isRootView(lView) && !parent) {
|
|
10194
|
+
return lView;
|
|
10195
|
+
}
|
|
10196
|
+
// continue otherwise
|
|
10197
|
+
lView = parent;
|
|
10198
|
+
}
|
|
10199
|
+
return null;
|
|
10200
|
+
}
|
|
10201
|
+
|
|
10202
|
+
const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;
|
|
10203
|
+
class ReactiveLViewConsumer extends ReactiveNode {
|
|
10204
|
+
constructor() {
|
|
10205
|
+
super(...arguments);
|
|
10206
|
+
this._lView = null;
|
|
10207
|
+
}
|
|
10208
|
+
set lView(lView) {
|
|
10209
|
+
NG_DEV_MODE && assertEqual(this._lView, null, 'Consumer already associated with a view.');
|
|
10210
|
+
this._lView = lView;
|
|
10211
|
+
}
|
|
10212
|
+
onConsumerDependencyMayHaveChanged() {
|
|
10213
|
+
NG_DEV_MODE &&
|
|
10214
|
+
assertDefined(this._lView, 'Updating a signal during template or host binding execution is not allowed.');
|
|
10215
|
+
markViewDirty(this._lView);
|
|
10216
|
+
}
|
|
10217
|
+
onProducerUpdateValueVersion() {
|
|
10218
|
+
// This type doesn't implement the producer side of a `ReactiveNode`.
|
|
10219
|
+
}
|
|
10220
|
+
get hasReadASignal() {
|
|
10221
|
+
return this.hasProducers;
|
|
10222
|
+
}
|
|
10223
|
+
runInContext(fn, rf, ctx) {
|
|
10224
|
+
const prevConsumer = setActiveConsumer(this);
|
|
10225
|
+
this.trackingVersion++;
|
|
10226
|
+
try {
|
|
10227
|
+
fn(rf, ctx);
|
|
10228
|
+
}
|
|
10229
|
+
finally {
|
|
10230
|
+
setActiveConsumer(prevConsumer);
|
|
10231
|
+
}
|
|
10232
|
+
}
|
|
10233
|
+
destroy() {
|
|
10234
|
+
// Incrementing the version means that every producer which tries to update this consumer will
|
|
10235
|
+
// consider its record stale, and not notify.
|
|
10236
|
+
this.trackingVersion++;
|
|
10237
|
+
}
|
|
10238
|
+
}
|
|
10239
|
+
let currentConsumer = null;
|
|
10240
|
+
function getOrCreateCurrentLViewConsumer() {
|
|
10241
|
+
currentConsumer ??= new ReactiveLViewConsumer();
|
|
10242
|
+
return currentConsumer;
|
|
10243
|
+
}
|
|
10244
|
+
/**
|
|
10245
|
+
* Create a new template consumer pointing at the specified LView.
|
|
10246
|
+
* Sometimes, a previously created consumer may be reused, in order to save on allocations. In that
|
|
10247
|
+
* case, the LView will be updated.
|
|
10248
|
+
*/
|
|
10249
|
+
function getReactiveLViewConsumer(lView, slot) {
|
|
10250
|
+
return lView[slot] ?? getOrCreateCurrentLViewConsumer();
|
|
10251
|
+
}
|
|
10252
|
+
/**
|
|
10253
|
+
* Assigns the `currentTemplateContext` to its LView's `REACTIVE_CONSUMER` slot if there are tracked
|
|
10254
|
+
* producers.
|
|
10255
|
+
*
|
|
10256
|
+
* The presence of producers means that a signal was read while the consumer was the active
|
|
10257
|
+
* consumer.
|
|
10258
|
+
*
|
|
10259
|
+
* If no producers are present, we do not assign the current template context. This also means we
|
|
10260
|
+
* can just reuse the template context for the next LView.
|
|
10261
|
+
*/
|
|
10262
|
+
function commitLViewConsumerIfHasProducers(lView, slot) {
|
|
10263
|
+
const consumer = getOrCreateCurrentLViewConsumer();
|
|
10264
|
+
if (!consumer.hasReadASignal) {
|
|
10265
|
+
return;
|
|
10266
|
+
}
|
|
10267
|
+
lView[slot] = currentConsumer;
|
|
10268
|
+
consumer.lView = lView;
|
|
10269
|
+
currentConsumer = new ReactiveLViewConsumer();
|
|
10270
|
+
}
|
|
10271
|
+
|
|
9989
10272
|
/** A special value which designates that a value has not changed. */
|
|
9990
10273
|
const NO_CHANGE = (typeof ngDevMode === 'undefined' || ngDevMode) ? { __brand__: 'NO_CHANGE' } : {};
|
|
9991
10274
|
|
|
@@ -10068,6 +10351,22 @@ function runInInjectionContext(injector, fn) {
|
|
|
10068
10351
|
setInjectImplementation(previousInjectImplementation);
|
|
10069
10352
|
}
|
|
10070
10353
|
}
|
|
10354
|
+
/**
|
|
10355
|
+
* Asserts that the current stack frame is within an injection context and has access to `inject`.
|
|
10356
|
+
*
|
|
10357
|
+
* @param debugFn a reference to the function making the assertion (used for the error message).
|
|
10358
|
+
*
|
|
10359
|
+
* @publicApi
|
|
10360
|
+
*/
|
|
10361
|
+
function assertInInjectionContext(debugFn) {
|
|
10362
|
+
// Taking a `Function` instead of a string name here prevents the unminified name of the function
|
|
10363
|
+
// from being retained in the bundle regardless of minification.
|
|
10364
|
+
if (!getInjectImplementation() && !getCurrentInjector()) {
|
|
10365
|
+
throw new RuntimeError(-203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, ngDevMode &&
|
|
10366
|
+
(debugFn.name +
|
|
10367
|
+
'() can only be used within an injection context such as a constructor, a factory function, a field initializer, or a function used with `runInInjectionContext`'));
|
|
10368
|
+
}
|
|
10369
|
+
}
|
|
10071
10370
|
|
|
10072
10371
|
/**
|
|
10073
10372
|
* A mapping of the @angular/core API surface used in generated expressions to the actual symbols.
|
|
@@ -10220,6 +10519,8 @@ function createInjectorWithoutInjectorInstances(defType, parent = null, addition
|
|
|
10220
10519
|
* @publicApi
|
|
10221
10520
|
*/
|
|
10222
10521
|
class Injector {
|
|
10522
|
+
static { this.THROW_IF_NOT_FOUND = THROW_IF_NOT_FOUND; }
|
|
10523
|
+
static { this.NULL = ( /* @__PURE__ */new NullInjector()); }
|
|
10223
10524
|
static create(options, parent) {
|
|
10224
10525
|
if (Array.isArray(options)) {
|
|
10225
10526
|
return createInjector({ name: '' }, parent, options, '');
|
|
@@ -10229,20 +10530,18 @@ class Injector {
|
|
|
10229
10530
|
return createInjector({ name }, options.parent, options.providers, name);
|
|
10230
10531
|
}
|
|
10231
10532
|
}
|
|
10533
|
+
/** @nocollapse */
|
|
10534
|
+
static { this.ɵprov = ɵɵdefineInjectable({
|
|
10535
|
+
token: Injector,
|
|
10536
|
+
providedIn: 'any',
|
|
10537
|
+
factory: () => ɵɵinject(INJECTOR),
|
|
10538
|
+
}); }
|
|
10539
|
+
/**
|
|
10540
|
+
* @internal
|
|
10541
|
+
* @nocollapse
|
|
10542
|
+
*/
|
|
10543
|
+
static { this.__NG_ELEMENT_ID__ = -1 /* InjectorMarkers.Injector */; }
|
|
10232
10544
|
}
|
|
10233
|
-
Injector.THROW_IF_NOT_FOUND = THROW_IF_NOT_FOUND;
|
|
10234
|
-
Injector.NULL = ( /* @__PURE__ */new NullInjector());
|
|
10235
|
-
/** @nocollapse */
|
|
10236
|
-
Injector.ɵprov = ɵɵdefineInjectable({
|
|
10237
|
-
token: Injector,
|
|
10238
|
-
providedIn: 'any',
|
|
10239
|
-
factory: () => ɵɵinject(INJECTOR),
|
|
10240
|
-
});
|
|
10241
|
-
/**
|
|
10242
|
-
* @internal
|
|
10243
|
-
* @nocollapse
|
|
10244
|
-
*/
|
|
10245
|
-
Injector.__NG_ELEMENT_ID__ = -1 /* InjectorMarkers.Injector */;
|
|
10246
10545
|
|
|
10247
10546
|
function findFirstClosedCycle(keys) {
|
|
10248
10547
|
const res = [];
|
|
@@ -10843,6 +11142,7 @@ class ReflectiveInjector {
|
|
|
10843
11142
|
}
|
|
10844
11143
|
}
|
|
10845
11144
|
class ReflectiveInjector_ {
|
|
11145
|
+
static { this.INJECTOR_KEY = ( /* @__PURE__ */ReflectiveKey.get(Injector)); }
|
|
10846
11146
|
/**
|
|
10847
11147
|
* Private
|
|
10848
11148
|
*/
|
|
@@ -10998,7 +11298,6 @@ class ReflectiveInjector_ {
|
|
|
10998
11298
|
return this.displayName;
|
|
10999
11299
|
}
|
|
11000
11300
|
}
|
|
11001
|
-
ReflectiveInjector_.INJECTOR_KEY = ( /* @__PURE__ */ReflectiveKey.get(Injector));
|
|
11002
11301
|
function _mapProviders(injector, fn) {
|
|
11003
11302
|
const res = [];
|
|
11004
11303
|
for (let i = 0; i < injector._providers.length; ++i) {
|
|
@@ -11072,6 +11371,7 @@ function processHostBindingOpCodes(tView, lView) {
|
|
|
11072
11371
|
const hostBindingOpCodes = tView.hostBindingOpCodes;
|
|
11073
11372
|
if (hostBindingOpCodes === null)
|
|
11074
11373
|
return;
|
|
11374
|
+
const consumer = getReactiveLViewConsumer(lView, REACTIVE_HOST_BINDING_CONSUMER);
|
|
11075
11375
|
try {
|
|
11076
11376
|
for (let i = 0; i < hostBindingOpCodes.length; i++) {
|
|
11077
11377
|
const opCode = hostBindingOpCodes[i];
|
|
@@ -11086,11 +11386,13 @@ function processHostBindingOpCodes(tView, lView) {
|
|
|
11086
11386
|
const hostBindingFn = hostBindingOpCodes[++i];
|
|
11087
11387
|
setBindingRootForHostBindings(bindingRootIndx, directiveIdx);
|
|
11088
11388
|
const context = lView[directiveIdx];
|
|
11089
|
-
hostBindingFn
|
|
11389
|
+
consumer.runInContext(hostBindingFn, 2 /* RenderFlags.Update */, context);
|
|
11090
11390
|
}
|
|
11091
11391
|
}
|
|
11092
11392
|
}
|
|
11093
11393
|
finally {
|
|
11394
|
+
lView[REACTIVE_HOST_BINDING_CONSUMER] === null &&
|
|
11395
|
+
commitLViewConsumerIfHasProducers(lView, REACTIVE_HOST_BINDING_CONSUMER);
|
|
11094
11396
|
setSelectedIndex(-1);
|
|
11095
11397
|
}
|
|
11096
11398
|
}
|
|
@@ -11146,6 +11448,7 @@ function createLView(parentLView, tView, context, flags, host, tHostNode, render
|
|
|
11146
11448
|
lView[ID] = getUniqueLViewId();
|
|
11147
11449
|
lView[HYDRATION] = hydrationInfo;
|
|
11148
11450
|
lView[EMBEDDED_VIEW_INJECTOR] = embeddedViewInjector;
|
|
11451
|
+
lView[REACTIVE_TEMPLATE_CONSUMER] = null;
|
|
11149
11452
|
ngDevMode &&
|
|
11150
11453
|
assertEqual(tView.type == 2 /* TViewType.Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');
|
|
11151
11454
|
lView[DECLARATION_COMPONENT_VIEW] =
|
|
@@ -11430,6 +11733,7 @@ function refreshView(tView, lView, templateFn, context) {
|
|
|
11430
11733
|
}
|
|
11431
11734
|
}
|
|
11432
11735
|
function executeTemplate(tView, lView, templateFn, rf, context) {
|
|
11736
|
+
const consumer = getReactiveLViewConsumer(lView, REACTIVE_TEMPLATE_CONSUMER);
|
|
11433
11737
|
const prevSelectedIndex = getSelectedIndex();
|
|
11434
11738
|
const isUpdatePhase = rf & 2 /* RenderFlags.Update */;
|
|
11435
11739
|
try {
|
|
@@ -11441,9 +11745,12 @@ function executeTemplate(tView, lView, templateFn, rf, context) {
|
|
|
11441
11745
|
}
|
|
11442
11746
|
const preHookType = isUpdatePhase ? 2 /* ProfilerEvent.TemplateUpdateStart */ : 0 /* ProfilerEvent.TemplateCreateStart */;
|
|
11443
11747
|
profiler(preHookType, context);
|
|
11444
|
-
templateFn
|
|
11748
|
+
consumer.runInContext(templateFn, rf, context);
|
|
11445
11749
|
}
|
|
11446
11750
|
finally {
|
|
11751
|
+
if (lView[REACTIVE_TEMPLATE_CONSUMER] === null) {
|
|
11752
|
+
commitLViewConsumerIfHasProducers(lView, REACTIVE_TEMPLATE_CONSUMER);
|
|
11753
|
+
}
|
|
11447
11754
|
setSelectedIndex(prevSelectedIndex);
|
|
11448
11755
|
const postHookType = isUpdatePhase ? 3 /* ProfilerEvent.TemplateUpdateEnd */ : 1 /* ProfilerEvent.TemplateCreateEnd */;
|
|
11449
11756
|
profiler(postHookType, context);
|
|
@@ -12547,30 +12854,6 @@ function addToViewTree(lView, lViewOrLContainer) {
|
|
|
12547
12854
|
///////////////////////////////
|
|
12548
12855
|
//// Change detection
|
|
12549
12856
|
///////////////////////////////
|
|
12550
|
-
/**
|
|
12551
|
-
* Marks current view and all ancestors dirty.
|
|
12552
|
-
*
|
|
12553
|
-
* Returns the root view because it is found as a byproduct of marking the view tree
|
|
12554
|
-
* dirty, and can be used by methods that consume markViewDirty() to easily schedule
|
|
12555
|
-
* change detection. Otherwise, such methods would need to traverse up the view tree
|
|
12556
|
-
* an additional time to get the root view and schedule a tick on it.
|
|
12557
|
-
*
|
|
12558
|
-
* @param lView The starting LView to mark dirty
|
|
12559
|
-
* @returns the root LView
|
|
12560
|
-
*/
|
|
12561
|
-
function markViewDirty(lView) {
|
|
12562
|
-
while (lView) {
|
|
12563
|
-
lView[FLAGS] |= 32 /* LViewFlags.Dirty */;
|
|
12564
|
-
const parent = getLViewParent(lView);
|
|
12565
|
-
// Stop traversing up as soon as you find a root view that wasn't attached to any container
|
|
12566
|
-
if (isRootView(lView) && !parent) {
|
|
12567
|
-
return lView;
|
|
12568
|
-
}
|
|
12569
|
-
// continue otherwise
|
|
12570
|
-
lView = parent;
|
|
12571
|
-
}
|
|
12572
|
-
return null;
|
|
12573
|
-
}
|
|
12574
12857
|
function detectChangesInternal(tView, lView, context, notifyErrorHandler = true) {
|
|
12575
12858
|
const rendererFactory = lView[RENDERER_FACTORY];
|
|
12576
12859
|
// Check no changes mode is a dev only mode used to verify that bindings have not changed
|
|
@@ -13251,6 +13534,7 @@ class ComponentRef extends ComponentRef$1 {
|
|
|
13251
13534
|
this.location = location;
|
|
13252
13535
|
this._rootLView = _rootLView;
|
|
13253
13536
|
this._tNode = _tNode;
|
|
13537
|
+
this.previousInputValues = null;
|
|
13254
13538
|
this.instance = instance;
|
|
13255
13539
|
this.hostView = this.changeDetectorRef = new RootViewRef(_rootLView);
|
|
13256
13540
|
this.componentType = componentType;
|
|
@@ -13259,8 +13543,16 @@ class ComponentRef extends ComponentRef$1 {
|
|
|
13259
13543
|
const inputData = this._tNode.inputs;
|
|
13260
13544
|
let dataValue;
|
|
13261
13545
|
if (inputData !== null && (dataValue = inputData[name])) {
|
|
13546
|
+
this.previousInputValues ??= new Map();
|
|
13547
|
+
// Do not set the input if it is the same as the last value
|
|
13548
|
+
// This behavior matches `bindingUpdated` when binding inputs in templates.
|
|
13549
|
+
if (this.previousInputValues.has(name) &&
|
|
13550
|
+
Object.is(this.previousInputValues.get(name), value)) {
|
|
13551
|
+
return;
|
|
13552
|
+
}
|
|
13262
13553
|
const lView = this._rootLView;
|
|
13263
13554
|
setInputsForProperty(lView[TVIEW], lView, dataValue, name, value);
|
|
13555
|
+
this.previousInputValues.set(name, value);
|
|
13264
13556
|
markDirtyIfOnPush(lView, this._tNode.index);
|
|
13265
13557
|
}
|
|
13266
13558
|
else {
|
|
@@ -14991,10 +15283,9 @@ function siblingAfter(skip, from) {
|
|
|
14991
15283
|
*/
|
|
14992
15284
|
function stringifyNavigationInstructions(instructions) {
|
|
14993
15285
|
const container = [];
|
|
14994
|
-
let i = 0;
|
|
14995
|
-
|
|
14996
|
-
const
|
|
14997
|
-
const repeat = instructions[i++];
|
|
15286
|
+
for (let i = 0; i < instructions.length; i += 2) {
|
|
15287
|
+
const step = instructions[i];
|
|
15288
|
+
const repeat = instructions[i + 1];
|
|
14998
15289
|
for (let r = 0; r < repeat; r++) {
|
|
14999
15290
|
container.push(step === NodeNavigationStep.FirstChild ? 'firstChild' : 'nextSibling');
|
|
15000
15291
|
}
|
|
@@ -15007,10 +15298,9 @@ function stringifyNavigationInstructions(instructions) {
|
|
|
15007
15298
|
*/
|
|
15008
15299
|
function navigateToNode(from, instructions) {
|
|
15009
15300
|
let node = from;
|
|
15010
|
-
let i = 0;
|
|
15011
|
-
|
|
15012
|
-
const
|
|
15013
|
-
const repeat = instructions[i++];
|
|
15301
|
+
for (let i = 0; i < instructions.length; i += 2) {
|
|
15302
|
+
const step = instructions[i];
|
|
15303
|
+
const repeat = instructions[i + 1];
|
|
15014
15304
|
for (let r = 0; r < repeat; r++) {
|
|
15015
15305
|
if (ngDevMode && !node) {
|
|
15016
15306
|
throw nodeNotFoundAtPathError(from, stringifyNavigationInstructions(instructions));
|
|
@@ -15531,7 +15821,7 @@ function locateOrCreateElementNodeImpl(tView, lView, tNode, renderer, name, inde
|
|
|
15531
15821
|
enterSkipHydrationBlock(tNode);
|
|
15532
15822
|
// Since this isn't hydratable, we need to empty the node
|
|
15533
15823
|
// so there's no duplicate content after render
|
|
15534
|
-
clearElementContents(
|
|
15824
|
+
clearElementContents(native);
|
|
15535
15825
|
}
|
|
15536
15826
|
else if (ngDevMode) {
|
|
15537
15827
|
// If this is not a component host, throw an error.
|
|
@@ -17977,8 +18267,11 @@ function isStylingValuePresent(value) {
|
|
|
17977
18267
|
* @param suffix
|
|
17978
18268
|
*/
|
|
17979
18269
|
function normalizeSuffix(value, suffix) {
|
|
17980
|
-
if (value == null
|
|
18270
|
+
if (value == null || value === '') {
|
|
17981
18271
|
// do nothing
|
|
18272
|
+
// Do not add the suffix if the value is going to be empty.
|
|
18273
|
+
// As it produce invalid CSS, which the browsers will automatically omit but Domino will not.
|
|
18274
|
+
// Example: `"left": "px;"` instead of `"left": ""`.
|
|
17982
18275
|
}
|
|
17983
18276
|
else if (typeof suffix === 'string') {
|
|
17984
18277
|
value = value + suffix;
|
|
@@ -21845,13 +22138,13 @@ class StandaloneService {
|
|
|
21845
22138
|
this.cachedInjectors.clear();
|
|
21846
22139
|
}
|
|
21847
22140
|
}
|
|
22141
|
+
/** @nocollapse */
|
|
22142
|
+
static { this.ɵprov = ɵɵdefineInjectable({
|
|
22143
|
+
token: StandaloneService,
|
|
22144
|
+
providedIn: 'environment',
|
|
22145
|
+
factory: () => new StandaloneService(ɵɵinject(EnvironmentInjector)),
|
|
22146
|
+
}); }
|
|
21848
22147
|
}
|
|
21849
|
-
/** @nocollapse */
|
|
21850
|
-
StandaloneService.ɵprov = ɵɵdefineInjectable({
|
|
21851
|
-
token: StandaloneService,
|
|
21852
|
-
providedIn: 'environment',
|
|
21853
|
-
factory: () => new StandaloneService(ɵɵinject(EnvironmentInjector)),
|
|
21854
|
-
});
|
|
21855
22148
|
/**
|
|
21856
22149
|
* A feature that acts as a setup code for the {@link StandaloneService}.
|
|
21857
22150
|
*
|
|
@@ -22893,6 +23186,7 @@ function symbolIterator() {
|
|
|
22893
23186
|
* @publicApi
|
|
22894
23187
|
*/
|
|
22895
23188
|
class QueryList {
|
|
23189
|
+
static { Symbol.iterator; }
|
|
22896
23190
|
/**
|
|
22897
23191
|
* Returns `Observable` of `QueryList` notifying the subscriber of changes.
|
|
22898
23192
|
*/
|
|
@@ -23020,7 +23314,6 @@ class QueryList {
|
|
|
23020
23314
|
this.changes.unsubscribe();
|
|
23021
23315
|
}
|
|
23022
23316
|
}
|
|
23023
|
-
Symbol.iterator;
|
|
23024
23317
|
|
|
23025
23318
|
/**
|
|
23026
23319
|
* Represents an embedded template that can be used to instantiate embedded views.
|
|
@@ -23041,12 +23334,12 @@ Symbol.iterator;
|
|
|
23041
23334
|
* @publicApi
|
|
23042
23335
|
*/
|
|
23043
23336
|
class TemplateRef {
|
|
23337
|
+
/**
|
|
23338
|
+
* @internal
|
|
23339
|
+
* @nocollapse
|
|
23340
|
+
*/
|
|
23341
|
+
static { this.__NG_ELEMENT_ID__ = injectTemplateRef; }
|
|
23044
23342
|
}
|
|
23045
|
-
/**
|
|
23046
|
-
* @internal
|
|
23047
|
-
* @nocollapse
|
|
23048
|
-
*/
|
|
23049
|
-
TemplateRef.__NG_ELEMENT_ID__ = injectTemplateRef;
|
|
23050
23343
|
const ViewEngineTemplateRef = TemplateRef;
|
|
23051
23344
|
// TODO(alxhub): combine interface and implementation. Currently this is challenging since something
|
|
23052
23345
|
// in g3 depends on them being separate.
|
|
@@ -23176,11 +23469,13 @@ function cleanupLView(lView) {
|
|
|
23176
23469
|
* Walks over all views registered within the ApplicationRef and removes
|
|
23177
23470
|
* all dehydrated views from all `LContainer`s along the way.
|
|
23178
23471
|
*/
|
|
23179
|
-
function cleanupDehydratedViews(appRef) {
|
|
23472
|
+
function cleanupDehydratedViews(appRef, pendingTasks) {
|
|
23180
23473
|
// Wait once an app becomes stable and cleanup all views that
|
|
23181
23474
|
// were not claimed during the application bootstrap process.
|
|
23182
23475
|
// The timing is similar to when we kick off serialization on the server.
|
|
23183
|
-
|
|
23476
|
+
const isStablePromise = appRef.isStable.pipe(first((isStable) => isStable)).toPromise();
|
|
23477
|
+
const pendingTasksPromise = pendingTasks.whenAllTasksComplete;
|
|
23478
|
+
return Promise.allSettled([isStablePromise, pendingTasksPromise]).then(() => {
|
|
23184
23479
|
const viewRefs = appRef._views;
|
|
23185
23480
|
for (const viewRef of viewRefs) {
|
|
23186
23481
|
const lView = getComponentLViewForHydration(viewRef);
|
|
@@ -23283,12 +23578,12 @@ function findMatchingDehydratedView(lContainer, template) {
|
|
|
23283
23578
|
* @publicApi
|
|
23284
23579
|
*/
|
|
23285
23580
|
class ViewContainerRef {
|
|
23581
|
+
/**
|
|
23582
|
+
* @internal
|
|
23583
|
+
* @nocollapse
|
|
23584
|
+
*/
|
|
23585
|
+
static { this.__NG_ELEMENT_ID__ = injectViewContainerRef; }
|
|
23286
23586
|
}
|
|
23287
|
-
/**
|
|
23288
|
-
* @internal
|
|
23289
|
-
* @nocollapse
|
|
23290
|
-
*/
|
|
23291
|
-
ViewContainerRef.__NG_ELEMENT_ID__ = injectViewContainerRef;
|
|
23292
23587
|
/**
|
|
23293
23588
|
* Creates a ViewContainerRef and stores it on the injector. Or, if the ViewContainerRef
|
|
23294
23589
|
* already exists, retrieves the existing ViewContainerRef.
|
|
@@ -24454,7 +24749,6 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
|
|
|
24454
24749
|
];
|
|
24455
24750
|
exports.forEach(verifyExportsAreDeclaredOrReExported);
|
|
24456
24751
|
declarations.forEach(decl => verifyDeclarationIsUnique(decl, allowDuplicateDeclarationsInRoot));
|
|
24457
|
-
declarations.forEach(verifyComponentEntryComponentsIsPartOfNgModule);
|
|
24458
24752
|
const ngModule = getAnnotation(moduleType, 'NgModule');
|
|
24459
24753
|
if (ngModule) {
|
|
24460
24754
|
ngModule.imports &&
|
|
@@ -24464,8 +24758,6 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
|
|
|
24464
24758
|
});
|
|
24465
24759
|
ngModule.bootstrap && deepForEach(ngModule.bootstrap, verifyCorrectBootstrapType);
|
|
24466
24760
|
ngModule.bootstrap && deepForEach(ngModule.bootstrap, verifyComponentIsPartOfNgModule);
|
|
24467
|
-
ngModule.entryComponents &&
|
|
24468
|
-
deepForEach(ngModule.entryComponents, verifyComponentIsPartOfNgModule);
|
|
24469
24761
|
}
|
|
24470
24762
|
// Throw Error if any errors were detected.
|
|
24471
24763
|
if (errors.length) {
|
|
@@ -24543,16 +24835,6 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
|
|
|
24543
24835
|
`function for bootstrap instead.`);
|
|
24544
24836
|
}
|
|
24545
24837
|
}
|
|
24546
|
-
function verifyComponentEntryComponentsIsPartOfNgModule(type) {
|
|
24547
|
-
type = resolveForwardRef(type);
|
|
24548
|
-
if (getComponentDef$1(type)) {
|
|
24549
|
-
// We know we are component
|
|
24550
|
-
const component = getAnnotation(type, 'Component');
|
|
24551
|
-
if (component && component.entryComponents) {
|
|
24552
|
-
deepForEach(component.entryComponents, verifyComponentIsPartOfNgModule);
|
|
24553
|
-
}
|
|
24554
|
-
}
|
|
24555
|
-
}
|
|
24556
24838
|
function verifySemanticsOfNgModuleImport(type, importingModule) {
|
|
24557
24839
|
type = resolveForwardRef(type);
|
|
24558
24840
|
const directiveDef = getComponentDef$1(type) || getDirectiveDef(type);
|
|
@@ -25852,6 +26134,7 @@ class TestBedImpl {
|
|
|
25852
26134
|
*/
|
|
25853
26135
|
this.globalCompilationChecked = false;
|
|
25854
26136
|
}
|
|
26137
|
+
static { this._INSTANCE = null; }
|
|
25855
26138
|
static get INSTANCE() {
|
|
25856
26139
|
return TestBedImpl._INSTANCE = TestBedImpl._INSTANCE || new TestBedImpl();
|
|
25857
26140
|
}
|
|
@@ -26261,7 +26544,6 @@ class TestBedImpl {
|
|
|
26261
26544
|
}
|
|
26262
26545
|
}
|
|
26263
26546
|
}
|
|
26264
|
-
TestBedImpl._INSTANCE = null;
|
|
26265
26547
|
/**
|
|
26266
26548
|
* @description
|
|
26267
26549
|
* Configures and initializes environment for unit testing and provides methods for
|