angular2
Version:
Angular 2 - a web framework for modern web apps
1 lines • 14.8 kB
Source Map (JSON)
{"version":3,"sources":["view_factory.js"],"names":[],"mappings":"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","file":"angular2/src/render/dom/view/view_factory.js","sourcesContent":["import {OpaqueToken, Inject, Injectable} from 'angular2/di';\nimport {int, isPresent, isBlank, BaseException} from 'angular2/src/facade/lang';\nimport {ListWrapper, MapWrapper, Map, StringMapWrapper, List} from 'angular2/src/facade/collection';\n\nimport {DOM} from 'angular2/src/dom/dom_adapter';\n\nimport {Content} from '../shadow_dom/content_tag';\nimport {ShadowDomStrategy} from '../shadow_dom/shadow_dom_strategy';\nimport {EventManager} from 'angular2/src/render/dom/events/event_manager';\n\nimport * as pvModule from './proto_view';\nimport * as viewModule from './view';\nimport {NG_BINDING_CLASS_SELECTOR, NG_BINDING_CLASS} from '../util';\n\n// TODO(tbosch): Make this an OpaqueToken as soon as our transpiler supports this!\nexport const VIEW_POOL_CAPACITY = 'render.ViewFactory.viewPoolCapacity';\n\n@Injectable()\nexport class ViewFactory {\n _poolCapacityPerProtoView:number;\n _pooledViewsPerProtoView:Map<pvModule.RenderProtoView, List<viewModule.RenderView>>;\n _eventManager:EventManager;\n _shadowDomStrategy:ShadowDomStrategy;\n\n constructor(@Inject(VIEW_POOL_CAPACITY) poolCapacityPerProtoView,\n eventManager:EventManager, shadowDomStrategy:ShadowDomStrategy) {\n this._poolCapacityPerProtoView = poolCapacityPerProtoView;\n this._pooledViewsPerProtoView = MapWrapper.create();\n this._eventManager = eventManager;\n this._shadowDomStrategy = shadowDomStrategy;\n }\n\n createInPlaceHostView(hostElementSelector, hostProtoView:pvModule.RenderProtoView):viewModule.RenderView {\n return this._createView(hostProtoView, hostElementSelector);\n }\n\n getView(protoView:pvModule.RenderProtoView):viewModule.RenderView {\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, null);\n }\n\n returnView(view:viewModule.RenderView) {\n if (view.hydrated) {\n throw new BaseException('View is still hydrated');\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:pvModule.RenderProtoView, inplaceElement): viewModule.RenderView {\n if (isPresent(protoView.imperativeRendererId)) {\n return new viewModule.RenderView(\n protoView, [], [], [], []\n );\n }\n\n var rootElementClone = isPresent(inplaceElement) ? inplaceElement : DOM.importIntoDoc(protoView.element);\n var elementsWithBindingsDynamic;\n if (protoView.isTemplateElement) {\n elementsWithBindingsDynamic = DOM.querySelectorAll(DOM.content(rootElementClone), NG_BINDING_CLASS_SELECTOR);\n } else {\n elementsWithBindingsDynamic = DOM.getElementsByClassName(rootElementClone, NG_BINDING_CLASS);\n }\n\n var elementsWithBindings = ListWrapper.createFixedSize(elementsWithBindingsDynamic.length);\n for (var binderIdx = 0; binderIdx < elementsWithBindingsDynamic.length; ++binderIdx) {\n elementsWithBindings[binderIdx] = elementsWithBindingsDynamic[binderIdx];\n }\n\n var viewRootNodes;\n if (protoView.isTemplateElement) {\n var childNode = DOM.firstChild(DOM.content(rootElementClone));\n viewRootNodes = []; // TODO(perf): Should be fixed size, since we could pre-compute in in pvModule.RenderProtoView\n // Note: An explicit loop is the fastest way to convert a DOM array into a JS array!\n while(childNode != null) {\n ListWrapper.push(viewRootNodes, childNode);\n childNode = DOM.nextSibling(childNode);\n }\n } else {\n viewRootNodes = [rootElementClone];\n }\n var binders = protoView.elementBinders;\n var boundTextNodes = [];\n var boundElements = ListWrapper.createFixedSize(binders.length);\n var contentTags = ListWrapper.createFixedSize(binders.length);\n\n for (var binderIdx = 0; binderIdx < binders.length; binderIdx++) {\n var binder = binders[binderIdx];\n var element;\n if (binderIdx === 0 && protoView.rootBindingOffset === 1) {\n element = rootElementClone;\n } else {\n element = elementsWithBindings[binderIdx - protoView.rootBindingOffset];\n }\n boundElements[binderIdx] = element;\n\n // boundTextNodes\n var childNodes = DOM.childNodes(DOM.templateAwareRoot(element));\n var textNodeIndices = binder.textNodeIndices;\n for (var i = 0; i<textNodeIndices.length; i++) {\n ListWrapper.push(boundTextNodes, childNodes[textNodeIndices[i]]);\n }\n\n // contentTags\n var contentTag = null;\n if (isPresent(binder.contentTagSelector)) {\n contentTag = new Content(element, binder.contentTagSelector);\n }\n contentTags[binderIdx] = contentTag;\n }\n\n var view = new viewModule.RenderView(\n protoView, viewRootNodes,\n boundTextNodes, boundElements, contentTags\n );\n\n for (var binderIdx = 0; binderIdx < binders.length; binderIdx++) {\n var binder = binders[binderIdx];\n var element = boundElements[binderIdx];\n\n // static child components\n if (binder.hasStaticComponent()) {\n var childView = this._createView(binder.nestedProtoView, null);\n ViewFactory.setComponentView(this._shadowDomStrategy, view, binderIdx, childView);\n }\n\n // events\n if (isPresent(binder.eventLocals) && isPresent(binder.localEvents)) {\n for (var i = 0; i < binder.localEvents.length; i++) {\n this._createEventListener(view, element, binderIdx, binder.localEvents[i].name, binder.eventLocals);\n }\n }\n }\n\n return view;\n }\n\n _createEventListener(view, element, elementIndex, eventName, eventLocals) {\n this._eventManager.addEventListener(element, eventName, (event) => {\n view.dispatchEvent(elementIndex, eventName, event);\n });\n }\n\n // This method is used by the ViewFactory and the ViewHydrator\n // TODO(tbosch): change shadow dom emulation so that LightDom\n // instances don't need to be recreated by instead hydrated/dehydrated\n static setComponentView(shadowDomStrategy:ShadowDomStrategy, hostView:viewModule.RenderView, elementIndex:number, componentView:viewModule.RenderView) {\n var element = hostView.boundElements[elementIndex];\n var lightDom = shadowDomStrategy.constructLightDom(hostView, componentView, element);\n shadowDomStrategy.attachTemplate(element, componentView);\n hostView.lightDoms[elementIndex] = lightDom;\n hostView.componentChildViews[elementIndex] = componentView;\n }\n}\n"]}