UNPKG

angular2

Version:

Angular 2 - a web framework for modern web apps

118 lines (117 loc) 6.41 kB
"use strict"; Object.defineProperties(module.exports, { VIEW_POOL_CAPACITY: {get: function() { return VIEW_POOL_CAPACITY; }}, ViewFactory: {get: function() { return ViewFactory; }}, __esModule: {value: true} }); var $__angular2_47_di__, $__angular2_47_src_47_facade_47_collection__, $__element_95_injector__, $__angular2_47_src_47_facade_47_lang__, $__angular2_47_src_47_core_47_compiler_47_ng_95_element__, $__view__, $__angular2_47_src_47_render_47_api__; var $__0 = ($__angular2_47_di__ = require("angular2/di"), $__angular2_47_di__ && $__angular2_47_di__.__esModule && $__angular2_47_di__ || {default: $__angular2_47_di__}), Injectable = $__0.Injectable, Inject = $__0.Inject, OpaqueToken = $__0.OpaqueToken; var $__1 = ($__angular2_47_src_47_facade_47_collection__ = require("angular2/src/facade/collection"), $__angular2_47_src_47_facade_47_collection__ && $__angular2_47_src_47_facade_47_collection__.__esModule && $__angular2_47_src_47_facade_47_collection__ || {default: $__angular2_47_src_47_facade_47_collection__}), ListWrapper = $__1.ListWrapper, MapWrapper = $__1.MapWrapper, Map = $__1.Map, StringMapWrapper = $__1.StringMapWrapper, List = $__1.List; var eli = ($__element_95_injector__ = require("./element_injector"), $__element_95_injector__ && $__element_95_injector__.__esModule && $__element_95_injector__ || {default: $__element_95_injector__}); var $__2 = ($__angular2_47_src_47_facade_47_lang__ = require("angular2/src/facade/lang"), $__angular2_47_src_47_facade_47_lang__ && $__angular2_47_src_47_facade_47_lang__.__esModule && $__angular2_47_src_47_facade_47_lang__ || {default: $__angular2_47_src_47_facade_47_lang__}), isPresent = $__2.isPresent, isBlank = $__2.isBlank, BaseException = $__2.BaseException; var NgElement = ($__angular2_47_src_47_core_47_compiler_47_ng_95_element__ = require("angular2/src/core/compiler/ng_element"), $__angular2_47_src_47_core_47_compiler_47_ng_95_element__ && $__angular2_47_src_47_core_47_compiler_47_ng_95_element__.__esModule && $__angular2_47_src_47_core_47_compiler_47_ng_95_element__ || {default: $__angular2_47_src_47_core_47_compiler_47_ng_95_element__}).NgElement; var viewModule = ($__view__ = require("./view"), $__view__ && $__view__.__esModule && $__view__ || {default: $__view__}); var Renderer = ($__angular2_47_src_47_render_47_api__ = require("angular2/src/render/api"), $__angular2_47_src_47_render_47_api__ && $__angular2_47_src_47_render_47_api__.__esModule && $__angular2_47_src_47_render_47_api__ || {default: $__angular2_47_src_47_render_47_api__}).Renderer; var VIEW_POOL_CAPACITY = 'ViewFactory.viewPoolCapacity'; var ViewFactory = function ViewFactory(poolCapacityPerProtoView, renderer) { this._poolCapacityPerProtoView = poolCapacityPerProtoView; this._pooledViewsPerProtoView = MapWrapper.create(); this._renderer = renderer; }; ($traceurRuntime.createClass)(ViewFactory, { getView: function(protoView) { var pooledViews = MapWrapper.get(this._pooledViewsPerProtoView, protoView); if (isPresent(pooledViews) && pooledViews.length > 0) { return ListWrapper.removeLast(pooledViews); } return this._createView(protoView); }, returnView: function(view) { if (view.hydrated()) { throw new BaseException('Only dehydrated Views can be put back into the pool!'); } var protoView = view.proto; var pooledViews = MapWrapper.get(this._pooledViewsPerProtoView, protoView); if (isBlank(pooledViews)) { pooledViews = []; MapWrapper.set(this._pooledViewsPerProtoView, protoView, pooledViews); } if (pooledViews.length < this._poolCapacityPerProtoView) { ListWrapper.push(pooledViews, view); } }, _createView: function(protoView) { var view = new viewModule.AppView(this._renderer, this, protoView, protoView.protoLocals); var changeDetector = protoView.protoChangeDetector.instantiate(view, protoView.bindings, protoView.getVariableBindings(), protoView.getdirectiveRecords()); var binders = protoView.elementBinders; var elementInjectors = ListWrapper.createFixedSize(binders.length); var rootElementInjectors = []; var preBuiltObjects = ListWrapper.createFixedSize(binders.length); var componentChildViews = ListWrapper.createFixedSize(binders.length); for (var binderIdx = 0; binderIdx < binders.length; binderIdx++) { var binder = binders[binderIdx]; var elementInjector = null; var protoElementInjector = binder.protoElementInjector; if (isPresent(protoElementInjector)) { if (isPresent(protoElementInjector.parent)) { var parentElementInjector = elementInjectors[protoElementInjector.parent.index]; elementInjector = protoElementInjector.instantiate(parentElementInjector); } else { elementInjector = protoElementInjector.instantiate(null); ListWrapper.push(rootElementInjectors, elementInjector); } } elementInjectors[binderIdx] = elementInjector; var childChangeDetector = null; if (binder.hasStaticComponent()) { var childView = this._createView(binder.nestedProtoView); childChangeDetector = childView.changeDetector; changeDetector.addShadowDomChild(childChangeDetector); componentChildViews[binderIdx] = childView; } if (isPresent(elementInjector)) { preBuiltObjects[binderIdx] = new eli.PreBuiltObjects(view, new NgElement(view, binderIdx), childChangeDetector); } } view.init(changeDetector, elementInjectors, rootElementInjectors, preBuiltObjects, componentChildViews); return view; } }, {}); Object.defineProperty(ViewFactory, "annotations", {get: function() { return [new Injectable()]; }}); Object.defineProperty(ViewFactory, "parameters", {get: function() { return [[new Inject(VIEW_POOL_CAPACITY)], [Renderer]]; }}); Object.defineProperty(ViewFactory.prototype.getView, "parameters", {get: function() { return [[viewModule.AppProtoView]]; }}); Object.defineProperty(ViewFactory.prototype.returnView, "parameters", {get: function() { return [[viewModule.AppView]]; }}); Object.defineProperty(ViewFactory.prototype._createView, "parameters", {get: function() { return [[viewModule.AppProtoView]]; }}); //# sourceMappingURL=view_factory.js.map //# sourceMappingURL=./view_factory.map