UNPKG

element-vir

Version:

Heroic. Reactive. Declarative. Type safe. Web components without compromise.

46 lines (45 loc) 1.32 kB
import { assertWrap } from '@augment-vir/assert'; import { directive, Directive, noChange } from '../../lit-exports/all-lit-exports.js'; import { extractElement } from './directive-helpers.js'; /** * A directive that allows arbitrary modifications to be made to the element that it's attached to. * * @category Directives */ export const mutate = directive(class extends Directive { element; lastKey; constructor(partInfo) { super(partInfo); this.element = assertWrap.instanceOf(extractElement(partInfo, 'modifyElement'), HTMLElement); } render(callback) { callback({ directive: this, element: this.element, }); return noChange; } }); /** * A helper for making new directives. * * @category Internal */ export function createMutateDirective(directiveName, callback) { return directive(class extends Directive { element; constructor(partInfo) { super(partInfo); this.element = assertWrap.instanceOf(extractElement(partInfo, directiveName), HTMLElement); } render(...params) { callback({ params: params, directive: this, element: this.element, }); return noChange; } }); }