import * as plugins from './smartntml.plugins.js'; import type * as litTypes from 'lit'; export type { TemplateResult } from 'lit'; export class Smartntml { // STATIC public static async createAndInit() { const smartntml = new Smartntml(); await smartntml.init(); return smartntml; } private static smartntmlSingletonDeferred: plugins.smartpromise.Deferred; public static async createAndInitSingleton() { if (this.smartntmlSingletonDeferred) { return this.smartntmlSingletonDeferred.promise; } const smartntmlInstance = await this.createAndInit(); this.smartntmlSingletonDeferred.resolve(smartntmlInstance); return this.smartntmlSingletonDeferred.promise; } // INSTANCE private render: typeof litTypes.render; html: typeof litTypes.html; constructor() { this.init(); } public async init() { const lit = await import('lit'); this.render = lit.render; this.html = lit.html; } public async renderTemplateResult(templateResult: litTypes.TemplateResult) { const element = document.createElement('div'); this.render(templateResult, element); return element.innerHTML; } }