{"version":3,"sources":["view_container.js"],"names":[],"mappings":"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","file":"angular2/src/render/dom/view/view_container.es6","sourcesContent":["import {isPresent, isBlank, BaseException} from 'angular2/src/facade/lang';\nimport {ListWrapper, MapWrapper, List} from 'angular2/src/facade/collection';\nimport {DOM} from 'angular2/src/dom/dom_adapter';\n\nimport * as viewModule from './view';\n\nexport class ViewContainer {\n  parentView: viewModule.RenderView;\n  boundElementIndex: number;\n  views: List<viewModule.RenderView>;\n\n  constructor(parentView: viewModule.RenderView, boundElementIndex: number) {\n    this.parentView = parentView;\n    this.boundElementIndex = boundElementIndex;\n    // The order in this list matches the DOM order.\n    this.views = [];\n  }\n\n  get(index: number): viewModule.RenderView {\n    return this.views[index];\n  }\n\n  size() {\n    return this.views.length;\n  }\n\n  _siblingToInsertAfter(index: number) {\n    if (index == 0) return this.parentView.boundElements[this.boundElementIndex];\n    return ListWrapper.last(this.views[index - 1].rootNodes);\n  }\n\n  _checkHydrated() {\n    if (!this.parentView.hydrated) throw new BaseException(\n        'Cannot change dehydrated ViewContainer');\n  }\n\n  _getDirectParentLightDom() {\n    return this.parentView.getDirectParentLightDom(this.boundElementIndex);\n  }\n\n  clear() {\n    this._checkHydrated();\n    for (var i=this.views.length-1; i>=0; i--) {\n      this.detach(i);\n    }\n    if (isPresent(this._getDirectParentLightDom())) {\n      this._getDirectParentLightDom().redistribute();\n    }\n  }\n\n  insert(view, atIndex=-1): viewModule.RenderView {\n    this._checkHydrated();\n    if (atIndex == -1) atIndex = this.views.length;\n    ListWrapper.insert(this.views, atIndex, view);\n\n    if (isBlank(this._getDirectParentLightDom())) {\n      ViewContainer.moveViewNodesAfterSibling(this._siblingToInsertAfter(atIndex), view);\n    } else {\n      this._getDirectParentLightDom().redistribute();\n    }\n    // new content tags might have appeared, we need to redistribute.\n    if (isPresent(this.parentView.hostLightDom)) {\n      this.parentView.hostLightDom.redistribute();\n    }\n    return view;\n  }\n\n  /**\n   * The method can be used together with insert to implement a view move, i.e.\n   * moving the dom nodes while the directives in the view stay intact.\n   */\n  detach(atIndex:number) {\n    this._checkHydrated();\n    var detachedView = this.get(atIndex);\n    ListWrapper.removeAt(this.views, atIndex);\n    if (isBlank(this._getDirectParentLightDom())) {\n      ViewContainer.removeViewNodes(detachedView);\n    } else {\n      this._getDirectParentLightDom().redistribute();\n    }\n    // content tags might have disappeared we need to do redistribution.\n    if (isPresent(this.parentView.hostLightDom)) {\n      this.parentView.hostLightDom.redistribute();\n    }\n    return detachedView;\n  }\n\n  contentTagContainers() {\n    return this.views;\n  }\n\n  nodes():List {\n    var r = [];\n    for (var i = 0; i < this.views.length; ++i) {\n      r = ListWrapper.concat(r, this.views[i].rootNodes);\n    }\n    return r;\n  }\n\n  static moveViewNodesAfterSibling(sibling, view) {\n    for (var i = view.rootNodes.length - 1; i >= 0; --i) {\n      DOM.insertAfter(sibling, view.rootNodes[i]);\n    }\n  }\n\n  static removeViewNodes(view) {\n    var len = view.rootNodes.length;\n    if (len == 0) return;\n    var parent = view.rootNodes[0].parentNode;\n    for (var i = len - 1; i >= 0; --i) {\n      DOM.removeChild(parent, view.rootNodes[i]);\n    }\n  }\n}\n"]}