angular2
Version:
Angular 2 - a web framework for modern web apps
1 lines • 8.53 kB
Source Map (JSON)
{"version":3,"sources":["view_factory.js"],"names":[],"mappings":"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","file":"angular2/src/core/compiler/view_factory.es6","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"]}