@angular/core 2.2.0-rc.0 → 2.2.3

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 (100) hide show
  1. package/bundles/core-testing.umd.js +44 -11
  2. package/bundles/core.umd.js +560 -513
  3. package/bundles/core.umd.min.js +8 -8
  4. package/package.json +1 -1
  5. package/src/animation/animation_group_player.d.ts +3 -1
  6. package/src/animation/animation_group_player.js +18 -7
  7. package/src/animation/animation_group_player.js.map +1 -1
  8. package/src/animation/animation_player.d.ts +1 -1
  9. package/src/animation/animation_player.js +1 -1
  10. package/src/animation/animation_player.js.map +1 -1
  11. package/src/animation/animation_queue.js +8 -0
  12. package/src/animation/animation_queue.js.map +1 -1
  13. package/src/animation/animation_sequence_player.d.ts +3 -1
  14. package/src/animation/animation_sequence_player.js +20 -8
  15. package/src/animation/animation_sequence_player.js.map +1 -1
  16. package/src/animation/animation_style_util.js +1 -0
  17. package/src/animation/animation_style_util.js.map +1 -1
  18. package/src/animation/animation_style_util.metadata.json +1 -1
  19. package/src/animation/metadata.js.map +1 -1
  20. package/src/animation/view_animation_map.js.map +1 -1
  21. package/src/change_detection/constants.d.ts +1 -1
  22. package/src/change_detection/constants.js +1 -1
  23. package/src/change_detection/constants.js.map +1 -1
  24. package/src/change_detection/differs/default_iterable_differ.js +2 -2
  25. package/src/change_detection/differs/default_iterable_differ.js.map +1 -1
  26. package/src/change_detection/differs/default_keyvalue_differ.js.map +1 -1
  27. package/src/change_detection/differs/iterable_differs.js.map +1 -1
  28. package/src/change_detection/differs/keyvalue_differs.js.map +1 -1
  29. package/src/core_private_export.d.ts +8 -3
  30. package/src/core_private_export.js +6 -2
  31. package/src/core_private_export.js.map +1 -1
  32. package/src/core_private_export.metadata.json +1 -1
  33. package/src/debug/debug_node.js +12 -24
  34. package/src/debug/debug_node.js.map +1 -1
  35. package/src/debug/debug_node.metadata.json +1 -1
  36. package/src/debug/debug_renderer.d.ts +2 -2
  37. package/src/debug/debug_renderer.js +7 -5
  38. package/src/debug/debug_renderer.js.map +1 -1
  39. package/src/di/reflective_errors.js.map +1 -1
  40. package/src/di/reflective_injector.js.map +1 -1
  41. package/src/di/reflective_key.js.map +1 -1
  42. package/src/di/reflective_provider.js +13 -14
  43. package/src/di/reflective_provider.js.map +1 -1
  44. package/src/facade/collection.d.ts +2 -10
  45. package/src/facade/collection.js +8 -73
  46. package/src/facade/collection.js.map +1 -1
  47. package/src/facade/lang.d.ts +0 -1
  48. package/src/facade/lang.js +5 -24
  49. package/src/facade/lang.js.map +1 -1
  50. package/src/facade/lang.metadata.json +1 -1
  51. package/src/linker/animation_view_context.d.ts +1 -1
  52. package/src/linker/animation_view_context.js +16 -5
  53. package/src/linker/animation_view_context.js.map +1 -1
  54. package/src/linker/component_factory.d.ts +8 -6
  55. package/src/linker/component_factory.js +17 -23
  56. package/src/linker/component_factory.js.map +1 -1
  57. package/src/linker/component_factory_resolver.js.map +1 -1
  58. package/src/linker/debug_context.js +6 -9
  59. package/src/linker/debug_context.js.map +1 -1
  60. package/src/linker/element_injector.js +1 -8
  61. package/src/linker/element_injector.js.map +1 -1
  62. package/src/linker/ng_module_factory.js.map +1 -1
  63. package/src/linker/ng_module_factory_loader.js.map +1 -1
  64. package/src/linker/system_js_ng_module_factory_loader.js +2 -1
  65. package/src/linker/system_js_ng_module_factory_loader.js.map +1 -1
  66. package/src/linker/template_ref.d.ts +5 -4
  67. package/src/linker/template_ref.js +8 -6
  68. package/src/linker/template_ref.js.map +1 -1
  69. package/src/linker/view.d.ts +29 -17
  70. package/src/linker/view.js +143 -51
  71. package/src/linker/view.js.map +1 -1
  72. package/src/linker/{element.d.ts → view_container.d.ts} +4 -7
  73. package/src/linker/{element.js → view_container.js} +45 -50
  74. package/src/linker/view_container.js.map +1 -0
  75. package/src/linker/view_container_ref.d.ts +2 -2
  76. package/src/linker/view_container_ref.js.map +1 -1
  77. package/src/linker/view_utils.d.ts +6 -10
  78. package/src/linker/view_utils.js +17 -14
  79. package/src/linker/view_utils.js.map +1 -1
  80. package/src/linker/view_utils.metadata.json +1 -1
  81. package/src/profile/wtf_impl.js.map +1 -1
  82. package/src/reflection/reflection_capabilities.js +5 -2
  83. package/src/reflection/reflection_capabilities.js.map +1 -1
  84. package/src/render/api.d.ts +8 -1
  85. package/src/render/api.js.map +1 -1
  86. package/src/testability/testability.js +2 -3
  87. package/src/testability/testability.js.map +1 -1
  88. package/src/util/decorators.js.map +1 -1
  89. package/testing/async.js.map +1 -1
  90. package/testing/facade/lang.d.ts +0 -1
  91. package/testing/facade/lang.js +5 -24
  92. package/testing/facade/lang.js.map +1 -1
  93. package/testing/facade/lang.metadata.json +1 -1
  94. package/testing/fake_async.js.map +1 -1
  95. package/testing/mock_animation_player.d.ts +16 -1
  96. package/testing/mock_animation_player.js +43 -14
  97. package/testing/mock_animation_player.js.map +1 -1
  98. package/testing/test_bed.js.map +1 -1
  99. package/testing/testing.js.map +1 -1
  100. package/src/linker/element.js.map +0 -1
@@ -11,6 +11,7 @@ var __extends = (this && this.__extends) || function (d, b) {
11
11
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
12
  };
13
13
  import { ChangeDetectorStatus } from '../change_detection/change_detection';
14
+ import { THROW_IF_NOT_FOUND } from '../di/injector';
14
15
  import { isPresent } from '../facade/lang';
15
16
  import { wtfCreateScope, wtfLeave } from '../profile/profile';
16
17
  import { AnimationViewContext } from './animation_view_context';
@@ -21,28 +22,37 @@ import { ViewRef_ } from './view_ref';
21
22
  import { ViewType } from './view_type';
22
23
  import { addToArray } from './view_utils';
23
24
  var _scope_check = wtfCreateScope("AppView#check(ascii id)");
25
+ /**
26
+ * @experimental
27
+ */
28
+ var EMPTY_CONTEXT = new Object();
29
+ var UNDEFINED = new Object();
24
30
  /**
25
31
  * Cost of making objects: http://jsperf.com/instantiate-size-of-object
26
32
  *
27
33
  */
28
34
  export var AppView = (function () {
29
- function AppView(clazz, componentType, type, viewUtils, parentInjector, declarationAppElement, cdMode) {
35
+ function AppView(clazz, componentType, type, viewUtils, parentView, parentIndex, parentElement, cdMode, declaredViewContainer) {
36
+ if (declaredViewContainer === void 0) { declaredViewContainer = null; }
30
37
  this.clazz = clazz;
31
38
  this.componentType = componentType;
32
39
  this.type = type;
33
40
  this.viewUtils = viewUtils;
34
- this.parentInjector = parentInjector;
35
- this.declarationAppElement = declarationAppElement;
41
+ this.parentView = parentView;
42
+ this.parentIndex = parentIndex;
43
+ this.parentElement = parentElement;
36
44
  this.cdMode = cdMode;
37
- this.viewContainerElement = null;
45
+ this.declaredViewContainer = declaredViewContainer;
46
+ this.viewContainer = null;
38
47
  this.numberOfChecks = 0;
39
48
  this.ref = new ViewRef_(this);
40
49
  if (type === ViewType.COMPONENT || type === ViewType.HOST) {
41
50
  this.renderer = viewUtils.renderComponent(componentType);
42
51
  }
43
52
  else {
44
- this.renderer = declarationAppElement.parentView.renderer;
53
+ this.renderer = parentView.renderer;
45
54
  }
55
+ this._directRenderer = this.renderer.directRenderer;
46
56
  }
47
57
  Object.defineProperty(AppView.prototype, "animationContext", {
48
58
  get: function () {
@@ -59,16 +69,26 @@ export var AppView = (function () {
59
69
  enumerable: true,
60
70
  configurable: true
61
71
  });
62
- AppView.prototype.create = function (context, rootSelectorOrNode) {
72
+ AppView.prototype.create = function (context) {
63
73
  this.context = context;
74
+ return this.createInternal(null);
75
+ };
76
+ AppView.prototype.createHostView = function (rootSelectorOrNode, hostInjector, projectableNodes) {
77
+ this.context = EMPTY_CONTEXT;
64
78
  this._hasExternalHostElement = isPresent(rootSelectorOrNode);
79
+ this._hostInjector = hostInjector;
80
+ this._hostProjectableNodes = projectableNodes;
65
81
  return this.createInternal(rootSelectorOrNode);
66
82
  };
67
83
  /**
68
84
  * Overwritten by implementations.
69
- * Returns the AppElement for the host element for ViewType.HOST.
85
+ * Returns the ComponentRef for the host element for ViewType.HOST.
70
86
  */
71
87
  AppView.prototype.createInternal = function (rootSelectorOrNode) { return null; };
88
+ /**
89
+ * Overwritten by implementations.
90
+ */
91
+ AppView.prototype.createEmbeddedViewInternal = function (templateNodeIndex) { return null; };
72
92
  AppView.prototype.init = function (lastRootNode, allNodes, disposables) {
73
93
  this.lastRootNode = lastRootNode;
74
94
  this.allNodes = allNodes;
@@ -77,8 +97,21 @@ export var AppView = (function () {
77
97
  this.dirtyParentQueriesInternal();
78
98
  }
79
99
  };
80
- AppView.prototype.injectorGet = function (token, nodeIndex, notFoundResult) {
81
- return this.injectorGetInternal(token, nodeIndex, notFoundResult);
100
+ AppView.prototype.injectorGet = function (token, nodeIndex, notFoundValue) {
101
+ if (notFoundValue === void 0) { notFoundValue = THROW_IF_NOT_FOUND; }
102
+ var result = UNDEFINED;
103
+ var view = this;
104
+ while (result === UNDEFINED) {
105
+ if (isPresent(nodeIndex)) {
106
+ result = view.injectorGetInternal(token, nodeIndex, UNDEFINED);
107
+ }
108
+ if (result === UNDEFINED && view.type === ViewType.HOST) {
109
+ result = view._hostInjector.get(token, notFoundValue);
110
+ }
111
+ nodeIndex = view.parentIndex;
112
+ view = view.parentView;
113
+ }
114
+ return result;
82
115
  };
83
116
  /**
84
117
  * Overwritten by implementations
@@ -86,20 +119,13 @@ export var AppView = (function () {
86
119
  AppView.prototype.injectorGetInternal = function (token, nodeIndex, notFoundResult) {
87
120
  return notFoundResult;
88
121
  };
89
- AppView.prototype.injector = function (nodeIndex) {
90
- if (isPresent(nodeIndex)) {
91
- return new ElementInjector(this, nodeIndex);
92
- }
93
- else {
94
- return this.parentInjector;
95
- }
96
- };
122
+ AppView.prototype.injector = function (nodeIndex) { return new ElementInjector(this, nodeIndex); };
97
123
  AppView.prototype.detachAndDestroy = function () {
98
124
  if (this._hasExternalHostElement) {
99
- this.renderer.detachView(this.flatRootNodes);
125
+ this.detach();
100
126
  }
101
- else if (isPresent(this.viewContainerElement)) {
102
- this.viewContainerElement.detachView(this.viewContainerElement.nestedViews.indexOf(this));
127
+ else if (isPresent(this.viewContainer)) {
128
+ this.viewContainer.detachView(this.viewContainer.nestedViews.indexOf(this));
103
129
  }
104
130
  this.destroy();
105
131
  };
@@ -108,7 +134,7 @@ export var AppView = (function () {
108
134
  if (this.cdMode === ChangeDetectorStatus.Destroyed) {
109
135
  return;
110
136
  }
111
- var hostElement = this.type === ViewType.COMPONENT ? this.declarationAppElement.nativeElement : null;
137
+ var hostElement = this.type === ViewType.COMPONENT ? this.parentElement : null;
112
138
  if (this.disposables) {
113
139
  for (var i = 0; i < this.disposables.length; i++) {
114
140
  this.disposables[i]();
@@ -136,24 +162,71 @@ export var AppView = (function () {
136
162
  var _this = this;
137
163
  this.detachInternal();
138
164
  if (this._animationContext) {
139
- this._animationContext.onAllActiveAnimationsDone(function () { return _this.renderer.detachView(_this.flatRootNodes); });
165
+ this._animationContext.onAllActiveAnimationsDone(function () { return _this._renderDetach(); });
166
+ }
167
+ else {
168
+ this._renderDetach();
169
+ }
170
+ if (this.declaredViewContainer && this.declaredViewContainer !== this.viewContainer) {
171
+ var projectedViews = this.declaredViewContainer.projectedViews;
172
+ var index = projectedViews.indexOf(this);
173
+ // perf: pop is faster than splice!
174
+ if (index >= projectedViews.length - 1) {
175
+ projectedViews.pop();
176
+ }
177
+ else {
178
+ projectedViews.splice(index, 1);
179
+ }
180
+ }
181
+ this.viewContainer = null;
182
+ this.dirtyParentQueriesInternal();
183
+ };
184
+ AppView.prototype._renderDetach = function () {
185
+ if (this._directRenderer) {
186
+ this.visitRootNodesInternal(this._directRenderer.remove, null);
140
187
  }
141
188
  else {
142
189
  this.renderer.detachView(this.flatRootNodes);
143
190
  }
144
191
  };
192
+ AppView.prototype.attachAfter = function (viewContainer, prevView) {
193
+ this._renderAttach(viewContainer, prevView);
194
+ this.viewContainer = viewContainer;
195
+ if (this.declaredViewContainer && this.declaredViewContainer !== viewContainer) {
196
+ if (!this.declaredViewContainer.projectedViews) {
197
+ this.declaredViewContainer.projectedViews = [];
198
+ }
199
+ this.declaredViewContainer.projectedViews.push(this);
200
+ }
201
+ this.dirtyParentQueriesInternal();
202
+ };
203
+ AppView.prototype.moveAfter = function (viewContainer, prevView) {
204
+ this._renderAttach(viewContainer, prevView);
205
+ this.dirtyParentQueriesInternal();
206
+ };
207
+ AppView.prototype._renderAttach = function (viewContainer, prevView) {
208
+ var prevNode = prevView ? prevView.lastRootNode : viewContainer.nativeElement;
209
+ if (this._directRenderer) {
210
+ var nextSibling = this._directRenderer.nextSibling(prevNode);
211
+ if (nextSibling) {
212
+ this.visitRootNodesInternal(this._directRenderer.insertBefore, nextSibling);
213
+ }
214
+ else {
215
+ var parentElement = this._directRenderer.parentElement(prevNode);
216
+ if (parentElement) {
217
+ this.visitRootNodesInternal(this._directRenderer.appendChild, parentElement);
218
+ }
219
+ }
220
+ }
221
+ else {
222
+ this.renderer.attachViewAfter(prevNode, this.flatRootNodes);
223
+ }
224
+ };
145
225
  Object.defineProperty(AppView.prototype, "changeDetectorRef", {
146
226
  get: function () { return this.ref; },
147
227
  enumerable: true,
148
228
  configurable: true
149
229
  });
150
- Object.defineProperty(AppView.prototype, "parent", {
151
- get: function () {
152
- return isPresent(this.declarationAppElement) ? this.declarationAppElement.parentView : null;
153
- },
154
- enumerable: true,
155
- configurable: true
156
- });
157
230
  Object.defineProperty(AppView.prototype, "flatRootNodes", {
158
231
  get: function () {
159
232
  var nodes = [];
@@ -163,19 +236,31 @@ export var AppView = (function () {
163
236
  enumerable: true,
164
237
  configurable: true
165
238
  });
166
- AppView.prototype.projectedNodes = function (ngContentIndex) {
167
- var nodes = [];
168
- this.visitProjectedNodes(ngContentIndex, addToArray, nodes);
169
- return nodes;
239
+ AppView.prototype.projectNodes = function (parentElement, ngContentIndex) {
240
+ if (this._directRenderer) {
241
+ this.visitProjectedNodes(ngContentIndex, this._directRenderer.appendChild, parentElement);
242
+ }
243
+ else {
244
+ var nodes = [];
245
+ this.visitProjectedNodes(ngContentIndex, addToArray, nodes);
246
+ this.renderer.projectNodes(parentElement, nodes);
247
+ }
170
248
  };
171
249
  AppView.prototype.visitProjectedNodes = function (ngContentIndex, cb, c) {
172
- var appEl = this.declarationAppElement;
173
250
  switch (this.type) {
174
251
  case ViewType.EMBEDDED:
175
- appEl.parentView.visitProjectedNodes(ngContentIndex, cb, c);
252
+ this.parentView.visitProjectedNodes(ngContentIndex, cb, c);
176
253
  break;
177
254
  case ViewType.COMPONENT:
178
- appEl.parentView.visitProjectableNodesInternal(appEl.index, ngContentIndex, cb, c);
255
+ if (this.parentView.type === ViewType.HOST) {
256
+ var nodes = this.parentView._hostProjectableNodes[ngContentIndex] || [];
257
+ for (var i = 0; i < nodes.length; i++) {
258
+ cb(nodes[i], c);
259
+ }
260
+ }
261
+ else {
262
+ this.parentView.visitProjectableNodesInternal(this.parentIndex, ngContentIndex, cb, c);
263
+ }
179
264
  break;
180
265
  }
181
266
  };
@@ -210,15 +295,6 @@ export var AppView = (function () {
210
295
  * Overwritten by implementations
211
296
  */
212
297
  AppView.prototype.detectChangesInternal = function (throwOnChange) { };
213
- AppView.prototype.markContentChildAsMoved = function (renderAppElement) { this.dirtyParentQueriesInternal(); };
214
- AppView.prototype.addToContentChildren = function (renderAppElement) {
215
- this.viewContainerElement = renderAppElement;
216
- this.dirtyParentQueriesInternal();
217
- };
218
- AppView.prototype.removeFromContentChildren = function (renderAppElement) {
219
- this.dirtyParentQueriesInternal();
220
- this.viewContainerElement = null;
221
- };
222
298
  AppView.prototype.markAsCheckOnce = function () { this.cdMode = ChangeDetectorStatus.CheckOnce; };
223
299
  AppView.prototype.markPathToRootAsCheckOnce = function () {
224
300
  var c = this;
@@ -226,8 +302,12 @@ export var AppView = (function () {
226
302
  if (c.cdMode === ChangeDetectorStatus.Checked) {
227
303
  c.cdMode = ChangeDetectorStatus.CheckOnce;
228
304
  }
229
- var parentEl = c.type === ViewType.COMPONENT ? c.declarationAppElement : c.viewContainerElement;
230
- c = isPresent(parentEl) ? parentEl.parentView : null;
305
+ if (c.type === ViewType.COMPONENT) {
306
+ c = c.parentView;
307
+ }
308
+ else {
309
+ c = c.viewContainer ? c.viewContainer.parentView : null;
310
+ }
231
311
  }
232
312
  };
233
313
  AppView.prototype.eventHandler = function (cb) {
@@ -238,15 +318,27 @@ export var AppView = (function () {
238
318
  }());
239
319
  export var DebugAppView = (function (_super) {
240
320
  __extends(DebugAppView, _super);
241
- function DebugAppView(clazz, componentType, type, viewUtils, parentInjector, declarationAppElement, cdMode, staticNodeDebugInfos) {
242
- _super.call(this, clazz, componentType, type, viewUtils, parentInjector, declarationAppElement, cdMode);
321
+ function DebugAppView(clazz, componentType, type, viewUtils, parentView, parentIndex, parentNode, cdMode, staticNodeDebugInfos, declaredViewContainer) {
322
+ if (declaredViewContainer === void 0) { declaredViewContainer = null; }
323
+ _super.call(this, clazz, componentType, type, viewUtils, parentView, parentIndex, parentNode, cdMode, declaredViewContainer);
243
324
  this.staticNodeDebugInfos = staticNodeDebugInfos;
244
325
  this._currentDebugContext = null;
245
326
  }
246
- DebugAppView.prototype.create = function (context, rootSelectorOrNode) {
327
+ DebugAppView.prototype.create = function (context) {
328
+ this._resetDebug();
329
+ try {
330
+ return _super.prototype.create.call(this, context);
331
+ }
332
+ catch (e) {
333
+ this._rethrowWithContext(e);
334
+ throw e;
335
+ }
336
+ };
337
+ DebugAppView.prototype.createHostView = function (rootSelectorOrNode, injector, projectableNodes) {
338
+ if (projectableNodes === void 0) { projectableNodes = null; }
247
339
  this._resetDebug();
248
340
  try {
249
- return _super.prototype.create.call(this, context, rootSelectorOrNode);
341
+ return _super.prototype.createHostView.call(this, rootSelectorOrNode, injector, projectableNodes);
250
342
  }
251
343
  catch (e) {
252
344
  this._rethrowWithContext(e);
@@ -1 +1 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../../../modules/@angular/core/src/linker/view.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ChangeDetectorRef, ChangeDetectorStatus} from '../change_detection/change_detection';\nimport {Injector} from '../di/injector';\nimport {ListWrapper} from '../facade/collection';\nimport {isPresent} from '../facade/lang';\nimport {WtfScopeFn, wtfCreateScope, wtfLeave} from '../profile/profile';\nimport {RenderComponentType, RenderDebugInfo, Renderer} from '../render/api';\n\nimport {AnimationViewContext} from './animation_view_context';\nimport {DebugContext, StaticNodeDebugInfo} from './debug_context';\nimport {AppElement} from './element';\nimport {ElementInjector} from './element_injector';\nimport {ExpressionChangedAfterItHasBeenCheckedError, ViewDestroyedError, ViewWrappedError} from './errors';\nimport {ViewRef_} from './view_ref';\nimport {ViewType} from './view_type';\nimport {ViewUtils, addToArray} from './view_utils';\n\nvar _scope_check: WtfScopeFn = wtfCreateScope(`AppView#check(ascii id)`);\n\n/**\n * Cost of making objects: http://jsperf.com/instantiate-size-of-object\n *\n */\nexport abstract class AppView<T> {\n ref: ViewRef_<T>;\n lastRootNode: any;\n allNodes: any[];\n disposables: Function[];\n viewContainerElement: AppElement = null;\n\n numberOfChecks: number = 0;\n\n renderer: Renderer;\n\n private _hasExternalHostElement: boolean;\n private _animationContext: AnimationViewContext;\n\n public context: T;\n\n constructor(\n public clazz: any, public componentType: RenderComponentType, public type: ViewType,\n public viewUtils: ViewUtils, public parentInjector: Injector,\n public declarationAppElement: AppElement, public cdMode: ChangeDetectorStatus) {\n this.ref = new ViewRef_(this);\n if (type === ViewType.COMPONENT || type === ViewType.HOST) {\n this.renderer = viewUtils.renderComponent(componentType);\n } else {\n this.renderer = declarationAppElement.parentView.renderer;\n }\n }\n\n get animationContext(): AnimationViewContext {\n if (!this._animationContext) {\n this._animationContext = new AnimationViewContext();\n }\n return this._animationContext;\n }\n\n get destroyed(): boolean { return this.cdMode === ChangeDetectorStatus.Destroyed; }\n\n create(context: T, rootSelectorOrNode: string|any): AppElement {\n this.context = context;\n this._hasExternalHostElement = isPresent(rootSelectorOrNode);\n return this.createInternal(rootSelectorOrNode);\n }\n\n /**\n * Overwritten by implementations.\n * Returns the AppElement for the host element for ViewType.HOST.\n */\n createInternal(rootSelectorOrNode: string|any): AppElement { return null; }\n\n init(lastRootNode: any, allNodes: any[], disposables: Function[]) {\n this.lastRootNode = lastRootNode;\n this.allNodes = allNodes;\n this.disposables = disposables;\n if (this.type === ViewType.COMPONENT) {\n this.dirtyParentQueriesInternal();\n }\n }\n\n injectorGet(token: any, nodeIndex: number, notFoundResult: any): any {\n return this.injectorGetInternal(token, nodeIndex, notFoundResult);\n }\n\n /**\n * Overwritten by implementations\n */\n injectorGetInternal(token: any, nodeIndex: number, notFoundResult: any): any {\n return notFoundResult;\n }\n\n injector(nodeIndex: number): Injector {\n if (isPresent(nodeIndex)) {\n return new ElementInjector(this, nodeIndex);\n } else {\n return this.parentInjector;\n }\n }\n\n detachAndDestroy() {\n if (this._hasExternalHostElement) {\n this.renderer.detachView(this.flatRootNodes);\n } else if (isPresent(this.viewContainerElement)) {\n this.viewContainerElement.detachView(this.viewContainerElement.nestedViews.indexOf(this));\n }\n this.destroy();\n }\n\n destroy() {\n if (this.cdMode === ChangeDetectorStatus.Destroyed) {\n return;\n }\n var hostElement =\n this.type === ViewType.COMPONENT ? this.declarationAppElement.nativeElement : null;\n if (this.disposables) {\n for (var i = 0; i < this.disposables.length; i++) {\n this.disposables[i]();\n }\n }\n this.destroyInternal();\n this.dirtyParentQueriesInternal();\n\n if (this._animationContext) {\n this._animationContext.onAllActiveAnimationsDone(\n () => this.renderer.destroyView(hostElement, this.allNodes));\n } else {\n this.renderer.destroyView(hostElement, this.allNodes);\n }\n\n this.cdMode = ChangeDetectorStatus.Destroyed;\n }\n\n /**\n * Overwritten by implementations\n */\n destroyInternal(): void {}\n\n /**\n * Overwritten by implementations\n */\n detachInternal(): void {}\n\n detach(): void {\n this.detachInternal();\n if (this._animationContext) {\n this._animationContext.onAllActiveAnimationsDone(\n () => this.renderer.detachView(this.flatRootNodes));\n } else {\n this.renderer.detachView(this.flatRootNodes);\n }\n }\n\n get changeDetectorRef(): ChangeDetectorRef { return this.ref; }\n\n get parent(): AppView<any> {\n return isPresent(this.declarationAppElement) ? this.declarationAppElement.parentView : null;\n }\n\n get flatRootNodes(): any[] {\n const nodes: any[] = [];\n this.visitRootNodesInternal(addToArray, nodes);\n return nodes;\n }\n\n projectedNodes(ngContentIndex: number): any[] {\n const nodes: any[] = [];\n this.visitProjectedNodes(ngContentIndex, addToArray, nodes);\n return nodes;\n }\n\n visitProjectedNodes<C>(ngContentIndex: number, cb: (node: any, ctx: C) => void, c: C): void {\n const appEl = this.declarationAppElement;\n switch (this.type) {\n case ViewType.EMBEDDED:\n appEl.parentView.visitProjectedNodes(ngContentIndex, cb, c);\n break;\n case ViewType.COMPONENT:\n appEl.parentView.visitProjectableNodesInternal(appEl.index, ngContentIndex, cb, c);\n break;\n }\n }\n\n /**\n * Overwritten by implementations\n */\n visitRootNodesInternal<C>(cb: (node: any, ctx: C) => void, c: C): void {}\n\n /**\n * Overwritten by implementations\n */\n visitProjectableNodesInternal<C>(\n nodeIndex: number, ngContentIndex: number, cb: (node: any, ctx: C) => void, c: C): void {}\n\n /**\n * Overwritten by implementations\n */\n dirtyParentQueriesInternal(): void {}\n\n detectChanges(throwOnChange: boolean): void {\n var s = _scope_check(this.clazz);\n if (this.cdMode === ChangeDetectorStatus.Checked ||\n this.cdMode === ChangeDetectorStatus.Errored ||\n this.cdMode === ChangeDetectorStatus.Detached)\n return;\n if (this.cdMode === ChangeDetectorStatus.Destroyed) {\n this.throwDestroyedError('detectChanges');\n }\n this.detectChangesInternal(throwOnChange);\n if (this.cdMode === ChangeDetectorStatus.CheckOnce) this.cdMode = ChangeDetectorStatus.Checked;\n\n this.numberOfChecks++;\n wtfLeave(s);\n }\n\n /**\n * Overwritten by implementations\n */\n detectChangesInternal(throwOnChange: boolean): void {}\n\n markContentChildAsMoved(renderAppElement: AppElement): void { this.dirtyParentQueriesInternal(); }\n\n addToContentChildren(renderAppElement: AppElement): void {\n this.viewContainerElement = renderAppElement;\n this.dirtyParentQueriesInternal();\n }\n\n removeFromContentChildren(renderAppElement: AppElement): void {\n this.dirtyParentQueriesInternal();\n this.viewContainerElement = null;\n }\n\n markAsCheckOnce(): void { this.cdMode = ChangeDetectorStatus.CheckOnce; }\n\n markPathToRootAsCheckOnce(): void {\n let c: AppView<any> = this;\n while (isPresent(c) && c.cdMode !== ChangeDetectorStatus.Detached) {\n if (c.cdMode === ChangeDetectorStatus.Checked) {\n c.cdMode = ChangeDetectorStatus.CheckOnce;\n }\n let parentEl =\n c.type === ViewType.COMPONENT ? c.declarationAppElement : c.viewContainerElement;\n c = isPresent(parentEl) ? parentEl.parentView : null;\n }\n }\n\n eventHandler<E, R>(cb: (eventName: string, event?: E) => R): (eventName: string, event?: E) => R {\n return cb;\n }\n\n throwDestroyedError(details: string): void { throw new ViewDestroyedError(details); }\n}\n\nexport class DebugAppView<T> extends AppView<T> {\n private _currentDebugContext: DebugContext = null;\n\n constructor(\n clazz: any, componentType: RenderComponentType, type: ViewType, viewUtils: ViewUtils,\n parentInjector: Injector, declarationAppElement: AppElement, cdMode: ChangeDetectorStatus,\n public staticNodeDebugInfos: StaticNodeDebugInfo[]) {\n super(clazz, componentType, type, viewUtils, parentInjector, declarationAppElement, cdMode);\n }\n\n create(context: T, rootSelectorOrNode: string|any): AppElement {\n this._resetDebug();\n try {\n return super.create(context, rootSelectorOrNode);\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n }\n\n injectorGet(token: any, nodeIndex: number, notFoundResult: any): any {\n this._resetDebug();\n try {\n return super.injectorGet(token, nodeIndex, notFoundResult);\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n }\n\n detach(): void {\n this._resetDebug();\n try {\n super.detach();\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n }\n\n destroy() {\n this._resetDebug();\n try {\n super.destroy();\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n }\n\n detectChanges(throwOnChange: boolean): void {\n this._resetDebug();\n try {\n super.detectChanges(throwOnChange);\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n }\n\n private _resetDebug() { this._currentDebugContext = null; }\n\n debug(nodeIndex: number, rowNum: number, colNum: number): DebugContext {\n return this._currentDebugContext = new DebugContext(this, nodeIndex, rowNum, colNum);\n }\n\n private _rethrowWithContext(e: any) {\n if (!(e instanceof ViewWrappedError)) {\n if (!(e instanceof ExpressionChangedAfterItHasBeenCheckedError)) {\n this.cdMode = ChangeDetectorStatus.Errored;\n }\n if (isPresent(this._currentDebugContext)) {\n throw new ViewWrappedError(e, this._currentDebugContext);\n }\n }\n }\n\n eventHandler<E, R>(cb: (eventName: string, event?: E) => R): (eventName: string, event?: E) => R {\n var superHandler = super.eventHandler(cb);\n return (eventName: string, event?: any) => {\n this._resetDebug();\n try {\n return superHandler.call(this, eventName, event);\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n };\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../../../../modules/@angular/core/src/linker/view.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ChangeDetectorRef, ChangeDetectorStatus} from '../change_detection/change_detection';\nimport {Injector, THROW_IF_NOT_FOUND} from '../di/injector';\nimport {ListWrapper} from '../facade/collection';\nimport {isPresent} from '../facade/lang';\nimport {WtfScopeFn, wtfCreateScope, wtfLeave} from '../profile/profile';\nimport {DirectRenderer, RenderComponentType, RenderDebugInfo, Renderer} from '../render/api';\n\nimport {AnimationViewContext} from './animation_view_context';\nimport {ComponentRef} from './component_factory';\nimport {DebugContext, StaticNodeDebugInfo} from './debug_context';\nimport {ElementInjector} from './element_injector';\nimport {ExpressionChangedAfterItHasBeenCheckedError, ViewDestroyedError, ViewWrappedError} from './errors';\nimport {ViewContainer} from './view_container';\nimport {ViewRef_} from './view_ref';\nimport {ViewType} from './view_type';\nimport {ViewUtils, addToArray} from './view_utils';\n\nconst _scope_check: WtfScopeFn = wtfCreateScope(`AppView#check(ascii id)`);\n\n/**\n * @experimental\n */\nconst EMPTY_CONTEXT = new Object();\n\nconst UNDEFINED = new Object();\n\n/**\n * Cost of making objects: http://jsperf.com/instantiate-size-of-object\n *\n */\nexport abstract class AppView<T> {\n ref: ViewRef_<T>;\n lastRootNode: any;\n allNodes: any[];\n disposables: Function[];\n viewContainer: ViewContainer = null;\n\n numberOfChecks: number = 0;\n\n renderer: Renderer;\n\n private _hasExternalHostElement: boolean;\n private _hostInjector: Injector;\n private _hostProjectableNodes: any[][];\n private _animationContext: AnimationViewContext;\n private _directRenderer: DirectRenderer;\n\n public context: T;\n\n constructor(\n public clazz: any, public componentType: RenderComponentType, public type: ViewType,\n public viewUtils: ViewUtils, public parentView: AppView<any>, public parentIndex: number,\n public parentElement: any, public cdMode: ChangeDetectorStatus,\n public declaredViewContainer: ViewContainer = null) {\n this.ref = new ViewRef_(this);\n if (type === ViewType.COMPONENT || type === ViewType.HOST) {\n this.renderer = viewUtils.renderComponent(componentType);\n } else {\n this.renderer = parentView.renderer;\n }\n this._directRenderer = (this.renderer as any).directRenderer;\n }\n\n get animationContext(): AnimationViewContext {\n if (!this._animationContext) {\n this._animationContext = new AnimationViewContext();\n }\n return this._animationContext;\n }\n\n get destroyed(): boolean { return this.cdMode === ChangeDetectorStatus.Destroyed; }\n\n create(context: T) {\n this.context = context;\n return this.createInternal(null);\n }\n\n createHostView(rootSelectorOrNode: string|any, hostInjector: Injector, projectableNodes: any[][]):\n ComponentRef<any> {\n this.context = <any>EMPTY_CONTEXT;\n this._hasExternalHostElement = isPresent(rootSelectorOrNode);\n this._hostInjector = hostInjector;\n this._hostProjectableNodes = projectableNodes;\n return this.createInternal(rootSelectorOrNode);\n }\n\n /**\n * Overwritten by implementations.\n * Returns the ComponentRef for the host element for ViewType.HOST.\n */\n createInternal(rootSelectorOrNode: string|any): ComponentRef<any> { return null; }\n\n /**\n * Overwritten by implementations.\n */\n createEmbeddedViewInternal(templateNodeIndex: number): AppView<any> { return null; }\n\n init(lastRootNode: any, allNodes: any[], disposables: Function[]) {\n this.lastRootNode = lastRootNode;\n this.allNodes = allNodes;\n this.disposables = disposables;\n if (this.type === ViewType.COMPONENT) {\n this.dirtyParentQueriesInternal();\n }\n }\n\n injectorGet(token: any, nodeIndex: number, notFoundValue: any = THROW_IF_NOT_FOUND): any {\n let result = UNDEFINED;\n let view: AppView<any> = this;\n while (result === UNDEFINED) {\n if (isPresent(nodeIndex)) {\n result = view.injectorGetInternal(token, nodeIndex, UNDEFINED);\n }\n if (result === UNDEFINED && view.type === ViewType.HOST) {\n result = view._hostInjector.get(token, notFoundValue);\n }\n nodeIndex = view.parentIndex;\n view = view.parentView;\n }\n return result;\n }\n\n /**\n * Overwritten by implementations\n */\n injectorGetInternal(token: any, nodeIndex: number, notFoundResult: any): any {\n return notFoundResult;\n }\n\n injector(nodeIndex: number): Injector { return new ElementInjector(this, nodeIndex); }\n\n detachAndDestroy() {\n if (this._hasExternalHostElement) {\n this.detach();\n } else if (isPresent(this.viewContainer)) {\n this.viewContainer.detachView(this.viewContainer.nestedViews.indexOf(this));\n }\n this.destroy();\n }\n\n destroy() {\n if (this.cdMode === ChangeDetectorStatus.Destroyed) {\n return;\n }\n const hostElement = this.type === ViewType.COMPONENT ? this.parentElement : null;\n if (this.disposables) {\n for (let i = 0; i < this.disposables.length; i++) {\n this.disposables[i]();\n }\n }\n this.destroyInternal();\n this.dirtyParentQueriesInternal();\n\n if (this._animationContext) {\n this._animationContext.onAllActiveAnimationsDone(\n () => this.renderer.destroyView(hostElement, this.allNodes));\n } else {\n this.renderer.destroyView(hostElement, this.allNodes);\n }\n\n this.cdMode = ChangeDetectorStatus.Destroyed;\n }\n\n /**\n * Overwritten by implementations\n */\n destroyInternal(): void {}\n\n /**\n * Overwritten by implementations\n */\n detachInternal(): void {}\n\n detach(): void {\n this.detachInternal();\n if (this._animationContext) {\n this._animationContext.onAllActiveAnimationsDone(() => this._renderDetach());\n } else {\n this._renderDetach();\n }\n if (this.declaredViewContainer && this.declaredViewContainer !== this.viewContainer) {\n const projectedViews = this.declaredViewContainer.projectedViews;\n const index = projectedViews.indexOf(this);\n // perf: pop is faster than splice!\n if (index >= projectedViews.length - 1) {\n projectedViews.pop();\n } else {\n projectedViews.splice(index, 1);\n }\n }\n this.viewContainer = null;\n this.dirtyParentQueriesInternal();\n }\n\n private _renderDetach() {\n if (this._directRenderer) {\n this.visitRootNodesInternal(this._directRenderer.remove, null);\n } else {\n this.renderer.detachView(this.flatRootNodes);\n }\n }\n\n attachAfter(viewContainer: ViewContainer, prevView: AppView<any>) {\n this._renderAttach(viewContainer, prevView);\n this.viewContainer = viewContainer;\n if (this.declaredViewContainer && this.declaredViewContainer !== viewContainer) {\n if (!this.declaredViewContainer.projectedViews) {\n this.declaredViewContainer.projectedViews = [];\n }\n this.declaredViewContainer.projectedViews.push(this);\n }\n this.dirtyParentQueriesInternal();\n }\n\n moveAfter(viewContainer: ViewContainer, prevView: AppView<any>) {\n this._renderAttach(viewContainer, prevView);\n this.dirtyParentQueriesInternal();\n }\n\n private _renderAttach(viewContainer: ViewContainer, prevView: AppView<any>) {\n const prevNode = prevView ? prevView.lastRootNode : viewContainer.nativeElement;\n if (this._directRenderer) {\n const nextSibling = this._directRenderer.nextSibling(prevNode);\n if (nextSibling) {\n this.visitRootNodesInternal(this._directRenderer.insertBefore, nextSibling);\n } else {\n const parentElement = this._directRenderer.parentElement(prevNode);\n if (parentElement) {\n this.visitRootNodesInternal(this._directRenderer.appendChild, parentElement);\n }\n }\n } else {\n this.renderer.attachViewAfter(prevNode, this.flatRootNodes);\n }\n }\n\n get changeDetectorRef(): ChangeDetectorRef { return this.ref; }\n\n get flatRootNodes(): any[] {\n const nodes: any[] = [];\n this.visitRootNodesInternal(addToArray, nodes);\n return nodes;\n }\n\n projectNodes(parentElement: any, ngContentIndex: number) {\n if (this._directRenderer) {\n this.visitProjectedNodes(ngContentIndex, this._directRenderer.appendChild, parentElement);\n } else {\n const nodes: any[] = [];\n this.visitProjectedNodes(ngContentIndex, addToArray, nodes);\n this.renderer.projectNodes(parentElement, nodes);\n }\n }\n\n visitProjectedNodes<C>(ngContentIndex: number, cb: (node: any, ctx: C) => void, c: C): void {\n switch (this.type) {\n case ViewType.EMBEDDED:\n this.parentView.visitProjectedNodes(ngContentIndex, cb, c);\n break;\n case ViewType.COMPONENT:\n if (this.parentView.type === ViewType.HOST) {\n const nodes = this.parentView._hostProjectableNodes[ngContentIndex] || [];\n for (let i = 0; i < nodes.length; i++) {\n cb(nodes[i], c);\n }\n } else {\n this.parentView.visitProjectableNodesInternal(this.parentIndex, ngContentIndex, cb, c);\n }\n break;\n }\n }\n\n /**\n * Overwritten by implementations\n */\n visitRootNodesInternal<C>(cb: (node: any, ctx: C) => void, c: C): void {}\n\n /**\n * Overwritten by implementations\n */\n visitProjectableNodesInternal<C>(\n nodeIndex: number, ngContentIndex: number, cb: (node: any, ctx: C) => void, c: C): void {}\n\n /**\n * Overwritten by implementations\n */\n dirtyParentQueriesInternal(): void {}\n\n detectChanges(throwOnChange: boolean): void {\n const s = _scope_check(this.clazz);\n if (this.cdMode === ChangeDetectorStatus.Checked ||\n this.cdMode === ChangeDetectorStatus.Errored ||\n this.cdMode === ChangeDetectorStatus.Detached)\n return;\n if (this.cdMode === ChangeDetectorStatus.Destroyed) {\n this.throwDestroyedError('detectChanges');\n }\n this.detectChangesInternal(throwOnChange);\n if (this.cdMode === ChangeDetectorStatus.CheckOnce) this.cdMode = ChangeDetectorStatus.Checked;\n\n this.numberOfChecks++;\n wtfLeave(s);\n }\n\n /**\n * Overwritten by implementations\n */\n detectChangesInternal(throwOnChange: boolean): void {}\n\n markAsCheckOnce(): void { this.cdMode = ChangeDetectorStatus.CheckOnce; }\n\n markPathToRootAsCheckOnce(): void {\n let c: AppView<any> = this;\n while (isPresent(c) && c.cdMode !== ChangeDetectorStatus.Detached) {\n if (c.cdMode === ChangeDetectorStatus.Checked) {\n c.cdMode = ChangeDetectorStatus.CheckOnce;\n }\n if (c.type === ViewType.COMPONENT) {\n c = c.parentView;\n } else {\n c = c.viewContainer ? c.viewContainer.parentView : null;\n }\n }\n }\n\n eventHandler<E, R>(cb: (eventName: string, event?: E) => R): (eventName: string, event?: E) => R {\n return cb;\n }\n\n throwDestroyedError(details: string): void { throw new ViewDestroyedError(details); }\n}\n\nexport class DebugAppView<T> extends AppView<T> {\n private _currentDebugContext: DebugContext = null;\n\n constructor(\n clazz: any, componentType: RenderComponentType, type: ViewType, viewUtils: ViewUtils,\n parentView: AppView<any>, parentIndex: number, parentNode: any, cdMode: ChangeDetectorStatus,\n public staticNodeDebugInfos: StaticNodeDebugInfo[],\n declaredViewContainer: ViewContainer = null) {\n super(\n clazz, componentType, type, viewUtils, parentView, parentIndex, parentNode, cdMode,\n declaredViewContainer);\n }\n\n create(context: T) {\n this._resetDebug();\n try {\n return super.create(context);\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n }\n\n createHostView(\n rootSelectorOrNode: string|any, injector: Injector,\n projectableNodes: any[][] = null): ComponentRef<any> {\n this._resetDebug();\n try {\n return super.createHostView(rootSelectorOrNode, injector, projectableNodes);\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n }\n\n injectorGet(token: any, nodeIndex: number, notFoundResult?: any): any {\n this._resetDebug();\n try {\n return super.injectorGet(token, nodeIndex, notFoundResult);\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n }\n\n detach(): void {\n this._resetDebug();\n try {\n super.detach();\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n }\n\n destroy() {\n this._resetDebug();\n try {\n super.destroy();\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n }\n\n detectChanges(throwOnChange: boolean): void {\n this._resetDebug();\n try {\n super.detectChanges(throwOnChange);\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n }\n\n private _resetDebug() { this._currentDebugContext = null; }\n\n debug(nodeIndex: number, rowNum: number, colNum: number): DebugContext {\n return this._currentDebugContext = new DebugContext(this, nodeIndex, rowNum, colNum);\n }\n\n private _rethrowWithContext(e: any) {\n if (!(e instanceof ViewWrappedError)) {\n if (!(e instanceof ExpressionChangedAfterItHasBeenCheckedError)) {\n this.cdMode = ChangeDetectorStatus.Errored;\n }\n if (isPresent(this._currentDebugContext)) {\n throw new ViewWrappedError(e, this._currentDebugContext);\n }\n }\n }\n\n eventHandler<E, R>(cb: (eventName: string, event?: E) => R): (eventName: string, event?: E) => R {\n const superHandler = super.eventHandler(cb);\n return (eventName: string, event?: any) => {\n this._resetDebug();\n try {\n return superHandler.call(this, eventName, event);\n } catch (e) {\n this._rethrowWithContext(e);\n throw e;\n }\n };\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
@@ -10,22 +10,19 @@ import { ElementRef } from './element_ref';
10
10
  import { AppView } from './view';
11
11
  import { ViewContainerRef_ } from './view_container_ref';
12
12
  /**
13
- * An AppElement is created for elements that have a ViewContainerRef,
14
- * a nested component or a <template> element to keep data around
15
- * that is needed for later instantiations.
13
+ * A ViewContainer is created for elements that have a ViewContainerRef
14
+ * to keep track of the nested views.
16
15
  */
17
- export declare class AppElement {
16
+ export declare class ViewContainer {
18
17
  index: number;
19
18
  parentIndex: number;
20
19
  parentView: AppView<any>;
21
20
  nativeElement: any;
22
21
  nestedViews: AppView<any>[];
23
- componentView: AppView<any>;
24
- component: any;
22
+ projectedViews: AppView<any>[];
25
23
  constructor(index: number, parentIndex: number, parentView: AppView<any>, nativeElement: any);
26
24
  elementRef: ElementRef;
27
25
  vcRef: ViewContainerRef_;
28
- initComponent(component: any, view: AppView<any>): void;
29
26
  parentInjector: Injector;
30
27
  injector: Injector;
31
28
  detectChangesInNestedViews(throwOnChange: boolean): void;
@@ -5,79 +5,82 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- import { isPresent } from '../facade/lang';
9
8
  import { ElementRef } from './element_ref';
10
9
  import { ViewContainerRef_ } from './view_container_ref';
11
10
  import { ViewType } from './view_type';
12
11
  /**
13
- * An AppElement is created for elements that have a ViewContainerRef,
14
- * a nested component or a <template> element to keep data around
15
- * that is needed for later instantiations.
12
+ * A ViewContainer is created for elements that have a ViewContainerRef
13
+ * to keep track of the nested views.
16
14
  */
17
- export var AppElement = (function () {
18
- function AppElement(index, parentIndex, parentView, nativeElement) {
15
+ export var ViewContainer = (function () {
16
+ function ViewContainer(index, parentIndex, parentView, nativeElement) {
19
17
  this.index = index;
20
18
  this.parentIndex = parentIndex;
21
19
  this.parentView = parentView;
22
20
  this.nativeElement = nativeElement;
23
21
  }
24
- Object.defineProperty(AppElement.prototype, "elementRef", {
22
+ Object.defineProperty(ViewContainer.prototype, "elementRef", {
25
23
  get: function () { return new ElementRef(this.nativeElement); },
26
24
  enumerable: true,
27
25
  configurable: true
28
26
  });
29
- Object.defineProperty(AppElement.prototype, "vcRef", {
27
+ Object.defineProperty(ViewContainer.prototype, "vcRef", {
30
28
  get: function () { return new ViewContainerRef_(this); },
31
29
  enumerable: true,
32
30
  configurable: true
33
31
  });
34
- AppElement.prototype.initComponent = function (component, view) {
35
- this.component = component;
36
- this.componentView = view;
37
- };
38
- Object.defineProperty(AppElement.prototype, "parentInjector", {
32
+ Object.defineProperty(ViewContainer.prototype, "parentInjector", {
39
33
  get: function () { return this.parentView.injector(this.parentIndex); },
40
34
  enumerable: true,
41
35
  configurable: true
42
36
  });
43
- Object.defineProperty(AppElement.prototype, "injector", {
37
+ Object.defineProperty(ViewContainer.prototype, "injector", {
44
38
  get: function () { return this.parentView.injector(this.index); },
45
39
  enumerable: true,
46
40
  configurable: true
47
41
  });
48
- AppElement.prototype.detectChangesInNestedViews = function (throwOnChange) {
42
+ ViewContainer.prototype.detectChangesInNestedViews = function (throwOnChange) {
49
43
  if (this.nestedViews) {
50
44
  for (var i = 0; i < this.nestedViews.length; i++) {
51
45
  this.nestedViews[i].detectChanges(throwOnChange);
52
46
  }
53
47
  }
54
48
  };
55
- AppElement.prototype.destroyNestedViews = function () {
49
+ ViewContainer.prototype.destroyNestedViews = function () {
56
50
  if (this.nestedViews) {
57
51
  for (var i = 0; i < this.nestedViews.length; i++) {
58
52
  this.nestedViews[i].destroy();
59
53
  }
60
54
  }
61
55
  };
62
- AppElement.prototype.visitNestedViewRootNodes = function (cb, c) {
56
+ ViewContainer.prototype.visitNestedViewRootNodes = function (cb, c) {
63
57
  if (this.nestedViews) {
64
58
  for (var i = 0; i < this.nestedViews.length; i++) {
65
59
  this.nestedViews[i].visitRootNodesInternal(cb, c);
66
60
  }
67
61
  }
68
62
  };
69
- AppElement.prototype.mapNestedViews = function (nestedViewClass, callback) {
63
+ ViewContainer.prototype.mapNestedViews = function (nestedViewClass, callback) {
70
64
  var result = [];
71
- if (isPresent(this.nestedViews)) {
72
- this.nestedViews.forEach(function (nestedView) {
65
+ if (this.nestedViews) {
66
+ for (var i = 0; i < this.nestedViews.length; i++) {
67
+ var nestedView = this.nestedViews[i];
73
68
  if (nestedView.clazz === nestedViewClass) {
74
69
  result.push(callback(nestedView));
75
70
  }
76
- });
71
+ }
72
+ }
73
+ if (this.projectedViews) {
74
+ for (var i = 0; i < this.projectedViews.length; i++) {
75
+ var projectedView = this.projectedViews[i];
76
+ if (projectedView.clazz === nestedViewClass) {
77
+ result.push(callback(projectedView));
78
+ }
79
+ }
77
80
  }
78
81
  return result;
79
82
  };
80
- AppElement.prototype.moveView = function (view, currentIndex) {
83
+ ViewContainer.prototype.moveView = function (view, currentIndex) {
81
84
  var previousIndex = this.nestedViews.indexOf(view);
82
85
  if (view.type === ViewType.COMPONENT) {
83
86
  throw new Error("Component views can't be moved!");
@@ -89,20 +92,10 @@ export var AppElement = (function () {
89
92
  }
90
93
  nestedViews.splice(previousIndex, 1);
91
94
  nestedViews.splice(currentIndex, 0, view);
92
- var refRenderNode;
93
- if (currentIndex > 0) {
94
- var prevView = nestedViews[currentIndex - 1];
95
- refRenderNode = prevView.lastRootNode;
96
- }
97
- else {
98
- refRenderNode = this.nativeElement;
99
- }
100
- if (isPresent(refRenderNode)) {
101
- view.renderer.attachViewAfter(refRenderNode, view.flatRootNodes);
102
- }
103
- view.markContentChildAsMoved(this);
95
+ var prevView = currentIndex > 0 ? nestedViews[currentIndex - 1] : null;
96
+ view.moveAfter(this, prevView);
104
97
  };
105
- AppElement.prototype.attachView = function (view, viewIndex) {
98
+ ViewContainer.prototype.attachView = function (view, viewIndex) {
106
99
  if (view.type === ViewType.COMPONENT) {
107
100
  throw new Error("Component views can't be moved!");
108
101
  }
@@ -111,29 +104,31 @@ export var AppElement = (function () {
111
104
  nestedViews = [];
112
105
  this.nestedViews = nestedViews;
113
106
  }
114
- nestedViews.splice(viewIndex, 0, view);
115
- var refRenderNode;
116
- if (viewIndex > 0) {
117
- var prevView = nestedViews[viewIndex - 1];
118
- refRenderNode = prevView.lastRootNode;
107
+ // perf: array.push is faster than array.splice!
108
+ if (viewIndex >= nestedViews.length) {
109
+ nestedViews.push(view);
119
110
  }
120
111
  else {
121
- refRenderNode = this.nativeElement;
122
- }
123
- if (isPresent(refRenderNode)) {
124
- view.renderer.attachViewAfter(refRenderNode, view.flatRootNodes);
112
+ nestedViews.splice(viewIndex, 0, view);
125
113
  }
126
- view.addToContentChildren(this);
114
+ var prevView = viewIndex > 0 ? nestedViews[viewIndex - 1] : null;
115
+ view.attachAfter(this, prevView);
127
116
  };
128
- AppElement.prototype.detachView = function (viewIndex) {
129
- var view = this.nestedViews.splice(viewIndex, 1)[0];
117
+ ViewContainer.prototype.detachView = function (viewIndex) {
118
+ var view = this.nestedViews[viewIndex];
119
+ // perf: array.pop is faster than array.splice!
120
+ if (viewIndex >= this.nestedViews.length - 1) {
121
+ this.nestedViews.pop();
122
+ }
123
+ else {
124
+ this.nestedViews.splice(viewIndex, 1);
125
+ }
130
126
  if (view.type === ViewType.COMPONENT) {
131
127
  throw new Error("Component views can't be moved!");
132
128
  }
133
129
  view.detach();
134
- view.removeFromContentChildren(this);
135
130
  return view;
136
131
  };
137
- return AppElement;
132
+ return ViewContainer;
138
133
  }());
139
- //# sourceMappingURL=element.js.map
134
+ //# sourceMappingURL=view_container.js.map