angular2
Version:
Angular 2 - a web framework for modern web apps
1 lines • 10.4 kB
Source Map (JSON)
{"version":3,"sources":["view_container.js"],"names":[],"mappings":"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","file":"angular2/src/core/compiler/view_container.js","sourcesContent":["import {ListWrapper, MapWrapper, List} from 'angular2/src/facade/collection';\nimport {BaseException} from 'angular2/src/facade/lang';\nimport {Injector} from 'angular2/di';\nimport * as eiModule from 'angular2/src/core/compiler/element_injector';\nimport {isPresent, isBlank} from 'angular2/src/facade/lang';\n\nimport * as viewModule from './view';\nimport {ViewContainerRef} from 'angular2/src/render/api';\n\n/**\n * @exportedAs angular2/view\n */\nexport class ViewContainer {\n parentView: viewModule.AppView;\n defaultProtoView: viewModule.AppProtoView;\n _views: List<viewModule.AppView>;\n elementInjector: eiModule.ElementInjector;\n\n constructor(parentView: viewModule.AppView,\n defaultProtoView: viewModule.AppProtoView,\n elementInjector: eiModule.ElementInjector) {\n this.parentView = parentView;\n this.defaultProtoView = defaultProtoView;\n this.elementInjector = elementInjector;\n\n // The order in this list matches the DOM order.\n this._views = [];\n }\n\n getRender() {\n return new ViewContainerRef(this.parentView.render, this.elementInjector.getBoundElementIndex());\n }\n\n internalClearWithoutRender() {\n for (var i = this._views.length - 1; i >= 0; i--) {\n this._detachInjectors(i);\n }\n }\n\n clear() {\n for (var i = this._views.length - 1; i >= 0; i--) {\n this.remove(i);\n }\n }\n\n get(index: number): viewModule.AppView {\n return this._views[index];\n }\n\n get length() {\n return this._views.length;\n }\n\n _siblingInjectorToLinkAfter(index: number) {\n if (index == 0) return null;\n return ListWrapper.last(this._views[index - 1].rootElementInjectors)\n }\n\n hydrated() {\n return this.parentView.hydrated();\n }\n\n // TODO(rado): profile and decide whether bounds checks should be added\n // to the methods below.\n create(atIndex=-1, protoView:viewModule.AppProtoView = null, injector:Injector = null): viewModule.AppView {\n if (atIndex == -1) atIndex = this._views.length;\n if (!this.hydrated()) throw new BaseException(\n 'Cannot create views on a dehydrated ViewContainer');\n if (isBlank(protoView)) {\n protoView = this.defaultProtoView;\n }\n var newView = this.parentView.viewFactory.getView(protoView);\n // insertion must come before hydration so that element injector trees are attached.\n this._insertInjectors(newView, atIndex);\n this.parentView.viewHydrator.hydrateViewInViewContainer(this, atIndex, newView, injector);\n\n return newView;\n }\n\n insert(view, atIndex=-1): viewModule.AppView {\n if (atIndex == -1) atIndex = this._views.length;\n this._insertInjectors(view, atIndex);\n this.parentView.changeDetector.addChild(view.changeDetector);\n this.parentView.renderer.insertViewIntoContainer(this.getRender(), atIndex, view.render);\n return view;\n }\n\n _insertInjectors(view, atIndex): viewModule.AppView {\n ListWrapper.insert(this._views, atIndex, view);\n this._linkElementInjectors(this._siblingInjectorToLinkAfter(atIndex), view);\n\n return view;\n }\n\n indexOf(view:viewModule.AppView) {\n return ListWrapper.indexOf(this._views, view);\n }\n\n remove(atIndex=-1) {\n if (atIndex == -1) atIndex = this._views.length - 1;\n var view = this._views[atIndex];\n // opposite order as in create\n this.parentView.viewHydrator.dehydrateViewInViewContainer(this, atIndex, view);\n this._detachInjectors(atIndex);\n this.parentView.viewFactory.returnView(view);\n // view is intentionally not returned to the client.\n }\n\n /**\n * The method can be used together with insert to implement a view move, i.e.\n * moving the dom nodes while the directives in the view stay intact.\n */\n detach(atIndex=-1): viewModule.AppView {\n if (atIndex == -1) atIndex = this._views.length - 1;\n var detachedView = this._detachInjectors(atIndex);\n detachedView.changeDetector.remove();\n this.parentView.renderer.detachViewFromContainer(this.getRender(), atIndex);\n return detachedView;\n }\n\n _detachInjectors(atIndex): viewModule.AppView {\n var detachedView = this.get(atIndex);\n ListWrapper.removeAt(this._views, atIndex);\n this._unlinkElementInjectors(detachedView);\n return detachedView;\n }\n\n _linkElementInjectors(sibling, view) {\n for (var i = view.rootElementInjectors.length - 1; i >= 0; i--) {\n view.rootElementInjectors[i].linkAfter(this.elementInjector, sibling);\n }\n }\n\n _unlinkElementInjectors(view) {\n for (var i = 0; i < view.rootElementInjectors.length; ++i) {\n view.rootElementInjectors[i].unlink();\n }\n }\n}\n"]}