angular2
Version:
Angular 2 - a web framework for modern web apps
1 lines • 9.09 kB
Source Map (JSON)
{"version":3,"sources":["light_dom.js"],"names":[],"mappings":"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","file":"angular2/src/render/dom/shadow_dom/light_dom.es6","sourcesContent":["import {DOM} from 'angular2/src/dom/dom_adapter';\nimport {List, ListWrapper} from 'angular2/src/facade/collection';\nimport {isBlank, isPresent} from 'angular2/src/facade/lang';\n\nimport * as viewModule from '../view/view';\nimport {Content} from './content_tag';\n\nexport class DestinationLightDom {}\n\nclass _Root {\n node;\n boundElementIndex:number;\n\n constructor(node, boundElementIndex) {\n this.node = node;\n this.boundElementIndex = boundElementIndex;\n }\n}\n\n// TODO: LightDom should implement DestinationLightDom\n// once interfaces are supported\nexport class LightDom {\n // The light DOM of the element is enclosed inside the lightDomView\n lightDomView:viewModule.RenderView;\n // The shadow DOM\n shadowDomView:viewModule.RenderView;\n // The nodes of the light DOM\n nodes:List;\n roots:List<_Root>;\n\n constructor(lightDomView:viewModule.RenderView, shadowDomView:viewModule.RenderView, element) {\n this.lightDomView = lightDomView;\n this.shadowDomView = shadowDomView;\n this.nodes = DOM.childNodesAsList(element);\n\n this.roots = null;\n }\n\n redistribute() {\n redistributeNodes(this.contentTags(), this.expandedDomNodes());\n }\n\n contentTags(): List<Content> {\n return this._collectAllContentTags(this.shadowDomView, []);\n }\n\n // Collects the Content directives from the view and all its child views\n _collectAllContentTags(view: viewModule.RenderView, acc:List<Content>):List<Content> {\n var contentTags = view.contentTags;\n var vcs = view.viewContainers;\n for (var i=0; i<vcs.length; i++) {\n var vc = vcs[i];\n var contentTag = contentTags[i];\n if (isPresent(contentTag)) {\n ListWrapper.push(acc, contentTag);\n }\n if (isPresent(vc)) {\n ListWrapper.forEach(vc.contentTagContainers(), (view) => {\n this._collectAllContentTags(view, acc);\n });\n }\n }\n return acc;\n }\n\n // Collects the nodes of the light DOM by merging:\n // - nodes from enclosed ViewContainers,\n // - nodes from enclosed content tags,\n // - plain DOM nodes\n expandedDomNodes():List {\n var res = [];\n\n var roots = this._roots();\n for (var i = 0; i < roots.length; ++i) {\n\n var root = roots[i];\n if (isPresent(root.boundElementIndex)) {\n var vc = this.lightDomView.viewContainers[root.boundElementIndex];\n var content = this.lightDomView.contentTags[root.boundElementIndex];\n if (isPresent(vc)) {\n res = ListWrapper.concat(res, vc.nodes());\n } else if (isPresent(content)) {\n res = ListWrapper.concat(res, content.nodes());\n } else {\n ListWrapper.push(res, root.node);\n }\n } else {\n ListWrapper.push(res, root.node);\n }\n }\n return res;\n }\n\n // Returns a list of Roots for all the nodes of the light DOM.\n // The Root object contains the DOM node and its corresponding boundElementIndex\n _roots() {\n if (isPresent(this.roots)) return this.roots;\n\n var boundElements = this.lightDomView.boundElements;\n\n this.roots = ListWrapper.map(this.nodes, (n) => {\n var boundElementIndex = null;\n for (var i=0; i<boundElements.length; i++) {\n var boundEl = boundElements[i];\n if (isPresent(boundEl) && boundEl === n) {\n boundElementIndex = i;\n break;\n }\n }\n return new _Root(n, boundElementIndex);\n });\n\n return this.roots;\n }\n}\n\n// Projects the light DOM into the shadow DOM\nfunction redistributeNodes(contents:List<Content>, nodes:List) {\n for (var i = 0; i < contents.length; ++i) {\n var content = contents[i];\n var select = content.select;\n\n // Empty selector is identical to <content/>\n if (select.length === 0) {\n content.insert(ListWrapper.clone(nodes));\n ListWrapper.clear(nodes);\n } else {\n var matchSelector = (n) => DOM.elementMatches(n, select);\n var matchingNodes = ListWrapper.filter(nodes, matchSelector);\n content.insert(matchingNodes);\n ListWrapper.removeAll(nodes, matchingNodes);\n }\n }\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (isPresent(node.parentNode)) {\n DOM.remove(nodes[i]);\n }\n }\n}\n"]}