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