{"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"]}