UNPKG

angular2

Version:

Angular 2 - a web framework for modern web apps

1 lines 8.97 kB
{"version":3,"sources":["view_factory.js"],"names":[],"mappings":"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","file":"angular2/src/core/compiler/view_factory.js","sourcesContent":["import {Injectable, Inject, OpaqueToken} from 'angular2/di';\nimport {ListWrapper, MapWrapper, Map, StringMapWrapper, List} from 'angular2/src/facade/collection';\nimport * as eli from './element_injector';\nimport {isPresent, isBlank, BaseException} from 'angular2/src/facade/lang';\nimport {NgElement} from 'angular2/src/core/compiler/ng_element';\nimport * as viewModule from './view';\nimport {Renderer} from 'angular2/src/render/api';\n\n// TODO(tbosch): Make this an OpaqueToken as soon as our transpiler supports this!\nexport const VIEW_POOL_CAPACITY = 'ViewFactory.viewPoolCapacity';\n\n@Injectable()\nexport class ViewFactory {\n _poolCapacityPerProtoView:number;\n _pooledViewsPerProtoView:Map<viewModule.AppProtoView, List<viewModule.AppView>>;\n _renderer:Renderer;\n\n constructor(@Inject(VIEW_POOL_CAPACITY) poolCapacityPerProtoView, renderer:Renderer) {\n this._poolCapacityPerProtoView = poolCapacityPerProtoView;\n this._pooledViewsPerProtoView = MapWrapper.create();\n this._renderer = renderer;\n }\n\n getView(protoView:viewModule.AppProtoView):viewModule.AppView {\n var pooledViews = MapWrapper.get(this._pooledViewsPerProtoView, protoView);\n if (isPresent(pooledViews) && pooledViews.length > 0) {\n return ListWrapper.removeLast(pooledViews);\n }\n return this._createView(protoView);\n }\n\n returnView(view:viewModule.AppView) {\n if (view.hydrated()) {\n throw new BaseException('Only dehydrated Views can be put back into the pool!');\n }\n var protoView = view.proto;\n var pooledViews = MapWrapper.get(this._pooledViewsPerProtoView, protoView);\n if (isBlank(pooledViews)) {\n pooledViews = [];\n MapWrapper.set(this._pooledViewsPerProtoView, protoView, pooledViews);\n }\n if (pooledViews.length < this._poolCapacityPerProtoView) {\n ListWrapper.push(pooledViews, view);\n }\n }\n\n _createView(protoView:viewModule.AppProtoView): viewModule.AppView {\n var view = new viewModule.AppView(this._renderer, this, protoView, protoView.protoLocals);\n var changeDetector = protoView.protoChangeDetector.instantiate(view, protoView.bindings,\n protoView.getVariableBindings(), protoView.getdirectiveRecords());\n\n var binders = protoView.elementBinders;\n var elementInjectors = ListWrapper.createFixedSize(binders.length);\n var rootElementInjectors = [];\n var preBuiltObjects = ListWrapper.createFixedSize(binders.length);\n var componentChildViews = ListWrapper.createFixedSize(binders.length);\n\n for (var binderIdx = 0; binderIdx < binders.length; binderIdx++) {\n var binder = binders[binderIdx];\n var elementInjector = null;\n\n // elementInjectors and rootElementInjectors\n var protoElementInjector = binder.protoElementInjector;\n if (isPresent(protoElementInjector)) {\n if (isPresent(protoElementInjector.parent)) {\n var parentElementInjector = elementInjectors[protoElementInjector.parent.index];\n elementInjector = protoElementInjector.instantiate(parentElementInjector);\n } else {\n elementInjector = protoElementInjector.instantiate(null);\n ListWrapper.push(rootElementInjectors, elementInjector);\n }\n }\n elementInjectors[binderIdx] = elementInjector;\n\n // componentChildViews\n var childChangeDetector = null;\n if (binder.hasStaticComponent()) {\n var childView = this._createView(binder.nestedProtoView);\n childChangeDetector = childView.changeDetector;\n changeDetector.addShadowDomChild(childChangeDetector);\n\n componentChildViews[binderIdx] = childView;\n }\n\n // preBuiltObjects\n if (isPresent(elementInjector)) {\n preBuiltObjects[binderIdx] = new eli.PreBuiltObjects(view, new NgElement(view, binderIdx), childChangeDetector);\n }\n }\n\n view.init(changeDetector, elementInjectors, rootElementInjectors,\n preBuiltObjects, componentChildViews);\n\n return view;\n }\n\n}\n"]}