/** * @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 */ /** * @module lit-html */ import {reparentNodes} from './dom.js'; import {TemplateProcessor} from './template-processor.js'; import {boundAttributeSuffix, lastAttributeNameRegex, marker, nodeMarker} from './template.js'; let policy: Pick|undefined; /** * Turns the value to trusted HTML. If the application uses Trusted Types the * value is transformed into TrustedHTML, which can be assigned to execution * sink. If the application doesn't use Trusted Types, the return value is the * same as the argument. */ function convertConstantTemplateStringToTrustedHTML(value: string): string| TrustedHTML { // tslint:disable-next-line const w = window as any // TrustedTypes have been renamed to trustedTypes // (https://github.com/WICG/trusted-types/issues/177) const trustedTypes = (w.trustedTypes || w.TrustedTypes) as TrustedTypePolicyFactory; if (trustedTypes && !policy) { policy = trustedTypes.createPolicy('lit-html', {createHTML: (s) => s}); } return policy ? policy.createHTML(value) : value; } const commentMarker = ` ${marker} `; /** * The return type of `html`, which holds a Template and the values from * interpolated expressions. */ export class TemplateResult { readonly strings: TemplateStringsArray; readonly values: ReadonlyArray; readonly type: string; readonly processor: TemplateProcessor; constructor( strings: TemplateStringsArray, values: ReadonlyArray, type: string, processor: TemplateProcessor) { this.strings = strings; this.values = values; this.type = type; this.processor = processor; } /** * Returns a string of HTML used to create a `