UNPKG

edgerender

Version:
494 lines (457 loc) 11.9 kB
import type {Properties as CssProperties} from 'csstype' export {EdgeRender, EdgeRenderConfig, Views} from './handle' export {AssetConfig} from './assets' import {JsxChunk, classNameType} from './jsx' type AttributeReferrerPolicy = | '' | 'no-referrer' | 'no-referrer-when-downgrade' | 'origin' | 'origin-when-cross-origin' | 'same-origin' | 'strict-origin' | 'strict-origin-when-cross-origin' | 'unsafe-url' type InputType = | 'button' | 'checkbox' | 'color' | 'date' | 'datetime' | 'email' | 'file' | 'hidden' | 'image' | 'month' | 'number' | 'password' | 'radio' | 'range' | 'reset' | 'search' | 'submit' | 'tel' | 'text' | 'time' | 'url' | 'week' declare global { namespace JSX { type Props = Record<string, any> type Component = (props: Props) => Element type ChildTypes = Component | HtmlTag | string | number | boolean type Element = JsxChunk | Promise<JsxChunk> interface TagChildrenAttribute { children: unknown } interface BaseTag { // Standard HTML Attributes accessKey?: string className?: classNameType contentEditable?: boolean | 'inherit' contextMenu?: string dir?: string draggable?: boolean hidden?: boolean id?: string lang?: string placeholder?: string slot?: string spellCheck?: boolean style?: CssProperties tabIndex?: number title?: string translate?: 'yes' | 'no' // Unknown radioGroup?: string // <command>, <menuitem> // WAI-ARIA role?: string // RDFa Attributes about?: string datatype?: string inlist?: any prefix?: string property?: string resource?: string typeof?: string vocab?: string // Non-standard Attributes autoCapitalize?: string autoCorrect?: string autoSave?: string color?: string itemProp?: string itemScope?: boolean itemType?: string itemID?: string itemRef?: string results?: number security?: string unselectable?: 'on' | 'off' // Living Standard /** * Hints at the type of data that might be entered by the user while editing the Tag or its contents * @see https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute */ inputMode?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search' /** * Specify that a standard HTML Tag should behave like a defined custom built-in Tag * @see https://html.spec.whatwg.org/multipage/custom-Tags.html#attr-is */ is?: string data?: Record<string, any> // htmx attributes https://htmx.org/docs/#ajax hxGet?: string hxPost?: string hxPut?: string hxPatch?: string hxDelete?: string hxSwap?: 'innerHTML' | 'outerHTML' | 'afterbegin' | 'beforebegin' | 'beforeend' | 'afterend' hxSwapOob?: boolean hxTarget?: string hxTrigger?: string hxSelect?: string hxBoost?: boolean hxPushUrl?: 'true' hxPrompt?: string hxConfirm?: string hxIndicator?: string } interface GenericTag extends BaseTag { children?: ChildTypes | ChildTypes[] [key: string]: any } // html tag with no children e.g. used like <foo .../> not <foo...>...</foo> interface EmptyTag extends BaseTag { children?: never [key: string]: any } interface AnchorTag extends BaseTag { download?: any href?: string hrefLang?: string media?: string ping?: string rel?: string target?: string type?: string referrerPolicy?: AttributeReferrerPolicy children?: ChildTypes | ChildTypes[] } interface ButtonTag extends BaseTag { autoFocus?: boolean disabled?: boolean form?: string formAction?: string formEncType?: string formMethod?: string formNoValidate?: boolean formTarget?: string name?: string type?: 'submit' | 'reset' | 'button' value?: string | ReadonlyArray<string> | number children?: ChildTypes | ChildTypes[] } interface FormTag extends BaseTag { acceptCharset?: string action?: string autoComplete?: string encType?: string method?: string name?: string noValidate?: boolean target?: string children?: ChildTypes | ChildTypes[] } interface HtmlHtmlTag extends BaseTag { manifest?: string children?: ChildTypes | ChildTypes[] } interface IframeTag extends BaseTag { allow?: string allowFullScreen?: boolean allowTransparency?: boolean /** @deprecated */ frameBorder?: number | string height?: number | string loading?: 'eager' | 'lazy' /** @deprecated */ marginHeight?: number /** @deprecated */ marginWidth?: number name?: string referrerPolicy?: AttributeReferrerPolicy sandbox?: string /** @deprecated */ scrolling?: string seamless?: boolean src?: string srcDoc?: string width?: number | string children?: ChildTypes | ChildTypes[] } interface ImageTag extends BaseTag { alt?: string crossOrigin?: 'anonymous' | 'use-credentials' | '' decoding?: 'async' | 'auto' | 'sync' height?: number | string loading?: 'eager' | 'lazy' referrerPolicy?: AttributeReferrerPolicy sizes?: string src?: string srcSet?: string useMap?: string width?: number | string } interface InputTag extends BaseTag { accept?: string alt?: string autoComplete?: string autoFocus?: boolean capture?: boolean | string // https://www.w3.org/TR/html-media-capture/#the-capture-attribute checked?: boolean dirname?: string disabled?: boolean enterKeyHint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send' form?: string formAction?: string formEncType?: string formMethod?: string formNoValidate?: boolean formTarget?: string height?: number | string list?: string max?: number | string maxLength?: number min?: number | string minLength?: number multiple?: boolean name?: string pattern?: string placeholder?: string readOnly?: boolean required?: boolean size?: number src?: string step?: number | string type?: InputType value?: string | ReadonlyArray<string> | number | null width?: number | string } interface LabelTag extends BaseTag { form?: string htmlFor?: string children?: ChildTypes | ChildTypes[] } interface LinkTag extends BaseTag { as?: string crossOrigin?: string href?: string hrefLang?: string integrity?: string media?: string referrerPolicy?: AttributeReferrerPolicy rel?: string sizes?: string type?: string charSet?: string } interface MetaTag extends BaseTag { charSet?: string content?: string httpEquiv?: string name?: string } type HtmlTag = | GenericTag | EmptyTag | AnchorTag | ButtonTag | FormTag | HtmlHtmlTag | IframeTag | ImageTag | InputTag | LabelTag | LinkTag | MetaTag interface IntrinsicElements { a: AnchorTag abbr: GenericTag address: GenericTag area: EmptyTag article: GenericTag aside: GenericTag audio: GenericTag b: GenericTag base: EmptyTag bdi: GenericTag bdo: GenericTag big: GenericTag blockquote: GenericTag body: GenericTag br: EmptyTag button: ButtonTag canvas: GenericTag caption: GenericTag cite: GenericTag code: GenericTag col: EmptyTag colgroup: GenericTag data: GenericTag datalist: GenericTag dd: GenericTag del: GenericTag details: GenericTag dfn: GenericTag dialog: GenericTag div: GenericTag dl: GenericTag dt: GenericTag em: GenericTag embed: EmptyTag fieldset: GenericTag figcaption: GenericTag figure: GenericTag footer: GenericTag form: FormTag h1: GenericTag h2: GenericTag h3: GenericTag h4: GenericTag h5: GenericTag h6: GenericTag head: GenericTag header: GenericTag hgroup: GenericTag hr: EmptyTag html: HtmlHtmlTag i: GenericTag iframe: IframeTag img: ImageTag input: InputTag ins: GenericTag kbd: GenericTag keygen: GenericTag label: LabelTag legend: GenericTag li: GenericTag link: LinkTag main: GenericTag map: GenericTag mark: GenericTag menu: GenericTag menuitem: GenericTag meta: MetaTag meter: GenericTag nav: GenericTag noindex: GenericTag noscript: GenericTag object: GenericTag ol: GenericTag optgroup: GenericTag option: GenericTag output: GenericTag p: GenericTag param: EmptyTag picture: GenericTag pre: GenericTag progress: GenericTag q: GenericTag rp: GenericTag rt: GenericTag ruby: GenericTag s: GenericTag samp: GenericTag slot: GenericTag script: GenericTag section: GenericTag select: GenericTag small: GenericTag source: EmptyTag span: GenericTag strong: GenericTag style: GenericTag sub: GenericTag summary: GenericTag sup: GenericTag table: GenericTag template: GenericTag tbody: GenericTag td: GenericTag textarea: GenericTag tfoot: GenericTag th: GenericTag thead: GenericTag time: GenericTag title: GenericTag tr: GenericTag track: EmptyTag u: GenericTag ul: GenericTag var: GenericTag video: GenericTag wbr: EmptyTag webview: GenericTag // SVG svg: GenericTag animate: GenericTag animateMotion: GenericTag animateTransform: GenericTag circle: GenericTag clipPath: GenericTag defs: GenericTag desc: GenericTag ellipse: GenericTag feBlend: GenericTag feColorMatrix: GenericTag feComponentTransfer: GenericTag feComposite: GenericTag feConvolveMatrix: GenericTag feDiffuseLighting: GenericTag feDisplacementMap: GenericTag feDistantLight: GenericTag feDropShadow: GenericTag feFlood: GenericTag feFuncA: GenericTag feFuncB: GenericTag feFuncG: GenericTag feFuncR: GenericTag feGaussianBlur: GenericTag feImage: GenericTag feMerge: GenericTag feMergeNode: GenericTag feMorphology: GenericTag feOffset: GenericTag fePointLight: GenericTag feSpecularLighting: GenericTag feSpotLight: GenericTag feTile: GenericTag feTurbulence: GenericTag filter: GenericTag foreignObject: GenericTag g: GenericTag image: GenericTag line: GenericTag linearGradient: GenericTag marker: GenericTag mask: GenericTag metadata: GenericTag mpath: GenericTag path: GenericTag pattern: GenericTag polygon: GenericTag polyline: GenericTag radialGradient: GenericTag rect: GenericTag stop: GenericTag switch: GenericTag symbol: GenericTag text: GenericTag textPath: GenericTag tspan: GenericTag use: GenericTag view: GenericTag } } }