{"version":3,"sources":["view_hydrator.js"],"names":[],"mappings":"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","file":"angular2/src/render/dom/view/view_hydrator.es6","sourcesContent":["import {Injectable} from 'angular2/di';\nimport {int, isPresent, isBlank, BaseException} from 'angular2/src/facade/lang';\nimport {ListWrapper, MapWrapper, Map, StringMapWrapper, List} from 'angular2/src/facade/collection';\n\nimport * as ldModule from '../shadow_dom/light_dom';\nimport {EventManager} from '../events/event_manager';\nimport {ViewFactory} from './view_factory';\nimport * as vcModule from './view_container';\nimport * as viewModule from './view';\nimport {ShadowDomStrategy} from '../shadow_dom/shadow_dom_strategy';\n\n/**\n * A dehydrated view is a state of the view that allows it to be moved around\n * the view tree.\n *\n * A dehydrated view has the following properties:\n *\n * - all viewcontainers are empty.\n *\n * A call to hydrate/dehydrate is called whenever a view is attached/detached,\n * but it does not do the attach/detach itself.\n */\n@Injectable()\nexport class RenderViewHydrator {\n  _eventManager:EventManager;\n  _viewFactory:ViewFactory;\n  _shadowDomStrategy:ShadowDomStrategy;\n\n  constructor(eventManager:EventManager, viewFactory:ViewFactory, shadowDomStrategy:ShadowDomStrategy) {\n    this._eventManager = eventManager;\n    this._viewFactory = viewFactory;\n    this._shadowDomStrategy = shadowDomStrategy;\n  }\n\n  hydrateDynamicComponentView(hostView:viewModule.RenderView, boundElementIndex:number, componentView:viewModule.RenderView) {\n    ViewFactory.setComponentView(this._shadowDomStrategy, hostView, boundElementIndex, componentView);\n    var lightDom = hostView.lightDoms[boundElementIndex];\n    this._viewHydrateRecurse(componentView, lightDom);\n    if (isPresent(lightDom)) {\n      lightDom.redistribute();\n    }\n  }\n\n  dehydrateDynamicComponentView(parentView:viewModule.RenderView, boundElementIndex:number) {\n    throw new BaseException('Not supported yet');\n    // Something along these lines:\n    // var componentView = parentView.componentChildViews[boundElementIndex];\n    // vcModule.ViewContainer.removeViewNodes(componentView);\n    // parentView.componentChildViews[boundElementIndex] = null;\n    // parentView.lightDoms[boundElementIndex] = null;\n    // this._viewDehydrateRecurse(componentView);\n  }\n\n  hydrateInPlaceHostView(parentView:viewModule.RenderView, hostView:viewModule.RenderView) {\n    if (isPresent(parentView)) {\n      ListWrapper.push(parentView.imperativeHostViews, hostView);\n    }\n    this._viewHydrateRecurse(hostView, null);\n  }\n\n  dehydrateInPlaceHostView(parentView:viewModule.RenderView, hostView:viewModule.RenderView) {\n    if (isPresent(parentView)) {\n      ListWrapper.remove(parentView.imperativeHostViews, hostView);\n    }\n    vcModule.ViewContainer.removeViewNodes(hostView);\n    hostView.rootNodes = [];\n    this._viewDehydrateRecurse(hostView);\n  }\n\n  hydrateViewInViewContainer(viewContainer:vcModule.ViewContainer, view:viewModule.RenderView) {\n    this._viewHydrateRecurse(view, viewContainer.parentView.hostLightDom);\n  }\n\n  dehydrateViewInViewContainer(viewContainer:vcModule.ViewContainer, view:viewModule.RenderView) {\n    this._viewDehydrateRecurse(view);\n  }\n\n  _viewHydrateRecurse(view, hostLightDom: ldModule.LightDom) {\n    if (view.hydrated) throw new BaseException('The view is already hydrated.');\n    view.hydrated = true;\n    view.hostLightDom = hostLightDom;\n\n    // content tags\n    for (var i = 0; i < view.contentTags.length; i++) {\n      var destLightDom = view.getDirectParentLightDom(i);\n      var ct = view.contentTags[i];\n      if (isPresent(ct)) {\n        ct.hydrate(destLightDom);\n      }\n    }\n\n    // componentChildViews\n    for (var i = 0; i < view.componentChildViews.length; i++) {\n      var cv = view.componentChildViews[i];\n      if (isPresent(cv)) {\n        this._viewHydrateRecurse(cv, view.lightDoms[i]);\n      }\n    }\n\n    for (var i = 0; i < view.lightDoms.length; ++i) {\n      var lightDom = view.lightDoms[i];\n      if (isPresent(lightDom)) {\n        lightDom.redistribute();\n      }\n    }\n\n    //add global events\n    view.eventHandlerRemovers = ListWrapper.create();\n    var binders = view.proto.elementBinders;\n    for (var binderIdx = 0; binderIdx < binders.length; binderIdx++) {\n      var binder = binders[binderIdx];\n      if (isPresent(binder.globalEvents)) {\n        for (var i = 0; i < binder.globalEvents.length; i++) {\n          var globalEvent = binder.globalEvents[i];\n          var remover = this._createGlobalEventListener(view, binderIdx, globalEvent.name, globalEvent.target, globalEvent.fullName);\n          ListWrapper.push(view.eventHandlerRemovers, remover);\n        }\n      }\n    }\n  }\n\n  _createGlobalEventListener(view, elementIndex, eventName, eventTarget, fullName): Function {\n    return this._eventManager.addGlobalEventListener(eventTarget, eventName, (event) => {\n      view.dispatchEvent(elementIndex, fullName, event);\n    });\n  }\n\n  _viewDehydrateRecurse(view) {\n    // Note: preserve the opposite order of the hydration process.\n\n    // componentChildViews\n    for (var i = 0; i < view.componentChildViews.length; i++) {\n      var cv = view.componentChildViews[i];\n      if (isPresent(cv)) {\n        this._viewDehydrateRecurse(cv);\n        if (view.proto.elementBinders[i].hasDynamicComponent()) {\n          vcModule.ViewContainer.removeViewNodes(cv);\n          this._viewFactory.returnView(cv);\n          view.lightDoms[i] = null;\n          view.componentChildViews[i] = null;\n        }\n      }\n    }\n\n    // imperativeHostViews\n    for (var i = 0; i < view.imperativeHostViews.length; i++) {\n      var hostView = view.imperativeHostViews[i];\n      this._viewDehydrateRecurse(hostView);\n      vcModule.ViewContainer.removeViewNodes(hostView);\n      hostView.rootNodes = [];\n      this._viewFactory.returnView(hostView);\n    }\n    view.imperativeHostViews = [];\n\n\n    // viewContainers and content tags\n    if (isPresent(view.viewContainers)) {\n      for (var i = 0; i < view.viewContainers.length; i++) {\n        var vc = view.viewContainers[i];\n        if (isPresent(vc)) {\n          this._viewContainerDehydrateRecurse(vc);\n        }\n        var ct = view.contentTags[i];\n        if (isPresent(ct)) {\n          ct.dehydrate();\n        }\n      }\n    }\n\n    //remove global events\n    for (var i = 0; i < view.eventHandlerRemovers.length; i++) {\n      view.eventHandlerRemovers[i]();\n    }\n\n    view.hostLightDom = null;\n    view.eventHandlerRemovers = null;\n    view.setEventDispatcher(null);\n    view.hydrated = false;\n  }\n\n  _viewContainerDehydrateRecurse(viewContainer) {\n    for (var i=0; i<viewContainer.views.length; i++) {\n      this._viewDehydrateRecurse(viewContainer.views[i]);\n    }\n    viewContainer.clear();\n  }\n\n}\n"]}