UNPKG

@knyt/luthier

Version:

A library for building standardized, type-safe native web components with full SSR and hydration support.

33 lines (32 loc) 904 B
import { createDOMBuilder, createHTMLBuilder, } from "@knyt/weaver"; /** * * @param tagName * @param importer * @returns */ export function lazy(tagName, importer) { const domBuilder = createDOMBuilder(tagName); const htmlBuilder = createHTMLBuilder(tagName); let importerCalled = false; function importElement() { if (!importerCalled) { importerCalled = true; importer(); } } const lazyElementDefinition = () => { importElement(); return domBuilder; }; lazyElementDefinition.html = () => { importElement(); return htmlBuilder; }; lazyElementDefinition.tagName = tagName; lazyElementDefinition.Element = () => { return importer().then((module) => module.default.Element); }; lazyElementDefinition.__isKnytElementDefinition = true; return lazyElementDefinition; }