{"version":3,"sources":["view_container.js"],"names":[],"mappings":"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","file":"angular2/src/render/dom/view/view_container.js","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"]}