UNPKG

@tempots/dom

Version:

Fully-typed frontend framework alternative to React and Angular

104 lines (103 loc) 4.79 kB
import { Prop } from '../std/signal'; import { ProviderMark, Clear, Providers } from '../types/domain'; import { BrowserContext } from './browser-context'; import { DOMContext, HandlerOptions } from './dom-context'; declare abstract class HeadlessBase { readonly parent: HeadlessBase | undefined; readonly id: string; private readonly properties; readonly children: HeadlessNode[]; constructor(parent: HeadlessBase | undefined); readonly isElement: () => this is HeadlessBase; readonly isText: () => this is HeadlessText; readonly getText: () => string; readonly removeChild: (child: HeadlessNode) => void; readonly remove: () => void; abstract isPortal(): this is HeadlessPortal; readonly getPortals: () => HeadlessPortal[]; readonly elements: () => HeadlessBase[]; abstract toHTML(): string; readonly hasInnerHTML: () => boolean; readonly getInnerHTML: () => string; readonly getInnerText: () => string; readonly hasInnerText: () => boolean; readonly hasChildren: () => boolean; readonly hasClasses: () => boolean; readonly hasStyles: () => boolean; readonly hasAttributes: () => boolean; readonly hasHandlers: () => boolean; readonly hasRenderableProperties: () => boolean; readonly getById: (id: string) => HeadlessBase | undefined; readonly trigger: <E>(event: string, detail: E) => void; readonly click: () => void; readonly on: <E>(event: string, listener: (event: E) => void, options?: HandlerOptions) => Clear; readonly addClasses: (tokens: string[]) => void; readonly removeClasses: (tokens: string[]) => void; readonly getClasses: () => string[]; readonly getAttributes: () => [string, unknown][]; readonly getVisibleAttributes: () => (["class", string[]] | ["style", string | Record<string, string>] | [string, string])[]; readonly setStyle: (name: string, value: string) => void; readonly getStyle: (name: string) => string; readonly getStyles: () => Record<string, string>; readonly makeAccessors: (name: string) => { get(): unknown; set(value: unknown): void; }; } export declare class HeadlessElement extends HeadlessBase { readonly tagName: string; readonly namespace: string | undefined; constructor(tagName: string, namespace: string | undefined, parent: HeadlessBase | undefined); readonly isPortal: () => this is HeadlessPortal; readonly toHTML: (generatePlaceholders?: boolean) => string; } export declare class HeadlessPortal extends HeadlessBase { readonly selector: string; constructor(selector: string, parent: HeadlessBase | undefined); readonly isPortal: () => this is HeadlessPortal; readonly toHTML: () => string; readonly contentToHTML: (generatePlaceholders?: boolean) => string; } export declare class HeadlessText { text: string; readonly id: string; constructor(text: string); readonly isElement: () => this is HeadlessElement; readonly isText: () => this is HeadlessText; readonly getText: () => string; readonly toHTML: () => string; } export type HeadlessNode = HeadlessElement | HeadlessPortal | HeadlessText; export interface HeadlessContainer { currentURL: Prop<string>; } export declare class HeadlessContext implements DOMContext { readonly element: HeadlessBase; readonly reference: HeadlessNode | undefined; readonly container: HeadlessContainer; readonly providers: Providers; constructor(element: HeadlessBase, reference: HeadlessNode | undefined, container: HeadlessContainer, providers: Providers); readonly appendOrInsert: (element: HeadlessNode) => void; readonly makeChildElement: (tagName: string, namespace: string | undefined) => DOMContext; readonly makeChildText: (text: string) => DOMContext; readonly setText: (text: string) => void; readonly getText: () => string; readonly makeRef: () => DOMContext; readonly makePortal: (selector: string) => DOMContext; readonly withProviders: (providers: { [K in ProviderMark<unknown>]: unknown; }) => DOMContext; readonly getProvider: <T>(mark: ProviderMark<T>) => T; readonly clear: (removeTree: boolean) => void; readonly on: <E>(event: string, listener: (event: E) => void) => Clear; readonly addClasses: (tokens: string[]) => void; readonly removeClasses: (tokens: string[]) => void; readonly getClasses: () => string[]; readonly isBrowserDOM: () => this is BrowserContext; readonly isHeadlessDOM: () => this is HeadlessContext; readonly setStyle: (name: string, value: string) => void; readonly getStyle: (name: string) => string; readonly makeAccessors: (name: string) => { get(): unknown; set(value: unknown): void; }; } export {};