| /** | |
| * @license | |
| * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. | |
| * This code may only be used under the BSD style license found at | |
| * http://polymer.github.io/LICENSE.txt | |
| * The complete set of authors may be found at | |
| * http://polymer.github.io/AUTHORS.txt | |
| * The complete set of contributors may be found at | |
| * http://polymer.github.io/CONTRIBUTORS.txt | |
| * Code distributed by Google as part of the polymer project is also | |
| * subject to an additional IP rights grant found at | |
| * http://polymer.github.io/PATENTS.txt | |
| */ | |
| import { AttributeCommitter, BooleanAttributePart, EventPart, NodePart, PropertyCommitter } from './parts.js'; | |
| /** | |
| * Creates Parts when a template is instantiated. | |
| */ | |
| export class DefaultTemplateProcessor { | |
| /** | |
| * Create parts for an attribute-position binding, given the event, attribute | |
| * name, and string literals. | |
| * | |
| * @param element The element containing the binding | |
| * @param name The attribute name | |
| * @param strings The string literals. There are always at least two strings, | |
| * event for fully-controlled bindings with a single expression. | |
| */ | |
| handleAttributeExpressions(element, name, strings, options) { | |
| const prefix = name[0]; | |
| if (prefix === '.') { | |
| const committer = new PropertyCommitter(element, name.slice(1), strings); | |
| return committer.parts; | |
| } | |
| if (prefix === '@') { | |
| return [new EventPart(element, name.slice(1), options.eventContext)]; | |
| } | |
| if (prefix === '?') { | |
| return [new BooleanAttributePart(element, name.slice(1), strings)]; | |
| } | |
| const committer = new AttributeCommitter(element, name, strings); | |
| return committer.parts; | |
| } | |
| /** | |
| * Create parts for a text-position binding. | |
| * @param templateFactory | |
| */ | |
| handleTextExpression(options) { | |
| return new NodePart(options); | |
| } | |
| } | |
| export const defaultTemplateProcessor = new DefaultTemplateProcessor(); | |
| //# sourceMappingURL=default-template-processor.js.map |