@msom/dom
Version:
@msom/dom
1,212 lines (1,160 loc) • 116 kB
TypeScript
import {
CSSStyle,
ClassType,
Event as MEvent,
PromiseLike,
} from "@msom/common";
import { IComponent, IComponentEvents, IComponentProps, IRef } from "@msom/dom";
interface HTMLWebViewElement extends HTMLElement {}
type NativeAnimationEvent = AnimationEvent;
type NativeClipboardEvent = ClipboardEvent;
type NativeCompositionEvent = CompositionEvent;
type NativeDragEvent = DragEvent;
type NativeFocusEvent = FocusEvent;
type NativeKeyboardEvent = KeyboardEvent;
type NativeMouseEvent = MouseEvent;
type NativeTouchEvent = TouchEvent;
type NativePointerEvent = PointerEvent;
type NativeToggleEvent = ToggleEvent;
type NativeTransitionEvent = TransitionEvent;
type NativeUIEvent = UIEvent;
type NativeWheelEvent = WheelEvent;
type Booleanish = boolean | "true" | "false";
type CrossOrigin = "anonymous" | "use-credentials" | "" | undefined;
export = Msom;
export as namespace Msom;
declare namespace Msom {
// 转换内置元素属性:驼峰事件 -> 小写事件
type WithLowercaseEvents<
T extends PropAttributesSystem.DOMEventAttibuties<unknown>
> = {
[K in keyof T as K extends `on${infer EventName}`
? `on${Lowercase<EventName>}`
: K]: K extends `on${infer EventName}`
? (
event: Exclude<T[K], undefined> extends EventSystem.EventHandler<
infer E
>
? E
: never
) => void
: T[K];
};
interface DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_MSOM_NODES {}
type MsomNode =
| Function
| MsomElement
| string
| number
| bigint
| Iterable<MsomNode>
| Booleanish
| null
| undefined
| DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_MSOM_NODES[keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_MSOM_NODES];
type AwaitedMsomNode =
| MsomElement
| string
| number
| bigint
| Iterable<MsomNode>
| Booleanish
| null
| undefined
| DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_MSOM_NODES[keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_MSOM_NODES];
namespace EventSystem {
interface BaseSyntheticEvent<E = object, C = any, T = any> {
nativeEvent: E;
currentTarget: C;
target: T;
bubbles: boolean;
cancelable: boolean;
defaultPrevented: boolean;
eventPhase: number;
isTrusted: boolean;
preventDefault(): void;
isDefaultPrevented(): boolean;
stopPropagation(): void;
isPropagationStopped(): boolean;
persist(): void;
timeStamp: number;
type: string;
}
interface SyntheticEvent<T = Element, E = Event>
extends BaseSyntheticEvent<E, EventTarget & T, T> {}
interface ClipboardEvent<T = Element>
extends SyntheticEvent<T, NativeClipboardEvent> {
clipboardData: DataTransfer;
}
interface CompositionEvent<T = Element>
extends SyntheticEvent<T, NativeCompositionEvent> {
data: string;
}
interface DragEvent<T = Element> extends MouseEvent<T, NativeDragEvent> {
dataTransfer: DataTransfer;
}
interface PointerEvent<T = Element>
extends MouseEvent<T, NativePointerEvent> {
pointerId: number;
pressure: number;
tangentialPressure: number;
tiltX: number;
tiltY: number;
twist: number;
width: number;
height: number;
pointerType: "mouse" | "pen" | "touch";
isPrimary: boolean;
}
interface FocusEvent<Target = Element, RelatedTarget = Element>
extends SyntheticEvent<Target, NativeFocusEvent> {
relatedTarget: (EventTarget & RelatedTarget) | null;
target: EventTarget & Target;
}
interface FormEvent<T = Element> extends SyntheticEvent<T> {}
interface InvalidEvent<T = Element> extends SyntheticEvent<T> {
target: EventTarget & T;
}
interface ChangeEvent<T = Element> extends SyntheticEvent<T> {
target: EventTarget & T;
}
export type ModifierKey =
| "Alt"
| "AltGraph"
| "CapsLock"
| "Control"
| "Fn"
| "FnLock"
| "Hyper"
| "Meta"
| "NumLock"
| "ScrollLock"
| "Shift"
| "Super"
| "Symbol"
| "SymbolLock";
interface KeyboardEvent<T = Element>
extends UIEvent<T, NativeKeyboardEvent> {
altKey: boolean;
/** @deprecated */
charCode: number;
ctrlKey: boolean;
code: string;
getModifierState(key: ModifierKey): boolean;
key: string;
/** @deprecated */
keyCode: number;
locale: string;
location: number;
metaKey: boolean;
repeat: boolean;
shiftKey: boolean;
/** @deprecated */
which: number;
}
interface MouseEvent<T = Element, E = NativeMouseEvent>
extends UIEvent<T, E> {
altKey: boolean;
button: number;
buttons: number;
clientX: number;
clientY: number;
ctrlKey: boolean;
/**
* See [DOM Level 3 Events spec](https://www.w3.org/TR/uievents-key/#keys-modifier). for a list of valid (case-sensitive) arguments to this method.
*/
getModifierState(key: ModifierKey): boolean;
metaKey: boolean;
movementX: number;
movementY: number;
pageX: number;
pageY: number;
relatedTarget: EventTarget | null;
screenX: number;
screenY: number;
shiftKey: boolean;
}
interface TouchEvent<T = Element> extends UIEvent<T, NativeTouchEvent> {
altKey: boolean;
changedTouches: TouchList;
ctrlKey: boolean;
/**
* See [DOM Level 3 Events spec](https://www.w3.org/TR/uievents-key/#keys-modifier). for a list of valid (case-sensitive) arguments to this method.
*/
getModifierState(key: ModifierKey): boolean;
metaKey: boolean;
shiftKey: boolean;
targetTouches: TouchList;
touches: TouchList;
}
interface AbstractView {
styleMedia: StyleMedia;
document: Document;
}
interface UIEvent<T = Element, E = NativeUIEvent>
extends SyntheticEvent<T, E> {
detail: number;
view: AbstractView;
}
interface WheelEvent<T = Element> extends MouseEvent<T, NativeWheelEvent> {
deltaMode: number;
deltaX: number;
deltaY: number;
deltaZ: number;
}
interface AnimationEvent<T = Element>
extends SyntheticEvent<T, NativeAnimationEvent> {
animationName: string;
elapsedTime: number;
pseudoElement: string;
}
interface ToggleEvent<T = Element>
extends SyntheticEvent<T, NativeToggleEvent> {
oldState: "closed" | "open";
newState: "closed" | "open";
}
interface TransitionEvent<T = Element>
extends SyntheticEvent<T, NativeTransitionEvent> {
elapsedTime: number;
propertyName: string;
pseudoElement: string;
}
type EventHandler<E extends SyntheticEvent<any>> = (event: E) => void;
type MsomEventHandler<T = Element> = EventHandler<SyntheticEvent<T>>;
type ClipboardEventHandler<T = Element> = EventHandler<ClipboardEvent<T>>;
type CompositionEventHandler<T = Element> = EventHandler<
CompositionEvent<T>
>;
type DragEventHandler<T = Element> = EventHandler<DragEvent<T>>;
type FocusEventHandler<T = Element> = EventHandler<FocusEvent<T>>;
type FormEventHandler<T = Element> = EventHandler<FormEvent<T>>;
type ChangeEventHandler<T = Element> = EventHandler<ChangeEvent<T>>;
type KeyboardEventHandler<T = Element> = EventHandler<KeyboardEvent<T>>;
type MouseEventHandler<T = Element> = EventHandler<MouseEvent<T>>;
type TouchEventHandler<T = Element> = EventHandler<TouchEvent<T>>;
type PointerEventHandler<T = Element> = EventHandler<PointerEvent<T>>;
type UIEventHandler<T = Element> = EventHandler<UIEvent<T>>;
type WheelEventHandler<T = Element> = EventHandler<WheelEvent<T>>;
type AnimationEventHandler<T = Element> = EventHandler<AnimationEvent<T>>;
type ToggleEventHandler<T = Element> = EventHandler<ToggleEvent<T>>;
type TransitionEventHandler<T = Element> = EventHandler<TransitionEvent<T>>;
}
namespace PropAttributesSystem {
interface DOMEventAttibuties<T> {
children?: MsomNode;
// Clipboard Events
onCopy?: EventSystem.ClipboardEventHandler<T> | undefined;
onCopyCapture?: EventSystem.ClipboardEventHandler<T> | undefined;
onCut?: EventSystem.ClipboardEventHandler<T> | undefined;
onCutCapture?: EventSystem.ClipboardEventHandler<T> | undefined;
onPaste?: EventSystem.ClipboardEventHandler<T> | undefined;
onPasteCapture?: EventSystem.ClipboardEventHandler<T> | undefined;
// Composition Events
onCompositionEnd?: EventSystem.CompositionEventHandler<T> | undefined;
onCompositionEndCapture?:
| EventSystem.CompositionEventHandler<T>
| undefined;
onCompositionStart?: EventSystem.CompositionEventHandler<T> | undefined;
onCompositionStartCapture?:
| EventSystem.CompositionEventHandler<T>
| undefined;
onCompositionUpdate?: EventSystem.CompositionEventHandler<T> | undefined;
onCompositionUpdateCapture?:
| EventSystem.CompositionEventHandler<T>
| undefined;
// Focus Events
onFocus?: EventSystem.FocusEventHandler<T> | undefined;
onFocusCapture?: EventSystem.FocusEventHandler<T> | undefined;
onBlur?: EventSystem.FocusEventHandler<T> | undefined;
onBlurCapture?: EventSystem.FocusEventHandler<T> | undefined;
// Form Events
onChange?: EventSystem.FormEventHandler<T> | undefined;
onChangeCapture?: EventSystem.FormEventHandler<T> | undefined;
onBeforeInput?: EventSystem.FormEventHandler<T> | undefined;
onBeforeInputCapture?: EventSystem.FormEventHandler<T> | undefined;
onInput?: EventSystem.FormEventHandler<T> | undefined;
onInputCapture?: EventSystem.FormEventHandler<T> | undefined;
onReset?: EventSystem.FormEventHandler<T> | undefined;
onResetCapture?: EventSystem.FormEventHandler<T> | undefined;
onSubmit?: EventSystem.FormEventHandler<T> | undefined;
onSubmitCapture?: EventSystem.FormEventHandler<T> | undefined;
onInvalid?: EventSystem.FormEventHandler<T> | undefined;
onInvalidCapture?: EventSystem.FormEventHandler<T> | undefined;
// Image Events
onLoad?: EventSystem.MsomEventHandler<T> | undefined;
onLoadCapture?: EventSystem.MsomEventHandler<T> | undefined;
onError?: EventSystem.MsomEventHandler<T> | undefined; // also a Media Event
onErrorCapture?: EventSystem.MsomEventHandler<T> | undefined; // also a Media Event
// Keyboard Events
onKeyDown?: EventSystem.KeyboardEventHandler<T> | undefined;
onKeyDownCapture?: EventSystem.KeyboardEventHandler<T> | undefined;
/** @deprecated Use `onKeyUp` or `onKeyDown` instead */
onKeyPress?: EventSystem.KeyboardEventHandler<T> | undefined;
/** @deprecated Use `onKeyUpCapture` or `onKeyDownCapture` instead */
onKeyPressCapture?: EventSystem.KeyboardEventHandler<T> | undefined;
onKeyUp?: EventSystem.KeyboardEventHandler<T> | undefined;
onKeyUpCapture?: EventSystem.KeyboardEventHandler<T> | undefined;
// Media Events
onAbort?: EventSystem.MsomEventHandler<T> | undefined;
onAbortCapture?: EventSystem.MsomEventHandler<T> | undefined;
onCanPlay?: EventSystem.MsomEventHandler<T> | undefined;
onCanPlayCapture?: EventSystem.MsomEventHandler<T> | undefined;
onCanPlayThrough?: EventSystem.MsomEventHandler<T> | undefined;
onCanPlayThroughCapture?: EventSystem.MsomEventHandler<T> | undefined;
onDurationChange?: EventSystem.MsomEventHandler<T> | undefined;
onDurationChangeCapture?: EventSystem.MsomEventHandler<T> | undefined;
onEmptied?: EventSystem.MsomEventHandler<T> | undefined;
onEmptiedCapture?: EventSystem.MsomEventHandler<T> | undefined;
onEncrypted?: EventSystem.MsomEventHandler<T> | undefined;
onEncryptedCapture?: EventSystem.MsomEventHandler<T> | undefined;
onEnded?: EventSystem.MsomEventHandler<T> | undefined;
onEndedCapture?: EventSystem.MsomEventHandler<T> | undefined;
onLoadedData?: EventSystem.MsomEventHandler<T> | undefined;
onLoadedDataCapture?: EventSystem.MsomEventHandler<T> | undefined;
onLoadedMetadata?: EventSystem.MsomEventHandler<T> | undefined;
onLoadedMetadataCapture?: EventSystem.MsomEventHandler<T> | undefined;
onLoadStart?: EventSystem.MsomEventHandler<T> | undefined;
onLoadStartCapture?: EventSystem.MsomEventHandler<T> | undefined;
onPause?: EventSystem.MsomEventHandler<T> | undefined;
onPauseCapture?: EventSystem.MsomEventHandler<T> | undefined;
onPlay?: EventSystem.MsomEventHandler<T> | undefined;
onPlayCapture?: EventSystem.MsomEventHandler<T> | undefined;
onPlaying?: EventSystem.MsomEventHandler<T> | undefined;
onPlayingCapture?: EventSystem.MsomEventHandler<T> | undefined;
onProgress?: EventSystem.MsomEventHandler<T> | undefined;
onProgressCapture?: EventSystem.MsomEventHandler<T> | undefined;
onRateChange?: EventSystem.MsomEventHandler<T> | undefined;
onRateChangeCapture?: EventSystem.MsomEventHandler<T> | undefined;
onResize?: EventSystem.MsomEventHandler<T> | undefined;
onResizeCapture?: EventSystem.MsomEventHandler<T> | undefined;
onSeeked?: EventSystem.MsomEventHandler<T> | undefined;
onSeekedCapture?: EventSystem.MsomEventHandler<T> | undefined;
onSeeking?: EventSystem.MsomEventHandler<T> | undefined;
onSeekingCapture?: EventSystem.MsomEventHandler<T> | undefined;
onStalled?: EventSystem.MsomEventHandler<T> | undefined;
onStalledCapture?: EventSystem.MsomEventHandler<T> | undefined;
onSuspend?: EventSystem.MsomEventHandler<T> | undefined;
onSuspendCapture?: EventSystem.MsomEventHandler<T> | undefined;
onTimeUpdate?: EventSystem.MsomEventHandler<T> | undefined;
onTimeUpdateCapture?: EventSystem.MsomEventHandler<T> | undefined;
onVolumeChange?: EventSystem.MsomEventHandler<T> | undefined;
onVolumeChangeCapture?: EventSystem.MsomEventHandler<T> | undefined;
onWaiting?: EventSystem.MsomEventHandler<T> | undefined;
onWaitingCapture?: EventSystem.MsomEventHandler<T> | undefined;
// MouseEvents
onAuxClick?: EventSystem.MouseEventHandler<T> | undefined;
onAuxClickCapture?: EventSystem.MouseEventHandler<T> | undefined;
onClick?: EventSystem.MouseEventHandler<T> | undefined;
onClickCapture?: EventSystem.MouseEventHandler<T> | undefined;
onContextMenu?: EventSystem.MouseEventHandler<T> | undefined;
onContextMenuCapture?: EventSystem.MouseEventHandler<T> | undefined;
onDoubleClick?: EventSystem.MouseEventHandler<T> | undefined;
onDoubleClickCapture?: EventSystem.MouseEventHandler<T> | undefined;
onDrag?: EventSystem.DragEventHandler<T> | undefined;
onDragCapture?: EventSystem.DragEventHandler<T> | undefined;
onDragEnd?: EventSystem.DragEventHandler<T> | undefined;
onDragEndCapture?: EventSystem.DragEventHandler<T> | undefined;
onDragEnter?: EventSystem.DragEventHandler<T> | undefined;
onDragEnterCapture?: EventSystem.DragEventHandler<T> | undefined;
onDragExit?: EventSystem.DragEventHandler<T> | undefined;
onDragExitCapture?: EventSystem.DragEventHandler<T> | undefined;
onDragLeave?: EventSystem.DragEventHandler<T> | undefined;
onDragLeaveCapture?: EventSystem.DragEventHandler<T> | undefined;
onDragOver?: EventSystem.DragEventHandler<T> | undefined;
onDragOverCapture?: EventSystem.DragEventHandler<T> | undefined;
onDragStart?: EventSystem.DragEventHandler<T> | undefined;
onDragStartCapture?: EventSystem.DragEventHandler<T> | undefined;
onDrop?: EventSystem.DragEventHandler<T> | undefined;
onDropCapture?: EventSystem.DragEventHandler<T> | undefined;
onMouseDown?: EventSystem.MouseEventHandler<T> | undefined;
onMouseDownCapture?: EventSystem.MouseEventHandler<T> | undefined;
onMouseEnter?: EventSystem.MouseEventHandler<T> | undefined;
onMouseLeave?: EventSystem.MouseEventHandler<T> | undefined;
onMouseMove?: EventSystem.MouseEventHandler<T> | undefined;
onMouseMoveCapture?: EventSystem.MouseEventHandler<T> | undefined;
onMouseOut?: EventSystem.MouseEventHandler<T> | undefined;
onMouseOutCapture?: EventSystem.MouseEventHandler<T> | undefined;
onMouseOver?: EventSystem.MouseEventHandler<T> | undefined;
onMouseOverCapture?: EventSystem.MouseEventHandler<T> | undefined;
onMouseUp?: EventSystem.MouseEventHandler<T> | undefined;
onMouseUpCapture?: EventSystem.MouseEventHandler<T> | undefined;
// Selection Events
onSelect?: EventSystem.MsomEventHandler<T> | undefined;
onSelectCapture?: EventSystem.MsomEventHandler<T> | undefined;
// Touch Events
onTouchCancel?: EventSystem.TouchEventHandler<T> | undefined;
onTouchCancelCapture?: EventSystem.TouchEventHandler<T> | undefined;
onTouchEnd?: EventSystem.TouchEventHandler<T> | undefined;
onTouchEndCapture?: EventSystem.TouchEventHandler<T> | undefined;
onTouchMove?: EventSystem.TouchEventHandler<T> | undefined;
onTouchMoveCapture?: EventSystem.TouchEventHandler<T> | undefined;
onTouchStart?: EventSystem.TouchEventHandler<T> | undefined;
onTouchStartCapture?: EventSystem.TouchEventHandler<T> | undefined;
// Pointer Events
onPointerDown?: EventSystem.PointerEventHandler<T> | undefined;
onPointerDownCapture?: EventSystem.PointerEventHandler<T> | undefined;
onPointerMove?: EventSystem.PointerEventHandler<T> | undefined;
onPointerMoveCapture?: EventSystem.PointerEventHandler<T> | undefined;
onPointerUp?: EventSystem.PointerEventHandler<T> | undefined;
onPointerUpCapture?: EventSystem.PointerEventHandler<T> | undefined;
onPointerCancel?: EventSystem.PointerEventHandler<T> | undefined;
onPointerCancelCapture?: EventSystem.PointerEventHandler<T> | undefined;
onPointerEnter?: EventSystem.PointerEventHandler<T> | undefined;
onPointerLeave?: EventSystem.PointerEventHandler<T> | undefined;
onPointerOver?: EventSystem.PointerEventHandler<T> | undefined;
onPointerOverCapture?: EventSystem.PointerEventHandler<T> | undefined;
onPointerOut?: EventSystem.PointerEventHandler<T> | undefined;
onPointerOutCapture?: EventSystem.PointerEventHandler<T> | undefined;
onGotPointerCapture?: EventSystem.PointerEventHandler<T> | undefined;
onGotPointerCaptureCapture?:
| EventSystem.PointerEventHandler<T>
| undefined;
onLostPointerCapture?: EventSystem.PointerEventHandler<T> | undefined;
onLostPointerCaptureCapture?:
| EventSystem.PointerEventHandler<T>
| undefined;
// UI Events
onScroll?: EventSystem.UIEventHandler<T> | undefined;
onScrollCapture?: EventSystem.UIEventHandler<T> | undefined;
// Wheel Events
onWheel?: EventSystem.WheelEventHandler<T> | undefined;
onWheelCapture?: EventSystem.WheelEventHandler<T> | undefined;
// Animation Events
onAnimationStart?: EventSystem.AnimationEventHandler<T> | undefined;
onAnimationStartCapture?:
| EventSystem.AnimationEventHandler<T>
| undefined;
onAnimationEnd?: EventSystem.AnimationEventHandler<T> | undefined;
onAnimationEndCapture?: EventSystem.AnimationEventHandler<T> | undefined;
onAnimationIteration?: EventSystem.AnimationEventHandler<T> | undefined;
onAnimationIterationCapture?:
| EventSystem.AnimationEventHandler<T>
| undefined;
// Toggle Events
onToggle?: EventSystem.ToggleEventHandler<T> | undefined;
onBeforeToggle?: EventSystem.ToggleEventHandler<T> | undefined;
// Transition Events
onTransitionCancel?: EventSystem.TransitionEventHandler<T> | undefined;
onTransitionCancelCapture?:
| EventSystem.TransitionEventHandler<T>
| undefined;
onTransitionEnd?: EventSystem.TransitionEventHandler<T> | undefined;
onTransitionEndCapture?:
| EventSystem.TransitionEventHandler<T>
| undefined;
onTransitionRun?: EventSystem.TransitionEventHandler<T> | undefined;
onTransitionRunCapture?:
| EventSystem.TransitionEventHandler<T>
| undefined;
onTransitionStart?: EventSystem.TransitionEventHandler<T> | undefined;
onTransitionStartCapture?:
| EventSystem.TransitionEventHandler<T>
| undefined;
}
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;
}
interface Attributes {
$key?: string | number | bigint | null | undefined;
}
interface RefAttributes<T> extends Attributes {
$ref?: IRef<T> | IRef<T>[];
}
interface ClassAttributes<T> extends RefAttributes<T> {}
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<T> extends AriaAttributes, DOMEventAttibuties<T> {
// React-specific Attributes
defaultChecked?: boolean | undefined;
defaultValue?: string | number | readonly string[] | undefined;
suppressContentEditableWarning?: boolean | undefined;
suppressHydrationWarning?: boolean | undefined;
// Standard HTML Attributes
accessKey?: string | undefined;
autoCapitalize?:
| "off"
| "none"
| "on"
| "sentences"
| "words"
| "characters"
| undefined
| (string & {});
autoFocus?: boolean | undefined;
class?: ClassType | undefined;
className?: string | undefined;
contentEditable?: Booleanish | "inherit" | "plaintext-only" | undefined;
contextMenu?: string | undefined;
dir?: string | undefined;
draggable?: Booleanish | undefined;
enterKeyHint?:
| "enter"
| "done"
| "go"
| "next"
| "previous"
| "search"
| "send"
| undefined;
hidden?: boolean | undefined;
id?: string | undefined;
lang?: string | undefined;
nonce?: string | undefined;
slot?: string | undefined;
spellCheck?: Booleanish | undefined;
style?: CSSStyle | undefined;
tabIndex?: number | undefined;
title?: string | undefined;
translate?: "yes" | "no" | undefined;
// Unknown
radioGroup?: string | undefined; // <command>, <menuitem>
// 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
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;
// Popover API
popover?: "" | "auto" | "manual" | undefined;
popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
popoverTarget?: string | undefined;
// Living Standard
/**
* @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/inert
*/
inert?: boolean | undefined;
/**
* 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;
}
interface SVGAttributes<T> extends AriaAttributes, DOMEventAttibuties<T> {
// 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?: CSSStyle | 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;