UNPKG

jsx-view

Version:

Minimal JSX for HTML DOM tightly integrated with RxJS. TypeScript definitions, and attributes can be assigned to observables.

347 lines 13.2 kB
import type { Observable } from "rxjs"; import "./declare-values"; declare global { namespace JSX { /** * Default children type for intrinsic elements. * Ensure your elements can accept all children by declaring their `children` property as such: * @example * function MyComponent(props: { children: JSX.Children }) { * return <div class="my-component">{props.children}</div> * } */ type Children = JSX.Child | JSX.Children[]; type ComponentFunction<P extends Record<string, any>> = (props: P) => JSX.Child; /** Get the Props from the component function */ type Props<T extends ComponentFunction<any>> = Parameters<T>[0]; type StyleValueObject = { [P in keyof CSSStyleDeclaration]?: CSSStyleDeclaration[P] | Observable<CSSStyleDeclaration[P]> | undefined; }; type AnyHtmlPropValue = AnyValue | StyleValueObject; interface HtmlProps<T extends HTMLElement = HTMLElement> { accesskey?: StringValue; class?: StringValue; /** "inherit" (default) | "true" | "false" */ contenteditable?: Value<"inherit" | "true" | "false">; dir?: StringValue; hidden?: BooleanValue; id?: StringValue; role?: StringValue; lang?: StringValue; draggable?: BooleanValue; spellcheck?: BooleanValue; style?: StringValue | StyleValueObject; tabindex?: StringValue; title?: StringValue; translate?: Value<"yes" | "no">; } interface HtmlAnchorProps extends HtmlProps<HTMLAnchorElement> { href?: StringValue; target?: StringValue; download?: StringValue; ping?: StringValue; rel?: StringValue; media?: StringValue; hreflang?: StringValue; type?: StringValue; } interface HtmlAreaProps extends HtmlProps<HTMLAreaElement> { alt?: StringValue; coords?: StringValue; shape?: StringValue; href?: StringValue; target?: StringValue; ping?: StringValue; rel?: StringValue; media?: StringValue; hreflang?: StringValue; type?: StringValue; } interface HtmlAudioProps extends HtmlProps<HTMLAudioElement> { src?: StringValue; autobuffer?: StringValue; autoplay?: BooleanValue; loop?: BooleanValue; controls?: BooleanValue; } interface HtmlBaseProps extends HtmlProps { href?: StringValue; target?: StringValue; } interface HtmlQuoteProps extends HtmlProps<HTMLQuoteElement> { cite?: StringValue; } interface HtmlBodyProps extends HtmlProps<HTMLBodyElement> { } interface HtmlButtonProps extends HtmlProps<HTMLButtonElement> { action?: StringValue; autofocus?: BooleanValue; disabled?: BooleanValue; enctype?: StringValue; form?: StringValue; method?: StringValue; name?: StringValue; novalidate?: BooleanValue; target?: StringValue; type?: StringValue; value?: StringValue; } interface HtmlDataListProps extends HtmlProps<HTMLDataListElement> { } interface HtmlCanvasProps extends HtmlProps<HTMLCanvasElement> { width?: NumberValue; height?: NumberValue; } interface HtmlTableColProps extends HtmlProps<HTMLTableColElement> { span?: StringValue; } interface HtmlTableSectionProps extends HtmlProps<HTMLTableSectionElement> { } interface HtmlTableRowProps extends HtmlProps<HTMLTableRowElement> { } interface HtmlDataProps extends HtmlProps { value?: StringValue; } interface HtmlEmbedProps extends HtmlProps<HTMLEmbedElement> { src?: StringValue; type?: StringValue; width?: NumberValue; height?: NumberValue; [anything: string]: AnyHtmlPropValue; } interface HtmlFieldSetProps extends HtmlProps<HTMLFieldSetElement> { disabled?: BooleanValue; form?: StringValue; name?: StringValue; } interface HtmlFormProps extends HtmlProps<HTMLFormElement> { acceptCharset?: StringValue; action?: StringValue; autocomplete?: StringValue; enctype?: StringValue; method?: StringValue; name?: StringValue; novalidate?: BooleanValue; target?: StringValue; } interface HtmlHtmlProps extends HtmlProps<HTMLHtmlElement> { manifest?: StringValue; } interface HtmlIFrameProps extends HtmlProps<HTMLIFrameElement> { src?: StringValue; srcdoc?: StringValue; name?: StringValue; sandbox?: StringValue; seamless?: StringValue; width?: NumberValue; height?: NumberValue; } interface HtmlImageProps extends HtmlProps<HTMLImageElement> { alt?: StringValue; src?: StringValue; crossorigin?: StringValue; usemap?: StringValue; ismap?: StringValue; width?: NumberValue; height?: NumberValue; } interface HtmlInputProps extends HtmlProps<HTMLInputElement> { accept?: StringValue; action?: StringValue; alt?: StringValue; autocomplete?: StringValue; autofocus?: BooleanValue; checked?: BooleanValue; disabled?: BooleanValue; enctype?: StringValue; form?: StringValue; height?: NumberValue; list?: StringValue; max?: NumberValue; maxlength?: NumberValue; method?: StringValue; min?: NumberValue; multiple?: BooleanValue; name?: StringValue; novalidate?: BooleanValue; pattern?: StringValue; placeholder?: StringValue; readonly?: BooleanValue; required?: BooleanValue; size?: NumberValue; src?: StringValue; step?: NumberValue; target?: StringValue; type?: StringValue; value?: StringValue | NumberValue; width?: NumberValue; } interface HtmlModProps extends HtmlProps<HTMLModElement> { cite?: StringValue; datetime?: StringValue | DateValue; } interface HtmlLabelProps extends HtmlProps<HTMLLabelElement> { form?: StringValue; for?: StringValue; } interface HtmlLIProps extends HtmlProps<HTMLLIElement> { value?: StringValue | NumberValue; } interface HtmlLinkProps extends HtmlProps<HTMLLinkElement> { href?: StringValue; crossorigin?: StringValue; rel?: StringValue; media?: StringValue; hreflang?: StringValue; type?: StringValue; sizes?: StringValue; integrity?: StringValue; } interface HtmlMapProps extends HtmlProps<HTMLMapElement> { name?: StringValue; } interface HtmlMetaProps extends HtmlProps<HTMLMetaElement> { name?: StringValue; httpEquiv?: StringValue; content?: StringValue; charset?: StringValue; } interface HtmlMeterProps extends HtmlProps<HTMLMeterElement> { value?: StringValue | NumberValue; min?: StringValue | NumberValue; max?: StringValue | NumberValue; low?: StringValue | NumberValue; high?: StringValue | NumberValue; optimum?: StringValue | NumberValue; } interface HtmlObjectProps extends HtmlProps<HTMLObjectElement> { data?: StringValue; type?: StringValue; name?: StringValue; usemap?: StringValue; form?: StringValue; width?: NumberValue; height?: NumberValue; } interface HtmlOListProps extends HtmlProps<HTMLOListElement> { reversed?: BooleanValue; start?: StringValue | NumberValue; } interface HtmlOptGroupProps extends HtmlProps<HTMLOptGroupElement> { disabled?: BooleanValue; label?: StringValue; } interface HtmlOptionProps extends HtmlProps<HTMLOptionElement> { disabled?: BooleanValue; label?: StringValue; selected?: BooleanValue; value?: StringValue; } interface HtmlOutputProps extends HtmlProps<HTMLOutputElement> { for?: StringValue; form?: StringValue; name?: StringValue; } interface HtmlParamProps extends HtmlProps<HTMLParamElement> { name?: StringValue; value?: StringValue; } interface HtmlProgressProps extends HtmlProps<HTMLProgressElement> { value?: StringValue | NumberValue; max?: StringValue | NumberValue; } interface HtmlLegendProps extends HtmlProps<HTMLLegendElement> { } interface HtmlMenuProps extends HtmlProps<HTMLMenuElement> { type?: StringValue; label?: StringValue; } interface HtmlScriptProps extends HtmlProps<HTMLScriptElement> { src?: StringValue; type?: StringValue; charset?: StringValue; async?: BooleanValue; defer?: BooleanValue; crossorigin?: StringValue; integrity?: StringValue; text?: StringValue; } interface HtmlDetailsProps extends HtmlProps<HTMLDetailsElement> { open?: BooleanValue; } interface HtmlSelectProps extends HtmlProps<HTMLSelectElement> { autofocus?: BooleanValue; disabled?: BooleanValue; form?: StringValue; multiple?: BooleanValue; name?: StringValue; required?: BooleanValue; size?: NumberValue; } interface HtmlSourceProps extends HtmlProps<HTMLSourceElement> { src?: StringValue; type?: StringValue; media?: StringValue; } interface HtmlStyleProps extends HtmlProps<HTMLStyleElement> { media?: StringValue; type?: StringValue; disabled?: BooleanValue; /** @deprecated https://www.w3schools.com/tags/att_scoped.asp */ scoped?: BooleanValue; } interface HtmlTableProps extends HtmlProps<HTMLTableElement> { } interface HtmlTableDataCellProps extends HtmlProps<HTMLTableDataCellElement> { colspan?: StringValue | NumberValue; rowspan?: StringValue | NumberValue; headers?: StringValue; } interface HtmlTextAreaProps extends HtmlProps<HTMLTextAreaElement> { autofocus?: BooleanValue; cols?: NumberValue; dirname?: StringValue; disabled?: BooleanValue; form?: StringValue; maxlength?: NumberValue; minlength?: NumberValue; name?: StringValue; placeholder?: StringValue; readonly?: BooleanValue; required?: BooleanValue; rows?: NumberValue; wrap?: BooleanValue; } interface HtmlTableHeaderCellProps extends HtmlProps<HTMLTableHeaderCellElement> { colspan?: StringValue | NumberValue; rowspan?: StringValue | NumberValue; headers?: StringValue; scope?: StringValue; } interface HtmlTimeProps extends HtmlProps<HTMLTimeElement> { datetime?: StringValue | DateValue; } interface HtmlTrackProps extends HtmlProps<HTMLTrackElement> { default?: BooleanValue; kind?: StringValue; label?: StringValue; src?: StringValue; srclang?: StringValue; } interface HtmlVideoProps extends HtmlProps<HTMLVideoElement> { src?: StringValue; poster?: StringValue; autobuffer?: StringValue; autoplay?: BooleanValue; loop?: BooleanValue; controls?: BooleanValue; width?: NumberValue; height?: NumberValue; } /** AnyProps is a general props definition for intrinsic elements (<a>, <div>, <iframe>, etc.) */ interface AnyProps extends ElementProps { [attrName: string]: AnyValue; } } } //# sourceMappingURL=declare-props.d.ts.map