@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.
Files changed (353) hide show
  1. package/{esm2020 → esm2022}/src/application_init.mjs +3 -3
  2. package/{esm2020 → esm2022}/src/application_module.mjs +4 -4
  3. package/esm2022/src/application_ref.mjs +908 -0
  4. package/{esm2020 → esm2022}/src/change_detection/change_detector_ref.mjs +6 -6
  5. package/esm2022/src/change_detection/differs/iterable_differs.mjs +81 -0
  6. package/esm2022/src/change_detection/differs/keyvalue_differs.mjs +74 -0
  7. package/{esm2020 → esm2022}/src/console.mjs +3 -3
  8. package/{esm2020 → esm2022}/src/core.mjs +2 -1
  9. package/esm2022/src/core_private_export.mjs +39 -0
  10. package/esm2022/src/core_reactivity_export_internal.mjs +12 -0
  11. package/esm2022/src/di/contextual.mjs +54 -0
  12. package/esm2022/src/di/index.mjs +29 -0
  13. package/esm2022/src/di/injector.mjs +62 -0
  14. package/esm2022/src/di/injector_compatibility.mjs +239 -0
  15. package/esm2022/src/di/provider_collection.mjs +279 -0
  16. package/esm2022/src/di/reflective_injector.mjs +311 -0
  17. package/esm2022/src/hydration/annotate.mjs +426 -0
  18. package/esm2022/src/hydration/api.mjs +143 -0
  19. package/esm2022/src/hydration/cleanup.mjs +103 -0
  20. package/esm2022/src/hydration/node_lookup_utils.mjs +273 -0
  21. package/esm2022/src/hydration/utils.mjs +219 -0
  22. package/esm2022/src/initial_render_pending_tasks.mjs +75 -0
  23. package/{esm2020 → esm2022}/src/linker/compiler.mjs +5 -5
  24. package/esm2022/src/linker/component_factory_resolver.mjs +42 -0
  25. package/{esm2020 → esm2022}/src/linker/destroy_ref.mjs +11 -11
  26. package/{esm2020 → esm2022}/src/linker/element_ref.mjs +6 -6
  27. package/esm2022/src/linker/query_list.mjs +169 -0
  28. package/{esm2020 → esm2022}/src/linker/template_ref.mjs +6 -6
  29. package/{esm2020 → esm2022}/src/linker/view_container_ref.mjs +6 -6
  30. package/esm2022/src/metadata/di.mjs +69 -0
  31. package/{esm2020 → esm2022}/src/metadata/directives.mjs +1 -1
  32. package/{esm2020 → esm2022}/src/metadata/do_boostrap.mjs +1 -1
  33. package/{esm2020 → esm2022}/src/metadata/ng_module.mjs +2 -2
  34. package/esm2022/src/metadata.mjs +18 -0
  35. package/{esm2020 → esm2022}/src/render/api.mjs +6 -6
  36. package/esm2022/src/render3/component_ref.mjs +386 -0
  37. package/{esm2020 → esm2022}/src/render3/context_discovery.mjs +1 -1
  38. package/esm2022/src/render3/features/standalone_feature.mjs +70 -0
  39. package/{esm2020 → esm2022}/src/render3/instructions/element.mjs +2 -2
  40. package/esm2022/src/render3/instructions/listener.mjs +244 -0
  41. package/esm2022/src/render3/instructions/mark_view_dirty.mjs +35 -0
  42. package/esm2022/src/render3/instructions/shared.mjs +1681 -0
  43. package/{esm2020 → esm2022}/src/render3/instructions/styling.mjs +5 -2
  44. package/esm2022/src/render3/interfaces/view.mjs +49 -0
  45. package/esm2022/src/render3/jit/module.mjs +531 -0
  46. package/esm2022/src/render3/node_manipulation.mjs +960 -0
  47. package/esm2022/src/render3/reactive_lview_consumer.mjs +80 -0
  48. package/esm2022/src/render3/reactivity/effect.mjs +67 -0
  49. package/{esm2020 → esm2022}/src/render3/util/change_detection_utils.mjs +2 -2
  50. package/esm2022/src/render3/view_ref.mjs +307 -0
  51. package/{esm2020 → esm2022}/src/sanitization/sanitizer.mjs +7 -7
  52. package/esm2022/src/signals/index.mjs +15 -0
  53. package/esm2022/src/signals/src/api.mjs +47 -0
  54. package/esm2022/src/signals/src/computed.mjs +139 -0
  55. package/esm2022/src/signals/src/graph.mjs +165 -0
  56. package/esm2022/src/signals/src/signal.mjs +75 -0
  57. package/esm2022/src/signals/src/watch.mjs +62 -0
  58. package/esm2022/src/signals/src/weak_ref.mjs +35 -0
  59. package/{esm2020 → esm2022}/src/testability/testability.mjs +5 -5
  60. package/esm2022/src/transfer_state.mjs +153 -0
  61. package/{esm2020 → esm2022}/src/version.mjs +1 -1
  62. package/{esm2020 → esm2022}/testing/src/logger.mjs +4 -4
  63. package/{esm2020 → esm2022}/testing/src/ng_zone_mock.mjs +4 -4
  64. package/{esm2020 → esm2022}/testing/src/test_bed.mjs +2 -2
  65. package/{fesm2020 → fesm2022}/core.mjs +869 -639
  66. package/fesm2022/core.mjs.map +1 -0
  67. package/{fesm2020 → fesm2022}/testing.mjs +406 -124
  68. package/fesm2022/testing.mjs.map +1 -0
  69. package/index.d.ts +334 -187
  70. package/package.json +8 -16
  71. package/schematics/migrations/guard-and-resolve-interfaces/bundle.js +694 -0
  72. package/schematics/migrations/guard-and-resolve-interfaces/bundle.js.map +7 -0
  73. package/schematics/migrations/{router-link-with-href → remove-module-id}/bundle.js +149 -151
  74. package/schematics/migrations/remove-module-id/bundle.js.map +7 -0
  75. package/schematics/migrations.json +8 -8
  76. package/schematics/ng-generate/standalone-migration/bundle.js +617 -251
  77. package/schematics/ng-generate/standalone-migration/bundle.js.map +2 -2
  78. package/testing/index.d.ts +1 -1
  79. package/esm2020/src/application_ref.mjs +0 -907
  80. package/esm2020/src/change_detection/differs/iterable_differs.mjs +0 -81
  81. package/esm2020/src/change_detection/differs/keyvalue_differs.mjs +0 -74
  82. package/esm2020/src/core_private_export.mjs +0 -38
  83. package/esm2020/src/core_reactivity_export_internal.mjs +0 -9
  84. package/esm2020/src/di/contextual.mjs +0 -37
  85. package/esm2020/src/di/index.mjs +0 -29
  86. package/esm2020/src/di/injector.mjs +0 -62
  87. package/esm2020/src/di/injector_compatibility.mjs +0 -236
  88. package/esm2020/src/di/provider_collection.mjs +0 -279
  89. package/esm2020/src/di/reflective_injector.mjs +0 -311
  90. package/esm2020/src/hydration/annotate.mjs +0 -384
  91. package/esm2020/src/hydration/api.mjs +0 -141
  92. package/esm2020/src/hydration/cleanup.mjs +0 -101
  93. package/esm2020/src/hydration/node_lookup_utils.mjs +0 -275
  94. package/esm2020/src/hydration/utils.mjs +0 -219
  95. package/esm2020/src/linker/component_factory_resolver.mjs +0 -42
  96. package/esm2020/src/linker/query_list.mjs +0 -169
  97. package/esm2020/src/metadata/di.mjs +0 -108
  98. package/esm2020/src/metadata.mjs +0 -18
  99. package/esm2020/src/render3/component_ref.mjs +0 -377
  100. package/esm2020/src/render3/features/standalone_feature.mjs +0 -70
  101. package/esm2020/src/render3/instructions/listener.mjs +0 -243
  102. package/esm2020/src/render3/instructions/shared.mjs +0 -1696
  103. package/esm2020/src/render3/interfaces/view.mjs +0 -47
  104. package/esm2020/src/render3/jit/module.mjs +0 -544
  105. package/esm2020/src/render3/node_manipulation.mjs +0 -961
  106. package/esm2020/src/render3/view_ref.mjs +0 -306
  107. package/esm2020/src/signals/index.mjs +0 -16
  108. package/esm2020/src/signals/src/api.mjs +0 -46
  109. package/esm2020/src/signals/src/computed.mjs +0 -142
  110. package/esm2020/src/signals/src/effect.mjs +0 -67
  111. package/esm2020/src/signals/src/graph.mjs +0 -114
  112. package/esm2020/src/signals/src/signal.mjs +0 -78
  113. package/esm2020/src/signals/src/watch.mjs +0 -54
  114. package/esm2020/src/signals/src/weak_ref.mjs +0 -27
  115. package/esm2020/src/transfer_state.mjs +0 -153
  116. package/fesm2015/core.mjs +0 -30473
  117. package/fesm2015/core.mjs.map +0 -1
  118. package/fesm2015/testing.mjs +0 -26417
  119. package/fesm2015/testing.mjs.map +0 -1
  120. package/fesm2020/core.mjs.map +0 -1
  121. package/fesm2020/testing.mjs.map +0 -1
  122. package/schematics/migrations/relative-link-resolution/bundle.js +0 -283
  123. package/schematics/migrations/relative-link-resolution/bundle.js.map +0 -7
  124. package/schematics/migrations/router-link-with-href/bundle.js.map +0 -7
  125. /package/{esm2020 → esm2022}/core.mjs +0 -0
  126. /package/{esm2020 → esm2022}/index.mjs +0 -0
  127. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
  128. /package/{esm2020 → esm2022}/src/application_config.mjs +0 -0
  129. /package/{esm2020 → esm2022}/src/application_tokens.mjs +0 -0
  130. /package/{esm2020 → esm2022}/src/change_detection/change_detection.mjs +0 -0
  131. /package/{esm2020 → esm2022}/src/change_detection/constants.mjs +0 -0
  132. /package/{esm2020 → esm2022}/src/change_detection/differs/default_iterable_differ.mjs +0 -0
  133. /package/{esm2020 → esm2022}/src/change_detection/differs/default_keyvalue_differ.mjs +0 -0
  134. /package/{esm2020 → esm2022}/src/change_detection/pipe_transform.mjs +0 -0
  135. /package/{esm2020 → esm2022}/src/change_detection.mjs +0 -0
  136. /package/{esm2020 → esm2022}/src/compiler/compiler_facade.mjs +0 -0
  137. /package/{esm2020 → esm2022}/src/compiler/compiler_facade_interface.mjs +0 -0
  138. /package/{esm2020 → esm2022}/src/core_reactivity_export.mjs +0 -0
  139. /package/{esm2020 → esm2022}/src/core_render3_private_export.mjs +0 -0
  140. /package/{esm2020 → esm2022}/src/debug/debug_node.mjs +0 -0
  141. /package/{esm2020 → esm2022}/src/di/create_injector.mjs +0 -0
  142. /package/{esm2020 → esm2022}/src/di/forward_ref.mjs +0 -0
  143. /package/{esm2020 → esm2022}/src/di/initializer_token.mjs +0 -0
  144. /package/{esm2020 → esm2022}/src/di/inject_switch.mjs +0 -0
  145. /package/{esm2020 → esm2022}/src/di/injectable.mjs +0 -0
  146. /package/{esm2020 → esm2022}/src/di/injection_token.mjs +0 -0
  147. /package/{esm2020 → esm2022}/src/di/injector_marker.mjs +0 -0
  148. /package/{esm2020 → esm2022}/src/di/injector_token.mjs +0 -0
  149. /package/{esm2020 → esm2022}/src/di/interface/defs.mjs +0 -0
  150. /package/{esm2020 → esm2022}/src/di/interface/injector.mjs +0 -0
  151. /package/{esm2020 → esm2022}/src/di/interface/provider.mjs +0 -0
  152. /package/{esm2020 → esm2022}/src/di/internal_tokens.mjs +0 -0
  153. /package/{esm2020 → esm2022}/src/di/jit/environment.mjs +0 -0
  154. /package/{esm2020 → esm2022}/src/di/jit/injectable.mjs +0 -0
  155. /package/{esm2020 → esm2022}/src/di/jit/util.mjs +0 -0
  156. /package/{esm2020 → esm2022}/src/di/metadata.mjs +0 -0
  157. /package/{esm2020 → esm2022}/src/di/metadata_attr.mjs +0 -0
  158. /package/{esm2020 → esm2022}/src/di/null_injector.mjs +0 -0
  159. /package/{esm2020 → esm2022}/src/di/provider_token.mjs +0 -0
  160. /package/{esm2020 → esm2022}/src/di/r3_injector.mjs +0 -0
  161. /package/{esm2020 → esm2022}/src/di/reflective_errors.mjs +0 -0
  162. /package/{esm2020 → esm2022}/src/di/reflective_key.mjs +0 -0
  163. /package/{esm2020 → esm2022}/src/di/reflective_provider.mjs +0 -0
  164. /package/{esm2020 → esm2022}/src/di/scope.mjs +0 -0
  165. /package/{esm2020 → esm2022}/src/di.mjs +0 -0
  166. /package/{esm2020 → esm2022}/src/error_details_base_url.mjs +0 -0
  167. /package/{esm2020 → esm2022}/src/error_handler.mjs +0 -0
  168. /package/{esm2020 → esm2022}/src/errors.mjs +0 -0
  169. /package/{esm2020 → esm2022}/src/event_emitter.mjs +0 -0
  170. /package/{esm2020 → esm2022}/src/hydration/compression.mjs +0 -0
  171. /package/{esm2020 → esm2022}/src/hydration/error_handling.mjs +0 -0
  172. /package/{esm2020 → esm2022}/src/hydration/interfaces.mjs +0 -0
  173. /package/{esm2020 → esm2022}/src/hydration/skip_hydration.mjs +0 -0
  174. /package/{esm2020 → esm2022}/src/hydration/tokens.mjs +0 -0
  175. /package/{esm2020 → esm2022}/src/hydration/views.mjs +0 -0
  176. /package/{esm2020 → esm2022}/src/i18n/locale_data_api.mjs +0 -0
  177. /package/{esm2020 → esm2022}/src/i18n/locale_en.mjs +0 -0
  178. /package/{esm2020 → esm2022}/src/i18n/localization.mjs +0 -0
  179. /package/{esm2020 → esm2022}/src/i18n/tokens.mjs +0 -0
  180. /package/{esm2020 → esm2022}/src/interface/lifecycle_hooks.mjs +0 -0
  181. /package/{esm2020 → esm2022}/src/interface/simple_change.mjs +0 -0
  182. /package/{esm2020 → esm2022}/src/interface/type.mjs +0 -0
  183. /package/{esm2020 → esm2022}/src/linker/component_factory.mjs +0 -0
  184. /package/{esm2020 → esm2022}/src/linker/ng_module_factory.mjs +0 -0
  185. /package/{esm2020 → esm2022}/src/linker/ng_module_factory_loader.mjs +0 -0
  186. /package/{esm2020 → esm2022}/src/linker/ng_module_factory_loader_impl.mjs +0 -0
  187. /package/{esm2020 → esm2022}/src/linker/ng_module_registration.mjs +0 -0
  188. /package/{esm2020 → esm2022}/src/linker/view_ref.mjs +0 -0
  189. /package/{esm2020 → esm2022}/src/linker.mjs +0 -0
  190. /package/{esm2020 → esm2022}/src/metadata/ng_module_def.mjs +0 -0
  191. /package/{esm2020 → esm2022}/src/metadata/resource_loading.mjs +0 -0
  192. /package/{esm2020 → esm2022}/src/metadata/schema.mjs +0 -0
  193. /package/{esm2020 → esm2022}/src/metadata/view.mjs +0 -0
  194. /package/{esm2020 → esm2022}/src/platform_core_providers.mjs +0 -0
  195. /package/{esm2020 → esm2022}/src/r3_symbols.mjs +0 -0
  196. /package/{esm2020 → esm2022}/src/reflection/platform_reflection_capabilities.mjs +0 -0
  197. /package/{esm2020 → esm2022}/src/reflection/reflection_capabilities.mjs +0 -0
  198. /package/{esm2020 → esm2022}/src/render/api_flags.mjs +0 -0
  199. /package/{esm2020 → esm2022}/src/render.mjs +0 -0
  200. /package/{esm2020 → esm2022}/src/render3/assert.mjs +0 -0
  201. /package/{esm2020 → esm2022}/src/render3/bindings.mjs +0 -0
  202. /package/{esm2020 → esm2022}/src/render3/collect_native_nodes.mjs +0 -0
  203. /package/{esm2020 → esm2022}/src/render3/component.mjs +0 -0
  204. /package/{esm2020 → esm2022}/src/render3/definition.mjs +0 -0
  205. /package/{esm2020 → esm2022}/src/render3/definition_factory.mjs +0 -0
  206. /package/{esm2020 → esm2022}/src/render3/di.mjs +0 -0
  207. /package/{esm2020 → esm2022}/src/render3/di_setup.mjs +0 -0
  208. /package/{esm2020 → esm2022}/src/render3/errors.mjs +0 -0
  209. /package/{esm2020 → esm2022}/src/render3/errors_di.mjs +0 -0
  210. /package/{esm2020 → esm2022}/src/render3/features/copy_definition_feature.mjs +0 -0
  211. /package/{esm2020 → esm2022}/src/render3/features/host_directives_feature.mjs +0 -0
  212. /package/{esm2020 → esm2022}/src/render3/features/inherit_definition_feature.mjs +0 -0
  213. /package/{esm2020 → esm2022}/src/render3/features/ng_onchanges_feature.mjs +0 -0
  214. /package/{esm2020 → esm2022}/src/render3/features/providers_feature.mjs +0 -0
  215. /package/{esm2020 → esm2022}/src/render3/fields.mjs +0 -0
  216. /package/{esm2020 → esm2022}/src/render3/global_utils_api.mjs +0 -0
  217. /package/{esm2020 → esm2022}/src/render3/hooks.mjs +0 -0
  218. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_apply.mjs +0 -0
  219. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_debug.mjs +0 -0
  220. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_insert_before_index.mjs +0 -0
  221. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_locale_id.mjs +0 -0
  222. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_parse.mjs +0 -0
  223. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_postprocess.mjs +0 -0
  224. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_tree_shaking.mjs +0 -0
  225. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_util.mjs +0 -0
  226. /package/{esm2020 → esm2022}/src/render3/index.mjs +0 -0
  227. /package/{esm2020 → esm2022}/src/render3/instructions/advance.mjs +0 -0
  228. /package/{esm2020 → esm2022}/src/render3/instructions/all.mjs +0 -0
  229. /package/{esm2020 → esm2022}/src/render3/instructions/attribute.mjs +0 -0
  230. /package/{esm2020 → esm2022}/src/render3/instructions/attribute_interpolation.mjs +0 -0
  231. /package/{esm2020 → esm2022}/src/render3/instructions/change_detection.mjs +0 -0
  232. /package/{esm2020 → esm2022}/src/render3/instructions/class_map_interpolation.mjs +0 -0
  233. /package/{esm2020 → esm2022}/src/render3/instructions/di.mjs +0 -0
  234. /package/{esm2020 → esm2022}/src/render3/instructions/di_attr.mjs +0 -0
  235. /package/{esm2020 → esm2022}/src/render3/instructions/element_container.mjs +0 -0
  236. /package/{esm2020 → esm2022}/src/render3/instructions/element_validation.mjs +0 -0
  237. /package/{esm2020 → esm2022}/src/render3/instructions/get_current_view.mjs +0 -0
  238. /package/{esm2020 → esm2022}/src/render3/instructions/host_property.mjs +0 -0
  239. /package/{esm2020 → esm2022}/src/render3/instructions/i18n.mjs +0 -0
  240. /package/{esm2020 → esm2022}/src/render3/instructions/i18n_icu_container_visitor.mjs +0 -0
  241. /package/{esm2020 → esm2022}/src/render3/instructions/interpolation.mjs +0 -0
  242. /package/{esm2020 → esm2022}/src/render3/instructions/namespace.mjs +0 -0
  243. /package/{esm2020 → esm2022}/src/render3/instructions/next_context.mjs +0 -0
  244. /package/{esm2020 → esm2022}/src/render3/instructions/projection.mjs +0 -0
  245. /package/{esm2020 → esm2022}/src/render3/instructions/property.mjs +0 -0
  246. /package/{esm2020 → esm2022}/src/render3/instructions/property_interpolation.mjs +0 -0
  247. /package/{esm2020 → esm2022}/src/render3/instructions/storage.mjs +0 -0
  248. /package/{esm2020 → esm2022}/src/render3/instructions/style_map_interpolation.mjs +0 -0
  249. /package/{esm2020 → esm2022}/src/render3/instructions/style_prop_interpolation.mjs +0 -0
  250. /package/{esm2020 → esm2022}/src/render3/instructions/template.mjs +0 -0
  251. /package/{esm2020 → esm2022}/src/render3/instructions/text.mjs +0 -0
  252. /package/{esm2020 → esm2022}/src/render3/instructions/text_interpolation.mjs +0 -0
  253. /package/{esm2020 → esm2022}/src/render3/interfaces/container.mjs +0 -0
  254. /package/{esm2020 → esm2022}/src/render3/interfaces/context.mjs +0 -0
  255. /package/{esm2020 → esm2022}/src/render3/interfaces/definition.mjs +0 -0
  256. /package/{esm2020 → esm2022}/src/render3/interfaces/document.mjs +0 -0
  257. /package/{esm2020 → esm2022}/src/render3/interfaces/i18n.mjs +0 -0
  258. /package/{esm2020 → esm2022}/src/render3/interfaces/injector.mjs +0 -0
  259. /package/{esm2020 → esm2022}/src/render3/interfaces/lview_tracking.mjs +0 -0
  260. /package/{esm2020 → esm2022}/src/render3/interfaces/node.mjs +0 -0
  261. /package/{esm2020 → esm2022}/src/render3/interfaces/projection.mjs +0 -0
  262. /package/{esm2020 → esm2022}/src/render3/interfaces/public_definitions.mjs +0 -0
  263. /package/{esm2020 → esm2022}/src/render3/interfaces/query.mjs +0 -0
  264. /package/{esm2020 → esm2022}/src/render3/interfaces/renderer.mjs +0 -0
  265. /package/{esm2020 → esm2022}/src/render3/interfaces/renderer_dom.mjs +0 -0
  266. /package/{esm2020 → esm2022}/src/render3/interfaces/sanitization.mjs +0 -0
  267. /package/{esm2020 → esm2022}/src/render3/interfaces/styling.mjs +0 -0
  268. /package/{esm2020 → esm2022}/src/render3/interfaces/type_checks.mjs +0 -0
  269. /package/{esm2020 → esm2022}/src/render3/jit/directive.mjs +0 -0
  270. /package/{esm2020 → esm2022}/src/render3/jit/environment.mjs +0 -0
  271. /package/{esm2020 → esm2022}/src/render3/jit/jit_options.mjs +0 -0
  272. /package/{esm2020 → esm2022}/src/render3/jit/module_patch.mjs +0 -0
  273. /package/{esm2020 → esm2022}/src/render3/jit/partial.mjs +0 -0
  274. /package/{esm2020 → esm2022}/src/render3/jit/pipe.mjs +0 -0
  275. /package/{esm2020 → esm2022}/src/render3/jit/util.mjs +0 -0
  276. /package/{esm2020 → esm2022}/src/render3/metadata.mjs +0 -0
  277. /package/{esm2020 → esm2022}/src/render3/namespaces.mjs +0 -0
  278. /package/{esm2020 → esm2022}/src/render3/ng_module_ref.mjs +0 -0
  279. /package/{esm2020 → esm2022}/src/render3/node_assert.mjs +0 -0
  280. /package/{esm2020 → esm2022}/src/render3/node_manipulation_i18n.mjs +0 -0
  281. /package/{esm2020 → esm2022}/src/render3/node_selector_matcher.mjs +0 -0
  282. /package/{esm2020 → esm2022}/src/render3/pipe.mjs +0 -0
  283. /package/{esm2020 → esm2022}/src/render3/profiler.mjs +0 -0
  284. /package/{esm2020 → esm2022}/src/render3/pure_function.mjs +0 -0
  285. /package/{esm2020 → esm2022}/src/render3/query.mjs +0 -0
  286. /package/{esm2020 → esm2022}/src/render3/state.mjs +0 -0
  287. /package/{esm2020 → esm2022}/src/render3/styling/class_differ.mjs +0 -0
  288. /package/{esm2020 → esm2022}/src/render3/styling/static_styling.mjs +0 -0
  289. /package/{esm2020 → esm2022}/src/render3/styling/style_binding_list.mjs +0 -0
  290. /package/{esm2020 → esm2022}/src/render3/styling/styling_parser.mjs +0 -0
  291. /package/{esm2020 → esm2022}/src/render3/tokens.mjs +0 -0
  292. /package/{esm2020 → esm2022}/src/render3/util/attrs_utils.mjs +0 -0
  293. /package/{esm2020 → esm2022}/src/render3/util/discovery_utils.mjs +0 -0
  294. /package/{esm2020 → esm2022}/src/render3/util/global_utils.mjs +0 -0
  295. /package/{esm2020 → esm2022}/src/render3/util/injector_utils.mjs +0 -0
  296. /package/{esm2020 → esm2022}/src/render3/util/misc_utils.mjs +0 -0
  297. /package/{esm2020 → esm2022}/src/render3/util/stringify_utils.mjs +0 -0
  298. /package/{esm2020 → esm2022}/src/render3/util/view_traversal_utils.mjs +0 -0
  299. /package/{esm2020 → esm2022}/src/render3/util/view_utils.mjs +0 -0
  300. /package/{esm2020 → esm2022}/src/render3/view_engine_compatibility_prebound.mjs +0 -0
  301. /package/{esm2020 → esm2022}/src/sanitization/bypass.mjs +0 -0
  302. /package/{esm2020 → esm2022}/src/sanitization/html_sanitizer.mjs +0 -0
  303. /package/{esm2020 → esm2022}/src/sanitization/iframe_attrs_validation.mjs +0 -0
  304. /package/{esm2020 → esm2022}/src/sanitization/inert_body.mjs +0 -0
  305. /package/{esm2020 → esm2022}/src/sanitization/sanitization.mjs +0 -0
  306. /package/{esm2020 → esm2022}/src/sanitization/security.mjs +0 -0
  307. /package/{esm2020 → esm2022}/src/sanitization/url_sanitizer.mjs +0 -0
  308. /package/{esm2020 → esm2022}/src/signals/src/untracked.mjs +0 -0
  309. /package/{esm2020 → esm2022}/src/util/array_utils.mjs +0 -0
  310. /package/{esm2020 → esm2022}/src/util/assert.mjs +0 -0
  311. /package/{esm2020 → esm2022}/src/util/char_code.mjs +0 -0
  312. /package/{esm2020 → esm2022}/src/util/closure.mjs +0 -0
  313. /package/{esm2020 → esm2022}/src/util/coercion.mjs +0 -0
  314. /package/{esm2020 → esm2022}/src/util/comparison.mjs +0 -0
  315. /package/{esm2020 → esm2022}/src/util/decorators.mjs +0 -0
  316. /package/{esm2020 → esm2022}/src/util/dom.mjs +0 -0
  317. /package/{esm2020 → esm2022}/src/util/empty.mjs +0 -0
  318. /package/{esm2020 → esm2022}/src/util/errors.mjs +0 -0
  319. /package/{esm2020 → esm2022}/src/util/global.mjs +0 -0
  320. /package/{esm2020 → esm2022}/src/util/is_dev_mode.mjs +0 -0
  321. /package/{esm2020 → esm2022}/src/util/iterable.mjs +0 -0
  322. /package/{esm2020 → esm2022}/src/util/lang.mjs +0 -0
  323. /package/{esm2020 → esm2022}/src/util/microtask.mjs +0 -0
  324. /package/{esm2020 → esm2022}/src/util/ng_dev_mode.mjs +0 -0
  325. /package/{esm2020 → esm2022}/src/util/ng_i18n_closure_mode.mjs +0 -0
  326. /package/{esm2020 → esm2022}/src/util/ng_jit_mode.mjs +0 -0
  327. /package/{esm2020 → esm2022}/src/util/ng_reflect.mjs +0 -0
  328. /package/{esm2020 → esm2022}/src/util/noop.mjs +0 -0
  329. /package/{esm2020 → esm2022}/src/util/property.mjs +0 -0
  330. /package/{esm2020 → esm2022}/src/util/raf.mjs +0 -0
  331. /package/{esm2020 → esm2022}/src/util/security/trusted_type_defs.mjs +0 -0
  332. /package/{esm2020 → esm2022}/src/util/security/trusted_types.mjs +0 -0
  333. /package/{esm2020 → esm2022}/src/util/security/trusted_types_bypass.mjs +0 -0
  334. /package/{esm2020 → esm2022}/src/util/stringify.mjs +0 -0
  335. /package/{esm2020 → esm2022}/src/view/provider_flags.mjs +0 -0
  336. /package/{esm2020 → esm2022}/src/zone/async-stack-tagging.mjs +0 -0
  337. /package/{esm2020 → esm2022}/src/zone/ng_zone.mjs +0 -0
  338. /package/{esm2020 → esm2022}/src/zone.mjs +0 -0
  339. /package/{esm2020 → esm2022}/testing/index.mjs +0 -0
  340. /package/{esm2020 → esm2022}/testing/public_api.mjs +0 -0
  341. /package/{esm2020 → esm2022}/testing/src/async.mjs +0 -0
  342. /package/{esm2020 → esm2022}/testing/src/component_fixture.mjs +0 -0
  343. /package/{esm2020 → esm2022}/testing/src/fake_async.mjs +0 -0
  344. /package/{esm2020 → esm2022}/testing/src/metadata_override.mjs +0 -0
  345. /package/{esm2020 → esm2022}/testing/src/metadata_overrider.mjs +0 -0
  346. /package/{esm2020 → esm2022}/testing/src/resolvers.mjs +0 -0
  347. /package/{esm2020 → esm2022}/testing/src/styling.mjs +0 -0
  348. /package/{esm2020 → esm2022}/testing/src/test_bed_common.mjs +0 -0
  349. /package/{esm2020 → esm2022}/testing/src/test_bed_compiler.mjs +0 -0
  350. /package/{esm2020 → esm2022}/testing/src/test_hooks.mjs +0 -0
  351. /package/{esm2020 → esm2022}/testing/src/testing.mjs +0 -0
  352. /package/{esm2020 → esm2022}/testing/src/testing_internal.mjs +0 -0
  353. /package/{esm2020 → esm2022}/testing/testing.mjs +0 -0
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v16.0.0-next.4
2
+ * @license Angular v16.0.0-next.5
3
3
  * (c) 2010-2022 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -620,6 +620,9 @@ const SOURCE = '__source';
620
620
  * - Injector instance: Use the injector for resolution.
621
621
  */
622
622
  let _currentInjector = undefined;
623
+ function getCurrentInjector() {
624
+ return _currentInjector;
625
+ }
623
626
  function setCurrentInjector(injector) {
624
627
  const former = _currentInjector;
625
628
  _currentInjector = injector;
@@ -628,7 +631,7 @@ function setCurrentInjector(injector) {
628
631
  function injectInjectorOnly(token, flags = InjectFlags.Default) {
629
632
  if (_currentInjector === undefined) {
630
633
  throw new RuntimeError(-203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, ngDevMode &&
631
- `inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with \`EnvironmentInjector#runInContext\`.`);
634
+ `inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with \`runInInjectionContext\`.`);
632
635
  }
633
636
  else if (_currentInjector === null) {
634
637
  return injectRootLimpMode(token, undefined, flags);
@@ -1971,6 +1974,8 @@ const ID = 20;
1971
1974
  const EMBEDDED_VIEW_INJECTOR = 21;
1972
1975
  const ON_DESTROY_HOOKS = 22;
1973
1976
  const HYDRATION = 23;
1977
+ const REACTIVE_TEMPLATE_CONSUMER = 24;
1978
+ const REACTIVE_HOST_BINDING_CONSUMER = 25;
1974
1979
  /**
1975
1980
  * Size of LView's header. Necessary to adjust for it when setting slots.
1976
1981
  *
@@ -1978,7 +1983,7 @@ const HYDRATION = 23;
1978
1983
  * instruction index into `LView` index. All other indexes should be in the `LView` index space and
1979
1984
  * there should be no need to refer to `HEADER_OFFSET` anywhere else.
1980
1985
  */
1981
- const HEADER_OFFSET = 24;
1986
+ const HEADER_OFFSET = 26;
1982
1987
  // Note: This hack is necessary so we don't erroneously get a circular dependency
1983
1988
  // failure based on types.
1984
1989
  const unusedValueExportToPlacateAjd$4 = 1;
@@ -4354,126 +4359,6 @@ function makePropDecorator(name, props, parentClass, additionalProcessing) {
4354
4359
  */
4355
4360
  const Attribute = makeParamDecorator('Attribute', (attributeName) => ({ attributeName, __NG_ELEMENT_ID__: () => ɵɵinjectAttribute(attributeName) }));
4356
4361
 
4357
- /**
4358
- * Creates a token that can be used in a DI Provider.
4359
- *
4360
- * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a
4361
- * runtime representation) such as when injecting an interface, callable type, array or
4362
- * parameterized type.
4363
- *
4364
- * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by
4365
- * the `Injector`. This provides an additional level of type safety.
4366
- *
4367
- * ```
4368
- * interface MyInterface {...}
4369
- * const myInterface = injector.get(new InjectionToken<MyInterface>('SomeToken'));
4370
- * // myInterface is inferred to be MyInterface.
4371
- * ```
4372
- *
4373
- * When creating an `InjectionToken`, you can optionally specify a factory function which returns
4374
- * (possibly by creating) a default value of the parameterized type `T`. This sets up the
4375
- * `InjectionToken` using this factory as a provider as if it was defined explicitly in the
4376
- * application's root injector. If the factory function, which takes zero arguments, needs to inject
4377
- * dependencies, it can do so using the `inject` function.
4378
- * As you can see in the Tree-shakable InjectionToken example below.
4379
- *
4380
- * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which
4381
- * overrides the above behavior and marks the token as belonging to a particular `@NgModule` (note:
4382
- * this option is now deprecated). As mentioned above, `'root'` is the default value for
4383
- * `providedIn`.
4384
- *
4385
- * The `providedIn: NgModule` and `providedIn: 'any'` options are deprecated.
4386
- *
4387
- * @usageNotes
4388
- * ### Basic Examples
4389
- *
4390
- * ### Plain InjectionToken
4391
- *
4392
- * {@example core/di/ts/injector_spec.ts region='InjectionToken'}
4393
- *
4394
- * ### Tree-shakable InjectionToken
4395
- *
4396
- * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
4397
- *
4398
- *
4399
- * @publicApi
4400
- */
4401
- class InjectionToken {
4402
- /**
4403
- * @param _desc Description for the token,
4404
- * used only for debugging purposes,
4405
- * it should but does not need to be unique
4406
- * @param options Options for the token's usage, as described above
4407
- */
4408
- constructor(_desc, options) {
4409
- this._desc = _desc;
4410
- /** @internal */
4411
- this.ngMetadataName = 'InjectionToken';
4412
- this.ɵprov = undefined;
4413
- if (typeof options == 'number') {
4414
- (typeof ngDevMode === 'undefined' || ngDevMode) &&
4415
- assertLessThan(options, 0, 'Only negative numbers are supported here');
4416
- // This is a special hack to assign __NG_ELEMENT_ID__ to this instance.
4417
- // See `InjectorMarkers`
4418
- this.__NG_ELEMENT_ID__ = options;
4419
- }
4420
- else if (options !== undefined) {
4421
- this.ɵprov = ɵɵdefineInjectable({
4422
- token: this,
4423
- providedIn: options.providedIn || 'root',
4424
- factory: options.factory,
4425
- });
4426
- }
4427
- }
4428
- /**
4429
- * @internal
4430
- */
4431
- get multi() {
4432
- return this;
4433
- }
4434
- toString() {
4435
- return `InjectionToken ${this._desc}`;
4436
- }
4437
- }
4438
-
4439
- /**
4440
- * A DI token that you can use to create a virtual [provider](guide/glossary#provider)
4441
- * that will populate the `entryComponents` field of components and NgModules
4442
- * based on its `useValue` property value.
4443
- * All components that are referenced in the `useValue` value (either directly
4444
- * or in a nested array or map) are added to the `entryComponents` property.
4445
- *
4446
- * @usageNotes
4447
- *
4448
- * The following example shows how the router can populate the `entryComponents`
4449
- * field of an NgModule based on a router configuration that refers
4450
- * to components.
4451
- *
4452
- * ```typescript
4453
- * // helper function inside the router
4454
- * function provideRoutes(routes) {
4455
- * return [
4456
- * {provide: ROUTES, useValue: routes},
4457
- * {provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: routes, multi: true}
4458
- * ];
4459
- * }
4460
- *
4461
- * // user code
4462
- * let routes = [
4463
- * {path: '/root', component: RootComp},
4464
- * {path: '/teams', component: TeamsComp}
4465
- * ];
4466
- *
4467
- * @NgModule({
4468
- * providers: [provideRoutes(routes)]
4469
- * })
4470
- * class ModuleWithRoutes {}
4471
- * ```
4472
- *
4473
- * @publicApi
4474
- * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary.
4475
- */
4476
- const ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken('AnalyzeForEntryComponents');
4477
4362
  // Stores the default value of `emitDistinctChangesOnly` when the `emitDistinctChangesOnly` is not
4478
4363
  // explicitly set.
4479
4364
  const emitDistinctChangesOnlyDefaultValue = true;
@@ -6462,6 +6347,8 @@ function detachView(lContainer, removeIndex) {
6462
6347
  function destroyLView(tView, lView) {
6463
6348
  if (!(lView[FLAGS] & 128 /* LViewFlags.Destroyed */)) {
6464
6349
  const renderer = lView[RENDERER];
6350
+ lView[REACTIVE_TEMPLATE_CONSUMER]?.destroy();
6351
+ lView[REACTIVE_HOST_BINDING_CONSUMER]?.destroy();
6465
6352
  if (renderer.destroyNode) {
6466
6353
  applyView(tView, lView, renderer, 3 /* WalkTNodeTreeAction.Destroy */, null, null);
6467
6354
  }
@@ -6862,15 +6749,12 @@ function nativeRemoveNode(renderer, rNode, isHostElement) {
6862
6749
  }
6863
6750
  }
6864
6751
  /**
6865
- * Removes the contents of a given RElement using a given renderer.
6752
+ * Clears the contents of a given RElement.
6866
6753
  *
6867
- * @param renderer A renderer to be used
6868
6754
  * @param rElement the native RElement to be cleared
6869
6755
  */
6870
- function clearElementContents(renderer, rElement) {
6871
- while (rElement.firstChild) {
6872
- nativeRemoveChild(renderer, rElement, rElement.firstChild, false);
6873
- }
6756
+ function clearElementContents(rElement) {
6757
+ rElement.textContent = '';
6874
6758
  }
6875
6759
  /**
6876
6760
  * Performs the operation of `action` on the node. Typically this involves inserting or removing
@@ -8078,6 +7962,88 @@ function getSanitizer() {
8078
7962
  return lView && lView[SANITIZER];
8079
7963
  }
8080
7964
 
7965
+ /**
7966
+ * Creates a token that can be used in a DI Provider.
7967
+ *
7968
+ * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a
7969
+ * runtime representation) such as when injecting an interface, callable type, array or
7970
+ * parameterized type.
7971
+ *
7972
+ * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by
7973
+ * the `Injector`. This provides an additional level of type safety.
7974
+ *
7975
+ * ```
7976
+ * interface MyInterface {...}
7977
+ * const myInterface = injector.get(new InjectionToken<MyInterface>('SomeToken'));
7978
+ * // myInterface is inferred to be MyInterface.
7979
+ * ```
7980
+ *
7981
+ * When creating an `InjectionToken`, you can optionally specify a factory function which returns
7982
+ * (possibly by creating) a default value of the parameterized type `T`. This sets up the
7983
+ * `InjectionToken` using this factory as a provider as if it was defined explicitly in the
7984
+ * application's root injector. If the factory function, which takes zero arguments, needs to inject
7985
+ * dependencies, it can do so using the `inject` function.
7986
+ * As you can see in the Tree-shakable InjectionToken example below.
7987
+ *
7988
+ * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which
7989
+ * overrides the above behavior and marks the token as belonging to a particular `@NgModule` (note:
7990
+ * this option is now deprecated). As mentioned above, `'root'` is the default value for
7991
+ * `providedIn`.
7992
+ *
7993
+ * The `providedIn: NgModule` and `providedIn: 'any'` options are deprecated.
7994
+ *
7995
+ * @usageNotes
7996
+ * ### Basic Examples
7997
+ *
7998
+ * ### Plain InjectionToken
7999
+ *
8000
+ * {@example core/di/ts/injector_spec.ts region='InjectionToken'}
8001
+ *
8002
+ * ### Tree-shakable InjectionToken
8003
+ *
8004
+ * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}
8005
+ *
8006
+ *
8007
+ * @publicApi
8008
+ */
8009
+ class InjectionToken {
8010
+ /**
8011
+ * @param _desc Description for the token,
8012
+ * used only for debugging purposes,
8013
+ * it should but does not need to be unique
8014
+ * @param options Options for the token's usage, as described above
8015
+ */
8016
+ constructor(_desc, options) {
8017
+ this._desc = _desc;
8018
+ /** @internal */
8019
+ this.ngMetadataName = 'InjectionToken';
8020
+ this.ɵprov = undefined;
8021
+ if (typeof options == 'number') {
8022
+ (typeof ngDevMode === 'undefined' || ngDevMode) &&
8023
+ assertLessThan(options, 0, 'Only negative numbers are supported here');
8024
+ // This is a special hack to assign __NG_ELEMENT_ID__ to this instance.
8025
+ // See `InjectorMarkers`
8026
+ this.__NG_ELEMENT_ID__ = options;
8027
+ }
8028
+ else if (options !== undefined) {
8029
+ this.ɵprov = ɵɵdefineInjectable({
8030
+ token: this,
8031
+ providedIn: options.providedIn || 'root',
8032
+ factory: options.factory,
8033
+ });
8034
+ }
8035
+ }
8036
+ /**
8037
+ * @internal
8038
+ */
8039
+ get multi() {
8040
+ return this;
8041
+ }
8042
+ toString() {
8043
+ return `InjectionToken ${this._desc}`;
8044
+ }
8045
+ }
8046
+
8081
8047
  /**
8082
8048
  * A multi-provider token for initialization functions that will run upon construction of an
8083
8049
  * environment injector.
@@ -8181,7 +8147,7 @@ function internalImportProvidersFrom(checkForStandaloneCmp, ...sources) {
8181
8147
  // Narrow `source` to access the internal type analogue for `ModuleWithProviders`.
8182
8148
  const internalSource = source;
8183
8149
  if (walkProviderTree(internalSource, providersOut, [], dedup)) {
8184
- injectorTypesWithProviders || (injectorTypesWithProviders = []);
8150
+ injectorTypesWithProviders ||= [];
8185
8151
  injectorTypesWithProviders.push(internalSource);
8186
8152
  }
8187
8153
  });
@@ -8277,7 +8243,7 @@ function walkProviderTree(container, providersOut, parents, dedup) {
8277
8243
  try {
8278
8244
  deepForEach(injDef.imports, imported => {
8279
8245
  if (walkProviderTree(imported, providersOut, parents, dedup)) {
8280
- importTypesWithProviders || (importTypesWithProviders = []);
8246
+ importTypesWithProviders ||= [];
8281
8247
  // If the processed import is an injector type with providers, we store it in the
8282
8248
  // list of import types with providers, so that we can process those afterwards.
8283
8249
  importTypesWithProviders.push(imported);
@@ -8935,6 +8901,13 @@ class TransferState {
8935
8901
  this.store = {};
8936
8902
  this.onSerializeCallbacks = {};
8937
8903
  }
8904
+ /** @nocollapse */
8905
+ static { this.ɵprov =
8906
+ /** @pureOrBreakMyCode */ ɵɵdefineInjectable({
8907
+ token: TransferState,
8908
+ providedIn: 'root',
8909
+ factory: initTransferState,
8910
+ }); }
8938
8911
  /**
8939
8912
  * Get the value corresponding to a key. Return `defaultValue` if key is not found.
8940
8913
  */
@@ -8989,13 +8962,6 @@ class TransferState {
8989
8962
  return JSON.stringify(this.store);
8990
8963
  }
8991
8964
  }
8992
- /** @nocollapse */
8993
- TransferState.ɵprov =
8994
- /** @pureOrBreakMyCode */ ɵɵdefineInjectable({
8995
- token: TransferState,
8996
- providedIn: 'root',
8997
- factory: initTransferState,
8998
- });
8999
8965
  function retrieveTransferredState(doc, appId) {
9000
8966
  // Locate the script tag with the JSON data transferred from the server.
9001
8967
  // The id of the script tag is set to the Angular appId + 'state'.
@@ -9191,7 +9157,7 @@ function isRNodeClaimedForHydration(node) {
9191
9157
  return !!node.__claimed;
9192
9158
  }
9193
9159
  function setSegmentHead(hydrationInfo, index, node) {
9194
- hydrationInfo.segmentHeads ?? (hydrationInfo.segmentHeads = {});
9160
+ hydrationInfo.segmentHeads ??= {};
9195
9161
  hydrationInfo.segmentHeads[index] = node;
9196
9162
  }
9197
9163
  function getSegmentHead(hydrationInfo, index) {
@@ -9236,7 +9202,7 @@ function calcSerializedContainerSize(hydrationInfo, index) {
9236
9202
  * in the DOM at serialization time. We should not attempt hydration for
9237
9203
  * such nodes and instead, use a regular "creation mode".
9238
9204
  */
9239
- function isDisconnectedNode(hydrationInfo, index) {
9205
+ function isDisconnectedNode$1(hydrationInfo, index) {
9240
9206
  // Check if we are processing disconnected info for the first time.
9241
9207
  if (typeof hydrationInfo.disconnectedNodes === 'undefined') {
9242
9208
  const nodeIds = hydrationInfo.data[DISCONNECTED_NODES];
@@ -9270,7 +9236,7 @@ class ComponentFactory$1 {
9270
9236
  }
9271
9237
 
9272
9238
  function noComponentFactoryError(component) {
9273
- const error = Error(`No component factory found for ${stringify(component)}. Did you add it to @NgModule.entryComponents?`);
9239
+ const error = Error(`No component factory found for ${stringify(component)}.`);
9274
9240
  error[ERROR_COMPONENT] = component;
9275
9241
  return error;
9276
9242
  }
@@ -9299,8 +9265,8 @@ class _NullComponentFactoryResolver {
9299
9265
  * Component class can be used directly.
9300
9266
  */
9301
9267
  class ComponentFactoryResolver$1 {
9268
+ static { this.NULL = ( /* @__PURE__ */new _NullComponentFactoryResolver()); }
9302
9269
  }
9303
- ComponentFactoryResolver$1.NULL = ( /* @__PURE__ */new _NullComponentFactoryResolver());
9304
9270
 
9305
9271
  /**
9306
9272
  * Creates an ElementRef from the most recent node.
@@ -9339,12 +9305,12 @@ class ElementRef {
9339
9305
  constructor(nativeElement) {
9340
9306
  this.nativeElement = nativeElement;
9341
9307
  }
9308
+ /**
9309
+ * @internal
9310
+ * @nocollapse
9311
+ */
9312
+ static { this.__NG_ELEMENT_ID__ = injectElementRef; }
9342
9313
  }
9343
- /**
9344
- * @internal
9345
- * @nocollapse
9346
- */
9347
- ElementRef.__NG_ELEMENT_ID__ = injectElementRef;
9348
9314
  /**
9349
9315
  * Unwraps `ElementRef` and return the `nativeElement`.
9350
9316
  *
@@ -9378,12 +9344,12 @@ class RendererFactory2 {
9378
9344
  * @publicApi
9379
9345
  */
9380
9346
  class Renderer2 {
9347
+ /**
9348
+ * @internal
9349
+ * @nocollapse
9350
+ */
9351
+ static { this.__NG_ELEMENT_ID__ = () => injectRenderer2(); }
9381
9352
  }
9382
- /**
9383
- * @internal
9384
- * @nocollapse
9385
- */
9386
- Renderer2.__NG_ELEMENT_ID__ = () => injectRenderer2();
9387
9353
  /** Injects a Renderer2 for the current component. */
9388
9354
  function injectRenderer2() {
9389
9355
  // We need the Renderer to be based on the component that it's being injected into, however since
@@ -9400,13 +9366,13 @@ function injectRenderer2() {
9400
9366
  * @publicApi
9401
9367
  */
9402
9368
  class Sanitizer {
9369
+ /** @nocollapse */
9370
+ static { this.ɵprov = ɵɵdefineInjectable({
9371
+ token: Sanitizer,
9372
+ providedIn: 'root',
9373
+ factory: () => null,
9374
+ }); }
9403
9375
  }
9404
- /** @nocollapse */
9405
- Sanitizer.ɵprov = ɵɵdefineInjectable({
9406
- token: Sanitizer,
9407
- providedIn: 'root',
9408
- factory: () => null,
9409
- });
9410
9376
 
9411
9377
  /**
9412
9378
  * @description Represents the version of Angular
@@ -9424,7 +9390,7 @@ class Version {
9424
9390
  /**
9425
9391
  * @publicApi
9426
9392
  */
9427
- const VERSION = new Version('16.0.0-next.4');
9393
+ const VERSION = new Version('16.0.0-next.5');
9428
9394
 
9429
9395
  // This default value is when checking the hierarchy for a token.
9430
9396
  //
@@ -9675,39 +9641,318 @@ function getExpressionChangedErrorDetails(lView, bindingIndex, oldValue, newValu
9675
9641
  return { propName: undefined, oldValue, newValue };
9676
9642
  }
9677
9643
 
9678
- /** A special value which designates that a value has not changed. */
9679
- const NO_CHANGE = (typeof ngDevMode === 'undefined' || ngDevMode) ? { __brand__: 'NO_CHANGE' } : {};
9644
+ /**
9645
+ * A `WeakRef`-compatible reference that fakes the API with a strong reference
9646
+ * internally.
9647
+ */
9648
+ class LeakyRef {
9649
+ constructor(ref) {
9650
+ this.ref = ref;
9651
+ }
9652
+ deref() {
9653
+ return this.ref;
9654
+ }
9655
+ }
9656
+ // `WeakRef` is not always defined in every TS environment where Angular is compiled. Instead,
9657
+ // read it off of the global context if available.
9658
+ // tslint:disable-next-line: no-toplevel-property-access
9659
+ let WeakRefImpl = _global['WeakRef'] ?? LeakyRef;
9660
+ function newWeakRef(value) {
9661
+ if (typeof ngDevMode !== 'undefined' && ngDevMode && WeakRefImpl === undefined) {
9662
+ throw new Error(`Angular requires a browser which supports the 'WeakRef' API`);
9663
+ }
9664
+ return new WeakRefImpl(value);
9665
+ }
9666
+ function setAlternateWeakRefImpl(impl) {
9667
+ // no-op since the alternate impl is included by default by the framework. Remove once internal
9668
+ // migration is complete.
9669
+ }
9680
9670
 
9681
9671
  /**
9682
- * Advances to an element for later binding instructions.
9672
+ * Counter tracking the next `ProducerId` or `ConsumerId`.
9673
+ */
9674
+ let _nextReactiveId = 0;
9675
+ /**
9676
+ * Tracks the currently active reactive consumer (or `null` if there is no active
9677
+ * consumer).
9678
+ */
9679
+ let activeConsumer = null;
9680
+ function setActiveConsumer(consumer) {
9681
+ const prev = activeConsumer;
9682
+ activeConsumer = consumer;
9683
+ return prev;
9684
+ }
9685
+ /**
9686
+ * A node in the reactive graph.
9683
9687
  *
9684
- * Used in conjunction with instructions like {@link property} to act on elements with specified
9685
- * indices, for example those created with {@link element} or {@link elementStart}.
9688
+ * Nodes can be producers of reactive values, consumers of other reactive values, or both.
9686
9689
  *
9687
- * ```ts
9688
- * (rf: RenderFlags, ctx: any) => {
9689
- * if (rf & 1) {
9690
- * text(0, 'Hello');
9691
- * text(1, 'Goodbye')
9692
- * element(2, 'div');
9693
- * }
9694
- * if (rf & 2) {
9695
- * advance(2); // Advance twice to the <div>.
9696
- * property('title', 'test');
9697
- * }
9698
- * }
9699
- * ```
9700
- * @param delta Number of elements to advance forwards by.
9690
+ * Producers are nodes that produce values, and can be depended upon by consumer nodes.
9701
9691
  *
9702
- * @codeGenApi
9692
+ * Producers expose a monotonic `valueVersion` counter, and are responsible for incrementing this
9693
+ * version when their value semantically changes. Some producers may produce their values lazily and
9694
+ * thus at times need to be polled for potential updates to their value (and by extension their
9695
+ * `valueVersion`). This is accomplished via the `onProducerUpdateValueVersion` method for
9696
+ * implemented by producers, which should perform whatever calculations are necessary to ensure
9697
+ * `valueVersion` is up to date.
9698
+ *
9699
+ * Consumers are nodes that depend on the values of producers and are notified when those values
9700
+ * might have changed.
9701
+ *
9702
+ * Consumers do not wrap the reads they consume themselves, but rather can be set as the active
9703
+ * reader via `setActiveConsumer`. Reads of producers that happen while a consumer is active will
9704
+ * result in those producers being added as dependencies of that consumer node.
9705
+ *
9706
+ * The set of dependencies of a consumer is dynamic. Implementers expose a monotonically increasing
9707
+ * `trackingVersion` counter, which increments whenever the consumer is about to re-run any reactive
9708
+ * reads it needs and establish a new set of dependencies as a result.
9709
+ *
9710
+ * Producers store the last `trackingVersion` they've seen from `Consumer`s which have read them.
9711
+ * This allows a producer to identify whether its record of the dependency is current or stale, by
9712
+ * comparing the consumer's `trackingVersion` to the version at which the dependency was
9713
+ * last observed.
9703
9714
  */
9704
- function ɵɵadvance(delta) {
9705
- ngDevMode && assertGreaterThan(delta, 0, 'Can only advance forward');
9706
- selectIndexInternal(getTView(), getLView(), getSelectedIndex() + delta, !!ngDevMode && isInCheckNoChangesMode());
9707
- }
9708
- function selectIndexInternal(tView, lView, index, checkNoChangesMode) {
9709
- ngDevMode && assertIndexInDeclRange(lView, index);
9710
- // Flush the initial hooks for elements in the view that have been added up to this point.
9715
+ class ReactiveNode {
9716
+ constructor() {
9717
+ this.id = _nextReactiveId++;
9718
+ /**
9719
+ * A cached weak reference to this node, which will be used in `ReactiveEdge`s.
9720
+ */
9721
+ this.ref = newWeakRef(this);
9722
+ /**
9723
+ * Edges to producers on which this node depends (in its consumer capacity).
9724
+ */
9725
+ this.producers = new Map();
9726
+ /**
9727
+ * Edges to consumers on which this node depends (in its producer capacity).
9728
+ */
9729
+ this.consumers = new Map();
9730
+ /**
9731
+ * Monotonically increasing counter representing a version of this `Consumer`'s
9732
+ * dependencies.
9733
+ */
9734
+ this.trackingVersion = 0;
9735
+ /**
9736
+ * Monotonically increasing counter which increases when the value of this `Producer`
9737
+ * semantically changes.
9738
+ */
9739
+ this.valueVersion = 0;
9740
+ }
9741
+ /**
9742
+ * Polls dependencies of a consumer to determine if they have actually changed.
9743
+ *
9744
+ * If this returns `false`, then even though the consumer may have previously been notified of a
9745
+ * change, the values of its dependencies have not actually changed and the consumer should not
9746
+ * rerun any reactions.
9747
+ */
9748
+ consumerPollProducersForChange() {
9749
+ for (const [producerId, edge] of this.producers) {
9750
+ const producer = edge.producerNode.deref();
9751
+ if (producer === undefined || edge.atTrackingVersion !== this.trackingVersion) {
9752
+ // This dependency edge is stale, so remove it.
9753
+ this.producers.delete(producerId);
9754
+ producer?.consumers.delete(this.id);
9755
+ continue;
9756
+ }
9757
+ if (producer.producerPollStatus(edge.seenValueVersion)) {
9758
+ // One of the dependencies reports a real value change.
9759
+ return true;
9760
+ }
9761
+ }
9762
+ // No dependency reported a real value change, so the `Consumer` has also not been
9763
+ // impacted.
9764
+ return false;
9765
+ }
9766
+ /**
9767
+ * Notify all consumers of this producer that its value may have changed.
9768
+ */
9769
+ producerMayHaveChanged() {
9770
+ for (const [consumerId, edge] of this.consumers) {
9771
+ const consumer = edge.consumerNode.deref();
9772
+ if (consumer === undefined || consumer.trackingVersion !== edge.atTrackingVersion) {
9773
+ this.consumers.delete(consumerId);
9774
+ consumer?.producers.delete(this.id);
9775
+ continue;
9776
+ }
9777
+ consumer.onConsumerDependencyMayHaveChanged();
9778
+ }
9779
+ }
9780
+ /**
9781
+ * Mark that this producer node has been accessed in the current reactive context.
9782
+ */
9783
+ producerAccessed() {
9784
+ if (activeConsumer === null) {
9785
+ return;
9786
+ }
9787
+ // Either create or update the dependency `Edge` in both directions.
9788
+ let edge = activeConsumer.producers.get(this.id);
9789
+ if (edge === undefined) {
9790
+ edge = {
9791
+ consumerNode: activeConsumer.ref,
9792
+ producerNode: this.ref,
9793
+ seenValueVersion: this.valueVersion,
9794
+ atTrackingVersion: activeConsumer.trackingVersion,
9795
+ };
9796
+ activeConsumer.producers.set(this.id, edge);
9797
+ this.consumers.set(activeConsumer.id, edge);
9798
+ }
9799
+ else {
9800
+ edge.seenValueVersion = this.valueVersion;
9801
+ edge.atTrackingVersion = activeConsumer.trackingVersion;
9802
+ }
9803
+ }
9804
+ /**
9805
+ * Whether this consumer currently has any producers registered.
9806
+ */
9807
+ get hasProducers() {
9808
+ return this.producers.size > 0;
9809
+ }
9810
+ /**
9811
+ * Checks if a `Producer` has a current value which is different than the value
9812
+ * last seen at a specific version by a `Consumer` which recorded a dependency on
9813
+ * this `Producer`.
9814
+ */
9815
+ producerPollStatus(lastSeenValueVersion) {
9816
+ // `producer.valueVersion` may be stale, but a mismatch still means that the value
9817
+ // last seen by the `Consumer` is also stale.
9818
+ if (this.valueVersion !== lastSeenValueVersion) {
9819
+ return true;
9820
+ }
9821
+ // Trigger the `Producer` to update its `valueVersion` if necessary.
9822
+ this.onProducerUpdateValueVersion();
9823
+ // At this point, we can trust `producer.valueVersion`.
9824
+ return this.valueVersion !== lastSeenValueVersion;
9825
+ }
9826
+ }
9827
+
9828
+ /**
9829
+ * Marks current view and all ancestors dirty.
9830
+ *
9831
+ * Returns the root view because it is found as a byproduct of marking the view tree
9832
+ * dirty, and can be used by methods that consume markViewDirty() to easily schedule
9833
+ * change detection. Otherwise, such methods would need to traverse up the view tree
9834
+ * an additional time to get the root view and schedule a tick on it.
9835
+ *
9836
+ * @param lView The starting LView to mark dirty
9837
+ * @returns the root LView
9838
+ */
9839
+ function markViewDirty(lView) {
9840
+ while (lView) {
9841
+ lView[FLAGS] |= 32 /* LViewFlags.Dirty */;
9842
+ const parent = getLViewParent(lView);
9843
+ // Stop traversing up as soon as you find a root view that wasn't attached to any container
9844
+ if (isRootView(lView) && !parent) {
9845
+ return lView;
9846
+ }
9847
+ // continue otherwise
9848
+ lView = parent;
9849
+ }
9850
+ return null;
9851
+ }
9852
+
9853
+ const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;
9854
+ class ReactiveLViewConsumer extends ReactiveNode {
9855
+ constructor() {
9856
+ super(...arguments);
9857
+ this._lView = null;
9858
+ }
9859
+ set lView(lView) {
9860
+ NG_DEV_MODE && assertEqual(this._lView, null, 'Consumer already associated with a view.');
9861
+ this._lView = lView;
9862
+ }
9863
+ onConsumerDependencyMayHaveChanged() {
9864
+ NG_DEV_MODE &&
9865
+ assertDefined(this._lView, 'Updating a signal during template or host binding execution is not allowed.');
9866
+ markViewDirty(this._lView);
9867
+ }
9868
+ onProducerUpdateValueVersion() {
9869
+ // This type doesn't implement the producer side of a `ReactiveNode`.
9870
+ }
9871
+ get hasReadASignal() {
9872
+ return this.hasProducers;
9873
+ }
9874
+ runInContext(fn, rf, ctx) {
9875
+ const prevConsumer = setActiveConsumer(this);
9876
+ this.trackingVersion++;
9877
+ try {
9878
+ fn(rf, ctx);
9879
+ }
9880
+ finally {
9881
+ setActiveConsumer(prevConsumer);
9882
+ }
9883
+ }
9884
+ destroy() {
9885
+ // Incrementing the version means that every producer which tries to update this consumer will
9886
+ // consider its record stale, and not notify.
9887
+ this.trackingVersion++;
9888
+ }
9889
+ }
9890
+ let currentConsumer = null;
9891
+ function getOrCreateCurrentLViewConsumer() {
9892
+ currentConsumer ??= new ReactiveLViewConsumer();
9893
+ return currentConsumer;
9894
+ }
9895
+ /**
9896
+ * Create a new template consumer pointing at the specified LView.
9897
+ * Sometimes, a previously created consumer may be reused, in order to save on allocations. In that
9898
+ * case, the LView will be updated.
9899
+ */
9900
+ function getReactiveLViewConsumer(lView, slot) {
9901
+ return lView[slot] ?? getOrCreateCurrentLViewConsumer();
9902
+ }
9903
+ /**
9904
+ * Assigns the `currentTemplateContext` to its LView's `REACTIVE_CONSUMER` slot if there are tracked
9905
+ * producers.
9906
+ *
9907
+ * The presence of producers means that a signal was read while the consumer was the active
9908
+ * consumer.
9909
+ *
9910
+ * If no producers are present, we do not assign the current template context. This also means we
9911
+ * can just reuse the template context for the next LView.
9912
+ */
9913
+ function commitLViewConsumerIfHasProducers(lView, slot) {
9914
+ const consumer = getOrCreateCurrentLViewConsumer();
9915
+ if (!consumer.hasReadASignal) {
9916
+ return;
9917
+ }
9918
+ lView[slot] = currentConsumer;
9919
+ consumer.lView = lView;
9920
+ currentConsumer = new ReactiveLViewConsumer();
9921
+ }
9922
+
9923
+ /** A special value which designates that a value has not changed. */
9924
+ const NO_CHANGE = (typeof ngDevMode === 'undefined' || ngDevMode) ? { __brand__: 'NO_CHANGE' } : {};
9925
+
9926
+ /**
9927
+ * Advances to an element for later binding instructions.
9928
+ *
9929
+ * Used in conjunction with instructions like {@link property} to act on elements with specified
9930
+ * indices, for example those created with {@link element} or {@link elementStart}.
9931
+ *
9932
+ * ```ts
9933
+ * (rf: RenderFlags, ctx: any) => {
9934
+ * if (rf & 1) {
9935
+ * text(0, 'Hello');
9936
+ * text(1, 'Goodbye')
9937
+ * element(2, 'div');
9938
+ * }
9939
+ * if (rf & 2) {
9940
+ * advance(2); // Advance twice to the <div>.
9941
+ * property('title', 'test');
9942
+ * }
9943
+ * }
9944
+ * ```
9945
+ * @param delta Number of elements to advance forwards by.
9946
+ *
9947
+ * @codeGenApi
9948
+ */
9949
+ function ɵɵadvance(delta) {
9950
+ ngDevMode && assertGreaterThan(delta, 0, 'Can only advance forward');
9951
+ selectIndexInternal(getTView(), getLView(), getSelectedIndex() + delta, !!ngDevMode && isInCheckNoChangesMode());
9952
+ }
9953
+ function selectIndexInternal(tView, lView, index, checkNoChangesMode) {
9954
+ ngDevMode && assertIndexInDeclRange(lView, index);
9955
+ // Flush the initial hooks for elements in the view that have been added up to this point.
9711
9956
  // PERF WARNING: do NOT extract this to a separate function without running benchmarks
9712
9957
  if (!checkNoChangesMode) {
9713
9958
  const hooksInitPhaseCompleted = (lView[FLAGS] & 3 /* LViewFlags.InitPhaseStateMask */) === 3 /* InitPhaseState.InitPhaseCompleted */;
@@ -9757,6 +10002,22 @@ function runInInjectionContext(injector, fn) {
9757
10002
  setInjectImplementation(previousInjectImplementation);
9758
10003
  }
9759
10004
  }
10005
+ /**
10006
+ * Asserts that the current stack frame is within an injection context and has access to `inject`.
10007
+ *
10008
+ * @param debugFn a reference to the function making the assertion (used for the error message).
10009
+ *
10010
+ * @publicApi
10011
+ */
10012
+ function assertInInjectionContext(debugFn) {
10013
+ // Taking a `Function` instead of a string name here prevents the unminified name of the function
10014
+ // from being retained in the bundle regardless of minification.
10015
+ if (!getInjectImplementation() && !getCurrentInjector()) {
10016
+ throw new RuntimeError(-203 /* RuntimeErrorCode.MISSING_INJECTION_CONTEXT */, ngDevMode &&
10017
+ (debugFn.name +
10018
+ '() can only be used within an injection context such as a constructor, a factory function, a field initializer, or a function used with `runInInjectionContext`'));
10019
+ }
10020
+ }
9760
10021
 
9761
10022
  /**
9762
10023
  * A mapping of the @angular/core API surface used in generated expressions to the actual symbols.
@@ -9909,6 +10170,8 @@ function createInjectorWithoutInjectorInstances(defType, parent = null, addition
9909
10170
  * @publicApi
9910
10171
  */
9911
10172
  class Injector {
10173
+ static { this.THROW_IF_NOT_FOUND = THROW_IF_NOT_FOUND; }
10174
+ static { this.NULL = ( /* @__PURE__ */new NullInjector()); }
9912
10175
  static create(options, parent) {
9913
10176
  if (Array.isArray(options)) {
9914
10177
  return createInjector({ name: '' }, parent, options, '');
@@ -9918,20 +10181,18 @@ class Injector {
9918
10181
  return createInjector({ name }, options.parent, options.providers, name);
9919
10182
  }
9920
10183
  }
10184
+ /** @nocollapse */
10185
+ static { this.ɵprov = ɵɵdefineInjectable({
10186
+ token: Injector,
10187
+ providedIn: 'any',
10188
+ factory: () => ɵɵinject(INJECTOR),
10189
+ }); }
10190
+ /**
10191
+ * @internal
10192
+ * @nocollapse
10193
+ */
10194
+ static { this.__NG_ELEMENT_ID__ = -1 /* InjectorMarkers.Injector */; }
9921
10195
  }
9922
- Injector.THROW_IF_NOT_FOUND = THROW_IF_NOT_FOUND;
9923
- Injector.NULL = ( /* @__PURE__ */new NullInjector());
9924
- /** @nocollapse */
9925
- Injector.ɵprov = ɵɵdefineInjectable({
9926
- token: Injector,
9927
- providedIn: 'any',
9928
- factory: () => ɵɵinject(INJECTOR),
9929
- });
9930
- /**
9931
- * @internal
9932
- * @nocollapse
9933
- */
9934
- Injector.__NG_ELEMENT_ID__ = -1 /* InjectorMarkers.Injector */;
9935
10196
 
9936
10197
  function findFirstClosedCycle(keys) {
9937
10198
  const res = [];
@@ -10532,6 +10793,7 @@ class ReflectiveInjector {
10532
10793
  }
10533
10794
  }
10534
10795
  class ReflectiveInjector_ {
10796
+ static { this.INJECTOR_KEY = ( /* @__PURE__ */ReflectiveKey.get(Injector)); }
10535
10797
  /**
10536
10798
  * Private
10537
10799
  */
@@ -10687,7 +10949,6 @@ class ReflectiveInjector_ {
10687
10949
  return this.displayName;
10688
10950
  }
10689
10951
  }
10690
- ReflectiveInjector_.INJECTOR_KEY = ( /* @__PURE__ */ReflectiveKey.get(Injector));
10691
10952
  function _mapProviders(injector, fn) {
10692
10953
  const res = [];
10693
10954
  for (let i = 0; i < injector._providers.length; ++i) {
@@ -10761,6 +11022,7 @@ function processHostBindingOpCodes(tView, lView) {
10761
11022
  const hostBindingOpCodes = tView.hostBindingOpCodes;
10762
11023
  if (hostBindingOpCodes === null)
10763
11024
  return;
11025
+ const consumer = getReactiveLViewConsumer(lView, REACTIVE_HOST_BINDING_CONSUMER);
10764
11026
  try {
10765
11027
  for (let i = 0; i < hostBindingOpCodes.length; i++) {
10766
11028
  const opCode = hostBindingOpCodes[i];
@@ -10775,11 +11037,13 @@ function processHostBindingOpCodes(tView, lView) {
10775
11037
  const hostBindingFn = hostBindingOpCodes[++i];
10776
11038
  setBindingRootForHostBindings(bindingRootIndx, directiveIdx);
10777
11039
  const context = lView[directiveIdx];
10778
- hostBindingFn(2 /* RenderFlags.Update */, context);
11040
+ consumer.runInContext(hostBindingFn, 2 /* RenderFlags.Update */, context);
10779
11041
  }
10780
11042
  }
10781
11043
  }
10782
11044
  finally {
11045
+ lView[REACTIVE_HOST_BINDING_CONSUMER] === null &&
11046
+ commitLViewConsumerIfHasProducers(lView, REACTIVE_HOST_BINDING_CONSUMER);
10783
11047
  setSelectedIndex(-1);
10784
11048
  }
10785
11049
  }
@@ -10835,6 +11099,7 @@ function createLView(parentLView, tView, context, flags, host, tHostNode, render
10835
11099
  lView[ID] = getUniqueLViewId();
10836
11100
  lView[HYDRATION] = hydrationInfo;
10837
11101
  lView[EMBEDDED_VIEW_INJECTOR] = embeddedViewInjector;
11102
+ lView[REACTIVE_TEMPLATE_CONSUMER] = null;
10838
11103
  ngDevMode &&
10839
11104
  assertEqual(tView.type == 2 /* TViewType.Embedded */ ? parentLView !== null : true, true, 'Embedded views must have parentLView');
10840
11105
  lView[DECLARATION_COMPONENT_VIEW] =
@@ -11119,6 +11384,7 @@ function refreshView(tView, lView, templateFn, context) {
11119
11384
  }
11120
11385
  }
11121
11386
  function executeTemplate(tView, lView, templateFn, rf, context) {
11387
+ const consumer = getReactiveLViewConsumer(lView, REACTIVE_TEMPLATE_CONSUMER);
11122
11388
  const prevSelectedIndex = getSelectedIndex();
11123
11389
  const isUpdatePhase = rf & 2 /* RenderFlags.Update */;
11124
11390
  try {
@@ -11130,9 +11396,12 @@ function executeTemplate(tView, lView, templateFn, rf, context) {
11130
11396
  }
11131
11397
  const preHookType = isUpdatePhase ? 2 /* ProfilerEvent.TemplateUpdateStart */ : 0 /* ProfilerEvent.TemplateCreateStart */;
11132
11398
  profiler(preHookType, context);
11133
- templateFn(rf, context);
11399
+ consumer.runInContext(templateFn, rf, context);
11134
11400
  }
11135
11401
  finally {
11402
+ if (lView[REACTIVE_TEMPLATE_CONSUMER] === null) {
11403
+ commitLViewConsumerIfHasProducers(lView, REACTIVE_TEMPLATE_CONSUMER);
11404
+ }
11136
11405
  setSelectedIndex(prevSelectedIndex);
11137
11406
  const postHookType = isUpdatePhase ? 3 /* ProfilerEvent.TemplateUpdateEnd */ : 1 /* ProfilerEvent.TemplateCreateEnd */;
11138
11407
  profiler(postHookType, context);
@@ -12236,30 +12505,6 @@ function addToViewTree(lView, lViewOrLContainer) {
12236
12505
  ///////////////////////////////
12237
12506
  //// Change detection
12238
12507
  ///////////////////////////////
12239
- /**
12240
- * Marks current view and all ancestors dirty.
12241
- *
12242
- * Returns the root view because it is found as a byproduct of marking the view tree
12243
- * dirty, and can be used by methods that consume markViewDirty() to easily schedule
12244
- * change detection. Otherwise, such methods would need to traverse up the view tree
12245
- * an additional time to get the root view and schedule a tick on it.
12246
- *
12247
- * @param lView The starting LView to mark dirty
12248
- * @returns the root LView
12249
- */
12250
- function markViewDirty(lView) {
12251
- while (lView) {
12252
- lView[FLAGS] |= 32 /* LViewFlags.Dirty */;
12253
- const parent = getLViewParent(lView);
12254
- // Stop traversing up as soon as you find a root view that wasn't attached to any container
12255
- if (isRootView(lView) && !parent) {
12256
- return lView;
12257
- }
12258
- // continue otherwise
12259
- lView = parent;
12260
- }
12261
- return null;
12262
- }
12263
12508
  function detectChangesInternal(tView, lView, context, notifyErrorHandler = true) {
12264
12509
  const rendererFactory = lView[RENDERER_FACTORY];
12265
12510
  // Check no changes mode is a dev only mode used to verify that bindings have not changed
@@ -12940,6 +13185,7 @@ class ComponentRef extends ComponentRef$1 {
12940
13185
  this.location = location;
12941
13186
  this._rootLView = _rootLView;
12942
13187
  this._tNode = _tNode;
13188
+ this.previousInputValues = null;
12943
13189
  this.instance = instance;
12944
13190
  this.hostView = this.changeDetectorRef = new RootViewRef(_rootLView);
12945
13191
  this.componentType = componentType;
@@ -12948,8 +13194,16 @@ class ComponentRef extends ComponentRef$1 {
12948
13194
  const inputData = this._tNode.inputs;
12949
13195
  let dataValue;
12950
13196
  if (inputData !== null && (dataValue = inputData[name])) {
13197
+ this.previousInputValues ??= new Map();
13198
+ // Do not set the input if it is the same as the last value
13199
+ // This behavior matches `bindingUpdated` when binding inputs in templates.
13200
+ if (this.previousInputValues.has(name) &&
13201
+ Object.is(this.previousInputValues.get(name), value)) {
13202
+ return;
13203
+ }
12951
13204
  const lView = this._rootLView;
12952
13205
  setInputsForProperty(lView[TVIEW], lView, dataValue, name, value);
13206
+ this.previousInputValues.set(name, value);
12953
13207
  markDirtyIfOnPush(lView, this._tNode.index);
12954
13208
  }
12955
13209
  else {
@@ -14680,10 +14934,9 @@ function siblingAfter(skip, from) {
14680
14934
  */
14681
14935
  function stringifyNavigationInstructions(instructions) {
14682
14936
  const container = [];
14683
- let i = 0;
14684
- while (i < instructions.length) {
14685
- const step = instructions[i++];
14686
- const repeat = instructions[i++];
14937
+ for (let i = 0; i < instructions.length; i += 2) {
14938
+ const step = instructions[i];
14939
+ const repeat = instructions[i + 1];
14687
14940
  for (let r = 0; r < repeat; r++) {
14688
14941
  container.push(step === NodeNavigationStep.FirstChild ? 'firstChild' : 'nextSibling');
14689
14942
  }
@@ -14696,10 +14949,9 @@ function stringifyNavigationInstructions(instructions) {
14696
14949
  */
14697
14950
  function navigateToNode(from, instructions) {
14698
14951
  let node = from;
14699
- let i = 0;
14700
- while (i < instructions.length) {
14701
- const step = instructions[i++];
14702
- const repeat = instructions[i++];
14952
+ for (let i = 0; i < instructions.length; i += 2) {
14953
+ const step = instructions[i];
14954
+ const repeat = instructions[i + 1];
14703
14955
  for (let r = 0; r < repeat; r++) {
14704
14956
  if (ngDevMode && !node) {
14705
14957
  throw nodeNotFoundAtPathError(from, stringifyNavigationInstructions(instructions));
@@ -14926,7 +15178,7 @@ function createContainerAnchorImpl(tView, lView, tNode, index) {
14926
15178
  */
14927
15179
  function locateOrCreateContainerAnchorImpl(tView, lView, tNode, index) {
14928
15180
  const hydrationInfo = lView[HYDRATION];
14929
- const isNodeCreationMode = !hydrationInfo || isInSkipHydrationBlock$1() || isDisconnectedNode(hydrationInfo, index);
15181
+ const isNodeCreationMode = !hydrationInfo || isInSkipHydrationBlock$1() || isDisconnectedNode$1(hydrationInfo, index);
14930
15182
  lastNodeWasCreated(isNodeCreationMode);
14931
15183
  // Regular creation mode.
14932
15184
  if (isNodeCreationMode) {
@@ -15192,7 +15444,7 @@ let _locateOrCreateElementNode = (tView, lView, tNode, renderer, name, index) =>
15192
15444
  */
15193
15445
  function locateOrCreateElementNodeImpl(tView, lView, tNode, renderer, name, index) {
15194
15446
  const hydrationInfo = lView[HYDRATION];
15195
- const isNodeCreationMode = !hydrationInfo || isInSkipHydrationBlock$1() || isDisconnectedNode(hydrationInfo, index);
15447
+ const isNodeCreationMode = !hydrationInfo || isInSkipHydrationBlock$1() || isDisconnectedNode$1(hydrationInfo, index);
15196
15448
  lastNodeWasCreated(isNodeCreationMode);
15197
15449
  // Regular creation mode.
15198
15450
  if (isNodeCreationMode) {
@@ -15220,7 +15472,7 @@ function locateOrCreateElementNodeImpl(tView, lView, tNode, renderer, name, inde
15220
15472
  enterSkipHydrationBlock(tNode);
15221
15473
  // Since this isn't hydratable, we need to empty the node
15222
15474
  // so there's no duplicate content after render
15223
- clearElementContents(renderer, native);
15475
+ clearElementContents(native);
15224
15476
  }
15225
15477
  else if (ngDevMode) {
15226
15478
  // If this is not a component host, throw an error.
@@ -17666,8 +17918,11 @@ function isStylingValuePresent(value) {
17666
17918
  * @param suffix
17667
17919
  */
17668
17920
  function normalizeSuffix(value, suffix) {
17669
- if (value == null /** || value === undefined */) {
17921
+ if (value == null || value === '') {
17670
17922
  // do nothing
17923
+ // Do not add the suffix if the value is going to be empty.
17924
+ // As it produce invalid CSS, which the browsers will automatically omit but Domino will not.
17925
+ // Example: `"left": "px;"` instead of `"left": ""`.
17671
17926
  }
17672
17927
  else if (typeof suffix === 'string') {
17673
17928
  value = value + suffix;
@@ -17726,7 +17981,7 @@ let _locateOrCreateTextNode = (tView, lView, tNode, value, index) => {
17726
17981
  */
17727
17982
  function locateOrCreateTextNodeImpl(tView, lView, tNode, value, index) {
17728
17983
  const hydrationInfo = lView[HYDRATION];
17729
- const isNodeCreationMode = !hydrationInfo || isInSkipHydrationBlock$1() || isDisconnectedNode(hydrationInfo, index);
17984
+ const isNodeCreationMode = !hydrationInfo || isInSkipHydrationBlock$1() || isDisconnectedNode$1(hydrationInfo, index);
17730
17985
  lastNodeWasCreated(isNodeCreationMode);
17731
17986
  // Regular creation mode.
17732
17987
  if (isNodeCreationMode) {
@@ -21534,13 +21789,13 @@ class StandaloneService {
21534
21789
  this.cachedInjectors.clear();
21535
21790
  }
21536
21791
  }
21792
+ /** @nocollapse */
21793
+ static { this.ɵprov = ɵɵdefineInjectable({
21794
+ token: StandaloneService,
21795
+ providedIn: 'environment',
21796
+ factory: () => new StandaloneService(ɵɵinject(EnvironmentInjector)),
21797
+ }); }
21537
21798
  }
21538
- /** @nocollapse */
21539
- StandaloneService.ɵprov = ɵɵdefineInjectable({
21540
- token: StandaloneService,
21541
- providedIn: 'environment',
21542
- factory: () => new StandaloneService(ɵɵinject(EnvironmentInjector)),
21543
- });
21544
21799
  /**
21545
21800
  * A feature that acts as a setup code for the {@link StandaloneService}.
21546
21801
  *
@@ -22582,6 +22837,7 @@ function symbolIterator() {
22582
22837
  * @publicApi
22583
22838
  */
22584
22839
  class QueryList {
22840
+ static { Symbol.iterator; }
22585
22841
  /**
22586
22842
  * Returns `Observable` of `QueryList` notifying the subscriber of changes.
22587
22843
  */
@@ -22709,7 +22965,6 @@ class QueryList {
22709
22965
  this.changes.unsubscribe();
22710
22966
  }
22711
22967
  }
22712
- Symbol.iterator;
22713
22968
 
22714
22969
  /**
22715
22970
  * Represents an embedded template that can be used to instantiate embedded views.
@@ -22730,12 +22985,12 @@ Symbol.iterator;
22730
22985
  * @publicApi
22731
22986
  */
22732
22987
  class TemplateRef {
22988
+ /**
22989
+ * @internal
22990
+ * @nocollapse
22991
+ */
22992
+ static { this.__NG_ELEMENT_ID__ = injectTemplateRef; }
22733
22993
  }
22734
- /**
22735
- * @internal
22736
- * @nocollapse
22737
- */
22738
- TemplateRef.__NG_ELEMENT_ID__ = injectTemplateRef;
22739
22994
  const ViewEngineTemplateRef = TemplateRef;
22740
22995
  // TODO(alxhub): combine interface and implementation. Currently this is challenging since something
22741
22996
  // in g3 depends on them being separate.
@@ -22865,11 +23120,13 @@ function cleanupLView(lView) {
22865
23120
  * Walks over all views registered within the ApplicationRef and removes
22866
23121
  * all dehydrated views from all `LContainer`s along the way.
22867
23122
  */
22868
- function cleanupDehydratedViews(appRef) {
23123
+ function cleanupDehydratedViews(appRef, pendingTasks) {
22869
23124
  // Wait once an app becomes stable and cleanup all views that
22870
23125
  // were not claimed during the application bootstrap process.
22871
23126
  // The timing is similar to when we kick off serialization on the server.
22872
- return appRef.isStable.pipe(first((isStable) => isStable)).toPromise().then(() => {
23127
+ const isStablePromise = appRef.isStable.pipe(first((isStable) => isStable)).toPromise();
23128
+ const pendingTasksPromise = pendingTasks.whenAllTasksComplete;
23129
+ return Promise.allSettled([isStablePromise, pendingTasksPromise]).then(() => {
22873
23130
  const viewRefs = appRef._views;
22874
23131
  for (const viewRef of viewRefs) {
22875
23132
  const lView = getComponentLViewForHydration(viewRef);
@@ -22972,12 +23229,12 @@ function findMatchingDehydratedView(lContainer, template) {
22972
23229
  * @publicApi
22973
23230
  */
22974
23231
  class ViewContainerRef {
23232
+ /**
23233
+ * @internal
23234
+ * @nocollapse
23235
+ */
23236
+ static { this.__NG_ELEMENT_ID__ = injectViewContainerRef; }
22975
23237
  }
22976
- /**
22977
- * @internal
22978
- * @nocollapse
22979
- */
22980
- ViewContainerRef.__NG_ELEMENT_ID__ = injectViewContainerRef;
22981
23238
  /**
22982
23239
  * Creates a ViewContainerRef and stores it on the injector. Or, if the ViewContainerRef
22983
23240
  * already exists, retrieves the existing ViewContainerRef.
@@ -23291,7 +23548,7 @@ function locateOrCreateAnchorNode(lContainer, hostLView, hostTNode, slotValue) {
23291
23548
  const hydrationInfo = hostLView[HYDRATION];
23292
23549
  const noOffsetIndex = hostTNode.index - HEADER_OFFSET;
23293
23550
  const isNodeCreationMode = !hydrationInfo || isInSkipHydrationBlock(hostTNode) ||
23294
- isDisconnectedNode(hydrationInfo, noOffsetIndex);
23551
+ isDisconnectedNode$1(hydrationInfo, noOffsetIndex);
23295
23552
  // Regular creation mode.
23296
23553
  if (isNodeCreationMode) {
23297
23554
  return createAnchorNode(lContainer, hostLView, hostTNode, slotValue);
@@ -24166,7 +24423,6 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
24166
24423
  ];
24167
24424
  exports.forEach(verifyExportsAreDeclaredOrReExported);
24168
24425
  declarations.forEach(decl => verifyDeclarationIsUnique(decl, allowDuplicateDeclarationsInRoot));
24169
- declarations.forEach(verifyComponentEntryComponentsIsPartOfNgModule);
24170
24426
  const ngModule = getAnnotation(moduleType, 'NgModule');
24171
24427
  if (ngModule) {
24172
24428
  ngModule.imports &&
@@ -24176,8 +24432,6 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
24176
24432
  });
24177
24433
  ngModule.bootstrap && deepForEach(ngModule.bootstrap, verifyCorrectBootstrapType);
24178
24434
  ngModule.bootstrap && deepForEach(ngModule.bootstrap, verifyComponentIsPartOfNgModule);
24179
- ngModule.entryComponents &&
24180
- deepForEach(ngModule.entryComponents, verifyComponentIsPartOfNgModule);
24181
24435
  }
24182
24436
  // Throw Error if any errors were detected.
24183
24437
  if (errors.length) {
@@ -24255,16 +24509,6 @@ function verifySemanticsOfNgModuleDef(moduleType, allowDuplicateDeclarationsInRo
24255
24509
  `function for bootstrap instead.`);
24256
24510
  }
24257
24511
  }
24258
- function verifyComponentEntryComponentsIsPartOfNgModule(type) {
24259
- type = resolveForwardRef(type);
24260
- if (getComponentDef(type)) {
24261
- // We know we are component
24262
- const component = getAnnotation(type, 'Component');
24263
- if (component && component.entryComponents) {
24264
- deepForEach(component.entryComponents, verifyComponentIsPartOfNgModule);
24265
- }
24266
- }
24267
- }
24268
24512
  function verifySemanticsOfNgModuleImport(type, importingModule) {
24269
24513
  type = resolveForwardRef(type);
24270
24514
  const directiveDef = getComponentDef(type) || getDirectiveDef(type);
@@ -25105,7 +25349,7 @@ const NgModule = makeDecorator('NgModule', (ngModule) => ngModule, undefined, un
25105
25349
  * Decorator that marks the following class as an NgModule, and supplies
25106
25350
  * configuration metadata for it.
25107
25351
  *
25108
- * * The `declarations` and `entryComponents` options configure the compiler
25352
+ * * The `declarations` option configures the compiler
25109
25353
  * with information about what belongs to the NgModule.
25110
25354
  * * The `providers` options configures the NgModule's injector to provide
25111
25355
  * dependencies the NgModule members.
@@ -25261,9 +25505,9 @@ class ApplicationInitStatus {
25261
25505
  }
25262
25506
  this.initialized = true;
25263
25507
  }
25508
+ static { this.ɵfac = function ApplicationInitStatus_Factory(t) { return new (t || ApplicationInitStatus)(); }; }
25509
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationInitStatus, factory: ApplicationInitStatus.ɵfac, providedIn: 'root' }); }
25264
25510
  }
25265
- ApplicationInitStatus.ɵfac = function ApplicationInitStatus_Factory(t) { return new (t || ApplicationInitStatus)(); };
25266
- ApplicationInitStatus.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationInitStatus, factory: ApplicationInitStatus.ɵfac, providedIn: 'root' });
25267
25511
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationInitStatus, [{
25268
25512
  type: Injectable,
25269
25513
  args: [{ providedIn: 'root' }]
@@ -25279,9 +25523,9 @@ class Console {
25279
25523
  // tslint:disable-next-line:no-console
25280
25524
  console.warn(message);
25281
25525
  }
25526
+ static { this.ɵfac = function Console_Factory(t) { return new (t || Console)(); }; }
25527
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac, providedIn: 'platform' }); }
25282
25528
  }
25283
- Console.ɵfac = function Console_Factory(t) { return new (t || Console)(); };
25284
- Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac, providedIn: 'platform' });
25285
25529
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Console, [{
25286
25530
  type: Injectable,
25287
25531
  args: [{ providedIn: 'platform' }]
@@ -25493,8 +25737,8 @@ class ModuleWithComponentFactories {
25493
25737
  */
25494
25738
  class Compiler {
25495
25739
  /**
25496
- * Compiles the given NgModule and all of its components. All templates of the components listed
25497
- * in `entryComponents` have to be inlined.
25740
+ * Compiles the given NgModule and all of its components. All templates of the components
25741
+ * have to be inlined.
25498
25742
  */
25499
25743
  compileModuleSync(moduleType) {
25500
25744
  return new NgModuleFactory(moduleType);
@@ -25539,9 +25783,9 @@ class Compiler {
25539
25783
  getModuleId(moduleType) {
25540
25784
  return undefined;
25541
25785
  }
25786
+ static { this.ɵfac = function Compiler_Factory(t) { return new (t || Compiler)(); }; }
25787
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Compiler, factory: Compiler.ɵfac, providedIn: 'root' }); }
25542
25788
  }
25543
- Compiler.ɵfac = function Compiler_Factory(t) { return new (t || Compiler)(); };
25544
- Compiler.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Compiler, factory: Compiler.ɵfac, providedIn: 'root' });
25545
25789
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Compiler, [{
25546
25790
  type: Injectable,
25547
25791
  args: [{ providedIn: 'root' }]
@@ -26356,9 +26600,9 @@ class Testability {
26356
26600
  // TODO(juliemr): implement.
26357
26601
  return [];
26358
26602
  }
26603
+ static { this.ɵfac = function Testability_Factory(t) { return new (t || Testability)(ɵɵinject(NgZone), ɵɵinject(TestabilityRegistry), ɵɵinject(TESTABILITY_GETTER)); }; }
26604
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Testability, factory: Testability.ɵfac }); }
26359
26605
  }
26360
- Testability.ɵfac = function Testability_Factory(t) { return new (t || Testability)(ɵɵinject(NgZone), ɵɵinject(TestabilityRegistry), ɵɵinject(TESTABILITY_GETTER)); };
26361
- Testability.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Testability, factory: Testability.ɵfac });
26362
26606
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Testability, [{
26363
26607
  type: Injectable
26364
26608
  }], function () { return [{ type: NgZone }, { type: TestabilityRegistry }, { type: undefined, decorators: [{
@@ -26423,9 +26667,9 @@ class TestabilityRegistry {
26423
26667
  findTestabilityInTree(elem, findInAncestors = true) {
26424
26668
  return _testabilityGetter?.findTestabilityInTree(this, elem, findInAncestors) ?? null;
26425
26669
  }
26670
+ static { this.ɵfac = function TestabilityRegistry_Factory(t) { return new (t || TestabilityRegistry)(); }; }
26671
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac, providedIn: 'platform' }); }
26426
26672
  }
26427
- TestabilityRegistry.ɵfac = function TestabilityRegistry_Factory(t) { return new (t || TestabilityRegistry)(); };
26428
- TestabilityRegistry.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac, providedIn: 'platform' });
26429
26673
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TestabilityRegistry, [{
26430
26674
  type: Injectable,
26431
26675
  args: [{ providedIn: 'platform' }]
@@ -26439,7 +26683,6 @@ function setTestabilityGetter(getter) {
26439
26683
  }
26440
26684
  let _testabilityGetter;
26441
26685
 
26442
- const NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;
26443
26686
  let _platformInjector = null;
26444
26687
  /**
26445
26688
  * Internal token to indicate whether having multiple bootstrapped platform should be allowed (only
@@ -26570,7 +26813,7 @@ function runPlatformInitializers(injector) {
26570
26813
  */
26571
26814
  function internalCreateApplication(config) {
26572
26815
  const { rootComponent, appProviders, platformProviders } = config;
26573
- if (NG_DEV_MODE && rootComponent !== undefined) {
26816
+ if ((typeof ngDevMode === 'undefined' || ngDevMode) && rootComponent !== undefined) {
26574
26817
  assertStandaloneComponentType(rootComponent);
26575
26818
  }
26576
26819
  const platformInjector = createOrReusePlatformInjector(platformProviders);
@@ -26584,7 +26827,7 @@ function internalCreateApplication(config) {
26584
26827
  ];
26585
26828
  const envInjector = createEnvironmentInjector(allAppProviders, platformInjector, 'Environment Injector');
26586
26829
  const exceptionHandler = envInjector.get(ErrorHandler, null);
26587
- if (NG_DEV_MODE && !exceptionHandler) {
26830
+ if ((typeof ngDevMode === 'undefined' || ngDevMode) && !exceptionHandler) {
26588
26831
  throw new RuntimeError(402 /* RuntimeErrorCode.MISSING_REQUIRED_INJECTABLE_IN_BOOTSTRAP */, 'No `ErrorHandler` found in the Dependency Injection tree.');
26589
26832
  }
26590
26833
  let onErrorSubscription;
@@ -26734,7 +26977,7 @@ class PlatformRef {
26734
26977
  return ngZone.run(() => {
26735
26978
  const moduleRef = createNgModuleRefWithProviders(moduleFactory.moduleType, this.injector, provideNgZoneChangeDetection(ngZone));
26736
26979
  const exceptionHandler = moduleRef.injector.get(ErrorHandler, null);
26737
- if (NG_DEV_MODE && exceptionHandler === null) {
26980
+ if ((typeof ngDevMode === 'undefined' || ngDevMode) && exceptionHandler === null) {
26738
26981
  throw new RuntimeError(402 /* RuntimeErrorCode.MISSING_REQUIRED_INJECTABLE_IN_BOOTSTRAP */, 'No ErrorHandler. Is platform module (BrowserModule) included?');
26739
26982
  }
26740
26983
  ngZone.runOutsideAngular(() => {
@@ -26834,9 +27077,9 @@ class PlatformRef {
26834
27077
  get destroyed() {
26835
27078
  return this._destroyed;
26836
27079
  }
27080
+ static { this.ɵfac = function PlatformRef_Factory(t) { return new (t || PlatformRef)(ɵɵinject(Injector)); }; }
27081
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac, providedIn: 'platform' }); }
26837
27082
  }
26838
- PlatformRef.ɵfac = function PlatformRef_Factory(t) { return new (t || PlatformRef)(ɵɵinject(Injector)); };
26839
- PlatformRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac, providedIn: 'platform' });
26840
27083
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PlatformRef, [{
26841
27084
  type: Injectable,
26842
27085
  args: [{ providedIn: 'platform' }]
@@ -27051,7 +27294,7 @@ class ApplicationRef {
27051
27294
  * {@example core/ts/platform/platform.ts region='domNode'}
27052
27295
  */
27053
27296
  bootstrap(componentOrFactory, rootSelectorOrNode) {
27054
- NG_DEV_MODE && this.warnIfDestroyed();
27297
+ (typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed();
27055
27298
  const isComponentFactory = componentOrFactory instanceof ComponentFactory$1;
27056
27299
  const initStatus = this._injector.get(ApplicationInitStatus);
27057
27300
  if (!initStatus.done) {
@@ -27059,7 +27302,7 @@ class ApplicationRef {
27059
27302
  const errorMessage = 'Cannot bootstrap as there are still asynchronous initializers running.' +
27060
27303
  (standalone ? '' :
27061
27304
  ' Bootstrap components in the `ngDoBootstrap` method of the root module.');
27062
- throw new RuntimeError(405 /* RuntimeErrorCode.ASYNC_INITIALIZERS_STILL_RUNNING */, NG_DEV_MODE && errorMessage);
27305
+ throw new RuntimeError(405 /* RuntimeErrorCode.ASYNC_INITIALIZERS_STILL_RUNNING */, (typeof ngDevMode === 'undefined' || ngDevMode) && errorMessage);
27063
27306
  }
27064
27307
  let componentFactory;
27065
27308
  if (isComponentFactory) {
@@ -27100,7 +27343,7 @@ class ApplicationRef {
27100
27343
  * detection pass during which all change detection must complete.
27101
27344
  */
27102
27345
  tick() {
27103
- NG_DEV_MODE && this.warnIfDestroyed();
27346
+ (typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed();
27104
27347
  if (this._runningTick) {
27105
27348
  throw new RuntimeError(101 /* RuntimeErrorCode.RECURSIVE_APPLICATION_REF_TICK */, ngDevMode && 'ApplicationRef.tick is called recursively');
27106
27349
  }
@@ -27129,7 +27372,7 @@ class ApplicationRef {
27129
27372
  * This will throw if the view is already attached to a ViewContainer.
27130
27373
  */
27131
27374
  attachView(viewRef) {
27132
- NG_DEV_MODE && this.warnIfDestroyed();
27375
+ (typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed();
27133
27376
  const view = viewRef;
27134
27377
  this._views.push(view);
27135
27378
  view.attachToAppRef(this);
@@ -27138,7 +27381,7 @@ class ApplicationRef {
27138
27381
  * Detaches a view from dirty checking again.
27139
27382
  */
27140
27383
  detachView(viewRef) {
27141
- NG_DEV_MODE && this.warnIfDestroyed();
27384
+ (typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed();
27142
27385
  const view = viewRef;
27143
27386
  remove(this._views, view);
27144
27387
  view.detachFromAppRef();
@@ -27186,7 +27429,7 @@ class ApplicationRef {
27186
27429
  * @internal
27187
27430
  */
27188
27431
  onDestroy(callback) {
27189
- NG_DEV_MODE && this.warnIfDestroyed();
27432
+ (typeof ngDevMode === 'undefined' || ngDevMode) && this.warnIfDestroyed();
27190
27433
  this._destroyListeners.push(callback);
27191
27434
  return () => remove(this._destroyListeners, callback);
27192
27435
  }
@@ -27214,13 +27457,13 @@ class ApplicationRef {
27214
27457
  return this._views.length;
27215
27458
  }
27216
27459
  warnIfDestroyed() {
27217
- if (NG_DEV_MODE && this._destroyed) {
27460
+ if ((typeof ngDevMode === 'undefined' || ngDevMode) && this._destroyed) {
27218
27461
  console.warn(formatRuntimeError(406 /* RuntimeErrorCode.APPLICATION_REF_ALREADY_DESTROYED */, 'This instance of the `ApplicationRef` has already been destroyed.'));
27219
27462
  }
27220
27463
  }
27464
+ static { this.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(); }; }
27465
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac, providedIn: 'root' }); }
27221
27466
  }
27222
- ApplicationRef.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(); };
27223
- ApplicationRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac, providedIn: 'root' });
27224
27467
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
27225
27468
  type: Injectable,
27226
27469
  args: [{ providedIn: 'root' }]
@@ -27245,7 +27488,7 @@ function _lastDefined(args) {
27245
27488
  * `NgZone` is provided by default today so the default (and only) implementation for this
27246
27489
  * is calling `ErrorHandler.handleError` outside of the Angular zone.
27247
27490
  */
27248
- const INTERNAL_APPLICATION_ERROR_HANDLER = new InjectionToken(NG_DEV_MODE ? 'internal error handler' : '', {
27491
+ const INTERNAL_APPLICATION_ERROR_HANDLER = new InjectionToken((typeof ngDevMode === 'undefined' || ngDevMode) ? 'internal error handler' : '', {
27249
27492
  providedIn: 'root',
27250
27493
  factory: () => {
27251
27494
  const userErrorHandler = inject(ErrorHandler);
@@ -27277,9 +27520,9 @@ class NgZoneChangeDetectionScheduler {
27277
27520
  ngOnDestroy() {
27278
27521
  this._onMicrotaskEmptySubscription?.unsubscribe();
27279
27522
  }
27523
+ static { this.ɵfac = function NgZoneChangeDetectionScheduler_Factory(t) { return new (t || NgZoneChangeDetectionScheduler)(); }; }
27524
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: NgZoneChangeDetectionScheduler, factory: NgZoneChangeDetectionScheduler.ɵfac, providedIn: 'root' }); }
27280
27525
  }
27281
- NgZoneChangeDetectionScheduler.ɵfac = function NgZoneChangeDetectionScheduler_Factory(t) { return new (t || NgZoneChangeDetectionScheduler)(); };
27282
- NgZoneChangeDetectionScheduler.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: NgZoneChangeDetectionScheduler, factory: NgZoneChangeDetectionScheduler.ɵfac, providedIn: 'root' });
27283
27526
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NgZoneChangeDetectionScheduler, [{
27284
27527
  type: Injectable,
27285
27528
  args: [{ providedIn: 'root' }]
@@ -27292,8 +27535,10 @@ function provideNgZoneChangeDetection(ngZone) {
27292
27535
  multi: true,
27293
27536
  useFactory: () => {
27294
27537
  const ngZoneChangeDetectionScheduler = inject(NgZoneChangeDetectionScheduler, { optional: true });
27295
- if (NG_DEV_MODE && ngZoneChangeDetectionScheduler === null) {
27296
- throw new RuntimeError(402 /* RuntimeErrorCode.MISSING_REQUIRED_INJECTABLE_IN_BOOTSTRAP */, 'No NgZoneChangeDetectionScheduler found in the Dependency Injection tree.');
27538
+ if ((typeof ngDevMode === 'undefined' || ngDevMode) &&
27539
+ ngZoneChangeDetectionScheduler === null) {
27540
+ throw new RuntimeError(402 /* RuntimeErrorCode.MISSING_REQUIRED_INJECTABLE_IN_BOOTSTRAP */, `A required Injectable was not found in the dependency injection tree. ` +
27541
+ 'If you are bootstrapping an NgModule, make sure that the `BrowserModule` is imported.');
27297
27542
  }
27298
27543
  return () => ngZoneChangeDetectionScheduler.initialize();
27299
27544
  },
@@ -27350,17 +27595,17 @@ function enableProdMode() {
27350
27595
  * @publicApi
27351
27596
  */
27352
27597
  class DestroyRef {
27598
+ /**
27599
+ * @internal
27600
+ * @nocollapse
27601
+ */
27602
+ static { this.__NG_ELEMENT_ID__ = injectDestroyRef; }
27603
+ /**
27604
+ * @internal
27605
+ * @nocollapse
27606
+ */
27607
+ static { this.__NG_ENV_ID__ = (injector) => injector; }
27353
27608
  }
27354
- /**
27355
- * @internal
27356
- * @nocollapse
27357
- */
27358
- DestroyRef.__NG_ELEMENT_ID__ = injectDestroyRef;
27359
- /**
27360
- * @internal
27361
- * @nocollapse
27362
- */
27363
- DestroyRef.__NG_ENV_ID__ = (injector) => injector;
27364
27609
  class NodeInjectorDestroyRef extends DestroyRef {
27365
27610
  constructor(_lView) {
27366
27611
  super();
@@ -27450,12 +27695,12 @@ function noModuleError(id) {
27450
27695
  * @publicApi
27451
27696
  */
27452
27697
  class ChangeDetectorRef {
27698
+ /**
27699
+ * @internal
27700
+ * @nocollapse
27701
+ */
27702
+ static { this.__NG_ELEMENT_ID__ = injectChangeDetectorRef; }
27453
27703
  }
27454
- /**
27455
- * @internal
27456
- * @nocollapse
27457
- */
27458
- ChangeDetectorRef.__NG_ELEMENT_ID__ = injectChangeDetectorRef;
27459
27704
  /** Returns a ChangeDetectorRef (a.k.a. a ViewRef) */
27460
27705
  function injectChangeDetectorRef(flags) {
27461
27706
  return createViewRef(getCurrentTNode(), getLView(), (flags & 16 /* InternalInjectFlags.ForPipe */) === 16 /* InternalInjectFlags.ForPipe */);
@@ -29033,6 +29278,8 @@ function defaultIterableDiffersFactory() {
29033
29278
  * @publicApi
29034
29279
  */
29035
29280
  class IterableDiffers {
29281
+ /** @nocollapse */
29282
+ static { this.ɵprov = ɵɵdefineInjectable({ token: IterableDiffers, providedIn: 'root', factory: defaultIterableDiffersFactory }); }
29036
29283
  constructor(factories) {
29037
29284
  this.factories = factories;
29038
29285
  }
@@ -29087,8 +29334,6 @@ class IterableDiffers {
29087
29334
  }
29088
29335
  }
29089
29336
  }
29090
- /** @nocollapse */
29091
- IterableDiffers.ɵprov = ɵɵdefineInjectable({ token: IterableDiffers, providedIn: 'root', factory: defaultIterableDiffersFactory });
29092
29337
  function getTypeNameForDebugging(type) {
29093
29338
  return type['name'] || typeof type;
29094
29339
  }
@@ -29102,6 +29347,8 @@ function defaultKeyValueDiffersFactory() {
29102
29347
  * @publicApi
29103
29348
  */
29104
29349
  class KeyValueDiffers {
29350
+ /** @nocollapse */
29351
+ static { this.ɵprov = ɵɵdefineInjectable({ token: KeyValueDiffers, providedIn: 'root', factory: defaultKeyValueDiffersFactory }); }
29105
29352
  constructor(factories) {
29106
29353
  this.factories = factories;
29107
29354
  }
@@ -29153,8 +29400,6 @@ class KeyValueDiffers {
29153
29400
  throw new RuntimeError(901 /* RuntimeErrorCode.NO_SUPPORTING_DIFFER_FACTORY */, ngDevMode && `Cannot find a differ supporting object '${kv}'`);
29154
29401
  }
29155
29402
  }
29156
- /** @nocollapse */
29157
- KeyValueDiffers.ɵprov = ɵɵdefineInjectable({ token: KeyValueDiffers, providedIn: 'root', factory: defaultKeyValueDiffersFactory });
29158
29403
 
29159
29404
  /**
29160
29405
  * Structural diffing for `Object`s and `Map`s.
@@ -29190,10 +29435,10 @@ const platformCore = createPlatformFactory(null, 'core', []);
29190
29435
  class ApplicationModule {
29191
29436
  // Inject ApplicationRef to make it eager...
29192
29437
  constructor(appRef) { }
29438
+ static { this.ɵfac = function ApplicationModule_Factory(t) { return new (t || ApplicationModule)(ɵɵinject(ApplicationRef)); }; }
29439
+ static { this.ɵmod = /*@__PURE__*/ ɵɵdefineNgModule({ type: ApplicationModule }); }
29440
+ static { this.ɵinj = /*@__PURE__*/ ɵɵdefineInjector({}); }
29193
29441
  }
29194
- ApplicationModule.ɵfac = function ApplicationModule_Factory(t) { return new (t || ApplicationModule)(ɵɵinject(ApplicationRef)); };
29195
- ApplicationModule.ɵmod = /*@__PURE__*/ ɵɵdefineNgModule({ type: ApplicationModule });
29196
- ApplicationModule.ɵinj = /*@__PURE__*/ ɵɵdefineInjector({});
29197
29442
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationModule, [{
29198
29443
  type: NgModule
29199
29444
  }], function () { return [{ type: ApplicationRef }]; }, null); })();
@@ -29326,7 +29571,7 @@ function serializeLContainer(lContainer, context) {
29326
29571
  const currentViewAsString = JSON.stringify(view);
29327
29572
  if (views.length > 0 && currentViewAsString === lastViewAsString) {
29328
29573
  const previousView = views[views.length - 1];
29329
- previousView[MULTIPLIER] ?? (previousView[MULTIPLIER] = 1);
29574
+ previousView[MULTIPLIER] ??= 1;
29330
29575
  previousView[MULTIPLIER]++;
29331
29576
  }
29332
29577
  else {
@@ -29344,9 +29589,21 @@ function serializeLContainer(lContainer, context) {
29344
29589
  */
29345
29590
  function appendSerializedNodePath(ngh, tNode, lView) {
29346
29591
  const noOffsetIndex = tNode.index - HEADER_OFFSET;
29347
- ngh[NODES] ?? (ngh[NODES] = {});
29592
+ ngh[NODES] ??= {};
29348
29593
  ngh[NODES][noOffsetIndex] = calcPathForNode(tNode, lView);
29349
29594
  }
29595
+ /**
29596
+ * Helper function to append information about a disconnected node.
29597
+ * This info is needed at runtime to avoid DOM lookups for this element
29598
+ * and instead, the element would be created from scratch.
29599
+ */
29600
+ function appendDisconnectedNodeIndex(ngh, tNode) {
29601
+ const noOffsetIndex = tNode.index - HEADER_OFFSET;
29602
+ ngh[DISCONNECTED_NODES] ??= [];
29603
+ if (!ngh[DISCONNECTED_NODES].includes(noOffsetIndex)) {
29604
+ ngh[DISCONNECTED_NODES].push(noOffsetIndex);
29605
+ }
29606
+ }
29350
29607
  /**
29351
29608
  * There is no special TNode type for an i18n block, so we verify
29352
29609
  * whether the structure that we store at the `TView.data[idx]` position
@@ -29386,14 +29643,8 @@ function serializeLView(lView, context) {
29386
29643
  // This situation may happen during the content projection, when some nodes don't make it
29387
29644
  // into one of the content projection slots (for example, when there is no default
29388
29645
  // <ng-content /> slot in projector component's template).
29389
- //
29390
- // Note: we leverage the fact that we have this information available in the DOM emulation
29391
- // layer (in Domino) for now. Longer-term solution should not rely on the DOM emulation and
29392
- // only use internal data structures and state to compute this information.
29393
- if (!(tNode.type & 16 /* TNodeType.Projection */) && !!lView[i] &&
29394
- !unwrapRNode(lView[i]).isConnected) {
29395
- ngh[DISCONNECTED_NODES] ?? (ngh[DISCONNECTED_NODES] = []);
29396
- ngh[DISCONNECTED_NODES].push(noOffsetIndex);
29646
+ if (isDisconnectedNode(tNode, lView) && isContentProjectedNode(tNode)) {
29647
+ appendDisconnectedNodeIndex(ngh, tNode);
29397
29648
  continue;
29398
29649
  }
29399
29650
  if (Array.isArray(tNode.projection)) {
@@ -29408,7 +29659,16 @@ function serializeLView(lView, context) {
29408
29659
  // a parent lView, which contains those nodes.
29409
29660
  if (!isProjectionTNode(projectionHeadTNode) &&
29410
29661
  !isInSkipHydrationBlock(projectionHeadTNode)) {
29411
- appendSerializedNodePath(ngh, projectionHeadTNode, lView);
29662
+ if (isDisconnectedNode(projectionHeadTNode, lView)) {
29663
+ // Check whether this node is connected, since we may have a TNode
29664
+ // in the data structure as a projection segment head, but the
29665
+ // content projection slot might be disabled (e.g.
29666
+ // <ng-content *ngIf="false" />).
29667
+ appendDisconnectedNodeIndex(ngh, projectionHeadTNode);
29668
+ }
29669
+ else {
29670
+ appendSerializedNodePath(ngh, projectionHeadTNode, lView);
29671
+ }
29412
29672
  }
29413
29673
  }
29414
29674
  else {
@@ -29428,7 +29688,7 @@ function serializeLView(lView, context) {
29428
29688
  // Serialize information about a template.
29429
29689
  const embeddedTView = tNode.tView;
29430
29690
  if (embeddedTView !== null) {
29431
- ngh[TEMPLATES] ?? (ngh[TEMPLATES] = {});
29691
+ ngh[TEMPLATES] ??= {};
29432
29692
  ngh[TEMPLATES][noOffsetIndex] = getSsrId(embeddedTView);
29433
29693
  }
29434
29694
  // Serialize views within this LContainer.
@@ -29443,7 +29703,7 @@ function serializeLView(lView, context) {
29443
29703
  annotateHostElementForHydration(targetNode, hostNode, context);
29444
29704
  }
29445
29705
  }
29446
- ngh[CONTAINERS] ?? (ngh[CONTAINERS] = {});
29706
+ ngh[CONTAINERS] ??= {};
29447
29707
  ngh[CONTAINERS][noOffsetIndex] = serializeLContainer(lView[i], context);
29448
29708
  }
29449
29709
  else if (Array.isArray(lView[i])) {
@@ -29471,7 +29731,7 @@ function serializeLView(lView, context) {
29471
29731
  // An <ng-container> is represented by the number of
29472
29732
  // top-level nodes. This information is needed to skip over
29473
29733
  // those nodes to reach a corresponding anchor node (comment node).
29474
- ngh[ELEMENT_CONTAINERS] ?? (ngh[ELEMENT_CONTAINERS] = {});
29734
+ ngh[ELEMENT_CONTAINERS] ??= {};
29475
29735
  ngh[ELEMENT_CONTAINERS][noOffsetIndex] = calcNumRootNodes(tView, lView, tNode.child);
29476
29736
  }
29477
29737
  else if (tNode.type & 16 /* TNodeType.Projection */) {
@@ -29563,32 +29823,122 @@ function insertCorruptedTextNodeMarkers(corruptedTextNodes, doc) {
29563
29823
  textNode.after(doc.createComment(marker));
29564
29824
  }
29565
29825
  }
29566
-
29567
29826
  /**
29568
- * Indicates whether the hydration-related code was added,
29569
- * prevents adding it multiple times.
29827
+ * Detects whether a given TNode represents a node that
29828
+ * is being content projected.
29570
29829
  */
29571
- let isHydrationSupportEnabled = false;
29830
+ function isContentProjectedNode(tNode) {
29831
+ let currentTNode = tNode;
29832
+ while (currentTNode != null) {
29833
+ // If we come across a component host node in parent nodes -
29834
+ // this TNode is in the content projection section.
29835
+ if (isComponentHost(currentTNode)) {
29836
+ return true;
29837
+ }
29838
+ currentTNode = currentTNode.parent;
29839
+ }
29840
+ return false;
29841
+ }
29572
29842
  /**
29573
- * Brings the necessary hydration code in tree-shakable manner.
29574
- * The code is only present when the `provideHydrationSupport` is
29575
- * invoked. Otherwise, this code is tree-shaken away during the
29576
- * build optimization step.
29843
+ * Check whether a given node exists, but is disconnected from the DOM.
29577
29844
  *
29578
- * This technique allows us to swap implementations of methods so
29579
- * tree shaking works appropriately when hydration is disabled or
29580
- * enabled. It brings in the appropriate version of the method that
29581
- * supports hydration only when enabled.
29845
+ * Note: we leverage the fact that we have this information available in the DOM emulation
29846
+ * layer (in Domino) for now. Longer-term solution should not rely on the DOM emulation and
29847
+ * only use internal data structures and state to compute this information.
29582
29848
  */
29583
- function enableHydrationRuntimeSupport() {
29584
- if (!isHydrationSupportEnabled) {
29585
- isHydrationSupportEnabled = true;
29586
- enableRetrieveHydrationInfoImpl();
29587
- enableLocateOrCreateElementNodeImpl();
29588
- enableLocateOrCreateTextNodeImpl();
29589
- enableLocateOrCreateElementContainerNodeImpl();
29590
- enableLocateOrCreateContainerAnchorImpl();
29591
- enableLocateOrCreateContainerRefImpl();
29849
+ function isDisconnectedNode(tNode, lView) {
29850
+ return !(tNode.type & 16 /* TNodeType.Projection */) && !!lView[tNode.index] &&
29851
+ !unwrapRNode(lView[tNode.index]).isConnected;
29852
+ }
29853
+
29854
+ /**
29855
+ * *Internal* service that keeps track of pending tasks happening in the system
29856
+ * during the initial rendering. No tasks are tracked after an initial
29857
+ * rendering.
29858
+ *
29859
+ * This information is needed to make sure that the serialization on the server
29860
+ * is delayed until all tasks in the queue (such as an initial navigation or a
29861
+ * pending HTTP request) are completed.
29862
+ */
29863
+ class InitialRenderPendingTasks {
29864
+ get whenAllTasksComplete() {
29865
+ if (this.collection.size > 0) {
29866
+ return this.promise;
29867
+ }
29868
+ return Promise.resolve().then(() => {
29869
+ this.completed = true;
29870
+ });
29871
+ }
29872
+ constructor() {
29873
+ this.taskId = 0;
29874
+ this.collection = new Set();
29875
+ this.ngZone = inject(NgZone);
29876
+ this.completed = false;
29877
+ // Run outside of the Angular zone to avoid triggering
29878
+ // extra change detection cycles.
29879
+ this.ngZone.runOutsideAngular(() => {
29880
+ this.promise = new Promise((resolve) => {
29881
+ this.resolve = resolve;
29882
+ });
29883
+ });
29884
+ }
29885
+ add() {
29886
+ if (this.completed) {
29887
+ // Indicates that the task was added after
29888
+ // the task queue completion, so it's a noop.
29889
+ return -1;
29890
+ }
29891
+ const taskId = this.taskId++;
29892
+ this.collection.add(taskId);
29893
+ return taskId;
29894
+ }
29895
+ remove(taskId) {
29896
+ if (this.completed)
29897
+ return;
29898
+ this.collection.delete(taskId);
29899
+ if (this.collection.size === 0) {
29900
+ // We've removed the last task, resolve the promise.
29901
+ this.completed = true;
29902
+ this.resolve();
29903
+ }
29904
+ }
29905
+ ngOnDestroy() {
29906
+ this.completed = true;
29907
+ this.collection.clear();
29908
+ }
29909
+ static { this.ɵfac = function InitialRenderPendingTasks_Factory(t) { return new (t || InitialRenderPendingTasks)(); }; }
29910
+ static { this.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: InitialRenderPendingTasks, factory: InitialRenderPendingTasks.ɵfac, providedIn: 'root' }); }
29911
+ }
29912
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(InitialRenderPendingTasks, [{
29913
+ type: Injectable,
29914
+ args: [{ providedIn: 'root' }]
29915
+ }], function () { return []; }, null); })();
29916
+
29917
+ /**
29918
+ * Indicates whether the hydration-related code was added,
29919
+ * prevents adding it multiple times.
29920
+ */
29921
+ let isHydrationSupportEnabled = false;
29922
+ /**
29923
+ * Brings the necessary hydration code in tree-shakable manner.
29924
+ * The code is only present when the `provideHydrationSupport` is
29925
+ * invoked. Otherwise, this code is tree-shaken away during the
29926
+ * build optimization step.
29927
+ *
29928
+ * This technique allows us to swap implementations of methods so
29929
+ * tree shaking works appropriately when hydration is disabled or
29930
+ * enabled. It brings in the appropriate version of the method that
29931
+ * supports hydration only when enabled.
29932
+ */
29933
+ function enableHydrationRuntimeSupport() {
29934
+ if (!isHydrationSupportEnabled) {
29935
+ isHydrationSupportEnabled = true;
29936
+ enableRetrieveHydrationInfoImpl();
29937
+ enableLocateOrCreateElementNodeImpl();
29938
+ enableLocateOrCreateTextNodeImpl();
29939
+ enableLocateOrCreateElementContainerNodeImpl();
29940
+ enableLocateOrCreateContainerAnchorImpl();
29941
+ enableLocateOrCreateContainerRefImpl();
29592
29942
  enableFindMatchingDehydratedViewImpl();
29593
29943
  enableApplyRootElementTransformImpl();
29594
29944
  }
@@ -29675,7 +30025,8 @@ function provideHydrationSupport() {
29675
30025
  useFactory: () => {
29676
30026
  if (isBrowser()) {
29677
30027
  const appRef = inject(ApplicationRef);
29678
- return () => cleanupDehydratedViews(appRef);
30028
+ const pendingTasks = inject(InitialRenderPendingTasks);
30029
+ return () => cleanupDehydratedViews(appRef, pendingTasks);
29679
30030
  }
29680
30031
  return () => { }; // noop
29681
30032
  },
@@ -29694,14 +30045,14 @@ const SIGNAL = Symbol('SIGNAL');
29694
30045
  * Checks if the given `value` function is a reactive `Signal`.
29695
30046
  */
29696
30047
  function isSignal(value) {
29697
- return value[SIGNAL] ?? false;
30048
+ return value[SIGNAL] !== undefined;
29698
30049
  }
29699
30050
  /**
29700
30051
  * Converts `fn` into a marked signal function (where `isSignal(fn)` will be `true`), and
29701
30052
  * potentially add some set of extra properties (passed as an object record `extraApi`).
29702
30053
  */
29703
- function createSignalFromFunction(fn, extraApi = {}) {
29704
- fn[SIGNAL] = true;
30054
+ function createSignalFromFunction(node, fn, extraApi = {}) {
30055
+ fn[SIGNAL] = node;
29705
30056
  // Copy properties from `extraApi` to `fn` to complete the desired API of the `Signal`.
29706
30057
  return Object.assign(fn, extraApi);
29707
30058
  }
@@ -29722,141 +30073,18 @@ function defaultEquals(a, b) {
29722
30073
  // as objects (`typeof null === 'object'`).
29723
30074
  return (a === null || typeof a !== 'object') && Object.is(a, b);
29724
30075
  }
29725
-
29726
- /**
29727
- * Tracks the currently active reactive context (or `null` if there is no active
29728
- * context).
29729
- */
29730
- let activeConsumer = null;
29731
- /**
29732
- * Counter tracking the next `ProducerId` or `ConsumerId`.
29733
- */
29734
- let _nextReactiveId = 0;
29735
- /**
29736
- * Get a new `ProducerId` or `ConsumerId`, allocated from the global sequence.
29737
- *
29738
- * The value returned is a type intersection of both branded types, and thus can be assigned to
29739
- * either.
29740
- */
29741
- function nextReactiveId() {
29742
- return _nextReactiveId++;
29743
- }
29744
- /**
29745
- * Set `consumer` as the active reactive context, and return the previous `Consumer`
29746
- * (if any) for later restoration.
29747
- */
29748
- function setActiveConsumer(consumer) {
29749
- const prevConsumer = activeConsumer;
29750
- activeConsumer = consumer;
29751
- return prevConsumer;
29752
- }
29753
- /**
29754
- * Notify all `Consumer`s of the given `Producer` that its value may have changed.
29755
- */
29756
- function producerNotifyConsumers(producer) {
29757
- for (const [consumerId, edge] of producer.consumers) {
29758
- const consumer = edge.consumerRef.deref();
29759
- if (consumer === undefined || consumer.trackingVersion !== edge.atTrackingVersion) {
29760
- producer.consumers.delete(consumerId);
29761
- consumer?.producers.delete(producer.id);
29762
- continue;
29763
- }
29764
- consumer.notify();
29765
- }
29766
- }
29767
- /**
29768
- * Record a dependency on the given `Producer` by the current reactive `Consumer` if
29769
- * one is present.
29770
- */
29771
- function producerAccessed(producer) {
29772
- if (activeConsumer === null) {
29773
- return;
29774
- }
29775
- // Either create or update the dependency `Edge` in both directions.
29776
- let edge = activeConsumer.producers.get(producer.id);
29777
- if (edge === undefined) {
29778
- edge = {
29779
- consumerRef: activeConsumer.ref,
29780
- producerRef: producer.ref,
29781
- seenValueVersion: producer.valueVersion,
29782
- atTrackingVersion: activeConsumer.trackingVersion,
29783
- };
29784
- activeConsumer.producers.set(producer.id, edge);
29785
- producer.consumers.set(activeConsumer.id, edge);
29786
- }
29787
- else {
29788
- edge.seenValueVersion = producer.valueVersion;
29789
- edge.atTrackingVersion = activeConsumer.trackingVersion;
29790
- }
29791
- }
29792
- /**
29793
- * Checks if a `Producer` has a current value which is different than the value
29794
- * last seen at a specific version by a `Consumer` which recorded a dependency on
29795
- * this `Producer`.
29796
- */
29797
- function producerPollStatus(producer, lastSeenValueVersion) {
29798
- // `producer.valueVersion` may be stale, but a mismatch still means that the value
29799
- // last seen by the `Consumer` is also stale.
29800
- if (producer.valueVersion !== lastSeenValueVersion) {
29801
- return true;
29802
- }
29803
- // Trigger the `Producer` to update its `valueVersion` if necessary.
29804
- producer.checkForChangedValue();
29805
- // At this point, we can trust `producer.valueVersion`.
29806
- return producer.valueVersion !== lastSeenValueVersion;
29807
- }
29808
- /**
29809
- * Function called to check the stale status of dependencies (producers) for a given consumer. This
29810
- * is a verification step before refreshing a given consumer: if none of the the dependencies
29811
- * reports a semantically new value, then the `Consumer` has not observed a real dependency change
29812
- * (even though it may have been notified of one).
29813
- */
29814
- function consumerPollValueStatus(consumer) {
29815
- for (const [producerId, edge] of consumer.producers) {
29816
- const producer = edge.producerRef.deref();
29817
- if (producer === undefined || edge.atTrackingVersion !== consumer.trackingVersion) {
29818
- // This dependency edge is stale, so remove it.
29819
- consumer.producers.delete(producerId);
29820
- producer?.consumers.delete(consumer.id);
29821
- continue;
29822
- }
29823
- if (producerPollStatus(producer, edge.seenValueVersion)) {
29824
- // One of the dependencies reports a real value change.
29825
- return true;
29826
- }
29827
- }
29828
- // No dependency reported a real value change, so the `Consumer` has also not been
29829
- // impacted.
29830
- return false;
29831
- }
29832
-
29833
- // `WeakRef` is not always defined in every TS environment where Angular is compiled. Instead,
29834
- // read it off of the global context if available.
29835
- // tslint:disable-next-line: no-toplevel-property-access
29836
- let WeakRefImpl = _global['WeakRef'];
29837
- function newWeakRef(value) {
29838
- if (typeof ngDevMode !== 'undefined' && ngDevMode && WeakRefImpl === undefined) {
29839
- throw new Error(`Angular requires a browser which supports the 'WeakRef' API`);
29840
- }
29841
- return new WeakRefImpl(value);
29842
- }
29843
- /**
29844
- * Use an alternate implementation of `WeakRef` if a platform implementation isn't available.
29845
- */
29846
- function setAlternateWeakRefImpl(impl) {
29847
- if (!WeakRefImpl) {
29848
- WeakRefImpl = impl;
29849
- }
29850
- }
30076
+ // clang-format on
29851
30077
 
29852
30078
  /**
29853
30079
  * Create a computed `Signal` which derives a reactive value from an expression.
29854
30080
  *
29855
30081
  * @developerPreview
29856
30082
  */
29857
- function computed(computation, equal = defaultEquals) {
29858
- const node = new ComputedImpl(computation, equal);
29859
- return createSignalFromFunction(node.signal.bind(node));
30083
+ function computed(computation, options) {
30084
+ const node = new ComputedImpl(computation, options?.equal ?? defaultEquals);
30085
+ // Casting here is required for g3, as TS inference behavior is slightly different between our
30086
+ // version/options and g3's.
30087
+ return createSignalFromFunction(node, node.signal.bind(node));
29860
30088
  }
29861
30089
  /**
29862
30090
  * A dedicated symbol used before a computed value has been calculated for the first time.
@@ -29878,10 +30106,11 @@ const ERRORED = Symbol('ERRORED');
29878
30106
  /**
29879
30107
  * A computation, which derives a value from a declarative reactive expression.
29880
30108
  *
29881
- * `Computed`s are both `Producer`s and `Consumer`s of reactivity.
30109
+ * `Computed`s are both producers and consumers of reactivity.
29882
30110
  */
29883
- class ComputedImpl {
30111
+ class ComputedImpl extends ReactiveNode {
29884
30112
  constructor(computation, equal) {
30113
+ super();
29885
30114
  this.computation = computation;
29886
30115
  this.equal = equal;
29887
30116
  /**
@@ -29903,20 +30132,25 @@ class ComputedImpl {
29903
30132
  * state can be resolved without recomputing the value.
29904
30133
  */
29905
30134
  this.stale = true;
29906
- this.id = nextReactiveId();
29907
- this.ref = newWeakRef(this);
29908
- this.producers = new Map();
29909
- this.consumers = new Map();
29910
- this.trackingVersion = 0;
29911
- this.valueVersion = 0;
29912
30135
  }
29913
- checkForChangedValue() {
30136
+ onConsumerDependencyMayHaveChanged() {
30137
+ if (this.stale) {
30138
+ // We've already notified consumers that this value has potentially changed.
30139
+ return;
30140
+ }
30141
+ // Record that the currently cached value may be stale.
30142
+ this.stale = true;
30143
+ // Notify any consumers about the potential change.
30144
+ this.producerMayHaveChanged();
30145
+ }
30146
+ onProducerUpdateValueVersion() {
29914
30147
  if (!this.stale) {
29915
30148
  // The current value and its version are already up to date.
29916
30149
  return;
29917
30150
  }
29918
30151
  // The current value is stale. Check whether we need to produce a new one.
29919
- if (this.value !== UNSET && this.value !== COMPUTING && !consumerPollValueStatus(this)) {
30152
+ if (this.value !== UNSET && this.value !== COMPUTING &&
30153
+ !this.consumerPollProducersForChange()) {
29920
30154
  // Even though we were previously notified of a potential dependency update, all of
29921
30155
  // our dependencies report that they have not actually changed in value, so we can
29922
30156
  // resolve the stale state without needing to recompute the current value.
@@ -29959,21 +30193,11 @@ class ComputedImpl {
29959
30193
  this.value = newValue;
29960
30194
  this.valueVersion++;
29961
30195
  }
29962
- notify() {
29963
- if (this.stale) {
29964
- // We've already notified consumers that this value has potentially changed.
29965
- return;
29966
- }
29967
- // Record that the currently cached value may be stale.
29968
- this.stale = true;
29969
- // Notify any consumers about the potential change.
29970
- producerNotifyConsumers(this);
29971
- }
29972
30196
  signal() {
29973
30197
  // Check if the value needs updating before returning it.
29974
- this.checkForChangedValue();
30198
+ this.onProducerUpdateValueVersion();
29975
30199
  // Record that someone looked at this signal.
29976
- producerAccessed(this);
30200
+ this.producerAccessed();
29977
30201
  if (this.value === ERRORED) {
29978
30202
  throw this.error;
29979
30203
  }
@@ -29981,124 +30205,17 @@ class ComputedImpl {
29981
30205
  }
29982
30206
  }
29983
30207
 
29984
- /**
29985
- * Watches a reactive expression and allows it to be scheduled to re-run
29986
- * when any dependencies notify of a change.
29987
- *
29988
- * `Watch` doesn't run reactive expressions itself, but relies on a consumer-
29989
- * provided scheduling operation to coordinate calling `Watch.run()`.
29990
- */
29991
- class Watch {
29992
- constructor(watch, schedule) {
29993
- this.watch = watch;
29994
- this.schedule = schedule;
29995
- this.id = nextReactiveId();
29996
- this.ref = newWeakRef(this);
29997
- this.producers = new Map();
29998
- this.trackingVersion = 0;
29999
- this.dirty = false;
30000
- }
30001
- notify() {
30002
- if (!this.dirty) {
30003
- this.schedule(this);
30004
- }
30005
- this.dirty = true;
30006
- }
30007
- /**
30008
- * Execute the reactive expression in the context of this `Watch` consumer.
30009
- *
30010
- * Should be called by the user scheduling algorithm when the provided
30011
- * `schedule` hook is called by `Watch`.
30012
- */
30013
- run() {
30014
- this.dirty = false;
30015
- if (this.trackingVersion !== 0 && !consumerPollValueStatus(this)) {
30016
- return;
30017
- }
30018
- const prevConsumer = setActiveConsumer(this);
30019
- this.trackingVersion++;
30020
- try {
30021
- this.watch();
30022
- }
30023
- finally {
30024
- setActiveConsumer(prevConsumer);
30025
- }
30026
- }
30027
- }
30028
-
30029
- /**
30030
- * Create a global `Effect` for the given reactive function.
30031
- *
30032
- * @developerPreview
30033
- */
30034
- function effect(effectFn) {
30035
- const watch = new Watch(effectFn, queueWatch);
30036
- globalWatches.add(watch);
30037
- // Effects start dirty.
30038
- watch.notify();
30039
- return {
30040
- destroy: () => {
30041
- queuedWatches.delete(watch);
30042
- globalWatches.delete(watch);
30043
- },
30044
- };
30045
- }
30046
- /**
30047
- * Get a `Promise` that resolves when any scheduled effects have resolved.
30048
- */
30049
- function effectsDone() {
30050
- return watchQueuePromise?.promise ?? Promise.resolve();
30051
- }
30052
- /**
30053
- * Shut down all active effects.
30054
- */
30055
- function resetEffects() {
30056
- queuedWatches.clear();
30057
- globalWatches.clear();
30058
- }
30059
- const globalWatches = new Set();
30060
- const queuedWatches = new Set();
30061
- let watchQueuePromise = null;
30062
- function queueWatch(watch) {
30063
- if (queuedWatches.has(watch) || !globalWatches.has(watch)) {
30064
- return;
30065
- }
30066
- queuedWatches.add(watch);
30067
- if (watchQueuePromise === null) {
30068
- Promise.resolve().then(runWatchQueue);
30069
- let resolveFn;
30070
- const promise = new Promise((resolve) => {
30071
- resolveFn = resolve;
30072
- });
30073
- watchQueuePromise = {
30074
- promise,
30075
- resolveFn,
30076
- };
30077
- }
30078
- }
30079
- function runWatchQueue() {
30080
- for (const watch of queuedWatches) {
30081
- queuedWatches.delete(watch);
30082
- watch.run();
30083
- }
30084
- watchQueuePromise.resolveFn();
30085
- watchQueuePromise = null;
30086
- }
30087
-
30088
- /**
30089
- * Backing type for a `SettableSignal`, a mutable reactive value.
30090
- */
30091
- class SettableSignalImpl {
30208
+ class WritableSignalImpl extends ReactiveNode {
30092
30209
  constructor(value, equal) {
30210
+ super();
30093
30211
  this.value = value;
30094
30212
  this.equal = equal;
30095
- this.id = nextReactiveId();
30096
- this.ref = newWeakRef(this);
30097
- this.consumers = new Map();
30098
- this.valueVersion = 0;
30099
30213
  }
30100
- checkForChangedValue() {
30101
- // Settable signals can only change when set, so there's nothing to check here.
30214
+ onConsumerDependencyMayHaveChanged() {
30215
+ // This never happens for writable signals as they're not consumers.
30216
+ }
30217
+ onProducerUpdateValueVersion() {
30218
+ // Writable signal value versions are always up to date.
30102
30219
  }
30103
30220
  /**
30104
30221
  * Directly update the value of the signal to a new value, which may or may not be
@@ -30111,7 +30228,7 @@ class SettableSignalImpl {
30111
30228
  if (!this.equal(this.value, newValue)) {
30112
30229
  this.value = newValue;
30113
30230
  this.valueVersion++;
30114
- producerNotifyConsumers(this);
30231
+ this.producerMayHaveChanged();
30115
30232
  }
30116
30233
  }
30117
30234
  /**
@@ -30130,10 +30247,10 @@ class SettableSignalImpl {
30130
30247
  // Mutate bypasses equality checks as it's by definition changing the value.
30131
30248
  mutator(this.value);
30132
30249
  this.valueVersion++;
30133
- producerNotifyConsumers(this);
30250
+ this.producerMayHaveChanged();
30134
30251
  }
30135
30252
  signal() {
30136
- producerAccessed(this);
30253
+ this.producerAccessed();
30137
30254
  return this.value;
30138
30255
  }
30139
30256
  }
@@ -30142,10 +30259,11 @@ class SettableSignalImpl {
30142
30259
  *
30143
30260
  * @developerPreview
30144
30261
  */
30145
- function signal(initialValue, equal = defaultEquals) {
30146
- const signalNode = new SettableSignalImpl(initialValue, equal);
30147
- // Casting here is required for g3.
30148
- const signalFn = createSignalFromFunction(signalNode.signal.bind(signalNode), {
30262
+ function signal(initialValue, options) {
30263
+ const signalNode = new WritableSignalImpl(initialValue, options?.equal ?? defaultEquals);
30264
+ // Casting here is required for g3, as TS inference behavior is slightly different between our
30265
+ // version/options and g3's.
30266
+ const signalFn = createSignalFromFunction(signalNode, signalNode.signal.bind(signalNode), {
30149
30267
  set: signalNode.set.bind(signalNode),
30150
30268
  update: signalNode.update.bind(signalNode),
30151
30269
  mutate: signalNode.mutate.bind(signalNode),
@@ -30171,6 +30289,60 @@ function untracked(nonReactiveReadsFn) {
30171
30289
  }
30172
30290
  }
30173
30291
 
30292
+ const NOOP_CLEANUP_FN = () => { };
30293
+ /**
30294
+ * Watches a reactive expression and allows it to be scheduled to re-run
30295
+ * when any dependencies notify of a change.
30296
+ *
30297
+ * `Watch` doesn't run reactive expressions itself, but relies on a consumer-
30298
+ * provided scheduling operation to coordinate calling `Watch.run()`.
30299
+ */
30300
+ class Watch extends ReactiveNode {
30301
+ constructor(watch, schedule) {
30302
+ super();
30303
+ this.watch = watch;
30304
+ this.schedule = schedule;
30305
+ this.dirty = false;
30306
+ this.cleanupFn = NOOP_CLEANUP_FN;
30307
+ }
30308
+ notify() {
30309
+ if (!this.dirty) {
30310
+ this.schedule(this);
30311
+ }
30312
+ this.dirty = true;
30313
+ }
30314
+ onConsumerDependencyMayHaveChanged() {
30315
+ this.notify();
30316
+ }
30317
+ onProducerUpdateValueVersion() {
30318
+ // Watches are not producers.
30319
+ }
30320
+ /**
30321
+ * Execute the reactive expression in the context of this `Watch` consumer.
30322
+ *
30323
+ * Should be called by the user scheduling algorithm when the provided
30324
+ * `schedule` hook is called by `Watch`.
30325
+ */
30326
+ run() {
30327
+ this.dirty = false;
30328
+ if (this.trackingVersion !== 0 && !this.consumerPollProducersForChange()) {
30329
+ return;
30330
+ }
30331
+ const prevConsumer = setActiveConsumer(this);
30332
+ this.trackingVersion++;
30333
+ try {
30334
+ this.cleanupFn();
30335
+ this.cleanupFn = this.watch() ?? NOOP_CLEANUP_FN;
30336
+ }
30337
+ finally {
30338
+ setActiveConsumer(prevConsumer);
30339
+ }
30340
+ }
30341
+ cleanup() {
30342
+ this.cleanupFn();
30343
+ }
30344
+ }
30345
+
30174
30346
  /** Coerces a value (typically a string) to a boolean. */
30175
30347
  function coerceToBoolean(value) {
30176
30348
  return typeof value === 'boolean' ? value : (value != null && value !== 'false');
@@ -30269,6 +30441,64 @@ function ɵɵngDeclarePipe(decl) {
30269
30441
  // clang-format off
30270
30442
  // clang-format on
30271
30443
 
30444
+ const globalWatches = new Set();
30445
+ const queuedWatches = new Map();
30446
+ let watchQueuePromise = null;
30447
+ /**
30448
+ * Create a global `Effect` for the given reactive function.
30449
+ *
30450
+ * @developerPreview
30451
+ */
30452
+ function effect(effectFn, options) {
30453
+ !options?.injector && assertInInjectionContext(effect);
30454
+ const zone = Zone.current;
30455
+ const watch = new Watch(effectFn, (watch) => queueWatch(watch, zone));
30456
+ const injector = options?.injector ?? inject(Injector);
30457
+ const destroyRef = options?.manualCleanup !== true ? injector.get(DestroyRef) : null;
30458
+ globalWatches.add(watch);
30459
+ // Effects start dirty.
30460
+ watch.notify();
30461
+ let unregisterOnDestroy;
30462
+ const destroy = () => {
30463
+ watch.cleanup();
30464
+ unregisterOnDestroy?.();
30465
+ queuedWatches.delete(watch);
30466
+ globalWatches.delete(watch);
30467
+ };
30468
+ unregisterOnDestroy = destroyRef?.onDestroy(destroy);
30469
+ return {
30470
+ destroy,
30471
+ };
30472
+ }
30473
+ function queueWatch(watch, zone) {
30474
+ if (queuedWatches.has(watch) || !globalWatches.has(watch)) {
30475
+ return;
30476
+ }
30477
+ queuedWatches.set(watch, zone);
30478
+ if (watchQueuePromise === null) {
30479
+ Promise.resolve().then(runWatchQueue);
30480
+ let resolveFn;
30481
+ const promise = new Promise((resolve) => {
30482
+ resolveFn = resolve;
30483
+ });
30484
+ watchQueuePromise = {
30485
+ promise,
30486
+ resolveFn,
30487
+ };
30488
+ }
30489
+ }
30490
+ function runWatchQueue() {
30491
+ for (const [watch, zone] of queuedWatches) {
30492
+ queuedWatches.delete(watch);
30493
+ zone.run(() => watch.run());
30494
+ }
30495
+ watchQueuePromise.resolveFn();
30496
+ watchQueuePromise = null;
30497
+ }
30498
+
30499
+ // clang-format off
30500
+ // clang-format on
30501
+
30272
30502
  // This file exists to allow the set of reactivity exports to be modified in g3, as these APIs are
30273
30503
 
30274
30504
  /**
@@ -30452,5 +30682,5 @@ if (typeof ngDevMode !== 'undefined' && ngDevMode) {
30452
30682
  * Generated bundle index. Do not edit.
30453
30683
  */
30454
30684
 
30455
- export { ANALYZE_FOR_ENTRY_COMPONENTS, ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, ReflectiveInjector, ReflectiveKey, Renderer2, RendererFactory2, RendererStyleFlags2, ResolvedReflectiveFactory, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, asNativeElements, assertPlatform, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, mergeApplicationConfig, platformCore, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, IS_HYDRATION_FEATURE_ENABLED as ɵIS_HYDRATION_FEATURE_ENABLED, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, TransferState as ɵTransferState, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, coerceToBoolean as ɵcoerceToBoolean, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, escapeTransferStateContent as ɵescapeTransferStateContent, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, getDebugNode as ɵgetDebugNode, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, makeDecorator as ɵmakeDecorator, makeStateKey as ɵmakeStateKey, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, provideHydrationSupport as ɵprovideHydrationSupport, provideNgZoneChangeDetection as ɵprovideNgZoneChangeDetection, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unescapeTransferStateContent as ɵunescapeTransferStateContent, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵvalidateIframeAttribute, ɵɵviewQuery };
30685
+ export { ANIMATION_MODULE_TYPE, APP_BOOTSTRAP_LISTENER, APP_ID, APP_INITIALIZER, ApplicationInitStatus, ApplicationModule, ApplicationRef, Attribute, COMPILER_OPTIONS, CSP_NONCE, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Compiler, CompilerFactory, Component, ComponentFactory$1 as ComponentFactory, ComponentFactoryResolver$1 as ComponentFactoryResolver, ComponentRef$1 as ComponentRef, ContentChild, ContentChildren, DEFAULT_CURRENCY_CODE, DebugElement, DebugEventListener, DebugNode, DefaultIterableDiffer, DestroyRef, Directive, ENVIRONMENT_INITIALIZER, ElementRef, EmbeddedViewRef, EnvironmentInjector, ErrorHandler, EventEmitter, Host, HostBinding, HostListener, INJECTOR, Inject, InjectFlags, Injectable, InjectionToken, Injector, Input, IterableDiffers, KeyValueDiffers, LOCALE_ID, MissingTranslationStrategy, ModuleWithComponentFactories, NO_ERRORS_SCHEMA, NgModule, NgModuleFactory$1 as NgModuleFactory, NgModuleRef$1 as NgModuleRef, NgProbeToken, NgZone, Optional, Output, PACKAGE_ROOT_URL, PLATFORM_ID, PLATFORM_INITIALIZER, Pipe, PlatformRef, Query, QueryList, ReflectiveInjector, ReflectiveKey, Renderer2, RendererFactory2, RendererStyleFlags2, ResolvedReflectiveFactory, Sanitizer, SecurityContext, Self, SimpleChange, SkipSelf, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Testability, TestabilityRegistry, TransferState, Type, VERSION, Version, ViewChild, ViewChildren, ViewContainerRef, ViewEncapsulation$1 as ViewEncapsulation, ViewRef, asNativeElements, assertInInjectionContext, assertPlatform, computed, createComponent, createEnvironmentInjector, createNgModule, createNgModuleRef, createPlatform, createPlatformFactory, defineInjectable, destroyPlatform, effect, enableProdMode, forwardRef, getDebugNode, getModuleFactory, getNgModuleById, getPlatform, importProvidersFrom, inject, isDevMode, isSignal, isStandalone, makeEnvironmentProviders, makeStateKey, mergeApplicationConfig, platformCore, reflectComponentType, resolveForwardRef, runInInjectionContext, setTestabilityGetter, signal, untracked, ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, ComponentFactory$1 as ɵComponentFactory, Console as ɵConsole, DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, INJECTOR_SCOPE as ɵINJECTOR_SCOPE, IS_HYDRATION_FEATURE_ENABLED as ɵIS_HYDRATION_FEATURE_ENABLED, InitialRenderPendingTasks as ɵInitialRenderPendingTasks, LContext as ɵLContext, LifecycleHooksFeature as ɵLifecycleHooksFeature, LocaleDataIndex as ɵLocaleDataIndex, NG_COMP_DEF as ɵNG_COMP_DEF, NG_DIR_DEF as ɵNG_DIR_DEF, NG_ELEMENT_ID as ɵNG_ELEMENT_ID, NG_INJ_DEF as ɵNG_INJ_DEF, NG_MOD_DEF as ɵNG_MOD_DEF, NG_PIPE_DEF as ɵNG_PIPE_DEF, NG_PROV_DEF as ɵNG_PROV_DEF, NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, NO_CHANGE as ɵNO_CHANGE, NgModuleFactory as ɵNgModuleFactory, NoopNgZone as ɵNoopNgZone, ReflectionCapabilities as ɵReflectionCapabilities, ComponentFactory as ɵRender3ComponentFactory, ComponentRef as ɵRender3ComponentRef, NgModuleRef as ɵRender3NgModuleRef, RuntimeError as ɵRuntimeError, TESTABILITY as ɵTESTABILITY, TESTABILITY_GETTER as ɵTESTABILITY_GETTER, ViewRef$1 as ɵViewRef, XSS_SECURITY_URL as ɵXSS_SECURITY_URL, _sanitizeHtml as ɵ_sanitizeHtml, _sanitizeUrl as ɵ_sanitizeUrl, allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, annotateForHydration as ɵannotateForHydration, bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, coerceToBoolean as ɵcoerceToBoolean, compileComponent as ɵcompileComponent, compileDirective as ɵcompileDirective, compileNgModule as ɵcompileNgModule, compileNgModuleDefs as ɵcompileNgModuleDefs, compileNgModuleFactory as ɵcompileNgModuleFactory, compilePipe as ɵcompilePipe, convertToBitFlags as ɵconvertToBitFlags, createInjector as ɵcreateInjector, defaultIterableDiffers as ɵdefaultIterableDiffers, defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, detectChanges as ɵdetectChanges, devModeEqual as ɵdevModeEqual, escapeTransferStateContent as ɵescapeTransferStateContent, findLocaleData as ɵfindLocaleData, flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, formatRuntimeError as ɵformatRuntimeError, getDebugNode as ɵgetDebugNode, getDirectives as ɵgetDirectives, getHostElement as ɵgetHostElement, getInjectableDef as ɵgetInjectableDef, getLContext as ɵgetLContext, getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, getLocalePluralCase as ɵgetLocalePluralCase, getSanitizationBypassType as ɵgetSanitizationBypassType, ɵgetUnknownElementStrictMode, ɵgetUnknownPropertyStrictMode, _global as ɵglobal, injectChangeDetectorRef as ɵinjectChangeDetectorRef, internalCreateApplication as ɵinternalCreateApplication, isBoundToModule as ɵisBoundToModule, isEnvironmentProviders as ɵisEnvironmentProviders, isInjectable as ɵisInjectable, isNgModule as ɵisNgModule, isPromise as ɵisPromise, isSubscribable as ɵisSubscribable, makeDecorator as ɵmakeDecorator, noSideEffects as ɵnoSideEffects, patchComponentDefWithScope as ɵpatchComponentDefWithScope, provideHydrationSupport as ɵprovideHydrationSupport, provideNgZoneChangeDetection as ɵprovideNgZoneChangeDetection, publishDefaultGlobalUtils$1 as ɵpublishDefaultGlobalUtils, publishGlobalUtil as ɵpublishGlobalUtil, registerLocaleData as ɵregisterLocaleData, resetCompiledComponents as ɵresetCompiledComponents, resetJitOptions as ɵresetJitOptions, resolveComponentResources as ɵresolveComponentResources, setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, setClassMetadata as ɵsetClassMetadata, setCurrentInjector as ɵsetCurrentInjector, setDocument as ɵsetDocument, setLocaleId as ɵsetLocaleId, ɵsetUnknownElementStrictMode, ɵsetUnknownPropertyStrictMode, store as ɵstore, stringify as ɵstringify, transitiveScopesFor as ɵtransitiveScopesFor, unescapeTransferStateContent as ɵunescapeTransferStateContent, unregisterAllLocaleData as ɵunregisterLocaleData, unwrapSafeValue as ɵunwrapSafeValue, ɵɵCopyDefinitionFeature, FactoryTarget as ɵɵFactoryTarget, ɵɵHostDirectivesFeature, ɵɵInheritDefinitionFeature, ɵɵNgOnChangesFeature, ɵɵProvidersFeature, ɵɵStandaloneFeature, ɵɵadvance, ɵɵattribute, ɵɵattributeInterpolate1, ɵɵattributeInterpolate2, ɵɵattributeInterpolate3, ɵɵattributeInterpolate4, ɵɵattributeInterpolate5, ɵɵattributeInterpolate6, ɵɵattributeInterpolate7, ɵɵattributeInterpolate8, ɵɵattributeInterpolateV, ɵɵclassMap, ɵɵclassMapInterpolate1, ɵɵclassMapInterpolate2, ɵɵclassMapInterpolate3, ɵɵclassMapInterpolate4, ɵɵclassMapInterpolate5, ɵɵclassMapInterpolate6, ɵɵclassMapInterpolate7, ɵɵclassMapInterpolate8, ɵɵclassMapInterpolateV, ɵɵclassProp, ɵɵcontentQuery, ɵɵdefineComponent, ɵɵdefineDirective, ɵɵdefineInjectable, ɵɵdefineInjector, ɵɵdefineNgModule, ɵɵdefinePipe, ɵɵdirectiveInject, ɵɵdisableBindings, ɵɵelement, ɵɵelementContainer, ɵɵelementContainerEnd, ɵɵelementContainerStart, ɵɵelementEnd, ɵɵelementStart, ɵɵenableBindings, ɵɵgetCurrentView, ɵɵgetInheritedFactory, ɵɵhostProperty, ɵɵi18n, ɵɵi18nApply, ɵɵi18nAttributes, ɵɵi18nEnd, ɵɵi18nExp, ɵɵi18nPostprocess, ɵɵi18nStart, ɵɵinject, ɵɵinjectAttribute, ɵɵinvalidFactory, ɵɵinvalidFactoryDep, ɵɵlistener, ɵɵloadQuery, ɵɵnamespaceHTML, ɵɵnamespaceMathML, ɵɵnamespaceSVG, ɵɵnextContext, ɵɵngDeclareClassMetadata, ɵɵngDeclareComponent, ɵɵngDeclareDirective, ɵɵngDeclareFactory, ɵɵngDeclareInjectable, ɵɵngDeclareInjector, ɵɵngDeclareNgModule, ɵɵngDeclarePipe, ɵɵpipe, ɵɵpipeBind1, ɵɵpipeBind2, ɵɵpipeBind3, ɵɵpipeBind4, ɵɵpipeBindV, ɵɵprojection, ɵɵprojectionDef, ɵɵproperty, ɵɵpropertyInterpolate, ɵɵpropertyInterpolate1, ɵɵpropertyInterpolate2, ɵɵpropertyInterpolate3, ɵɵpropertyInterpolate4, ɵɵpropertyInterpolate5, ɵɵpropertyInterpolate6, ɵɵpropertyInterpolate7, ɵɵpropertyInterpolate8, ɵɵpropertyInterpolateV, ɵɵpureFunction0, ɵɵpureFunction1, ɵɵpureFunction2, ɵɵpureFunction3, ɵɵpureFunction4, ɵɵpureFunction5, ɵɵpureFunction6, ɵɵpureFunction7, ɵɵpureFunction8, ɵɵpureFunctionV, ɵɵqueryRefresh, ɵɵreference, registerNgModuleType as ɵɵregisterNgModuleType, ɵɵresetView, ɵɵresolveBody, ɵɵresolveDocument, ɵɵresolveWindow, ɵɵrestoreView, ɵɵsanitizeHtml, ɵɵsanitizeResourceUrl, ɵɵsanitizeScript, ɵɵsanitizeStyle, ɵɵsanitizeUrl, ɵɵsanitizeUrlOrResourceUrl, ɵɵsetComponentScope, ɵɵsetNgModuleScope, ɵɵstyleMap, ɵɵstyleMapInterpolate1, ɵɵstyleMapInterpolate2, ɵɵstyleMapInterpolate3, ɵɵstyleMapInterpolate4, ɵɵstyleMapInterpolate5, ɵɵstyleMapInterpolate6, ɵɵstyleMapInterpolate7, ɵɵstyleMapInterpolate8, ɵɵstyleMapInterpolateV, ɵɵstyleProp, ɵɵstylePropInterpolate1, ɵɵstylePropInterpolate2, ɵɵstylePropInterpolate3, ɵɵstylePropInterpolate4, ɵɵstylePropInterpolate5, ɵɵstylePropInterpolate6, ɵɵstylePropInterpolate7, ɵɵstylePropInterpolate8, ɵɵstylePropInterpolateV, ɵɵsyntheticHostListener, ɵɵsyntheticHostProperty, ɵɵtemplate, ɵɵtemplateRefExtractor, ɵɵtext, ɵɵtextInterpolate, ɵɵtextInterpolate1, ɵɵtextInterpolate2, ɵɵtextInterpolate3, ɵɵtextInterpolate4, ɵɵtextInterpolate5, ɵɵtextInterpolate6, ɵɵtextInterpolate7, ɵɵtextInterpolate8, ɵɵtextInterpolateV, ɵɵtrustConstantHtml, ɵɵtrustConstantResourceUrl, ɵɵvalidateIframeAttribute, ɵɵviewQuery };
30456
30686
  //# sourceMappingURL=core.mjs.map