@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.
Files changed (624) hide show
  1. package/{core.umd.js → bundles/core.umd.js} +6402 -4606
  2. package/bundles/core.umd.min.js +6 -0
  3. package/esm/index.d.ts +5 -4
  4. package/esm/index.js +9 -8
  5. package/esm/index.js.map +1 -1
  6. package/esm/private_export.d.ts +96 -11
  7. package/esm/private_export.js +39 -10
  8. package/esm/private_export.js.map +1 -1
  9. package/esm/private_export.metadata.json +1 -1
  10. package/esm/src/animation/active_animation_players_map.d.ts +11 -0
  11. package/esm/src/animation/active_animation_players_map.js +47 -0
  12. package/esm/src/animation/active_animation_players_map.js.map +1 -0
  13. package/esm/src/animation/animation_constants.d.ts +4 -0
  14. package/esm/src/animation/animation_constants.js +5 -0
  15. package/esm/src/animation/animation_constants.js.map +1 -0
  16. package/esm/src/animation/animation_constants.metadata.json +1 -0
  17. package/esm/src/animation/animation_driver.d.ts +9 -0
  18. package/esm/src/animation/animation_driver.js +9 -0
  19. package/esm/src/animation/animation_driver.js.map +1 -0
  20. package/esm/src/animation/animation_group_player.d.ts +18 -0
  21. package/esm/src/animation/animation_group_player.js +60 -0
  22. package/esm/src/animation/animation_group_player.js.map +1 -0
  23. package/esm/src/animation/animation_keyframe.d.ts +6 -0
  24. package/esm/src/animation/animation_keyframe.js +7 -0
  25. package/esm/src/animation/animation_keyframe.js.map +1 -0
  26. package/esm/src/animation/animation_player.d.ts +26 -0
  27. package/esm/src/animation/animation_player.js +30 -0
  28. package/esm/src/animation/animation_player.js.map +1 -0
  29. package/esm/src/animation/animation_sequence_player.d.ts +21 -0
  30. package/esm/src/animation/animation_sequence_player.js +64 -0
  31. package/esm/src/animation/animation_sequence_player.js.map +1 -0
  32. package/esm/src/animation/animation_style_util.d.ts +32 -0
  33. package/esm/src/animation/animation_style_util.js +91 -0
  34. package/esm/src/animation/animation_style_util.js.map +1 -0
  35. package/esm/src/animation/animation_style_util.metadata.json +1 -0
  36. package/esm/src/animation/animation_styles.d.ts +8 -0
  37. package/esm/src/animation/animation_styles.js +6 -0
  38. package/esm/src/animation/animation_styles.js.map +1 -0
  39. package/esm/src/animation/metadata.d.ts +511 -0
  40. package/esm/src/animation/metadata.js +565 -0
  41. package/esm/src/animation/metadata.js.map +1 -0
  42. package/esm/src/animation/metadata.metadata.json +1 -0
  43. package/esm/src/application_common_providers.d.ts +1 -0
  44. package/esm/src/application_common_providers.js +5 -4
  45. package/esm/src/application_common_providers.js.map +1 -1
  46. package/esm/src/application_common_providers.metadata.json +1 -1
  47. package/esm/src/application_ref.d.ts +17 -41
  48. package/esm/src/application_ref.js +32 -23
  49. package/esm/src/application_ref.js.map +1 -1
  50. package/esm/src/application_ref.metadata.json +1 -1
  51. package/esm/src/application_tokens.d.ts +6 -1
  52. package/esm/src/application_tokens.js +9 -4
  53. package/esm/src/application_tokens.js.map +1 -1
  54. package/esm/src/application_tokens.metadata.json +1 -1
  55. package/esm/src/change_detection/change_detection.d.ts +9 -8
  56. package/esm/src/change_detection/change_detection.js +7 -7
  57. package/esm/src/change_detection/change_detection.js.map +1 -1
  58. package/esm/src/change_detection/change_detection.metadata.json +1 -1
  59. package/esm/src/change_detection/change_detection_util.d.ts +3 -1
  60. package/esm/src/change_detection/change_detection_util.js +6 -5
  61. package/esm/src/change_detection/change_detection_util.js.map +1 -1
  62. package/esm/src/change_detection/change_detection_util.metadata.json +1 -1
  63. package/esm/src/change_detection/change_detector_ref.d.ts +3 -0
  64. package/esm/src/change_detection/change_detector_ref.js +3 -0
  65. package/esm/src/change_detection/change_detector_ref.js.map +1 -1
  66. package/esm/src/change_detection/constants.d.ts +1 -0
  67. package/esm/src/change_detection/constants.js +4 -3
  68. package/esm/src/change_detection/constants.js.map +1 -1
  69. package/esm/src/change_detection/constants.metadata.json +1 -1
  70. package/esm/src/change_detection/differs/default_iterable_differ.d.ts +6 -94
  71. package/esm/src/change_detection/differs/default_iterable_differ.js +25 -18
  72. package/esm/src/change_detection/differs/default_iterable_differ.js.map +1 -1
  73. package/esm/src/change_detection/differs/default_keyvalue_differ.d.ts +3 -30
  74. package/esm/src/change_detection/differs/default_keyvalue_differ.js +13 -8
  75. package/esm/src/change_detection/differs/default_keyvalue_differ.js.map +1 -1
  76. package/esm/src/change_detection/differs/iterable_differs.d.ts +4 -1
  77. package/esm/src/change_detection/differs/iterable_differs.js +5 -4
  78. package/esm/src/change_detection/differs/iterable_differs.js.map +1 -1
  79. package/esm/src/change_detection/differs/keyvalue_differs.d.ts +2 -1
  80. package/esm/src/change_detection/differs/keyvalue_differs.js +5 -4
  81. package/esm/src/change_detection/differs/keyvalue_differs.js.map +1 -1
  82. package/esm/src/change_detection/pipe_transform.js.map +1 -1
  83. package/esm/src/change_detection.d.ts +1 -1
  84. package/esm/src/change_detection.js +5 -5
  85. package/esm/src/change_detection.js.map +1 -1
  86. package/esm/src/console.js +2 -1
  87. package/esm/src/console.js.map +1 -1
  88. package/esm/src/console.metadata.json +1 -1
  89. package/esm/src/debug/debug_node.d.ts +20 -2
  90. package/esm/src/debug/debug_node.js +16 -2
  91. package/esm/src/debug/debug_node.js.map +1 -1
  92. package/esm/src/debug/debug_node.metadata.json +1 -0
  93. package/esm/src/debug/debug_renderer.d.ts +10 -6
  94. package/esm/src/debug/debug_renderer.js +13 -2
  95. package/esm/src/debug/debug_renderer.js.map +1 -1
  96. package/esm/src/di/decorators.d.ts +13 -1
  97. package/esm/src/di/decorators.js +7 -1
  98. package/esm/src/di/decorators.js.map +1 -1
  99. package/esm/src/di/decorators.metadata.json +1 -1
  100. package/esm/src/di/forward_ref.d.ts +3 -1
  101. package/esm/src/di/forward_ref.js +3 -1
  102. package/esm/src/di/forward_ref.js.map +1 -1
  103. package/esm/src/di/injector.d.ts +4 -1
  104. package/esm/src/di/injector.js +5 -2
  105. package/esm/src/di/injector.js.map +1 -1
  106. package/esm/src/di/injector.metadata.json +1 -1
  107. package/esm/src/di/metadata.d.ts +8 -1
  108. package/esm/src/di/metadata.js +10 -3
  109. package/esm/src/di/metadata.js.map +1 -1
  110. package/esm/src/di/opaque_token.d.ts +2 -1
  111. package/esm/src/di/opaque_token.js +22 -21
  112. package/esm/src/di/opaque_token.js.map +1 -1
  113. package/esm/src/di/provider.d.ts +11 -10
  114. package/esm/src/di/provider.js +17 -14
  115. package/esm/src/di/provider.js.map +1 -1
  116. package/esm/src/di/provider.metadata.json +1 -0
  117. package/esm/src/di/provider_util.js.map +1 -1
  118. package/esm/src/di/provider_util.metadata.json +1 -0
  119. package/esm/src/di/reflective_exceptions.d.ts +11 -16
  120. package/esm/src/di/reflective_exceptions.js +28 -22
  121. package/esm/src/di/reflective_exceptions.js.map +1 -1
  122. package/esm/src/di/reflective_injector.d.ts +3 -33
  123. package/esm/src/di/reflective_injector.js +10 -7
  124. package/esm/src/di/reflective_injector.js.map +1 -1
  125. package/esm/src/di/reflective_key.d.ts +1 -8
  126. package/esm/src/di/reflective_key.js +3 -2
  127. package/esm/src/di/reflective_key.js.map +1 -1
  128. package/esm/src/di/reflective_provider.d.ts +2 -1
  129. package/esm/src/di/reflective_provider.js +6 -5
  130. package/esm/src/di/reflective_provider.js.map +1 -1
  131. package/esm/src/di/reflective_provider.metadata.json +1 -0
  132. package/esm/src/di.d.ts +2 -2
  133. package/esm/src/di.js +6 -6
  134. package/esm/src/di.js.map +1 -1
  135. package/esm/src/facade/async.d.ts +11 -4
  136. package/esm/src/facade/async.js +25 -15
  137. package/esm/src/facade/async.js.map +1 -1
  138. package/esm/src/facade/base_wrapped_exception.js +4 -4
  139. package/esm/src/facade/base_wrapped_exception.js.map +1 -1
  140. package/esm/src/facade/collection.js +1 -1
  141. package/esm/src/facade/collection.js.map +1 -1
  142. package/esm/src/facade/collection.metadata.json +1 -1
  143. package/esm/src/facade/exception_handler.d.ts +2 -11
  144. package/esm/src/facade/exception_handler.js +8 -7
  145. package/esm/src/facade/exception_handler.js.map +1 -1
  146. package/esm/src/facade/exceptions.d.ts +4 -0
  147. package/esm/src/facade/exceptions.js +6 -2
  148. package/esm/src/facade/exceptions.js.map +1 -1
  149. package/esm/src/facade/exceptions.metadata.json +1 -0
  150. package/esm/src/facade/lang.d.ts +6 -4
  151. package/esm/src/facade/lang.js +12 -11
  152. package/esm/src/facade/lang.js.map +1 -1
  153. package/esm/src/facade/lang.metadata.json +1 -1
  154. package/esm/src/facade/math.d.ts +2 -0
  155. package/esm/src/facade/math.js +4 -0
  156. package/esm/src/facade/math.js.map +1 -0
  157. package/esm/src/facade/math.metadata.json +1 -0
  158. package/esm/src/facade/promise.js.map +1 -1
  159. package/esm/src/linker/component_factory.d.ts +5 -4
  160. package/esm/src/linker/component_factory.js +7 -3
  161. package/esm/src/linker/component_factory.js.map +1 -1
  162. package/esm/src/linker/component_resolver.d.ts +5 -4
  163. package/esm/src/linker/component_resolver.js +12 -7
  164. package/esm/src/linker/component_resolver.js.map +1 -1
  165. package/esm/src/linker/component_resolver.metadata.json +1 -1
  166. package/esm/src/linker/debug_context.js +5 -4
  167. package/esm/src/linker/debug_context.js.map +1 -1
  168. package/esm/src/linker/dynamic_component_loader.d.ts +5 -6
  169. package/esm/src/linker/dynamic_component_loader.js +5 -3
  170. package/esm/src/linker/dynamic_component_loader.js.map +1 -1
  171. package/esm/src/linker/dynamic_component_loader.metadata.json +1 -1
  172. package/esm/src/linker/element.d.ts +3 -3
  173. package/esm/src/linker/element.js +5 -5
  174. package/esm/src/linker/element.js.map +1 -1
  175. package/esm/src/linker/element_injector.js.map +1 -1
  176. package/esm/src/linker/element_ref.d.ts +1 -0
  177. package/esm/src/linker/element_ref.js +5 -5
  178. package/esm/src/linker/element_ref.js.map +1 -1
  179. package/esm/src/linker/exceptions.d.ts +4 -1
  180. package/esm/src/linker/exceptions.js +4 -1
  181. package/esm/src/linker/exceptions.js.map +1 -1
  182. package/esm/src/linker/query_list.d.ts +3 -10
  183. package/esm/src/linker/query_list.js +8 -7
  184. package/esm/src/linker/query_list.js.map +1 -1
  185. package/esm/src/linker/systemjs_component_resolver.d.ts +21 -0
  186. package/esm/src/linker/systemjs_component_resolver.js +44 -0
  187. package/esm/src/linker/systemjs_component_resolver.js.map +1 -0
  188. package/esm/src/linker/template_ref.d.ts +2 -1
  189. package/esm/src/linker/template_ref.js +1 -0
  190. package/esm/src/linker/template_ref.js.map +1 -1
  191. package/esm/src/linker/view.d.ts +12 -1
  192. package/esm/src/linker/view.js +62 -16
  193. package/esm/src/linker/view.js.map +1 -1
  194. package/esm/src/linker/view_container_ref.d.ts +2 -10
  195. package/esm/src/linker/view_container_ref.js +4 -3
  196. package/esm/src/linker/view_container_ref.js.map +1 -1
  197. package/esm/src/linker/view_ref.d.ts +5 -1
  198. package/esm/src/linker/view_ref.js +6 -2
  199. package/esm/src/linker/view_ref.js.map +1 -1
  200. package/esm/src/linker/view_type.js.map +1 -1
  201. package/esm/src/linker/view_utils.d.ts +2 -4
  202. package/esm/src/linker/view_utils.js +21 -21
  203. package/esm/src/linker/view_utils.js.map +1 -1
  204. package/esm/src/linker/view_utils.metadata.json +1 -1
  205. package/esm/src/linker.d.ts +5 -4
  206. package/esm/src/linker.js +5 -4
  207. package/esm/src/linker.js.map +1 -1
  208. package/esm/src/metadata/di.d.ts +8 -1
  209. package/esm/src/metadata/di.js +10 -3
  210. package/esm/src/metadata/di.js.map +1 -1
  211. package/esm/src/metadata/directives.d.ts +104 -20
  212. package/esm/src/metadata/directives.js +25 -19
  213. package/esm/src/metadata/directives.js.map +1 -1
  214. package/esm/src/metadata/lifecycle_hooks.d.ts +46 -31
  215. package/esm/src/metadata/lifecycle_hooks.js +464 -10
  216. package/esm/src/metadata/lifecycle_hooks.js.map +1 -1
  217. package/esm/src/metadata/lifecycle_hooks.metadata.json +1 -1
  218. package/esm/src/metadata/view.d.ts +6 -2
  219. package/esm/src/metadata/view.js +3 -1
  220. package/esm/src/metadata/view.js.map +1 -1
  221. package/esm/src/metadata/view.metadata.json +1 -1
  222. package/esm/src/metadata.d.ts +49 -15
  223. package/esm/src/metadata.js +35 -10
  224. package/esm/src/metadata.js.map +1 -1
  225. package/esm/src/metadata.metadata.json +1 -1
  226. package/esm/src/platform_common_providers.d.ts +1 -0
  227. package/esm/src/platform_common_providers.js +3 -3
  228. package/esm/src/platform_common_providers.js.map +1 -1
  229. package/esm/src/platform_common_providers.metadata.json +1 -1
  230. package/esm/src/platform_directives_and_pipes.d.ts +48 -45
  231. package/esm/src/platform_directives_and_pipes.js +50 -47
  232. package/esm/src/platform_directives_and_pipes.js.map +1 -1
  233. package/esm/src/platform_directives_and_pipes.metadata.json +1 -1
  234. package/esm/src/profile/profile.d.ts +5 -1
  235. package/esm/src/profile/profile.js +4 -0
  236. package/esm/src/profile/profile.js.map +1 -1
  237. package/esm/src/profile/profile.metadata.json +1 -1
  238. package/esm/src/profile/wtf_impl.js +1 -1
  239. package/esm/src/profile/wtf_impl.js.map +1 -1
  240. package/esm/src/profile/wtf_impl.metadata.json +1 -0
  241. package/esm/src/profile/wtf_init.js +2 -2
  242. package/esm/src/profile/wtf_init.js.map +1 -1
  243. package/esm/src/reflection/platform_reflection_capabilities.d.ts +4 -3
  244. package/esm/src/reflection/platform_reflection_capabilities.js.map +1 -1
  245. package/esm/src/reflection/reflection.d.ts +1 -1
  246. package/esm/src/reflection/reflection.js +2 -2
  247. package/esm/src/reflection/reflection.js.map +1 -1
  248. package/esm/src/reflection/reflection.metadata.json +1 -1
  249. package/esm/src/reflection/reflection_capabilities.d.ts +4 -5
  250. package/esm/src/reflection/reflection_capabilities.js +22 -10
  251. package/esm/src/reflection/reflection_capabilities.js.map +1 -1
  252. package/esm/src/reflection/reflector.d.ts +8 -20
  253. package/esm/src/reflection/reflector.js +13 -3
  254. package/esm/src/reflection/reflector.js.map +1 -1
  255. package/esm/src/reflection/reflector_reader.js +3 -3
  256. package/esm/src/reflection/reflector_reader.js.map +1 -1
  257. package/esm/src/reflection/types.js.map +1 -1
  258. package/esm/src/render/api.d.ts +17 -6
  259. package/esm/src/render/api.js +8 -1
  260. package/esm/src/render/api.js.map +1 -1
  261. package/esm/src/render.d.ts +1 -1
  262. package/esm/src/render.js +1 -1
  263. package/esm/src/render.js.map +1 -1
  264. package/esm/src/security.js +6 -6
  265. package/esm/src/security.js.map +1 -1
  266. package/esm/src/testability/testability.d.ts +3 -19
  267. package/esm/src/testability/testability.js +10 -5
  268. package/esm/src/testability/testability.js.map +1 -1
  269. package/esm/src/testability/testability.metadata.json +1 -1
  270. package/esm/src/util/decorators.d.ts +2 -1
  271. package/esm/src/util/decorators.js +10 -9
  272. package/esm/src/util/decorators.js.map +1 -1
  273. package/esm/src/util.js.map +1 -1
  274. package/esm/src/zone/ng_zone.d.ts +6 -17
  275. package/esm/src/zone/ng_zone.js +7 -6
  276. package/esm/src/zone/ng_zone.js.map +1 -1
  277. package/esm/src/zone/ng_zone_impl.d.ts +1 -4
  278. package/esm/src/zone/ng_zone_impl.js +3 -2
  279. package/esm/src/zone/ng_zone_impl.js.map +1 -1
  280. package/esm/src/zone.js.map +1 -1
  281. package/esm/testing/async.js +20 -22
  282. package/esm/testing/async.js.map +1 -1
  283. package/esm/testing/async.metadata.json +1 -0
  284. package/esm/testing/async_test_completer.js.map +1 -1
  285. package/esm/testing/fake_async.d.ts +4 -1
  286. package/esm/testing/fake_async.js +9 -2
  287. package/esm/testing/fake_async.js.map +1 -1
  288. package/esm/testing/lang_utils.js +1 -1
  289. package/esm/testing/lang_utils.js.map +1 -1
  290. package/esm/testing/lang_utils.metadata.json +1 -0
  291. package/esm/testing/logger.js +5 -3
  292. package/esm/testing/logger.js.map +1 -1
  293. package/esm/testing/logger.metadata.json +1 -1
  294. package/esm/testing/mock_application_ref.d.ts +1 -1
  295. package/esm/testing/mock_application_ref.js +1 -0
  296. package/esm/testing/mock_application_ref.js.map +1 -1
  297. package/esm/testing/mock_application_ref.metadata.json +1 -1
  298. package/esm/testing/ng_zone_mock.d.ts +0 -1
  299. package/esm/testing/ng_zone_mock.js +2 -1
  300. package/esm/testing/ng_zone_mock.js.map +1 -1
  301. package/esm/testing/ng_zone_mock.metadata.json +1 -1
  302. package/esm/testing/regexp.js +1 -1
  303. package/esm/testing/regexp.js.map +1 -1
  304. package/esm/testing/regexp.metadata.json +1 -0
  305. package/esm/testing/test_injector.d.ts +6 -12
  306. package/esm/testing/test_injector.js +4 -10
  307. package/esm/testing/test_injector.js.map +1 -1
  308. package/esm/testing/test_injector.metadata.json +1 -0
  309. package/esm/testing/testing.d.ts +2 -2
  310. package/esm/testing/testing.js +2 -2
  311. package/esm/testing/testing.js.map +1 -1
  312. package/esm/testing/testing.metadata.json +1 -1
  313. package/esm/testing.js.map +1 -1
  314. package/index.d.ts +5 -4
  315. package/index.js +10 -8
  316. package/index.js.map +1 -1
  317. package/package.json +5 -1
  318. package/private_export.d.ts +96 -11
  319. package/private_export.js +39 -10
  320. package/private_export.js.map +1 -1
  321. package/private_export.metadata.json +1 -1
  322. package/src/animation/active_animation_players_map.d.ts +11 -0
  323. package/src/animation/active_animation_players_map.js +54 -0
  324. package/src/animation/active_animation_players_map.js.map +1 -0
  325. package/src/animation/animation_constants.d.ts +4 -0
  326. package/src/animation/animation_constants.js +6 -0
  327. package/src/animation/animation_constants.js.map +1 -0
  328. package/src/animation/animation_constants.metadata.json +1 -0
  329. package/src/animation/animation_driver.d.ts +9 -0
  330. package/src/animation/animation_driver.js +25 -0
  331. package/src/animation/animation_driver.js.map +1 -0
  332. package/src/animation/animation_group_player.d.ts +18 -0
  333. package/src/animation/animation_group_player.js +64 -0
  334. package/src/animation/animation_group_player.js.map +1 -0
  335. package/src/animation/animation_keyframe.d.ts +6 -0
  336. package/src/animation/animation_keyframe.js +10 -0
  337. package/src/animation/animation_keyframe.js.map +1 -0
  338. package/src/animation/animation_player.d.ts +26 -0
  339. package/src/animation/animation_player.js +42 -0
  340. package/src/animation/animation_player.js.map +1 -0
  341. package/src/animation/animation_sequence_player.d.ts +21 -0
  342. package/src/animation/animation_sequence_player.js +69 -0
  343. package/src/animation/animation_sequence_player.js.map +1 -0
  344. package/src/animation/animation_style_util.d.ts +32 -0
  345. package/src/animation/animation_style_util.js +99 -0
  346. package/src/animation/animation_style_util.js.map +1 -0
  347. package/src/animation/animation_style_util.metadata.json +1 -0
  348. package/src/animation/animation_styles.d.ts +8 -0
  349. package/src/animation/animation_styles.js +9 -0
  350. package/src/animation/animation_styles.js.map +1 -0
  351. package/src/animation/metadata.d.ts +511 -0
  352. package/src/animation/metadata.js +627 -0
  353. package/src/animation/metadata.js.map +1 -0
  354. package/src/animation/metadata.metadata.json +1 -0
  355. package/src/application_common_providers.d.ts +1 -0
  356. package/src/application_common_providers.js +4 -3
  357. package/src/application_common_providers.js.map +1 -1
  358. package/src/application_common_providers.metadata.json +1 -1
  359. package/src/application_ref.d.ts +17 -41
  360. package/src/application_ref.js +30 -21
  361. package/src/application_ref.js.map +1 -1
  362. package/src/application_ref.metadata.json +1 -1
  363. package/src/application_tokens.d.ts +6 -1
  364. package/src/application_tokens.js +9 -4
  365. package/src/application_tokens.js.map +1 -1
  366. package/src/application_tokens.metadata.json +1 -1
  367. package/src/change_detection/change_detection.d.ts +9 -8
  368. package/src/change_detection/change_detection.js +21 -21
  369. package/src/change_detection/change_detection.js.map +1 -1
  370. package/src/change_detection/change_detection.metadata.json +1 -1
  371. package/src/change_detection/change_detection_util.d.ts +3 -1
  372. package/src/change_detection/change_detection_util.js +6 -5
  373. package/src/change_detection/change_detection_util.js.map +1 -1
  374. package/src/change_detection/change_detection_util.metadata.json +1 -1
  375. package/src/change_detection/change_detector_ref.d.ts +3 -0
  376. package/src/change_detection/change_detector_ref.js +3 -0
  377. package/src/change_detection/change_detector_ref.js.map +1 -1
  378. package/src/change_detection/constants.d.ts +1 -0
  379. package/src/change_detection/constants.js +4 -3
  380. package/src/change_detection/constants.js.map +1 -1
  381. package/src/change_detection/constants.metadata.json +1 -1
  382. package/src/change_detection/differs/default_iterable_differ.d.ts +6 -94
  383. package/src/change_detection/differs/default_iterable_differ.js +25 -18
  384. package/src/change_detection/differs/default_iterable_differ.js.map +1 -1
  385. package/src/change_detection/differs/default_keyvalue_differ.d.ts +3 -30
  386. package/src/change_detection/differs/default_keyvalue_differ.js +13 -8
  387. package/src/change_detection/differs/default_keyvalue_differ.js.map +1 -1
  388. package/src/change_detection/differs/iterable_differs.d.ts +4 -1
  389. package/src/change_detection/differs/iterable_differs.js +4 -3
  390. package/src/change_detection/differs/iterable_differs.js.map +1 -1
  391. package/src/change_detection/differs/keyvalue_differs.d.ts +2 -1
  392. package/src/change_detection/differs/keyvalue_differs.js +4 -3
  393. package/src/change_detection/differs/keyvalue_differs.js.map +1 -1
  394. package/src/change_detection/pipe_transform.js.map +1 -1
  395. package/src/change_detection.d.ts +1 -1
  396. package/src/change_detection.js +9 -9
  397. package/src/change_detection.js.map +1 -1
  398. package/src/console.js +2 -1
  399. package/src/console.js.map +1 -1
  400. package/src/console.metadata.json +1 -1
  401. package/src/debug/debug_node.d.ts +20 -2
  402. package/src/debug/debug_node.js +16 -2
  403. package/src/debug/debug_node.js.map +1 -1
  404. package/src/debug/debug_node.metadata.json +1 -0
  405. package/src/debug/debug_renderer.d.ts +10 -6
  406. package/src/debug/debug_renderer.js +12 -1
  407. package/src/debug/debug_renderer.js.map +1 -1
  408. package/src/di/decorators.d.ts +13 -1
  409. package/src/di/decorators.js +7 -1
  410. package/src/di/decorators.js.map +1 -1
  411. package/src/di/decorators.metadata.json +1 -1
  412. package/src/di/forward_ref.d.ts +3 -1
  413. package/src/di/forward_ref.js +3 -1
  414. package/src/di/forward_ref.js.map +1 -1
  415. package/src/di/injector.d.ts +4 -1
  416. package/src/di/injector.js +5 -2
  417. package/src/di/injector.js.map +1 -1
  418. package/src/di/injector.metadata.json +1 -1
  419. package/src/di/metadata.d.ts +8 -1
  420. package/src/di/metadata.js +10 -3
  421. package/src/di/metadata.js.map +1 -1
  422. package/src/di/opaque_token.d.ts +2 -1
  423. package/src/di/opaque_token.js +22 -21
  424. package/src/di/opaque_token.js.map +1 -1
  425. package/src/di/provider.d.ts +11 -10
  426. package/src/di/provider.js +17 -14
  427. package/src/di/provider.js.map +1 -1
  428. package/src/di/provider.metadata.json +1 -0
  429. package/src/di/provider_util.js.map +1 -1
  430. package/src/di/provider_util.metadata.json +1 -0
  431. package/src/di/reflective_exceptions.d.ts +11 -16
  432. package/src/di/reflective_exceptions.js +28 -22
  433. package/src/di/reflective_exceptions.js.map +1 -1
  434. package/src/di/reflective_injector.d.ts +3 -33
  435. package/src/di/reflective_injector.js +9 -6
  436. package/src/di/reflective_injector.js.map +1 -1
  437. package/src/di/reflective_key.d.ts +1 -8
  438. package/src/di/reflective_key.js +3 -2
  439. package/src/di/reflective_key.js.map +1 -1
  440. package/src/di/reflective_provider.d.ts +2 -1
  441. package/src/di/reflective_provider.js +6 -5
  442. package/src/di/reflective_provider.js.map +1 -1
  443. package/src/di/reflective_provider.metadata.json +1 -0
  444. package/src/di.d.ts +2 -2
  445. package/src/di.js +7 -9
  446. package/src/di.js.map +1 -1
  447. package/src/facade/async.d.ts +11 -4
  448. package/src/facade/async.js +27 -17
  449. package/src/facade/async.js.map +1 -1
  450. package/src/facade/base_wrapped_exception.js +4 -4
  451. package/src/facade/base_wrapped_exception.js.map +1 -1
  452. package/src/facade/collection.js.map +1 -1
  453. package/src/facade/collection.metadata.json +1 -1
  454. package/src/facade/exception_handler.d.ts +2 -11
  455. package/src/facade/exception_handler.js +8 -7
  456. package/src/facade/exception_handler.js.map +1 -1
  457. package/src/facade/exceptions.d.ts +4 -0
  458. package/src/facade/exceptions.js +6 -2
  459. package/src/facade/exceptions.js.map +1 -1
  460. package/src/facade/exceptions.metadata.json +1 -0
  461. package/src/facade/lang.d.ts +6 -4
  462. package/src/facade/lang.js +12 -11
  463. package/src/facade/lang.js.map +1 -1
  464. package/src/facade/lang.metadata.json +1 -1
  465. package/src/facade/math.d.ts +2 -0
  466. package/src/facade/math.js +5 -0
  467. package/src/facade/math.js.map +1 -0
  468. package/src/facade/math.metadata.json +1 -0
  469. package/src/facade/promise.js.map +1 -1
  470. package/src/linker/component_factory.d.ts +5 -4
  471. package/src/linker/component_factory.js +7 -3
  472. package/src/linker/component_factory.js.map +1 -1
  473. package/src/linker/component_resolver.d.ts +5 -4
  474. package/src/linker/component_resolver.js +12 -7
  475. package/src/linker/component_resolver.js.map +1 -1
  476. package/src/linker/component_resolver.metadata.json +1 -1
  477. package/src/linker/debug_context.js +5 -4
  478. package/src/linker/debug_context.js.map +1 -1
  479. package/src/linker/dynamic_component_loader.d.ts +5 -6
  480. package/src/linker/dynamic_component_loader.js +5 -3
  481. package/src/linker/dynamic_component_loader.js.map +1 -1
  482. package/src/linker/dynamic_component_loader.metadata.json +1 -1
  483. package/src/linker/element.d.ts +3 -3
  484. package/src/linker/element.js +5 -5
  485. package/src/linker/element.js.map +1 -1
  486. package/src/linker/element_injector.js.map +1 -1
  487. package/src/linker/element_ref.d.ts +1 -0
  488. package/src/linker/element_ref.js +5 -5
  489. package/src/linker/element_ref.js.map +1 -1
  490. package/src/linker/exceptions.d.ts +4 -1
  491. package/src/linker/exceptions.js +4 -1
  492. package/src/linker/exceptions.js.map +1 -1
  493. package/src/linker/query_list.d.ts +3 -10
  494. package/src/linker/query_list.js +8 -7
  495. package/src/linker/query_list.js.map +1 -1
  496. package/src/linker/systemjs_component_resolver.d.ts +21 -0
  497. package/src/linker/systemjs_component_resolver.js +52 -0
  498. package/src/linker/systemjs_component_resolver.js.map +1 -0
  499. package/src/linker/template_ref.d.ts +2 -1
  500. package/src/linker/template_ref.js +1 -0
  501. package/src/linker/template_ref.js.map +1 -1
  502. package/src/linker/view.d.ts +12 -1
  503. package/src/linker/view.js +65 -15
  504. package/src/linker/view.js.map +1 -1
  505. package/src/linker/view_container_ref.d.ts +2 -10
  506. package/src/linker/view_container_ref.js +4 -3
  507. package/src/linker/view_container_ref.js.map +1 -1
  508. package/src/linker/view_ref.d.ts +5 -1
  509. package/src/linker/view_ref.js +6 -2
  510. package/src/linker/view_ref.js.map +1 -1
  511. package/src/linker/view_type.js.map +1 -1
  512. package/src/linker/view_utils.d.ts +2 -4
  513. package/src/linker/view_utils.js +21 -21
  514. package/src/linker/view_utils.js.map +1 -1
  515. package/src/linker/view_utils.metadata.json +1 -1
  516. package/src/linker.d.ts +5 -4
  517. package/src/linker.js +12 -9
  518. package/src/linker.js.map +1 -1
  519. package/src/metadata/di.d.ts +8 -1
  520. package/src/metadata/di.js +10 -3
  521. package/src/metadata/di.js.map +1 -1
  522. package/src/metadata/directives.d.ts +104 -20
  523. package/src/metadata/directives.js +25 -27
  524. package/src/metadata/directives.js.map +1 -1
  525. package/src/metadata/lifecycle_hooks.d.ts +46 -31
  526. package/src/metadata/lifecycle_hooks.js +496 -10
  527. package/src/metadata/lifecycle_hooks.js.map +1 -1
  528. package/src/metadata/lifecycle_hooks.metadata.json +1 -1
  529. package/src/metadata/view.d.ts +6 -2
  530. package/src/metadata/view.js +3 -1
  531. package/src/metadata/view.js.map +1 -1
  532. package/src/metadata/view.metadata.json +1 -1
  533. package/src/metadata.d.ts +49 -15
  534. package/src/metadata.js +70 -37
  535. package/src/metadata.js.map +1 -1
  536. package/src/metadata.metadata.json +1 -1
  537. package/src/platform_common_providers.d.ts +1 -0
  538. package/src/platform_common_providers.js +3 -3
  539. package/src/platform_common_providers.js.map +1 -1
  540. package/src/platform_common_providers.metadata.json +1 -1
  541. package/src/platform_directives_and_pipes.d.ts +48 -45
  542. package/src/platform_directives_and_pipes.js +50 -47
  543. package/src/platform_directives_and_pipes.js.map +1 -1
  544. package/src/platform_directives_and_pipes.metadata.json +1 -1
  545. package/src/profile/profile.d.ts +5 -1
  546. package/src/profile/profile.js +5 -3
  547. package/src/profile/profile.js.map +1 -1
  548. package/src/profile/profile.metadata.json +1 -1
  549. package/src/profile/wtf_impl.js +1 -1
  550. package/src/profile/wtf_impl.js.map +1 -1
  551. package/src/profile/wtf_impl.metadata.json +1 -0
  552. package/src/profile/wtf_init.js +2 -2
  553. package/src/profile/wtf_init.js.map +1 -1
  554. package/src/reflection/platform_reflection_capabilities.d.ts +4 -3
  555. package/src/reflection/platform_reflection_capabilities.js.map +1 -1
  556. package/src/reflection/reflection.d.ts +1 -1
  557. package/src/reflection/reflection.js +2 -2
  558. package/src/reflection/reflection.js.map +1 -1
  559. package/src/reflection/reflection.metadata.json +1 -1
  560. package/src/reflection/reflection_capabilities.d.ts +4 -5
  561. package/src/reflection/reflection_capabilities.js +24 -10
  562. package/src/reflection/reflection_capabilities.js.map +1 -1
  563. package/src/reflection/reflector.d.ts +8 -20
  564. package/src/reflection/reflector.js +13 -3
  565. package/src/reflection/reflector.js.map +1 -1
  566. package/src/reflection/reflector_reader.js +3 -3
  567. package/src/reflection/reflector_reader.js.map +1 -1
  568. package/src/reflection/types.js.map +1 -1
  569. package/src/render/api.d.ts +17 -6
  570. package/src/render/api.js +8 -1
  571. package/src/render/api.js.map +1 -1
  572. package/src/render.d.ts +1 -1
  573. package/src/render.js +2 -2
  574. package/src/render.js.map +1 -1
  575. package/src/security.js +6 -6
  576. package/src/security.js.map +1 -1
  577. package/src/testability/testability.d.ts +3 -19
  578. package/src/testability/testability.js +10 -5
  579. package/src/testability/testability.js.map +1 -1
  580. package/src/testability/testability.metadata.json +1 -1
  581. package/src/util/decorators.d.ts +2 -1
  582. package/src/util/decorators.js +10 -9
  583. package/src/util/decorators.js.map +1 -1
  584. package/src/util.js.map +1 -1
  585. package/src/zone/ng_zone.d.ts +6 -17
  586. package/src/zone/ng_zone.js +11 -6
  587. package/src/zone/ng_zone.js.map +1 -1
  588. package/src/zone/ng_zone_impl.d.ts +1 -4
  589. package/src/zone/ng_zone_impl.js +3 -2
  590. package/src/zone/ng_zone_impl.js.map +1 -1
  591. package/src/zone.js.map +1 -1
  592. package/testing/async.js +20 -22
  593. package/testing/async.js.map +1 -1
  594. package/testing/async.metadata.json +1 -0
  595. package/testing/async_test_completer.js.map +1 -1
  596. package/testing/fake_async.d.ts +4 -1
  597. package/testing/fake_async.js +10 -2
  598. package/testing/fake_async.js.map +1 -1
  599. package/testing/lang_utils.js +1 -1
  600. package/testing/lang_utils.js.map +1 -1
  601. package/testing/lang_utils.metadata.json +1 -0
  602. package/testing/logger.js +5 -3
  603. package/testing/logger.js.map +1 -1
  604. package/testing/logger.metadata.json +1 -1
  605. package/testing/mock_application_ref.d.ts +1 -1
  606. package/testing/mock_application_ref.js +1 -0
  607. package/testing/mock_application_ref.js.map +1 -1
  608. package/testing/mock_application_ref.metadata.json +1 -1
  609. package/testing/ng_zone_mock.d.ts +0 -1
  610. package/testing/ng_zone_mock.js +2 -1
  611. package/testing/ng_zone_mock.js.map +1 -1
  612. package/testing/ng_zone_mock.metadata.json +1 -1
  613. package/testing/regexp.js +1 -1
  614. package/testing/regexp.js.map +1 -1
  615. package/testing/regexp.metadata.json +1 -0
  616. package/testing/test_injector.d.ts +6 -12
  617. package/testing/test_injector.js +3 -9
  618. package/testing/test_injector.js.map +1 -1
  619. package/testing/test_injector.metadata.json +1 -0
  620. package/testing/testing.d.ts +2 -2
  621. package/testing/testing.js +5 -5
  622. package/testing/testing.js.map +1 -1
  623. package/testing/testing.metadata.json +1 -1
  624. package/testing.js.map +1 -1
@@ -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,6 +1,6 @@
1
- import { MapWrapper, StringMapWrapper } from '../../../src/facade/collection';
2
- import { stringify, looseIdentical, isJsObject, isBlank } from '../../../src/facade/lang';
3
- import { BaseException } from '../../../src/facade/exceptions';
1
+ import { MapWrapper, StringMapWrapper } from '../../facade/collection';
2
+ import { BaseException } from '../../facade/exceptions';
3
+ import { isBlank, isJsObject, looseIdentical, stringify } from '../../facade/lang';
4
4
  /* @ts2dart_const */
5
5
  export class DefaultKeyValueDifferFactory {
6
6
  constructor() {
@@ -75,7 +75,7 @@ export class DefaultKeyValueDiffer {
75
75
  var lastOldSeqRecord = null;
76
76
  var lastNewSeqRecord = null;
77
77
  var seqChanged = false;
78
- this._forEach(map, (value, key) => {
78
+ this._forEach(map, (value /** TODO #9100 */, key /** TODO #9100 */) => {
79
79
  var newSeqRecord;
80
80
  if (oldSeqRecord !== null && key === oldSeqRecord.key) {
81
81
  newSeqRecord = oldSeqRecord;
@@ -301,12 +301,14 @@ export class DefaultKeyValueDiffer {
301
301
  for (record = this._removalsHead; record !== null; record = record._nextRemoved) {
302
302
  removals.push(stringify(record));
303
303
  }
304
- return "map: " + items.join(', ') + "\n" + "previous: " + previous.join(', ') + "\n" +
305
- "additions: " + additions.join(', ') + "\n" + "changes: " + changes.join(', ') + "\n" +
306
- "removals: " + removals.join(', ') + "\n";
304
+ return 'map: ' + items.join(', ') + '\n' +
305
+ 'previous: ' + previous.join(', ') + '\n' +
306
+ 'additions: ' + additions.join(', ') + '\n' +
307
+ 'changes: ' + changes.join(', ') + '\n' +
308
+ 'removals: ' + removals.join(', ') + '\n';
307
309
  }
308
310
  /** @internal */
309
- _forEach(obj, fn) {
311
+ _forEach(obj /** TODO #9100 */, fn) {
310
312
  if (obj instanceof Map) {
311
313
  obj.forEach(fn);
312
314
  }
@@ -315,6 +317,9 @@ export class DefaultKeyValueDiffer {
315
317
  }
316
318
  }
317
319
  }
320
+ /**
321
+ * @stable
322
+ */
318
323
  export class KeyValueChangeRecord {
319
324
  constructor(key) {
320
325
  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,10 +1,11 @@
1
- import { isBlank, isPresent, getTypeNameForDebugging } from '../../../src/facade/lang';
2
- import { BaseException } from '../../../src/facade/exceptions';
3
- import { ListWrapper } from '../../../src/facade/collection';
4
- import { Provider, SkipSelfMetadata, OptionalMetadata } from '../../di';
1
+ import { OptionalMetadata, Provider, SkipSelfMetadata } from '../../di';
2
+ import { ListWrapper } from '../../facade/collection';
3
+ import { BaseException } from '../../facade/exceptions';
4
+ import { getTypeNameForDebugging, isBlank, isPresent } from '../../facade/lang';
5
5
  /**
6
6
  * A repository of different iterable diffing strategies used by NgFor, NgClass, and others.
7
7
  * @ts2dart_const
8
+ * @stable
8
9
  */
9
10
  export class IterableDiffers {
10
11
  /*@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":"OAIS,EAAC,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAC,MAAM,0BAA0B;OAC/E,EAAC,aAAa,EAAC,MAAM,gCAAgC;OACrD,EAAC,WAAW,EAAC,MAAM,gCAAgC;OAEnD,EAAC,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,UAAU;AA0BrE;;;GAGG;AACH;IACE,kBAAkB;IAClB,YAAmB,SAAkC;QAAlC,cAAS,GAAT,SAAS,CAAyB;IAAG,CAAC;IAEzD,OAAO,MAAM,CAAC,SAAkC,EAAE,MAAwB;QACxE,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,MAAM,GAAG,WAAW,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;IACH,OAAO,MAAM,CAAC,SAAkC;QAC9C,MAAM,CAAC,IAAI,QAAQ,CAAC,eAAe,EAAE;YACnC,UAAU,EAAE,CAAC,MAAuB;gBAClC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpB,0FAA0F;oBAC1F,KAAK;oBACL,6EAA6E;oBAC7E,MAAM,IAAI,aAAa,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,gBAAgB,EAAE,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,QAAa;QAChB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC;QACjB,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,IAAI,aAAa,CACnB,2CAA2C,QAAQ,cAAc,uBAAuB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;AACH,CAAC;AAAA","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {isBlank, isPresent, getTypeNameForDebugging} from '../../../src/facade/lang';\nimport {BaseException} from '../../../src/facade/exceptions';\nimport {ListWrapper} from '../../../src/facade/collection';\nimport {ChangeDetectorRef} from '../change_detector_ref';\nimport {Provider, SkipSelfMetadata, OptionalMetadata} from '../../di';\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 */\nexport interface IterableDiffer {\n diff(object: any): any;\n onDestroy();\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 */\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"]}
1
+ {"version":3,"file":"iterable_differs.js","sourceRoot":"","sources":["../../../../../../../modules/@angular/core/src/change_detection/differs/iterable_differs.ts"],"names":[],"mappings":"OAAO,EAAC,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAC,MAAM,UAAU;OAC9D,EAAC,WAAW,EAAC,MAAM,yBAAyB;OAC5C,EAAC,aAAa,EAAC,MAAM,yBAAyB;OAC9C,EAAC,uBAAuB,EAAE,OAAO,EAAE,SAAS,EAAC,MAAM,mBAAmB;AA8B7E;;;;GAIG;AACH;IACE,kBAAkB;IAClB,YAAmB,SAAkC;QAAlC,cAAS,GAAT,SAAS,CAAyB;IAAG,CAAC;IAEzD,OAAO,MAAM,CAAC,SAAkC,EAAE,MAAwB;QACxE,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,MAAM,GAAG,WAAW,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;IACH,OAAO,MAAM,CAAC,SAAkC;QAC9C,MAAM,CAAC,IAAI,QAAQ,CAAC,eAAe,EAAE;YACnC,UAAU,EAAE,CAAC,MAAuB;gBAClC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpB,0FAA0F;oBAC1F,KAAK;oBACL,6EAA6E;oBAC7E,MAAM,IAAI,aAAa,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,gBAAgB,EAAE,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,QAAa;QAChB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC;QACjB,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,IAAI,aAAa,CACnB,2CAA2C,QAAQ,cAAc,uBAAuB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;AACH,CAAC;AAAA","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,10 +1,11 @@
1
- import { isBlank, isPresent } from '../../../src/facade/lang';
2
- import { BaseException } from '../../../src/facade/exceptions';
3
- import { ListWrapper } from '../../../src/facade/collection';
4
- import { Provider, SkipSelfMetadata, OptionalMetadata } from '../../di';
1
+ import { OptionalMetadata, Provider, SkipSelfMetadata } from '../../di';
2
+ import { ListWrapper } from '../../facade/collection';
3
+ import { BaseException } from '../../facade/exceptions';
4
+ import { isBlank, isPresent } from '../../facade/lang';
5
5
  /**
6
6
  * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.
7
7
  * @ts2dart_const
8
+ * @stable
8
9
  */
9
10
  export class KeyValueDiffers {
10
11
  /*@ts2dart_const*/
@@ -1 +1 @@
1
- {"version":3,"file":"keyvalue_differs.js","sourceRoot":"","sources":["../../../../../../../modules/@angular/core/src/change_detection/differs/keyvalue_differs.ts"],"names":[],"mappings":"OAIS,EAAC,OAAO,EAAE,SAAS,EAAC,MAAM,0BAA0B;OACtD,EAAC,aAAa,EAAC,MAAM,gCAAgC;OACrD,EAAC,WAAW,EAAC,MAAM,gCAAgC;OAEnD,EAAC,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAC,MAAM,UAAU;AAkBrE;;;GAGG;AACH;IACE,kBAAkB;IAClB,YAAmB,SAAkC;QAAlC,cAAS,GAAT,SAAS,CAAyB;IAAG,CAAC;IAEzD,OAAO,MAAM,CAAC,SAAkC,EAAE,MAAwB;QACxE,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,MAAM,GAAG,WAAW,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;IACH,OAAO,MAAM,CAAC,SAAkC;QAC9C,MAAM,CAAC,IAAI,QAAQ,CAAC,eAAe,EAAE;YACnC,UAAU,EAAE,CAAC,MAAuB;gBAClC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpB,0FAA0F;oBAC1F,KAAK;oBACL,6EAA6E;oBAC7E,MAAM,IAAI,aAAa,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,gBAAgB,EAAE,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,EAAU;QACb,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC;QACjB,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,IAAI,aAAa,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AAAA","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {isBlank, isPresent} from '../../../src/facade/lang';\nimport {BaseException} from '../../../src/facade/exceptions';\nimport {ListWrapper} from '../../../src/facade/collection';\nimport {ChangeDetectorRef} from '../change_detector_ref';\nimport {Provider, SkipSelfMetadata, OptionalMetadata} from '../../di';\n\n/**\n * A differ that tracks changes made to an object over time.\n */\nexport interface KeyValueDiffer {\n diff(object: any);\n onDestroy();\n}\n\n/**\n * Provides a factory for {@link KeyValueDiffer}.\n */\nexport interface KeyValueDifferFactory {\n supports(objects: any): boolean;\n create(cdRef: ChangeDetectorRef): KeyValueDiffer;\n}\n\n/**\n * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.\n * @ts2dart_const\n */\nexport class KeyValueDiffers {\n /*@ts2dart_const*/\n constructor(public factories: KeyValueDifferFactory[]) {}\n\n static create(factories: KeyValueDifferFactory[], parent?: KeyValueDiffers): KeyValueDiffers {\n if (isPresent(parent)) {\n var copied = ListWrapper.clone(parent.factories);\n factories = factories.concat(copied);\n return new KeyValueDiffers(factories);\n } else {\n return new KeyValueDiffers(factories);\n }\n }\n\n /**\n * Takes an array of {@link KeyValueDifferFactory} and returns a provider used to extend the\n * inherited {@link KeyValueDiffers} instance with the provided factories and return a new\n * {@link KeyValueDiffers} 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 KeyValueDiffer} available.\n *\n * ### Example\n *\n * ```\n * @Component({\n * viewProviders: [\n * KeyValueDiffers.extend([new ImmutableMapDiffer()])\n * ]\n * })\n * ```\n */\n static extend(factories: KeyValueDifferFactory[]): Provider {\n return new Provider(KeyValueDiffers, {\n useFactory: (parent: KeyValueDiffers) => {\n if (isBlank(parent)) {\n // Typically would occur when calling KeyValueDiffers.extend inside of dependencies passed\n // to\n // bootstrap(), which would override default pipes instead of extending them.\n throw new BaseException('Cannot extend KeyValueDiffers without a parent injector');\n }\n return KeyValueDiffers.create(factories, parent);\n },\n // Dependency technically isn't optional, but we can provide a better error message this way.\n deps: [[KeyValueDiffers, new SkipSelfMetadata(), new OptionalMetadata()]]\n });\n }\n\n find(kv: Object): KeyValueDifferFactory {\n var factory = this.factories.find(f => f.supports(kv));\n if (isPresent(factory)) {\n return factory;\n } else {\n throw new BaseException(`Cannot find a differ supporting object '${kv}'`);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"keyvalue_differs.js","sourceRoot":"","sources":["../../../../../../../modules/@angular/core/src/change_detection/differs/keyvalue_differs.ts"],"names":[],"mappings":"OAAO,EAAC,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAC,MAAM,UAAU;OAC9D,EAAC,WAAW,EAAC,MAAM,yBAAyB;OAC5C,EAAC,aAAa,EAAC,MAAM,yBAAyB;OAC9C,EAAC,OAAO,EAAE,SAAS,EAAC,MAAM,mBAAmB;AAoBpD;;;;GAIG;AACH;IACE,kBAAkB;IAClB,YAAmB,SAAkC;QAAlC,cAAS,GAAT,SAAS,CAAyB;IAAG,CAAC;IAEzD,OAAO,MAAM,CAAC,SAAkC,EAAE,MAAwB;QACxE,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,MAAM,GAAG,WAAW,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;IACH,OAAO,MAAM,CAAC,SAAkC;QAC9C,MAAM,CAAC,IAAI,QAAQ,CAAC,eAAe,EAAE;YACnC,UAAU,EAAE,CAAC,MAAuB;gBAClC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACpB,0FAA0F;oBAC1F,KAAK;oBACL,6EAA6E;oBAC7E,MAAM,IAAI,aAAa,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,gBAAgB,EAAE,EAAE,IAAI,gBAAgB,EAAE,CAAC,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,EAAU;QACb,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC;QACjB,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,IAAI,aAAa,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AAAA","sourcesContent":["import {OptionalMetadata, Provider, SkipSelfMetadata} from '../../di';\nimport {ListWrapper} from '../../facade/collection';\nimport {BaseException} from '../../facade/exceptions';\nimport {isBlank, isPresent} from '../../facade/lang';\nimport {ChangeDetectorRef} from '../change_detector_ref';\n\n\n/**\n * A differ that tracks changes made to an object over time.\n */\nexport interface KeyValueDiffer {\n diff(object: any): any /** TODO #9100 */;\n onDestroy(): any /** TODO #9100 */;\n}\n\n/**\n * Provides a factory for {@link KeyValueDiffer}.\n */\nexport interface KeyValueDifferFactory {\n supports(objects: any): boolean;\n create(cdRef: ChangeDetectorRef): KeyValueDiffer;\n}\n\n/**\n * A repository of different Map diffing strategies used by NgClass, NgStyle, and others.\n * @ts2dart_const\n * @stable\n */\nexport class KeyValueDiffers {\n /*@ts2dart_const*/\n constructor(public factories: KeyValueDifferFactory[]) {}\n\n static create(factories: KeyValueDifferFactory[], parent?: KeyValueDiffers): KeyValueDiffers {\n if (isPresent(parent)) {\n var copied = ListWrapper.clone(parent.factories);\n factories = factories.concat(copied);\n return new KeyValueDiffers(factories);\n } else {\n return new KeyValueDiffers(factories);\n }\n }\n\n /**\n * Takes an array of {@link KeyValueDifferFactory} and returns a provider used to extend the\n * inherited {@link KeyValueDiffers} instance with the provided factories and return a new\n * {@link KeyValueDiffers} 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 KeyValueDiffer} available.\n *\n * ### Example\n *\n * ```\n * @Component({\n * viewProviders: [\n * KeyValueDiffers.extend([new ImmutableMapDiffer()])\n * ]\n * })\n * ```\n */\n static extend(factories: KeyValueDifferFactory[]): Provider {\n return new Provider(KeyValueDiffers, {\n useFactory: (parent: KeyValueDiffers) => {\n if (isBlank(parent)) {\n // Typically would occur when calling KeyValueDiffers.extend inside of dependencies passed\n // to\n // bootstrap(), which would override default pipes instead of extending them.\n throw new BaseException('Cannot extend KeyValueDiffers without a parent injector');\n }\n return KeyValueDiffers.create(factories, parent);\n },\n // Dependency technically isn't optional, but we can provide a better error message this way.\n deps: [[KeyValueDiffers, new SkipSelfMetadata(), new OptionalMetadata()]]\n });\n }\n\n find(kv: Object): KeyValueDifferFactory {\n var factory = this.factories.find(f => f.supports(kv));\n if (isPresent(factory)) {\n return factory;\n } else {\n throw new BaseException(`Cannot find a differ supporting object '${kv}'`);\n }\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"pipe_transform.js","sourceRoot":"","sources":["../../../../../../modules/@angular/core/src/change_detection/pipe_transform.ts"],"names":[],"mappings":"","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n /**\n * To create a Pipe, you must implement this interface.\n *\n * Angular invokes the `transform` method with the value of a binding\n * as the first argument, and any parameters as the second argument in list form.\n *\n * ## Syntax\n *\n * `value | pipeName[:arg0[:arg1...]]`\n *\n * ### Example ([live demo](http://plnkr.co/edit/f5oyIked9M2cKzvZNKHV?p=preview))\n *\n * The `RepeatPipe` below repeats the value as many times as indicated by the first argument:\n *\n * ```\n * import {Pipe, PipeTransform} from '@angular/core';\n *\n * @Pipe({name: 'repeat'})\n * export class RepeatPipe implements PipeTransform {\n * transform(value: any, times: number) {\n * return value.repeat(times);\n * }\n * }\n * ```\n *\n * Invoking `{{ 'ok' | repeat:3 }}` in a template produces `okokok`.\n *\n */\nexport interface PipeTransform { transform(value: any, ...args: any[]): any; }\n"]}
1
+ {"version":3,"file":"pipe_transform.js","sourceRoot":"","sources":["../../../../../../modules/@angular/core/src/change_detection/pipe_transform.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * To create a Pipe, you must implement this interface.\n *\n * Angular invokes the `transform` method with the value of a binding\n * as the first argument, and any parameters as the second argument in list form.\n *\n * ## Syntax\n *\n * `value | pipeName[:arg0[:arg1...]]`\n *\n * ### Example ([live demo](http://plnkr.co/edit/f5oyIked9M2cKzvZNKHV?p=preview))\n *\n * The `RepeatPipe` below repeats the value as many times as indicated by the first argument:\n *\n * ```\n * import {Pipe, PipeTransform} from '@angular/core';\n *\n * @Pipe({name: 'repeat'})\n * export class RepeatPipe implements PipeTransform {\n * transform(value: any, times: number) {\n * return value.repeat(times);\n * }\n * }\n * ```\n *\n * Invoking `{{ 'ok' | repeat:3 }}` in a template produces `okokok`.\n *\n */\nexport interface PipeTransform { transform(value: any, ...args: any[]): any; }\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
@@ -3,4 +3,4 @@
3
3
  * @description
4
4
  * Change detection enables data binding in Angular.
5
5
  */
6
- export { ChangeDetectionStrategy, ChangeDetectorRef, WrappedValue, SimpleChange, PipeTransform, DefaultIterableDiffer, IterableDiffers, IterableDiffer, IterableDifferFactory, KeyValueDiffers, KeyValueDiffer, KeyValueDifferFactory, CollectionChangeRecord, KeyValueChangeRecord, TrackByFn } from './change_detection/change_detection';
6
+ export { ChangeDetectionStrategy, ChangeDetectorRef, CollectionChangeRecord, DefaultIterableDiffer, IterableDiffer, IterableDifferFactory, IterableDiffers, KeyValueChangeRecord, KeyValueDiffer, KeyValueDifferFactory, KeyValueDiffers, PipeTransform, SimpleChange, SimpleChanges, TrackByFn, WrappedValue } from './change_detection/change_detection';
@@ -1,7 +1,7 @@
1
1
  /**
2
- * @module
3
- * @description
4
- * Change detection enables data binding in Angular.
5
- */
6
- export { ChangeDetectionStrategy, ChangeDetectorRef, WrappedValue, SimpleChange, DefaultIterableDiffer, IterableDiffers, KeyValueDiffers, CollectionChangeRecord, KeyValueChangeRecord } from './change_detection/change_detection';
2
+ * @module
3
+ * @description
4
+ * Change detection enables data binding in Angular.
5
+ */
6
+ export { ChangeDetectionStrategy, ChangeDetectorRef, CollectionChangeRecord, DefaultIterableDiffer, IterableDiffers, KeyValueChangeRecord, KeyValueDiffers, SimpleChange, WrappedValue } from './change_detection/change_detection';
7
7
  //# sourceMappingURL=change_detection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"change_detection.js","sourceRoot":"","sources":["../../../../../modules/@angular/core/src/change_detection.ts"],"names":[],"mappings":"AAIE;;;;EAIC;AAEH,SACE,uBAAuB,EAEvB,iBAAiB,EAEjB,YAAY,EACZ,YAAY,EAEZ,qBAAqB,EACrB,eAAe,EAGf,eAAe,EAGf,sBAAsB,EACtB,oBAAoB,QAEf,qCAAqC,CAAC","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n /**\n * @module\n * @description\n * Change detection enables data binding in Angular.\n */\n\nexport {\n ChangeDetectionStrategy,\n\n ChangeDetectorRef,\n\n WrappedValue,\n SimpleChange,\n PipeTransform,\n DefaultIterableDiffer,\n IterableDiffers,\n IterableDiffer,\n IterableDifferFactory,\n KeyValueDiffers,\n KeyValueDiffer,\n KeyValueDifferFactory,\n CollectionChangeRecord,\n KeyValueChangeRecord,\n TrackByFn\n} from './change_detection/change_detection';\n"]}
1
+ {"version":3,"file":"change_detection.js","sourceRoot":"","sources":["../../../../../modules/@angular/core/src/change_detection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,SAAQ,uBAAuB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,qBAAqB,EAAyC,eAAe,EAAE,oBAAoB,EAAyC,eAAe,EAAiB,YAAY,EAA4B,YAAY,QAAO,qCAAqC,CAAC","sourcesContent":["/**\n * @module\n * @description\n * Change detection enables data binding in Angular.\n */\n\nexport {ChangeDetectionStrategy, ChangeDetectorRef, CollectionChangeRecord, DefaultIterableDiffer, IterableDiffer, IterableDifferFactory, IterableDiffers, KeyValueChangeRecord, KeyValueDiffer, KeyValueDifferFactory, KeyValueDiffers, PipeTransform, SimpleChange, SimpleChanges, TrackByFn, WrappedValue} from './change_detection/change_detection';\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { print, warn } from './facade/lang';
2
1
  import { Injectable } from './di/decorators';
2
+ import { print, warn } from './facade/lang';
3
3
  // Note: Need to rename warn as in Dart
4
4
  // class members and imports can't use the same name.
5
5
  let _warnImpl = warn;
@@ -8,6 +8,7 @@ export class Console {
8
8
  // Note: for reporting errors use `DOM.logError()` as it is platform specific
9
9
  warn(message) { _warnImpl(message); }
10
10
  }
11
+ /** @nocollapse */
11
12
  Console.decorators = [
12
13
  { type: Injectable },
13
14
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../../../modules/@angular/core/src/console.ts"],"names":[],"mappings":"OAIS,EAAC,KAAK,EAAE,IAAI,EAAC,MAAM,eAAe;OACpC,EAAC,UAAU,EAAC,MAAM,iBAAiB;AAE1C,uCAAuC;AACvC,qDAAqD;AACrD,IAAI,SAAS,GAAG,IAAI,CAAC;AACrB;IACE,GAAG,CAAC,OAAe,IAAU,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,6EAA6E;IAC7E,IAAI,CAAC,OAAe,IAAU,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAIrD,CAAC;AAHM,kBAAU,GAA0B;IAC3C,EAAE,IAAI,EAAE,UAAU,EAAE;CACnB,CACA","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {print, warn} from './facade/lang';\nimport {Injectable} from './di/decorators';\n\n// Note: Need to rename warn as in Dart\n// class members and imports can't use the same name.\nlet _warnImpl = warn;\nexport class Console {\n log(message: string): void { print(message); }\n // Note: for reporting errors use `DOM.logError()` as it is platform specific\n warn(message: string): void { _warnImpl(message); }\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n}\n"]}
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../../../modules/@angular/core/src/console.ts"],"names":[],"mappings":"OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB;OACnC,EAAC,KAAK,EAAE,IAAI,EAAC,MAAM,eAAe;AAGzC,uCAAuC;AACvC,qDAAqD;AACrD,IAAI,SAAS,GAAG,IAAI,CAAC;AACrB;IACE,GAAG,CAAC,OAAe,IAAU,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,6EAA6E;IAC7E,IAAI,CAAC,OAAe,IAAU,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAKrD,CAAC;AAJD,kBAAkB;AACX,kBAAU,GAA0B;IAC3C,EAAE,IAAI,EAAE,UAAU,EAAE;CACnB,CACA","sourcesContent":["import {Injectable} from './di/decorators';\nimport {print, warn} from './facade/lang';\n\n\n// Note: Need to rename warn as in Dart\n// class members and imports can't use the same name.\nlet _warnImpl = warn;\nexport class Console {\n log(message: string): void { print(message); }\n // Note: for reporting errors use `DOM.logError()` as it is platform specific\n warn(message: string): void { _warnImpl(message); }\n/** @nocollapse */\nstatic decorators: DecoratorInvocation[] = [\n{ type: Injectable },\n];\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}