import { TemplateResult } from "lit"; import { DirectiveResult } from "lit/async-directive.js"; import { Context } from "../context.js"; import { UseShadowComponent, UseShadowView, UseLightComponent, UseLightView } from "./use/tailored.js"; export type RenderResult = TemplateResult | DirectiveResult | string | null | undefined | void; export type Content = TemplateResult | DirectiveResult | HTMLElement | string | null | undefined | void; export type LightViewRenderer = ((use: UseLightView) => (...props: P) => RenderResult); export type ShadowViewRenderer = ((use: UseShadowView) => (...props: P) => RenderResult); export type LightComponentRenderer = ((use: UseLightComponent) => RenderResult); export type ShadowComponentRenderer = ((use: UseShadowComponent) => RenderResult); export type LightView

= ((...props: P) => DirectiveResult); export type ShadowView

= ((props: P, meta?: ShadowViewMeta) => DirectiveResult); export type ShadowAttrs = Partial<{ class: string; part: string; gpart: string; exportparts: string; }> & { [key: string]: string; }; export type ShadowViewMeta = Partial<{ content: TemplateResult; auto_exportparts: boolean; attrs: ShadowAttrs; }>; export type ShadowViewInput

= { meta: ShadowViewMeta; props: P; };