/* eslint-disable @typescript-eslint/no-explicit-any */ import type { KEY_DATA, KEY_INDEX } from '../components/for/common'; import type { ComponentHost, Ref, RefFn } from '../core'; import type { AnyFn } from '../util'; export type FC = (props: any, host: ComponentHost) => JNode | (ComponentHost | Node)[]; export type JNode = | JSX.Element | FC | Iterable | string | number | boolean | null | undefined; /** * 辅助类型工具,将 `{ [k]: JNode }` 类型的定义,转成: * ``` * { [K]: string, 'slot:[K]'?: never } | { [K]?: never, 'slot:[K]': JNode } * ``` * 也就是,string 类型和插槽类型的属性值必须至少指定一个,且只能指定一个。 * * TODO: 是否可以有 WithPropSlots 类型,可以批量转,比如 * ```ts * WithPropSlots<{ a: JNode, b: (data) => JNode }> * ``` * 等价于: * ```ts * WithPropSlot<'a', JNode> & WithPropSlot<'b', (data) => JNode> * ``` * 简单探索过好像很难,后续进一步研究。 */ export type WithPropSlot = | (Record & Partial>) | (Partial> & Record<`slot:${T}`, P>); export type WithEvents = { [P in keyof T as `on:${string & P}`]: T[P]; }; type X = { [P in keyof T as `slot:${string & P}`]: T[P]; }; export type WithSlots = X> & (T extends { default: infer P; } ? { children: P; 'slot:default'?: P; } : {}) & (T extends { default?: infer P; } ? { children?: P; 'slot:default'?: P; } : {}); /** * 辅助生成 children 属性的类型。等价于使用 WithSlots 搭配 'slot:default'。 */ export interface WithChildren { children: T; 'slot:default'?: T; } /** * 辅助生成 optional children 属性的类型。等价于使用 WithSlots 搭配 'slot:default'。 */ export interface WithOptChildren { children?: T; 'slot:default'?: T; } export interface WithExpose> { ref?: Ref; } export type JEvent = Omit & { target: T }; export type JClipboardEvent = JEvent; export type JCompositionEvent = JEvent; export type JDragEvent = JEvent; export type JFocusEvent = JEvent; export type JPointerEvent = JEvent; export type JTouchEvent = JEvent; export type JFormEvent = JEvent; export type JChangeEvent = JEvent; export type JWheelEvent = JEvent; export type JAnimationEvent = JEvent; export type JTransitionEvent = JEvent; export type JKeyboardEvent = JEvent; export type JMouseEvent = JEvent; export type JUIEvent = JEvent; type EvH = (event: E) => void; export type ClipboardEventHandler = EvH>; export type CompositionEventHandler = EvH>; export type FocusEventHandler = EvH>; export type FormEventHandler = EvH>; export type ChangeEventHandler = EvH>; export type KeyboardEventHandler = EvH>; export type MouseEventHandler = EvH>; export type TouchEventHandler = EvH>; export type PointerEventHandler = EvH>; export type UIEventHandler = EvH>; export type WheelEventHandler = EvH>; export type AnimationEventHandler = EvH>; export type TransitionEventHandler = EvH>; export type EventHandler = EvH>; export type DragEventHandler = EvH>; interface DOMAttributes { children?: JNode | undefined; // Clipboard Events 'on:copy'?: ClipboardEventHandler | undefined; 'on:copyCapture'?: ClipboardEventHandler | undefined; 'on:cut'?: ClipboardEventHandler | undefined; 'on:cutCapture'?: ClipboardEventHandler | undefined; 'on:paste'?: ClipboardEventHandler | undefined; 'on:pasteCapture'?: ClipboardEventHandler | undefined; // Composition Events 'on:compositionEnd'?: CompositionEventHandler | undefined; 'on:compositionEndCapture'?: CompositionEventHandler | undefined; 'on:compositionStart'?: CompositionEventHandler | undefined; 'on:compositionStartCapture'?: CompositionEventHandler | undefined; 'on:compositionUpdate'?: CompositionEventHandler | undefined; 'on:compositionUpdateCapture'?: CompositionEventHandler | undefined; // Focus Events 'on:focus'?: FocusEventHandler | undefined; 'on:focusCapture'?: FocusEventHandler | undefined; 'on:blur'?: FocusEventHandler | undefined; 'on:blurCapture'?: FocusEventHandler | undefined; // Form Events 'on:change'?: FormEventHandler | undefined; 'on:changeCapture'?: FormEventHandler | undefined; 'on:beforeInput'?: FormEventHandler | undefined; 'on:beforeInputCapture'?: FormEventHandler | undefined; 'on:input'?: FormEventHandler | undefined; 'on:inputCapture'?: FormEventHandler | undefined; 'on:reset'?: FormEventHandler | undefined; 'on:resetCapture'?: FormEventHandler | undefined; 'on:submit'?: FormEventHandler | undefined; 'on:submitCapture'?: FormEventHandler | undefined; 'on:invalid'?: FormEventHandler | undefined; 'on:invalidCapture'?: FormEventHandler | undefined; // Image Events 'on:load'?: EventHandler | undefined; 'on:loadCapture'?: EventHandler | undefined; 'on:error'?: EventHandler | undefined; // also a Media Event 'on:errorCapture'?: EventHandler | undefined; // also a Media Event // Keyboard Events 'on:keyDown'?: KeyboardEventHandler | undefined; 'on:keyDownCapture'?: KeyboardEventHandler | undefined; /** @deprecated */ 'on:keyPress'?: KeyboardEventHandler | undefined; /** @deprecated */ 'on:keyPressCapture'?: KeyboardEventHandler | undefined; 'on:keyUp'?: KeyboardEventHandler | undefined; 'on:keyUpCapture'?: KeyboardEventHandler | undefined; // Media Events 'on:abort'?: EventHandler | undefined; 'on:abortCapture'?: EventHandler | undefined; 'on:canPlay'?: EventHandler | undefined; 'on:canPlayCapture'?: EventHandler | undefined; 'on:canPlayThrough'?: EventHandler | undefined; 'on:canPlayThroughCapture'?: EventHandler | undefined; 'on:durationChange'?: EventHandler | undefined; 'on:durationChangeCapture'?: EventHandler | undefined; 'on:emptied'?: EventHandler | undefined; 'on:emptiedCapture'?: EventHandler | undefined; 'on:encrypted'?: EventHandler | undefined; 'on:encryptedCapture'?: EventHandler | undefined; 'on:ended'?: EventHandler | undefined; 'on:endedCapture'?: EventHandler | undefined; 'on:loadedData'?: EventHandler | undefined; 'on:loadedDataCapture'?: EventHandler | undefined; 'on:loadedMetadata'?: EventHandler | undefined; 'on:loadedMetadataCapture'?: EventHandler | undefined; 'on:loadStart'?: EventHandler | undefined; 'on:loadStartCapture'?: EventHandler | undefined; 'on:pause'?: EventHandler | undefined; 'on:pauseCapture'?: EventHandler | undefined; 'on:play'?: EventHandler | undefined; 'on:playCapture'?: EventHandler | undefined; 'on:playing'?: EventHandler | undefined; 'on:playingCapture'?: EventHandler | undefined; 'on:progress'?: EventHandler | undefined; 'on:progressCapture'?: EventHandler | undefined; 'on:rateChange'?: EventHandler | undefined; 'on:rateChangeCapture'?: EventHandler | undefined; 'on:resize'?: EventHandler | undefined; 'on:resizeCapture'?: EventHandler | undefined; 'on:seeked'?: EventHandler | undefined; 'on:seekedCapture'?: EventHandler | undefined; 'on:seeking'?: EventHandler | undefined; 'on:seekingCapture'?: EventHandler | undefined; 'on:stalled'?: EventHandler | undefined; 'on:stalledCapture'?: EventHandler | undefined; 'on:suspend'?: EventHandler | undefined; 'on:suspendCapture'?: EventHandler | undefined; 'on:timeUpdate'?: EventHandler | undefined; 'on:timeUpdateCapture'?: EventHandler | undefined; 'on:volumeChange'?: EventHandler | undefined; 'on:volumeChangeCapture'?: EventHandler | undefined; 'on:waiting'?: EventHandler | undefined; 'on:waitingCapture'?: EventHandler | undefined; // MouseEvents 'on:auxClick'?: MouseEventHandler | undefined; 'on:auxClickCapture'?: MouseEventHandler | undefined; 'on:click'?: MouseEventHandler | undefined; 'on:clickCapture'?: MouseEventHandler | undefined; 'on:contextMenu'?: MouseEventHandler | undefined; 'on:contextMenuCapture'?: MouseEventHandler | undefined; 'on:doubleClick'?: MouseEventHandler | undefined; 'on:doubleClickCapture'?: MouseEventHandler | undefined; 'on:drag'?: DragEventHandler | undefined; 'on:dragCapture'?: DragEventHandler | undefined; 'on:dragEnd'?: DragEventHandler | undefined; 'on:dragEndCapture'?: DragEventHandler | undefined; 'on:dragEnter'?: DragEventHandler | undefined; 'on:dragEnterCapture'?: DragEventHandler | undefined; 'on:dragExit'?: DragEventHandler | undefined; 'on:dragExitCapture'?: DragEventHandler | undefined; 'on:dragLeave'?: DragEventHandler | undefined; 'on:dragLeaveCapture'?: DragEventHandler | undefined; 'on:dragOver'?: DragEventHandler | undefined; 'on:dragOverCapture'?: DragEventHandler | undefined; 'on:dragStart'?: DragEventHandler | undefined; 'on:dragStartCapture'?: DragEventHandler | undefined; 'on:drop'?: DragEventHandler | undefined; 'on:dropCapture'?: DragEventHandler | undefined; 'on:mouseDown'?: MouseEventHandler | undefined; 'on:mouseDownCapture'?: MouseEventHandler | undefined; 'on:mouseEnter'?: MouseEventHandler | undefined; 'on:mouseLeave'?: MouseEventHandler | undefined; 'on:mouseMove'?: MouseEventHandler | undefined; 'on:mouseMoveCapture'?: MouseEventHandler | undefined; 'on:mouseOut'?: MouseEventHandler | undefined; 'on:mouseOutCapture'?: MouseEventHandler | undefined; 'on:mouseOver'?: MouseEventHandler | undefined; 'on:mouseOverCapture'?: MouseEventHandler | undefined; 'on:mouseUp'?: MouseEventHandler | undefined; 'on:mouseUpCapture'?: MouseEventHandler | undefined; // Selection Events 'on:select'?: EventHandler | undefined; 'on:selectCapture'?: EventHandler | undefined; // Touch Events 'on:touchCancel'?: TouchEventHandler | undefined; 'on:touchCancelCapture'?: TouchEventHandler | undefined; 'on:touchEnd'?: TouchEventHandler | undefined; 'on:touchEndCapture'?: TouchEventHandler | undefined; 'on:touchMove'?: TouchEventHandler | undefined; 'on:touchMoveCapture'?: TouchEventHandler | undefined; 'on:touchStart'?: TouchEventHandler | undefined; 'on:touchStartCapture'?: TouchEventHandler | undefined; // Pointer Events 'on:pointerDown'?: PointerEventHandler | undefined; 'on:pointerDownCapture'?: PointerEventHandler | undefined; 'on:pointerMove'?: PointerEventHandler | undefined; 'on:pointerMoveCapture'?: PointerEventHandler | undefined; 'on:pointerUp'?: PointerEventHandler | undefined; 'on:pointerUpCapture'?: PointerEventHandler | undefined; 'on:pointerCancel'?: PointerEventHandler | undefined; 'on:pointerCancelCapture'?: PointerEventHandler | undefined; 'on:pointerEnter'?: PointerEventHandler | undefined; 'on:pointerLeave'?: PointerEventHandler | undefined; 'on:pointerOver'?: PointerEventHandler | undefined; 'on:pointerOverCapture'?: PointerEventHandler | undefined; 'on:pointerOut'?: PointerEventHandler | undefined; 'on:pointerOutCapture'?: PointerEventHandler | undefined; 'on:gotPointerCapture'?: PointerEventHandler | undefined; 'on:gotPointerCaptureCapture'?: PointerEventHandler | undefined; 'on:lostPointerCapture'?: PointerEventHandler | undefined; 'on:lostPointerCaptureCapture'?: PointerEventHandler | undefined; // UI Events 'on:scroll'?: UIEventHandler | undefined; 'on:scrollCapture'?: UIEventHandler | undefined; // Wheel Events 'on:wheel'?: WheelEventHandler | undefined; 'on:wheelCapture'?: WheelEventHandler | undefined; // Animation Events 'on:animationStart'?: AnimationEventHandler | undefined; 'on:animationStartCapture'?: AnimationEventHandler | undefined; 'on:animationEnd'?: AnimationEventHandler | undefined; 'on:animationEndCapture'?: AnimationEventHandler | undefined; 'on:animationIteration'?: AnimationEventHandler | undefined; 'on:animationIterationCapture'?: AnimationEventHandler | undefined; // Transition Events 'on:transitionEnd'?: TransitionEventHandler | undefined; 'on:transitionEndCapture'?: TransitionEventHandler | undefined; } type Booleanish = boolean | 'true' | 'false'; // All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/ interface AriaAttributes { /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */ 'aria-activedescendant'?: string | undefined; /** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */ 'aria-atomic'?: Booleanish | undefined; /** * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be * presented if they are made. */ 'aria-autocomplete'?: 'none' | 'inline' | 'list' | 'both' | undefined; /** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */ /** * Defines a string value that labels the current element, which is intended to be converted into Braille. * @see aria-label. */ 'aria-braillelabel'?: string | undefined; /** * Defines a human-readable, author-localized abbreviated description for the role of an element, which is intended to be converted into Braille. * @see aria-roledescription. */ 'aria-brailleroledescription'?: string | undefined; 'aria-busy'?: Booleanish | undefined; /** * Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. * @see aria-pressed @see aria-selected. */ 'aria-checked'?: boolean | 'false' | 'mixed' | 'true' | undefined; /** * Defines the total number of columns in a table, grid, or treegrid. * @see aria-colindex. */ 'aria-colcount'?: number | undefined; /** * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. * @see aria-colcount @see aria-colspan. */ 'aria-colindex'?: number | undefined; /** * Defines a human readable text alternative of aria-colindex. * @see aria-rowindextext. */ 'aria-colindextext'?: string | undefined; /** * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. * @see aria-colindex @see aria-rowspan. */ 'aria-colspan'?: number | undefined; /** * Identifies the element (or elements) whose contents or presence are controlled by the current element. * @see aria-owns. */ 'aria-controls'?: string | undefined; /** Indicates the element that represents the current item within a container or set of related elements. */ 'aria-current'?: | boolean | 'false' | 'true' | 'page' | 'step' | 'location' | 'date' | 'time' | undefined; /** * Identifies the element (or elements) that describes the object. * @see aria-labelledby */ 'aria-describedby'?: string | undefined; /** * Defines a string value that describes or annotates the current element. * @see related aria-describedby. */ 'aria-description'?: string | undefined; /** * Identifies the element that provides a detailed, extended description for the object. * @see aria-describedby. */ 'aria-details'?: string | undefined; /** * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. * @see aria-hidden @see aria-readonly. */ 'aria-disabled'?: Booleanish | undefined; /** * Indicates what functions can be performed when a dragged object is released on the drop target. * @deprecated in ARIA 1.1 */ 'aria-dropeffect'?: 'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup' | undefined; /** * Identifies the element that provides an error message for the object. * @see aria-invalid @see aria-describedby. */ 'aria-errormessage'?: string | undefined; /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */ 'aria-expanded'?: Booleanish | undefined; /** * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, * allows assistive technology to override the general default of reading in document source order. */ 'aria-flowto'?: string | undefined; /** * Indicates an element's "grabbed" state in a drag-and-drop operation. * @deprecated in ARIA 1.1 */ 'aria-grabbed'?: Booleanish | undefined; /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */ 'aria-haspopup'?: | boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | undefined; /** * Indicates whether the element is exposed to an accessibility API. * @see aria-disabled. */ 'aria-hidden'?: Booleanish | undefined; /** * Indicates the entered value does not conform to the format expected by the application. * @see aria-errormessage. */ 'aria-invalid'?: boolean | 'false' | 'true' | 'grammar' | 'spelling' | undefined; /** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */ 'aria-keyshortcuts'?: string | undefined; /** * Defines a string value that labels the current element. * @see aria-labelledby. */ 'aria-label'?: string | undefined; /** * Identifies the element (or elements) that labels the current element. * @see aria-describedby. */ 'aria-labelledby'?: string | undefined; /** Defines the hierarchical level of an element within a structure. */ 'aria-level'?: number | undefined; /** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */ 'aria-live'?: 'off' | 'assertive' | 'polite' | undefined; /** Indicates whether an element is modal when displayed. */ 'aria-modal'?: Booleanish | undefined; /** Indicates whether a text box accepts multiple lines of input or only a single line. */ 'aria-multiline'?: Booleanish | undefined; /** Indicates that the user may select more than one item from the current selectable descendants. */ 'aria-multiselectable'?: Booleanish | undefined; /** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */ 'aria-orientation'?: 'horizontal' | 'vertical' | undefined; /** * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship * between DOM elements where the DOM hierarchy cannot be used to represent the relationship. * @see aria-controls. */ 'aria-owns'?: string | undefined; /** * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. * A hint could be a sample value or a brief description of the expected format. */ 'aria-placeholder'?: string | undefined; /** * Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. * @see aria-setsize. */ 'aria-posinset'?: number | undefined; /** * Indicates the current "pressed" state of toggle buttons. * @see aria-checked @see aria-selected. */ 'aria-pressed'?: boolean | 'false' | 'mixed' | 'true' | undefined; /** * Indicates that the element is not editable, but is otherwise operable. * @see aria-disabled. */ 'aria-readonly'?: Booleanish | undefined; /** * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. * @see aria-atomic. */ 'aria-relevant'?: | 'additions' | 'additions removals' | 'additions text' | 'all' | 'removals' | 'removals additions' | 'removals text' | 'text' | 'text additions' | 'text removals' | undefined; /** Indicates that user input is required on the element before a form may be submitted. */ 'aria-required'?: Booleanish | undefined; /** Defines a human-readable, author-localized description for the role of an element. */ 'aria-roledescription'?: string | undefined; /** * Defines the total number of rows in a table, grid, or treegrid. * @see aria-rowindex. */ 'aria-rowcount'?: number | undefined; /** * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. * @see aria-rowcount @see aria-rowspan. */ 'aria-rowindex'?: number | undefined; /** * Defines a human readable text alternative of aria-rowindex. * @see aria-colindextext. */ 'aria-rowindextext'?: string | undefined; /** * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. * @see aria-rowindex @see aria-colspan. */ 'aria-rowspan'?: number | undefined; /** * Indicates the current "selected" state of various widgets. * @see aria-checked @see aria-pressed. */ 'aria-selected'?: Booleanish | undefined; /** * Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. * @see aria-posinset. */ 'aria-setsize'?: number | undefined; /** Indicates if items in a table or grid are sorted in ascending or descending order. */ 'aria-sort'?: 'none' | 'ascending' | 'descending' | 'other' | undefined; /** Defines the maximum allowed value for a range widget. */ 'aria-valuemax'?: number | undefined; /** Defines the minimum allowed value for a range widget. */ 'aria-valuemin'?: number | undefined; /** * Defines the current value for a range widget. * @see aria-valuetext. */ 'aria-valuenow'?: number | undefined; /** Defines the human readable text alternative of aria-valuenow for a range widget. */ 'aria-valuetext'?: string | undefined; } // All the WAI-ARIA 1.1 role attribute values from https://www.w3.org/TR/wai-aria-1.1/#role_definitions type AriaRole = | 'alert' | 'alertdialog' | 'application' | 'article' | 'banner' | 'button' | 'cell' | 'checkbox' | 'columnheader' | 'combobox' | 'complementary' | 'contentinfo' | 'definition' | 'dialog' | 'directory' | 'document' | 'feed' | 'figure' | 'form' | 'grid' | 'gridcell' | 'group' | 'heading' | 'img' | 'link' | 'list' | 'listbox' | 'listitem' | 'log' | 'main' | 'marquee' | 'math' | 'menu' | 'menubar' | 'menuitem' | 'menuitemcheckbox' | 'menuitemradio' | 'navigation' | 'none' | 'note' | 'option' | 'presentation' | 'progressbar' | 'radio' | 'radiogroup' | 'region' | 'row' | 'rowgroup' | 'rowheader' | 'scrollbar' | 'search' | 'searchbox' | 'separator' | 'slider' | 'spinbutton' | 'status' | 'switch' | 'tab' | 'table' | 'tablist' | 'tabpanel' | 'term' | 'textbox' | 'timer' | 'toolbar' | 'tooltip' | 'tree' | 'treegrid' | 'treeitem' | (string & {}); interface HTMLAttributes extends AriaAttributes, DOMAttributes { // React-specific Attributes defaultChecked?: boolean | undefined; defaultValue?: string | number | readonly string[] | undefined; suppressContentEditableWarning?: boolean | undefined; suppressHydrationWarning?: boolean | undefined; // Standard HTML Attributes accessKey?: string | undefined; autoFocus?: boolean | undefined; className?: string | undefined; contentEditable?: Booleanish | 'inherit' | 'plaintext-only' | undefined; contextMenu?: string | undefined; dir?: string | undefined; draggable?: Booleanish | undefined; hidden?: boolean | undefined; id?: string | undefined; lang?: string | undefined; nonce?: string | undefined; slot?: string | undefined; spellCheck?: Booleanish | undefined; style?: string | undefined; tabIndex?: number | undefined; title?: string | undefined; translate?: 'yes' | 'no' | undefined; // Unknown radioGroup?: string | undefined; // , // WAI-ARIA role?: AriaRole | undefined; // RDFa Attributes about?: string | undefined; content?: string | undefined; datatype?: string | undefined; inlist?: any; prefix?: string | undefined; property?: string | undefined; rel?: string | undefined; resource?: string | undefined; rev?: string | undefined; typeof?: string | undefined; vocab?: string | undefined; // Non-standard Attributes autoCapitalize?: string | undefined; autoCorrect?: string | undefined; autoSave?: string | undefined; color?: string | undefined; itemProp?: string | undefined; itemScope?: boolean | undefined; itemType?: string | undefined; itemID?: string | undefined; itemRef?: string | undefined; results?: number | undefined; security?: string | undefined; unselectable?: 'on' | 'off' | undefined; // Living Standard /** * Hints at the type of data that might be entered by the user while editing the element or its contents * @see {@link https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute} */ inputMode?: | 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search' | undefined; /** * Specify that a standard HTML element should behave like a defined custom built-in element * @see {@link https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is} */ is?: string | undefined; } type CrossOrigin = 'anonymous' | 'use-credentials' | '' | undefined; // interface AllHTMLAttributes extends HTMLAttributes { // // Standard HTML Attributes // accept?: string | undefined; // acceptCharset?: string | undefined; // action?: string | undefined; // allowFullScreen?: boolean | undefined; // allowTransparency?: boolean | undefined; // alt?: string | undefined; // as?: string | undefined; // async?: boolean | undefined; // autoComplete?: string | undefined; // autoPlay?: boolean | undefined; // capture?: boolean | 'user' | 'environment' | undefined; // cellPadding?: number | string | undefined; // cellSpacing?: number | string | undefined; // charSet?: string | undefined; // challenge?: string | undefined; // checked?: boolean | undefined; // cite?: string | undefined; // classID?: string | undefined; // cols?: number | undefined; // colSpan?: number | undefined; // controls?: boolean | undefined; // coords?: string | undefined; // crossOrigin?: CrossOrigin; // data?: string | undefined; // dateTime?: string | undefined; // default?: boolean | undefined; // defer?: boolean | undefined; // disabled?: boolean | undefined; // download?: any; // encType?: string | undefined; // form?: string | undefined; // formAction?: string | undefined; // formEncType?: string | undefined; // formMethod?: string | undefined; // formNoValidate?: boolean | undefined; // formTarget?: string | undefined; // frameBorder?: number | string | undefined; // headers?: string | undefined; // height?: number | string | undefined; // high?: number | undefined; // href?: string | undefined; // hrefLang?: string | undefined; // htmlFor?: string | undefined; // httpEquiv?: string | undefined; // integrity?: string | undefined; // keyParams?: string | undefined; // keyType?: string | undefined; // kind?: string | undefined; // label?: string | undefined; // list?: string | undefined; // loop?: boolean | undefined; // low?: number | undefined; // manifest?: string | undefined; // marginHeight?: number | undefined; // marginWidth?: number | undefined; // max?: number | string | undefined; // maxLength?: number | undefined; // media?: string | undefined; // mediaGroup?: string | undefined; // method?: string | undefined; // min?: number | string | undefined; // minLength?: number | undefined; // multiple?: boolean | undefined; // muted?: boolean | undefined; // name?: string | undefined; // noValidate?: boolean | undefined; // open?: boolean | undefined; // optimum?: number | undefined; // pattern?: string | undefined; // placeholder?: string | undefined; // playsInline?: boolean | undefined; // poster?: string | undefined; // preload?: string | undefined; // readOnly?: boolean | undefined; // required?: boolean | undefined; // reversed?: boolean | undefined; // rows?: number | undefined; // rowSpan?: number | undefined; // sandbox?: string | undefined; // scope?: string | undefined; // scoped?: boolean | undefined; // scrolling?: string | undefined; // seamless?: boolean | undefined; // selected?: boolean | undefined; // shape?: string | undefined; // size?: number | undefined; // sizes?: string | undefined; // span?: number | undefined; // src?: string | undefined; // srcDoc?: string | undefined; // srcLang?: string | undefined; // srcSet?: string | undefined; // start?: number | undefined; // step?: number | string | undefined; // summary?: string | undefined; // target?: string | undefined; // type?: string | undefined; // useMap?: string | undefined; // value?: string | readonly string[] | number | undefined; // width?: number | string | undefined; // wmode?: string | undefined; // wrap?: string | undefined; // } type HTMLAttributeReferrerPolicy = | '' | 'no-referrer' | 'no-referrer-when-downgrade' | 'origin' | 'origin-when-cross-origin' | 'same-origin' | 'strict-origin' | 'strict-origin-when-cross-origin' | 'unsafe-url'; type HTMLAttributeAnchorTarget = '_self' | '_blank' | '_parent' | '_top' | (string & {}); export interface AnchorHTMLAttributes extends HTMLAttributes { download?: any; href?: string | undefined; hrefLang?: string | undefined; media?: string | undefined; ping?: string | undefined; target?: HTMLAttributeAnchorTarget | undefined; type?: string | undefined; referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; } export interface AudioHTMLAttributes extends MediaHTMLAttributes {} export interface AreaHTMLAttributes extends HTMLAttributes { alt?: string | undefined; coords?: string | undefined; download?: any; href?: string | undefined; hrefLang?: string | undefined; media?: string | undefined; referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; shape?: string | undefined; target?: string | undefined; } export interface BaseHTMLAttributes extends HTMLAttributes { href?: string | undefined; target?: string | undefined; } export interface BlockquoteHTMLAttributes extends HTMLAttributes { cite?: string | undefined; } export interface ButtonHTMLAttributes extends HTMLAttributes { disabled?: boolean | undefined; form?: string | undefined; formAction?: string | undefined; formEncType?: string | undefined; formMethod?: string | undefined; formNoValidate?: boolean | undefined; formTarget?: string | undefined; name?: string | undefined; type?: 'submit' | 'reset' | 'button' | undefined; value?: string | readonly string[] | number | undefined; } export interface CanvasHTMLAttributes extends HTMLAttributes { height?: number | string | undefined; width?: number | string | undefined; } export interface ColHTMLAttributes extends HTMLAttributes { span?: number | undefined; width?: number | string | undefined; } export interface ColgroupHTMLAttributes extends HTMLAttributes { span?: number | undefined; } export interface DataHTMLAttributes extends HTMLAttributes { value?: string | readonly string[] | number | undefined; } export interface DetailsHTMLAttributes extends HTMLAttributes { open?: boolean | undefined; 'on:toggle'?: EventHandler | undefined; name?: string | undefined; } export interface DelHTMLAttributes extends HTMLAttributes { cite?: string | undefined; dateTime?: string | undefined; } export interface DialogHTMLAttributes extends HTMLAttributes { 'on:cancel'?: EventHandler | undefined; 'on:close'?: EventHandler | undefined; open?: boolean | undefined; } export interface EmbedHTMLAttributes extends HTMLAttributes { height?: number | string | undefined; src?: string | undefined; type?: string | undefined; width?: number | string | undefined; } export interface FieldsetHTMLAttributes extends HTMLAttributes { disabled?: boolean | undefined; form?: string | undefined; name?: string | undefined; } export interface FormHTMLAttributes extends HTMLAttributes { acceptCharset?: string | undefined; action?: string | undefined; autoComplete?: string | undefined; encType?: string | undefined; method?: string | undefined; name?: string | undefined; noValidate?: boolean | undefined; target?: string | undefined; } export interface HtmlHTMLAttributes extends HTMLAttributes { manifest?: string | undefined; } export interface IframeHTMLAttributes extends HTMLAttributes { allow?: string | undefined; allowFullScreen?: boolean | undefined; allowTransparency?: boolean | undefined; /** @deprecated */ frameBorder?: number | string | undefined; height?: number | string | undefined; loading?: 'eager' | 'lazy' | undefined; /** @deprecated */ marginHeight?: number | undefined; /** @deprecated */ marginWidth?: number | undefined; name?: string | undefined; referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; sandbox?: string | undefined; /** @deprecated */ scrolling?: string | undefined; seamless?: boolean | undefined; src?: string | undefined; srcDoc?: string | undefined; width?: number | string | undefined; } export interface ImgHTMLAttributes extends HTMLAttributes { alt?: string | undefined; crossOrigin?: CrossOrigin; decoding?: 'async' | 'auto' | 'sync' | undefined; fetchPriority?: 'high' | 'low' | 'auto'; height?: number | string | undefined; loading?: 'eager' | 'lazy' | undefined; referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; sizes?: string | undefined; src?: string | undefined; srcSet?: string | undefined; useMap?: string | undefined; width?: number | string | undefined; } export interface InsHTMLAttributes extends HTMLAttributes { cite?: string | undefined; dateTime?: string | undefined; } export type HTMLInputTypeAttribute = | 'button' | 'checkbox' | 'color' | 'date' | 'datetime-local' | 'email' | 'file' | 'hidden' | 'image' | 'month' | 'number' | 'password' | 'radio' | 'range' | 'reset' | 'search' | 'submit' | 'tel' | 'text' | 'time' | 'url' | 'week' | (string & {}); type AutoFillAddressKind = 'billing' | 'shipping'; type AutoFillBase = '' | 'off' | 'on'; type AutoFillContactField = | 'email' | 'tel' | 'tel-area-code' | 'tel-country-code' | 'tel-extension' | 'tel-local' | 'tel-local-prefix' | 'tel-local-suffix' | 'tel-national'; type AutoFillContactKind = 'home' | 'mobile' | 'work'; type AutoFillCredentialField = 'webauthn'; type AutoFillNormalField = | 'additional-name' | 'address-level1' | 'address-level2' | 'address-level3' | 'address-level4' | 'address-line1' | 'address-line2' | 'address-line3' | 'bday-day' | 'bday-month' | 'bday-year' | 'cc-csc' | 'cc-exp' | 'cc-exp-month' | 'cc-exp-year' | 'cc-family-name' | 'cc-given-name' | 'cc-name' | 'cc-number' | 'cc-type' | 'country' | 'country-name' | 'current-password' | 'family-name' | 'given-name' | 'honorific-prefix' | 'honorific-suffix' | 'name' | 'new-password' | 'one-time-code' | 'organization' | 'postal-code' | 'street-address' | 'transaction-amount' | 'transaction-currency' | 'username'; type OptionalPrefixToken = `${T} ` | ''; type OptionalPostfixToken = ` ${T}` | ''; type AutoFillField = | AutoFillNormalField | `${OptionalPrefixToken}${AutoFillContactField}`; type AutoFillSection = `section-${string}`; type AutoFill = | AutoFillBase | `${OptionalPrefixToken}${OptionalPrefixToken}${AutoFillField}${OptionalPostfixToken}`; type HTMLInputAutoCompleteAttribute = AutoFill | (string & {}); export interface InputHTMLAttributes extends HTMLAttributes { accept?: string | undefined; alt?: string | undefined; autoComplete?: HTMLInputAutoCompleteAttribute | undefined; capture?: boolean | 'user' | 'environment' | undefined; // https://www.w3.org/TR/html-media-capture/#the-capture-attribute checked?: boolean | undefined; disabled?: boolean | undefined; enterKeyHint?: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send' | undefined; form?: string | undefined; formAction?: string | undefined; formEncType?: string | undefined; formMethod?: string | undefined; formNoValidate?: boolean | undefined; formTarget?: string | undefined; height?: number | string | undefined; list?: string | undefined; max?: number | string | undefined; maxLength?: number | undefined; min?: number | string | undefined; minLength?: number | undefined; multiple?: boolean | undefined; name?: string | undefined; pattern?: string | undefined; placeholder?: string | undefined; readOnly?: boolean | undefined; required?: boolean | undefined; size?: number | undefined; src?: string | undefined; step?: number | string | undefined; type?: HTMLInputTypeAttribute | undefined; value?: string | readonly string[] | number | undefined; width?: number | string | undefined; 'on:change'?: ChangeEventHandler | undefined; } export interface KeygenHTMLAttributes extends HTMLAttributes { challenge?: string | undefined; disabled?: boolean | undefined; form?: string | undefined; keyType?: string | undefined; keyParams?: string | undefined; name?: string | undefined; } export interface LabelHTMLAttributes extends HTMLAttributes { form?: string | undefined; htmlFor?: string | undefined; } export interface LiHTMLAttributes extends HTMLAttributes { value?: string | readonly string[] | number | undefined; } export interface LinkHTMLAttributes extends HTMLAttributes { as?: string | undefined; crossOrigin?: CrossOrigin; fetchPriority?: 'high' | 'low' | 'auto'; href?: string | undefined; hrefLang?: string | undefined; integrity?: string | undefined; media?: string | undefined; imageSrcSet?: string | undefined; imageSizes?: string | undefined; referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; sizes?: string | undefined; type?: string | undefined; charSet?: string | undefined; } export interface MapHTMLAttributes extends HTMLAttributes { name?: string | undefined; } export interface MenuHTMLAttributes extends HTMLAttributes { type?: string | undefined; } export interface MediaHTMLAttributes extends HTMLAttributes { autoPlay?: boolean | undefined; controls?: boolean | undefined; controlsList?: string | undefined; crossOrigin?: CrossOrigin; loop?: boolean | undefined; mediaGroup?: string | undefined; muted?: boolean | undefined; playsInline?: boolean | undefined; preload?: string | undefined; src?: string | undefined; } export interface MetaHTMLAttributes extends HTMLAttributes { charSet?: string | undefined; content?: string | undefined; httpEquiv?: string | undefined; media?: string | undefined; name?: string | undefined; } export interface MeterHTMLAttributes extends HTMLAttributes { form?: string | undefined; high?: number | undefined; low?: number | undefined; max?: number | string | undefined; min?: number | string | undefined; optimum?: number | undefined; value?: string | readonly string[] | number | undefined; } export interface QuoteHTMLAttributes extends HTMLAttributes { cite?: string | undefined; } export interface ObjectHTMLAttributes extends HTMLAttributes { classID?: string | undefined; data?: string | undefined; form?: string | undefined; height?: number | string | undefined; name?: string | undefined; type?: string | undefined; useMap?: string | undefined; width?: number | string | undefined; wmode?: string | undefined; } export interface OlHTMLAttributes extends HTMLAttributes { reversed?: boolean | undefined; start?: number | undefined; type?: '1' | 'a' | 'A' | 'i' | 'I' | undefined; } export interface OptgroupHTMLAttributes extends HTMLAttributes { disabled?: boolean | undefined; label?: string | undefined; } export interface OptionHTMLAttributes extends HTMLAttributes { disabled?: boolean | undefined; label?: string | undefined; selected?: boolean | undefined; value?: string | readonly string[] | number | undefined; } export interface OutputHTMLAttributes extends HTMLAttributes { form?: string | undefined; htmlFor?: string | undefined; name?: string | undefined; } export interface ParamHTMLAttributes extends HTMLAttributes { name?: string | undefined; value?: string | readonly string[] | number | undefined; } export interface ProgressHTMLAttributes extends HTMLAttributes { max?: number | string | undefined; value?: string | readonly string[] | number | undefined; } export interface SlotHTMLAttributes extends HTMLAttributes { name?: string | undefined; } export interface ScriptHTMLAttributes extends HTMLAttributes { async?: boolean | undefined; /** @deprecated */ charSet?: string | undefined; crossOrigin?: CrossOrigin; defer?: boolean | undefined; integrity?: string | undefined; noModule?: boolean | undefined; referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; src?: string | undefined; type?: string | undefined; } export interface SelectHTMLAttributes extends HTMLAttributes { autoComplete?: string | undefined; disabled?: boolean | undefined; form?: string | undefined; multiple?: boolean | undefined; name?: string | undefined; required?: boolean | undefined; size?: number | undefined; value?: string | readonly string[] | number | undefined; 'on:change'?: ChangeEventHandler | undefined; } export interface SourceHTMLAttributes extends HTMLAttributes { height?: number | string | undefined; media?: string | undefined; sizes?: string | undefined; src?: string | undefined; srcSet?: string | undefined; type?: string | undefined; width?: number | string | undefined; } export interface StyleHTMLAttributes extends HTMLAttributes { media?: string | undefined; scoped?: boolean | undefined; type?: string | undefined; } export interface TableHTMLAttributes extends HTMLAttributes { align?: 'left' | 'center' | 'right' | undefined; bgcolor?: string | undefined; border?: number | undefined; cellPadding?: number | string | undefined; cellSpacing?: number | string | undefined; frame?: boolean | undefined; rules?: 'none' | 'groups' | 'rows' | 'columns' | 'all' | undefined; summary?: string | undefined; width?: number | string | undefined; } export interface TextareaHTMLAttributes extends HTMLAttributes { autoComplete?: string | undefined; cols?: number | undefined; dirName?: string | undefined; disabled?: boolean | undefined; form?: string | undefined; maxLength?: number | undefined; minLength?: number | undefined; name?: string | undefined; placeholder?: string | undefined; readOnly?: boolean | undefined; required?: boolean | undefined; rows?: number | undefined; value?: string | readonly string[] | number | undefined; wrap?: string | undefined; 'on:change'?: ChangeEventHandler | undefined; } export interface TdHTMLAttributes extends HTMLAttributes { align?: 'left' | 'center' | 'right' | 'justify' | 'char' | undefined; colSpan?: number | undefined; headers?: string | undefined; rowSpan?: number | undefined; scope?: string | undefined; abbr?: string | undefined; height?: number | string | undefined; width?: number | string | undefined; valign?: 'top' | 'middle' | 'bottom' | 'baseline' | undefined; } export interface ThHTMLAttributes extends HTMLAttributes { align?: 'left' | 'center' | 'right' | 'justify' | 'char' | undefined; colSpan?: number | undefined; headers?: string | undefined; rowSpan?: number | undefined; scope?: string | undefined; abbr?: string | undefined; } export interface TimeHTMLAttributes extends HTMLAttributes { dateTime?: string | undefined; } export interface TrackHTMLAttributes extends HTMLAttributes { default?: boolean | undefined; kind?: string | undefined; label?: string | undefined; src?: string | undefined; srcLang?: string | undefined; } export interface VideoHTMLAttributes extends MediaHTMLAttributes { height?: number | string | undefined; playsInline?: boolean | undefined; poster?: string | undefined; width?: number | string | undefined; disablePictureInPicture?: boolean | undefined; disableRemotePlayback?: boolean | undefined; } // this list is "complete" in that it contains every SVG attribute // that React supports, but the types can be improved. // Full list here: https://facebook.github.io/react/docs/dom-elements.html // // The three broad type categories are (in order of restrictiveness): // - "number | string" // - "string" // - union of string literals interface SVGAttributes extends AriaAttributes, DOMAttributes { // React-specific Attributes suppressHydrationWarning?: boolean | undefined; // Attributes which also defined in HTMLAttributes // See comment in SVGDOMPropertyConfig.js className?: string | undefined; color?: string | undefined; height?: number | string | undefined; id?: string | undefined; lang?: string | undefined; max?: number | string | undefined; media?: string | undefined; method?: string | undefined; min?: number | string | undefined; name?: string | undefined; style?: string | undefined; target?: string | undefined; type?: string | undefined; width?: number | string | undefined; // Other HTML properties supported by SVG elements in browsers role?: AriaRole | undefined; tabIndex?: number | undefined; crossOrigin?: CrossOrigin; // SVG Specific attributes accentHeight?: number | string | undefined; accumulate?: 'none' | 'sum' | undefined; additive?: 'replace' | 'sum' | undefined; alignmentBaseline?: | 'auto' | 'baseline' | 'before-edge' | 'text-before-edge' | 'middle' | 'central' | 'after-edge' | 'text-after-edge' | 'ideographic' | 'alphabetic' | 'hanging' | 'mathematical' | 'inherit' | undefined; allowReorder?: 'no' | 'yes' | undefined; alphabetic?: number | string | undefined; amplitude?: number | string | undefined; arabicForm?: 'initial' | 'medial' | 'terminal' | 'isolated' | undefined; ascent?: number | string | undefined; attributeName?: string | undefined; attributeType?: string | undefined; autoReverse?: Booleanish | undefined; azimuth?: number | string | undefined; baseFrequency?: number | string | undefined; baselineShift?: number | string | undefined; baseProfile?: number | string | undefined; bbox?: number | string | undefined; begin?: number | string | undefined; bias?: number | string | undefined; by?: number | string | undefined; calcMode?: number | string | undefined; capHeight?: number | string | undefined; clip?: number | string | undefined; clipPath?: string | undefined; clipPathUnits?: number | string | undefined; clipRule?: number | string | undefined; colorInterpolation?: number | string | undefined; colorInterpolationFilters?: 'auto' | 'sRGB' | 'linearRGB' | 'inherit' | undefined; colorProfile?: number | string | undefined; colorRendering?: number | string | undefined; contentScriptType?: number | string | undefined; contentStyleType?: number | string | undefined; cursor?: number | string | undefined; cx?: number | string | undefined; cy?: number | string | undefined; d?: string | undefined; decelerate?: number | string | undefined; descent?: number | string | undefined; diffuseConstant?: number | string | undefined; direction?: number | string | undefined; display?: number | string | undefined; divisor?: number | string | undefined; dominantBaseline?: number | string | undefined; dur?: number | string | undefined; dx?: number | string | undefined; dy?: number | string | undefined; edgeMode?: number | string | undefined; elevation?: number | string | undefined; enableBackground?: number | string | undefined; end?: number | string | undefined; exponent?: number | string | undefined; externalResourcesRequired?: Booleanish | undefined; fill?: string | undefined; fillOpacity?: number | string | undefined; fillRule?: 'nonzero' | 'evenodd' | 'inherit' | undefined; filter?: string | undefined; filterRes?: number | string | undefined; filterUnits?: number | string | undefined; floodColor?: number | string | undefined; floodOpacity?: number | string | undefined; focusable?: Booleanish | 'auto' | undefined; fontFamily?: string | undefined; fontSize?: number | string | undefined; fontSizeAdjust?: number | string | undefined; fontStretch?: number | string | undefined; fontStyle?: number | string | undefined; fontVariant?: number | string | undefined; fontWeight?: number | string | undefined; format?: number | string | undefined; fr?: number | string | undefined; from?: number | string | undefined; fx?: number | string | undefined; fy?: number | string | undefined; g1?: number | string | undefined; g2?: number | string | undefined; glyphName?: number | string | undefined; glyphOrientationHorizontal?: number | string | undefined; glyphOrientationVertical?: number | string | undefined; glyphRef?: number | string | undefined; gradientTransform?: string | undefined; gradientUnits?: string | undefined; hanging?: number | string | undefined; horizAdvX?: number | string | undefined; horizOriginX?: number | string | undefined; href?: string | undefined; ideographic?: number | string | undefined; imageRendering?: number | string | undefined; in2?: number | string | undefined; in?: string | undefined; intercept?: number | string | undefined; k1?: number | string | undefined; k2?: number | string | undefined; k3?: number | string | undefined; k4?: number | string | undefined; k?: number | string | undefined; kernelMatrix?: number | string | undefined; kernelUnitLength?: number | string | undefined; kerning?: number | string | undefined; keyPoints?: number | string | undefined; keySplines?: number | string | undefined; keyTimes?: number | string | undefined; lengthAdjust?: number | string | undefined; letterSpacing?: number | string | undefined; lightingColor?: number | string | undefined; limitingConeAngle?: number | string | undefined; local?: number | string | undefined; markerEnd?: string | undefined; markerHeight?: number | string | undefined; markerMid?: string | undefined; markerStart?: string | undefined; markerUnits?: number | string | undefined; markerWidth?: number | string | undefined; mask?: string | undefined; maskContentUnits?: number | string | undefined; maskUnits?: number | string | undefined; mathematical?: number | string | undefined; mode?: number | string | undefined; numOctaves?: number | string | undefined; offset?: number | string | undefined; opacity?: number | string | undefined; operator?: number | string | undefined; order?: number | string | undefined; orient?: number | string | undefined; orientation?: number | string | undefined; origin?: number | string | undefined; overflow?: number | string | undefined; overlinePosition?: number | string | undefined; overlineThickness?: number | string | undefined; paintOrder?: number | string | undefined; panose1?: number | string | undefined; path?: string | undefined; pathLength?: number | string | undefined; patternContentUnits?: string | undefined; patternTransform?: number | string | undefined; patternUnits?: string | undefined; pointerEvents?: number | string | undefined; points?: string | undefined; pointsAtX?: number | string | undefined; pointsAtY?: number | string | undefined; pointsAtZ?: number | string | undefined; preserveAlpha?: Booleanish | undefined; preserveAspectRatio?: string | undefined; primitiveUnits?: number | string | undefined; r?: number | string | undefined; radius?: number | string | undefined; refX?: number | string | undefined; refY?: number | string | undefined; renderingIntent?: number | string | undefined; repeatCount?: number | string | undefined; repeatDur?: number | string | undefined; requiredExtensions?: number | string | undefined; requiredFeatures?: number | string | undefined; restart?: number | string | undefined; result?: string | undefined; rotate?: number | string | undefined; rx?: number | string | undefined; ry?: number | string | undefined; scale?: number | string | undefined; seed?: number | string | undefined; shapeRendering?: number | string | undefined; slope?: number | string | undefined; spacing?: number | string | undefined; specularConstant?: number | string | undefined; specularExponent?: number | string | undefined; speed?: number | string | undefined; spreadMethod?: string | undefined; startOffset?: number | string | undefined; stdDeviation?: number | string | undefined; stemh?: number | string | undefined; stemv?: number | string | undefined; stitchTiles?: number | string | undefined; stopColor?: string | undefined; stopOpacity?: number | string | undefined; strikethroughPosition?: number | string | undefined; strikethroughThickness?: number | string | undefined; string?: number | string | undefined; stroke?: string | undefined; strokeDasharray?: string | number | undefined; strokeDashoffset?: string | number | undefined; strokeLinecap?: 'butt' | 'round' | 'square' | 'inherit' | undefined; strokeLinejoin?: 'miter' | 'round' | 'bevel' | 'inherit' | undefined; strokeMiterlimit?: number | string | undefined; strokeOpacity?: number | string | undefined; strokeWidth?: number | string | undefined; surfaceScale?: number | string | undefined; systemLanguage?: number | string | undefined; tableValues?: number | string | undefined; targetX?: number | string | undefined; targetY?: number | string | undefined; textAnchor?: string | undefined; textDecoration?: number | string | undefined; textLength?: number | string | undefined; textRendering?: number | string | undefined; to?: number | string | undefined; transform?: string | undefined; u1?: number | string | undefined; u2?: number | string | undefined; underlinePosition?: number | string | undefined; underlineThickness?: number | string | undefined; unicode?: number | string | undefined; unicodeBidi?: number | string | undefined; unicodeRange?: number | string | undefined; unitsPerEm?: number | string | undefined; vAlphabetic?: number | string | undefined; values?: string | undefined; vectorEffect?: number | string | undefined; version?: string | undefined; vertAdvY?: number | string | undefined; vertOriginX?: number | string | undefined; vertOriginY?: number | string | undefined; vHanging?: number | string | undefined; vIdeographic?: number | string | undefined; viewBox?: string | undefined; viewTarget?: number | string | undefined; visibility?: number | string | undefined; vMathematical?: number | string | undefined; widths?: number | string | undefined; wordSpacing?: number | string | undefined; writingMode?: number | string | undefined; x1?: number | string | undefined; x2?: number | string | undefined; x?: number | string | undefined; xChannelSelector?: string | undefined; xHeight?: number | string | undefined; xlinkActuate?: string | undefined; xlinkArcrole?: string | undefined; xlinkHref?: string | undefined; xlinkRole?: string | undefined; xlinkShow?: string | undefined; xlinkTitle?: string | undefined; xlinkType?: string | undefined; xmlBase?: string | undefined; xmlLang?: string | undefined; xmlns?: string | undefined; xmlnsXlink?: string | undefined; xmlSpace?: string | undefined; y1?: number | string | undefined; y2?: number | string | undefined; y?: number | string | undefined; yChannelSelector?: string | undefined; z?: number | string | undefined; zoomAndPan?: string | undefined; } type DetailedHTMLProps, T extends Node> = { ref?: Ref | RefFn; key?: unknown | typeof KEY_DATA | typeof KEY_INDEX; } & E; interface SVGProps extends SVGAttributes { ref?: Ref | RefFn; key?: string | number | typeof KEY_DATA | typeof KEY_INDEX; } interface SVGLineElementAttributes extends SVGProps {} interface SVGTextElementAttributes extends SVGProps {} interface AllHTMLElements { // HTML a: DetailedHTMLProps, HTMLAnchorElement>; abbr: DetailedHTMLProps, HTMLElement>; address: DetailedHTMLProps, HTMLElement>; area: DetailedHTMLProps, HTMLAreaElement>; article: DetailedHTMLProps, HTMLElement>; aside: DetailedHTMLProps, HTMLElement>; audio: DetailedHTMLProps, HTMLAudioElement>; b: DetailedHTMLProps, HTMLElement>; base: DetailedHTMLProps, HTMLBaseElement>; bdi: DetailedHTMLProps, HTMLElement>; bdo: DetailedHTMLProps, HTMLElement>; big: DetailedHTMLProps, HTMLElement>; blockquote: DetailedHTMLProps, HTMLQuoteElement>; body: DetailedHTMLProps, HTMLBodyElement>; br: DetailedHTMLProps, HTMLBRElement>; button: DetailedHTMLProps, HTMLButtonElement>; canvas: DetailedHTMLProps, HTMLCanvasElement>; caption: DetailedHTMLProps, HTMLElement>; center: DetailedHTMLProps, HTMLElement>; cite: DetailedHTMLProps, HTMLElement>; code: DetailedHTMLProps, HTMLElement>; col: DetailedHTMLProps, HTMLTableColElement>; colgroup: DetailedHTMLProps, HTMLTableColElement>; data: DetailedHTMLProps, HTMLDataElement>; datalist: DetailedHTMLProps, HTMLDataListElement>; dd: DetailedHTMLProps, HTMLElement>; del: DetailedHTMLProps, HTMLModElement>; details: DetailedHTMLProps, HTMLDetailsElement>; dfn: DetailedHTMLProps, HTMLElement>; dialog: DetailedHTMLProps, HTMLDialogElement>; div: DetailedHTMLProps, HTMLDivElement>; dl: DetailedHTMLProps, HTMLDListElement>; dt: DetailedHTMLProps, HTMLElement>; em: DetailedHTMLProps, HTMLElement>; embed: DetailedHTMLProps, HTMLEmbedElement>; fieldset: DetailedHTMLProps, HTMLFieldSetElement>; figcaption: DetailedHTMLProps, HTMLElement>; figure: DetailedHTMLProps, HTMLElement>; footer: DetailedHTMLProps, HTMLElement>; form: DetailedHTMLProps, HTMLFormElement>; h1: DetailedHTMLProps, HTMLHeadingElement>; h2: DetailedHTMLProps, HTMLHeadingElement>; h3: DetailedHTMLProps, HTMLHeadingElement>; h4: DetailedHTMLProps, HTMLHeadingElement>; h5: DetailedHTMLProps, HTMLHeadingElement>; h6: DetailedHTMLProps, HTMLHeadingElement>; head: DetailedHTMLProps, HTMLHeadElement>; header: DetailedHTMLProps, HTMLElement>; hgroup: DetailedHTMLProps, HTMLElement>; hr: DetailedHTMLProps, HTMLHRElement>; html: DetailedHTMLProps, HTMLHtmlElement>; i: DetailedHTMLProps, HTMLElement>; iframe: DetailedHTMLProps, HTMLIFrameElement>; img: DetailedHTMLProps, HTMLImageElement>; input: DetailedHTMLProps, HTMLInputElement>; ins: DetailedHTMLProps, HTMLModElement>; kbd: DetailedHTMLProps, HTMLElement>; keygen: DetailedHTMLProps, HTMLElement>; label: DetailedHTMLProps, HTMLLabelElement>; legend: DetailedHTMLProps, HTMLLegendElement>; li: DetailedHTMLProps, HTMLLIElement>; link: DetailedHTMLProps, HTMLLinkElement>; main: DetailedHTMLProps, HTMLElement>; map: DetailedHTMLProps, HTMLMapElement>; mark: DetailedHTMLProps, HTMLElement>; menu: DetailedHTMLProps, HTMLElement>; menuitem: DetailedHTMLProps, HTMLElement>; meta: DetailedHTMLProps, HTMLMetaElement>; meter: DetailedHTMLProps, HTMLMeterElement>; nav: DetailedHTMLProps, HTMLElement>; noindex: DetailedHTMLProps, HTMLElement>; noscript: DetailedHTMLProps, HTMLElement>; object: DetailedHTMLProps, HTMLObjectElement>; ol: DetailedHTMLProps, HTMLOListElement>; optgroup: DetailedHTMLProps, HTMLOptGroupElement>; option: DetailedHTMLProps, HTMLOptionElement>; output: DetailedHTMLProps, HTMLOutputElement>; p: DetailedHTMLProps, HTMLParagraphElement>; param: DetailedHTMLProps, HTMLParamElement>; picture: DetailedHTMLProps, HTMLElement>; pre: DetailedHTMLProps, HTMLPreElement>; progress: DetailedHTMLProps, HTMLProgressElement>; q: DetailedHTMLProps, HTMLQuoteElement>; rp: DetailedHTMLProps, HTMLElement>; rt: DetailedHTMLProps, HTMLElement>; ruby: DetailedHTMLProps, HTMLElement>; s: DetailedHTMLProps, HTMLElement>; samp: DetailedHTMLProps, HTMLElement>; search: DetailedHTMLProps, HTMLElement>; slot: DetailedHTMLProps, HTMLSlotElement>; script: DetailedHTMLProps, HTMLScriptElement>; section: DetailedHTMLProps, HTMLElement>; select: DetailedHTMLProps, HTMLSelectElement>; small: DetailedHTMLProps, HTMLElement>; source: DetailedHTMLProps, HTMLSourceElement>; span: DetailedHTMLProps, HTMLSpanElement>; strong: DetailedHTMLProps, HTMLElement>; style: DetailedHTMLProps, HTMLStyleElement>; sub: DetailedHTMLProps, HTMLElement>; summary: DetailedHTMLProps, HTMLElement>; sup: DetailedHTMLProps, HTMLElement>; table: DetailedHTMLProps, HTMLTableElement>; template: DetailedHTMLProps, HTMLTemplateElement>; tbody: DetailedHTMLProps, HTMLTableSectionElement>; td: DetailedHTMLProps, HTMLTableDataCellElement>; textarea: DetailedHTMLProps, HTMLTextAreaElement>; tfoot: DetailedHTMLProps, HTMLTableSectionElement>; th: DetailedHTMLProps, HTMLTableHeaderCellElement>; thead: DetailedHTMLProps, HTMLTableSectionElement>; time: DetailedHTMLProps, HTMLTimeElement>; title: DetailedHTMLProps, HTMLTitleElement>; tr: DetailedHTMLProps, HTMLTableRowElement>; track: DetailedHTMLProps, HTMLTrackElement>; u: DetailedHTMLProps, HTMLElement>; ul: DetailedHTMLProps, HTMLUListElement>; var: DetailedHTMLProps, HTMLElement>; video: DetailedHTMLProps, HTMLVideoElement>; wbr: DetailedHTMLProps, HTMLElement>; // SVG svg: SVGProps; animate: SVGProps; // TODO: It is SVGAnimateElement but is not in TypeScript's lib.dom.d.ts for now. animateMotion: SVGProps; animateTransform: SVGProps; // TODO: It is SVGAnimateTransformElement but is not in TypeScript's lib.dom.d.ts for now. circle: SVGProps; clipPath: SVGProps; defs: SVGProps; desc: SVGProps; ellipse: SVGProps; feBlend: SVGProps; feColorMatrix: SVGProps; feComponentTransfer: SVGProps; feComposite: SVGProps; feConvolveMatrix: SVGProps; feDiffuseLighting: SVGProps; feDisplacementMap: SVGProps; feDistantLight: SVGProps; feDropShadow: SVGProps; feFlood: SVGProps; feFuncA: SVGProps; feFuncB: SVGProps; feFuncG: SVGProps; feFuncR: SVGProps; feGaussianBlur: SVGProps; feImage: SVGProps; feMerge: SVGProps; feMergeNode: SVGProps; feMorphology: SVGProps; feOffset: SVGProps; fePointLight: SVGProps; feSpecularLighting: SVGProps; feSpotLight: SVGProps; feTile: SVGProps; feTurbulence: SVGProps; filter: SVGProps; foreignObject: SVGProps; g: SVGProps; image: SVGProps; line: SVGLineElementAttributes; linearGradient: SVGProps; marker: SVGProps; mask: SVGProps; metadata: SVGProps; mpath: SVGProps; path: SVGProps; pattern: SVGProps; polygon: SVGProps; polyline: SVGProps; radialGradient: SVGProps; rect: SVGProps; set: SVGProps; stop: SVGProps; switch: SVGProps; symbol: SVGProps; text: SVGTextElementAttributes; textPath: SVGProps; tspan: SVGProps; use: SVGProps; view: SVGProps; } declare global { namespace JSX { type ElementType = string | FC; interface Element { type: any; props: any; } interface IntrinsicAttributes { /** * 和 react/vue 等框架不同,jinge 框架的 `key` 属性暂时没有任何作用。 * 只是当编译器将 `.map()` 函数语句转成 `` 组件时,会找到第一个根节点子元素的 `key` 属性转成 `For` 组件的 `key` 属性。 */ key?: string | number | typeof KEY_DATA | typeof KEY_INDEX; } interface ElementAttributesProperty { props: {}; // specify the property name to use } interface ElementChildrenAttribute { children: {}; } interface IntrinsicElements extends AllHTMLElements {} } }