import { ShadowlessElement } from '@blockeditor/lit'; import type { TemplateResult } from 'lit'; import { customElement, property } from 'lit/decorators.js'; @customElement('any-render') export class AnyRender extends ShadowlessElement { @property({ attribute: false }) props!: T; @property({ attribute: false }) renderTemplate!: (props: T) => TemplateResult | symbol; override render() { return this.renderTemplate(this.props); } } export const renderTemplate = ( renderTemplate: (props: T) => TemplateResult | symbol ) => { const ins = new AnyRender(); ins.renderTemplate = renderTemplate; return ins; };