rahisi
Version:
UI library for prototyping ideas for reactive programming.
1,163 lines (1,054 loc) • 96.6 kB
TypeScript
// Type defs modified from React as below
// Type definitions for React 16.4
// Project: http://facebook.github.io/react/
// Definitions by: Asana <https://asana.com>
// AssureSign <http://www.assuresign.com>
// Microsoft <https://microsoft.com>
// John Reilly <https://github.com/johnnyreilly>
// Benoit Benezech <https://github.com/bbenezech>
// Patricio Zavolinsky <https://github.com/pzavolinsky>
// Digiguru <https://github.com/digiguru>
// Eric Anderson <https://github.com/ericanderson>
// Albert Kurniawan <https://github.com/morcerf>
// Tanguy Krotoff <https://github.com/tkrotoff>
// Dovydas Navickas <https://github.com/DovydasNavickas>
// Stéphane Goetz <https://github.com/onigoetz>
// Josh Rutherford <https://github.com/theruther4d>
// Guilherme Hübner <https://github.com/guilhermehubner>
// Ferdy Budhidharma <https://github.com/ferdaber>
// Johann Rakotoharisoa <https://github.com/jrakotoharisoa>
// Olivier Pascal <https://github.com/pascaloliv>
// Martin Hochel <https://github.com/hotell>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.6
import * as CSS from 'csstype';
// tslint:disable-next-line:export-just-namespace
export = React;
export as namespace React;
declare namespace React {
//
// React Elements
// ----------------------------------------------------------------------
interface Attributes { }
interface ClassAttributes<T> { }
interface ReactElement<P> {
props: P;
mount(parent: HTMLElement |
SVGElement |
DocumentFragment): HTMLElement | SVGElement | Text;
render(parent: HTMLElement | SVGElement | DocumentFragment,
watch: never,
isSvg: never): HTMLElement | SVGElement | Text;
}
// string fallback for custom web-components
interface DOMElement<P extends HTMLAttributes<T> | SVGAttributes<T>, T extends Element> extends ReactElement<P> {
type: string;
}
// ReactHTML for ReactHTMLElement
// tslint:disable-next-line:no-empty-interface
// interface ReactHTMLElement<T extends HTMLElement> extends DetailedReactHTMLElement<AllHTMLAttributes<T>, T> { }
interface DetailedReactHTMLElement<P extends HTMLAttributes<T>, T extends HTMLElement> extends DOMElement<P, T> {
type: keyof ReactHTML;
}
// ReactSVG for ReactSVGElement
interface ReactSVGElement extends DOMElement<SVGAttributes<SVGElement>, SVGElement> {
type: keyof ReactSVG;
}
type DOMFactory<P extends DOMAttributes<T>, T extends Element> =
(props?: ClassAttributes<T> & P | null, ...children: ReactNode[]) => DOMElement<P, T>;
// tslint:disable-next-line:no-empty-interface
// interface HTMLFactory<T extends HTMLElement> extends DetailedHTMLFactory<AllHTMLAttributes<T>, T> {}
interface DetailedHTMLFactory<P extends HTMLAttributes<T>, T extends HTMLElement> extends DOMFactory<P, T> {
(props?: ClassAttributes<T> & P | null, ...children: ReactNode[]): DetailedReactHTMLElement<P, T>;
}
interface SVGFactory extends DOMFactory<SVGAttributes<SVGElement>, SVGElement> {
(props?: ClassAttributes<SVGElement> & SVGAttributes<SVGElement> | null, ...children: ReactNode[]): ReactSVGElement;
}
//
// React Nodes
// http://facebook.github.io/react/docs/glossary.html
// ----------------------------------------------------------------------
type ReactText = string | number;
type ReactChild = ReactElement<any> | ReactText;
interface ReactNodeArray extends Array<ReactNode> { }
type ReactFragment = {} | ReactNodeArray;
type ReactNode = ReactChild | ReactFragment | string | number | boolean | null | undefined;
//
// Event System
// ----------------------------------------------------------------------
// _ | () => _ is wrong
interface RealEvent<T = Element> {
readonly bubbles: boolean;
cancelBubble: boolean;
readonly cancelable: boolean;
readonly composed: boolean;
readonly currentTarget: EventTarget & T;
readonly defaultPrevented: boolean;
readonly eventPhase: number;
readonly isTrusted: boolean;
returnValue: boolean;
readonly target: EventTarget | null;
readonly timeStamp: number;
readonly type: string;
preventDefault(): void;
stopImmediatePropagation(): void;
stopPropagation(): void;
}
interface ClipboardEvent<T = Element> extends RealEvent<T> {
clipboardData: DataTransfer;
}
interface CompositionEvent<T = Element> extends RealEvent<T> {
data: string;
}
interface DragEvent<T = Element> extends MouseEvent<T> {
dataTransfer: DataTransfer;
}
interface PointerEvent<T = Element> extends MouseEvent<T> {
pointerId: number;
pressure: number;
tiltX: number;
tiltY: number;
width: number;
height: number;
pointerType: 'mouse' | 'pen' | 'touch';
isPrimary: boolean;
}
interface FocusEvent<T = Element> extends RealEvent<T> {
relatedTarget: EventTarget;
target: EventTarget & T;
}
// tslint:disable-next-line:no-empty-interface
interface FormEvent<T = Element> extends RealEvent<T> {
}
interface InvalidEvent<T = Element> extends RealEvent<T> {
target: EventTarget & T;
}
interface ChangeEvent<T = Element> extends RealEvent<T> {
target: EventTarget & T;
}
interface KeyboardEvent<T = Element> extends RealEvent<T> {
altKey: boolean;
charCode: 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: string): boolean;
/**
* See the [DOM Level 3 Events spec](https://www.w3.org/TR/uievents-key/#named-key-attribute-values). for possible values
*/
key: string;
keyCode: number;
locale: string;
location: number;
metaKey: boolean;
repeat: boolean;
shiftKey: boolean;
which: number;
}
interface MouseEvent<T = Element> extends RealEvent<T> {
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: string): boolean;
metaKey: boolean;
pageX: number;
pageY: number;
relatedTarget: EventTarget;
screenX: number;
screenY: number;
shiftKey: boolean;
}
interface TouchEvent<T = Element> extends RealEvent<T> {
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: string): boolean;
metaKey: boolean;
shiftKey: boolean;
targetTouches: TouchList;
touches: TouchList;
}
interface UIEvent<T = Element> extends RealEvent<T> {
detail: number;
view: AbstractView;
}
interface WheelEvent<T = Element> extends MouseEvent<T> {
deltaMode: number;
deltaX: number;
deltaY: number;
deltaZ: number;
}
interface AnimationEvent<T = Element> extends RealEvent<T> {
animationName: string;
elapsedTime: number;
pseudoElement: string;
}
interface TransitionEvent<T = Element> extends RealEvent<T> {
elapsedTime: number;
propertyName: string;
pseudoElement: string;
}
//
// Event Handler Types
// ----------------------------------------------------------------------
type EventHandler<E extends RealEvent<any>> = { bivarianceHack(event: E): void }["bivarianceHack"];
type ReactEventHandler<T = Element> = EventHandler<RealEvent<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 TransitionEventHandler<T = Element> = EventHandler<TransitionEvent<T>>;
// interface HTMLProps<T> extends AllHTMLAttributes<T>, ClassAttributes<T> {
// }
type DetailedHTMLProps<E extends HTMLAttributes<T>, T> = ClassAttributes<T> & E;
interface SVGProps<T> extends SVGAttributes<T>, ClassAttributes<T> {
}
interface DOMAttributes<T> {
children?: ReactNode;
// dangerouslySetInnerHTML?: {
// __html: string | (() => string);
// };
// Clipboard Events
onCopy?: ClipboardEventHandler<T>;
onCopyCapture?: ClipboardEventHandler<T>;
onCut?: ClipboardEventHandler<T>;
onCutCapture?: ClipboardEventHandler<T>;
onPaste?: ClipboardEventHandler<T>;
onPasteCapture?: ClipboardEventHandler<T>;
// Composition Events
onCompositionEnd?: CompositionEventHandler<T>;
onCompositionEndCapture?: CompositionEventHandler<T>;
onCompositionStart?: CompositionEventHandler<T>;
onCompositionStartCapture?: CompositionEventHandler<T>;
onCompositionUpdate?: CompositionEventHandler<T>;
onCompositionUpdateCapture?: CompositionEventHandler<T>;
// Focus Events
onFocus?: FocusEventHandler<T>;
onFocusCapture?: FocusEventHandler<T>;
onBlur?: FocusEventHandler<T>;
onBlurCapture?: FocusEventHandler<T>;
// Form Events
onChange?: FormEventHandler<T>;
onChangeCapture?: FormEventHandler<T>;
onInput?: FormEventHandler<T>;
onInputCapture?: FormEventHandler<T>;
onReset?: FormEventHandler<T>;
onResetCapture?: FormEventHandler<T>;
onSubmit?: FormEventHandler<T>;
onSubmitCapture?: FormEventHandler<T>;
onInvalid?: FormEventHandler<T>;
onInvalidCapture?: FormEventHandler<T>;
// Image Events
onLoad?: ReactEventHandler<T>;
onLoadCapture?: ReactEventHandler<T>;
onError?: ReactEventHandler<T>; // also a Media Event
onErrorCapture?: ReactEventHandler<T>; // also a Media Event
// Keyboard Events
onKeyDown?: KeyboardEventHandler<T>;
onKeyDownCapture?: KeyboardEventHandler<T>;
onKeyPress?: KeyboardEventHandler<T>;
onKeyPressCapture?: KeyboardEventHandler<T>;
onKeyUp?: KeyboardEventHandler<T>;
onKeyUpCapture?: KeyboardEventHandler<T>;
// Media Events
onAbort?: ReactEventHandler<T>;
onAbortCapture?: ReactEventHandler<T>;
onCanPlay?: ReactEventHandler<T>;
onCanPlayCapture?: ReactEventHandler<T>;
onCanPlayThrough?: ReactEventHandler<T>;
onCanPlayThroughCapture?: ReactEventHandler<T>;
onDurationChange?: ReactEventHandler<T>;
onDurationChangeCapture?: ReactEventHandler<T>;
onEmptied?: ReactEventHandler<T>;
onEmptiedCapture?: ReactEventHandler<T>;
onEncrypted?: ReactEventHandler<T>;
onEncryptedCapture?: ReactEventHandler<T>;
onEnded?: ReactEventHandler<T>;
onEndedCapture?: ReactEventHandler<T>;
onLoadedData?: ReactEventHandler<T>;
onLoadedDataCapture?: ReactEventHandler<T>;
onLoadedMetadata?: ReactEventHandler<T>;
onLoadedMetadataCapture?: ReactEventHandler<T>;
onLoadStart?: ReactEventHandler<T>;
onLoadStartCapture?: ReactEventHandler<T>;
onPause?: ReactEventHandler<T>;
onPauseCapture?: ReactEventHandler<T>;
onPlay?: ReactEventHandler<T>;
onPlayCapture?: ReactEventHandler<T>;
onPlaying?: ReactEventHandler<T>;
onPlayingCapture?: ReactEventHandler<T>;
onProgress?: ReactEventHandler<T>;
onProgressCapture?: ReactEventHandler<T>;
onRateChange?: ReactEventHandler<T>;
onRateChangeCapture?: ReactEventHandler<T>;
onSeeked?: ReactEventHandler<T>;
onSeekedCapture?: ReactEventHandler<T>;
onSeeking?: ReactEventHandler<T>;
onSeekingCapture?: ReactEventHandler<T>;
onStalled?: ReactEventHandler<T>;
onStalledCapture?: ReactEventHandler<T>;
onSuspend?: ReactEventHandler<T>;
onSuspendCapture?: ReactEventHandler<T>;
onTimeUpdate?: ReactEventHandler<T>;
onTimeUpdateCapture?: ReactEventHandler<T>;
onVolumeChange?: ReactEventHandler<T>;
onVolumeChangeCapture?: ReactEventHandler<T>;
onWaiting?: ReactEventHandler<T>;
onWaitingCapture?: ReactEventHandler<T>;
// MouseEvents
onClick?: MouseEventHandler<T>;
onClickCapture?: MouseEventHandler<T>;
onContextMenu?: MouseEventHandler<T>;
onContextMenuCapture?: MouseEventHandler<T>;
onDoubleClick?: MouseEventHandler<T>;
onDoubleClickCapture?: MouseEventHandler<T>;
onDrag?: DragEventHandler<T>;
onDragCapture?: DragEventHandler<T>;
onDragEnd?: DragEventHandler<T>;
onDragEndCapture?: DragEventHandler<T>;
onDragEnter?: DragEventHandler<T>;
onDragEnterCapture?: DragEventHandler<T>;
onDragExit?: DragEventHandler<T>;
onDragExitCapture?: DragEventHandler<T>;
onDragLeave?: DragEventHandler<T>;
onDragLeaveCapture?: DragEventHandler<T>;
onDragOver?: DragEventHandler<T>;
onDragOverCapture?: DragEventHandler<T>;
onDragStart?: DragEventHandler<T>;
onDragStartCapture?: DragEventHandler<T>;
onDrop?: DragEventHandler<T>;
onDropCapture?: DragEventHandler<T>;
onMouseDown?: MouseEventHandler<T>;
onMouseDownCapture?: MouseEventHandler<T>;
onMouseEnter?: MouseEventHandler<T>;
onMouseLeave?: MouseEventHandler<T>;
onMouseMove?: MouseEventHandler<T>;
onMouseMoveCapture?: MouseEventHandler<T>;
onMouseOut?: MouseEventHandler<T>;
onMouseOutCapture?: MouseEventHandler<T>;
onMouseOver?: MouseEventHandler<T>;
onMouseOverCapture?: MouseEventHandler<T>;
onMouseUp?: MouseEventHandler<T>;
onMouseUpCapture?: MouseEventHandler<T>;
// Selection Events
onSelect?: ReactEventHandler<T>;
onSelectCapture?: ReactEventHandler<T>;
// Touch Events
onTouchCancel?: TouchEventHandler<T>;
onTouchCancelCapture?: TouchEventHandler<T>;
onTouchEnd?: TouchEventHandler<T>;
onTouchEndCapture?: TouchEventHandler<T>;
onTouchMove?: TouchEventHandler<T>;
onTouchMoveCapture?: TouchEventHandler<T>;
onTouchStart?: TouchEventHandler<T>;
onTouchStartCapture?: TouchEventHandler<T>;
// Pointer Events
onPointerDown?: PointerEventHandler<T>;
onPointerDownCapture?: PointerEventHandler<T>;
onPointerMove?: PointerEventHandler<T>;
onPointerMoveCapture?: PointerEventHandler<T>;
onPointerUp?: PointerEventHandler<T>;
onPointerUpCapture?: PointerEventHandler<T>;
onPointerCancel?: PointerEventHandler<T>;
onPointerCancelCapture?: PointerEventHandler<T>;
onPointerEnter?: PointerEventHandler<T>;
onPointerEnterCapture?: PointerEventHandler<T>;
onPointerLeave?: PointerEventHandler<T>;
onPointerLeaveCapture?: PointerEventHandler<T>;
onPointerOver?: PointerEventHandler<T>;
onPointerOverCapture?: PointerEventHandler<T>;
onPointerOut?: PointerEventHandler<T>;
onPointerOutCapture?: PointerEventHandler<T>;
onGotPointerCapture?: PointerEventHandler<T>;
onGotPointerCaptureCapture?: PointerEventHandler<T>;
onLostPointerCapture?: PointerEventHandler<T>;
onLostPointerCaptureCapture?: PointerEventHandler<T>;
// UI Events
onScroll?: UIEventHandler<T>;
onScrollCapture?: UIEventHandler<T>;
// Wheel Events
onWheel?: WheelEventHandler<T>;
onWheelCapture?: WheelEventHandler<T>;
// Animation Events
onAnimationStart?: AnimationEventHandler<T>;
onAnimationStartCapture?: AnimationEventHandler<T>;
onAnimationEnd?: AnimationEventHandler<T>;
onAnimationEndCapture?: AnimationEventHandler<T>;
onAnimationIteration?: AnimationEventHandler<T>;
onAnimationIterationCapture?: AnimationEventHandler<T>;
// Transition Events
onTransitionEnd?: TransitionEventHandler<T>;
onTransitionEndCapture?: TransitionEventHandler<T>;
}
export interface CSSProperties extends CSS.Properties<string | number> {
/**
* The index signature was removed to enable closed typing for style
* using CSSType. You're able to use type assertion or module augmentation
* to add properties or an index signature of your own.
*
* For examples and more information, visit:
* https://github.com/frenic/csstype#what-should-i-do-when-i-get-type-errors
*/
}
interface HTMLAttributes<T> extends DOMAttributes<T> {
// React-specific Attributes
// defaultChecked?: boolean | (() => boolean);
// defaultValue?: string | string[] | (() => string) | (() => string[]);
// suppressContentEditableWarning?: boolean | (() => boolean);
// suppressHydrationWarning?: boolean | (() => boolean);
// extension
onMounted?: ((this: HTMLElement, ev: RealEvent<T>) => any);
onUnmounted?: ((this: HTMLElement, ev: RealEvent<T>) => any);
focus?: boolean | (() => boolean);
// Standard HTML Attributes
accessKey?: string | (() => string);
className?: string | (() => string);
contentEditable?: boolean | (() => boolean);
contextMenu?: string | (() => string);
dir?: string | (() => string);
draggable?: boolean | (() => boolean);
hidden?: boolean | (() => boolean);
id?: string | (() => string);
lang?: string | (() => string);
placeholder?: string | (() => string);
slot?: string | (() => string);
spellCheck?: boolean | (() => boolean);
style?: CSSProperties;
tabIndex?: number | (() => number);
title?: string | (() => string);
// Unknown
inputMode?: string | (() => string);
is?: string | (() => string);
radioGroup?: string | (() => string); // <command>, <menuitem>
// WAI-ARIA
role?: string | (() => string);
// RDFa Attributes
about?: string | (() => string);
datatype?: string | (() => string);
inlist?: any;
prefix?: string | (() => string);
property?: string | (() => string);
resource?: string | (() => string);
typeof?: string | (() => string);
vocab?: string | (() => string);
// Non-standard Attributes
autoCapitalize?: string | (() => string);
autoCorrect?: string | (() => string);
autoSave?: string | (() => string);
color?: string | (() => string);
itemProp?: string | (() => string);
itemScope?: boolean | (() => boolean);
itemType?: string | (() => string);
itemID?: string | (() => string);
itemRef?: string | (() => string);
results?: number | (() => number);
security?: string | (() => string);
unselectable?: boolean | (() => boolean);
}
// All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/
interface HTMLAttributes<T> extends DOMAttributes<T> {
/** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */
'aria-activedescendant'?: string | (() => string);
/** 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'?: boolean | 'false' | 'true';
/**
* 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';
/** 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. */
'aria-busy'?: boolean | 'false' | 'true';
/**
* Indicates the current "checked" state of checkboxes, radio buttons, and other widgets.
* @see aria-pressed @see aria-selected.
*/
'aria-checked'?: boolean | 'false' | 'mixed' | 'true';
/**
* Defines the total number of columns in a table, grid, or treegrid.
* @see aria-colindex.
*/
'aria-colcount'?: number | (() => number);
/**
* 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 | (() => number);
/**
* 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 | (() => number);
/**
* Identifies the element (or elements) whose contents or presence are controlled by the current element.
* @see aria-owns.
*/
'aria-controls'?: string | (() => string);
/** 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';
/**
* Identifies the element (or elements) that describes the object.
* @see aria-labelledby
*/
'aria-describedby'?: string | (() => string);
/**
* Identifies the element that provides a detailed, extended description for the object.
* @see aria-describedby.
*/
'aria-details'?: string | (() => string);
/**
* Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.
* @see aria-hidden @see aria-readonly.
*/
'aria-disabled'?: boolean | 'false' | 'true';
/**
* 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';
/**
* Identifies the element that provides an error message for the object.
* @see aria-invalid @see aria-describedby.
*/
'aria-errormessage'?: string | (() => string);
/** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */
'aria-expanded'?: boolean | 'false' | 'true';
/**
* 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 | (() => string);
/**
* Indicates an element's "grabbed" state in a drag-and-drop operation.
* @deprecated in ARIA 1.1
*/
'aria-grabbed'?: boolean | 'false' | 'true';
/** 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';
/**
* Indicates whether the element is exposed to an accessibility API.
* @see aria-disabled.
*/
'aria-hidden'?: boolean | 'false' | 'true';
/**
* Indicates the entered value does not conform to the format expected by the application.
* @see aria-errormessage.
*/
'aria-invalid'?: boolean | 'false' | 'true' | 'grammar' | 'spelling';
/** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */
'aria-keyshortcuts'?: string | (() => string);
/**
* Defines a string value that labels the current element.
* @see aria-labelledby.
*/
'aria-label'?: string | (() => string);
/**
* Identifies the element (or elements) that labels the current element.
* @see aria-describedby.
*/
'aria-labelledby'?: string | (() => string);
/** Defines the hierarchical level of an element within a structure. */
'aria-level'?: number | (() => number);
/** 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';
/** Indicates whether an element is modal when displayed. */
'aria-modal'?: boolean | 'false' | 'true';
/** Indicates whether a text box accepts multiple lines of input or only a single line. */
'aria-multiline'?: boolean | 'false' | 'true';
/** Indicates that the user may select more than one item from the current selectable descendants. */
'aria-multiselectable'?: boolean | 'false' | 'true';
/** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */
'aria-orientation'?: 'horizontal' | 'vertical';
/**
* 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 | (() => string);
/**
* 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 | (() => string);
/**
* 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 | (() => number);
/**
* Indicates the current "pressed" state of toggle buttons.
* @see aria-checked @see aria-selected.
*/
'aria-pressed'?: boolean | 'false' | 'mixed' | 'true';
/**
* Indicates that the element is not editable, but is otherwise operable.
* @see aria-disabled.
*/
'aria-readonly'?: boolean | 'false' | 'true';
/**
* 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 text' | 'all' | 'removals' | 'text';
/** Indicates that user input is required on the element before a form may be submitted. */
'aria-required'?: boolean | 'false' | 'true';
/** Defines a human-readable, author-localized description for the role of an element. */
'aria-roledescription'?: string | (() => string);
/**
* Defines the total number of rows in a table, grid, or treegrid.
* @see aria-rowindex.
*/
'aria-rowcount'?: number | (() => number);
/**
* 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 | (() => number);
/**
* 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 | (() => number);
/**
* Indicates the current "selected" state of various widgets.
* @see aria-checked @see aria-pressed.
*/
'aria-selected'?: boolean | 'false' | 'true';
/**
* 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 | (() => number);
/** Indicates if items in a table or grid are sorted in ascending or descending order. */
'aria-sort'?: 'none' | 'ascending' | 'descending' | 'other';
/** Defines the maximum allowed value for a range widget. */
'aria-valuemax'?: number | (() => number);
/** Defines the minimum allowed value for a range widget. */
'aria-valuemin'?: number | (() => number);
/**
* Defines the current value for a range widget.
* @see aria-valuetext.
*/
'aria-valuenow'?: number | (() => number);
/** Defines the human readable text alternative of aria-valuenow for a range widget. */
'aria-valuetext'?: string | (() => string);
}
// interface AllHTMLAttributes<T> extends HTMLAttributes<T> {
// // Standard HTML Attributes
// accept?: string | (() => string);
// acceptCharset?: string | (() => string);
// action?: string | (() => string);
// allowFullScreen?: boolean | (() => boolean);
// allowTransparency?: boolean | (() => boolean);
// alt?: string | (() => string);
// as?: string | (() => string);
// async?: boolean | (() => boolean);
// autoComplete?: string | (() => string);
// autoFocus?: boolean | (() => boolean);
// autoPlay?: boolean | (() => boolean);
// capture?: boolean | string;
// cellPadding?: number | string | (() => number | string);
// cellSpacing?: number | string | (() => number | string);
// charSet?: string | (() => string);
// challenge?: string | (() => string);
// checked?: boolean | (() => boolean);
// cite?: string | (() => string);
// classID?: string | (() => string);
// cols?: number | (() => number);
// colSpan?: number | (() => number);
// content?: string | (() => string);
// controls?: boolean | (() => boolean);
// coords?: string | (() => string);
// crossOrigin?: string | (() => string);
// data?: string | (() => string);
// dateTime?: string | (() => string);
// default?: boolean | (() => boolean);
// defer?: boolean | (() => boolean);
// disabled?: boolean | (() => boolean);
// download?: any;
// encType?: string | (() => string);
// form?: string | (() => string);
// formAction?: string | (() => string);
// formEncType?: string | (() => string);
// formMethod?: string | (() => string);
// formNoValidate?: boolean | (() => boolean);
// formTarget?: string | (() => string);
// frameBorder?: number | string | (() => number | string);
// headers?: string | (() => string);
// height?: number | string | (() => number | string);
// high?: number | (() => number);
// href?: string | (() => string);
// hrefLang?: string | (() => string);
// htmlFor?: string | (() => string);
// httpEquiv?: string | (() => string);
// integrity?: string | (() => string);
// keyParams?: string | (() => string);
// keyType?: string | (() => string);
// kind?: string | (() => string);
// label?: string | (() => string);
// list?: string | (() => string);
// loop?: boolean | (() => boolean);
// low?: number | (() => number);
// manifest?: string | (() => string);
// marginHeight?: number | (() => number);
// marginWidth?: number | (() => number);
// max?: number | string | (() => number | string);
// maxLength?: number | (() => number);
// media?: string | (() => string);
// mediaGroup?: string | (() => string);
// method?: string | (() => string);
// min?: number | string | (() => number | string);
// minLength?: number | (() => number);
// multiple?: boolean | (() => boolean);
// muted?: boolean | (() => boolean);
// name?: string | (() => string);
// nonce?: string | (() => string);
// noValidate?: boolean | (() => boolean);
// open?: boolean | (() => boolean);
// optimum?: number | (() => number);
// pattern?: string | (() => string);
// placeholder?: string | (() => string);
// playsInline?: boolean | (() => boolean);
// poster?: string | (() => string);
// preload?: string | (() => string);
// readOnly?: boolean | (() => boolean);
// rel?: string | (() => string);
// required?: boolean | (() => boolean);
// reversed?: boolean | (() => boolean);
// rows?: number | (() => number);
// rowSpan?: number | (() => number);
// sandbox?: string | (() => string);
// scope?: string | (() => string);
// scoped?: boolean | (() => boolean);
// scrolling?: string | (() => string);
// seamless?: boolean | (() => boolean);
// selected?: boolean | (() => boolean);
// shape?: string | (() => string);
// size?: number | (() => number);
// sizes?: string | (() => string);
// span?: number | (() => number);
// src?: string | (() => string);
// srcDoc?: string | (() => string);
// srcLang?: string | (() => string);
// srcSet?: string | (() => string);
// start?: number | (() => number);
// step?: number | string | (() => number | string);
// summary?: string | (() => string);
// target?: string | (() => string);
// type?: string | (() => string);
// useMap?: string | (() => string);
// value?: string | string[] | number | (() => string | string[] | number);
// width?: number | string | (() => number | string);
// wmode?: string | (() => string);
// wrap?: string | (() => string);
// }
interface AnchorHTMLAttributes<T> extends HTMLAttributes<T> {
download?: any;
href?: string | (() => string);
hrefLang?: string | (() => string);
media?: string | (() => string);
rel?: string | (() => string);
target?: string | (() => string);
type?: string | (() => string);
}
// tslint:disable-next-line:no-empty-interface
interface AudioHTMLAttributes<T> extends MediaHTMLAttributes<T> { }
interface AreaHTMLAttributes<T> extends HTMLAttributes<T> {
alt?: string | (() => string);
coords?: string | (() => string);
download?: any;
href?: string | (() => string);
hrefLang?: string | (() => string);
media?: string | (() => string);
rel?: string | (() => string);
shape?: string | (() => string);
target?: string | (() => string);
}
interface BaseHTMLAttributes<T> extends HTMLAttributes<T> {
href?: string | (() => string);
target?: string | (() => string);
}
interface BlockquoteHTMLAttributes<T> extends HTMLAttributes<T> {
cite?: string | (() => string);
}
interface ButtonHTMLAttributes<T> extends HTMLAttributes<T> {
autoFocus?: boolean | (() => boolean);
disabled?: boolean | (() => boolean);
form?: string | (() => string);
formAction?: string | (() => string);
formEncType?: string | (() => string);
formMethod?: string | (() => string);
formNoValidate?: boolean | (() => boolean);
formTarget?: string | (() => string);
name?: string | (() => string);
type?: string | (() => string);
value?: string | string[] | number | (() => string | string[] | number);
}
interface CanvasHTMLAttributes<T> extends HTMLAttributes<T> {
height?: number | string | (() => number | string);
width?: number | string | (() => number | string);
}
interface ColHTMLAttributes<T> extends HTMLAttributes<T> {
span?: number | (() => number);
width?: number | string | (() => number | string);
}
interface ColgroupHTMLAttributes<T> extends HTMLAttributes<T> {
span?: number | (() => number);
}
interface DetailsHTMLAttributes<T> extends HTMLAttributes<T> {
open?: boolean | (() => boolean);
}
interface DelHTMLAttributes<T> extends HTMLAttributes<T> {
cite?: string | (() => string);
dateTime?: string | (() => string);
}
interface DialogHTMLAttributes<T> extends HTMLAttributes<T> {
open?: boolean | (() => boolean);
}
interface EmbedHTMLAttributes<T> extends HTMLAttributes<T> {
height?: number | string | (() => number | string);
src?: string | (() => string);
type?: string | (() => string);
width?: number | string | (() => number | string);
}
interface FieldsetHTMLAttributes<T> extends HTMLAttributes<T> {
disabled?: boolean | (() => boolean);
form?: string | (() => string);
name?: string | (() => string);
}
interface FormHTMLAttributes<T> extends HTMLAttributes<T> {
acceptCharset?: string | (() => string);
action?: string | (() => string);
autoComplete?: string | (() => string);
encType?: string | (() => string);
method?: string | (() => string);
name?: string | (() => string);
noValidate?: boolean | (() => boolean);
target?: string | (() => string);
}
interface HtmlHTMLAttributes<T> extends HTMLAttributes<T> {
manifest?: string | (() => string);
}
interface IframeHTMLAttributes<T> extends HTMLAttributes<T> {
allowFullScreen?: boolean | (() => boolean);
allowTransparency?: boolean | (() => boolean);
frameBorder?: number | string | (() => number | string);
height?: number | string | (() => number | string);
marginHeight?: number | (() => number);
marginWidth?: number | (() => number);
name?: string | (() => string);
sandbox?: string | (() => string);
scrolling?: string | (() => string);
seamless?: boolean | (() => boolean);
src?: string | (() => string);
srcDoc?: string | (() => string);
width?: number | string | (() => number | string);
}
interface ImgHTMLAttributes<T> extends HTMLAttributes<T> {
alt?: string | (() => string);
crossOrigin?: "anonymous" | "use-credentials" | "";
height?: number | string | (() => number | string);
sizes?: string | (() => string);
src?: string | (() => string);
srcSet?: string | (() => string);
useMap?: string | (() => string);
width?: number | string | (() => number | string);
}
interface InsHTMLAttributes<T> extends HTMLAttributes<T> {
cite?: string | (() => string);
dateTime?: string | (() => string);
}
interface InputHTMLAttributes<T> extends HTMLAttributes<T> {
accept?: string | (() => string);
alt?: string | (() => string);
autoComplete?: string | (() => string);
autoFocus?: boolean | (() => boolean);
capture?: boolean | string; // https://www.w3.org/TR/html-media-capture/#the-capture-attribute
checked?: boolean | (() => boolean);
crossOrigin?: string | (() => string);
disabled?: boolean | (() => boolean);
form?: string | (() => string);
formAction?: string | (() => string);
formEncType?: string | (() => string);
formMethod?: string | (() => string);
formNoValidate?: boolean | (() => boolean);
formTarget?: string | (() => string);
height?: number | string | (() => number | string);
list?: string | (() => string);
max?: number | string | (() => number | string);
maxLength?: number | (() => number);
min?: number | string | (() => number | string);
minLength?: number | (() => number);
multiple?: boolean | (() => boolean);
name?: string | (() => string);
pattern?: string | (() => string);
placeholder?: string | (() => string);
readOnly?: boolean | (() => boolean);
required?: boolean | (() => boolean);
size?: number | (() => number);
src?: string | (() => string);
step?: number | string | (() => number | string);
type?: string | (() => string);
value?: string | string[] | number | (() => string | string[] | number);
width?: number | string | (() => number | string);
onChange?: ChangeEventHandler<T>;
}
interface KeygenHTMLAttributes<T> extends HTMLAttributes<T> {
autoFocus?: boolean | (() => boolean);
challenge?: string | (() => string);
disabled?: boolean | (() => boolean);
form?: string | (() => string);
keyType?: string | (() => string);
keyParams?: string | (() => string);
name?: string | (() => string);
}
interface LabelHTMLAttributes<T> extends HTMLAttributes<T> {
form?: string | (() => string);
htmlFor?: string | (() => string);
}
interface LiHTMLAttributes<T> extends HTMLAttributes<T> {
value?: string | string[] | number | (() => string | string[] | number);
}
interface LinkHTMLAttributes<T> extends HTMLAttributes<T> {
as?: string | (() => string);
crossOrigin?: string | (() => string);
href?: string | (() => string);
hrefLang?: string | (() => string);
integrity?: string | (() => string);
media?: string | (() => string);
rel?: string | (() => string);
sizes?: string | (() => string);
type?: string | (() => string);
}
interface MapHTMLAttributes<T> extends HTMLAttributes<T> {
name?: string | (() => string);
}
interface MenuHTMLAttributes<T> extends HTMLAttributes<T> {
type?: string | (() => string);
}
interface MediaHTMLAttributes<T> extends HTMLAttributes<T> {
autoPlay?: boolean | (() => boolean);
controls?: boolean | (() => boolean);
controlsList?: string | (() => string);
crossOrigin?: string | (() => string);
loop?: boolean | (() => boolean);
mediaGroup?: string | (() => string);
muted?: boolean | (() => boolean);
playsinline?: boolean | (() => boolean);
preload?: string | (() => string);
src?: string | (() => string);
}
interface MetaHTMLAttributes<T> extends HTMLAttributes<T> {
charSet?: string | (() => string);
content?: string | (() => string);
httpEquiv?: string | (() => string);
name?: string | (() => string);
}
interface MeterHTMLAttributes<T> extends HTMLAttributes<T> {
form?: string | (() => string);
high?: number | (() => number);
low?: number | (() => number);
max?: number | string | (() => number | string);
min?: number | string | (() => number | string);
optimum?: number | (() => number);
value?: string | string[] | number | (() => string | string[] | number);
}
interface QuoteHTMLAttributes<T> extends HTMLAttributes<T> {
cite?: string | (() => string);
}
interface ObjectHTMLAttributes<T> extends HTMLAttributes<T> {
classID?: string | (() => string);
data?: string | (() => string);
form?: string | (() => string);
height?: number | string | (() => number | string);
name?: string | (() => string);
type?: string | (() => string);
useMap?: string | (() => string);
width?: number | string | (() => number | string);
wmode?: string | (() => string);
}
interface OlHTMLAttributes<T> extends HTMLAttributes<T> {
reversed?: boolean | (() => boolean);
start?: number | (() => number);
type?: '1' | 'a' | 'A' | 'i' | 'I';
}
interface OptgroupHTMLAttributes<T> extends HTMLAttributes<T> {
disabled?: boolean | (() => boolean);
label?: string | (() => string);
}
interface OptionHTMLAttributes<T> extends HTMLAttributes<T> {
disabled?: boolean | (() => boolean);
label?: string | (() => string);
selected?: boolean | (() => boolean);
value?: string | string[] | number | (() => string | string[] | number);
}
interface OutputHTMLAttributes<T> extends HTMLAttributes<T> {
form?: string | (() => string);
htmlFor?: string | (() => string);
name?: string | (() => string);
}
interface ParamHTMLAttributes<T> extends HTMLAttributes<T> {
name?: string | (() => string);
value?: string | string[] | number | (() => string | string[] | number);
}
interface ProgressHTMLAttributes<T> extends HTMLAttributes<T> {
max?: number | string | (() => number | string);
value?: string | string[] | number | (() => string | string[] | number);
}
interface ScriptHTMLAttributes<T> extends HTMLAttributes<T> {
async?: boolean | (() => boolean);
charSet?: string | (() => string);
crossOrigin?: string | (() => string);
defer?: boolean | (() => boolean);
integrity?: string | (() => string);
noModule?: boolean | (() => boolean);
nonce?: string | (() => string);
src?: string | (() => string);
type?: string | (() => string);
}
interface SelectHTMLAttributes<T> extends HTMLAttributes<T> {
autoComplete?: string | (() => string);
autoFocus?: boolean | (() => boolean);
disabled?: boolean | (() => boolean);
form?: string | (() => string);
multiple?: boolean | (() => boolean);
name?: string | (() => string);
required?: boolean | (() => boolean);
size?: number | (() => number);
value?: string | string[] | number | (() => string | string[] | number);
onChange?: ChangeEventHandler<T>;
}
interface SourceHTMLAttributes<T> extends HTMLAttributes<T> {
media?: string | (() => string);
sizes?: string | (() => string);
src?: string | (() => string);
srcSet?: string | (() => string);
type?: string | (() => string);
}
interface StyleHTMLAttributes<T> extends HTMLAttributes<T> {
media?: string | (() => string);
nonce?: string | (() => string);
scoped?: boolean | (() => boolean);
type?: string | (() => string);
}
interface TableHTMLAttributes<T> extends HTMLAttributes<T> {
cellPadding?: number | string | (() => number | string);
cellSpacing?: number | string | (