angular2
Version:
Angular 2 - a web framework for modern web apps
1 lines • 9.85 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.js","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"]}