UNPKG

angular2

Version:

Angular 2 - a web framework for modern web apps

1 lines 10.1 kB
{"version":3,"sources":["view_splitter.js"],"names":[],"mappings":"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","file":"angular2/src/render/dom/compiler/view_splitter.es6","sourcesContent":["import {isBlank, isPresent, BaseException, StringWrapper} from 'angular2/src/facade/lang';\nimport {DOM} from 'angular2/src/dom/dom_adapter';\nimport {MapWrapper, ListWrapper} from 'angular2/src/facade/collection';\nimport {Parser} from 'angular2/change_detection';\n\nimport {CompileStep} from './compile_step';\nimport {CompileElement} from './compile_element';\nimport {CompileControl} from './compile_control';\n\nimport {dashCaseToCamelCase} from '../util';\n\n/**\n * Splits views at `<template>` elements or elements with `template` attribute:\n * For `<template>` elements:\n * - moves the content into a new and disconnected `<template>` element\n * that is marked as view root.\n *\n * For elements with a `template` attribute:\n * - replaces the element with an empty `<template>` element,\n * parses the content of the `template` attribute and adds the information to that\n * `<template>` element. Marks the elements as view root.\n *\n * Note: In both cases the root of the nested view is disconnected from its parent element.\n * This is needed for browsers that don't support the `<template>` element\n * as we want to do locate elements with bindings using `getElementsByClassName` later on,\n * which should not descend into the nested view.\n */\nexport class ViewSplitter extends CompileStep {\n _parser:Parser;\n\n constructor(parser:Parser) {\n super();\n this._parser = parser;\n }\n\n process(parent:CompileElement, current:CompileElement, control:CompileControl) {\n var attrs = current.attrs();\n var templateBindings = MapWrapper.get(attrs, 'template');\n var hasTemplateBinding = isPresent(templateBindings);\n\n // look for template shortcuts such as *if=\"condition\" and treat them as template=\"if condition\"\n MapWrapper.forEach(attrs, (attrValue, attrName) => {\n if (StringWrapper.startsWith(attrName, '*')) {\n var key = StringWrapper.substring(attrName, 1); // remove the star\n if (hasTemplateBinding) {\n // 2nd template binding detected\n throw new BaseException(`Only one template directive per element is allowed: ` +\n `${templateBindings} and ${key} cannot be used simultaneously ` +\n `in ${current.elementDescription}`);\n } else {\n templateBindings = (attrValue.length == 0) ? key : key + ' ' + attrValue;\n hasTemplateBinding = true;\n }\n }\n });\n\n if (isPresent(parent)) {\n if (DOM.isTemplateElement(current.element)) {\n if (!current.isViewRoot) {\n var viewRoot = new CompileElement(DOM.createTemplate(''));\n viewRoot.inheritedProtoView = current.bindElement().bindNestedProtoView(viewRoot.element);\n // viewRoot doesn't appear in the original template, so we associate\n // the current element description to get a more meaningful message in case of error\n viewRoot.elementDescription = current.elementDescription;\n viewRoot.isViewRoot = true;\n\n this._moveChildNodes(DOM.content(current.element), DOM.content(viewRoot.element));\n control.addChild(viewRoot);\n }\n } if (hasTemplateBinding) {\n var newParent = new CompileElement(DOM.createTemplate(''));\n newParent.inheritedProtoView = current.inheritedProtoView;\n newParent.inheritedElementBinder = current.inheritedElementBinder;\n newParent.distanceToInheritedBinder = current.distanceToInheritedBinder;\n // newParent doesn't appear in the original template, so we associate\n // the current element description to get a more meaningful message in case of error\n newParent.elementDescription = current.elementDescription;\n\n current.inheritedProtoView = newParent.bindElement().bindNestedProtoView(current.element);\n current.inheritedElementBinder = null;\n current.distanceToInheritedBinder = 0;\n current.isViewRoot = true;\n this._parseTemplateBindings(templateBindings, newParent);\n\n this._addParentElement(current.element, newParent.element);\n control.addParent(newParent);\n DOM.remove(current.element);\n }\n }\n }\n\n _moveChildNodes(source, target) {\n var next = DOM.firstChild(source);\n while (isPresent(next)) {\n DOM.appendChild(target, next);\n next = DOM.firstChild(source);\n }\n }\n\n _addParentElement(currentElement, newParentElement) {\n DOM.insertBefore(currentElement, newParentElement);\n DOM.appendChild(newParentElement, currentElement);\n }\n\n _parseTemplateBindings(templateBindings:string, compileElement:CompileElement) {\n var bindings = this._parser.parseTemplateBindings(templateBindings, compileElement.elementDescription);\n for (var i=0; i<bindings.length; i++) {\n var binding = bindings[i];\n if (binding.keyIsVar) {\n compileElement.bindElement().bindVariable(\n dashCaseToCamelCase(binding.key), binding.name\n );\n MapWrapper.set(compileElement.attrs(), binding.key, binding.name);\n } else if (isPresent(binding.expression)) {\n compileElement.bindElement().bindProperty(\n dashCaseToCamelCase(binding.key), binding.expression\n );\n MapWrapper.set(compileElement.attrs(), binding.key, binding.expression.source);\n } else {\n DOM.setAttribute(compileElement.element, binding.key, '');\n }\n }\n }\n}\n"]}