@angular/core 16.0.0-next.3 → 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 (375) 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/esm2022/src/application_tokens.mjs +105 -0
  5. package/esm2022/src/change_detection/change_detector_ref.mjs +93 -0
  6. package/esm2022/src/change_detection/differs/iterable_differs.mjs +81 -0
  7. package/esm2022/src/change_detection/differs/keyvalue_differs.mjs +74 -0
  8. package/esm2022/src/compiler/compiler_facade_interface.mjs +29 -0
  9. package/{esm2020 → esm2022}/src/console.mjs +3 -3
  10. package/esm2022/src/core.mjs +56 -0
  11. package/esm2022/src/core_private_export.mjs +39 -0
  12. package/esm2022/src/core_reactivity_export_internal.mjs +12 -0
  13. package/esm2022/src/core_render3_private_export.mjs +37 -0
  14. package/esm2022/src/di/contextual.mjs +54 -0
  15. package/esm2022/src/di/index.mjs +29 -0
  16. package/esm2022/src/di/injector.mjs +62 -0
  17. package/esm2022/src/di/injector_compatibility.mjs +239 -0
  18. package/esm2022/src/di/provider_collection.mjs +279 -0
  19. package/esm2022/src/di/r3_injector.mjs +428 -0
  20. package/esm2022/src/di/reflective_injector.mjs +311 -0
  21. package/{esm2020 → esm2022}/src/errors.mjs +1 -1
  22. package/esm2022/src/hydration/annotate.mjs +426 -0
  23. package/esm2022/src/hydration/api.mjs +143 -0
  24. package/esm2022/src/hydration/cleanup.mjs +103 -0
  25. package/esm2022/src/hydration/compression.mjs +69 -0
  26. package/esm2022/src/hydration/error_handling.mjs +379 -0
  27. package/esm2022/src/hydration/interfaces.mjs +33 -0
  28. package/esm2022/src/hydration/node_lookup_utils.mjs +273 -0
  29. package/esm2022/src/hydration/utils.mjs +219 -0
  30. package/esm2022/src/hydration/views.mjs +84 -0
  31. package/esm2022/src/initial_render_pending_tasks.mjs +75 -0
  32. package/{esm2020 → esm2022}/src/linker/compiler.mjs +5 -5
  33. package/esm2022/src/linker/component_factory_resolver.mjs +42 -0
  34. package/esm2022/src/linker/destroy_ref.mjs +44 -0
  35. package/{esm2020 → esm2022}/src/linker/element_ref.mjs +6 -6
  36. package/esm2022/src/linker/query_list.mjs +169 -0
  37. package/{esm2020 → esm2022}/src/linker/template_ref.mjs +6 -6
  38. package/esm2022/src/linker/view_container_ref.mjs +395 -0
  39. package/esm2022/src/metadata/di.mjs +69 -0
  40. package/esm2022/src/metadata/directives.mjs +116 -0
  41. package/{esm2020 → esm2022}/src/metadata/do_boostrap.mjs +1 -1
  42. package/{esm2020 → esm2022}/src/metadata/ng_module.mjs +2 -2
  43. package/esm2022/src/metadata.mjs +18 -0
  44. package/{esm2020 → esm2022}/src/render/api.mjs +6 -6
  45. package/esm2022/src/render3/component_ref.mjs +386 -0
  46. package/{esm2020 → esm2022}/src/render3/context_discovery.mjs +1 -1
  47. package/esm2022/src/render3/features/standalone_feature.mjs +70 -0
  48. package/esm2022/src/render3/instructions/element.mjs +205 -0
  49. package/{esm2020 → esm2022}/src/render3/instructions/element_container.mjs +2 -5
  50. package/esm2022/src/render3/instructions/element_validation.mjs +271 -0
  51. package/esm2022/src/render3/instructions/listener.mjs +244 -0
  52. package/esm2022/src/render3/instructions/mark_view_dirty.mjs +35 -0
  53. package/esm2022/src/render3/instructions/projection.mjs +121 -0
  54. package/esm2022/src/render3/instructions/shared.mjs +1681 -0
  55. package/{esm2020 → esm2022}/src/render3/instructions/styling.mjs +5 -2
  56. package/esm2022/src/render3/instructions/template.mjs +117 -0
  57. package/esm2022/src/render3/instructions/text.mjs +67 -0
  58. package/esm2022/src/render3/interfaces/public_definitions.mjs +9 -0
  59. package/esm2022/src/render3/interfaces/type_checks.mjs +42 -0
  60. package/esm2022/src/render3/interfaces/view.mjs +49 -0
  61. package/esm2022/src/render3/jit/module.mjs +531 -0
  62. package/esm2022/src/render3/node_manipulation.mjs +960 -0
  63. package/esm2022/src/render3/node_selector_matcher.mjs +426 -0
  64. package/esm2022/src/render3/reactive_lview_consumer.mjs +80 -0
  65. package/esm2022/src/render3/reactivity/effect.mjs +67 -0
  66. package/{esm2020 → esm2022}/src/render3/util/change_detection_utils.mjs +2 -2
  67. package/{esm2020 → esm2022}/src/render3/util/view_utils.mjs +12 -1
  68. package/esm2022/src/render3/view_ref.mjs +307 -0
  69. package/{esm2020 → esm2022}/src/sanitization/sanitizer.mjs +7 -7
  70. package/esm2022/src/signals/index.mjs +15 -0
  71. package/esm2022/src/signals/src/api.mjs +47 -0
  72. package/esm2022/src/signals/src/computed.mjs +139 -0
  73. package/esm2022/src/signals/src/graph.mjs +165 -0
  74. package/esm2022/src/signals/src/signal.mjs +75 -0
  75. package/esm2022/src/signals/src/watch.mjs +62 -0
  76. package/esm2022/src/signals/src/weak_ref.mjs +35 -0
  77. package/{esm2020 → esm2022}/src/testability/testability.mjs +5 -5
  78. package/esm2022/src/transfer_state.mjs +153 -0
  79. package/esm2022/src/util/ng_dev_mode.mjs +79 -0
  80. package/{esm2020 → esm2022}/src/version.mjs +1 -1
  81. package/{esm2020 → esm2022}/testing/src/logger.mjs +4 -4
  82. package/{esm2020 → esm2022}/testing/src/ng_zone_mock.mjs +4 -4
  83. package/{esm2020 → esm2022}/testing/src/test_bed.mjs +2 -2
  84. package/esm2022/testing/src/test_bed_compiler.mjs +846 -0
  85. package/{fesm2020 → fesm2022}/core.mjs +1890 -779
  86. package/fesm2022/core.mjs.map +1 -0
  87. package/{fesm2020 → fesm2022}/testing.mjs +1203 -178
  88. package/fesm2022/testing.mjs.map +1 -0
  89. package/index.d.ts +453 -394
  90. package/package.json +8 -16
  91. package/schematics/migrations/guard-and-resolve-interfaces/bundle.js +694 -0
  92. package/schematics/migrations/guard-and-resolve-interfaces/bundle.js.map +7 -0
  93. package/schematics/migrations/{router-link-with-href → remove-module-id}/bundle.js +153 -155
  94. package/schematics/migrations/remove-module-id/bundle.js.map +7 -0
  95. package/schematics/migrations.json +8 -8
  96. package/schematics/ng-generate/standalone-migration/bundle.js +1082 -619
  97. package/schematics/ng-generate/standalone-migration/bundle.js.map +2 -2
  98. package/testing/index.d.ts +1 -1
  99. package/esm2020/src/application_ref.mjs +0 -907
  100. package/esm2020/src/application_tokens.mjs +0 -73
  101. package/esm2020/src/change_detection/change_detector_ref.mjs +0 -93
  102. package/esm2020/src/change_detection/differs/iterable_differs.mjs +0 -81
  103. package/esm2020/src/change_detection/differs/keyvalue_differs.mjs +0 -74
  104. package/esm2020/src/compiler/compiler_facade_interface.mjs +0 -29
  105. package/esm2020/src/core.mjs +0 -55
  106. package/esm2020/src/core_private_export.mjs +0 -37
  107. package/esm2020/src/core_reactivity_export_internal.mjs +0 -9
  108. package/esm2020/src/core_render3_private_export.mjs +0 -38
  109. package/esm2020/src/di/contextual.mjs +0 -37
  110. package/esm2020/src/di/index.mjs +0 -29
  111. package/esm2020/src/di/injector.mjs +0 -62
  112. package/esm2020/src/di/injector_compatibility.mjs +0 -236
  113. package/esm2020/src/di/provider_collection.mjs +0 -279
  114. package/esm2020/src/di/r3_injector.mjs +0 -421
  115. package/esm2020/src/di/reflective_injector.mjs +0 -311
  116. package/esm2020/src/hydration/annotate.mjs +0 -271
  117. package/esm2020/src/hydration/api.mjs +0 -128
  118. package/esm2020/src/hydration/cleanup.mjs +0 -50
  119. package/esm2020/src/hydration/error_handling.mjs +0 -37
  120. package/esm2020/src/hydration/interfaces.mjs +0 -17
  121. package/esm2020/src/hydration/node_lookup_utils.mjs +0 -83
  122. package/esm2020/src/hydration/utils.mjs +0 -206
  123. package/esm2020/src/hydration/views.mjs +0 -80
  124. package/esm2020/src/linker/component_factory_resolver.mjs +0 -42
  125. package/esm2020/src/linker/destroy_ref.mjs +0 -41
  126. package/esm2020/src/linker/query_list.mjs +0 -169
  127. package/esm2020/src/linker/view_container_ref.mjs +0 -394
  128. package/esm2020/src/metadata/di.mjs +0 -108
  129. package/esm2020/src/metadata/directives.mjs +0 -111
  130. package/esm2020/src/metadata.mjs +0 -18
  131. package/esm2020/src/render3/component_ref.mjs +0 -377
  132. package/esm2020/src/render3/features/standalone_feature.mjs +0 -70
  133. package/esm2020/src/render3/instructions/element.mjs +0 -198
  134. package/esm2020/src/render3/instructions/element_validation.mjs +0 -271
  135. package/esm2020/src/render3/instructions/listener.mjs +0 -243
  136. package/esm2020/src/render3/instructions/projection.mjs +0 -118
  137. package/esm2020/src/render3/instructions/shared.mjs +0 -1696
  138. package/esm2020/src/render3/instructions/template.mjs +0 -120
  139. package/esm2020/src/render3/instructions/text.mjs +0 -67
  140. package/esm2020/src/render3/interfaces/public_definitions.mjs +0 -9
  141. package/esm2020/src/render3/interfaces/type_checks.mjs +0 -39
  142. package/esm2020/src/render3/interfaces/view.mjs +0 -47
  143. package/esm2020/src/render3/jit/module.mjs +0 -544
  144. package/esm2020/src/render3/node_manipulation.mjs +0 -961
  145. package/esm2020/src/render3/node_selector_matcher.mjs +0 -414
  146. package/esm2020/src/render3/view_ref.mjs +0 -306
  147. package/esm2020/src/signals/index.mjs +0 -15
  148. package/esm2020/src/signals/src/api.mjs +0 -46
  149. package/esm2020/src/signals/src/computed.mjs +0 -142
  150. package/esm2020/src/signals/src/effect.mjs +0 -69
  151. package/esm2020/src/signals/src/graph.mjs +0 -114
  152. package/esm2020/src/signals/src/signal.mjs +0 -78
  153. package/esm2020/src/signals/src/watch.mjs +0 -54
  154. package/esm2020/src/signals/src/weak_ref.mjs +0 -11
  155. package/esm2020/src/transfer_state.mjs +0 -153
  156. package/esm2020/src/util/ng_dev_mode.mjs +0 -78
  157. package/esm2020/testing/src/test_bed_compiler.mjs +0 -841
  158. package/fesm2015/core.mjs +0 -29585
  159. package/fesm2015/core.mjs.map +0 -1
  160. package/fesm2015/testing.mjs +0 -25669
  161. package/fesm2015/testing.mjs.map +0 -1
  162. package/fesm2020/core.mjs.map +0 -1
  163. package/fesm2020/testing.mjs.map +0 -1
  164. package/schematics/migrations/relative-link-resolution/bundle.js +0 -283
  165. package/schematics/migrations/relative-link-resolution/bundle.js.map +0 -7
  166. package/schematics/migrations/router-link-with-href/bundle.js.map +0 -7
  167. /package/{esm2020 → esm2022}/core.mjs +0 -0
  168. /package/{esm2020 → esm2022}/index.mjs +0 -0
  169. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
  170. /package/{esm2020 → esm2022}/src/application_config.mjs +0 -0
  171. /package/{esm2020 → esm2022}/src/change_detection/change_detection.mjs +0 -0
  172. /package/{esm2020 → esm2022}/src/change_detection/constants.mjs +0 -0
  173. /package/{esm2020 → esm2022}/src/change_detection/differs/default_iterable_differ.mjs +0 -0
  174. /package/{esm2020 → esm2022}/src/change_detection/differs/default_keyvalue_differ.mjs +0 -0
  175. /package/{esm2020 → esm2022}/src/change_detection/pipe_transform.mjs +0 -0
  176. /package/{esm2020 → esm2022}/src/change_detection.mjs +0 -0
  177. /package/{esm2020 → esm2022}/src/compiler/compiler_facade.mjs +0 -0
  178. /package/{esm2020 → esm2022}/src/core_reactivity_export.mjs +0 -0
  179. /package/{esm2020 → esm2022}/src/debug/debug_node.mjs +0 -0
  180. /package/{esm2020 → esm2022}/src/di/create_injector.mjs +0 -0
  181. /package/{esm2020 → esm2022}/src/di/forward_ref.mjs +0 -0
  182. /package/{esm2020 → esm2022}/src/di/initializer_token.mjs +0 -0
  183. /package/{esm2020 → esm2022}/src/di/inject_switch.mjs +0 -0
  184. /package/{esm2020 → esm2022}/src/di/injectable.mjs +0 -0
  185. /package/{esm2020 → esm2022}/src/di/injection_token.mjs +0 -0
  186. /package/{esm2020 → esm2022}/src/di/injector_marker.mjs +0 -0
  187. /package/{esm2020 → esm2022}/src/di/injector_token.mjs +0 -0
  188. /package/{esm2020 → esm2022}/src/di/interface/defs.mjs +0 -0
  189. /package/{esm2020 → esm2022}/src/di/interface/injector.mjs +0 -0
  190. /package/{esm2020 → esm2022}/src/di/interface/provider.mjs +0 -0
  191. /package/{esm2020 → esm2022}/src/di/internal_tokens.mjs +0 -0
  192. /package/{esm2020 → esm2022}/src/di/jit/environment.mjs +0 -0
  193. /package/{esm2020 → esm2022}/src/di/jit/injectable.mjs +0 -0
  194. /package/{esm2020 → esm2022}/src/di/jit/util.mjs +0 -0
  195. /package/{esm2020 → esm2022}/src/di/metadata.mjs +0 -0
  196. /package/{esm2020 → esm2022}/src/di/metadata_attr.mjs +0 -0
  197. /package/{esm2020 → esm2022}/src/di/null_injector.mjs +0 -0
  198. /package/{esm2020 → esm2022}/src/di/provider_token.mjs +0 -0
  199. /package/{esm2020 → esm2022}/src/di/reflective_errors.mjs +0 -0
  200. /package/{esm2020 → esm2022}/src/di/reflective_key.mjs +0 -0
  201. /package/{esm2020 → esm2022}/src/di/reflective_provider.mjs +0 -0
  202. /package/{esm2020 → esm2022}/src/di/scope.mjs +0 -0
  203. /package/{esm2020 → esm2022}/src/di.mjs +0 -0
  204. /package/{esm2020 → esm2022}/src/error_details_base_url.mjs +0 -0
  205. /package/{esm2020 → esm2022}/src/error_handler.mjs +0 -0
  206. /package/{esm2020 → esm2022}/src/event_emitter.mjs +0 -0
  207. /package/{esm2020 → esm2022}/src/hydration/skip_hydration.mjs +0 -0
  208. /package/{esm2020 → esm2022}/src/hydration/tokens.mjs +0 -0
  209. /package/{esm2020 → esm2022}/src/i18n/locale_data_api.mjs +0 -0
  210. /package/{esm2020 → esm2022}/src/i18n/locale_en.mjs +0 -0
  211. /package/{esm2020 → esm2022}/src/i18n/localization.mjs +0 -0
  212. /package/{esm2020 → esm2022}/src/i18n/tokens.mjs +0 -0
  213. /package/{esm2020 → esm2022}/src/interface/lifecycle_hooks.mjs +0 -0
  214. /package/{esm2020 → esm2022}/src/interface/simple_change.mjs +0 -0
  215. /package/{esm2020 → esm2022}/src/interface/type.mjs +0 -0
  216. /package/{esm2020 → esm2022}/src/linker/component_factory.mjs +0 -0
  217. /package/{esm2020 → esm2022}/src/linker/ng_module_factory.mjs +0 -0
  218. /package/{esm2020 → esm2022}/src/linker/ng_module_factory_loader.mjs +0 -0
  219. /package/{esm2020 → esm2022}/src/linker/ng_module_factory_loader_impl.mjs +0 -0
  220. /package/{esm2020 → esm2022}/src/linker/ng_module_registration.mjs +0 -0
  221. /package/{esm2020 → esm2022}/src/linker/view_ref.mjs +0 -0
  222. /package/{esm2020 → esm2022}/src/linker.mjs +0 -0
  223. /package/{esm2020 → esm2022}/src/metadata/ng_module_def.mjs +0 -0
  224. /package/{esm2020 → esm2022}/src/metadata/resource_loading.mjs +0 -0
  225. /package/{esm2020 → esm2022}/src/metadata/schema.mjs +0 -0
  226. /package/{esm2020 → esm2022}/src/metadata/view.mjs +0 -0
  227. /package/{esm2020 → esm2022}/src/platform_core_providers.mjs +0 -0
  228. /package/{esm2020 → esm2022}/src/r3_symbols.mjs +0 -0
  229. /package/{esm2020 → esm2022}/src/reflection/platform_reflection_capabilities.mjs +0 -0
  230. /package/{esm2020 → esm2022}/src/reflection/reflection_capabilities.mjs +0 -0
  231. /package/{esm2020 → esm2022}/src/render/api_flags.mjs +0 -0
  232. /package/{esm2020 → esm2022}/src/render.mjs +0 -0
  233. /package/{esm2020 → esm2022}/src/render3/assert.mjs +0 -0
  234. /package/{esm2020 → esm2022}/src/render3/bindings.mjs +0 -0
  235. /package/{esm2020 → esm2022}/src/render3/collect_native_nodes.mjs +0 -0
  236. /package/{esm2020 → esm2022}/src/render3/component.mjs +0 -0
  237. /package/{esm2020 → esm2022}/src/render3/definition.mjs +0 -0
  238. /package/{esm2020 → esm2022}/src/render3/definition_factory.mjs +0 -0
  239. /package/{esm2020 → esm2022}/src/render3/di.mjs +0 -0
  240. /package/{esm2020 → esm2022}/src/render3/di_setup.mjs +0 -0
  241. /package/{esm2020 → esm2022}/src/render3/errors.mjs +0 -0
  242. /package/{esm2020 → esm2022}/src/render3/errors_di.mjs +0 -0
  243. /package/{esm2020 → esm2022}/src/render3/features/copy_definition_feature.mjs +0 -0
  244. /package/{esm2020 → esm2022}/src/render3/features/host_directives_feature.mjs +0 -0
  245. /package/{esm2020 → esm2022}/src/render3/features/inherit_definition_feature.mjs +0 -0
  246. /package/{esm2020 → esm2022}/src/render3/features/ng_onchanges_feature.mjs +0 -0
  247. /package/{esm2020 → esm2022}/src/render3/features/providers_feature.mjs +0 -0
  248. /package/{esm2020 → esm2022}/src/render3/fields.mjs +0 -0
  249. /package/{esm2020 → esm2022}/src/render3/global_utils_api.mjs +0 -0
  250. /package/{esm2020 → esm2022}/src/render3/hooks.mjs +0 -0
  251. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_apply.mjs +0 -0
  252. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_debug.mjs +0 -0
  253. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_insert_before_index.mjs +0 -0
  254. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_locale_id.mjs +0 -0
  255. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_parse.mjs +0 -0
  256. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_postprocess.mjs +0 -0
  257. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_tree_shaking.mjs +0 -0
  258. /package/{esm2020 → esm2022}/src/render3/i18n/i18n_util.mjs +0 -0
  259. /package/{esm2020 → esm2022}/src/render3/index.mjs +0 -0
  260. /package/{esm2020 → esm2022}/src/render3/instructions/advance.mjs +0 -0
  261. /package/{esm2020 → esm2022}/src/render3/instructions/all.mjs +0 -0
  262. /package/{esm2020 → esm2022}/src/render3/instructions/attribute.mjs +0 -0
  263. /package/{esm2020 → esm2022}/src/render3/instructions/attribute_interpolation.mjs +0 -0
  264. /package/{esm2020 → esm2022}/src/render3/instructions/change_detection.mjs +0 -0
  265. /package/{esm2020 → esm2022}/src/render3/instructions/class_map_interpolation.mjs +0 -0
  266. /package/{esm2020 → esm2022}/src/render3/instructions/di.mjs +0 -0
  267. /package/{esm2020 → esm2022}/src/render3/instructions/di_attr.mjs +0 -0
  268. /package/{esm2020 → esm2022}/src/render3/instructions/get_current_view.mjs +0 -0
  269. /package/{esm2020 → esm2022}/src/render3/instructions/host_property.mjs +0 -0
  270. /package/{esm2020 → esm2022}/src/render3/instructions/i18n.mjs +0 -0
  271. /package/{esm2020 → esm2022}/src/render3/instructions/i18n_icu_container_visitor.mjs +0 -0
  272. /package/{esm2020 → esm2022}/src/render3/instructions/interpolation.mjs +0 -0
  273. /package/{esm2020 → esm2022}/src/render3/instructions/namespace.mjs +0 -0
  274. /package/{esm2020 → esm2022}/src/render3/instructions/next_context.mjs +0 -0
  275. /package/{esm2020 → esm2022}/src/render3/instructions/property.mjs +0 -0
  276. /package/{esm2020 → esm2022}/src/render3/instructions/property_interpolation.mjs +0 -0
  277. /package/{esm2020 → esm2022}/src/render3/instructions/storage.mjs +0 -0
  278. /package/{esm2020 → esm2022}/src/render3/instructions/style_map_interpolation.mjs +0 -0
  279. /package/{esm2020 → esm2022}/src/render3/instructions/style_prop_interpolation.mjs +0 -0
  280. /package/{esm2020 → esm2022}/src/render3/instructions/text_interpolation.mjs +0 -0
  281. /package/{esm2020 → esm2022}/src/render3/interfaces/container.mjs +0 -0
  282. /package/{esm2020 → esm2022}/src/render3/interfaces/context.mjs +0 -0
  283. /package/{esm2020 → esm2022}/src/render3/interfaces/definition.mjs +0 -0
  284. /package/{esm2020 → esm2022}/src/render3/interfaces/document.mjs +0 -0
  285. /package/{esm2020 → esm2022}/src/render3/interfaces/i18n.mjs +0 -0
  286. /package/{esm2020 → esm2022}/src/render3/interfaces/injector.mjs +0 -0
  287. /package/{esm2020 → esm2022}/src/render3/interfaces/lview_tracking.mjs +0 -0
  288. /package/{esm2020 → esm2022}/src/render3/interfaces/node.mjs +0 -0
  289. /package/{esm2020 → esm2022}/src/render3/interfaces/projection.mjs +0 -0
  290. /package/{esm2020 → esm2022}/src/render3/interfaces/query.mjs +0 -0
  291. /package/{esm2020 → esm2022}/src/render3/interfaces/renderer.mjs +0 -0
  292. /package/{esm2020 → esm2022}/src/render3/interfaces/renderer_dom.mjs +0 -0
  293. /package/{esm2020 → esm2022}/src/render3/interfaces/sanitization.mjs +0 -0
  294. /package/{esm2020 → esm2022}/src/render3/interfaces/styling.mjs +0 -0
  295. /package/{esm2020 → esm2022}/src/render3/jit/directive.mjs +0 -0
  296. /package/{esm2020 → esm2022}/src/render3/jit/environment.mjs +0 -0
  297. /package/{esm2020 → esm2022}/src/render3/jit/jit_options.mjs +0 -0
  298. /package/{esm2020 → esm2022}/src/render3/jit/module_patch.mjs +0 -0
  299. /package/{esm2020 → esm2022}/src/render3/jit/partial.mjs +0 -0
  300. /package/{esm2020 → esm2022}/src/render3/jit/pipe.mjs +0 -0
  301. /package/{esm2020 → esm2022}/src/render3/jit/util.mjs +0 -0
  302. /package/{esm2020 → esm2022}/src/render3/metadata.mjs +0 -0
  303. /package/{esm2020 → esm2022}/src/render3/namespaces.mjs +0 -0
  304. /package/{esm2020 → esm2022}/src/render3/ng_module_ref.mjs +0 -0
  305. /package/{esm2020 → esm2022}/src/render3/node_assert.mjs +0 -0
  306. /package/{esm2020 → esm2022}/src/render3/node_manipulation_i18n.mjs +0 -0
  307. /package/{esm2020 → esm2022}/src/render3/pipe.mjs +0 -0
  308. /package/{esm2020 → esm2022}/src/render3/profiler.mjs +0 -0
  309. /package/{esm2020 → esm2022}/src/render3/pure_function.mjs +0 -0
  310. /package/{esm2020 → esm2022}/src/render3/query.mjs +0 -0
  311. /package/{esm2020 → esm2022}/src/render3/state.mjs +0 -0
  312. /package/{esm2020 → esm2022}/src/render3/styling/class_differ.mjs +0 -0
  313. /package/{esm2020 → esm2022}/src/render3/styling/static_styling.mjs +0 -0
  314. /package/{esm2020 → esm2022}/src/render3/styling/style_binding_list.mjs +0 -0
  315. /package/{esm2020 → esm2022}/src/render3/styling/styling_parser.mjs +0 -0
  316. /package/{esm2020 → esm2022}/src/render3/tokens.mjs +0 -0
  317. /package/{esm2020 → esm2022}/src/render3/util/attrs_utils.mjs +0 -0
  318. /package/{esm2020 → esm2022}/src/render3/util/discovery_utils.mjs +0 -0
  319. /package/{esm2020 → esm2022}/src/render3/util/global_utils.mjs +0 -0
  320. /package/{esm2020 → esm2022}/src/render3/util/injector_utils.mjs +0 -0
  321. /package/{esm2020 → esm2022}/src/render3/util/misc_utils.mjs +0 -0
  322. /package/{esm2020 → esm2022}/src/render3/util/stringify_utils.mjs +0 -0
  323. /package/{esm2020 → esm2022}/src/render3/util/view_traversal_utils.mjs +0 -0
  324. /package/{esm2020 → esm2022}/src/render3/view_engine_compatibility_prebound.mjs +0 -0
  325. /package/{esm2020 → esm2022}/src/sanitization/bypass.mjs +0 -0
  326. /package/{esm2020 → esm2022}/src/sanitization/html_sanitizer.mjs +0 -0
  327. /package/{esm2020 → esm2022}/src/sanitization/iframe_attrs_validation.mjs +0 -0
  328. /package/{esm2020 → esm2022}/src/sanitization/inert_body.mjs +0 -0
  329. /package/{esm2020 → esm2022}/src/sanitization/sanitization.mjs +0 -0
  330. /package/{esm2020 → esm2022}/src/sanitization/security.mjs +0 -0
  331. /package/{esm2020 → esm2022}/src/sanitization/url_sanitizer.mjs +0 -0
  332. /package/{esm2020 → esm2022}/src/signals/src/untracked.mjs +0 -0
  333. /package/{esm2020 → esm2022}/src/util/array_utils.mjs +0 -0
  334. /package/{esm2020 → esm2022}/src/util/assert.mjs +0 -0
  335. /package/{esm2020 → esm2022}/src/util/char_code.mjs +0 -0
  336. /package/{esm2020 → esm2022}/src/util/closure.mjs +0 -0
  337. /package/{esm2020 → esm2022}/src/util/coercion.mjs +0 -0
  338. /package/{esm2020 → esm2022}/src/util/comparison.mjs +0 -0
  339. /package/{esm2020 → esm2022}/src/util/decorators.mjs +0 -0
  340. /package/{esm2020 → esm2022}/src/util/dom.mjs +0 -0
  341. /package/{esm2020 → esm2022}/src/util/empty.mjs +0 -0
  342. /package/{esm2020 → esm2022}/src/util/errors.mjs +0 -0
  343. /package/{esm2020 → esm2022}/src/util/global.mjs +0 -0
  344. /package/{esm2020 → esm2022}/src/util/is_dev_mode.mjs +0 -0
  345. /package/{esm2020 → esm2022}/src/util/iterable.mjs +0 -0
  346. /package/{esm2020 → esm2022}/src/util/lang.mjs +0 -0
  347. /package/{esm2020 → esm2022}/src/util/microtask.mjs +0 -0
  348. /package/{esm2020 → esm2022}/src/util/ng_i18n_closure_mode.mjs +0 -0
  349. /package/{esm2020 → esm2022}/src/util/ng_jit_mode.mjs +0 -0
  350. /package/{esm2020 → esm2022}/src/util/ng_reflect.mjs +0 -0
  351. /package/{esm2020 → esm2022}/src/util/noop.mjs +0 -0
  352. /package/{esm2020 → esm2022}/src/util/property.mjs +0 -0
  353. /package/{esm2020 → esm2022}/src/util/raf.mjs +0 -0
  354. /package/{esm2020 → esm2022}/src/util/security/trusted_type_defs.mjs +0 -0
  355. /package/{esm2020 → esm2022}/src/util/security/trusted_types.mjs +0 -0
  356. /package/{esm2020 → esm2022}/src/util/security/trusted_types_bypass.mjs +0 -0
  357. /package/{esm2020 → esm2022}/src/util/stringify.mjs +0 -0
  358. /package/{esm2020 → esm2022}/src/view/provider_flags.mjs +0 -0
  359. /package/{esm2020 → esm2022}/src/zone/async-stack-tagging.mjs +0 -0
  360. /package/{esm2020 → esm2022}/src/zone/ng_zone.mjs +0 -0
  361. /package/{esm2020 → esm2022}/src/zone.mjs +0 -0
  362. /package/{esm2020 → esm2022}/testing/index.mjs +0 -0
  363. /package/{esm2020 → esm2022}/testing/public_api.mjs +0 -0
  364. /package/{esm2020 → esm2022}/testing/src/async.mjs +0 -0
  365. /package/{esm2020 → esm2022}/testing/src/component_fixture.mjs +0 -0
  366. /package/{esm2020 → esm2022}/testing/src/fake_async.mjs +0 -0
  367. /package/{esm2020 → esm2022}/testing/src/metadata_override.mjs +0 -0
  368. /package/{esm2020 → esm2022}/testing/src/metadata_overrider.mjs +0 -0
  369. /package/{esm2020 → esm2022}/testing/src/resolvers.mjs +0 -0
  370. /package/{esm2020 → esm2022}/testing/src/styling.mjs +0 -0
  371. /package/{esm2020 → esm2022}/testing/src/test_bed_common.mjs +0 -0
  372. /package/{esm2020 → esm2022}/testing/src/test_hooks.mjs +0 -0
  373. /package/{esm2020 → esm2022}/testing/src/testing.mjs +0 -0
  374. /package/{esm2020 → esm2022}/testing/src/testing_internal.mjs +0 -0
  375. /package/{esm2020 → esm2022}/testing/testing.mjs +0 -0
@@ -1,306 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { RuntimeError } from '../errors';
9
- import { removeFromArray } from '../util/array_utils';
10
- import { assertEqual } from '../util/assert';
11
- import { collectNativeNodes } from './collect_native_nodes';
12
- import { checkNoChangesInternal, detectChangesInternal, markViewDirty } from './instructions/shared';
13
- import { CONTAINER_HEADER_OFFSET, VIEW_REFS } from './interfaces/container';
14
- import { isLContainer } from './interfaces/type_checks';
15
- import { CONTEXT, FLAGS, PARENT, TVIEW } from './interfaces/view';
16
- import { destroyLView, detachView, renderDetachView } from './node_manipulation';
17
- import { storeLViewOnDestroy } from './util/view_utils';
18
- export class ViewRef {
19
- get rootNodes() {
20
- const lView = this._lView;
21
- const tView = lView[TVIEW];
22
- return collectNativeNodes(tView, lView, tView.firstChild, []);
23
- }
24
- constructor(
25
- /**
26
- * This represents `LView` associated with the component when ViewRef is a ChangeDetectorRef.
27
- *
28
- * When ViewRef is created for a dynamic component, this also represents the `LView` for the
29
- * component.
30
- *
31
- * For a "regular" ViewRef created for an embedded view, this is the `LView` for the embedded
32
- * view.
33
- *
34
- * @internal
35
- */
36
- _lView,
37
- /**
38
- * This represents the `LView` associated with the point where `ChangeDetectorRef` was
39
- * requested.
40
- *
41
- * This may be different from `_lView` if the `_cdRefInjectingView` is an embedded view.
42
- */
43
- _cdRefInjectingView) {
44
- this._lView = _lView;
45
- this._cdRefInjectingView = _cdRefInjectingView;
46
- this._appRef = null;
47
- this._attachedToViewContainer = false;
48
- }
49
- get context() {
50
- return this._lView[CONTEXT];
51
- }
52
- set context(value) {
53
- this._lView[CONTEXT] = value;
54
- }
55
- get destroyed() {
56
- return (this._lView[FLAGS] & 128 /* LViewFlags.Destroyed */) === 128 /* LViewFlags.Destroyed */;
57
- }
58
- destroy() {
59
- if (this._appRef) {
60
- this._appRef.detachView(this);
61
- }
62
- else if (this._attachedToViewContainer) {
63
- const parent = this._lView[PARENT];
64
- if (isLContainer(parent)) {
65
- const viewRefs = parent[VIEW_REFS];
66
- const index = viewRefs ? viewRefs.indexOf(this) : -1;
67
- if (index > -1) {
68
- ngDevMode &&
69
- assertEqual(index, parent.indexOf(this._lView) - CONTAINER_HEADER_OFFSET, 'An attached view should be in the same position within its container as its ViewRef in the VIEW_REFS array.');
70
- detachView(parent, index);
71
- removeFromArray(viewRefs, index);
72
- }
73
- }
74
- this._attachedToViewContainer = false;
75
- }
76
- destroyLView(this._lView[TVIEW], this._lView);
77
- }
78
- onDestroy(callback) {
79
- storeLViewOnDestroy(this._lView, callback);
80
- }
81
- /**
82
- * Marks a view and all of its ancestors dirty.
83
- *
84
- * This can be used to ensure an {@link ChangeDetectionStrategy#OnPush OnPush} component is
85
- * checked when it needs to be re-rendered but the two normal triggers haven't marked it
86
- * dirty (i.e. inputs haven't changed and events haven't fired in the view).
87
- *
88
- * <!-- TODO: Add a link to a chapter on OnPush components -->
89
- *
90
- * @usageNotes
91
- * ### Example
92
- *
93
- * ```typescript
94
- * @Component({
95
- * selector: 'app-root',
96
- * template: `Number of ticks: {{numberOfTicks}}`
97
- * changeDetection: ChangeDetectionStrategy.OnPush,
98
- * })
99
- * class AppComponent {
100
- * numberOfTicks = 0;
101
- *
102
- * constructor(private ref: ChangeDetectorRef) {
103
- * setInterval(() => {
104
- * this.numberOfTicks++;
105
- * // the following is required, otherwise the view will not be updated
106
- * this.ref.markForCheck();
107
- * }, 1000);
108
- * }
109
- * }
110
- * ```
111
- */
112
- markForCheck() {
113
- markViewDirty(this._cdRefInjectingView || this._lView);
114
- }
115
- /**
116
- * Detaches the view from the change detection tree.
117
- *
118
- * Detached views will not be checked during change detection runs until they are
119
- * re-attached, even if they are dirty. `detach` can be used in combination with
120
- * {@link ChangeDetectorRef#detectChanges detectChanges} to implement local change
121
- * detection checks.
122
- *
123
- * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
124
- * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
125
- *
126
- * @usageNotes
127
- * ### Example
128
- *
129
- * The following example defines a component with a large list of readonly data.
130
- * Imagine the data changes constantly, many times per second. For performance reasons,
131
- * we want to check and update the list every five seconds. We can do that by detaching
132
- * the component's change detector and doing a local check every five seconds.
133
- *
134
- * ```typescript
135
- * class DataProvider {
136
- * // in a real application the returned data will be different every time
137
- * get data() {
138
- * return [1,2,3,4,5];
139
- * }
140
- * }
141
- *
142
- * @Component({
143
- * selector: 'giant-list',
144
- * template: `
145
- * <li *ngFor="let d of dataProvider.data">Data {{d}}</li>
146
- * `,
147
- * })
148
- * class GiantList {
149
- * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {
150
- * ref.detach();
151
- * setInterval(() => {
152
- * this.ref.detectChanges();
153
- * }, 5000);
154
- * }
155
- * }
156
- *
157
- * @Component({
158
- * selector: 'app',
159
- * providers: [DataProvider],
160
- * template: `
161
- * <giant-list><giant-list>
162
- * `,
163
- * })
164
- * class App {
165
- * }
166
- * ```
167
- */
168
- detach() {
169
- this._lView[FLAGS] &= ~64 /* LViewFlags.Attached */;
170
- }
171
- /**
172
- * Re-attaches a view to the change detection tree.
173
- *
174
- * This can be used to re-attach views that were previously detached from the tree
175
- * using {@link ChangeDetectorRef#detach detach}. Views are attached to the tree by default.
176
- *
177
- * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
178
- *
179
- * @usageNotes
180
- * ### Example
181
- *
182
- * The following example creates a component displaying `live` data. The component will detach
183
- * its change detector from the main change detector tree when the component's live property
184
- * is set to false.
185
- *
186
- * ```typescript
187
- * class DataProvider {
188
- * data = 1;
189
- *
190
- * constructor() {
191
- * setInterval(() => {
192
- * this.data = this.data * 2;
193
- * }, 500);
194
- * }
195
- * }
196
- *
197
- * @Component({
198
- * selector: 'live-data',
199
- * inputs: ['live'],
200
- * template: 'Data: {{dataProvider.data}}'
201
- * })
202
- * class LiveData {
203
- * constructor(private ref: ChangeDetectorRef, private dataProvider: DataProvider) {}
204
- *
205
- * set live(value) {
206
- * if (value) {
207
- * this.ref.reattach();
208
- * } else {
209
- * this.ref.detach();
210
- * }
211
- * }
212
- * }
213
- *
214
- * @Component({
215
- * selector: 'app-root',
216
- * providers: [DataProvider],
217
- * template: `
218
- * Live Update: <input type="checkbox" [(ngModel)]="live">
219
- * <live-data [live]="live"><live-data>
220
- * `,
221
- * })
222
- * class AppComponent {
223
- * live = true;
224
- * }
225
- * ```
226
- */
227
- reattach() {
228
- this._lView[FLAGS] |= 64 /* LViewFlags.Attached */;
229
- }
230
- /**
231
- * Checks the view and its children.
232
- *
233
- * This can also be used in combination with {@link ChangeDetectorRef#detach detach} to implement
234
- * local change detection checks.
235
- *
236
- * <!-- TODO: Add a link to a chapter on detach/reattach/local digest -->
237
- * <!-- TODO: Add a live demo once ref.detectChanges is merged into master -->
238
- *
239
- * @usageNotes
240
- * ### Example
241
- *
242
- * The following example defines a component with a large list of readonly data.
243
- * Imagine, the data changes constantly, many times per second. For performance reasons,
244
- * we want to check and update the list every five seconds.
245
- *
246
- * We can do that by detaching the component's change detector and doing a local change detection
247
- * check every five seconds.
248
- *
249
- * See {@link ChangeDetectorRef#detach detach} for more information.
250
- */
251
- detectChanges() {
252
- detectChangesInternal(this._lView[TVIEW], this._lView, this.context);
253
- }
254
- /**
255
- * Checks the change detector and its children, and throws if any changes are detected.
256
- *
257
- * This is used in development mode to verify that running change detection doesn't
258
- * introduce other changes.
259
- */
260
- checkNoChanges() {
261
- if (ngDevMode) {
262
- checkNoChangesInternal(this._lView[TVIEW], this._lView, this.context);
263
- }
264
- }
265
- attachToViewContainerRef() {
266
- if (this._appRef) {
267
- throw new RuntimeError(902 /* RuntimeErrorCode.VIEW_ALREADY_ATTACHED */, ngDevMode && 'This view is already attached directly to the ApplicationRef!');
268
- }
269
- this._attachedToViewContainer = true;
270
- }
271
- detachFromAppRef() {
272
- this._appRef = null;
273
- renderDetachView(this._lView[TVIEW], this._lView);
274
- }
275
- attachToAppRef(appRef) {
276
- if (this._attachedToViewContainer) {
277
- throw new RuntimeError(902 /* RuntimeErrorCode.VIEW_ALREADY_ATTACHED */, ngDevMode && 'This view is already attached to a ViewContainer!');
278
- }
279
- this._appRef = appRef;
280
- }
281
- }
282
- /** @internal */
283
- export class RootViewRef extends ViewRef {
284
- constructor(_view) {
285
- super(_view);
286
- this._view = _view;
287
- }
288
- detectChanges() {
289
- const lView = this._view;
290
- const tView = lView[TVIEW];
291
- const context = lView[CONTEXT];
292
- detectChangesInternal(tView, lView, context, false);
293
- }
294
- checkNoChanges() {
295
- if (ngDevMode) {
296
- const lView = this._view;
297
- const tView = lView[TVIEW];
298
- const context = lView[CONTEXT];
299
- checkNoChangesInternal(tView, lView, context, false);
300
- }
301
- }
302
- get context() {
303
- return null;
304
- }
305
- }
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld19yZWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9yZW5kZXIzL3ZpZXdfcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUdILE9BQU8sRUFBQyxZQUFZLEVBQW1CLE1BQU0sV0FBVyxDQUFDO0FBRXpELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFDLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25HLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRixPQUFPLEVBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBU3RELE1BQU0sT0FBTyxPQUFPO0lBS2xCLElBQUksU0FBUztRQUNYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDtJ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Q0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRVEsY0FBYztRQUNyQixJQUFJLFNBQVMsRUFBRTtZQUNiLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDekIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQixzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN0RDtJQUNILENBQUM7SUFFRCxJQUFhLE9BQU87UUFDbEIsT0FBTyxJQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiBhcyB2aWV3RW5naW5lX0NoYW5nZURldGVjdG9yUmVmfSBmcm9tICcuLi9jaGFuZ2VfZGV0ZWN0aW9uL2NoYW5nZV9kZXRlY3Rvcl9yZWYnO1xuaW1wb3J0IHtSdW50aW1lRXJyb3IsIFJ1bnRpbWVFcnJvckNvZGV9IGZyb20gJy4uL2Vycm9ycyc7XG5pbXBvcnQge0VtYmVkZGVkVmlld1JlZiBhcyB2aWV3RW5naW5lX0VtYmVkZGVkVmlld1JlZiwgSW50ZXJuYWxWaWV3UmVmIGFzIHZpZXdFbmdpbmVfSW50ZXJuYWxWaWV3UmVmLCBWaWV3UmVmVHJhY2tlcn0gZnJvbSAnLi4vbGlua2VyL3ZpZXdfcmVmJztcbmltcG9ydCB7cmVtb3ZlRnJvbUFycmF5fSBmcm9tICcuLi91dGlsL2FycmF5X3V0aWxzJztcbmltcG9ydCB7YXNzZXJ0RXF1YWx9IGZyb20gJy4uL3V0aWwvYXNzZXJ0JztcblxuaW1wb3J0IHtjb2xsZWN0TmF0aXZlTm9kZXN9IGZyb20gJy4vY29sbGVjdF9uYXRpdmVfbm9kZXMnO1xuaW1wb3J0IHtjaGVja05vQ2hhbmdlc0ludGVybmFsLCBkZXRlY3RDaGFuZ2VzSW50ZXJuYWwsIG1hcmtWaWV3RGlydHl9IGZyb20gJy4vaW5zdHJ1Y3Rpb25zL3NoYXJlZCc7XG5pbXBvcnQge0NPTlRBSU5FUl9IRUFERVJfT0ZGU0VULCBWSUVXX1JFRlN9IGZyb20gJy4vaW50ZXJmYWNlcy9jb250YWluZXInO1xuaW1wb3J0IHtpc0xDb250YWluZXJ9IGZyb20gJy4vaW50ZXJmYWNlcy90eXBlX2NoZWNrcyc7XG5pbXBvcnQge0NPTlRFWFQsIEZMQUdTLCBMVmlldywgTFZpZXdGbGFncywgUEFSRU5ULCBUVklFV30gZnJvbSAnLi9pbnRlcmZhY2VzL3ZpZXcnO1xuaW1wb3J0IHtkZXN0cm95TFZpZXcsIGRldGFjaFZpZXcsIHJlbmRlckRldGFjaFZpZXd9IGZyb20gJy4vbm9kZV9tYW5pcHVsYXRpb24nO1xuaW1wb3J0IHtzdG9yZUxWaWV3T25EZXN0cm95fSBmcm9tICcuL3V0aWwvdmlld191dGlscyc7XG5cblxuXG4vLyBOZWVkZWQgZHVlIHRvIHRzaWNrbGUgZG93bmxldmVsaW5nIHdoZXJlIG11bHRpcGxlIGBpbXBsZW1lbnRzYCB3aXRoIGNsYXNzZXMgY3JlYXRlc1xuLy8gbXVsdGlwbGUgQGV4dGVuZHMgaW4gQ2xvc3VyZSBhbm5vdGF0aW9ucywgd2hpY2ggaXMgaWxsZWdhbC4gVGhpcyB3b3JrYXJvdW5kIGZpeGVzXG4vLyB0aGUgbXVsdGlwbGUgQGV4dGVuZHMgYnkgbWFraW5nIHRoZSBhbm5vdGF0aW9uIEBpbXBsZW1lbnRzIGluc3RlYWRcbmV4cG9ydCBpbnRlcmZhY2Ugdmlld0VuZ2luZV9DaGFuZ2VEZXRlY3RvclJlZl9pbnRlcmZhY2UgZXh0ZW5kcyB2aWV3RW5naW5lX0NoYW5nZURldGVjdG9yUmVmIHt9XG5cbmV4cG9ydCBjbGFzcyBWaWV3UmVmPFQ+IGltcGxlbWVudHMgdmlld0VuZ2luZV9FbWJlZGRlZFZpZXdSZWY8VD4sIHZpZXdFbmdpbmVfSW50ZXJuYWxWaWV3UmVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3RW5naW5lX0NoYW5nZURldGVjdG9yUmVmX2ludGVyZmFjZSB7XG4gIHByaXZhdGUgX2FwcFJlZjogVmlld1JlZlRyYWNrZXJ8bnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyID0gZmFsc2U7XG5cbiAgZ2V0IHJvb3ROb2RlcygpOiBhbnlbXSB7XG4gICAgY29uc3QgbFZpZXcgPSB0aGlzLl9sVmlldztcbiAgICBjb25zdCB0VmlldyA9IGxWaWV3W1RWSUVXXTtcbiAgICByZXR1cm4gY29sbGVjdE5hdGl2ZU5vZGVzKHRWaWV3LCBsVmlldywgdFZpZXcuZmlyc3RDaGlsZCwgW10pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICAvKipcbiAgICAgICAqIFRoaXMgcmVwcmVzZW50cyBgTFZpZXdgIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tcG9uZW50IHdoZW4gVmlld1JlZiBpcyBhIENoYW5nZURldGVjdG9yUmVmLlxuICAgICAgICpcbiAgICAgICAqIFdoZW4gVmlld1JlZiBpcyBjcmVhdGVkIGZvciBhIGR5bmFtaWMgY29tcG9uZW50LCB0aGlzIGFsc28gcmVwcmVzZW50cyB0aGUgYExWaWV3YCBmb3IgdGhlXG4gICAgICAgKiBjb21wb25lbnQuXG4gICAgICAgKlxuICAgICAgICogRm9yIGEgXCJyZWd1bGFyXCIgVmlld1JlZiBjcmVhdGVkIGZvciBhbiBlbWJlZGRlZCB2aWV3LCB0aGlzIGlzIHRoZSBgTFZpZXdgIGZvciB0aGUgZW1iZWRkZWRcbiAgICAgICAqIHZpZXcuXG4gICAgICAgKlxuICAgICAgICogQGludGVybmFsXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyBfbFZpZXc6IExWaWV3LFxuXG4gICAgICAvKipcbiAgICAgICAqIFRoaXMgcmVwcmVzZW50cyB0aGUgYExWaWV3YCBhc3NvY2lhdGVkIHdpdGggdGhlIHBvaW50IHdoZXJlIGBDaGFuZ2VEZXRlY3RvclJlZmAgd2FzXG4gICAgICAgKiByZXF1ZXN0ZWQuXG4gICAgICAgKlxuICAgICAgICogVGhpcyBtYXkgYmUgZGlmZmVyZW50IGZyb20gYF9sVmlld2AgaWYgdGhlIGBfY2RSZWZJbmplY3RpbmdWaWV3YCBpcyBhbiBlbWJlZGRlZCB2aWV3LlxuICAgICAgICovXG4gICAgICBwcml2YXRlIF9jZFJlZkluamVjdGluZ1ZpZXc/OiBMVmlldykge31cblxuICBnZXQgY29udGV4dCgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fbFZpZXdbQ09OVEVYVF0gYXMgdW5rbm93biBhcyBUO1xuICB9XG5cbiAgc2V0IGNvbnRleHQodmFsdWU6IFQpIHtcbiAgICB0aGlzLl9sVmlld1tDT05URVhUXSA9IHZhbHVlIGFzIHVua25vd24gYXMge307XG4gIH1cblxuICBnZXQgZGVzdHJveWVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5fbFZpZXdbRkxBR1NdICYgTFZpZXdGbGFncy5EZXN0cm95ZWQpID09PSBMVmlld0ZsYWdzLkRlc3Ryb3llZDtcbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2FwcFJlZikge1xuICAgICAgdGhpcy5fYXBwUmVmLmRldGFjaFZpZXcodGhpcyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcikge1xuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5fbFZpZXdbUEFSRU5UXTtcbiAgICAgIGlmIChpc0xDb250YWluZXIocGFyZW50KSkge1xuICAgICAgICBjb25zdCB2aWV3UmVmcyA9IHBhcmVudFtWSUVXX1JFRlNdIGFzIFZpZXdSZWY8dW5rbm93bj5bXSB8IG51bGw7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdmlld1JlZnMgPyB2aWV3UmVmcy5pbmRleE9mKHRoaXMpIDogLTE7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgbmdEZXZNb2RlICYmXG4gICAgICAgICAgICAgIGFzc2VydEVxdWFsKFxuICAgICAgICAgICAgICAgICAgaW5kZXgsIHBhcmVudC5pbmRleE9mKHRoaXMuX2xWaWV3KSAtIENPTlRBSU5FUl9IRUFERVJfT0ZGU0VULFxuICAgICAgICAgICAgICAgICAgJ0FuIGF0dGFjaGVkIHZpZXcgc2hvdWxkIGJlIGluIHRoZSBzYW1lIHBvc2l0aW9uIHdpdGhpbiBpdHMgY29udGFpbmVyIGFzIGl0cyBWaWV3UmVmIGluIHRoZSBWSUVXX1JFRlMgYXJyYXkuJyk7XG4gICAgICAgICAgZGV0YWNoVmlldyhwYXJlbnQsIGluZGV4KTtcbiAgICAgICAgICByZW1vdmVGcm9tQXJyYXkodmlld1JlZnMhLCBpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyID0gZmFsc2U7XG4gICAgfVxuICAgIGRlc3Ryb3lMVmlldyh0aGlzLl9sVmlld1tUVklFV10sIHRoaXMuX2xWaWV3KTtcbiAgfVxuXG4gIG9uRGVzdHJveShjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICBzdG9yZUxWaWV3T25EZXN0cm95KHRoaXMuX2xWaWV3LCBjYWxsYmFjayBhcyAoKSA9PiB2b2lkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrcyBhIHZpZXcgYW5kIGFsbCBvZiBpdHMgYW5jZXN0b3JzIGRpcnR5LlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGVuc3VyZSBhbiB7QGxpbmsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kjT25QdXNoIE9uUHVzaH0gY29tcG9uZW50IGlzXG4gICAqIGNoZWNrZWQgd2hlbiBpdCBuZWVkcyB0byBiZSByZS1yZW5kZXJlZCBidXQgdGhlIHR3byBub3JtYWwgdHJpZ2dlcnMgaGF2ZW4ndCBtYXJrZWQgaXRcbiAgICogZGlydHkgKGkuZS4gaW5wdXRzIGhhdmVuJ3QgY2hhbmdlZCBhbmQgZXZlbnRzIGhhdmVuJ3QgZmlyZWQgaW4gdGhlIHZpZXcpLlxuICAgKlxuICAgKiA8IS0tIFRPRE86IEFkZCBhIGxpbmsgdG8gYSBjaGFwdGVyIG9uIE9uUHVzaCBjb21wb25lbnRzIC0tPlxuICAgKlxuICAgKiBAdXNhZ2VOb3Rlc1xuICAgKiAjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnYXBwLXJvb3QnLFxuICAgKiAgIHRlbXBsYXRlOiBgTnVtYmVyIG9mIHRpY2tzOiB7e251bWJlck9mVGlja3N9fWBcbiAgICogICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICogfSlcbiAgICogY2xhc3MgQXBwQ29tcG9uZW50IHtcbiAgICogICBudW1iZXJPZlRpY2tzID0gMDtcbiAgICpcbiAgICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICogICAgIHNldEludGVydmFsKCgpID0+IHtcbiAgICogICAgICAgdGhpcy5udW1iZXJPZlRpY2tzKys7XG4gICAqICAgICAgIC8vIHRoZSBmb2xsb3dpbmcgaXMgcmVxdWlyZWQsIG90aGVyd2lzZSB0aGUgdmlldyB3aWxsIG5vdCBiZSB1cGRhdGVkXG4gICAqICAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xuICAgKiAgICAgfSwgMTAwMCk7XG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgbWFya0ZvckNoZWNrKCk6IHZvaWQge1xuICAgIG1hcmtWaWV3RGlydHkodGhpcy5fY2RSZWZJbmplY3RpbmdWaWV3IHx8IHRoaXMuX2xWaWV3KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRhY2hlcyB0aGUgdmlldyBmcm9tIHRoZSBjaGFuZ2UgZGV0ZWN0aW9uIHRyZWUuXG4gICAqXG4gICAqIERldGFjaGVkIHZpZXdzIHdpbGwgbm90IGJlIGNoZWNrZWQgZHVyaW5nIGNoYW5nZSBkZXRlY3Rpb24gcnVucyB1bnRpbCB0aGV5IGFyZVxuICAgKiByZS1hdHRhY2hlZCwgZXZlbiBpZiB0aGV5IGFyZSBkaXJ0eS4gYGRldGFjaGAgY2FuIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aFxuICAgKiB7QGxpbmsgQ2hhbmdlRGV0ZWN0b3JSZWYjZGV0ZWN0Q2hhbmdlcyBkZXRlY3RDaGFuZ2VzfSB0byBpbXBsZW1lbnQgbG9jYWwgY2hhbmdlXG4gICAqIGRldGVjdGlvbiBjaGVja3MuXG4gICAqXG4gICAqIDwhLS0gVE9ETzogQWRkIGEgbGluayB0byBhIGNoYXB0ZXIgb24gZGV0YWNoL3JlYXR0YWNoL2xvY2FsIGRpZ2VzdCAtLT5cbiAgICogPCEtLSBUT0RPOiBBZGQgYSBsaXZlIGRlbW8gb25jZSByZWYuZGV0ZWN0Q2hhbmdlcyBpcyBtZXJnZWQgaW50byBtYXN0ZXIgLS0+XG4gICAqXG4gICAqIEB1c2FnZU5vdGVzXG4gICAqICMjIyBFeGFtcGxlXG4gICAqXG4gICAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZWZpbmVzIGEgY29tcG9uZW50IHdpdGggYSBsYXJnZSBsaXN0IG9mIHJlYWRvbmx5IGRhdGEuXG4gICAqIEltYWdpbmUgdGhlIGRhdGEgY2hhbmdlcyBjb25zdGFudGx5LCBtYW55IHRpbWVzIHBlciBzZWNvbmQuIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLFxuICAgKiB3ZSB3YW50IHRvIGNoZWNrIGFuZCB1cGRhdGUgdGhlIGxpc3QgZXZlcnkgZml2ZSBzZWNvbmRzLiBXZSBjYW4gZG8gdGhhdCBieSBkZXRhY2hpbmdcbiAgICogdGhlIGNvbXBvbmVudCdzIGNoYW5nZSBkZXRlY3RvciBhbmQgZG9pbmcgYSBsb2NhbCBjaGVjayBldmVyeSBmaXZlIHNlY29uZHMuXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY2xhc3MgRGF0YVByb3ZpZGVyIHtcbiAgICogICAvLyBpbiBhIHJlYWwgYXBwbGljYXRpb24gdGhlIHJldHVybmVkIGRhdGEgd2lsbCBiZSBkaWZmZXJlbnQgZXZlcnkgdGltZVxuICAgKiAgIGdldCBkYXRhKCkge1xuICAgKiAgICAgcmV0dXJuIFsxLDIsMyw0LDVdO1xuICAgKiAgIH1cbiAgICogfVxuICAgKlxuICAgKiBAQ29tcG9uZW50KHtcbiAgICogICBzZWxlY3RvcjogJ2dpYW50LWxpc3QnLFxuICAgKiAgIHRlbXBsYXRlOiBgXG4gICAqICAgICA8bGkgKm5nRm9yPVwibGV0IGQgb2YgZGF0YVByb3ZpZGVyLmRhdGFcIj5EYXRhIHt7ZH19PC9saT5cbiAgICogICBgLFxuICAgKiB9KVxuICAgKiBjbGFzcyBHaWFudExpc3Qge1xuICAgKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBkYXRhUHJvdmlkZXI6IERhdGFQcm92aWRlcikge1xuICAgKiAgICAgcmVmLmRldGFjaCgpO1xuICAgKiAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgKiAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAqICAgICB9LCA1MDAwKTtcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQENvbXBvbmVudCh7XG4gICAqICAgc2VsZWN0b3I6ICdhcHAnLFxuICAgKiAgIHByb3ZpZGVyczogW0RhdGFQcm92aWRlcl0sXG4gICAqICAgdGVtcGxhdGU6IGBcbiAgICogICAgIDxnaWFudC1saXN0PjxnaWFudC1saXN0PlxuICAgKiAgIGAsXG4gICAqIH0pXG4gICAqIGNsYXNzIEFwcCB7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBkZXRhY2goKTogdm9pZCB7XG4gICAgdGhpcy5fbFZpZXdbRkxBR1NdICY9IH5MVmlld0ZsYWdzLkF0dGFjaGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlLWF0dGFjaGVzIGEgdmlldyB0byB0aGUgY2hhbmdlIGRldGVjdGlvbiB0cmVlLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlLWF0dGFjaCB2aWV3cyB0aGF0IHdlcmUgcHJldmlvdXNseSBkZXRhY2hlZCBmcm9tIHRoZSB0cmVlXG4gICAqIHVzaW5nIHtAbGluayBDaGFuZ2VEZXRlY3RvclJlZiNkZXRhY2ggZGV0YWNofS4gVmlld3MgYXJlIGF0dGFjaGVkIHRvIHRoZSB0cmVlIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIDwhLS0gVE9ETzogQWRkIGEgbGluayB0byBhIGNoYXB0ZXIgb24gZGV0YWNoL3JlYXR0YWNoL2xvY2FsIGRpZ2VzdCAtLT5cbiAgICpcbiAgICogQHVzYWdlTm90ZXNcbiAgICogIyMjIEV4YW1wbGVcbiAgICpcbiAgICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGNyZWF0ZXMgYSBjb21wb25lbnQgZGlzcGxheWluZyBgbGl2ZWAgZGF0YS4gVGhlIGNvbXBvbmVudCB3aWxsIGRldGFjaFxuICAgKiBpdHMgY2hhbmdlIGRldGVjdG9yIGZyb20gdGhlIG1haW4gY2hhbmdlIGRldGVjdG9yIHRyZWUgd2hlbiB0aGUgY29tcG9uZW50J3MgbGl2ZSBwcm9wZXJ0eVxuICAgKiBpcyBzZXQgdG8gZmFsc2UuXG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY2xhc3MgRGF0YVByb3ZpZGVyIHtcbiAgICogICBkYXRhID0gMTtcbiAgICpcbiAgICogICBjb25zdHJ1Y3RvcigpIHtcbiAgICogICAgIHNldEludGVydmFsKCgpID0+IHtcbiAgICogICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhICogMjtcbiAgICogICAgIH0sIDUwMCk7XG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIEBDb21wb25lbnQoe1xuICAgKiAgIHNlbGVjdG9yOiAnbGl2ZS1kYXRhJyxcbiAgICogICBpbnB1dHM6IFsnbGl2ZSddLFxuICAgKiAgIHRlbXBsYXRlOiAnRGF0YToge3tkYXRhUHJvdmlkZXIuZGF0YX19J1xuICAgKiB9KVxuICAgKiBjbGFzcyBMaXZlRGF0YSB7XG4gICAqICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIGRhdGFQcm92aWRlcjogRGF0YVByb3ZpZGVyKSB7fVxuICAgKlxuICAgKiAgIHNldCBsaXZlKHZhbHVlKSB7XG4gICAqICAgICBpZiAodmFsdWUpIHtcbiAgICogICAgICAgdGhpcy5yZWYucmVhdHRhY2goKTtcbiAgICogICAgIH0gZWxzZSB7XG4gICAqICAgICAgIHRoaXMucmVmLmRldGFjaCgpO1xuICAgKiAgICAgfVxuICAgKiAgIH1cbiAgICogfVxuICAgKlxuICAgKiBAQ29tcG9uZW50KHtcbiAgICogICBzZWxlY3RvcjogJ2FwcC1yb290JyxcbiAgICogICBwcm92aWRlcnM6IFtEYXRhUHJvdmlkZXJdLFxuICAgKiAgIHRlbXBsYXRlOiBgXG4gICAqICAgICBMaXZlIFVwZGF0ZTogPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwibGl2ZVwiPlxuICAgKiAgICAgPGxpdmUtZGF0YSBbbGl2ZV09XCJsaXZlXCI+PGxpdmUtZGF0YT5cbiAgICogICBgLFxuICAgKiB9KVxuICAgKiBjbGFzcyBBcHBDb21wb25lbnQge1xuICAgKiAgIGxpdmUgPSB0cnVlO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgcmVhdHRhY2goKTogdm9pZCB7XG4gICAgdGhpcy5fbFZpZXdbRkxBR1NdIHw9IExWaWV3RmxhZ3MuQXR0YWNoZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHRoZSB2aWV3IGFuZCBpdHMgY2hpbGRyZW4uXG4gICAqXG4gICAqIFRoaXMgY2FuIGFsc28gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHtAbGluayBDaGFuZ2VEZXRlY3RvclJlZiNkZXRhY2ggZGV0YWNofSB0byBpbXBsZW1lbnRcbiAgICogbG9jYWwgY2hhbmdlIGRldGVjdGlvbiBjaGVja3MuXG4gICAqXG4gICAqIDwhLS0gVE9ETzogQWRkIGEgbGluayB0byBhIGNoYXB0ZXIgb24gZGV0YWNoL3JlYXR0YWNoL2xvY2FsIGRpZ2VzdCAtLT5cbiAgICogPCEtLSBUT0RPOiBBZGQgYSBsaXZlIGRlbW8gb25jZSByZWYuZGV0ZWN0Q2hhbmdlcyBpcyBtZXJnZWQgaW50byBtYXN0ZXIgLS0+XG4gICAqXG4gICAqIEB1c2FnZU5vdGVzXG4gICAqICMjIyBFeGFtcGxlXG4gICAqXG4gICAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZWZpbmVzIGEgY29tcG9uZW50IHdpdGggYSBsYXJnZSBsaXN0IG9mIHJlYWRvbmx5IGRhdGEuXG4gICAqIEltYWdpbmUsIHRoZSBkYXRhIGNoYW5nZXMgY29uc3RhbnRseSwgbWFueSB0aW1lcyBwZXIgc2Vjb25kLiBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucyxcbiAgICogd2Ugd2FudCB0byBjaGVjayBhbmQgdXBkYXRlIHRoZSBsaXN0IGV2ZXJ5IGZpdmUgc2Vjb25kcy5cbiAgICpcbiAgICogV2UgY2FuIGRvIHRoYXQgYnkgZGV0YWNoaW5nIHRoZSBjb21wb25lbnQncyBjaGFuZ2UgZGV0ZWN0b3IgYW5kIGRvaW5nIGEgbG9jYWwgY2hhbmdlIGRldGVjdGlvblxuICAgKiBjaGVjayBldmVyeSBmaXZlIHNlY29uZHMuXG4gICAqXG4gICAqIFNlZSB7QGxpbmsgQ2hhbmdlRGV0ZWN0b3JSZWYjZGV0YWNoIGRldGFjaH0gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqL1xuICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGRldGVjdENoYW5nZXNJbnRlcm5hbCh0aGlzLl9sVmlld1tUVklFV10sIHRoaXMuX2xWaWV3LCB0aGlzLmNvbnRleHQgYXMgdW5rbm93biBhcyB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHRoZSBjaGFuZ2UgZGV0ZWN0b3IgYW5kIGl0cyBjaGlsZHJlbiwgYW5kIHRocm93cyBpZiBhbnkgY2hhbmdlcyBhcmUgZGV0ZWN0ZWQuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZCBpbiBkZXZlbG9wbWVudCBtb2RlIHRvIHZlcmlmeSB0aGF0IHJ1bm5pbmcgY2hhbmdlIGRldGVjdGlvbiBkb2Vzbid0XG4gICAqIGludHJvZHVjZSBvdGhlciBjaGFuZ2VzLlxuICAgKi9cbiAgY2hlY2tOb0NoYW5nZXMoKTogdm9pZCB7XG4gICAgaWYgKG5nRGV2TW9kZSkge1xuICAgICAgY2hlY2tOb0NoYW5nZXNJbnRlcm5hbCh0aGlzLl9sVmlld1tUVklFV10sIHRoaXMuX2xWaWV3LCB0aGlzLmNvbnRleHQgYXMgdW5rbm93biBhcyB7fSk7XG4gICAgfVxuICB9XG5cbiAgYXR0YWNoVG9WaWV3Q29udGFpbmVyUmVmKCkge1xuICAgIGlmICh0aGlzLl9hcHBSZWYpIHtcbiAgICAgIHRocm93IG5ldyBSdW50aW1lRXJyb3IoXG4gICAgICAgICAgUnVudGltZUVycm9yQ29kZS5WSUVXX0FMUkVBRFlfQVRUQUNIRUQsXG4gICAgICAgICAgbmdEZXZNb2RlICYmICdUaGlzIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCBkaXJlY3RseSB0byB0aGUgQXBwbGljYXRpb25SZWYhJyk7XG4gICAgfVxuICAgIHRoaXMuX2F0dGFjaGVkVG9WaWV3Q29udGFpbmVyID0gdHJ1ZTtcbiAgfVxuXG4gIGRldGFjaEZyb21BcHBSZWYoKSB7XG4gICAgdGhpcy5fYXBwUmVmID0gbnVsbDtcbiAgICByZW5kZXJEZXRhY2hWaWV3KHRoaXMuX2xWaWV3W1RWSUVXXSwgdGhpcy5fbFZpZXcpO1xuICB9XG5cbiAgYXR0YWNoVG9BcHBSZWYoYXBwUmVmOiBWaWV3UmVmVHJhY2tlcikge1xuICAgIGlmICh0aGlzLl9hdHRhY2hlZFRvVmlld0NvbnRhaW5lcikge1xuICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFcnJvcihcbiAgICAgICAgICBSdW50aW1lRXJyb3JDb2RlLlZJRVdfQUxSRUFEWV9BVFRBQ0hFRCxcbiAgICAgICAgICBuZ0Rldk1vZGUgJiYgJ1RoaXMgdmlldyBpcyBhbHJlYWR5IGF0dGFjaGVkIHRvIGEgVmlld0NvbnRhaW5lciEnKTtcbiAgICB9XG4gICAgdGhpcy5fYXBwUmVmID0gYXBwUmVmO1xuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjbGFzcyBSb290Vmlld1JlZjxUPiBleHRlbmRzIFZpZXdSZWY8VD4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgX3ZpZXc6IExWaWV3KSB7XG4gICAgc3VwZXIoX3ZpZXcpO1xuICB9XG5cbiAgb3ZlcnJpZGUgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICBjb25zdCBsVmlldyA9IHRoaXMuX3ZpZXc7XG4gICAgY29uc3QgdFZpZXcgPSBsVmlld1tUVklFV107XG4gICAgY29uc3QgY29udGV4dCA9IGxWaWV3W0NPTlRFWFRdO1xuICAgIGRldGVjdENoYW5nZXNJbnRlcm5hbCh0VmlldywgbFZpZXcsIGNvbnRleHQsIGZhbHNlKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGNoZWNrTm9DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmIChuZ0Rldk1vZGUpIHtcbiAgICAgIGNvbnN0IGxWaWV3ID0gdGhpcy5fdmlldztcbiAgICAgIGNvbnN0IHRWaWV3ID0gbFZpZXdbVFZJRVddO1xuICAgICAgY29uc3QgY29udGV4dCA9IGxWaWV3W0NPTlRFWFRdO1xuICAgICAgY2hlY2tOb0NoYW5nZXNJbnRlcm5hbCh0VmlldywgbFZpZXcsIGNvbnRleHQsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBnZXQgY29udGV4dCgpOiBUIHtcbiAgICByZXR1cm4gbnVsbCE7XG4gIH1cbn1cbiJdfQ==
@@ -1,15 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export { isSignal } from './src/api';
9
- export { computed } from './src/computed';
10
- export { effect } from './src/effect';
11
- export { setActiveConsumer } from './src/graph';
12
- export { signal } from './src/signal';
13
- export { untracked } from './src/untracked';
14
- export { Watch } from './src/watch';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9zaWduYWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQTBCLE1BQU0sV0FBVyxDQUFDO0FBQzVELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsTUFBTSxFQUFTLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUM5QyxPQUFPLEVBQWlCLE1BQU0sRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5leHBvcnQge2lzU2lnbmFsLCBTaWduYWwsIFZhbHVlRXF1YWxpdHlGbn0gZnJvbSAnLi9zcmMvYXBpJztcbmV4cG9ydCB7Y29tcHV0ZWR9IGZyb20gJy4vc3JjL2NvbXB1dGVkJztcbmV4cG9ydCB7ZWZmZWN0LCBFZmZlY3R9IGZyb20gJy4vc3JjL2VmZmVjdCc7XG5leHBvcnQge3NldEFjdGl2ZUNvbnN1bWVyfSBmcm9tICcuL3NyYy9ncmFwaCc7XG5leHBvcnQge1NldHRhYmxlU2lnbmFsLCBzaWduYWx9IGZyb20gJy4vc3JjL3NpZ25hbCc7XG5leHBvcnQge3VudHJhY2tlZH0gZnJvbSAnLi9zcmMvdW50cmFja2VkJztcbmV4cG9ydCB7V2F0Y2h9IGZyb20gJy4vc3JjL3dhdGNoJztcbiJdfQ==
@@ -1,46 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- /**
9
- * Symbol used to tell `Signal`s apart from other functions.
10
- *
11
- * This can be used to auto-unwrap signals in various cases, or to auto-wrap non-signal values.
12
- */
13
- const SIGNAL = Symbol('SIGNAL');
14
- /**
15
- * Checks if the given `value` function is a reactive `Signal`.
16
- */
17
- export function isSignal(value) {
18
- return value[SIGNAL] ?? false;
19
- }
20
- /**
21
- * Converts `fn` into a marked signal function (where `isSignal(fn)` will be `true`), and
22
- * potentially add some set of extra properties (passed as an object record `extraApi`).
23
- */
24
- export function createSignalFromFunction(fn, extraApi = {}) {
25
- fn[SIGNAL] = true;
26
- // Copy properties from `extraApi` to `fn` to complete the desired API of the `Signal`.
27
- return Object.assign(fn, extraApi);
28
- }
29
- /**
30
- * The default equality function used for `signal` and `computed`, which treats objects and arrays
31
- * as never equal, and all other primitive values using identity semantics.
32
- *
33
- * This allows signals to hold non-primitive values (arrays, objects, other collections) and still
34
- * propagate change notification upon explicit mutation without identity change.
35
- *
36
- * @developerPreview
37
- */
38
- export function defaultEquals(a, b) {
39
- // `Object.is` compares two values using identity semantics which is desired behavior for
40
- // primitive values. If `Object.is` determines two values to be equal we need to make sure that
41
- // those don't represent objects (we want to make sure that 2 objects are always considered
42
- // "unequal"). The null check is needed for the special case of JavaScript reporting null values
43
- // as objects (`typeof null === 'object'`).
44
- return (a === null || typeof a !== 'object') && Object.is(a, b);
45
- }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvc2lnbmFscy9zcmMvYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7O0dBSUc7QUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFnQmhDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFlO0lBQ3RDLE9BQVEsS0FBeUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDckQsQ0FBQztBQW9CRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQ3BDLEVBQVcsRUFBRSxXQUFlLEVBQVE7SUFDckMsRUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztJQUMzQix1RkFBdUY7SUFDdkYsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQW1CLENBQUM7QUFDdkQsQ0FBQztBQVNEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBSSxDQUFJLEVBQUUsQ0FBSTtJQUN6Qyx5RkFBeUY7SUFDekYsK0ZBQStGO0lBQy9GLDJGQUEyRjtJQUMzRixnR0FBZ0c7SUFDaEcsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqXG4gKiBTeW1ib2wgdXNlZCB0byB0ZWxsIGBTaWduYWxgcyBhcGFydCBmcm9tIG90aGVyIGZ1bmN0aW9ucy5cbiAqXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGF1dG8tdW53cmFwIHNpZ25hbHMgaW4gdmFyaW91cyBjYXNlcywgb3IgdG8gYXV0by13cmFwIG5vbi1zaWduYWwgdmFsdWVzLlxuICovXG5jb25zdCBTSUdOQUwgPSBTeW1ib2woJ1NJR05BTCcpO1xuXG4vKipcbiAqIEEgcmVhY3RpdmUgdmFsdWUgd2hpY2ggbm90aWZpZXMgY29uc3VtZXJzIG9mIGFueSBjaGFuZ2VzLlxuICpcbiAqIFNpZ25hbHMgYXJlIGZ1bmN0aW9ucyB3aGljaCByZXR1cm5zIHRoZWlyIGN1cnJlbnQgdmFsdWUuIFRvIGFjY2VzcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIHNpZ25hbCxcbiAqIGNhbGwgaXQuXG4gKlxuICogT3JkaW5hcnkgdmFsdWVzIGNhbiBiZSB0dXJuZWQgaW50byBgU2lnbmFsYHMgd2l0aCB0aGUgYHNpZ25hbGAgZnVuY3Rpb24uXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqL1xuZXhwb3J0IHR5cGUgU2lnbmFsPFQ+ID0gKCgpID0+IFQpJntcbiAgW1NJR05BTF06IHRydWU7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYHZhbHVlYCBmdW5jdGlvbiBpcyBhIHJlYWN0aXZlIGBTaWduYWxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTaWduYWwodmFsdWU6IEZ1bmN0aW9uKTogdmFsdWUgaXMgU2lnbmFsPHVua25vd24+IHtcbiAgcmV0dXJuICh2YWx1ZSBhcyBTaWduYWw8dW5rbm93bj4pW1NJR05BTF0gPz8gZmFsc2U7XG59XG5cbi8qKlxuICogQ29udmVydHMgYGZuYCBpbnRvIGEgbWFya2VkIHNpZ25hbCBmdW5jdGlvbiAod2hlcmUgYGlzU2lnbmFsKGZuKWAgd2lsbCBiZSBgdHJ1ZWApLlxuICpcbiAqIEBwYXJhbSBmbiBBIHplcm8tYXJndW1lbnQgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjb252ZXJ0ZWQgaW50byBhIGBTaWduYWxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2lnbmFsRnJvbUZ1bmN0aW9uPFQ+KGZuOiAoKSA9PiBUKTogU2lnbmFsPFQ+O1xuXG4vKipcbiAqIENvbnZlcnRzIGBmbmAgaW50byBhIG1hcmtlZCBzaWduYWwgZnVuY3Rpb24gKHdoZXJlIGBpc1NpZ25hbChmbilgIHdpbGwgYmUgYHRydWVgKSwgYW5kXG4gKiBwb3RlbnRpYWxseSBhZGQgc29tZSBzZXQgb2YgZXh0cmEgcHJvcGVydGllcyAocGFzc2VkIGFzIGFuIG9iamVjdCByZWNvcmQgYGV4dHJhQXBpYCkuXG4gKlxuICogQHBhcmFtIGZuIEEgemVyby1hcmd1bWVudCBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCBpbnRvIGEgYFNpZ25hbGAuXG4gKiBAcGFyYW0gZXh0cmFBcGkgQW4gb2JqZWN0IHdob3NlIHByb3BlcnRpZXMgd2lsbCBiZSBjb3BpZWQgb250byBgZm5gIGluIG9yZGVyIHRvIGNyZWF0ZSBhIHNwZWNpZmljXG4gKiAgICAgZGVzaXJlZCBpbnRlcmZhY2UgZm9yIHRoZSBgU2lnbmFsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNpZ25hbEZyb21GdW5jdGlvbjxULCBVIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICAgIGZuOiAoKSA9PiBULCBleHRyYUFwaTogVSk6IFNpZ25hbDxUPiZVO1xuXG4vKipcbiAqIENvbnZlcnRzIGBmbmAgaW50byBhIG1hcmtlZCBzaWduYWwgZnVuY3Rpb24gKHdoZXJlIGBpc1NpZ25hbChmbilgIHdpbGwgYmUgYHRydWVgKSwgYW5kXG4gKiBwb3RlbnRpYWxseSBhZGQgc29tZSBzZXQgb2YgZXh0cmEgcHJvcGVydGllcyAocGFzc2VkIGFzIGFuIG9iamVjdCByZWNvcmQgYGV4dHJhQXBpYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaWduYWxGcm9tRnVuY3Rpb248VCwgVSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30+KFxuICAgIGZuOiAoKSA9PiBULCBleHRyYUFwaTogVSA9ICh7fSBhcyBVKSk6IFNpZ25hbDxUPiZVIHtcbiAgKGZuIGFzIGFueSlbU0lHTkFMXSA9IHRydWU7XG4gIC8vIENvcHkgcHJvcGVydGllcyBmcm9tIGBleHRyYUFwaWAgdG8gYGZuYCB0byBjb21wbGV0ZSB0aGUgZGVzaXJlZCBBUEkgb2YgdGhlIGBTaWduYWxgLlxuICByZXR1cm4gT2JqZWN0LmFzc2lnbihmbiwgZXh0cmFBcGkpIGFzIChTaWduYWw8VD4mIFUpO1xufVxuXG4vKipcbiAqIEEgY29tcGFyaXNvbiBmdW5jdGlvbiB3aGljaCBjYW4gZGV0ZXJtaW5lIGlmIHR3byB2YWx1ZXMgYXJlIGVxdWFsLlxuICpcbiAqIEBkZXZlbG9wZXJQcmV2aWV3XG4gKi9cbmV4cG9ydCB0eXBlIFZhbHVlRXF1YWxpdHlGbjxUPiA9IChhOiBULCBiOiBUKSA9PiBib29sZWFuO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IGVxdWFsaXR5IGZ1bmN0aW9uIHVzZWQgZm9yIGBzaWduYWxgIGFuZCBgY29tcHV0ZWRgLCB3aGljaCB0cmVhdHMgb2JqZWN0cyBhbmQgYXJyYXlzXG4gKiBhcyBuZXZlciBlcXVhbCwgYW5kIGFsbCBvdGhlciBwcmltaXRpdmUgdmFsdWVzIHVzaW5nIGlkZW50aXR5IHNlbWFudGljcy5cbiAqXG4gKiBUaGlzIGFsbG93cyBzaWduYWxzIHRvIGhvbGQgbm9uLXByaW1pdGl2ZSB2YWx1ZXMgKGFycmF5cywgb2JqZWN0cywgb3RoZXIgY29sbGVjdGlvbnMpIGFuZCBzdGlsbFxuICogcHJvcGFnYXRlIGNoYW5nZSBub3RpZmljYXRpb24gdXBvbiBleHBsaWNpdCBtdXRhdGlvbiB3aXRob3V0IGlkZW50aXR5IGNoYW5nZS5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdEVxdWFsczxUPihhOiBULCBiOiBUKSB7XG4gIC8vIGBPYmplY3QuaXNgIGNvbXBhcmVzIHR3byB2YWx1ZXMgdXNpbmcgaWRlbnRpdHkgc2VtYW50aWNzIHdoaWNoIGlzIGRlc2lyZWQgYmVoYXZpb3IgZm9yXG4gIC8vIHByaW1pdGl2ZSB2YWx1ZXMuIElmIGBPYmplY3QuaXNgIGRldGVybWluZXMgdHdvIHZhbHVlcyB0byBiZSBlcXVhbCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0XG4gIC8vIHRob3NlIGRvbid0IHJlcHJlc2VudCBvYmplY3RzICh3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IDIgb2JqZWN0cyBhcmUgYWx3YXlzIGNvbnNpZGVyZWRcbiAgLy8gXCJ1bmVxdWFsXCIpLiBUaGUgbnVsbCBjaGVjayBpcyBuZWVkZWQgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgSmF2YVNjcmlwdCByZXBvcnRpbmcgbnVsbCB2YWx1ZXNcbiAgLy8gYXMgb2JqZWN0cyAoYHR5cGVvZiBudWxsID09PSAnb2JqZWN0J2ApLlxuICByZXR1cm4gKGEgPT09IG51bGwgfHwgdHlwZW9mIGEgIT09ICdvYmplY3QnKSAmJiBPYmplY3QuaXMoYSwgYik7XG59XG4iXX0=
@@ -1,142 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { createSignalFromFunction, defaultEquals } from './api';
9
- import { consumerPollValueStatus, nextReactiveId, producerAccessed, producerNotifyConsumers, setActiveConsumer } from './graph';
10
- import { WeakRef } from './weak_ref';
11
- /**
12
- * Create a computed `Signal` which derives a reactive value from an expression.
13
- *
14
- * @developerPreview
15
- */
16
- export function computed(computation, equal = defaultEquals) {
17
- const node = new ComputedImpl(computation, equal);
18
- return createSignalFromFunction(node.signal.bind(node));
19
- }
20
- /**
21
- * A dedicated symbol used before a computed value has been calculated for the first time.
22
- * Explicitly typed as `any` so we can use it as signal's value.
23
- */
24
- const UNSET = Symbol('UNSET');
25
- /**
26
- * A dedicated symbol used in place of a computed signal value to indicate that a given computation
27
- * is in progress. Used to detect cycles in computation chains.
28
- * Explicitly typed as `any` so we can use it as signal's value.
29
- */
30
- const COMPUTING = Symbol('COMPUTING');
31
- /**
32
- * A dedicated symbol used in place of a computed signal value to indicate that a given computation
33
- * failed. The thrown error is cached until the computation gets dirty again.
34
- * Explicitly typed as `any` so we can use it as signal's value.
35
- */
36
- const ERRORED = Symbol('ERRORED');
37
- /**
38
- * A computation, which derives a value from a declarative reactive expression.
39
- *
40
- * `Computed`s are both `Producer`s and `Consumer`s of reactivity.
41
- */
42
- class ComputedImpl {
43
- constructor(computation, equal) {
44
- this.computation = computation;
45
- this.equal = equal;
46
- /**
47
- * Current value of the computation.
48
- *
49
- * This can also be one of the special values `UNSET`, `COMPUTING`, or `ERRORED`.
50
- */
51
- this.value = UNSET;
52
- /**
53
- * If `value` is `ERRORED`, the error caught from the last computation attempt which will
54
- * be re-thrown.
55
- */
56
- this.error = null;
57
- /**
58
- * Flag indicating that the computation is currently stale, meaning that one of the
59
- * dependencies has notified of a potential change.
60
- *
61
- * It's possible that no dependency has _actually_ changed, in which case the `stale`
62
- * state can be resolved without recomputing the value.
63
- */
64
- this.stale = true;
65
- this.id = nextReactiveId();
66
- this.ref = new WeakRef(this);
67
- this.producers = new Map();
68
- this.consumers = new Map();
69
- this.trackingVersion = 0;
70
- this.valueVersion = 0;
71
- }
72
- checkForChangedValue() {
73
- if (!this.stale) {
74
- // The current value and its version are already up to date.
75
- return;
76
- }
77
- // The current value is stale. Check whether we need to produce a new one.
78
- if (this.value !== UNSET && this.value !== COMPUTING && !consumerPollValueStatus(this)) {
79
- // Even though we were previously notified of a potential dependency update, all of
80
- // our dependencies report that they have not actually changed in value, so we can
81
- // resolve the stale state without needing to recompute the current value.
82
- this.stale = false;
83
- return;
84
- }
85
- // The current value is stale, and needs to be recomputed. It still may not change -
86
- // that depends on whether the newly computed value is equal to the old.
87
- this.recomputeValue();
88
- }
89
- recomputeValue() {
90
- if (this.value === COMPUTING) {
91
- // Our computation somehow led to a cyclic read of itself.
92
- throw new Error('Detected cycle in computations.');
93
- }
94
- const oldValue = this.value;
95
- this.value = COMPUTING;
96
- // As we're re-running the computation, update our dependent tracking version number.
97
- this.trackingVersion++;
98
- const prevConsumer = setActiveConsumer(this);
99
- let newValue;
100
- try {
101
- newValue = this.computation();
102
- }
103
- catch (err) {
104
- newValue = ERRORED;
105
- this.error = err;
106
- }
107
- finally {
108
- setActiveConsumer(prevConsumer);
109
- }
110
- this.stale = false;
111
- if (oldValue !== UNSET && oldValue !== ERRORED && newValue !== ERRORED &&
112
- this.equal(oldValue, newValue)) {
113
- // No change to `valueVersion` - old and new values are
114
- // semantically equivalent.
115
- this.value = oldValue;
116
- return;
117
- }
118
- this.value = newValue;
119
- this.valueVersion++;
120
- }
121
- notify() {
122
- if (this.stale) {
123
- // We've already notified consumers that this value has potentially changed.
124
- return;
125
- }
126
- // Record that the currently cached value may be stale.
127
- this.stale = true;
128
- // Notify any consumers about the potential change.
129
- producerNotifyConsumers(this);
130
- }
131
- signal() {
132
- // Check if the value needs updating before returning it.
133
- this.checkForChangedValue();
134
- // Record that someone looked at this signal.
135
- producerAccessed(this);
136
- if (this.value === ERRORED) {
137
- throw this.error;
138
- }
139
- return this.value;
140
- }
141
- }
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9zaWduYWxzL3NyYy9jb21wdXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsd0JBQXdCLEVBQUUsYUFBYSxFQUEwQixNQUFNLE9BQU8sQ0FBQztBQUN2RixPQUFPLEVBQXVCLHVCQUF1QixFQUFRLGNBQWMsRUFBWSxnQkFBZ0IsRUFBYyx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUNoTCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRW5DOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUNwQixXQUFvQixFQUFFLFFBQTRCLGFBQWE7SUFDakUsTUFBTSxJQUFJLEdBQUcsSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xELE9BQU8sd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxLQUFLLEdBQVEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRW5DOzs7O0dBSUc7QUFDSCxNQUFNLFNBQVMsR0FBUSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFM0M7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxHQUFRLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUV2Qzs7OztHQUlHO0FBQ0gsTUFBTSxZQUFZO0lBOEJoQixZQUFvQixXQUFvQixFQUFVLEtBQTRDO1FBQTFFLGdCQUFXLEdBQVgsV0FBVyxDQUFTO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBdUM7UUE3QjlGOzs7O1dBSUc7UUFDSyxVQUFLLEdBQU0sS0FBSyxDQUFDO1FBRXpCOzs7V0FHRztR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QUFLLENBQUM7SUFDcEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7Y3JlYXRlU2lnbmFsRnJvbUZ1bmN0aW9uLCBkZWZhdWx0RXF1YWxzLCBTaWduYWwsIFZhbHVlRXF1YWxpdHlGbn0gZnJvbSAnLi9hcGknO1xuaW1wb3J0IHtDb25zdW1lciwgQ29uc3VtZXJJZCwgY29uc3VtZXJQb2xsVmFsdWVTdGF0dXMsIEVkZ2UsIG5leHRSZWFjdGl2ZUlkLCBQcm9kdWNlciwgcHJvZHVjZXJBY2Nlc3NlZCwgUHJvZHVjZXJJZCwgcHJvZHVjZXJOb3RpZnlDb25zdW1lcnMsIHNldEFjdGl2ZUNvbnN1bWVyfSBmcm9tICcuL2dyYXBoJztcbmltcG9ydCB7V2Vha1JlZn0gZnJvbSAnLi93ZWFrX3JlZic7XG5cbi8qKlxuICogQ3JlYXRlIGEgY29tcHV0ZWQgYFNpZ25hbGAgd2hpY2ggZGVyaXZlcyBhIHJlYWN0aXZlIHZhbHVlIGZyb20gYW4gZXhwcmVzc2lvbi5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWQ8VD4oXG4gICAgY29tcHV0YXRpb246ICgpID0+IFQsIGVxdWFsOiBWYWx1ZUVxdWFsaXR5Rm48VD4gPSBkZWZhdWx0RXF1YWxzKTogU2lnbmFsPFQ+IHtcbiAgY29uc3Qgbm9kZSA9IG5ldyBDb21wdXRlZEltcGwoY29tcHV0YXRpb24sIGVxdWFsKTtcbiAgcmV0dXJuIGNyZWF0ZVNpZ25hbEZyb21GdW5jdGlvbihub2RlLnNpZ25hbC5iaW5kKG5vZGUpKTtcbn1cblxuLyoqXG4gKiBBIGRlZGljYXRlZCBzeW1ib2wgdXNlZCBiZWZvcmUgYSBjb21wdXRlZCB2YWx1ZSBoYXMgYmVlbiBjYWxjdWxhdGVkIGZvciB0aGUgZmlyc3QgdGltZS5cbiAqIEV4cGxpY2l0bHkgdHlwZWQgYXMgYGFueWAgc28gd2UgY2FuIHVzZSBpdCBhcyBzaWduYWwncyB2YWx1ZS5cbiAqL1xuY29uc3QgVU5TRVQ6IGFueSA9IFN5bWJvbCgnVU5TRVQnKTtcblxuLyoqXG4gKiBBIGRlZGljYXRlZCBzeW1ib2wgdXNlZCBpbiBwbGFjZSBvZiBhIGNvbXB1dGVkIHNpZ25hbCB2YWx1ZSB0byBpbmRpY2F0ZSB0aGF0IGEgZ2l2ZW4gY29tcHV0YXRpb25cbiAqIGlzIGluIHByb2dyZXNzLiBVc2VkIHRvIGRldGVjdCBjeWNsZXMgaW4gY29tcHV0YXRpb24gY2hhaW5zLlxuICogRXhwbGljaXRseSB0eXBlZCBhcyBgYW55YCBzbyB3ZSBjYW4gdXNlIGl0IGFzIHNpZ25hbCdzIHZhbHVlLlxuICovXG5jb25zdCBDT01QVVRJTkc6IGFueSA9IFN5bWJvbCgnQ09NUFVUSU5HJyk7XG5cbi8qKlxuICogQSBkZWRpY2F0ZWQgc3ltYm9sIHVzZWQgaW4gcGxhY2Ugb2YgYSBjb21wdXRlZCBzaWduYWwgdmFsdWUgdG8gaW5kaWNhdGUgdGhhdCBhIGdpdmVuIGNvbXB1dGF0aW9uXG4gKiBmYWlsZWQuIFRoZSB0aHJvd24gZXJyb3IgaXMgY2FjaGVkIHVudGlsIHRoZSBjb21wdXRhdGlvbiBnZXRzIGRpcnR5IGFnYWluLlxuICogRXhwbGljaXRseSB0eXBlZCBhcyBgYW55YCBzbyB3ZSBjYW4gdXNlIGl0IGFzIHNpZ25hbCdzIHZhbHVlLlxuICovXG5jb25zdCBFUlJPUkVEOiBhbnkgPSBTeW1ib2woJ0VSUk9SRUQnKTtcblxuLyoqXG4gKiBBIGNvbXB1dGF0aW9uLCB3aGljaCBkZXJpdmVzIGEgdmFsdWUgZnJvbSBhIGRlY2xhcmF0aXZlIHJlYWN0aXZlIGV4cHJlc3Npb24uXG4gKlxuICogYENvbXB1dGVkYHMgYXJlIGJvdGggYFByb2R1Y2VyYHMgYW5kIGBDb25zdW1lcmBzIG9mIHJlYWN0aXZpdHkuXG4gKi9cbmNsYXNzIENvbXB1dGVkSW1wbDxUPiBpbXBsZW1lbnRzIFByb2R1Y2VyLCBDb25zdW1lciB7XG4gIC8qKlxuICAgKiBDdXJyZW50IHZhbHVlIG9mIHRoZSBjb21wdXRhdGlvbi5cbiAgICpcbiAgICogVGhpcyBjYW4gYWxzbyBiZSBvbmUgb2YgdGhlIHNwZWNpYWwgdmFsdWVzIGBVTlNFVGAsIGBDT01QVVRJTkdgLCBvciBgRVJST1JFRGAuXG4gICAqL1xuICBwcml2YXRlIHZhbHVlOiBUID0gVU5TRVQ7XG5cbiAgLyoqXG4gICAqIElmIGB2YWx1ZWAgaXMgYEVSUk9SRURgLCB0aGUgZXJyb3IgY2F1Z2h0IGZyb20gdGhlIGxhc3QgY29tcHV0YXRpb24gYXR0ZW1wdCB3aGljaCB3aWxsXG4gICAqIGJlIHJlLXRocm93bi5cbiAgICovXG4gIHByaXZhdGUgZXJyb3I6IHVua25vd24gPSBudWxsO1xuXG4gIC8qKlxuICAgKiBGbGFnIGluZGljYXRpbmcgdGhhdCB0aGUgY29tcHV0YXRpb24gaXMgY3VycmVudGx5IHN0YWxlLCBtZWFuaW5nIHRoYXQgb25lIG9mIHRoZVxuICAgKiBkZXBlbmRlbmNpZXMgaGFzIG5vdGlmaWVkIG9mIGEgcG90ZW50aWFsIGNoYW5nZS5cbiAgICpcbiAgICogSXQncyBwb3NzaWJsZSB0aGF0IG5vIGRlcGVuZGVuY3kgaGFzIF9hY3R1YWxseV8gY2hhbmdlZCwgaW4gd2hpY2ggY2FzZSB0aGUgYHN0YWxlYFxuICAgKiBzdGF0ZSBjYW4gYmUgcmVzb2x2ZWQgd2l0aG91dCByZWNvbXB1dGluZyB0aGUgdmFsdWUuXG4gICAqL1xuICBwcml2YXRlIHN0YWxlID0gdHJ1ZTtcblxuICByZWFkb25seSBpZCA9IG5leHRSZWFjdGl2ZUlkKCk7XG4gIHJlYWRvbmx5IHJlZiA9IG5ldyBXZWFrUmVmKHRoaXMpO1xuICByZWFkb25seSBwcm9kdWNlcnMgPSBuZXcgTWFwPFByb2R1Y2VySWQsIEVkZ2U+KCk7XG4gIHJlYWRvbmx5IGNvbnN1bWVycyA9IG5ldyBNYXA8Q29uc3VtZXJJZCwgRWRnZT4oKTtcbiAgdHJhY2tpbmdWZXJzaW9uID0gMDtcbiAgdmFsdWVWZXJzaW9uID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbXB1dGF0aW9uOiAoKSA9PiBULCBwcml2YXRlIGVxdWFsOiAob2xkVmFsdWU6IFQsIG5ld1ZhbHVlOiBUKSA9PiBib29sZWFuKSB7fVxuXG4gIGNoZWNrRm9yQ2hhbmdlZFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zdGFsZSkge1xuICAgICAgLy8gVGhlIGN1cnJlbnQgdmFsdWUgYW5kIGl0cyB2ZXJzaW9uIGFyZSBhbHJlYWR5IHVwIHRvIGRhdGUuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVGhlIGN1cnJlbnQgdmFsdWUgaXMgc3RhbGUuIENoZWNrIHdoZXRoZXIgd2UgbmVlZCB0byBwcm9kdWNlIGEgbmV3IG9uZS5cblxuICAgIGlmICh0aGlzLnZhbHVlICE9PSBVTlNFVCAmJiB0aGlzLnZhbHVlICE9PSBDT01QVVRJTkcgJiYgIWNvbnN1bWVyUG9sbFZhbHVlU3RhdHVzKHRoaXMpKSB7XG4gICAgICAvLyBFdmVuIHRob3VnaCB3ZSB3ZXJlIHByZXZpb3VzbHkgbm90aWZpZWQgb2YgYSBwb3RlbnRpYWwgZGVwZW5kZW5jeSB1cGRhdGUsIGFsbCBvZlxuICAgICAgLy8gb3VyIGRlcGVuZGVuY2llcyByZXBvcnQgdGhhdCB0aGV5IGhhdmUgbm90IGFjdHVhbGx5IGNoYW5nZWQgaW4gdmFsdWUsIHNvIHdlIGNhblxuICAgICAgLy8gcmVzb2x2ZSB0aGUgc3RhbGUgc3RhdGUgd2l0aG91dCBuZWVkaW5nIHRvIHJlY29tcHV0ZSB0aGUgY3VycmVudCB2YWx1ZS5cbiAgICAgIHRoaXMuc3RhbGUgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUaGUgY3VycmVudCB2YWx1ZSBpcyBzdGFsZSwgYW5kIG5lZWRzIHRvIGJlIHJlY29tcHV0ZWQuIEl0IHN0aWxsIG1heSBub3QgY2hhbmdlIC1cbiAgICAvLyB0aGF0IGRlcGVuZHMgb24gd2hldGhlciB0aGUgbmV3bHkgY29tcHV0ZWQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIG9sZC5cbiAgICB0aGlzLnJlY29tcHV0ZVZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29tcHV0ZVZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZhbHVlID09PSBDT01QVVRJTkcpIHtcbiAgICAgIC8vIE91ciBjb21wdXRhdGlvbiBzb21laG93IGxlZCB0byBhIGN5Y2xpYyByZWFkIG9mIGl0c2VsZi5cbiAgICAgIHRocm93IG5ldyBFcnJvcignRGV0ZWN0ZWQgY3ljbGUgaW4gY29tcHV0YXRpb25zLicpO1xuICAgIH1cblxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLnZhbHVlID0gQ09NUFVUSU5HO1xuXG4gICAgLy8gQXMgd2UncmUgcmUtcnVubmluZyB0aGUgY29tcHV0YXRpb24sIHVwZGF0ZSBvdXIgZGVwZW5kZW50IHRyYWNraW5nIHZlcnNpb24gbnVtYmVyLlxuICAgIHRoaXMudHJhY2tpbmdWZXJzaW9uKys7XG4gICAgY29uc3QgcHJldkNvbnN1bWVyID0gc2V0QWN0aXZlQ29uc3VtZXIodGhpcyk7XG4gICAgbGV0IG5ld1ZhbHVlOiBUO1xuICAgIHRyeSB7XG4gICAgICBuZXdWYWx1ZSA9IHRoaXMuY29tcHV0YXRpb24oKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIG5ld1ZhbHVlID0gRVJST1JFRDtcbiAgICAgIHRoaXMuZXJyb3IgPSBlcnI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldEFjdGl2ZUNvbnN1bWVyKHByZXZDb25zdW1lcik7XG4gICAgfVxuXG4gICAgdGhpcy5zdGFsZSA9IGZhbHNlO1xuXG4gICAgaWYgKG9sZFZhbHVlICE9PSBVTlNFVCAmJiBvbGRWYWx1ZSAhPT0gRVJST1JFRCAmJiBuZXdWYWx1ZSAhPT0gRVJST1JFRCAmJlxuICAgICAgICB0aGlzLmVxdWFsKG9sZFZhbHVlLCBuZXdWYWx1ZSkpIHtcbiAgICAgIC8vIE5vIGNoYW5nZSB0byBgdmFsdWVWZXJzaW9uYCAtIG9sZCBhbmQgbmV3IHZhbHVlcyBhcmVcbiAgICAgIC8vIHNlbWFudGljYWxseSBlcXVpdmFsZW50LlxuICAgICAgdGhpcy52YWx1ZSA9IG9sZFZhbHVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLnZhbHVlVmVyc2lvbisrO1xuICB9XG5cbiAgbm90aWZ5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN0YWxlKSB7XG4gICAgICAvLyBXZSd2ZSBhbHJlYWR5IG5vdGlmaWVkIGNvbnN1bWVycyB0aGF0IHRoaXMgdmFsdWUgaGFzIHBvdGVudGlhbGx5IGNoYW5nZWQuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUmVjb3JkIHRoYXQgdGhlIGN1cnJlbnRseSBjYWNoZWQgdmFsdWUgbWF5IGJlIHN0YWxlLlxuICAgIHRoaXMuc3RhbGUgPSB0cnVlO1xuXG4gICAgLy8gTm90aWZ5IGFueSBjb25zdW1lcnMgYWJvdXQgdGhlIHBvdGVudGlhbCBjaGFuZ2UuXG4gICAgcHJvZHVjZXJOb3RpZnlDb25zdW1lcnModGhpcyk7XG4gIH1cblxuICBzaWduYWwoKTogVCB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHZhbHVlIG5lZWRzIHVwZGF0aW5nIGJlZm9yZSByZXR1cm5pbmcgaXQuXG4gICAgdGhpcy5jaGVja0ZvckNoYW5nZWRWYWx1ZSgpO1xuXG4gICAgLy8gUmVjb3JkIHRoYXQgc29tZW9uZSBsb29rZWQgYXQgdGhpcyBzaWduYWwuXG4gICAgcHJvZHVjZXJBY2Nlc3NlZCh0aGlzKTtcblxuICAgIGlmICh0aGlzLnZhbHVlID09PSBFUlJPUkVEKSB7XG4gICAgICB0aHJvdyB0aGlzLmVycm9yO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG59XG4iXX0=
@@ -1,69 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { Watch } from './watch';
9
- /**
10
- * Create a global `Effect` for the given reactive function.
11
- *
12
- * @developerPreview
13
- */
14
- export function effect(effectFn) {
15
- const watch = new Watch(effectFn, queueWatch);
16
- globalWatches.add(watch);
17
- // Effects start dirty.
18
- watch.notify();
19
- return {
20
- consumer: watch,
21
- schedule: watch.notify.bind(watch),
22
- destroy: () => {
23
- queuedWatches.delete(watch);
24
- globalWatches.delete(watch);
25
- },
26
- };
27
- }
28
- /**
29
- * Get a `Promise` that resolves when any scheduled effects have resolved.
30
- */
31
- export function effectsDone() {
32
- return watchQueuePromise?.promise ?? Promise.resolve();
33
- }
34
- /**
35
- * Shut down all active effects.
36
- */
37
- export function resetEffects() {
38
- queuedWatches.clear();
39
- globalWatches.clear();
40
- }
41
- const globalWatches = new Set();
42
- const queuedWatches = new Set();
43
- let watchQueuePromise = null;
44
- function queueWatch(watch) {
45
- if (queuedWatches.has(watch) || !globalWatches.has(watch)) {
46
- return;
47
- }
48
- queuedWatches.add(watch);
49
- if (watchQueuePromise === null) {
50
- Promise.resolve().then(runWatchQueue);
51
- let resolveFn;
52
- const promise = new Promise((resolve) => {
53
- resolveFn = resolve;
54
- });
55
- watchQueuePromise = {
56
- promise,
57
- resolveFn,
58
- };
59
- }
60
- }
61
- function runWatchQueue() {
62
- for (const watch of queuedWatches) {
63
- queuedWatches.delete(watch);
64
- watch.run();
65
- }
66
- watchQueuePromise.resolveFn();
67
- watchQueuePromise = null;
68
- }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS9zcmMvc2lnbmFscy9zcmMvZWZmZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUdILE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxTQUFTLENBQUM7QUF3QjlCOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFDLFFBQW9CO0lBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM5QyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXpCLHVCQUF1QjtJQUN2QixLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7SUFFZixPQUFPO1FBQ0wsUUFBUSxFQUFFLEtBQUs7UUFDZixRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2xDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDWixhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsV0FBVztJQUN6QixPQUFPLGlCQUFpQixFQUFFLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDekQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVk7SUFDMUIsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVMsQ0FBQztBQUN2QyxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBUyxDQUFDO0FBRXZDLElBQUksaUJBQWlCLEdBQTBELElBQUksQ0FBQztBQUVwRixTQUFTLFVBQVUsQ0FBQyxLQUFZO0lBQzlCLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDekQsT0FBTztLQUNSO0lBRUQsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV6QixJQUFJLGlCQUFpQixLQUFLLElBQUksRUFBRTtRQUM5QixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXRDLElBQUksU0FBc0IsQ0FBQztRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzVDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxpQkFBaUIsR0FBRztZQUNsQixPQUFPO1lBQ1AsU0FBUztTQUNWLENBQUM7S0FDSDtBQUNILENBQUM7QUFFRCxTQUFTLGFBQWE7SUFDcEIsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUU7UUFDakMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDYjtJQUVELGlCQUFrQixDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQy9CLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7Q29uc3VtZXJ9IGZyb20gJy4vZ3JhcGgnO1xuaW1wb3J0IHtXYXRjaH0gZnJvbSAnLi93YXRjaCc7XG5cbi8qKlxuICogQSBnbG9iYWwgcmVhY3RpdmUgZWZmZWN0LCB3aGljaCBjYW4gYmUgbWFudWFsbHkgc2NoZWR1bGVkIG9yIGRlc3Ryb3llZC5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEVmZmVjdCB7XG4gIC8qKlxuICAgKiBTY2hlZHVsZSB0aGUgZWZmZWN0IGZvciBtYW51YWwgZXhlY3V0aW9uLCBpZiBpdCdzIG5vdCBhbHJlYWR5LlxuICAgKi9cbiAgc2NoZWR1bGUoKTogdm9pZDtcblxuICAvKipcbiAgICogU2h1dCBkb3duIHRoZSBlZmZlY3QsIHJlbW92aW5nIGl0IGZyb20gYW55IHVwY29taW5nIHNjaGVkdWxlZCBleGVjdXRpb25zLlxuICAgKi9cbiAgZGVzdHJveSgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBEaXJlY3QgYWNjZXNzIHRvIHRoZSBlZmZlY3QncyBgQ29uc3VtZXJgIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMuXG4gICAqL1xuICByZWFkb25seSBjb25zdW1lcjogQ29uc3VtZXI7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgZ2xvYmFsIGBFZmZlY3RgIGZvciB0aGUgZ2l2ZW4gcmVhY3RpdmUgZnVuY3Rpb24uXG4gKlxuICogQGRldmVsb3BlclByZXZpZXdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVmZmVjdChlZmZlY3RGbjogKCkgPT4gdm9pZCk6IEVmZmVjdCB7XG4gIGNvbnN0IHdhdGNoID0gbmV3IFdhdGNoKGVmZmVjdEZuLCBxdWV1ZVdhdGNoKTtcbiAgZ2xvYmFsV2F0Y2hlcy5hZGQod2F0Y2gpO1xuXG4gIC8vIEVmZmVjdHMgc3RhcnQgZGlydHkuXG4gIHdhdGNoLm5vdGlmeSgpO1xuXG4gIHJldHVybiB7XG4gICAgY29uc3VtZXI6IHdhdGNoLFxuICAgIHNjaGVkdWxlOiB3YXRjaC5ub3RpZnkuYmluZCh3YXRjaCksXG4gICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgcXVldWVkV2F0Y2hlcy5kZWxldGUod2F0Y2gpO1xuICAgICAgZ2xvYmFsV2F0Y2hlcy5kZWxldGUod2F0Y2gpO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogR2V0IGEgYFByb21pc2VgIHRoYXQgcmVzb2x2ZXMgd2hlbiBhbnkgc2NoZWR1bGVkIGVmZmVjdHMgaGF2ZSByZXNvbHZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVmZmVjdHNEb25lKCk6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gd2F0Y2hRdWV1ZVByb21pc2U/LnByb21pc2UgPz8gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5cbi8qKlxuICogU2h1dCBkb3duIGFsbCBhY3RpdmUgZWZmZWN0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0RWZmZWN0cygpOiB2b2lkIHtcbiAgcXVldWVkV2F0Y2hlcy5jbGVhcigpO1xuICBnbG9iYWxXYXRjaGVzLmNsZWFyKCk7XG59XG5cbmNvbnN0IGdsb2JhbFdhdGNoZXMgPSBuZXcgU2V0PFdhdGNoPigpO1xuY29uc3QgcXVldWVkV2F0Y2hlcyA9IG5ldyBTZXQ8V2F0Y2g+KCk7XG5cbmxldCB3YXRjaFF1ZXVlUHJvbWlzZToge3Byb21pc2U6IFByb21pc2U8dm9pZD47IHJlc29sdmVGbjogKCkgPT4gdm9pZDt9fG51bGwgPSBudWxsO1xuXG5mdW5jdGlvbiBxdWV1ZVdhdGNoKHdhdGNoOiBXYXRjaCk6IHZvaWQge1xuICBpZiAocXVldWVkV2F0Y2hlcy5oYXMod2F0Y2gpIHx8ICFnbG9iYWxXYXRjaGVzLmhhcyh3YXRjaCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBxdWV1ZWRXYXRjaGVzLmFkZCh3YXRjaCk7XG5cbiAgaWYgKHdhdGNoUXVldWVQcm9taXNlID09PSBudWxsKSB7XG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihydW5XYXRjaFF1ZXVlKTtcblxuICAgIGxldCByZXNvbHZlRm4hOiAoKSA9PiB2b2lkO1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgICAgcmVzb2x2ZUZuID0gcmVzb2x2ZTtcbiAgICB9KTtcblxuICAgIHdhdGNoUXVldWVQcm9taXNlID0ge1xuICAgICAgcHJvbWlzZSxcbiAgICAgIHJlc29sdmVGbixcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIHJ1bldhdGNoUXVldWUoKTogdm9pZCB7XG4gIGZvciAoY29uc3Qgd2F0Y2ggb2YgcXVldWVkV2F0Y2hlcykge1xuICAgIHF1ZXVlZFdhdGNoZXMuZGVsZXRlKHdhdGNoKTtcbiAgICB3YXRjaC5ydW4oKTtcbiAgfVxuXG4gIHdhdGNoUXVldWVQcm9taXNlIS5yZXNvbHZlRm4oKTtcbiAgd2F0Y2hRdWV1ZVByb21pc2UgPSBudWxsO1xufVxuIl19