UNPKG

rvx

Version:

A signal based rendering library

48 lines 1.42 kB
import { Context } from "./context.js"; import { NODE, XMLNS } from "./element-common.js"; import { ENV } from "./env.js"; import { appendContent } from "./internals/append-content.js"; import { setAttr } from "./internals/set-attr.js"; import { setClass } from "./internals/set-class.js"; import { setStyle } from "./internals/set-style.js"; import { isolate } from "./isolate.js"; import { watch } from "./signals.js"; export class ElementBuilder { #env = ENV.current; elem; get [NODE]() { return this.elem; } constructor(elem) { this.elem = elem; } on(type, listener, options) { const wrapped = Context.wrap(listener); this.elem.addEventListener(type, event => isolate(wrapped, event), options); return this; } style(value) { setStyle(this.elem, value); return this; } class(value) { setClass(this.elem, value); return this; } set(name, value) { setAttr(this.elem, name, value); return this; } prop(name, value) { watch(value, value => this.elem[name] = value); return this; } append(...content) { appendContent(this.elem, content, this.#env); return this; } } export function e(tagName) { return new ElementBuilder(ENV.current.document.createElementNS(XMLNS.current, tagName)); } //# sourceMappingURL=element-builder.js.map