@angular/core 2.0.0-rc.1 → 2.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{core.umd.js → bundles/core.umd.js} +6402 -4606
- package/bundles/core.umd.min.js +6 -0
- package/esm/index.d.ts +5 -4
- package/esm/index.js +9 -8
- package/esm/index.js.map +1 -1
- package/esm/private_export.d.ts +96 -11
- package/esm/private_export.js +39 -10
- package/esm/private_export.js.map +1 -1
- package/esm/private_export.metadata.json +1 -1
- package/esm/src/animation/active_animation_players_map.d.ts +11 -0
- package/esm/src/animation/active_animation_players_map.js +47 -0
- package/esm/src/animation/active_animation_players_map.js.map +1 -0
- package/esm/src/animation/animation_constants.d.ts +4 -0
- package/esm/src/animation/animation_constants.js +5 -0
- package/esm/src/animation/animation_constants.js.map +1 -0
- package/esm/src/animation/animation_constants.metadata.json +1 -0
- package/esm/src/animation/animation_driver.d.ts +9 -0
- package/esm/src/animation/animation_driver.js +9 -0
- package/esm/src/animation/animation_driver.js.map +1 -0
- package/esm/src/animation/animation_group_player.d.ts +18 -0
- package/esm/src/animation/animation_group_player.js +60 -0
- package/esm/src/animation/animation_group_player.js.map +1 -0
- package/esm/src/animation/animation_keyframe.d.ts +6 -0
- package/esm/src/animation/animation_keyframe.js +7 -0
- package/esm/src/animation/animation_keyframe.js.map +1 -0
- package/esm/src/animation/animation_player.d.ts +26 -0
- package/esm/src/animation/animation_player.js +30 -0
- package/esm/src/animation/animation_player.js.map +1 -0
- package/esm/src/animation/animation_sequence_player.d.ts +21 -0
- package/esm/src/animation/animation_sequence_player.js +64 -0
- package/esm/src/animation/animation_sequence_player.js.map +1 -0
- package/esm/src/animation/animation_style_util.d.ts +32 -0
- package/esm/src/animation/animation_style_util.js +91 -0
- package/esm/src/animation/animation_style_util.js.map +1 -0
- package/esm/src/animation/animation_style_util.metadata.json +1 -0
- package/esm/src/animation/animation_styles.d.ts +8 -0
- package/esm/src/animation/animation_styles.js +6 -0
- package/esm/src/animation/animation_styles.js.map +1 -0
- package/esm/src/animation/metadata.d.ts +511 -0
- package/esm/src/animation/metadata.js +565 -0
- package/esm/src/animation/metadata.js.map +1 -0
- package/esm/src/animation/metadata.metadata.json +1 -0
- package/esm/src/application_common_providers.d.ts +1 -0
- package/esm/src/application_common_providers.js +5 -4
- package/esm/src/application_common_providers.js.map +1 -1
- package/esm/src/application_common_providers.metadata.json +1 -1
- package/esm/src/application_ref.d.ts +17 -41
- package/esm/src/application_ref.js +32 -23
- package/esm/src/application_ref.js.map +1 -1
- package/esm/src/application_ref.metadata.json +1 -1
- package/esm/src/application_tokens.d.ts +6 -1
- package/esm/src/application_tokens.js +9 -4
- package/esm/src/application_tokens.js.map +1 -1
- package/esm/src/application_tokens.metadata.json +1 -1
- package/esm/src/change_detection/change_detection.d.ts +9 -8
- package/esm/src/change_detection/change_detection.js +7 -7
- package/esm/src/change_detection/change_detection.js.map +1 -1
- package/esm/src/change_detection/change_detection.metadata.json +1 -1
- package/esm/src/change_detection/change_detection_util.d.ts +3 -1
- package/esm/src/change_detection/change_detection_util.js +6 -5
- package/esm/src/change_detection/change_detection_util.js.map +1 -1
- package/esm/src/change_detection/change_detection_util.metadata.json +1 -1
- package/esm/src/change_detection/change_detector_ref.d.ts +3 -0
- package/esm/src/change_detection/change_detector_ref.js +3 -0
- package/esm/src/change_detection/change_detector_ref.js.map +1 -1
- package/esm/src/change_detection/constants.d.ts +1 -0
- package/esm/src/change_detection/constants.js +4 -3
- package/esm/src/change_detection/constants.js.map +1 -1
- package/esm/src/change_detection/constants.metadata.json +1 -1
- package/esm/src/change_detection/differs/default_iterable_differ.d.ts +6 -94
- package/esm/src/change_detection/differs/default_iterable_differ.js +25 -18
- package/esm/src/change_detection/differs/default_iterable_differ.js.map +1 -1
- package/esm/src/change_detection/differs/default_keyvalue_differ.d.ts +3 -30
- package/esm/src/change_detection/differs/default_keyvalue_differ.js +13 -8
- package/esm/src/change_detection/differs/default_keyvalue_differ.js.map +1 -1
- package/esm/src/change_detection/differs/iterable_differs.d.ts +4 -1
- package/esm/src/change_detection/differs/iterable_differs.js +5 -4
- package/esm/src/change_detection/differs/iterable_differs.js.map +1 -1
- package/esm/src/change_detection/differs/keyvalue_differs.d.ts +2 -1
- package/esm/src/change_detection/differs/keyvalue_differs.js +5 -4
- package/esm/src/change_detection/differs/keyvalue_differs.js.map +1 -1
- package/esm/src/change_detection/pipe_transform.js.map +1 -1
- package/esm/src/change_detection.d.ts +1 -1
- package/esm/src/change_detection.js +5 -5
- package/esm/src/change_detection.js.map +1 -1
- package/esm/src/console.js +2 -1
- package/esm/src/console.js.map +1 -1
- package/esm/src/console.metadata.json +1 -1
- package/esm/src/debug/debug_node.d.ts +20 -2
- package/esm/src/debug/debug_node.js +16 -2
- package/esm/src/debug/debug_node.js.map +1 -1
- package/esm/src/debug/debug_node.metadata.json +1 -0
- package/esm/src/debug/debug_renderer.d.ts +10 -6
- package/esm/src/debug/debug_renderer.js +13 -2
- package/esm/src/debug/debug_renderer.js.map +1 -1
- package/esm/src/di/decorators.d.ts +13 -1
- package/esm/src/di/decorators.js +7 -1
- package/esm/src/di/decorators.js.map +1 -1
- package/esm/src/di/decorators.metadata.json +1 -1
- package/esm/src/di/forward_ref.d.ts +3 -1
- package/esm/src/di/forward_ref.js +3 -1
- package/esm/src/di/forward_ref.js.map +1 -1
- package/esm/src/di/injector.d.ts +4 -1
- package/esm/src/di/injector.js +5 -2
- package/esm/src/di/injector.js.map +1 -1
- package/esm/src/di/injector.metadata.json +1 -1
- package/esm/src/di/metadata.d.ts +8 -1
- package/esm/src/di/metadata.js +10 -3
- package/esm/src/di/metadata.js.map +1 -1
- package/esm/src/di/opaque_token.d.ts +2 -1
- package/esm/src/di/opaque_token.js +22 -21
- package/esm/src/di/opaque_token.js.map +1 -1
- package/esm/src/di/provider.d.ts +11 -10
- package/esm/src/di/provider.js +17 -14
- package/esm/src/di/provider.js.map +1 -1
- package/esm/src/di/provider.metadata.json +1 -0
- package/esm/src/di/provider_util.js.map +1 -1
- package/esm/src/di/provider_util.metadata.json +1 -0
- package/esm/src/di/reflective_exceptions.d.ts +11 -16
- package/esm/src/di/reflective_exceptions.js +28 -22
- package/esm/src/di/reflective_exceptions.js.map +1 -1
- package/esm/src/di/reflective_injector.d.ts +3 -33
- package/esm/src/di/reflective_injector.js +10 -7
- package/esm/src/di/reflective_injector.js.map +1 -1
- package/esm/src/di/reflective_key.d.ts +1 -8
- package/esm/src/di/reflective_key.js +3 -2
- package/esm/src/di/reflective_key.js.map +1 -1
- package/esm/src/di/reflective_provider.d.ts +2 -1
- package/esm/src/di/reflective_provider.js +6 -5
- package/esm/src/di/reflective_provider.js.map +1 -1
- package/esm/src/di/reflective_provider.metadata.json +1 -0
- package/esm/src/di.d.ts +2 -2
- package/esm/src/di.js +6 -6
- package/esm/src/di.js.map +1 -1
- package/esm/src/facade/async.d.ts +11 -4
- package/esm/src/facade/async.js +25 -15
- package/esm/src/facade/async.js.map +1 -1
- package/esm/src/facade/base_wrapped_exception.js +4 -4
- package/esm/src/facade/base_wrapped_exception.js.map +1 -1
- package/esm/src/facade/collection.js +1 -1
- package/esm/src/facade/collection.js.map +1 -1
- package/esm/src/facade/collection.metadata.json +1 -1
- package/esm/src/facade/exception_handler.d.ts +2 -11
- package/esm/src/facade/exception_handler.js +8 -7
- package/esm/src/facade/exception_handler.js.map +1 -1
- package/esm/src/facade/exceptions.d.ts +4 -0
- package/esm/src/facade/exceptions.js +6 -2
- package/esm/src/facade/exceptions.js.map +1 -1
- package/esm/src/facade/exceptions.metadata.json +1 -0
- package/esm/src/facade/lang.d.ts +6 -4
- package/esm/src/facade/lang.js +12 -11
- package/esm/src/facade/lang.js.map +1 -1
- package/esm/src/facade/lang.metadata.json +1 -1
- package/esm/src/facade/math.d.ts +2 -0
- package/esm/src/facade/math.js +4 -0
- package/esm/src/facade/math.js.map +1 -0
- package/esm/src/facade/math.metadata.json +1 -0
- package/esm/src/facade/promise.js.map +1 -1
- package/esm/src/linker/component_factory.d.ts +5 -4
- package/esm/src/linker/component_factory.js +7 -3
- package/esm/src/linker/component_factory.js.map +1 -1
- package/esm/src/linker/component_resolver.d.ts +5 -4
- package/esm/src/linker/component_resolver.js +12 -7
- package/esm/src/linker/component_resolver.js.map +1 -1
- package/esm/src/linker/component_resolver.metadata.json +1 -1
- package/esm/src/linker/debug_context.js +5 -4
- package/esm/src/linker/debug_context.js.map +1 -1
- package/esm/src/linker/dynamic_component_loader.d.ts +5 -6
- package/esm/src/linker/dynamic_component_loader.js +5 -3
- package/esm/src/linker/dynamic_component_loader.js.map +1 -1
- package/esm/src/linker/dynamic_component_loader.metadata.json +1 -1
- package/esm/src/linker/element.d.ts +3 -3
- package/esm/src/linker/element.js +5 -5
- package/esm/src/linker/element.js.map +1 -1
- package/esm/src/linker/element_injector.js.map +1 -1
- package/esm/src/linker/element_ref.d.ts +1 -0
- package/esm/src/linker/element_ref.js +5 -5
- package/esm/src/linker/element_ref.js.map +1 -1
- package/esm/src/linker/exceptions.d.ts +4 -1
- package/esm/src/linker/exceptions.js +4 -1
- package/esm/src/linker/exceptions.js.map +1 -1
- package/esm/src/linker/query_list.d.ts +3 -10
- package/esm/src/linker/query_list.js +8 -7
- package/esm/src/linker/query_list.js.map +1 -1
- package/esm/src/linker/systemjs_component_resolver.d.ts +21 -0
- package/esm/src/linker/systemjs_component_resolver.js +44 -0
- package/esm/src/linker/systemjs_component_resolver.js.map +1 -0
- package/esm/src/linker/template_ref.d.ts +2 -1
- package/esm/src/linker/template_ref.js +1 -0
- package/esm/src/linker/template_ref.js.map +1 -1
- package/esm/src/linker/view.d.ts +12 -1
- package/esm/src/linker/view.js +62 -16
- package/esm/src/linker/view.js.map +1 -1
- package/esm/src/linker/view_container_ref.d.ts +2 -10
- package/esm/src/linker/view_container_ref.js +4 -3
- package/esm/src/linker/view_container_ref.js.map +1 -1
- package/esm/src/linker/view_ref.d.ts +5 -1
- package/esm/src/linker/view_ref.js +6 -2
- package/esm/src/linker/view_ref.js.map +1 -1
- package/esm/src/linker/view_type.js.map +1 -1
- package/esm/src/linker/view_utils.d.ts +2 -4
- package/esm/src/linker/view_utils.js +21 -21
- package/esm/src/linker/view_utils.js.map +1 -1
- package/esm/src/linker/view_utils.metadata.json +1 -1
- package/esm/src/linker.d.ts +5 -4
- package/esm/src/linker.js +5 -4
- package/esm/src/linker.js.map +1 -1
- package/esm/src/metadata/di.d.ts +8 -1
- package/esm/src/metadata/di.js +10 -3
- package/esm/src/metadata/di.js.map +1 -1
- package/esm/src/metadata/directives.d.ts +104 -20
- package/esm/src/metadata/directives.js +25 -19
- package/esm/src/metadata/directives.js.map +1 -1
- package/esm/src/metadata/lifecycle_hooks.d.ts +46 -31
- package/esm/src/metadata/lifecycle_hooks.js +464 -10
- package/esm/src/metadata/lifecycle_hooks.js.map +1 -1
- package/esm/src/metadata/lifecycle_hooks.metadata.json +1 -1
- package/esm/src/metadata/view.d.ts +6 -2
- package/esm/src/metadata/view.js +3 -1
- package/esm/src/metadata/view.js.map +1 -1
- package/esm/src/metadata/view.metadata.json +1 -1
- package/esm/src/metadata.d.ts +49 -15
- package/esm/src/metadata.js +35 -10
- package/esm/src/metadata.js.map +1 -1
- package/esm/src/metadata.metadata.json +1 -1
- package/esm/src/platform_common_providers.d.ts +1 -0
- package/esm/src/platform_common_providers.js +3 -3
- package/esm/src/platform_common_providers.js.map +1 -1
- package/esm/src/platform_common_providers.metadata.json +1 -1
- package/esm/src/platform_directives_and_pipes.d.ts +48 -45
- package/esm/src/platform_directives_and_pipes.js +50 -47
- package/esm/src/platform_directives_and_pipes.js.map +1 -1
- package/esm/src/platform_directives_and_pipes.metadata.json +1 -1
- package/esm/src/profile/profile.d.ts +5 -1
- package/esm/src/profile/profile.js +4 -0
- package/esm/src/profile/profile.js.map +1 -1
- package/esm/src/profile/profile.metadata.json +1 -1
- package/esm/src/profile/wtf_impl.js +1 -1
- package/esm/src/profile/wtf_impl.js.map +1 -1
- package/esm/src/profile/wtf_impl.metadata.json +1 -0
- package/esm/src/profile/wtf_init.js +2 -2
- package/esm/src/profile/wtf_init.js.map +1 -1
- package/esm/src/reflection/platform_reflection_capabilities.d.ts +4 -3
- package/esm/src/reflection/platform_reflection_capabilities.js.map +1 -1
- package/esm/src/reflection/reflection.d.ts +1 -1
- package/esm/src/reflection/reflection.js +2 -2
- package/esm/src/reflection/reflection.js.map +1 -1
- package/esm/src/reflection/reflection.metadata.json +1 -1
- package/esm/src/reflection/reflection_capabilities.d.ts +4 -5
- package/esm/src/reflection/reflection_capabilities.js +22 -10
- package/esm/src/reflection/reflection_capabilities.js.map +1 -1
- package/esm/src/reflection/reflector.d.ts +8 -20
- package/esm/src/reflection/reflector.js +13 -3
- package/esm/src/reflection/reflector.js.map +1 -1
- package/esm/src/reflection/reflector_reader.js +3 -3
- package/esm/src/reflection/reflector_reader.js.map +1 -1
- package/esm/src/reflection/types.js.map +1 -1
- package/esm/src/render/api.d.ts +17 -6
- package/esm/src/render/api.js +8 -1
- package/esm/src/render/api.js.map +1 -1
- package/esm/src/render.d.ts +1 -1
- package/esm/src/render.js +1 -1
- package/esm/src/render.js.map +1 -1
- package/esm/src/security.js +6 -6
- package/esm/src/security.js.map +1 -1
- package/esm/src/testability/testability.d.ts +3 -19
- package/esm/src/testability/testability.js +10 -5
- package/esm/src/testability/testability.js.map +1 -1
- package/esm/src/testability/testability.metadata.json +1 -1
- package/esm/src/util/decorators.d.ts +2 -1
- package/esm/src/util/decorators.js +10 -9
- package/esm/src/util/decorators.js.map +1 -1
- package/esm/src/util.js.map +1 -1
- package/esm/src/zone/ng_zone.d.ts +6 -17
- package/esm/src/zone/ng_zone.js +7 -6
- package/esm/src/zone/ng_zone.js.map +1 -1
- package/esm/src/zone/ng_zone_impl.d.ts +1 -4
- package/esm/src/zone/ng_zone_impl.js +3 -2
- package/esm/src/zone/ng_zone_impl.js.map +1 -1
- package/esm/src/zone.js.map +1 -1
- package/esm/testing/async.js +20 -22
- package/esm/testing/async.js.map +1 -1
- package/esm/testing/async.metadata.json +1 -0
- package/esm/testing/async_test_completer.js.map +1 -1
- package/esm/testing/fake_async.d.ts +4 -1
- package/esm/testing/fake_async.js +9 -2
- package/esm/testing/fake_async.js.map +1 -1
- package/esm/testing/lang_utils.js +1 -1
- package/esm/testing/lang_utils.js.map +1 -1
- package/esm/testing/lang_utils.metadata.json +1 -0
- package/esm/testing/logger.js +5 -3
- package/esm/testing/logger.js.map +1 -1
- package/esm/testing/logger.metadata.json +1 -1
- package/esm/testing/mock_application_ref.d.ts +1 -1
- package/esm/testing/mock_application_ref.js +1 -0
- package/esm/testing/mock_application_ref.js.map +1 -1
- package/esm/testing/mock_application_ref.metadata.json +1 -1
- package/esm/testing/ng_zone_mock.d.ts +0 -1
- package/esm/testing/ng_zone_mock.js +2 -1
- package/esm/testing/ng_zone_mock.js.map +1 -1
- package/esm/testing/ng_zone_mock.metadata.json +1 -1
- package/esm/testing/regexp.js +1 -1
- package/esm/testing/regexp.js.map +1 -1
- package/esm/testing/regexp.metadata.json +1 -0
- package/esm/testing/test_injector.d.ts +6 -12
- package/esm/testing/test_injector.js +4 -10
- package/esm/testing/test_injector.js.map +1 -1
- package/esm/testing/test_injector.metadata.json +1 -0
- package/esm/testing/testing.d.ts +2 -2
- package/esm/testing/testing.js +2 -2
- package/esm/testing/testing.js.map +1 -1
- package/esm/testing/testing.metadata.json +1 -1
- package/esm/testing.js.map +1 -1
- package/index.d.ts +5 -4
- package/index.js +10 -8
- package/index.js.map +1 -1
- package/package.json +5 -1
- package/private_export.d.ts +96 -11
- package/private_export.js +39 -10
- package/private_export.js.map +1 -1
- package/private_export.metadata.json +1 -1
- package/src/animation/active_animation_players_map.d.ts +11 -0
- package/src/animation/active_animation_players_map.js +54 -0
- package/src/animation/active_animation_players_map.js.map +1 -0
- package/src/animation/animation_constants.d.ts +4 -0
- package/src/animation/animation_constants.js +6 -0
- package/src/animation/animation_constants.js.map +1 -0
- package/src/animation/animation_constants.metadata.json +1 -0
- package/src/animation/animation_driver.d.ts +9 -0
- package/src/animation/animation_driver.js +25 -0
- package/src/animation/animation_driver.js.map +1 -0
- package/src/animation/animation_group_player.d.ts +18 -0
- package/src/animation/animation_group_player.js +64 -0
- package/src/animation/animation_group_player.js.map +1 -0
- package/src/animation/animation_keyframe.d.ts +6 -0
- package/src/animation/animation_keyframe.js +10 -0
- package/src/animation/animation_keyframe.js.map +1 -0
- package/src/animation/animation_player.d.ts +26 -0
- package/src/animation/animation_player.js +42 -0
- package/src/animation/animation_player.js.map +1 -0
- package/src/animation/animation_sequence_player.d.ts +21 -0
- package/src/animation/animation_sequence_player.js +69 -0
- package/src/animation/animation_sequence_player.js.map +1 -0
- package/src/animation/animation_style_util.d.ts +32 -0
- package/src/animation/animation_style_util.js +99 -0
- package/src/animation/animation_style_util.js.map +1 -0
- package/src/animation/animation_style_util.metadata.json +1 -0
- package/src/animation/animation_styles.d.ts +8 -0
- package/src/animation/animation_styles.js +9 -0
- package/src/animation/animation_styles.js.map +1 -0
- package/src/animation/metadata.d.ts +511 -0
- package/src/animation/metadata.js +627 -0
- package/src/animation/metadata.js.map +1 -0
- package/src/animation/metadata.metadata.json +1 -0
- package/src/application_common_providers.d.ts +1 -0
- package/src/application_common_providers.js +4 -3
- package/src/application_common_providers.js.map +1 -1
- package/src/application_common_providers.metadata.json +1 -1
- package/src/application_ref.d.ts +17 -41
- package/src/application_ref.js +30 -21
- package/src/application_ref.js.map +1 -1
- package/src/application_ref.metadata.json +1 -1
- package/src/application_tokens.d.ts +6 -1
- package/src/application_tokens.js +9 -4
- package/src/application_tokens.js.map +1 -1
- package/src/application_tokens.metadata.json +1 -1
- package/src/change_detection/change_detection.d.ts +9 -8
- package/src/change_detection/change_detection.js +21 -21
- package/src/change_detection/change_detection.js.map +1 -1
- package/src/change_detection/change_detection.metadata.json +1 -1
- package/src/change_detection/change_detection_util.d.ts +3 -1
- package/src/change_detection/change_detection_util.js +6 -5
- package/src/change_detection/change_detection_util.js.map +1 -1
- package/src/change_detection/change_detection_util.metadata.json +1 -1
- package/src/change_detection/change_detector_ref.d.ts +3 -0
- package/src/change_detection/change_detector_ref.js +3 -0
- package/src/change_detection/change_detector_ref.js.map +1 -1
- package/src/change_detection/constants.d.ts +1 -0
- package/src/change_detection/constants.js +4 -3
- package/src/change_detection/constants.js.map +1 -1
- package/src/change_detection/constants.metadata.json +1 -1
- package/src/change_detection/differs/default_iterable_differ.d.ts +6 -94
- package/src/change_detection/differs/default_iterable_differ.js +25 -18
- package/src/change_detection/differs/default_iterable_differ.js.map +1 -1
- package/src/change_detection/differs/default_keyvalue_differ.d.ts +3 -30
- package/src/change_detection/differs/default_keyvalue_differ.js +13 -8
- package/src/change_detection/differs/default_keyvalue_differ.js.map +1 -1
- package/src/change_detection/differs/iterable_differs.d.ts +4 -1
- package/src/change_detection/differs/iterable_differs.js +4 -3
- package/src/change_detection/differs/iterable_differs.js.map +1 -1
- package/src/change_detection/differs/keyvalue_differs.d.ts +2 -1
- package/src/change_detection/differs/keyvalue_differs.js +4 -3
- package/src/change_detection/differs/keyvalue_differs.js.map +1 -1
- package/src/change_detection/pipe_transform.js.map +1 -1
- package/src/change_detection.d.ts +1 -1
- package/src/change_detection.js +9 -9
- package/src/change_detection.js.map +1 -1
- package/src/console.js +2 -1
- package/src/console.js.map +1 -1
- package/src/console.metadata.json +1 -1
- package/src/debug/debug_node.d.ts +20 -2
- package/src/debug/debug_node.js +16 -2
- package/src/debug/debug_node.js.map +1 -1
- package/src/debug/debug_node.metadata.json +1 -0
- package/src/debug/debug_renderer.d.ts +10 -6
- package/src/debug/debug_renderer.js +12 -1
- package/src/debug/debug_renderer.js.map +1 -1
- package/src/di/decorators.d.ts +13 -1
- package/src/di/decorators.js +7 -1
- package/src/di/decorators.js.map +1 -1
- package/src/di/decorators.metadata.json +1 -1
- package/src/di/forward_ref.d.ts +3 -1
- package/src/di/forward_ref.js +3 -1
- package/src/di/forward_ref.js.map +1 -1
- package/src/di/injector.d.ts +4 -1
- package/src/di/injector.js +5 -2
- package/src/di/injector.js.map +1 -1
- package/src/di/injector.metadata.json +1 -1
- package/src/di/metadata.d.ts +8 -1
- package/src/di/metadata.js +10 -3
- package/src/di/metadata.js.map +1 -1
- package/src/di/opaque_token.d.ts +2 -1
- package/src/di/opaque_token.js +22 -21
- package/src/di/opaque_token.js.map +1 -1
- package/src/di/provider.d.ts +11 -10
- package/src/di/provider.js +17 -14
- package/src/di/provider.js.map +1 -1
- package/src/di/provider.metadata.json +1 -0
- package/src/di/provider_util.js.map +1 -1
- package/src/di/provider_util.metadata.json +1 -0
- package/src/di/reflective_exceptions.d.ts +11 -16
- package/src/di/reflective_exceptions.js +28 -22
- package/src/di/reflective_exceptions.js.map +1 -1
- package/src/di/reflective_injector.d.ts +3 -33
- package/src/di/reflective_injector.js +9 -6
- package/src/di/reflective_injector.js.map +1 -1
- package/src/di/reflective_key.d.ts +1 -8
- package/src/di/reflective_key.js +3 -2
- package/src/di/reflective_key.js.map +1 -1
- package/src/di/reflective_provider.d.ts +2 -1
- package/src/di/reflective_provider.js +6 -5
- package/src/di/reflective_provider.js.map +1 -1
- package/src/di/reflective_provider.metadata.json +1 -0
- package/src/di.d.ts +2 -2
- package/src/di.js +7 -9
- package/src/di.js.map +1 -1
- package/src/facade/async.d.ts +11 -4
- package/src/facade/async.js +27 -17
- package/src/facade/async.js.map +1 -1
- package/src/facade/base_wrapped_exception.js +4 -4
- package/src/facade/base_wrapped_exception.js.map +1 -1
- package/src/facade/collection.js.map +1 -1
- package/src/facade/collection.metadata.json +1 -1
- package/src/facade/exception_handler.d.ts +2 -11
- package/src/facade/exception_handler.js +8 -7
- package/src/facade/exception_handler.js.map +1 -1
- package/src/facade/exceptions.d.ts +4 -0
- package/src/facade/exceptions.js +6 -2
- package/src/facade/exceptions.js.map +1 -1
- package/src/facade/exceptions.metadata.json +1 -0
- package/src/facade/lang.d.ts +6 -4
- package/src/facade/lang.js +12 -11
- package/src/facade/lang.js.map +1 -1
- package/src/facade/lang.metadata.json +1 -1
- package/src/facade/math.d.ts +2 -0
- package/src/facade/math.js +5 -0
- package/src/facade/math.js.map +1 -0
- package/src/facade/math.metadata.json +1 -0
- package/src/facade/promise.js.map +1 -1
- package/src/linker/component_factory.d.ts +5 -4
- package/src/linker/component_factory.js +7 -3
- package/src/linker/component_factory.js.map +1 -1
- package/src/linker/component_resolver.d.ts +5 -4
- package/src/linker/component_resolver.js +12 -7
- package/src/linker/component_resolver.js.map +1 -1
- package/src/linker/component_resolver.metadata.json +1 -1
- package/src/linker/debug_context.js +5 -4
- package/src/linker/debug_context.js.map +1 -1
- package/src/linker/dynamic_component_loader.d.ts +5 -6
- package/src/linker/dynamic_component_loader.js +5 -3
- package/src/linker/dynamic_component_loader.js.map +1 -1
- package/src/linker/dynamic_component_loader.metadata.json +1 -1
- package/src/linker/element.d.ts +3 -3
- package/src/linker/element.js +5 -5
- package/src/linker/element.js.map +1 -1
- package/src/linker/element_injector.js.map +1 -1
- package/src/linker/element_ref.d.ts +1 -0
- package/src/linker/element_ref.js +5 -5
- package/src/linker/element_ref.js.map +1 -1
- package/src/linker/exceptions.d.ts +4 -1
- package/src/linker/exceptions.js +4 -1
- package/src/linker/exceptions.js.map +1 -1
- package/src/linker/query_list.d.ts +3 -10
- package/src/linker/query_list.js +8 -7
- package/src/linker/query_list.js.map +1 -1
- package/src/linker/systemjs_component_resolver.d.ts +21 -0
- package/src/linker/systemjs_component_resolver.js +52 -0
- package/src/linker/systemjs_component_resolver.js.map +1 -0
- package/src/linker/template_ref.d.ts +2 -1
- package/src/linker/template_ref.js +1 -0
- package/src/linker/template_ref.js.map +1 -1
- package/src/linker/view.d.ts +12 -1
- package/src/linker/view.js +65 -15
- package/src/linker/view.js.map +1 -1
- package/src/linker/view_container_ref.d.ts +2 -10
- package/src/linker/view_container_ref.js +4 -3
- package/src/linker/view_container_ref.js.map +1 -1
- package/src/linker/view_ref.d.ts +5 -1
- package/src/linker/view_ref.js +6 -2
- package/src/linker/view_ref.js.map +1 -1
- package/src/linker/view_type.js.map +1 -1
- package/src/linker/view_utils.d.ts +2 -4
- package/src/linker/view_utils.js +21 -21
- package/src/linker/view_utils.js.map +1 -1
- package/src/linker/view_utils.metadata.json +1 -1
- package/src/linker.d.ts +5 -4
- package/src/linker.js +12 -9
- package/src/linker.js.map +1 -1
- package/src/metadata/di.d.ts +8 -1
- package/src/metadata/di.js +10 -3
- package/src/metadata/di.js.map +1 -1
- package/src/metadata/directives.d.ts +104 -20
- package/src/metadata/directives.js +25 -27
- package/src/metadata/directives.js.map +1 -1
- package/src/metadata/lifecycle_hooks.d.ts +46 -31
- package/src/metadata/lifecycle_hooks.js +496 -10
- package/src/metadata/lifecycle_hooks.js.map +1 -1
- package/src/metadata/lifecycle_hooks.metadata.json +1 -1
- package/src/metadata/view.d.ts +6 -2
- package/src/metadata/view.js +3 -1
- package/src/metadata/view.js.map +1 -1
- package/src/metadata/view.metadata.json +1 -1
- package/src/metadata.d.ts +49 -15
- package/src/metadata.js +70 -37
- package/src/metadata.js.map +1 -1
- package/src/metadata.metadata.json +1 -1
- package/src/platform_common_providers.d.ts +1 -0
- package/src/platform_common_providers.js +3 -3
- package/src/platform_common_providers.js.map +1 -1
- package/src/platform_common_providers.metadata.json +1 -1
- package/src/platform_directives_and_pipes.d.ts +48 -45
- package/src/platform_directives_and_pipes.js +50 -47
- package/src/platform_directives_and_pipes.js.map +1 -1
- package/src/platform_directives_and_pipes.metadata.json +1 -1
- package/src/profile/profile.d.ts +5 -1
- package/src/profile/profile.js +5 -3
- package/src/profile/profile.js.map +1 -1
- package/src/profile/profile.metadata.json +1 -1
- package/src/profile/wtf_impl.js +1 -1
- package/src/profile/wtf_impl.js.map +1 -1
- package/src/profile/wtf_impl.metadata.json +1 -0
- package/src/profile/wtf_init.js +2 -2
- package/src/profile/wtf_init.js.map +1 -1
- package/src/reflection/platform_reflection_capabilities.d.ts +4 -3
- package/src/reflection/platform_reflection_capabilities.js.map +1 -1
- package/src/reflection/reflection.d.ts +1 -1
- package/src/reflection/reflection.js +2 -2
- package/src/reflection/reflection.js.map +1 -1
- package/src/reflection/reflection.metadata.json +1 -1
- package/src/reflection/reflection_capabilities.d.ts +4 -5
- package/src/reflection/reflection_capabilities.js +24 -10
- package/src/reflection/reflection_capabilities.js.map +1 -1
- package/src/reflection/reflector.d.ts +8 -20
- package/src/reflection/reflector.js +13 -3
- package/src/reflection/reflector.js.map +1 -1
- package/src/reflection/reflector_reader.js +3 -3
- package/src/reflection/reflector_reader.js.map +1 -1
- package/src/reflection/types.js.map +1 -1
- package/src/render/api.d.ts +17 -6
- package/src/render/api.js +8 -1
- package/src/render/api.js.map +1 -1
- package/src/render.d.ts +1 -1
- package/src/render.js +2 -2
- package/src/render.js.map +1 -1
- package/src/security.js +6 -6
- package/src/security.js.map +1 -1
- package/src/testability/testability.d.ts +3 -19
- package/src/testability/testability.js +10 -5
- package/src/testability/testability.js.map +1 -1
- package/src/testability/testability.metadata.json +1 -1
- package/src/util/decorators.d.ts +2 -1
- package/src/util/decorators.js +10 -9
- package/src/util/decorators.js.map +1 -1
- package/src/util.js.map +1 -1
- package/src/zone/ng_zone.d.ts +6 -17
- package/src/zone/ng_zone.js +11 -6
- package/src/zone/ng_zone.js.map +1 -1
- package/src/zone/ng_zone_impl.d.ts +1 -4
- package/src/zone/ng_zone_impl.js +3 -2
- package/src/zone/ng_zone_impl.js.map +1 -1
- package/src/zone.js.map +1 -1
- package/testing/async.js +20 -22
- package/testing/async.js.map +1 -1
- package/testing/async.metadata.json +1 -0
- package/testing/async_test_completer.js.map +1 -1
- package/testing/fake_async.d.ts +4 -1
- package/testing/fake_async.js +10 -2
- package/testing/fake_async.js.map +1 -1
- package/testing/lang_utils.js +1 -1
- package/testing/lang_utils.js.map +1 -1
- package/testing/lang_utils.metadata.json +1 -0
- package/testing/logger.js +5 -3
- package/testing/logger.js.map +1 -1
- package/testing/logger.metadata.json +1 -1
- package/testing/mock_application_ref.d.ts +1 -1
- package/testing/mock_application_ref.js +1 -0
- package/testing/mock_application_ref.js.map +1 -1
- package/testing/mock_application_ref.metadata.json +1 -1
- package/testing/ng_zone_mock.d.ts +0 -1
- package/testing/ng_zone_mock.js +2 -1
- package/testing/ng_zone_mock.js.map +1 -1
- package/testing/ng_zone_mock.metadata.json +1 -1
- package/testing/regexp.js +1 -1
- package/testing/regexp.js.map +1 -1
- package/testing/regexp.metadata.json +1 -0
- package/testing/test_injector.d.ts +6 -12
- package/testing/test_injector.js +3 -9
- package/testing/test_injector.js.map +1 -1
- package/testing/test_injector.metadata.json +1 -0
- package/testing/testing.d.ts +2 -2
- package/testing/testing.js +5 -5
- package/testing/testing.js.map +1 -1
- package/testing/testing.metadata.json +1 -1
- package/testing.js.map +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
var lang_1 = require('
|
|
2
|
+
var collection_1 = require('../../facade/collection');
|
|
3
|
+
var exceptions_1 = require('../../facade/exceptions');
|
|
4
|
+
var lang_1 = require('../../facade/lang');
|
|
5
5
|
/* @ts2dart_const */
|
|
6
6
|
var DefaultIterableDifferFactory = (function () {
|
|
7
7
|
function DefaultIterableDifferFactory() {
|
|
@@ -14,6 +14,9 @@ var DefaultIterableDifferFactory = (function () {
|
|
|
14
14
|
}());
|
|
15
15
|
exports.DefaultIterableDifferFactory = DefaultIterableDifferFactory;
|
|
16
16
|
var trackByIdentity = function (index, item) { return item; };
|
|
17
|
+
/**
|
|
18
|
+
* @stable
|
|
19
|
+
*/
|
|
17
20
|
var DefaultIterableDiffer = (function () {
|
|
18
21
|
function DefaultIterableDiffer(_trackByFn) {
|
|
19
22
|
this._trackByFn = _trackByFn;
|
|
@@ -129,7 +132,7 @@ var DefaultIterableDiffer = (function () {
|
|
|
129
132
|
}
|
|
130
133
|
else {
|
|
131
134
|
index = 0;
|
|
132
|
-
collection_1.iterateListLike(collection, function (item) {
|
|
135
|
+
collection_1.iterateListLike(collection, function (item /** TODO #9100 */) {
|
|
133
136
|
itemTrackBy = _this._trackByFn(index, item);
|
|
134
137
|
if (record === null || !lang_1.looseIdentical(record.trackById, itemTrackBy)) {
|
|
135
138
|
record = _this._mismatch(record, item, itemTrackBy, index);
|
|
@@ -470,25 +473,30 @@ var DefaultIterableDiffer = (function () {
|
|
|
470
473
|
};
|
|
471
474
|
DefaultIterableDiffer.prototype.toString = function () {
|
|
472
475
|
var list = [];
|
|
473
|
-
this.forEachItem(function (record) { return list.push(record); });
|
|
476
|
+
this.forEachItem(function (record /** TODO #9100 */) { return list.push(record); });
|
|
474
477
|
var previous = [];
|
|
475
|
-
this.forEachPreviousItem(function (record) { return previous.push(record); });
|
|
478
|
+
this.forEachPreviousItem(function (record /** TODO #9100 */) { return previous.push(record); });
|
|
476
479
|
var additions = [];
|
|
477
|
-
this.forEachAddedItem(function (record) { return additions.push(record); });
|
|
480
|
+
this.forEachAddedItem(function (record /** TODO #9100 */) { return additions.push(record); });
|
|
478
481
|
var moves = [];
|
|
479
|
-
this.forEachMovedItem(function (record) { return moves.push(record); });
|
|
482
|
+
this.forEachMovedItem(function (record /** TODO #9100 */) { return moves.push(record); });
|
|
480
483
|
var removals = [];
|
|
481
|
-
this.forEachRemovedItem(function (record) { return removals.push(record); });
|
|
484
|
+
this.forEachRemovedItem(function (record /** TODO #9100 */) { return removals.push(record); });
|
|
482
485
|
var identityChanges = [];
|
|
483
|
-
this.forEachIdentityChange(function (record) { return identityChanges.push(record); });
|
|
484
|
-
return
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
486
|
+
this.forEachIdentityChange(function (record /** TODO #9100 */) { return identityChanges.push(record); });
|
|
487
|
+
return 'collection: ' + list.join(', ') + '\n' +
|
|
488
|
+
'previous: ' + previous.join(', ') + '\n' +
|
|
489
|
+
'additions: ' + additions.join(', ') + '\n' +
|
|
490
|
+
'moves: ' + moves.join(', ') + '\n' +
|
|
491
|
+
'removals: ' + removals.join(', ') + '\n' +
|
|
492
|
+
'identityChanges: ' + identityChanges.join(', ') + '\n';
|
|
488
493
|
};
|
|
489
494
|
return DefaultIterableDiffer;
|
|
490
495
|
}());
|
|
491
496
|
exports.DefaultIterableDiffer = DefaultIterableDiffer;
|
|
497
|
+
/**
|
|
498
|
+
* @stable
|
|
499
|
+
*/
|
|
492
500
|
var CollectionChangeRecord = (function () {
|
|
493
501
|
function CollectionChangeRecord(item, trackById) {
|
|
494
502
|
this.item = item;
|
|
@@ -517,10 +525,9 @@ var CollectionChangeRecord = (function () {
|
|
|
517
525
|
this._nextIdentityChange = null;
|
|
518
526
|
}
|
|
519
527
|
CollectionChangeRecord.prototype.toString = function () {
|
|
520
|
-
return this.previousIndex === this.currentIndex ?
|
|
521
|
-
lang_1.stringify(this.item)
|
|
522
|
-
|
|
523
|
-
lang_1.stringify(this.currentIndex) + ']';
|
|
528
|
+
return this.previousIndex === this.currentIndex ? lang_1.stringify(this.item) :
|
|
529
|
+
lang_1.stringify(this.item) + '[' +
|
|
530
|
+
lang_1.stringify(this.previousIndex) + '->' + lang_1.stringify(this.currentIndex) + ']';
|
|
524
531
|
};
|
|
525
532
|
return CollectionChangeRecord;
|
|
526
533
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default_iterable_differ.js","sourceRoot":"","sources":["../../../../../../modules/@angular/core/src/change_detection/differs/default_iterable_differ.ts"],"names":[],"mappings":"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","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {BaseException} from '../../../src/facade/exceptions';\nimport {isListLikeIterable, iterateListLike} from '../../../src/facade/collection';\n\nimport {\n isBlank,\n isPresent,\n stringify,\n getMapKey,\n looseIdentical,\n isArray\n} from '../../../src/facade/lang';\n\nimport {ChangeDetectorRef} from '../change_detector_ref';\nimport {IterableDiffer, IterableDifferFactory, TrackByFn} from './iterable_differs';\n\n/* @ts2dart_const */\nexport class DefaultIterableDifferFactory implements IterableDifferFactory {\n constructor() {}\n supports(obj: Object): boolean { return isListLikeIterable(obj); }\n create(cdRef: ChangeDetectorRef, trackByFn?: TrackByFn): DefaultIterableDiffer {\n return new DefaultIterableDiffer(trackByFn);\n }\n}\n\nvar trackByIdentity = (index: number, item: any) => item;\n\nexport class DefaultIterableDiffer implements IterableDiffer {\n private _length: number = null;\n private _collection = null;\n // Keeps track of the used records at any point in time (during & across `_check()` calls)\n private _linkedRecords: _DuplicateMap = null;\n // Keeps track of the removed records at any point in time during `_check()` calls.\n private _unlinkedRecords: _DuplicateMap = null;\n private _previousItHead: CollectionChangeRecord = null;\n private _itHead: CollectionChangeRecord = null;\n private _itTail: CollectionChangeRecord = null;\n private _additionsHead: CollectionChangeRecord = null;\n private _additionsTail: CollectionChangeRecord = null;\n private _movesHead: CollectionChangeRecord = null;\n private _movesTail: CollectionChangeRecord = null;\n private _removalsHead: CollectionChangeRecord = null;\n private _removalsTail: CollectionChangeRecord = null;\n // Keeps track of records where custom track by is the same, but item identity has changed\n private _identityChangesHead: CollectionChangeRecord = null;\n private _identityChangesTail: CollectionChangeRecord = null;\n\n constructor(private _trackByFn?: TrackByFn) {\n this._trackByFn = isPresent(this._trackByFn) ? this._trackByFn : trackByIdentity;\n }\n\n get collection() { return this._collection; }\n\n get length(): number { return this._length; }\n\n forEachItem(fn: Function) {\n var record: CollectionChangeRecord;\n for (record = this._itHead; record !== null; record = record._next) {\n fn(record);\n }\n }\n\n forEachPreviousItem(fn: Function) {\n var record: CollectionChangeRecord;\n for (record = this._previousItHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n }\n\n forEachAddedItem(fn: Function) {\n var record: CollectionChangeRecord;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n }\n\n forEachMovedItem(fn: Function) {\n var record: CollectionChangeRecord;\n for (record = this._movesHead; record !== null; record = record._nextMoved) {\n fn(record);\n }\n }\n\n forEachRemovedItem(fn: Function) {\n var record: CollectionChangeRecord;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n }\n\n forEachIdentityChange(fn: Function) {\n var record: CollectionChangeRecord;\n for (record = this._identityChangesHead; record !== null; record = record._nextIdentityChange) {\n fn(record);\n }\n }\n\n diff(collection: any): DefaultIterableDiffer {\n if (isBlank(collection)) collection = [];\n if (!isListLikeIterable(collection)) {\n throw new BaseException(`Error trying to diff '${collection}'`);\n }\n\n if (this.check(collection)) {\n return this;\n } else {\n return null;\n }\n }\n\n onDestroy() {}\n\n // todo(vicb): optim for UnmodifiableListView (frozen arrays)\n check(collection: any): boolean {\n this._reset();\n\n var record: CollectionChangeRecord = this._itHead;\n var mayBeDirty: boolean = false;\n var index: number;\n var item;\n var itemTrackBy;\n if (isArray(collection)) {\n var list = collection;\n this._length = collection.length;\n\n for (index = 0; index < this._length; index++) {\n item = list[index];\n itemTrackBy = this._trackByFn(index, item);\n if (record === null || !looseIdentical(record.trackById, itemTrackBy)) {\n record = this._mismatch(record, item, itemTrackBy, index);\n mayBeDirty = true;\n } else {\n if (mayBeDirty) {\n // TODO(misko): can we limit this to duplicates only?\n record = this._verifyReinsertion(record, item, itemTrackBy, index);\n }\n if (!looseIdentical(record.item, item)) this._addIdentityChange(record, item);\n }\n\n record = record._next;\n }\n } else {\n index = 0;\n iterateListLike(collection, (item) => {\n itemTrackBy = this._trackByFn(index, item);\n if (record === null || !looseIdentical(record.trackById, itemTrackBy)) {\n record = this._mismatch(record, item, itemTrackBy, index);\n mayBeDirty = true;\n } else {\n if (mayBeDirty) {\n // TODO(misko): can we limit this to duplicates only?\n record = this._verifyReinsertion(record, item, itemTrackBy, index);\n }\n if (!looseIdentical(record.item, item)) this._addIdentityChange(record, item);\n }\n record = record._next;\n index++;\n });\n this._length = index;\n }\n\n this._truncate(record);\n this._collection = collection;\n return this.isDirty;\n }\n\n /* CollectionChanges is considered dirty if it has any additions, moves, removals, or identity\n * changes.\n */\n get isDirty(): boolean {\n return this._additionsHead !== null || this._movesHead !== null ||\n this._removalsHead !== null || this._identityChangesHead !== null;\n }\n\n /**\n * Reset the state of the change objects to show no changes. This means set previousKey to\n * currentKey, and clear all of the queues (additions, moves, removals).\n * Set the previousIndexes of moved and added items to their currentIndexes\n * Reset the list of additions, moves and removals\n *\n * @internal\n */\n _reset() {\n if (this.isDirty) {\n var record: CollectionChangeRecord;\n var nextRecord: CollectionChangeRecord;\n\n for (record = this._previousItHead = this._itHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n record.previousIndex = record.currentIndex;\n }\n this._additionsHead = this._additionsTail = null;\n\n for (record = this._movesHead; record !== null; record = nextRecord) {\n record.previousIndex = record.currentIndex;\n nextRecord = record._nextMoved;\n }\n this._movesHead = this._movesTail = null;\n this._removalsHead = this._removalsTail = null;\n this._identityChangesHead = this._identityChangesTail = null;\n\n // todo(vicb) when assert gets supported\n // assert(!this.isDirty);\n }\n }\n\n /**\n * This is the core function which handles differences between collections.\n *\n * - `record` is the record which we saw at this position last time. If null then it is a new\n * item.\n * - `item` is the current item in the collection\n * - `index` is the position of the item in the collection\n *\n * @internal\n */\n _mismatch(record: CollectionChangeRecord, item: any, itemTrackBy: any,\n index: number): CollectionChangeRecord {\n // The previous record after which we will append the current one.\n var previousRecord: CollectionChangeRecord;\n\n if (record === null) {\n previousRecord = this._itTail;\n } else {\n previousRecord = record._prev;\n // Remove the record from the collection since we know it does not match the item.\n this._remove(record);\n }\n\n // Attempt to see if we have seen the item before.\n record = this._linkedRecords === null ? null : this._linkedRecords.get(itemTrackBy, index);\n if (record !== null) {\n // We have seen this before, we need to move it forward in the collection.\n // But first we need to check if identity changed, so we can update in view if necessary\n if (!looseIdentical(record.item, item)) this._addIdentityChange(record, item);\n\n this._moveAfter(record, previousRecord, index);\n } else {\n // Never seen it, check evicted list.\n record = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy);\n if (record !== null) {\n // It is an item which we have evicted earlier: reinsert it back into the list.\n // But first we need to check if identity changed, so we can update in view if necessary\n if (!looseIdentical(record.item, item)) this._addIdentityChange(record, item);\n\n this._reinsertAfter(record, previousRecord, index);\n } else {\n // It is a new item: add it.\n record =\n this._addAfter(new CollectionChangeRecord(item, itemTrackBy), previousRecord, index);\n }\n }\n return record;\n }\n\n /**\n * This check is only needed if an array contains duplicates. (Short circuit of nothing dirty)\n *\n * Use case: `[a, a]` => `[b, a, a]`\n *\n * If we did not have this check then the insertion of `b` would:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) leave `a` at index `1` as is. <-- this is wrong!\n * 3) reinsert `a` at index 2. <-- this is wrong!\n *\n * The correct behavior is:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) reinsert `a` at index 1.\n * 3) move `a` at from `1` to `2`.\n *\n *\n * Double check that we have not evicted a duplicate item. We need to check if the item type may\n * have already been removed:\n * The insertion of b will evict the first 'a'. If we don't reinsert it now it will be reinserted\n * at the end. Which will show up as the two 'a's switching position. This is incorrect, since a\n * better way to think of it is as insert of 'b' rather then switch 'a' with 'b' and then add 'a'\n * at the end.\n *\n * @internal\n */\n _verifyReinsertion(record: CollectionChangeRecord, item: any, itemTrackBy: any,\n index: number): CollectionChangeRecord {\n var reinsertRecord: CollectionChangeRecord =\n this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy);\n if (reinsertRecord !== null) {\n record = this._reinsertAfter(reinsertRecord, record._prev, index);\n } else if (record.currentIndex != index) {\n record.currentIndex = index;\n this._addToMoves(record, index);\n }\n return record;\n }\n\n /**\n * Get rid of any excess {@link CollectionChangeRecord}s from the previous collection\n *\n * - `record` The first excess {@link CollectionChangeRecord}.\n *\n * @internal\n */\n _truncate(record: CollectionChangeRecord) {\n // Anything after that needs to be removed;\n while (record !== null) {\n var nextRecord: CollectionChangeRecord = record._next;\n this._addToRemovals(this._unlink(record));\n record = nextRecord;\n }\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.clear();\n }\n\n if (this._additionsTail !== null) {\n this._additionsTail._nextAdded = null;\n }\n if (this._movesTail !== null) {\n this._movesTail._nextMoved = null;\n }\n if (this._itTail !== null) {\n this._itTail._next = null;\n }\n if (this._removalsTail !== null) {\n this._removalsTail._nextRemoved = null;\n }\n if (this._identityChangesTail !== null) {\n this._identityChangesTail._nextIdentityChange = null;\n }\n }\n\n /** @internal */\n _reinsertAfter(record: CollectionChangeRecord, prevRecord: CollectionChangeRecord,\n index: number): CollectionChangeRecord {\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.remove(record);\n }\n var prev = record._prevRemoved;\n var next = record._nextRemoved;\n\n if (prev === null) {\n this._removalsHead = next;\n } else {\n prev._nextRemoved = next;\n }\n if (next === null) {\n this._removalsTail = prev;\n } else {\n next._prevRemoved = prev;\n }\n\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n }\n\n /** @internal */\n _moveAfter(record: CollectionChangeRecord, prevRecord: CollectionChangeRecord,\n index: number): CollectionChangeRecord {\n this._unlink(record);\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n }\n\n /** @internal */\n _addAfter(record: CollectionChangeRecord, prevRecord: CollectionChangeRecord,\n index: number): CollectionChangeRecord {\n this._insertAfter(record, prevRecord, index);\n\n if (this._additionsTail === null) {\n // todo(vicb)\n // assert(this._additionsHead === null);\n this._additionsTail = this._additionsHead = record;\n } else {\n // todo(vicb)\n // assert(_additionsTail._nextAdded === null);\n // assert(record._nextAdded === null);\n this._additionsTail = this._additionsTail._nextAdded = record;\n }\n return record;\n }\n\n /** @internal */\n _insertAfter(record: CollectionChangeRecord, prevRecord: CollectionChangeRecord,\n index: number): CollectionChangeRecord {\n // todo(vicb)\n // assert(record != prevRecord);\n // assert(record._next === null);\n // assert(record._prev === null);\n\n var next: CollectionChangeRecord = prevRecord === null ? this._itHead : prevRecord._next;\n // todo(vicb)\n // assert(next != record);\n // assert(prevRecord != record);\n record._next = next;\n record._prev = prevRecord;\n if (next === null) {\n this._itTail = record;\n } else {\n next._prev = record;\n }\n if (prevRecord === null) {\n this._itHead = record;\n } else {\n prevRecord._next = record;\n }\n\n if (this._linkedRecords === null) {\n this._linkedRecords = new _DuplicateMap();\n }\n this._linkedRecords.put(record);\n\n record.currentIndex = index;\n return record;\n }\n\n /** @internal */\n _remove(record: CollectionChangeRecord): CollectionChangeRecord {\n return this._addToRemovals(this._unlink(record));\n }\n\n /** @internal */\n _unlink(record: CollectionChangeRecord): CollectionChangeRecord {\n if (this._linkedRecords !== null) {\n this._linkedRecords.remove(record);\n }\n\n var prev = record._prev;\n var next = record._next;\n\n // todo(vicb)\n // assert((record._prev = null) === null);\n // assert((record._next = null) === null);\n\n if (prev === null) {\n this._itHead = next;\n } else {\n prev._next = next;\n }\n if (next === null) {\n this._itTail = prev;\n } else {\n next._prev = prev;\n }\n\n return record;\n }\n\n /** @internal */\n _addToMoves(record: CollectionChangeRecord, toIndex: number): CollectionChangeRecord {\n // todo(vicb)\n // assert(record._nextMoved === null);\n\n if (record.previousIndex === toIndex) {\n return record;\n }\n\n if (this._movesTail === null) {\n // todo(vicb)\n // assert(_movesHead === null);\n this._movesTail = this._movesHead = record;\n } else {\n // todo(vicb)\n // assert(_movesTail._nextMoved === null);\n this._movesTail = this._movesTail._nextMoved = record;\n }\n\n return record;\n }\n\n /** @internal */\n _addToRemovals(record: CollectionChangeRecord): CollectionChangeRecord {\n if (this._unlinkedRecords === null) {\n this._unlinkedRecords = new _DuplicateMap();\n }\n this._unlinkedRecords.put(record);\n record.currentIndex = null;\n record._nextRemoved = null;\n\n if (this._removalsTail === null) {\n // todo(vicb)\n // assert(_removalsHead === null);\n this._removalsTail = this._removalsHead = record;\n record._prevRemoved = null;\n } else {\n // todo(vicb)\n // assert(_removalsTail._nextRemoved === null);\n // assert(record._nextRemoved === null);\n record._prevRemoved = this._removalsTail;\n this._removalsTail = this._removalsTail._nextRemoved = record;\n }\n return record;\n }\n\n /** @internal */\n _addIdentityChange(record: CollectionChangeRecord, item: any) {\n record.item = item;\n if (this._identityChangesTail === null) {\n this._identityChangesTail = this._identityChangesHead = record;\n } else {\n this._identityChangesTail = this._identityChangesTail._nextIdentityChange = record;\n }\n return record;\n }\n\n\n toString(): string {\n var list = [];\n this.forEachItem((record) => list.push(record));\n\n var previous = [];\n this.forEachPreviousItem((record) => previous.push(record));\n\n var additions = [];\n this.forEachAddedItem((record) => additions.push(record));\n\n var moves = [];\n this.forEachMovedItem((record) => moves.push(record));\n\n var removals = [];\n this.forEachRemovedItem((record) => removals.push(record));\n\n var identityChanges = [];\n this.forEachIdentityChange((record) => identityChanges.push(record));\n\n return \"collection: \" + list.join(', ') + \"\\n\" + \"previous: \" + previous.join(', ') + \"\\n\" +\n \"additions: \" + additions.join(', ') + \"\\n\" + \"moves: \" + moves.join(', ') + \"\\n\" +\n \"removals: \" + removals.join(', ') + \"\\n\" + \"identityChanges: \" +\n identityChanges.join(', ') + \"\\n\";\n }\n}\n\nexport class CollectionChangeRecord {\n currentIndex: number = null;\n previousIndex: number = null;\n\n /** @internal */\n _nextPrevious: CollectionChangeRecord = null;\n /** @internal */\n _prev: CollectionChangeRecord = null;\n /** @internal */\n _next: CollectionChangeRecord = null;\n /** @internal */\n _prevDup: CollectionChangeRecord = null;\n /** @internal */\n _nextDup: CollectionChangeRecord = null;\n /** @internal */\n _prevRemoved: CollectionChangeRecord = null;\n /** @internal */\n _nextRemoved: CollectionChangeRecord = null;\n /** @internal */\n _nextAdded: CollectionChangeRecord = null;\n /** @internal */\n _nextMoved: CollectionChangeRecord = null;\n /** @internal */\n _nextIdentityChange: CollectionChangeRecord = null;\n\n\n constructor(public item: any, public trackById: any) {}\n\n toString(): string {\n return this.previousIndex === this.currentIndex ?\n stringify(this.item) :\n stringify(this.item) + '[' + stringify(this.previousIndex) + '->' +\n stringify(this.currentIndex) + ']';\n }\n}\n\n// A linked list of CollectionChangeRecords with the same CollectionChangeRecord.item\nclass _DuplicateItemRecordList {\n /** @internal */\n _head: CollectionChangeRecord = null;\n /** @internal */\n _tail: CollectionChangeRecord = null;\n\n /**\n * Append the record to the list of duplicates.\n *\n * Note: by design all records in the list of duplicates hold the same value in record.item.\n */\n add(record: CollectionChangeRecord): void {\n if (this._head === null) {\n this._head = this._tail = record;\n record._nextDup = null;\n record._prevDup = null;\n } else {\n // todo(vicb)\n // assert(record.item == _head.item ||\n // record.item is num && record.item.isNaN && _head.item is num && _head.item.isNaN);\n this._tail._nextDup = record;\n record._prevDup = this._tail;\n record._nextDup = null;\n this._tail = record;\n }\n }\n\n // Returns a CollectionChangeRecord having CollectionChangeRecord.trackById == trackById and\n // CollectionChangeRecord.currentIndex >= afterIndex\n get(trackById: any, afterIndex: number): CollectionChangeRecord {\n var record: CollectionChangeRecord;\n for (record = this._head; record !== null; record = record._nextDup) {\n if ((afterIndex === null || afterIndex < record.currentIndex) &&\n looseIdentical(record.trackById, trackById)) {\n return record;\n }\n }\n return null;\n }\n\n /**\n * Remove one {@link CollectionChangeRecord} from the list of duplicates.\n *\n * Returns whether the list of duplicates is empty.\n */\n remove(record: CollectionChangeRecord): boolean {\n // todo(vicb)\n // assert(() {\n // // verify that the record being removed is in the list.\n // for (CollectionChangeRecord cursor = _head; cursor != null; cursor = cursor._nextDup) {\n // if (identical(cursor, record)) return true;\n // }\n // return false;\n //});\n\n var prev: CollectionChangeRecord = record._prevDup;\n var next: CollectionChangeRecord = record._nextDup;\n if (prev === null) {\n this._head = next;\n } else {\n prev._nextDup = next;\n }\n if (next === null) {\n this._tail = prev;\n } else {\n next._prevDup = prev;\n }\n return this._head === null;\n }\n}\n\nclass _DuplicateMap {\n map = new Map<any, _DuplicateItemRecordList>();\n\n put(record: CollectionChangeRecord) {\n // todo(vicb) handle corner cases\n var key = getMapKey(record.trackById);\n\n var duplicates = this.map.get(key);\n if (!isPresent(duplicates)) {\n duplicates = new _DuplicateItemRecordList();\n this.map.set(key, duplicates);\n }\n duplicates.add(record);\n }\n\n /**\n * Retrieve the `value` using key. Because the CollectionChangeRecord value may be one which we\n * have already iterated over, we use the afterIndex to pretend it is not there.\n *\n * Use case: `[a, b, c, a, a]` if we are at index `3` which is the second `a` then asking if we\n * have any more `a`s needs to return the last `a` not the first or second.\n */\n get(trackById: any, afterIndex: number = null): CollectionChangeRecord {\n var key = getMapKey(trackById);\n\n var recordList = this.map.get(key);\n return isBlank(recordList) ? null : recordList.get(trackById, afterIndex);\n }\n\n /**\n * Removes a {@link CollectionChangeRecord} from the list of duplicates.\n *\n * The list of duplicates also is removed from the map if it gets empty.\n */\n remove(record: CollectionChangeRecord): CollectionChangeRecord {\n var key = getMapKey(record.trackById);\n // todo(vicb)\n // assert(this.map.containsKey(key));\n var recordList: _DuplicateItemRecordList = this.map.get(key);\n // Remove the list of duplicates when it gets empty\n if (recordList.remove(record)) {\n this.map.delete(key);\n }\n return record;\n }\n\n get isEmpty(): boolean { return this.map.size === 0; }\n\n clear() { this.map.clear(); }\n\n toString(): string { return '_DuplicateMap(' + stringify(this.map) + ')'; }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"default_iterable_differ.js","sourceRoot":"","sources":["../../../../../../modules/@angular/core/src/change_detection/differs/default_iterable_differ.ts"],"names":[],"mappings":"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","sourcesContent":["import {isListLikeIterable, iterateListLike} from '../../facade/collection';\nimport {BaseException} from '../../facade/exceptions';\nimport {getMapKey, isArray, isBlank, isPresent, looseIdentical, stringify} from '../../facade/lang';\nimport {ChangeDetectorRef} from '../change_detector_ref';\n\nimport {IterableDiffer, IterableDifferFactory, TrackByFn} from './iterable_differs';\n\n\n/* @ts2dart_const */\nexport class DefaultIterableDifferFactory implements IterableDifferFactory {\n constructor() {}\n supports(obj: Object): boolean { return isListLikeIterable(obj); }\n create(cdRef: ChangeDetectorRef, trackByFn?: TrackByFn): DefaultIterableDiffer {\n return new DefaultIterableDiffer(trackByFn);\n }\n}\n\nvar trackByIdentity = (index: number, item: any) => item;\n\n/**\n * @stable\n */\nexport class DefaultIterableDiffer implements IterableDiffer {\n private _length: number = null;\n private _collection: any /** TODO #9100 */ = null;\n // Keeps track of the used records at any point in time (during & across `_check()` calls)\n private _linkedRecords: _DuplicateMap = null;\n // Keeps track of the removed records at any point in time during `_check()` calls.\n private _unlinkedRecords: _DuplicateMap = null;\n private _previousItHead: CollectionChangeRecord = null;\n private _itHead: CollectionChangeRecord = null;\n private _itTail: CollectionChangeRecord = null;\n private _additionsHead: CollectionChangeRecord = null;\n private _additionsTail: CollectionChangeRecord = null;\n private _movesHead: CollectionChangeRecord = null;\n private _movesTail: CollectionChangeRecord = null;\n private _removalsHead: CollectionChangeRecord = null;\n private _removalsTail: CollectionChangeRecord = null;\n // Keeps track of records where custom track by is the same, but item identity has changed\n private _identityChangesHead: CollectionChangeRecord = null;\n private _identityChangesTail: CollectionChangeRecord = null;\n\n constructor(private _trackByFn?: TrackByFn) {\n this._trackByFn = isPresent(this._trackByFn) ? this._trackByFn : trackByIdentity;\n }\n\n get collection() { return this._collection; }\n\n get length(): number { return this._length; }\n\n forEachItem(fn: Function) {\n var record: CollectionChangeRecord;\n for (record = this._itHead; record !== null; record = record._next) {\n fn(record);\n }\n }\n\n forEachPreviousItem(fn: Function) {\n var record: CollectionChangeRecord;\n for (record = this._previousItHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n }\n\n forEachAddedItem(fn: Function) {\n var record: CollectionChangeRecord;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n }\n\n forEachMovedItem(fn: Function) {\n var record: CollectionChangeRecord;\n for (record = this._movesHead; record !== null; record = record._nextMoved) {\n fn(record);\n }\n }\n\n forEachRemovedItem(fn: Function) {\n var record: CollectionChangeRecord;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n }\n\n forEachIdentityChange(fn: Function) {\n var record: CollectionChangeRecord;\n for (record = this._identityChangesHead; record !== null; record = record._nextIdentityChange) {\n fn(record);\n }\n }\n\n diff(collection: any): DefaultIterableDiffer {\n if (isBlank(collection)) collection = [];\n if (!isListLikeIterable(collection)) {\n throw new BaseException(`Error trying to diff '${collection}'`);\n }\n\n if (this.check(collection)) {\n return this;\n } else {\n return null;\n }\n }\n\n onDestroy() {}\n\n // todo(vicb): optim for UnmodifiableListView (frozen arrays)\n check(collection: any): boolean {\n this._reset();\n\n var record: CollectionChangeRecord = this._itHead;\n var mayBeDirty: boolean = false;\n var index: number;\n var item: any /** TODO #9100 */;\n var itemTrackBy: any /** TODO #9100 */;\n if (isArray(collection)) {\n var list = collection;\n this._length = collection.length;\n\n for (index = 0; index < this._length; index++) {\n item = list[index];\n itemTrackBy = this._trackByFn(index, item);\n if (record === null || !looseIdentical(record.trackById, itemTrackBy)) {\n record = this._mismatch(record, item, itemTrackBy, index);\n mayBeDirty = true;\n } else {\n if (mayBeDirty) {\n // TODO(misko): can we limit this to duplicates only?\n record = this._verifyReinsertion(record, item, itemTrackBy, index);\n }\n if (!looseIdentical(record.item, item)) this._addIdentityChange(record, item);\n }\n\n record = record._next;\n }\n } else {\n index = 0;\n iterateListLike(collection, (item: any /** TODO #9100 */) => {\n itemTrackBy = this._trackByFn(index, item);\n if (record === null || !looseIdentical(record.trackById, itemTrackBy)) {\n record = this._mismatch(record, item, itemTrackBy, index);\n mayBeDirty = true;\n } else {\n if (mayBeDirty) {\n // TODO(misko): can we limit this to duplicates only?\n record = this._verifyReinsertion(record, item, itemTrackBy, index);\n }\n if (!looseIdentical(record.item, item)) this._addIdentityChange(record, item);\n }\n record = record._next;\n index++;\n });\n this._length = index;\n }\n\n this._truncate(record);\n this._collection = collection;\n return this.isDirty;\n }\n\n /* CollectionChanges is considered dirty if it has any additions, moves, removals, or identity\n * changes.\n */\n get isDirty(): boolean {\n return this._additionsHead !== null || this._movesHead !== null ||\n this._removalsHead !== null || this._identityChangesHead !== null;\n }\n\n /**\n * Reset the state of the change objects to show no changes. This means set previousKey to\n * currentKey, and clear all of the queues (additions, moves, removals).\n * Set the previousIndexes of moved and added items to their currentIndexes\n * Reset the list of additions, moves and removals\n *\n * @internal\n */\n _reset() {\n if (this.isDirty) {\n var record: CollectionChangeRecord;\n var nextRecord: CollectionChangeRecord;\n\n for (record = this._previousItHead = this._itHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n record.previousIndex = record.currentIndex;\n }\n this._additionsHead = this._additionsTail = null;\n\n for (record = this._movesHead; record !== null; record = nextRecord) {\n record.previousIndex = record.currentIndex;\n nextRecord = record._nextMoved;\n }\n this._movesHead = this._movesTail = null;\n this._removalsHead = this._removalsTail = null;\n this._identityChangesHead = this._identityChangesTail = null;\n\n // todo(vicb) when assert gets supported\n // assert(!this.isDirty);\n }\n }\n\n /**\n * This is the core function which handles differences between collections.\n *\n * - `record` is the record which we saw at this position last time. If null then it is a new\n * item.\n * - `item` is the current item in the collection\n * - `index` is the position of the item in the collection\n *\n * @internal\n */\n _mismatch(record: CollectionChangeRecord, item: any, itemTrackBy: any, index: number):\n CollectionChangeRecord {\n // The previous record after which we will append the current one.\n var previousRecord: CollectionChangeRecord;\n\n if (record === null) {\n previousRecord = this._itTail;\n } else {\n previousRecord = record._prev;\n // Remove the record from the collection since we know it does not match the item.\n this._remove(record);\n }\n\n // Attempt to see if we have seen the item before.\n record = this._linkedRecords === null ? null : this._linkedRecords.get(itemTrackBy, index);\n if (record !== null) {\n // We have seen this before, we need to move it forward in the collection.\n // But first we need to check if identity changed, so we can update in view if necessary\n if (!looseIdentical(record.item, item)) this._addIdentityChange(record, item);\n\n this._moveAfter(record, previousRecord, index);\n } else {\n // Never seen it, check evicted list.\n record = this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy);\n if (record !== null) {\n // It is an item which we have evicted earlier: reinsert it back into the list.\n // But first we need to check if identity changed, so we can update in view if necessary\n if (!looseIdentical(record.item, item)) this._addIdentityChange(record, item);\n\n this._reinsertAfter(record, previousRecord, index);\n } else {\n // It is a new item: add it.\n record =\n this._addAfter(new CollectionChangeRecord(item, itemTrackBy), previousRecord, index);\n }\n }\n return record;\n }\n\n /**\n * This check is only needed if an array contains duplicates. (Short circuit of nothing dirty)\n *\n * Use case: `[a, a]` => `[b, a, a]`\n *\n * If we did not have this check then the insertion of `b` would:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) leave `a` at index `1` as is. <-- this is wrong!\n * 3) reinsert `a` at index 2. <-- this is wrong!\n *\n * The correct behavior is:\n * 1) evict first `a`\n * 2) insert `b` at `0` index.\n * 3) reinsert `a` at index 1.\n * 3) move `a` at from `1` to `2`.\n *\n *\n * Double check that we have not evicted a duplicate item. We need to check if the item type may\n * have already been removed:\n * The insertion of b will evict the first 'a'. If we don't reinsert it now it will be reinserted\n * at the end. Which will show up as the two 'a's switching position. This is incorrect, since a\n * better way to think of it is as insert of 'b' rather then switch 'a' with 'b' and then add 'a'\n * at the end.\n *\n * @internal\n */\n _verifyReinsertion(record: CollectionChangeRecord, item: any, itemTrackBy: any, index: number):\n CollectionChangeRecord {\n var reinsertRecord: CollectionChangeRecord =\n this._unlinkedRecords === null ? null : this._unlinkedRecords.get(itemTrackBy);\n if (reinsertRecord !== null) {\n record = this._reinsertAfter(reinsertRecord, record._prev, index);\n } else if (record.currentIndex != index) {\n record.currentIndex = index;\n this._addToMoves(record, index);\n }\n return record;\n }\n\n /**\n * Get rid of any excess {@link CollectionChangeRecord}s from the previous collection\n *\n * - `record` The first excess {@link CollectionChangeRecord}.\n *\n * @internal\n */\n _truncate(record: CollectionChangeRecord) {\n // Anything after that needs to be removed;\n while (record !== null) {\n var nextRecord: CollectionChangeRecord = record._next;\n this._addToRemovals(this._unlink(record));\n record = nextRecord;\n }\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.clear();\n }\n\n if (this._additionsTail !== null) {\n this._additionsTail._nextAdded = null;\n }\n if (this._movesTail !== null) {\n this._movesTail._nextMoved = null;\n }\n if (this._itTail !== null) {\n this._itTail._next = null;\n }\n if (this._removalsTail !== null) {\n this._removalsTail._nextRemoved = null;\n }\n if (this._identityChangesTail !== null) {\n this._identityChangesTail._nextIdentityChange = null;\n }\n }\n\n /** @internal */\n _reinsertAfter(record: CollectionChangeRecord, prevRecord: CollectionChangeRecord, index: number):\n CollectionChangeRecord {\n if (this._unlinkedRecords !== null) {\n this._unlinkedRecords.remove(record);\n }\n var prev = record._prevRemoved;\n var next = record._nextRemoved;\n\n if (prev === null) {\n this._removalsHead = next;\n } else {\n prev._nextRemoved = next;\n }\n if (next === null) {\n this._removalsTail = prev;\n } else {\n next._prevRemoved = prev;\n }\n\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n }\n\n /** @internal */\n _moveAfter(record: CollectionChangeRecord, prevRecord: CollectionChangeRecord, index: number):\n CollectionChangeRecord {\n this._unlink(record);\n this._insertAfter(record, prevRecord, index);\n this._addToMoves(record, index);\n return record;\n }\n\n /** @internal */\n _addAfter(record: CollectionChangeRecord, prevRecord: CollectionChangeRecord, index: number):\n CollectionChangeRecord {\n this._insertAfter(record, prevRecord, index);\n\n if (this._additionsTail === null) {\n // todo(vicb)\n // assert(this._additionsHead === null);\n this._additionsTail = this._additionsHead = record;\n } else {\n // todo(vicb)\n // assert(_additionsTail._nextAdded === null);\n // assert(record._nextAdded === null);\n this._additionsTail = this._additionsTail._nextAdded = record;\n }\n return record;\n }\n\n /** @internal */\n _insertAfter(record: CollectionChangeRecord, prevRecord: CollectionChangeRecord, index: number):\n CollectionChangeRecord {\n // todo(vicb)\n // assert(record != prevRecord);\n // assert(record._next === null);\n // assert(record._prev === null);\n\n var next: CollectionChangeRecord = prevRecord === null ? this._itHead : prevRecord._next;\n // todo(vicb)\n // assert(next != record);\n // assert(prevRecord != record);\n record._next = next;\n record._prev = prevRecord;\n if (next === null) {\n this._itTail = record;\n } else {\n next._prev = record;\n }\n if (prevRecord === null) {\n this._itHead = record;\n } else {\n prevRecord._next = record;\n }\n\n if (this._linkedRecords === null) {\n this._linkedRecords = new _DuplicateMap();\n }\n this._linkedRecords.put(record);\n\n record.currentIndex = index;\n return record;\n }\n\n /** @internal */\n _remove(record: CollectionChangeRecord): CollectionChangeRecord {\n return this._addToRemovals(this._unlink(record));\n }\n\n /** @internal */\n _unlink(record: CollectionChangeRecord): CollectionChangeRecord {\n if (this._linkedRecords !== null) {\n this._linkedRecords.remove(record);\n }\n\n var prev = record._prev;\n var next = record._next;\n\n // todo(vicb)\n // assert((record._prev = null) === null);\n // assert((record._next = null) === null);\n\n if (prev === null) {\n this._itHead = next;\n } else {\n prev._next = next;\n }\n if (next === null) {\n this._itTail = prev;\n } else {\n next._prev = prev;\n }\n\n return record;\n }\n\n /** @internal */\n _addToMoves(record: CollectionChangeRecord, toIndex: number): CollectionChangeRecord {\n // todo(vicb)\n // assert(record._nextMoved === null);\n\n if (record.previousIndex === toIndex) {\n return record;\n }\n\n if (this._movesTail === null) {\n // todo(vicb)\n // assert(_movesHead === null);\n this._movesTail = this._movesHead = record;\n } else {\n // todo(vicb)\n // assert(_movesTail._nextMoved === null);\n this._movesTail = this._movesTail._nextMoved = record;\n }\n\n return record;\n }\n\n /** @internal */\n _addToRemovals(record: CollectionChangeRecord): CollectionChangeRecord {\n if (this._unlinkedRecords === null) {\n this._unlinkedRecords = new _DuplicateMap();\n }\n this._unlinkedRecords.put(record);\n record.currentIndex = null;\n record._nextRemoved = null;\n\n if (this._removalsTail === null) {\n // todo(vicb)\n // assert(_removalsHead === null);\n this._removalsTail = this._removalsHead = record;\n record._prevRemoved = null;\n } else {\n // todo(vicb)\n // assert(_removalsTail._nextRemoved === null);\n // assert(record._nextRemoved === null);\n record._prevRemoved = this._removalsTail;\n this._removalsTail = this._removalsTail._nextRemoved = record;\n }\n return record;\n }\n\n /** @internal */\n _addIdentityChange(record: CollectionChangeRecord, item: any) {\n record.item = item;\n if (this._identityChangesTail === null) {\n this._identityChangesTail = this._identityChangesHead = record;\n } else {\n this._identityChangesTail = this._identityChangesTail._nextIdentityChange = record;\n }\n return record;\n }\n\n\n toString(): string {\n var list: any[] /** TODO #9100 */ = [];\n this.forEachItem((record: any /** TODO #9100 */) => list.push(record));\n\n var previous: any[] /** TODO #9100 */ = [];\n this.forEachPreviousItem((record: any /** TODO #9100 */) => previous.push(record));\n\n var additions: any[] /** TODO #9100 */ = [];\n this.forEachAddedItem((record: any /** TODO #9100 */) => additions.push(record));\n\n var moves: any[] /** TODO #9100 */ = [];\n this.forEachMovedItem((record: any /** TODO #9100 */) => moves.push(record));\n\n var removals: any[] /** TODO #9100 */ = [];\n this.forEachRemovedItem((record: any /** TODO #9100 */) => removals.push(record));\n\n var identityChanges: any[] /** TODO #9100 */ = [];\n this.forEachIdentityChange((record: any /** TODO #9100 */) => identityChanges.push(record));\n\n return 'collection: ' + list.join(', ') + '\\n' +\n 'previous: ' + previous.join(', ') + '\\n' +\n 'additions: ' + additions.join(', ') + '\\n' +\n 'moves: ' + moves.join(', ') + '\\n' +\n 'removals: ' + removals.join(', ') + '\\n' +\n 'identityChanges: ' + identityChanges.join(', ') + '\\n';\n }\n}\n\n/**\n * @stable\n */\nexport class CollectionChangeRecord {\n currentIndex: number = null;\n previousIndex: number = null;\n\n /** @internal */\n _nextPrevious: CollectionChangeRecord = null;\n /** @internal */\n _prev: CollectionChangeRecord = null;\n /** @internal */\n _next: CollectionChangeRecord = null;\n /** @internal */\n _prevDup: CollectionChangeRecord = null;\n /** @internal */\n _nextDup: CollectionChangeRecord = null;\n /** @internal */\n _prevRemoved: CollectionChangeRecord = null;\n /** @internal */\n _nextRemoved: CollectionChangeRecord = null;\n /** @internal */\n _nextAdded: CollectionChangeRecord = null;\n /** @internal */\n _nextMoved: CollectionChangeRecord = null;\n /** @internal */\n _nextIdentityChange: CollectionChangeRecord = null;\n\n\n constructor(public item: any, public trackById: any) {}\n\n toString(): string {\n return this.previousIndex === this.currentIndex ? stringify(this.item) :\n stringify(this.item) + '[' +\n stringify(this.previousIndex) + '->' + stringify(this.currentIndex) + ']';\n }\n}\n\n// A linked list of CollectionChangeRecords with the same CollectionChangeRecord.item\nclass _DuplicateItemRecordList {\n /** @internal */\n _head: CollectionChangeRecord = null;\n /** @internal */\n _tail: CollectionChangeRecord = null;\n\n /**\n * Append the record to the list of duplicates.\n *\n * Note: by design all records in the list of duplicates hold the same value in record.item.\n */\n add(record: CollectionChangeRecord): void {\n if (this._head === null) {\n this._head = this._tail = record;\n record._nextDup = null;\n record._prevDup = null;\n } else {\n // todo(vicb)\n // assert(record.item == _head.item ||\n // record.item is num && record.item.isNaN && _head.item is num && _head.item.isNaN);\n this._tail._nextDup = record;\n record._prevDup = this._tail;\n record._nextDup = null;\n this._tail = record;\n }\n }\n\n // Returns a CollectionChangeRecord having CollectionChangeRecord.trackById == trackById and\n // CollectionChangeRecord.currentIndex >= afterIndex\n get(trackById: any, afterIndex: number): CollectionChangeRecord {\n var record: CollectionChangeRecord;\n for (record = this._head; record !== null; record = record._nextDup) {\n if ((afterIndex === null || afterIndex < record.currentIndex) &&\n looseIdentical(record.trackById, trackById)) {\n return record;\n }\n }\n return null;\n }\n\n /**\n * Remove one {@link CollectionChangeRecord} from the list of duplicates.\n *\n * Returns whether the list of duplicates is empty.\n */\n remove(record: CollectionChangeRecord): boolean {\n // todo(vicb)\n // assert(() {\n // // verify that the record being removed is in the list.\n // for (CollectionChangeRecord cursor = _head; cursor != null; cursor = cursor._nextDup) {\n // if (identical(cursor, record)) return true;\n // }\n // return false;\n //});\n\n var prev: CollectionChangeRecord = record._prevDup;\n var next: CollectionChangeRecord = record._nextDup;\n if (prev === null) {\n this._head = next;\n } else {\n prev._nextDup = next;\n }\n if (next === null) {\n this._tail = prev;\n } else {\n next._prevDup = prev;\n }\n return this._head === null;\n }\n}\n\nclass _DuplicateMap {\n map = new Map<any, _DuplicateItemRecordList>();\n\n put(record: CollectionChangeRecord) {\n // todo(vicb) handle corner cases\n var key = getMapKey(record.trackById);\n\n var duplicates = this.map.get(key);\n if (!isPresent(duplicates)) {\n duplicates = new _DuplicateItemRecordList();\n this.map.set(key, duplicates);\n }\n duplicates.add(record);\n }\n\n /**\n * Retrieve the `value` using key. Because the CollectionChangeRecord value may be one which we\n * have already iterated over, we use the afterIndex to pretend it is not there.\n *\n * Use case: `[a, b, c, a, a]` if we are at index `3` which is the second `a` then asking if we\n * have any more `a`s needs to return the last `a` not the first or second.\n */\n get(trackById: any, afterIndex: number = null): CollectionChangeRecord {\n var key = getMapKey(trackById);\n\n var recordList = this.map.get(key);\n return isBlank(recordList) ? null : recordList.get(trackById, afterIndex);\n }\n\n /**\n * Removes a {@link CollectionChangeRecord} from the list of duplicates.\n *\n * The list of duplicates also is removed from the map if it gets empty.\n */\n remove(record: CollectionChangeRecord): CollectionChangeRecord {\n var key = getMapKey(record.trackById);\n // todo(vicb)\n // assert(this.map.containsKey(key));\n var recordList: _DuplicateItemRecordList = this.map.get(key);\n // Remove the list of duplicates when it gets empty\n if (recordList.remove(record)) {\n this.map.delete(key);\n }\n return record;\n }\n\n get isEmpty(): boolean { return this.map.size === 0; }\n\n clear() { this.map.clear(); }\n\n toString(): string { return '_DuplicateMap(' + stringify(this.map) + ')'; }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
|
@@ -24,42 +24,15 @@ export declare class DefaultKeyValueDiffer implements KeyValueDiffer {
|
|
|
24
24
|
diff(map: Map<any, any>): any;
|
|
25
25
|
onDestroy(): void;
|
|
26
26
|
check(map: Map<any, any>): boolean;
|
|
27
|
-
/** @internal */
|
|
28
|
-
_reset(): void;
|
|
29
|
-
/** @internal */
|
|
30
|
-
_truncate(lastRecord: KeyValueChangeRecord, record: KeyValueChangeRecord): void;
|
|
31
|
-
/** @internal */
|
|
32
|
-
_isInRemovals(record: KeyValueChangeRecord): boolean;
|
|
33
|
-
/** @internal */
|
|
34
|
-
_addToRemovals(record: KeyValueChangeRecord): void;
|
|
35
|
-
/** @internal */
|
|
36
|
-
_removeFromSeq(prev: KeyValueChangeRecord, record: KeyValueChangeRecord): void;
|
|
37
|
-
/** @internal */
|
|
38
|
-
_removeFromRemovals(record: KeyValueChangeRecord): void;
|
|
39
|
-
/** @internal */
|
|
40
|
-
_addToAdditions(record: KeyValueChangeRecord): void;
|
|
41
|
-
/** @internal */
|
|
42
|
-
_addToChanges(record: KeyValueChangeRecord): void;
|
|
43
27
|
toString(): string;
|
|
44
|
-
/** @internal */
|
|
45
|
-
_forEach(obj: any, fn: Function): void;
|
|
46
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* @stable
|
|
31
|
+
*/
|
|
47
32
|
export declare class KeyValueChangeRecord {
|
|
48
33
|
key: any;
|
|
49
34
|
previousValue: any;
|
|
50
35
|
currentValue: any;
|
|
51
|
-
/** @internal */
|
|
52
|
-
_nextPrevious: KeyValueChangeRecord;
|
|
53
|
-
/** @internal */
|
|
54
|
-
_next: KeyValueChangeRecord;
|
|
55
|
-
/** @internal */
|
|
56
|
-
_nextAdded: KeyValueChangeRecord;
|
|
57
|
-
/** @internal */
|
|
58
|
-
_nextRemoved: KeyValueChangeRecord;
|
|
59
|
-
/** @internal */
|
|
60
|
-
_prevRemoved: KeyValueChangeRecord;
|
|
61
|
-
/** @internal */
|
|
62
|
-
_nextChanged: KeyValueChangeRecord;
|
|
63
36
|
constructor(key: any);
|
|
64
37
|
toString(): string;
|
|
65
38
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var collection_1 = require('
|
|
3
|
-
var
|
|
4
|
-
var
|
|
2
|
+
var collection_1 = require('../../facade/collection');
|
|
3
|
+
var exceptions_1 = require('../../facade/exceptions');
|
|
4
|
+
var lang_1 = require('../../facade/lang');
|
|
5
5
|
/* @ts2dart_const */
|
|
6
6
|
var DefaultKeyValueDifferFactory = (function () {
|
|
7
7
|
function DefaultKeyValueDifferFactory() {
|
|
@@ -83,7 +83,7 @@ var DefaultKeyValueDiffer = (function () {
|
|
|
83
83
|
var lastOldSeqRecord = null;
|
|
84
84
|
var lastNewSeqRecord = null;
|
|
85
85
|
var seqChanged = false;
|
|
86
|
-
this._forEach(map, function (value
|
|
86
|
+
this._forEach(map, function (value /** TODO #9100 */, key /** TODO #9100 */) {
|
|
87
87
|
var newSeqRecord;
|
|
88
88
|
if (oldSeqRecord !== null && key === oldSeqRecord.key) {
|
|
89
89
|
newSeqRecord = oldSeqRecord;
|
|
@@ -309,12 +309,14 @@ var DefaultKeyValueDiffer = (function () {
|
|
|
309
309
|
for (record = this._removalsHead; record !== null; record = record._nextRemoved) {
|
|
310
310
|
removals.push(lang_1.stringify(record));
|
|
311
311
|
}
|
|
312
|
-
return
|
|
313
|
-
|
|
314
|
-
|
|
312
|
+
return 'map: ' + items.join(', ') + '\n' +
|
|
313
|
+
'previous: ' + previous.join(', ') + '\n' +
|
|
314
|
+
'additions: ' + additions.join(', ') + '\n' +
|
|
315
|
+
'changes: ' + changes.join(', ') + '\n' +
|
|
316
|
+
'removals: ' + removals.join(', ') + '\n';
|
|
315
317
|
};
|
|
316
318
|
/** @internal */
|
|
317
|
-
DefaultKeyValueDiffer.prototype._forEach = function (obj
|
|
319
|
+
DefaultKeyValueDiffer.prototype._forEach = function (obj /** TODO #9100 */, fn) {
|
|
318
320
|
if (obj instanceof Map) {
|
|
319
321
|
obj.forEach(fn);
|
|
320
322
|
}
|
|
@@ -325,6 +327,9 @@ var DefaultKeyValueDiffer = (function () {
|
|
|
325
327
|
return DefaultKeyValueDiffer;
|
|
326
328
|
}());
|
|
327
329
|
exports.DefaultKeyValueDiffer = DefaultKeyValueDiffer;
|
|
330
|
+
/**
|
|
331
|
+
* @stable
|
|
332
|
+
*/
|
|
328
333
|
var KeyValueChangeRecord = (function () {
|
|
329
334
|
function KeyValueChangeRecord(key) {
|
|
330
335
|
this.key = key;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default_keyvalue_differ.js","sourceRoot":"","sources":["../../../../../../modules/@angular/core/src/change_detection/differs/default_keyvalue_differ.ts"],"names":[],"mappings":"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","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {MapWrapper, StringMapWrapper} from '../../../src/facade/collection';\nimport {stringify, looseIdentical, isJsObject, isBlank} from '../../../src/facade/lang';\nimport {BaseException} from '../../../src/facade/exceptions';\nimport {ChangeDetectorRef} from '../change_detector_ref';\nimport {KeyValueDiffer, KeyValueDifferFactory} from './keyvalue_differs';\n\n/* @ts2dart_const */\nexport class DefaultKeyValueDifferFactory implements KeyValueDifferFactory {\n constructor() {}\n supports(obj: any): boolean { return obj instanceof Map || isJsObject(obj); }\n\n create(cdRef: ChangeDetectorRef): KeyValueDiffer { return new DefaultKeyValueDiffer(); }\n}\n\nexport class DefaultKeyValueDiffer implements KeyValueDiffer {\n private _records: Map<any, any> = new Map();\n private _mapHead: KeyValueChangeRecord = null;\n private _previousMapHead: KeyValueChangeRecord = null;\n private _changesHead: KeyValueChangeRecord = null;\n private _changesTail: KeyValueChangeRecord = null;\n private _additionsHead: KeyValueChangeRecord = null;\n private _additionsTail: KeyValueChangeRecord = null;\n private _removalsHead: KeyValueChangeRecord = null;\n private _removalsTail: KeyValueChangeRecord = null;\n\n get isDirty(): boolean {\n return this._additionsHead !== null || this._changesHead !== null ||\n this._removalsHead !== null;\n }\n\n forEachItem(fn: Function) {\n var record: KeyValueChangeRecord;\n for (record = this._mapHead; record !== null; record = record._next) {\n fn(record);\n }\n }\n\n forEachPreviousItem(fn: Function) {\n var record: KeyValueChangeRecord;\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n }\n\n forEachChangedItem(fn: Function) {\n var record: KeyValueChangeRecord;\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n fn(record);\n }\n }\n\n forEachAddedItem(fn: Function) {\n var record: KeyValueChangeRecord;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n }\n\n forEachRemovedItem(fn: Function) {\n var record: KeyValueChangeRecord;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n }\n\n diff(map: Map<any, any>): any {\n if (isBlank(map)) map = MapWrapper.createFromPairs([]);\n if (!(map instanceof Map || isJsObject(map))) {\n throw new BaseException(`Error trying to diff '${map}'`);\n }\n\n if (this.check(map)) {\n return this;\n } else {\n return null;\n }\n }\n\n onDestroy() {}\n\n check(map: Map<any, any>): boolean {\n this._reset();\n var records = this._records;\n var oldSeqRecord: KeyValueChangeRecord = this._mapHead;\n var lastOldSeqRecord: KeyValueChangeRecord = null;\n var lastNewSeqRecord: KeyValueChangeRecord = null;\n var seqChanged: boolean = false;\n\n this._forEach(map, (value, key) => {\n var newSeqRecord;\n if (oldSeqRecord !== null && key === oldSeqRecord.key) {\n newSeqRecord = oldSeqRecord;\n if (!looseIdentical(value, oldSeqRecord.currentValue)) {\n oldSeqRecord.previousValue = oldSeqRecord.currentValue;\n oldSeqRecord.currentValue = value;\n this._addToChanges(oldSeqRecord);\n }\n } else {\n seqChanged = true;\n if (oldSeqRecord !== null) {\n oldSeqRecord._next = null;\n this._removeFromSeq(lastOldSeqRecord, oldSeqRecord);\n this._addToRemovals(oldSeqRecord);\n }\n if (records.has(key)) {\n newSeqRecord = records.get(key);\n } else {\n newSeqRecord = new KeyValueChangeRecord(key);\n records.set(key, newSeqRecord);\n newSeqRecord.currentValue = value;\n this._addToAdditions(newSeqRecord);\n }\n }\n\n if (seqChanged) {\n if (this._isInRemovals(newSeqRecord)) {\n this._removeFromRemovals(newSeqRecord);\n }\n if (lastNewSeqRecord == null) {\n this._mapHead = newSeqRecord;\n } else {\n lastNewSeqRecord._next = newSeqRecord;\n }\n }\n lastOldSeqRecord = oldSeqRecord;\n lastNewSeqRecord = newSeqRecord;\n oldSeqRecord = oldSeqRecord === null ? null : oldSeqRecord._next;\n });\n this._truncate(lastOldSeqRecord, oldSeqRecord);\n return this.isDirty;\n }\n\n /** @internal */\n _reset() {\n if (this.isDirty) {\n var record: KeyValueChangeRecord;\n // Record the state of the mapping\n for (record = this._previousMapHead = this._mapHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n record.previousValue = record.currentValue;\n }\n\n for (record = this._additionsHead; record != null; record = record._nextAdded) {\n record.previousValue = record.currentValue;\n }\n\n // todo(vicb) once assert is supported\n // assert(() {\n // var r = _changesHead;\n // while (r != null) {\n // var nextRecord = r._nextChanged;\n // r._nextChanged = null;\n // r = nextRecord;\n // }\n //\n // r = _additionsHead;\n // while (r != null) {\n // var nextRecord = r._nextAdded;\n // r._nextAdded = null;\n // r = nextRecord;\n // }\n //\n // r = _removalsHead;\n // while (r != null) {\n // var nextRecord = r._nextRemoved;\n // r._nextRemoved = null;\n // r = nextRecord;\n // }\n //\n // return true;\n //});\n this._changesHead = this._changesTail = null;\n this._additionsHead = this._additionsTail = null;\n this._removalsHead = this._removalsTail = null;\n }\n }\n\n /** @internal */\n _truncate(lastRecord: KeyValueChangeRecord, record: KeyValueChangeRecord) {\n while (record !== null) {\n if (lastRecord === null) {\n this._mapHead = null;\n } else {\n lastRecord._next = null;\n }\n var nextRecord = record._next;\n // todo(vicb) assert\n // assert((() {\n // record._next = null;\n // return true;\n //}));\n this._addToRemovals(record);\n lastRecord = record;\n record = nextRecord;\n }\n\n for (var rec: KeyValueChangeRecord = this._removalsHead; rec !== null; rec = rec._nextRemoved) {\n rec.previousValue = rec.currentValue;\n rec.currentValue = null;\n this._records.delete(rec.key);\n }\n }\n\n /** @internal */\n _isInRemovals(record: KeyValueChangeRecord) {\n return record === this._removalsHead || record._nextRemoved !== null ||\n record._prevRemoved !== null;\n }\n\n /** @internal */\n _addToRemovals(record: KeyValueChangeRecord) {\n // todo(vicb) assert\n // assert(record._next == null);\n // assert(record._nextAdded == null);\n // assert(record._nextChanged == null);\n // assert(record._nextRemoved == null);\n // assert(record._prevRemoved == null);\n if (this._removalsHead === null) {\n this._removalsHead = this._removalsTail = record;\n } else {\n this._removalsTail._nextRemoved = record;\n record._prevRemoved = this._removalsTail;\n this._removalsTail = record;\n }\n }\n\n /** @internal */\n _removeFromSeq(prev: KeyValueChangeRecord, record: KeyValueChangeRecord) {\n var next = record._next;\n if (prev === null) {\n this._mapHead = next;\n } else {\n prev._next = next;\n }\n // todo(vicb) assert\n // assert((() {\n // record._next = null;\n // return true;\n //})());\n }\n\n /** @internal */\n _removeFromRemovals(record: KeyValueChangeRecord) {\n // todo(vicb) assert\n // assert(record._next == null);\n // assert(record._nextAdded == null);\n // assert(record._nextChanged == null);\n\n var prev = record._prevRemoved;\n var next = record._nextRemoved;\n if (prev === null) {\n this._removalsHead = next;\n } else {\n prev._nextRemoved = next;\n }\n if (next === null) {\n this._removalsTail = prev;\n } else {\n next._prevRemoved = prev;\n }\n record._prevRemoved = record._nextRemoved = null;\n }\n\n /** @internal */\n _addToAdditions(record: KeyValueChangeRecord) {\n // todo(vicb): assert\n // assert(record._next == null);\n // assert(record._nextAdded == null);\n // assert(record._nextChanged == null);\n // assert(record._nextRemoved == null);\n // assert(record._prevRemoved == null);\n if (this._additionsHead === null) {\n this._additionsHead = this._additionsTail = record;\n } else {\n this._additionsTail._nextAdded = record;\n this._additionsTail = record;\n }\n }\n\n /** @internal */\n _addToChanges(record: KeyValueChangeRecord) {\n // todo(vicb) assert\n // assert(record._nextAdded == null);\n // assert(record._nextChanged == null);\n // assert(record._nextRemoved == null);\n // assert(record._prevRemoved == null);\n if (this._changesHead === null) {\n this._changesHead = this._changesTail = record;\n } else {\n this._changesTail._nextChanged = record;\n this._changesTail = record;\n }\n }\n\n toString(): string {\n var items = [];\n var previous = [];\n var changes = [];\n var additions = [];\n var removals = [];\n var record: KeyValueChangeRecord;\n\n for (record = this._mapHead; record !== null; record = record._next) {\n items.push(stringify(record));\n }\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\n previous.push(stringify(record));\n }\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n changes.push(stringify(record));\n }\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n additions.push(stringify(record));\n }\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n removals.push(stringify(record));\n }\n\n return \"map: \" + items.join(', ') + \"\\n\" + \"previous: \" + previous.join(', ') + \"\\n\" +\n \"additions: \" + additions.join(', ') + \"\\n\" + \"changes: \" + changes.join(', ') + \"\\n\" +\n \"removals: \" + removals.join(', ') + \"\\n\";\n }\n\n /** @internal */\n _forEach(obj, fn: Function) {\n if (obj instanceof Map) {\n (<Map<any, any>>obj).forEach(<any>fn);\n } else {\n StringMapWrapper.forEach(obj, fn);\n }\n }\n}\n\n\nexport class KeyValueChangeRecord {\n previousValue: any = null;\n currentValue: any = null;\n\n /** @internal */\n _nextPrevious: KeyValueChangeRecord = null;\n /** @internal */\n _next: KeyValueChangeRecord = null;\n /** @internal */\n _nextAdded: KeyValueChangeRecord = null;\n /** @internal */\n _nextRemoved: KeyValueChangeRecord = null;\n /** @internal */\n _prevRemoved: KeyValueChangeRecord = null;\n /** @internal */\n _nextChanged: KeyValueChangeRecord = null;\n\n constructor(public key: any) {}\n\n toString(): string {\n return looseIdentical(this.previousValue, this.currentValue) ?\n stringify(this.key) :\n (stringify(this.key) + '[' + stringify(this.previousValue) + '->' +\n stringify(this.currentValue) + ']');\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"default_keyvalue_differ.js","sourceRoot":"","sources":["../../../../../../modules/@angular/core/src/change_detection/differs/default_keyvalue_differ.ts"],"names":[],"mappings":"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","sourcesContent":["import {MapWrapper, StringMapWrapper} from '../../facade/collection';\nimport {BaseException} from '../../facade/exceptions';\nimport {isBlank, isJsObject, looseIdentical, stringify} from '../../facade/lang';\nimport {ChangeDetectorRef} from '../change_detector_ref';\n\nimport {KeyValueDiffer, KeyValueDifferFactory} from './keyvalue_differs';\n\n\n/* @ts2dart_const */\nexport class DefaultKeyValueDifferFactory implements KeyValueDifferFactory {\n constructor() {}\n supports(obj: any): boolean { return obj instanceof Map || isJsObject(obj); }\n\n create(cdRef: ChangeDetectorRef): KeyValueDiffer { return new DefaultKeyValueDiffer(); }\n}\n\nexport class DefaultKeyValueDiffer implements KeyValueDiffer {\n private _records: Map<any, any> = new Map();\n private _mapHead: KeyValueChangeRecord = null;\n private _previousMapHead: KeyValueChangeRecord = null;\n private _changesHead: KeyValueChangeRecord = null;\n private _changesTail: KeyValueChangeRecord = null;\n private _additionsHead: KeyValueChangeRecord = null;\n private _additionsTail: KeyValueChangeRecord = null;\n private _removalsHead: KeyValueChangeRecord = null;\n private _removalsTail: KeyValueChangeRecord = null;\n\n get isDirty(): boolean {\n return this._additionsHead !== null || this._changesHead !== null ||\n this._removalsHead !== null;\n }\n\n forEachItem(fn: Function) {\n var record: KeyValueChangeRecord;\n for (record = this._mapHead; record !== null; record = record._next) {\n fn(record);\n }\n }\n\n forEachPreviousItem(fn: Function) {\n var record: KeyValueChangeRecord;\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\n fn(record);\n }\n }\n\n forEachChangedItem(fn: Function) {\n var record: KeyValueChangeRecord;\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n fn(record);\n }\n }\n\n forEachAddedItem(fn: Function) {\n var record: KeyValueChangeRecord;\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n fn(record);\n }\n }\n\n forEachRemovedItem(fn: Function) {\n var record: KeyValueChangeRecord;\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n fn(record);\n }\n }\n\n diff(map: Map<any, any>): any {\n if (isBlank(map)) map = MapWrapper.createFromPairs([]);\n if (!(map instanceof Map || isJsObject(map))) {\n throw new BaseException(`Error trying to diff '${map}'`);\n }\n\n if (this.check(map)) {\n return this;\n } else {\n return null;\n }\n }\n\n onDestroy() {}\n\n check(map: Map<any, any>): boolean {\n this._reset();\n var records = this._records;\n var oldSeqRecord: KeyValueChangeRecord = this._mapHead;\n var lastOldSeqRecord: KeyValueChangeRecord = null;\n var lastNewSeqRecord: KeyValueChangeRecord = null;\n var seqChanged: boolean = false;\n\n this._forEach(map, (value: any /** TODO #9100 */, key: any /** TODO #9100 */) => {\n var newSeqRecord: any /** TODO #9100 */;\n if (oldSeqRecord !== null && key === oldSeqRecord.key) {\n newSeqRecord = oldSeqRecord;\n if (!looseIdentical(value, oldSeqRecord.currentValue)) {\n oldSeqRecord.previousValue = oldSeqRecord.currentValue;\n oldSeqRecord.currentValue = value;\n this._addToChanges(oldSeqRecord);\n }\n } else {\n seqChanged = true;\n if (oldSeqRecord !== null) {\n oldSeqRecord._next = null;\n this._removeFromSeq(lastOldSeqRecord, oldSeqRecord);\n this._addToRemovals(oldSeqRecord);\n }\n if (records.has(key)) {\n newSeqRecord = records.get(key);\n } else {\n newSeqRecord = new KeyValueChangeRecord(key);\n records.set(key, newSeqRecord);\n newSeqRecord.currentValue = value;\n this._addToAdditions(newSeqRecord);\n }\n }\n\n if (seqChanged) {\n if (this._isInRemovals(newSeqRecord)) {\n this._removeFromRemovals(newSeqRecord);\n }\n if (lastNewSeqRecord == null) {\n this._mapHead = newSeqRecord;\n } else {\n lastNewSeqRecord._next = newSeqRecord;\n }\n }\n lastOldSeqRecord = oldSeqRecord;\n lastNewSeqRecord = newSeqRecord;\n oldSeqRecord = oldSeqRecord === null ? null : oldSeqRecord._next;\n });\n this._truncate(lastOldSeqRecord, oldSeqRecord);\n return this.isDirty;\n }\n\n /** @internal */\n _reset() {\n if (this.isDirty) {\n var record: KeyValueChangeRecord;\n // Record the state of the mapping\n for (record = this._previousMapHead = this._mapHead; record !== null; record = record._next) {\n record._nextPrevious = record._next;\n }\n\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n record.previousValue = record.currentValue;\n }\n\n for (record = this._additionsHead; record != null; record = record._nextAdded) {\n record.previousValue = record.currentValue;\n }\n\n // todo(vicb) once assert is supported\n // assert(() {\n // var r = _changesHead;\n // while (r != null) {\n // var nextRecord = r._nextChanged;\n // r._nextChanged = null;\n // r = nextRecord;\n // }\n //\n // r = _additionsHead;\n // while (r != null) {\n // var nextRecord = r._nextAdded;\n // r._nextAdded = null;\n // r = nextRecord;\n // }\n //\n // r = _removalsHead;\n // while (r != null) {\n // var nextRecord = r._nextRemoved;\n // r._nextRemoved = null;\n // r = nextRecord;\n // }\n //\n // return true;\n //});\n this._changesHead = this._changesTail = null;\n this._additionsHead = this._additionsTail = null;\n this._removalsHead = this._removalsTail = null;\n }\n }\n\n /** @internal */\n _truncate(lastRecord: KeyValueChangeRecord, record: KeyValueChangeRecord) {\n while (record !== null) {\n if (lastRecord === null) {\n this._mapHead = null;\n } else {\n lastRecord._next = null;\n }\n var nextRecord = record._next;\n // todo(vicb) assert\n // assert((() {\n // record._next = null;\n // return true;\n //}));\n this._addToRemovals(record);\n lastRecord = record;\n record = nextRecord;\n }\n\n for (var rec: KeyValueChangeRecord = this._removalsHead; rec !== null; rec = rec._nextRemoved) {\n rec.previousValue = rec.currentValue;\n rec.currentValue = null;\n this._records.delete(rec.key);\n }\n }\n\n /** @internal */\n _isInRemovals(record: KeyValueChangeRecord) {\n return record === this._removalsHead || record._nextRemoved !== null ||\n record._prevRemoved !== null;\n }\n\n /** @internal */\n _addToRemovals(record: KeyValueChangeRecord) {\n // todo(vicb) assert\n // assert(record._next == null);\n // assert(record._nextAdded == null);\n // assert(record._nextChanged == null);\n // assert(record._nextRemoved == null);\n // assert(record._prevRemoved == null);\n if (this._removalsHead === null) {\n this._removalsHead = this._removalsTail = record;\n } else {\n this._removalsTail._nextRemoved = record;\n record._prevRemoved = this._removalsTail;\n this._removalsTail = record;\n }\n }\n\n /** @internal */\n _removeFromSeq(prev: KeyValueChangeRecord, record: KeyValueChangeRecord) {\n var next = record._next;\n if (prev === null) {\n this._mapHead = next;\n } else {\n prev._next = next;\n }\n // todo(vicb) assert\n // assert((() {\n // record._next = null;\n // return true;\n //})());\n }\n\n /** @internal */\n _removeFromRemovals(record: KeyValueChangeRecord) {\n // todo(vicb) assert\n // assert(record._next == null);\n // assert(record._nextAdded == null);\n // assert(record._nextChanged == null);\n\n var prev = record._prevRemoved;\n var next = record._nextRemoved;\n if (prev === null) {\n this._removalsHead = next;\n } else {\n prev._nextRemoved = next;\n }\n if (next === null) {\n this._removalsTail = prev;\n } else {\n next._prevRemoved = prev;\n }\n record._prevRemoved = record._nextRemoved = null;\n }\n\n /** @internal */\n _addToAdditions(record: KeyValueChangeRecord) {\n // todo(vicb): assert\n // assert(record._next == null);\n // assert(record._nextAdded == null);\n // assert(record._nextChanged == null);\n // assert(record._nextRemoved == null);\n // assert(record._prevRemoved == null);\n if (this._additionsHead === null) {\n this._additionsHead = this._additionsTail = record;\n } else {\n this._additionsTail._nextAdded = record;\n this._additionsTail = record;\n }\n }\n\n /** @internal */\n _addToChanges(record: KeyValueChangeRecord) {\n // todo(vicb) assert\n // assert(record._nextAdded == null);\n // assert(record._nextChanged == null);\n // assert(record._nextRemoved == null);\n // assert(record._prevRemoved == null);\n if (this._changesHead === null) {\n this._changesHead = this._changesTail = record;\n } else {\n this._changesTail._nextChanged = record;\n this._changesTail = record;\n }\n }\n\n toString(): string {\n var items: any[] /** TODO #9100 */ = [];\n var previous: any[] /** TODO #9100 */ = [];\n var changes: any[] /** TODO #9100 */ = [];\n var additions: any[] /** TODO #9100 */ = [];\n var removals: any[] /** TODO #9100 */ = [];\n var record: KeyValueChangeRecord;\n\n for (record = this._mapHead; record !== null; record = record._next) {\n items.push(stringify(record));\n }\n for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\n previous.push(stringify(record));\n }\n for (record = this._changesHead; record !== null; record = record._nextChanged) {\n changes.push(stringify(record));\n }\n for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n additions.push(stringify(record));\n }\n for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n removals.push(stringify(record));\n }\n\n return 'map: ' + items.join(', ') + '\\n' +\n 'previous: ' + previous.join(', ') + '\\n' +\n 'additions: ' + additions.join(', ') + '\\n' +\n 'changes: ' + changes.join(', ') + '\\n' +\n 'removals: ' + removals.join(', ') + '\\n';\n }\n\n /** @internal */\n _forEach(obj: any /** TODO #9100 */, fn: Function) {\n if (obj instanceof Map) {\n (<Map<any, any>>obj).forEach(<any>fn);\n } else {\n StringMapWrapper.forEach(obj, fn);\n }\n }\n}\n\n\n/**\n * @stable\n */\nexport class KeyValueChangeRecord {\n previousValue: any = null;\n currentValue: any = null;\n\n /** @internal */\n _nextPrevious: KeyValueChangeRecord = null;\n /** @internal */\n _next: KeyValueChangeRecord = null;\n /** @internal */\n _nextAdded: KeyValueChangeRecord = null;\n /** @internal */\n _nextRemoved: KeyValueChangeRecord = null;\n /** @internal */\n _prevRemoved: KeyValueChangeRecord = null;\n /** @internal */\n _nextChanged: KeyValueChangeRecord = null;\n\n constructor(public key: any) {}\n\n toString(): string {\n return looseIdentical(this.previousValue, this.currentValue) ?\n stringify(this.key) :\n (stringify(this.key) + '[' + stringify(this.previousValue) + '->' +\n stringify(this.currentValue) + ']');\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { ChangeDetectorRef } from '../change_detector_ref';
|
|
2
1
|
import { Provider } from '../../di';
|
|
2
|
+
import { ChangeDetectorRef } from '../change_detector_ref';
|
|
3
3
|
/**
|
|
4
4
|
* A strategy for tracking changes over time to an iterable. Used for {@link NgFor} to
|
|
5
5
|
* respond to changes in an iterable by effecting equivalent changes in the DOM.
|
|
6
|
+
*
|
|
7
|
+
* @stable
|
|
6
8
|
*/
|
|
7
9
|
export interface IterableDiffer {
|
|
8
10
|
diff(object: any): any;
|
|
@@ -25,6 +27,7 @@ export interface IterableDifferFactory {
|
|
|
25
27
|
/**
|
|
26
28
|
* A repository of different iterable diffing strategies used by NgFor, NgClass, and others.
|
|
27
29
|
* @ts2dart_const
|
|
30
|
+
* @stable
|
|
28
31
|
*/
|
|
29
32
|
export declare class IterableDiffers {
|
|
30
33
|
factories: IterableDifferFactory[];
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var lang_1 = require('../../../src/facade/lang');
|
|
3
|
-
var exceptions_1 = require('../../../src/facade/exceptions');
|
|
4
|
-
var collection_1 = require('../../../src/facade/collection');
|
|
5
2
|
var di_1 = require('../../di');
|
|
3
|
+
var collection_1 = require('../../facade/collection');
|
|
4
|
+
var exceptions_1 = require('../../facade/exceptions');
|
|
5
|
+
var lang_1 = require('../../facade/lang');
|
|
6
6
|
/**
|
|
7
7
|
* A repository of different iterable diffing strategies used by NgFor, NgClass, and others.
|
|
8
8
|
* @ts2dart_const
|
|
9
|
+
* @stable
|
|
9
10
|
*/
|
|
10
11
|
var IterableDiffers = (function () {
|
|
11
12
|
/*@ts2dart_const*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iterable_differs.js","sourceRoot":"","sources":["../../../../../../modules/@angular/core/src/change_detection/differs/iterable_differs.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"iterable_differs.js","sourceRoot":"","sources":["../../../../../../modules/@angular/core/src/change_detection/differs/iterable_differs.ts"],"names":[],"mappings":";AAAA,mBAA2D,UAAU,CAAC,CAAA;AACtE,2BAA0B,yBAAyB,CAAC,CAAA;AACpD,2BAA4B,yBAAyB,CAAC,CAAA;AACtD,qBAA0D,mBAAmB,CAAC,CAAA;AA8B9E;;;;GAIG;AACH;IACE,kBAAkB;IAClB,yBAAmB,SAAkC;QAAlC,cAAS,GAAT,SAAS,CAAyB;IAAG,CAAC;IAElD,sBAAM,GAAb,UAAc,SAAkC,EAAE,MAAwB;QACxE,EAAE,CAAC,CAAC,gBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,MAAM,GAAG,wBAAW,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjD,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,sBAAM,GAAb,UAAc,SAAkC;QAC9C,MAAM,CAAC,IAAI,aAAQ,CAAC,eAAe,EAAE;YACnC,UAAU,EAAE,UAAC,MAAuB;gBAClC,EAAE,CAAC,CAAC,cAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpB,0FAA0F;oBAC1F,KAAK;oBACL,6EAA6E;oBAC7E,MAAM,IAAI,0BAAa,CAAC,yDAAyD,CAAC,CAAC;gBACrF,CAAC;gBACD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACnD,CAAC;YACD,6FAA6F;YAC7F,IAAI,EAAE,CAAC,CAAC,eAAe,EAAE,IAAI,qBAAgB,EAAE,EAAE,IAAI,qBAAgB,EAAE,CAAC,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,8BAAI,GAAJ,UAAK,QAAa;QAChB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAApB,CAAoB,CAAC,CAAC;QAC7D,EAAE,CAAC,CAAC,gBAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC;QACjB,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,IAAI,0BAAa,CACnB,6CAA2C,QAAQ,mBAAc,8BAAuB,CAAC,QAAQ,CAAC,MAAG,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;IACH,sBAAC;AAAD,CAAC,AA1DD,IA0DC;AA1DY,uBAAe,kBA0D3B,CAAA","sourcesContent":["import {OptionalMetadata, Provider, SkipSelfMetadata} from '../../di';\nimport {ListWrapper} from '../../facade/collection';\nimport {BaseException} from '../../facade/exceptions';\nimport {getTypeNameForDebugging, isBlank, isPresent} from '../../facade/lang';\nimport {ChangeDetectorRef} from '../change_detector_ref';\n\n\n/**\n * A strategy for tracking changes over time to an iterable. Used for {@link NgFor} to\n * respond to changes in an iterable by effecting equivalent changes in the DOM.\n *\n * @stable\n */\nexport interface IterableDiffer {\n diff(object: any): any;\n onDestroy(): any /** TODO #9100 */;\n}\n\n/**\n * An optional function passed into {@link NgFor} that defines how to track\n * items in an iterable (e.g. by index or id)\n */\nexport interface TrackByFn { (index: number, item: any): any; }\n\n\n/**\n * Provides a factory for {@link IterableDiffer}.\n */\nexport interface IterableDifferFactory {\n supports(objects: any): boolean;\n create(cdRef: ChangeDetectorRef, trackByFn?: TrackByFn): IterableDiffer;\n}\n\n/**\n * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.\n * @ts2dart_const\n * @stable\n */\nexport class IterableDiffers {\n /*@ts2dart_const*/\n constructor(public factories: IterableDifferFactory[]) {}\n\n static create(factories: IterableDifferFactory[], parent?: IterableDiffers): IterableDiffers {\n if (isPresent(parent)) {\n var copied = ListWrapper.clone(parent.factories);\n factories = factories.concat(copied);\n return new IterableDiffers(factories);\n } else {\n return new IterableDiffers(factories);\n }\n }\n\n /**\n * Takes an array of {@link IterableDifferFactory} and returns a provider used to extend the\n * inherited {@link IterableDiffers} instance with the provided factories and return a new\n * {@link IterableDiffers} instance.\n *\n * The following example shows how to extend an existing list of factories,\n * which will only be applied to the injector for this component and its children.\n * This step is all that's required to make a new {@link IterableDiffer} available.\n *\n * ### Example\n *\n * ```\n * @Component({\n * viewProviders: [\n * IterableDiffers.extend([new ImmutableListDiffer()])\n * ]\n * })\n * ```\n */\n static extend(factories: IterableDifferFactory[]): Provider {\n return new Provider(IterableDiffers, {\n useFactory: (parent: IterableDiffers) => {\n if (isBlank(parent)) {\n // Typically would occur when calling IterableDiffers.extend inside of dependencies passed\n // to\n // bootstrap(), which would override default pipes instead of extending them.\n throw new BaseException('Cannot extend IterableDiffers without a parent injector');\n }\n return IterableDiffers.create(factories, parent);\n },\n // Dependency technically isn't optional, but we can provide a better error message this way.\n deps: [[IterableDiffers, new SkipSelfMetadata(), new OptionalMetadata()]]\n });\n }\n\n find(iterable: any): IterableDifferFactory {\n var factory = this.factories.find(f => f.supports(iterable));\n if (isPresent(factory)) {\n return factory;\n } else {\n throw new BaseException(\n `Cannot find a differ supporting object '${iterable}' of type '${getTypeNameForDebugging(iterable)}'`);\n }\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ChangeDetectorRef } from '../change_detector_ref';
|
|
2
1
|
import { Provider } from '../../di';
|
|
2
|
+
import { ChangeDetectorRef } from '../change_detector_ref';
|
|
3
3
|
/**
|
|
4
4
|
* A differ that tracks changes made to an object over time.
|
|
5
5
|
*/
|
|
@@ -17,6 +17,7 @@ export interface KeyValueDifferFactory {
|
|
|
17
17
|
/**
|
|
18
18
|
* A repository of different Map diffing strategies used by NgClass, NgStyle, and others.
|
|
19
19
|
* @ts2dart_const
|
|
20
|
+
* @stable
|
|
20
21
|
*/
|
|
21
22
|
export declare class KeyValueDiffers {
|
|
22
23
|
factories: KeyValueDifferFactory[];
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var lang_1 = require('../../../src/facade/lang');
|
|
3
|
-
var exceptions_1 = require('../../../src/facade/exceptions');
|
|
4
|
-
var collection_1 = require('../../../src/facade/collection');
|
|
5
2
|
var di_1 = require('../../di');
|
|
3
|
+
var collection_1 = require('../../facade/collection');
|
|
4
|
+
var exceptions_1 = require('../../facade/exceptions');
|
|
5
|
+
var lang_1 = require('../../facade/lang');
|
|
6
6
|
/**
|
|
7
7
|
* A repository of different Map diffing strategies used by NgClass, NgStyle, and others.
|
|
8
8
|
* @ts2dart_const
|
|
9
|
+
* @stable
|
|
9
10
|
*/
|
|
10
11
|
var KeyValueDiffers = (function () {
|
|
11
12
|
/*@ts2dart_const*/
|