{"version":3,"sources":["template_resolver_mock.js"],"names":[],"mappings":"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","file":"angular2/src/mock/template_resolver_mock.es6","sourcesContent":["import {Map, MapWrapper, ListWrapper} from 'angular2/src/facade/collection';\nimport {Type, isPresent, BaseException, stringify, isBlank} from 'angular2/src/facade/lang';\n\nimport {View} from 'angular2/src/core/annotations/view';\nimport {TemplateResolver} from 'angular2/src/core/compiler/template_resolver';\n\nexport class MockTemplateResolver extends TemplateResolver {\n  _templates: Map<Type, View>;\n  _inlineTemplates: Map<Type, string>;\n  _templateCache: Map<Type, View>;\n  _directiveOverrides: Map<Type, Type>;\n\n  constructor() {\n    super();\n    this._templates = MapWrapper.create();\n    this._inlineTemplates = MapWrapper.create();\n    this._templateCache = MapWrapper.create();\n    this._directiveOverrides = MapWrapper.create();\n  }\n\n  /**\n   * Overrides the {@link View} for a component.\n   *\n   * @param {Type} component\n   * @param {ViewDefinition} view\n   */\n  setView(component: Type, view: View): void {\n    this._checkOverrideable(component);\n    MapWrapper.set(this._templates, component, view);\n  }\n\n  /**\n   * Overrides the inline template for a component - other configuration remains unchanged.\n   *\n   * @param {Type} component\n   * @param {string} template\n   */\n  setInlineTemplate(component: Type, template: string): void {\n    this._checkOverrideable(component);\n    MapWrapper.set(this._inlineTemplates, component, template);\n  }\n\n  /**\n   * Overrides a directive from the component {@link View}.\n   *\n   * @param {Type} component\n   * @param {Type} from\n   * @param {Type} to\n   */\n  overrideTemplateDirective(component: Type, from: Type, to: Type): void {\n    this._checkOverrideable(component);\n\n    var overrides = MapWrapper.get(this._directiveOverrides, component);\n\n    if (isBlank(overrides)) {\n      overrides = MapWrapper.create();\n      MapWrapper.set(this._directiveOverrides, component, overrides);\n    }\n\n    MapWrapper.set(overrides, from, to);\n  }\n\n  /**\n   * Returns the {@link View} for a component:\n   * - Set the {@link View} to the overridden template when it exists or fallback to the default `TemplateResolver`,\n   *   see `setView`.\n   * - Override the directives, see `overrideTemplateDirective`.\n   * - Override the @View definition, see `setInlineTemplate`.\n   *\n   * @param component\n   * @returns {ViewDefinition}\n   */\n  resolve(component: Type): View {\n    var view = MapWrapper.get(this._templateCache, component);\n    if (isPresent(view)) return view;\n\n    view = MapWrapper.get(this._templates, component);\n    if (isBlank(view)) {\n      view = super.resolve(component);\n    }\n\n    var directives = view.directives;\n    var overrides = MapWrapper.get(this._directiveOverrides, component);\n\n    if (isPresent(overrides) && isPresent(directives)) {\n      directives = ListWrapper.clone(view.directives);\n      MapWrapper.forEach(overrides, (to, from) => {\n        var srcIndex = directives.indexOf(from);\n        if (srcIndex == -1) {\n          throw new BaseException(`Overriden directive ${stringify(from)} not found in the template of ${stringify(component)}`);\n        }\n        directives[srcIndex] = to;\n      });\n      view = new View({\n        template: view.template,\n        templateUrl: view.templateUrl,\n        directives: directives\n      });\n    }\n\n    var inlineTemplate = MapWrapper.get(this._inlineTemplates, component);\n    if (isPresent(inlineTemplate)) {\n      view = new View({\n        template: inlineTemplate,\n        templateUrl: null,\n        directives: view.directives\n      });\n    }\n\n    MapWrapper.set(this._templateCache, component, view);\n    return view;\n  }\n\n  /**\n   * Once a component has been compiled, the AppProtoView is stored in the compiler cache.\n   *\n   * Then it should not be possible to override the component configuration after the component\n   * has been compiled.\n   *\n   * @param {Type} component\n   */\n  _checkOverrideable(component: Type): void {\n    var cached = MapWrapper.get(this._templateCache, component);\n\n    if (isPresent(cached)) {\n      throw new BaseException(`The component ${stringify(component)} has already been compiled, its configuration can not be changed`);\n    }\n  }\n}\n"]}