timepiece/node_modules/lit-html/node/development/directives/template-content.js

35 lines
1.0 KiB
JavaScript

import { noChange } from '../lit-html.js';
import { directive, Directive, PartType } from '../directive.js';
/**
* @license
* Copyright 2020 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
class TemplateContentDirective extends Directive {
constructor(partInfo) {
super(partInfo);
if (partInfo.type !== PartType.CHILD) {
throw new Error('templateContent can only be used in child bindings');
}
}
render(template) {
if (this._previousTemplate === template) {
return noChange;
}
this._previousTemplate = template;
return document.importNode(template.content, true);
}
}
/**
* Renders the content of a template element as HTML.
*
* Note, the template should be developer controlled and not user controlled.
* Rendering a user-controlled template with this directive
* could lead to cross-site-scripting vulnerabilities.
*/
const templateContent = directive(TemplateContentDirective);
export { templateContent };
//# sourceMappingURL=template-content.js.map