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