diff --git a/packages/dom-expressions/src/jsx-h.d.ts b/packages/dom-expressions/src/jsx-h.d.ts index c13b4bf1..1eef7ca6 100644 --- a/packages/dom-expressions/src/jsx-h.d.ts +++ b/packages/dom-expressions/src/jsx-h.d.ts @@ -30,6 +30,8 @@ import * as csstype from "csstype"; * through the component tree, not the dom tree. * - Native event handlers use the namespace `on:` such `on:click`, and wont be delegated. bubbling * the dom tree. + * - A global case-insensitive event handler can be added by extending `EventHandlersElement` + * - A native `on:` event handler can be added by extending `CustomEvents` interface * * ## Boolean Attributes (property setter that accepts `true | false`): * @@ -72,6 +74,37 @@ import * as csstype from "csstype"; * * - The namespace `prop:` could be used to directly set properties in native elements and * custom-elements. `` equivalent to `el.myProp = true` + * + * ## Interfaces + * + * Events + * + * 1. An event handler goes in `EventHandlersElement` when: + * + * - `event` is global, that's to be defined in `HTMLElement` AND `SVGElement` AND `MathMLElement` + * - `event` is defined in `Element` (as `HTMLElement/MathMLElement/SVGElement` -> `Element`) + * 2. ``, ``, `` are special as these include `window` events + * 3. Any other event is special for its own tag. + * + * Browser Hierarchy + * + * - $Element (ex HTMLDivElement
) -> ... -> HTMLElement -> Element -> Node + * - $Element (all math elements are MathMLElement) MathMLElement -> Element -> Node + * - $Element`(ex SVGMaskElement ) -> ... -> SVGElement -> Element -> Node + * + * Attributes + * + *
-> ... -> HTMLAttributes -> ElementAttributes + * -> ... -> SVGAttributes -> ElementAttributes + * -> ... -> MathMLAttributes -> ElementAttributes + * + * ElementAttributes = `Element` + `Node` attributes (aka global attributes) + * + * HTMLAttributes = `HTMLElement` attributes (aka HTML global attributes) + * SVGAttributes = `SVGElement` attributes (aka SVG global attributes) + * MathMLAttributes = `MathMLElement` attributes (aka MATH global attributes) + * + * CustomAttributes = Framework attributes */ type DOMElement = Element; @@ -132,7 +165,8 @@ export namespace JSX { > = EHandler | BoundEventHandler; interface EventHandlerWithOptions> - extends AddEventListenerOptions { + extends AddEventListenerOptions, + EventListenerOptions { handleEvent: EHandler; } @@ -206,6 +240,7 @@ export namespace JSX { } interface CustomAttributes { ref?: T | ((el: T) => void) | undefined; + children?: FunctionMaybe; $ServerOnly?: boolean | undefined; } type Accessor = () => T; @@ -249,541 +284,22 @@ export namespace JSX { [Key in keyof CustomEvents as `on:${Key}`]?: EventHandlerWithOptionsUnion; }; - // events - interface ElementEventMap { - onFullscreenChange?: EventHandlerUnion | undefined; - onFullscreenError?: EventHandlerUnion | undefined; - - "on:fullscreenchange"?: EventHandlerWithOptionsUnion | undefined; - "on:fullscreenerror"?: EventHandlerWithOptionsUnion | undefined; + // CSS - /** @deprecated Use camelCase event handlers */ - onfullscreenchange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onfullscreenerror?: EventHandlerUnion | undefined; + interface CSSProperties extends csstype.PropertiesHyphen { + // Override + [key: `-${string}`]: string | number | undefined; } - interface WindowEventMap { - onAfterPrint?: EventHandlerUnion | undefined; - onBeforePrint?: EventHandlerUnion | undefined; - onBeforeUnload?: EventHandlerUnion | undefined; - onGamepadConnected?: EventHandlerUnion | undefined; - onGamepadDisconnected?: EventHandlerUnion | undefined; - onHashchange?: EventHandlerUnion | undefined; - onLanguageChange?: EventHandlerUnion | undefined; - onMessage?: EventHandlerUnion | undefined; - onMessageError?: EventHandlerUnion | undefined; - onOffline?: EventHandlerUnion | undefined; - onOnline?: EventHandlerUnion | undefined; - onPageHide?: EventHandlerUnion | undefined; - // TODO `PageRevealEvent` is currently undefined on TS - onPageReveal?: EventHandlerUnion | undefined; - onPageShow?: EventHandlerUnion | undefined; - // TODO `PageSwapEvent` is currently undefined on TS - onPageSwap?: EventHandlerUnion | undefined; - onPopstate?: EventHandlerUnion | undefined; - onRejectionHandled?: EventHandlerUnion | undefined; - onStorage?: EventHandlerUnion | undefined; - onUnhandledRejection?: EventHandlerUnion | undefined; - onUnload?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onafterprint?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onbeforeprint?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onbeforeunload?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ongamepadconnected?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ongamepaddisconnected?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onhashchange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onlanguagechange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmessage?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmessageerror?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onoffline?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ononline?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpagehide?: EventHandlerUnion | undefined; - // TODO `PageRevealEvent` is currently undefined in TS - /** @deprecated Use camelCase event handlers */ - onpagereveal?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpageshow?: EventHandlerUnion | undefined; - // TODO `PageSwapEvent` is currently undefined in TS - /** @deprecated Use camelCase event handlers */ - onpageswap?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpopstate?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onrejectionhandled?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onstorage?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onunhandledrejection?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onunload?: EventHandlerUnion | undefined; + // TODO: Should we allow this? + // type ClassKeys = `class:${string}`; + // type CSSKeys = Exclude; - "on:afterprint"?: EventHandlerWithOptionsUnion | undefined; - "on:beforeprint"?: EventHandlerWithOptionsUnion | undefined; - "on:beforeunload"?: EventHandlerWithOptionsUnion | undefined; - "on:gamepadconnected"?: EventHandlerWithOptionsUnion | undefined; - "on:gamepaddisconnected"?: EventHandlerWithOptionsUnion | undefined; - "on:hashchange"?: EventHandlerWithOptionsUnion | undefined; - "on:languagechange"?: EventHandlerWithOptionsUnion | undefined; - "on:message"?: EventHandlerWithOptionsUnion | undefined; - "on:messageerror"?: EventHandlerWithOptionsUnion | undefined; - "on:offline"?: EventHandlerWithOptionsUnion | undefined; - "on:online"?: EventHandlerWithOptionsUnion | undefined; - "on:pagehide"?: EventHandlerWithOptionsUnion | undefined; - // TODO `PageRevealEvent` is currently undefined in TS - "on:pagereveal"?: EventHandlerWithOptionsUnion | undefined; - "on:pageshow"?: EventHandlerWithOptionsUnion | undefined; - // TODO `PageSwapEvent` is currently undefined in TS - "on:pageswap"?: EventHandlerWithOptionsUnion | undefined; - "on:popstate"?: EventHandlerWithOptionsUnion | undefined; - "on:rejectionhandled"?: EventHandlerWithOptionsUnion | undefined; - "on:storage"?: EventHandlerWithOptionsUnion | undefined; - "on:unhandledrejection"?: EventHandlerWithOptionsUnion | undefined; - "on:unload"?: EventHandlerWithOptionsUnion | undefined; - } + // type CSSAttributes = { + // [key in CSSKeys as `style:${key}`]: csstype.PropertiesHyphen[key]; + // }; - interface CustomEventHandlersCamelCase { - onAbort?: EventHandlerUnion | undefined; - onAnimationCancel?: EventHandlerUnion | undefined; - onAnimationEnd?: EventHandlerUnion | undefined; - onAnimationIteration?: EventHandlerUnion | undefined; - onAnimationStart?: EventHandlerUnion | undefined; - onAuxClick?: EventHandlerUnion | undefined; - onBeforeInput?: InputEventHandlerUnion | undefined; - onBeforeToggle?: EventHandlerUnion | undefined; - onBlur?: FocusEventHandlerUnion | undefined; - onCancel?: EventHandlerUnion | undefined; - onCanPlay?: EventHandlerUnion | undefined; - onCanPlayThrough?: EventHandlerUnion | undefined; - onChange?: ChangeEventHandlerUnion | undefined; - onClick?: EventHandlerUnion | undefined; - // TODO `CommandEvent` is currently undefined in TS - onCommand?: EventHandlerUnion | undefined; - onCompositionEnd?: EventHandlerUnion | undefined; - onCompositionStart?: EventHandlerUnion | undefined; - onCompositionUpdate?: EventHandlerUnion | undefined; - onContextMenu?: EventHandlerUnion | undefined; - onCopy?: EventHandlerUnion | undefined; - onCueChange?: EventHandlerUnion | undefined; - onCut?: EventHandlerUnion | undefined; - onDblClick?: EventHandlerUnion | undefined; - onDrag?: EventHandlerUnion | undefined; - onDragEnd?: EventHandlerUnion | undefined; - onDragEnter?: EventHandlerUnion | undefined; - onDragExit?: EventHandlerUnion | undefined; - onDragLeave?: EventHandlerUnion | undefined; - onDragOver?: EventHandlerUnion | undefined; - onDragStart?: EventHandlerUnion | undefined; - onDrop?: EventHandlerUnion | undefined; - onDurationChange?: EventHandlerUnion | undefined; - onEmptied?: EventHandlerUnion | undefined; - onEnded?: EventHandlerUnion | undefined; - onError?: EventHandlerUnion | undefined; - onFocus?: FocusEventHandlerUnion | undefined; - onFocusIn?: FocusEventHandlerUnion | undefined; - onFocusOut?: FocusEventHandlerUnion | undefined; - onGotPointerCapture?: EventHandlerUnion | undefined; - onInput?: InputEventHandlerUnion | undefined; - onInvalid?: EventHandlerUnion | undefined; - onKeyDown?: EventHandlerUnion | undefined; - onKeyPress?: EventHandlerUnion | undefined; - onKeyUp?: EventHandlerUnion | undefined; - onLoad?: EventHandlerUnion | undefined; - onLoadedData?: EventHandlerUnion | undefined; - onLoadedMetadata?: EventHandlerUnion | undefined; - onLoadStart?: EventHandlerUnion | undefined; - onLostPointerCapture?: EventHandlerUnion | undefined; - onMouseDown?: EventHandlerUnion | undefined; - onMouseEnter?: EventHandlerUnion | undefined; - onMouseLeave?: EventHandlerUnion | undefined; - onMouseMove?: EventHandlerUnion | undefined; - onMouseOut?: EventHandlerUnion | undefined; - onMouseOver?: EventHandlerUnion | undefined; - onMouseUp?: EventHandlerUnion | undefined; - onPaste?: EventHandlerUnion | undefined; - onPause?: EventHandlerUnion | undefined; - onPlay?: EventHandlerUnion | undefined; - onPlaying?: EventHandlerUnion | undefined; - onPointerCancel?: EventHandlerUnion | undefined; - onPointerDown?: EventHandlerUnion | undefined; - onPointerEnter?: EventHandlerUnion | undefined; - onPointerLeave?: EventHandlerUnion | undefined; - onPointerMove?: EventHandlerUnion | undefined; - onPointerOut?: EventHandlerUnion | undefined; - onPointerOver?: EventHandlerUnion | undefined; - onPointerUp?: EventHandlerUnion | undefined; - onProgress?: EventHandlerUnion | undefined; - onRateChange?: EventHandlerUnion | undefined; - onReset?: EventHandlerUnion | undefined; - onResize?: EventHandlerUnion | undefined; - onScroll?: EventHandlerUnion | undefined; - onScrollEnd?: EventHandlerUnion | undefined; - onSecurityPolicyViolation?: EventHandlerUnion | undefined; - onSeeked?: EventHandlerUnion | undefined; - onSeeking?: EventHandlerUnion | undefined; - onSelect?: EventHandlerUnion | undefined; - onSelectionChange?: EventHandlerUnion | undefined; - onSlotChange?: EventHandlerUnion | undefined; - onStalled?: EventHandlerUnion | undefined; - onSubmit?: EventHandlerUnion | undefined; - onSuspend?: EventHandlerUnion | undefined; - onTimeUpdate?: EventHandlerUnion | undefined; - onToggle?: EventHandlerUnion | undefined; - onTouchCancel?: EventHandlerUnion | undefined; - onTouchEnd?: EventHandlerUnion | undefined; - onTouchMove?: EventHandlerUnion | undefined; - onTouchStart?: EventHandlerUnion | undefined; - onTransitionCancel?: EventHandlerUnion | undefined; - onTransitionEnd?: EventHandlerUnion | undefined; - onTransitionRun?: EventHandlerUnion | undefined; - onTransitionStart?: EventHandlerUnion | undefined; - onVolumeChange?: EventHandlerUnion | undefined; - onWaiting?: EventHandlerUnion | undefined; - onWheel?: EventHandlerUnion | undefined; - } - /** @type {GlobalEventHandlers} */ - interface CustomEventHandlersLowerCase { - /** @deprecated Use camelCase event handlers */ - onabort?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onanimationcancel?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onanimationend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onanimationiteration?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onanimationstart?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onauxclick?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onbeforeinput?: InputEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onbeforetoggle?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onblur?: FocusEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncancel?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncanplay?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncanplaythrough?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onchange?: ChangeEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onclick?: EventHandlerUnion | undefined; - // TODO `CommandEvent` is currently undefined in TS - /** @deprecated Use camelCase event handlers */ - oncommand?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncompositionend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncompositionstart?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncompositionupdate?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncontextmenu?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncopy?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncuechange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncut?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondblclick?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondrag?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondragend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondragenter?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondragexit?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondragleave?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondragover?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondragstart?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondrop?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondurationchange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onemptied?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onended?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onerror?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onfocus?: FocusEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onfocusin?: FocusEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onfocusout?: FocusEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ongotpointercapture?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oninput?: InputEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oninvalid?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onkeydown?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onkeypress?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onkeyup?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onload?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onloadeddata?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onloadedmetadata?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onloadstart?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onlostpointercapture?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmousedown?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmouseenter?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmouseleave?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmousemove?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmouseout?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmouseover?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmouseup?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpaste?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpause?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onplay?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onplaying?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointercancel?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointerdown?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointerenter?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointerleave?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointermove?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointerout?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointerover?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointerup?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onprogress?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onratechange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onreset?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onresize?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onscroll?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onscrollend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onsecuritypolicyviolation?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onseeked?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onseeking?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onselect?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onselectionchange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onslotchange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onstalled?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onsubmit?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onsuspend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontimeupdate?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontoggle?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontouchcancel?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontouchend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontouchmove?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontouchstart?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontransitioncancel?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontransitionend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontransitionrun?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontransitionstart?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onvolumechange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onwaiting?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onwheel?: EventHandlerUnion | undefined; - } - - interface CustomEventHandlersNamespaced { - "on:abort"?: EventHandlerWithOptionsUnion | undefined; - "on:animationcancel"?: EventHandlerWithOptionsUnion | undefined; - "on:animationend"?: EventHandlerWithOptionsUnion | undefined; - "on:animationiteration"?: EventHandlerWithOptionsUnion | undefined; - "on:animationstart"?: EventHandlerWithOptionsUnion | undefined; - "on:auxclick"?: EventHandlerWithOptionsUnion | undefined; - "on:beforeinput"?: - | EventHandlerWithOptionsUnion> - | undefined; - "on:beforetoggle"?: EventHandlerWithOptionsUnion | undefined; - "on:blur"?: - | EventHandlerWithOptionsUnion> - | undefined; - "on:cancel"?: EventHandlerWithOptionsUnion | undefined; - "on:canplay"?: EventHandlerWithOptionsUnion | undefined; - "on:canplaythrough"?: EventHandlerWithOptionsUnion | undefined; - "on:change"?: EventHandlerWithOptionsUnion> | undefined; - "on:click"?: EventHandlerWithOptionsUnion | undefined; - // TODO `CommandEvent` is currently undefined in TS - "on:command"?: EventHandlerWithOptionsUnion | undefined; - "on:compositionend"?: EventHandlerWithOptionsUnion | undefined; - "on:compositionstart"?: EventHandlerWithOptionsUnion | undefined; - "on:compositionupdate"?: EventHandlerWithOptionsUnion | undefined; - "on:contextmenu"?: EventHandlerWithOptionsUnion | undefined; - "on:copy"?: EventHandlerWithOptionsUnion | undefined; - "on:cuechange"?: EventHandlerWithOptionsUnion | undefined; - "on:cut"?: EventHandlerWithOptionsUnion | undefined; - "on:dblclick"?: EventHandlerWithOptionsUnion | undefined; - "on:drag"?: EventHandlerWithOptionsUnion | undefined; - "on:dragend"?: EventHandlerWithOptionsUnion | undefined; - "on:dragenter"?: EventHandlerWithOptionsUnion | undefined; - "on:dragexit"?: EventHandlerWithOptionsUnion | undefined; - "on:dragleave"?: EventHandlerWithOptionsUnion | undefined; - "on:dragover"?: EventHandlerWithOptionsUnion | undefined; - "on:dragstart"?: EventHandlerWithOptionsUnion | undefined; - "on:drop"?: EventHandlerWithOptionsUnion | undefined; - "on:durationchange"?: EventHandlerWithOptionsUnion | undefined; - "on:emptied"?: EventHandlerWithOptionsUnion | undefined; - "on:ended"?: EventHandlerWithOptionsUnion | undefined; - "on:error"?: EventHandlerWithOptionsUnion | undefined; - "on:focus"?: - | EventHandlerWithOptionsUnion> - | undefined; - "on:focusin"?: - | EventHandlerWithOptionsUnion> - | undefined; - "on:focusout"?: - | EventHandlerWithOptionsUnion> - | undefined; - "on:gotpointercapture"?: EventHandlerWithOptionsUnion | undefined; - "on:input"?: - | EventHandlerWithOptionsUnion> - | undefined; - "on:invalid"?: EventHandlerWithOptionsUnion | undefined; - "on:keydown"?: EventHandlerWithOptionsUnion | undefined; - "on:keypress"?: EventHandlerWithOptionsUnion | undefined; - "on:keyup"?: EventHandlerWithOptionsUnion | undefined; - "on:load"?: EventHandlerWithOptionsUnion | undefined; - "on:loadeddata"?: EventHandlerWithOptionsUnion | undefined; - "on:loadedmetadata"?: EventHandlerWithOptionsUnion | undefined; - "on:loadstart"?: EventHandlerWithOptionsUnion | undefined; - "on:lostpointercapture"?: EventHandlerWithOptionsUnion | undefined; - "on:mousedown"?: EventHandlerWithOptionsUnion | undefined; - "on:mouseenter"?: EventHandlerWithOptionsUnion | undefined; - "on:mouseleave"?: EventHandlerWithOptionsUnion | undefined; - "on:mousemove"?: EventHandlerWithOptionsUnion | undefined; - "on:mouseout"?: EventHandlerWithOptionsUnion | undefined; - "on:mouseover"?: EventHandlerWithOptionsUnion | undefined; - "on:mouseup"?: EventHandlerWithOptionsUnion | undefined; - "on:paste"?: EventHandlerWithOptionsUnion | undefined; - "on:pause"?: EventHandlerWithOptionsUnion | undefined; - "on:play"?: EventHandlerWithOptionsUnion | undefined; - "on:playing"?: EventHandlerWithOptionsUnion | undefined; - "on:pointercancel"?: EventHandlerWithOptionsUnion | undefined; - "on:pointerdown"?: EventHandlerWithOptionsUnion | undefined; - "on:pointerenter"?: EventHandlerWithOptionsUnion | undefined; - "on:pointerleave"?: EventHandlerWithOptionsUnion | undefined; - "on:pointermove"?: EventHandlerWithOptionsUnion | undefined; - "on:pointerout"?: EventHandlerWithOptionsUnion | undefined; - "on:pointerover"?: EventHandlerWithOptionsUnion | undefined; - "on:pointerup"?: EventHandlerWithOptionsUnion | undefined; - "on:progress"?: EventHandlerWithOptionsUnion | undefined; - "on:ratechange"?: EventHandlerWithOptionsUnion | undefined; - "on:reset"?: EventHandlerWithOptionsUnion | undefined; - "on:resize"?: EventHandlerWithOptionsUnion | undefined; - "on:scroll"?: EventHandlerWithOptionsUnion | undefined; - "on:scrollend"?: EventHandlerWithOptionsUnion | undefined; - "on:securitypolicyviolation"?: - | EventHandlerWithOptionsUnion - | undefined; - "on:seeked"?: EventHandlerWithOptionsUnion | undefined; - "on:seeking"?: EventHandlerWithOptionsUnion | undefined; - "on:select"?: EventHandlerWithOptionsUnion | undefined; - "on:selectionchange"?: EventHandlerWithOptionsUnion | undefined; - "on:slotchange"?: EventHandlerWithOptionsUnion | undefined; - "on:stalled"?: EventHandlerWithOptionsUnion | undefined; - "on:submit"?: EventHandlerWithOptionsUnion | undefined; - "on:suspend"?: EventHandlerWithOptionsUnion | undefined; - "on:timeupdate"?: EventHandlerWithOptionsUnion | undefined; - "on:toggle"?: EventHandlerWithOptionsUnion | undefined; - "on:touchcancel"?: EventHandlerWithOptionsUnion | undefined; - "on:touchend"?: EventHandlerWithOptionsUnion | undefined; - "on:touchmove"?: EventHandlerWithOptionsUnion | undefined; - "on:touchstart"?: EventHandlerWithOptionsUnion | undefined; - "on:transitioncancel"?: EventHandlerWithOptionsUnion | undefined; - "on:transitionend"?: EventHandlerWithOptionsUnion | undefined; - "on:transitionrun"?: EventHandlerWithOptionsUnion | undefined; - "on:transitionstart"?: EventHandlerWithOptionsUnion | undefined; - "on:volumechange"?: EventHandlerWithOptionsUnion | undefined; - "on:waiting"?: EventHandlerWithOptionsUnion | undefined; - "on:wheel"?: EventHandlerWithOptionsUnion | undefined; - } - - interface DOMAttributes - extends CustomAttributes, - DirectiveAttributes, - DirectiveFunctionAttributes, - PropAttributes, - AttrAttributes, - BoolAttributes, - OnAttributes, - CustomEventHandlersCamelCase, - CustomEventHandlersLowerCase, - CustomEventHandlersNamespaced { - children?: FunctionMaybe; - innerHTML?: FunctionMaybe; - innerText?: FunctionMaybe; - textContent?: FunctionMaybe; - } - - interface CSSProperties extends csstype.PropertiesHyphen { - // Override - [key: `-${string}`]: string | number | undefined; - } + // BOOLEAN /** * Boolean and Pseudo-Boolean Attributes Helpers. @@ -800,50 +316,7 @@ export namespace JSX { type RemoveAttribute = undefined | false; - /** Enumerated Attributes */ - type HTMLAutocapitalize = "off" | "none" | "on" | "sentences" | "words" | "characters"; - type HTMLDir = "ltr" | "rtl" | "auto"; - type HTMLFormEncType = "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain"; - type HTMLFormMethod = "post" | "get" | "dialog"; - type HTMLCrossorigin = "anonymous" | "use-credentials" | EnumeratedAcceptsEmpty; - type HTMLReferrerPolicy = - | "no-referrer" - | "no-referrer-when-downgrade" - | "origin" - | "origin-when-cross-origin" - | "same-origin" - | "strict-origin" - | "strict-origin-when-cross-origin" - | "unsafe-url"; - type HTMLIframeSandbox = - | "allow-downloads-without-user-activation" - | "allow-downloads" - | "allow-forms" - | "allow-modals" - | "allow-orientation-lock" - | "allow-pointer-lock" - | "allow-popups" - | "allow-popups-to-escape-sandbox" - | "allow-presentation" - | "allow-same-origin" - | "allow-scripts" - | "allow-storage-access-by-user-activation" - | "allow-top-navigation" - | "allow-top-navigation-by-user-activation" - | "allow-top-navigation-to-custom-protocols"; - type HTMLLinkAs = - | "audio" - | "document" - | "embed" - | "fetch" - | "font" - | "image" - | "object" - | "script" - | "style" - | "track" - | "video" - | "worker"; + // ARIA // All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/ interface AriaAttributes { @@ -943,12 +416,6 @@ export namespace JSX { * @see aria-describedby */ "aria-description"?: FunctionMaybe; - /** - * Defines a string value that describes or annotates the current element. - * - * @see aria-describedby - */ - "aria-description"?: FunctionMaybe; /** * Identifies the element that provides a detailed, extended description for the object. * @@ -1230,21 +697,406 @@ export namespace JSX { >; } - // TODO: Should we allow this? - // type ClassKeys = `class:${string}`; - // type CSSKeys = Exclude; + // EVENTS + + /** + * `Window` events, defined for ``, ``, `` tags. + * + * Excluding `EventHandlersElement` events already defined as globals that all tags share, such as + * `onblur`. + */ + interface EventHandlersWindow { + onAfterPrint?: EventHandlerUnion | undefined; + onBeforePrint?: EventHandlerUnion | undefined; + onBeforeUnload?: EventHandlerUnion | undefined; + onGamepadConnected?: EventHandlerUnion | undefined; + onGamepadDisconnected?: EventHandlerUnion | undefined; + onHashchange?: EventHandlerUnion | undefined; + onLanguageChange?: EventHandlerUnion | undefined; + onMessage?: EventHandlerUnion | undefined; + onMessageError?: EventHandlerUnion | undefined; + onOffline?: EventHandlerUnion | undefined; + onOnline?: EventHandlerUnion | undefined; + onPageHide?: EventHandlerUnion | undefined; + // TODO `PageRevealEvent` is currently undefined on TS + onPageReveal?: EventHandlerUnion | undefined; + onPageShow?: EventHandlerUnion | undefined; + // TODO `PageSwapEvent` is currently undefined on TS + onPageSwap?: EventHandlerUnion | undefined; + onPopstate?: EventHandlerUnion | undefined; + onRejectionHandled?: EventHandlerUnion | undefined; + onStorage?: EventHandlerUnion | undefined; + onUnhandledRejection?: EventHandlerUnion | undefined; + onUnload?: EventHandlerUnion | undefined; + + "on:afterprint"?: EventHandlerWithOptionsUnion | undefined; + "on:beforeprint"?: EventHandlerWithOptionsUnion | undefined; + "on:beforeunload"?: EventHandlerWithOptionsUnion | undefined; + "on:gamepadconnected"?: EventHandlerWithOptionsUnion | undefined; + "on:gamepaddisconnected"?: EventHandlerWithOptionsUnion | undefined; + "on:hashchange"?: EventHandlerWithOptionsUnion | undefined; + "on:languagechange"?: EventHandlerWithOptionsUnion | undefined; + "on:message"?: EventHandlerWithOptionsUnion | undefined; + "on:messageerror"?: EventHandlerWithOptionsUnion | undefined; + "on:offline"?: EventHandlerWithOptionsUnion | undefined; + "on:online"?: EventHandlerWithOptionsUnion | undefined; + "on:pagehide"?: EventHandlerWithOptionsUnion | undefined; + // TODO `PageRevealEvent` is currently undefined in TS + "on:pagereveal"?: EventHandlerWithOptionsUnion | undefined; + "on:pageshow"?: EventHandlerWithOptionsUnion | undefined; + // TODO `PageSwapEvent` is currently undefined in TS + "on:pageswap"?: EventHandlerWithOptionsUnion | undefined; + "on:popstate"?: EventHandlerWithOptionsUnion | undefined; + "on:rejectionhandled"?: EventHandlerWithOptionsUnion | undefined; + "on:storage"?: EventHandlerWithOptionsUnion | undefined; + "on:unhandledrejection"?: EventHandlerWithOptionsUnion | undefined; + "on:unload"?: EventHandlerWithOptionsUnion | undefined; + } + + /** + * Global `EventHandlersElement`, defined for all tags. + * + * That's events defined and shared BY ALL of the `HTMLElement/SVGElement/MathMLElement` + * interfaces. + * + * Includes events defined for the `Element` interface. + */ + interface EventHandlersElement { + onAbort?: EventHandlerUnion | undefined; + onAnimationCancel?: EventHandlerUnion | undefined; + onAnimationEnd?: EventHandlerUnion | undefined; + onAnimationIteration?: EventHandlerUnion | undefined; + onAnimationStart?: EventHandlerUnion | undefined; + onAuxClick?: EventHandlerUnion | undefined; + onBeforeCopy?: EventHandlerUnion | undefined; + onBeforeCut?: EventHandlerUnion | undefined; + onBeforeInput?: InputEventHandlerUnion | undefined; + onBeforeMatch?: EventHandlerUnion | undefined; + onBeforePaste?: EventHandlerUnion | undefined; + onBeforeToggle?: EventHandlerUnion | undefined; + onBeforeXRSelect?: EventHandlerUnion | undefined; + onBlur?: FocusEventHandlerUnion | undefined; + onCancel?: EventHandlerUnion | undefined; + onCanPlay?: EventHandlerUnion | undefined; + onCanPlayThrough?: EventHandlerUnion | undefined; + onChange?: ChangeEventHandlerUnion | undefined; + onClick?: EventHandlerUnion | undefined; + onClose?: EventHandlerUnion | undefined; + // TODO `CommandEvent` is currently undefined in TS + onCommand?: EventHandlerUnion | undefined; + onCompositionEnd?: EventHandlerUnion | undefined; + onCompositionStart?: EventHandlerUnion | undefined; + onCompositionUpdate?: EventHandlerUnion | undefined; + onContentVisibilityAutoStateChange?: + | EventHandlerUnion + | undefined; + onContextLost?: EventHandlerUnion | undefined; + onContextMenu?: EventHandlerUnion | undefined; + onContextRestored?: EventHandlerUnion | undefined; + onCopy?: EventHandlerUnion | undefined; + onCueChange?: EventHandlerUnion | undefined; + onCut?: EventHandlerUnion | undefined; + onDblClick?: EventHandlerUnion | undefined; + onDrag?: EventHandlerUnion | undefined; + onDragEnd?: EventHandlerUnion | undefined; + onDragEnter?: EventHandlerUnion | undefined; + onDragExit?: EventHandlerUnion | undefined; + onDragLeave?: EventHandlerUnion | undefined; + onDragOver?: EventHandlerUnion | undefined; + onDragStart?: EventHandlerUnion | undefined; + onDrop?: EventHandlerUnion | undefined; + onDurationChange?: EventHandlerUnion | undefined; + onEmptied?: EventHandlerUnion | undefined; + onEnded?: EventHandlerUnion | undefined; + onError?: EventHandlerUnion | undefined; + onFocus?: FocusEventHandlerUnion | undefined; + onFocusIn?: FocusEventHandlerUnion | undefined; + onFocusOut?: FocusEventHandlerUnion | undefined; + onFormData?: EventHandlerUnion | undefined; + onFullscreenChange?: EventHandlerUnion | undefined; + onFullscreenError?: EventHandlerUnion | undefined; + onGotPointerCapture?: EventHandlerUnion | undefined; + onInput?: InputEventHandlerUnion | undefined; + onInvalid?: EventHandlerUnion | undefined; + onKeyDown?: EventHandlerUnion | undefined; + onKeyPress?: EventHandlerUnion | undefined; + onKeyUp?: EventHandlerUnion | undefined; + onLoad?: EventHandlerUnion | undefined; + onLoadedData?: EventHandlerUnion | undefined; + onLoadedMetadata?: EventHandlerUnion | undefined; + onLoadStart?: EventHandlerUnion | undefined; + onLostPointerCapture?: EventHandlerUnion | undefined; + onMouseDown?: EventHandlerUnion | undefined; + onMouseEnter?: EventHandlerUnion | undefined; + onMouseLeave?: EventHandlerUnion | undefined; + onMouseMove?: EventHandlerUnion | undefined; + onMouseOut?: EventHandlerUnion | undefined; + onMouseOver?: EventHandlerUnion | undefined; + onMouseUp?: EventHandlerUnion | undefined; + onPaste?: EventHandlerUnion | undefined; + onPause?: EventHandlerUnion | undefined; + onPlay?: EventHandlerUnion | undefined; + onPlaying?: EventHandlerUnion | undefined; + onPointerCancel?: EventHandlerUnion | undefined; + onPointerDown?: EventHandlerUnion | undefined; + onPointerEnter?: EventHandlerUnion | undefined; + onPointerLeave?: EventHandlerUnion | undefined; + onPointerMove?: EventHandlerUnion | undefined; + onPointerOut?: EventHandlerUnion | undefined; + onPointerOver?: EventHandlerUnion | undefined; + onPointerRawUpdate?: EventHandlerUnion | undefined; + onPointerUp?: EventHandlerUnion | undefined; + onProgress?: EventHandlerUnion | undefined; + onRateChange?: EventHandlerUnion | undefined; + onReset?: EventHandlerUnion | undefined; + onResize?: EventHandlerUnion | undefined; + onScroll?: EventHandlerUnion | undefined; + onScrollEnd?: EventHandlerUnion | undefined; + // todo `SnapEvent` is currently undefined in TS + onScrollSnapChange?: EventHandlerUnion | undefined; + // todo `SnapEvent` is currently undefined in TS + onScrollSnapChanging?: EventHandlerUnion | undefined; + onSecurityPolicyViolation?: EventHandlerUnion | undefined; + onSeeked?: EventHandlerUnion | undefined; + onSeeking?: EventHandlerUnion | undefined; + onSelect?: EventHandlerUnion | undefined; + onSelectionChange?: EventHandlerUnion | undefined; + onSelectStart?: EventHandlerUnion | undefined; + onSlotChange?: EventHandlerUnion | undefined; + onStalled?: EventHandlerUnion | undefined; + onSubmit?: EventHandlerUnion | undefined; + onSuspend?: EventHandlerUnion | undefined; + onTimeUpdate?: EventHandlerUnion | undefined; + onToggle?: EventHandlerUnion | undefined; + onTouchCancel?: EventHandlerUnion | undefined; + onTouchEnd?: EventHandlerUnion | undefined; + onTouchMove?: EventHandlerUnion | undefined; + onTouchStart?: EventHandlerUnion | undefined; + onTransitionCancel?: EventHandlerUnion | undefined; + onTransitionEnd?: EventHandlerUnion | undefined; + onTransitionRun?: EventHandlerUnion | undefined; + onTransitionStart?: EventHandlerUnion | undefined; + onVolumeChange?: EventHandlerUnion | undefined; + onWaiting?: EventHandlerUnion | undefined; + onWheel?: EventHandlerUnion | undefined; + + "on:abort"?: EventHandlerWithOptionsUnion | undefined; + "on:animationcancel"?: EventHandlerWithOptionsUnion | undefined; + "on:animationend"?: EventHandlerWithOptionsUnion | undefined; + "on:animationiteration"?: EventHandlerWithOptionsUnion | undefined; + "on:animationstart"?: EventHandlerWithOptionsUnion | undefined; + "on:auxclick"?: EventHandlerWithOptionsUnion | undefined; + "on:beforecopy"?: EventHandlerWithOptionsUnion | undefined; + "on:beforecut"?: EventHandlerWithOptionsUnion | undefined; + "on:beforeinput"?: + | EventHandlerWithOptionsUnion> + | undefined; + "on:beforematch"?: EventHandlerWithOptionsUnion | undefined; + "on:beforepaste"?: EventHandlerWithOptionsUnion | undefined; + "on:beforetoggle"?: EventHandlerWithOptionsUnion | undefined; + "on:beforexrselect"?: EventHandlerWithOptionsUnion | undefined; + "on:blur"?: + | EventHandlerWithOptionsUnion> + | undefined; + "on:cancel"?: EventHandlerWithOptionsUnion | undefined; + "on:canplay"?: EventHandlerWithOptionsUnion | undefined; + "on:canplaythrough"?: EventHandlerWithOptionsUnion | undefined; + "on:change"?: EventHandlerWithOptionsUnion> | undefined; + "on:click"?: EventHandlerWithOptionsUnion | undefined; + "on:close"?: EventHandlerWithOptionsUnion | undefined; + // TODO `CommandEvent` is currently undefined in TS + "on:command"?: EventHandlerWithOptionsUnion | undefined; + "on:compositionend"?: EventHandlerWithOptionsUnion | undefined; + "on:compositionstart"?: EventHandlerWithOptionsUnion | undefined; + "on:compositionupdate"?: EventHandlerWithOptionsUnion | undefined; + "on:contentvisibilityautostatechange"?: + | EventHandlerWithOptionsUnion + | undefined; + "on:contextlost"?: EventHandlerWithOptionsUnion | undefined; + "on:contextmenu"?: EventHandlerWithOptionsUnion | undefined; + "on:contextrestored"?: EventHandlerWithOptionsUnion | undefined; + "on:copy"?: EventHandlerWithOptionsUnion | undefined; + "on:cuechange"?: EventHandlerWithOptionsUnion | undefined; + "on:cut"?: EventHandlerWithOptionsUnion | undefined; + "on:dblclick"?: EventHandlerWithOptionsUnion | undefined; + "on:drag"?: EventHandlerWithOptionsUnion | undefined; + "on:dragend"?: EventHandlerWithOptionsUnion | undefined; + "on:dragenter"?: EventHandlerWithOptionsUnion | undefined; + "on:dragexit"?: EventHandlerWithOptionsUnion | undefined; + "on:dragleave"?: EventHandlerWithOptionsUnion | undefined; + "on:dragover"?: EventHandlerWithOptionsUnion | undefined; + "on:dragstart"?: EventHandlerWithOptionsUnion | undefined; + "on:drop"?: EventHandlerWithOptionsUnion | undefined; + "on:durationchange"?: EventHandlerWithOptionsUnion | undefined; + "on:emptied"?: EventHandlerWithOptionsUnion | undefined; + "on:ended"?: EventHandlerWithOptionsUnion | undefined; + "on:error"?: EventHandlerWithOptionsUnion | undefined; + "on:focus"?: + | EventHandlerWithOptionsUnion> + | undefined; + "on:focusin"?: + | EventHandlerWithOptionsUnion> + | undefined; + "on:focusout"?: + | EventHandlerWithOptionsUnion> + | undefined; + "on:formdata"?: EventHandlerWithOptionsUnion | undefined; + "on:fullscreenchange"?: EventHandlerWithOptionsUnion | undefined; + "on:fullscreenerror"?: EventHandlerWithOptionsUnion | undefined; + "on:gotpointercapture"?: EventHandlerWithOptionsUnion | undefined; + "on:input"?: + | EventHandlerWithOptionsUnion> + | undefined; + "on:invalid"?: EventHandlerWithOptionsUnion | undefined; + "on:keydown"?: EventHandlerWithOptionsUnion | undefined; + "on:keypress"?: EventHandlerWithOptionsUnion | undefined; + "on:keyup"?: EventHandlerWithOptionsUnion | undefined; + "on:load"?: EventHandlerWithOptionsUnion | undefined; + "on:loadeddata"?: EventHandlerWithOptionsUnion | undefined; + "on:loadedmetadata"?: EventHandlerWithOptionsUnion | undefined; + "on:loadstart"?: EventHandlerWithOptionsUnion | undefined; + "on:lostpointercapture"?: EventHandlerWithOptionsUnion | undefined; + "on:mousedown"?: EventHandlerWithOptionsUnion | undefined; + "on:mouseenter"?: EventHandlerWithOptionsUnion | undefined; + "on:mouseleave"?: EventHandlerWithOptionsUnion | undefined; + "on:mousemove"?: EventHandlerWithOptionsUnion | undefined; + "on:mouseout"?: EventHandlerWithOptionsUnion | undefined; + "on:mouseover"?: EventHandlerWithOptionsUnion | undefined; + "on:mouseup"?: EventHandlerWithOptionsUnion | undefined; + "on:paste"?: EventHandlerWithOptionsUnion | undefined; + "on:pause"?: EventHandlerWithOptionsUnion | undefined; + "on:play"?: EventHandlerWithOptionsUnion | undefined; + "on:playing"?: EventHandlerWithOptionsUnion | undefined; + "on:pointercancel"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerdown"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerenter"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerleave"?: EventHandlerWithOptionsUnion | undefined; + "on:pointermove"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerout"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerover"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerrawupdate"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerup"?: EventHandlerWithOptionsUnion | undefined; + "on:progress"?: EventHandlerWithOptionsUnion | undefined; + "on:ratechange"?: EventHandlerWithOptionsUnion | undefined; + "on:reset"?: EventHandlerWithOptionsUnion | undefined; + "on:resize"?: EventHandlerWithOptionsUnion | undefined; + "on:scroll"?: EventHandlerWithOptionsUnion | undefined; + "on:scrollend"?: EventHandlerWithOptionsUnion | undefined; + // todo `SnapEvent` is currently undefined in TS + "on:scrollsnapchange"?: EventHandlerWithOptionsUnion | undefined; + // todo `SnapEvent` is currently undefined in TS + "on:scrollsnapchanging"?: EventHandlerWithOptionsUnion | undefined; + "on:securitypolicyviolation"?: + | EventHandlerWithOptionsUnion + | undefined; + "on:seeked"?: EventHandlerWithOptionsUnion | undefined; + "on:seeking"?: EventHandlerWithOptionsUnion | undefined; + "on:select"?: EventHandlerWithOptionsUnion | undefined; + "on:selectionchange"?: EventHandlerWithOptionsUnion | undefined; + "on:selectstart"?: EventHandlerWithOptionsUnion | undefined; + "on:slotchange"?: EventHandlerWithOptionsUnion | undefined; + "on:stalled"?: EventHandlerWithOptionsUnion | undefined; + "on:submit"?: EventHandlerWithOptionsUnion | undefined; + "on:suspend"?: EventHandlerWithOptionsUnion | undefined; + "on:timeupdate"?: EventHandlerWithOptionsUnion | undefined; + "on:toggle"?: EventHandlerWithOptionsUnion | undefined; + "on:touchcancel"?: EventHandlerWithOptionsUnion | undefined; + "on:touchend"?: EventHandlerWithOptionsUnion | undefined; + "on:touchmove"?: EventHandlerWithOptionsUnion | undefined; + "on:touchstart"?: EventHandlerWithOptionsUnion | undefined; + "on:transitioncancel"?: EventHandlerWithOptionsUnion | undefined; + "on:transitionend"?: EventHandlerWithOptionsUnion | undefined; + "on:transitionrun"?: EventHandlerWithOptionsUnion | undefined; + "on:transitionstart"?: EventHandlerWithOptionsUnion | undefined; + "on:volumechange"?: EventHandlerWithOptionsUnion | undefined; + "on:waiting"?: EventHandlerWithOptionsUnion | undefined; + "on:wheel"?: EventHandlerWithOptionsUnion | undefined; + } + + type EventType = + | (keyof EventHandlersWindow extends infer K + ? K extends `on:${infer T}` + ? T + : K extends `on${infer T}` + ? Lowercase + : never + : never) + | (keyof EventHandlersElement extends infer K + ? K extends `on:${infer T}` + ? T + : K extends `on${infer T}` + ? Lowercase + : never + : never) + | (string & {}); - // type CSSAttributes = { - // [key in CSSKeys as `style:${key}`]: csstype.PropertiesHyphen[key]; - // }; + // GLOBAL ATTRIBUTES - interface HTMLAttributes extends AriaAttributes, DOMAttributes { + /** + * Global `Element` + `Node` interface keys, shared by all tags regardless of their namespace: + * + * 1. That's `keys` that are defined BY ALL `HTMLElement/SVGElement/MathMLElement` interfaces. + * 2. Includes `keys` defined by `Element` and `Node` interfaces. + */ + interface ElementAttributes + extends CustomAttributes, + DirectiveAttributes, + DirectiveFunctionAttributes, + PropAttributes, + AttrAttributes, + BoolAttributes, + OnAttributes, + EventHandlersElement, + AriaAttributes { // [key: ClassKeys]: boolean; - about?: FunctionMaybe; + + // properties + innerHTML?: FunctionMaybe; + textContent?: FunctionMaybe; + + // attributes + autofocus?: FunctionMaybe; + class?: FunctionMaybe; + elementtiming?: FunctionMaybe; + id?: FunctionMaybe; + nonce?: FunctionMaybe; + part?: FunctionMaybe; + slot?: FunctionMaybe; + style?: FunctionMaybe; + tabindex?: FunctionMaybe; + } + /** Global `SVGElement` interface keys only. */ + interface SVGAttributes extends ElementAttributes { + id?: FunctionMaybe; + lang?: FunctionMaybe; + tabindex?: FunctionMaybe; + xmlns?: FunctionMaybe; + } + /** Global `MathMLElement` interface keys only. */ + interface MathMLAttributes extends ElementAttributes { + dir?: FunctionMaybe; + displaystyle?: FunctionMaybe; + scriptlevel?: FunctionMaybe; + xmlns?: FunctionMaybe; + + /** @deprecated */ + href?: FunctionMaybe; + /** @deprecated */ + mathbackground?: FunctionMaybe; + /** @deprecated */ + mathcolor?: FunctionMaybe; + /** @deprecated */ + mathsize?: FunctionMaybe; + } + /** Global `HTMLElement` interface keys only. */ + interface HTMLAttributes extends ElementAttributes { + // properties + innerText?: FunctionMaybe; + + // attributes accesskey?: FunctionMaybe; autocapitalize?: FunctionMaybe; - class?: FunctionMaybe; - color?: FunctionMaybe; + autocorrect?: FunctionMaybe<"on" | "off" | RemoveAttribute>; contenteditable?: FunctionMaybe< | EnumeratedPseudoBoolean | EnumeratedAcceptsEmpty @@ -1252,68 +1104,162 @@ export namespace JSX { | "inherit" | RemoveAttribute >; - contextmenu?: FunctionMaybe; - datatype?: FunctionMaybe; dir?: FunctionMaybe; draggable?: FunctionMaybe; + enterkeyhint?: FunctionMaybe< + "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | RemoveAttribute + >; exportparts?: FunctionMaybe; hidden?: FunctionMaybe; - id?: FunctionMaybe; inert?: FunctionMaybe; - inlist?: FunctionMaybe; inputmode?: FunctionMaybe< "decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url" | RemoveAttribute >; is?: FunctionMaybe; + lang?: FunctionMaybe; + popover?: FunctionMaybe; + spellcheck?: FunctionMaybe; + title?: FunctionMaybe; + translate?: FunctionMaybe<"yes" | "no" | RemoveAttribute>; + + /** @experimental */ + virtualkeyboardpolicy?: FunctionMaybe< + EnumeratedAcceptsEmpty | "auto" | "manual" | RemoveAttribute + >; + /** @experimental */ + writingsuggestions?: FunctionMaybe; + + // Microdata itemid?: FunctionMaybe; itemprop?: FunctionMaybe; itemref?: FunctionMaybe; itemscope?: FunctionMaybe; itemtype?: FunctionMaybe; - lang?: FunctionMaybe; - part?: FunctionMaybe; - popover?: FunctionMaybe; + + // RDFa Attributes + about?: FunctionMaybe; + datatype?: FunctionMaybe; + inlist?: FunctionMaybe; prefix?: FunctionMaybe; property?: FunctionMaybe; resource?: FunctionMaybe; - slot?: FunctionMaybe; - spellcheck?: FunctionMaybe; - style?: FunctionMaybe; - tabindex?: FunctionMaybe; - title?: FunctionMaybe; - translate?: FunctionMaybe<"yes" | "no" | RemoveAttribute>; typeof?: FunctionMaybe; vocab?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - accessKey?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - autoCapitalize?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - contentEditable?: FunctionMaybe< - EnumeratedPseudoBoolean | "plaintext-only" | "inherit" | RemoveAttribute - >; - /** @deprecated Use lowercase attributes */ - contextMenu?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - exportParts?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - inputMode?: FunctionMaybe< - "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | RemoveAttribute - >; - /** @deprecated Use lowercase attributes */ - itemId?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - itemProp?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - itemRef?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - itemScope?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - itemType?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - tabIndex?: FunctionMaybe; + /** @deprecated */ + contextmenu?: FunctionMaybe; } + + // HTML + + type HTMLAutocapitalize = "off" | "none" | "on" | "sentences" | "words" | "characters"; + type HTMLAutocomplete = + | "additional-name" + | "address-level1" + | "address-level2" + | "address-level3" + | "address-level4" + | "address-line1" + | "address-line2" + | "address-line3" + | "bday" + | "bday-day" + | "bday-month" + | "bday-year" + | "billing" + | "cc-additional-name" + | "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" + | "email" + | "family-name" + | "fax" + | "given-name" + | "home" + | "honorific-prefix" + | "honorific-suffix" + | "impp" + | "language" + | "mobile" + | "name" + | "new-password" + | "nickname" + | "off" + | "on" + | "organization" + | "organization-title" + | "pager" + | "photo" + | "postal-code" + | "sex" + | "shipping" + | "street-address" + | "tel" + | "tel-area-code" + | "tel-country-code" + | "tel-extension" + | "tel-local" + | "tel-local-prefix" + | "tel-local-suffix" + | "tel-national" + | "transaction-amount" + | "transaction-currency" + | "url" + | "username" + | "work" + | (string & {}); + type HTMLDir = "ltr" | "rtl" | "auto"; + type HTMLFormEncType = "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain"; + type HTMLFormMethod = "post" | "get" | "dialog"; + type HTMLCrossorigin = "anonymous" | "use-credentials" | EnumeratedAcceptsEmpty; + type HTMLReferrerPolicy = + | "no-referrer" + | "no-referrer-when-downgrade" + | "origin" + | "origin-when-cross-origin" + | "same-origin" + | "strict-origin" + | "strict-origin-when-cross-origin" + | "unsafe-url"; + type HTMLIframeSandbox = + | "allow-downloads-without-user-activation" + | "allow-downloads" + | "allow-forms" + | "allow-modals" + | "allow-orientation-lock" + | "allow-pointer-lock" + | "allow-popups" + | "allow-popups-to-escape-sandbox" + | "allow-presentation" + | "allow-same-origin" + | "allow-scripts" + | "allow-storage-access-by-user-activation" + | "allow-top-navigation" + | "allow-top-navigation-by-user-activation" + | "allow-top-navigation-to-custom-protocols"; + type HTMLLinkAs = + | "audio" + | "document" + | "embed" + | "fetch" + | "font" + | "image" + | "object" + | "script" + | "style" + | "track" + | "video" + | "worker"; + interface AnchorHTMLAttributes extends HTMLAttributes { download?: FunctionMaybe; href?: FunctionMaybe; @@ -1329,9 +1275,6 @@ export namespace JSX { /** @experimental */ attributionsrc?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - referrerPolicy?: FunctionMaybe; - /** @deprecated */ charset?: FunctionMaybe; /** @deprecated */ @@ -1360,9 +1303,6 @@ export namespace JSX { /** @experimental */ attributionsrc?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - referrerPolicy?: FunctionMaybe; - /** @deprecated */ nohref?: FunctionMaybe; } @@ -1372,15 +1312,14 @@ export namespace JSX { "_self" | "_blank" | "_parent" | "_top" | (string & {}) | RemoveAttribute >; } + interface BdoHTMLAttributes extends HTMLAttributes { + dir?: FunctionMaybe<"ltr" | "rtl" | RemoveAttribute>; + } interface BlockquoteHTMLAttributes extends HTMLAttributes { cite?: FunctionMaybe; } - interface BodyHTMLAttributes - extends HTMLAttributes, - WindowEventMap, - ElementEventMap {} + interface BodyHTMLAttributes extends HTMLAttributes, EventHandlersWindow {} interface ButtonHTMLAttributes extends HTMLAttributes { - autofocus?: FunctionMaybe; disabled?: FunctionMaybe; form?: FunctionMaybe; formaction?: FunctionMaybe; @@ -1408,36 +1347,11 @@ export namespace JSX { >; /** @experimental */ commandfor?: FunctionMaybe; - - /** @deprecated Use lowercase attributes */ - formAction?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - formEnctype?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - formMethod?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - formNoValidate?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - formTarget?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - popoverTarget?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - popoverTargetAction?: FunctionMaybe<"hide" | "show" | "toggle" | RemoveAttribute>; } interface CanvasHTMLAttributes extends HTMLAttributes { height?: FunctionMaybe; width?: FunctionMaybe; - onContextLost?: EventHandlerUnion | undefined; - "on:contextlost"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncontextlost?: EventHandlerUnion | undefined; - - onContextRestored?: EventHandlerUnion | undefined; - "on:contextrestored"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncontextrestored?: EventHandlerUnion | undefined; - /** * @deprecated * @non-standard @@ -1490,23 +1404,16 @@ export namespace JSX { interface DialogHtmlAttributes extends HTMLAttributes { open?: FunctionMaybe; /** - * Do not add the tabindex property to the element as it is not interactive and does - * not receive focus. The dialog's contents, including the close button contained in the dialog, - * can receive focus and be interactive. + * Do not add the `tabindex` property to the `` element as it is not interactive and + * does not receive focus. The dialog's contents, including the close button contained in the + * dialog, can receive focus and be interactive. * * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dialog#usage_notes */ tabindex?: never; - onClose?: EventHandlerUnion | undefined; - "on:close"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onclose?: EventHandlerUnion | undefined; - - onCancel?: EventHandlerUnion | undefined; - "on:cancel"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncancel?: EventHandlerUnion | undefined; + /** @experimental */ + closedby: FunctionMaybe<"any" | "closerequest" | "none" | RemoveAttribute>; } interface EmbedHTMLAttributes extends HTMLAttributes { height?: FunctionMaybe; @@ -1538,14 +1445,6 @@ export namespace JSX { "_self" | "_blank" | "_parent" | "_top" | (string & {}) | RemoveAttribute >; - onFormData?: EventHandlerUnion | undefined; - "on:formdata"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onformdata?: EventHandlerUnion | undefined; - - /** @deprecated Use lowercase attributes */ - noValidate?: FunctionMaybe; - /** @deprecated */ accept?: FunctionMaybe; } @@ -1561,9 +1460,6 @@ export namespace JSX { srcdoc?: FunctionMaybe; width?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - referrerPolicy?: FunctionMaybe; - /** @experimental */ adauctionheaders?: FunctionMaybe; /** @@ -1604,9 +1500,9 @@ export namespace JSX { } interface ImgHTMLAttributes extends HTMLAttributes { alt?: FunctionMaybe; + browsingtopics?: FunctionMaybe; crossorigin?: FunctionMaybe; decoding?: FunctionMaybe<"sync" | "async" | "auto" | RemoveAttribute>; - elementtiming?: FunctionMaybe; fetchpriority?: FunctionMaybe<"high" | "low" | "auto" | RemoveAttribute>; height?: FunctionMaybe; ismap?: FunctionMaybe; @@ -1623,17 +1519,6 @@ export namespace JSX { /** @experimental */ sharedstoragewritable?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - crossOrigin?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - isMap?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - referrerPolicy?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - srcSet?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - useMap?: FunctionMaybe; - /** @deprecated */ align?: FunctionMaybe<"top" | "middle" | "bottom" | "left" | "right" | RemoveAttribute>; /** @deprecated */ @@ -1653,83 +1538,14 @@ export namespace JSX { } interface InputHTMLAttributes extends HTMLAttributes { accept?: FunctionMaybe; + alpha?: FunctionMaybe; alt?: FunctionMaybe; - autocomplete?: FunctionMaybe< - | "additional-name" - | "address-level1" - | "address-level2" - | "address-level3" - | "address-level4" - | "address-line1" - | "address-line2" - | "address-line3" - | "bday" - | "bday-day" - | "bday-month" - | "bday-year" - | "billing" - | "cc-additional-name" - | "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" - | "email" - | "family-name" - | "fax" - | "given-name" - | "home" - | "honorific-prefix" - | "honorific-suffix" - | "impp" - | "language" - | "mobile" - | "name" - | "new-password" - | "nickname" - | "off" - | "on" - | "organization" - | "organization-title" - | "pager" - | "photo" - | "postal-code" - | "sex" - | "shipping" - | "street-address" - | "tel" - | "tel-area-code" - | "tel-country-code" - | "tel-extension" - | "tel-local" - | "tel-local-prefix" - | "tel-local-suffix" - | "tel-national" - | "transaction-amount" - | "transaction-currency" - | "url" - | "username" - | "work" - | (string & {}) - | RemoveAttribute - >; - autocorrect?: FunctionMaybe<"on" | "off" | RemoveAttribute>; - autofocus?: FunctionMaybe; + autocomplete?: FunctionMaybe; capture?: FunctionMaybe<"user" | "environment" | RemoveAttribute>; checked?: FunctionMaybe; - crossorigin?: FunctionMaybe; + colorspace?: FunctionMaybe; dirname?: FunctionMaybe; disabled?: FunctionMaybe; - enterkeyhint?: FunctionMaybe< - "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | RemoveAttribute - >; form?: FunctionMaybe; formaction?: FunctionMaybe; formenctype?: FunctionMaybe; @@ -1787,25 +1603,6 @@ export namespace JSX { /** @non-standard */ incremental?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - crossOrigin?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - formAction?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - formEnctype?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - formMethod?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - formNoValidate?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - formTarget?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - maxLength?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - minLength?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - readOnly?: FunctionMaybe; - /** @deprecated */ align?: FunctionMaybe; /** @deprecated */ @@ -1814,13 +1611,8 @@ export namespace JSX { interface ModHTMLAttributes extends HTMLAttributes { cite?: FunctionMaybe; datetime?: FunctionMaybe; - - /** @deprecated Use lowercase attributes */ - dateTime?: FunctionMaybe; } interface KeygenHTMLAttributes extends HTMLAttributes { - /** @deprecated */ - autofocus?: FunctionMaybe; /** @deprecated */ challenge?: FunctionMaybe; /** @deprecated */ @@ -1836,7 +1628,6 @@ export namespace JSX { } interface LabelHTMLAttributes extends HTMLAttributes { for?: FunctionMaybe; - form?: FunctionMaybe; } interface LiHTMLAttributes extends HTMLAttributes { value?: FunctionMaybe; @@ -1847,6 +1638,7 @@ export namespace JSX { interface LinkHTMLAttributes extends HTMLAttributes { as?: FunctionMaybe; blocking?: FunctionMaybe<"render" | RemoveAttribute>; + color?: FunctionMaybe; crossorigin?: FunctionMaybe; disabled?: FunctionMaybe; fetchpriority?: FunctionMaybe<"high" | "low" | "auto" | RemoveAttribute>; @@ -1861,11 +1653,6 @@ export namespace JSX { sizes?: FunctionMaybe; type?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - crossOrigin?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - referrerPolicy?: FunctionMaybe; - /** @deprecated */ charset?: FunctionMaybe; /** @deprecated */ @@ -1876,7 +1663,7 @@ export namespace JSX { interface MapHTMLAttributes extends HTMLAttributes { name?: FunctionMaybe; } - interface MediaHTMLAttributes extends HTMLAttributes, ElementEventMap { + interface MediaHTMLAttributes extends HTMLAttributes { autoplay?: FunctionMaybe; controls?: FunctionMaybe; controlslist?: FunctionMaybe< @@ -1898,19 +1685,10 @@ export namespace JSX { onEncrypted?: EventHandlerUnion | undefined; "on:encrypted"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onencrypted?: EventHandlerUnion | undefined; onWaitingForKey?: EventHandlerUnion | undefined; "on:waitingforkey"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onwaitingforkey?: EventHandlerUnion | undefined; - - /** @deprecated Use lowercase attributes */ - crossOrigin?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - mediaGroup?: FunctionMaybe; /** @deprecated */ mediagroup?: FunctionMaybe; } @@ -1958,9 +1736,7 @@ export namespace JSX { name?: FunctionMaybe; type?: FunctionMaybe; width?: FunctionMaybe; - - /** @deprecated Use lowercase attributes */ - useMap?: FunctionMaybe; + wmode?: FunctionMaybe; /** @deprecated */ align?: FunctionMaybe; @@ -2035,9 +1811,9 @@ export namespace JSX { crossorigin?: FunctionMaybe; defer?: FunctionMaybe; fetchpriority?: FunctionMaybe<"high" | "low" | "auto" | RemoveAttribute>; + for?: FunctionMaybe; integrity?: FunctionMaybe; nomodule?: FunctionMaybe; - nonce?: FunctionMaybe; referrerpolicy?: FunctionMaybe; src?: FunctionMaybe; type?: FunctionMaybe< @@ -2047,13 +1823,6 @@ export namespace JSX { /** @experimental */ attributionsrc?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - crossOrigin?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - noModule?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - referrerPolicy?: FunctionMaybe; - /** @deprecated */ charset?: FunctionMaybe; /** @deprecated */ @@ -2062,8 +1831,7 @@ export namespace JSX { language?: FunctionMaybe; } interface SelectHTMLAttributes extends HTMLAttributes { - autocomplete?: FunctionMaybe; - autofocus?: FunctionMaybe; + autocomplete?: FunctionMaybe; disabled?: FunctionMaybe; form?: FunctionMaybe; multiple?: FunctionMaybe; @@ -2087,7 +1855,6 @@ export namespace JSX { interface StyleHTMLAttributes extends HTMLAttributes { blocking?: FunctionMaybe<"render" | RemoveAttribute>; media?: FunctionMaybe; - nonce?: FunctionMaybe; /** @deprecated */ scoped?: FunctionMaybe; @@ -2099,11 +1866,6 @@ export namespace JSX { headers?: FunctionMaybe; rowspan?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - colSpan?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - rowSpan?: FunctionMaybe; - /** @deprecated */ abbr?: FunctionMaybe; /** @deprecated */ @@ -2131,88 +1893,17 @@ export namespace JSX { shadowrootclonable?: FunctionMaybe; shadowrootdelegatesfocus?: FunctionMaybe; shadowrootmode?: FunctionMaybe<"open" | "closed" | RemoveAttribute>; + shadowrootcustomelementregistry?: FunctionMaybe; /** @experimental */ shadowrootserializable?: FunctionMaybe; - - /** @deprecated */ - content?: FunctionMaybe; } interface TextareaHTMLAttributes extends HTMLAttributes { - autocomplete?: FunctionMaybe< - | "additional-name" - | "address-level1" - | "address-level2" - | "address-level3" - | "address-level4" - | "address-line1" - | "address-line2" - | "address-line3" - | "bday" - | "bday-day" - | "bday-month" - | "bday-year" - | "billing" - | "cc-additional-name" - | "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" - | "email" - | "family-name" - | "fax" - | "given-name" - | "home" - | "honorific-prefix" - | "honorific-suffix" - | "impp" - | "language" - | "mobile" - | "name" - | "new-password" - | "nickname" - | "off" - | "on" - | "organization" - | "organization-title" - | "pager" - | "photo" - | "postal-code" - | "sex" - | "shipping" - | "street-address" - | "tel" - | "tel-area-code" - | "tel-country-code" - | "tel-extension" - | "tel-local" - | "tel-local-prefix" - | "tel-local-suffix" - | "tel-national" - | "transaction-amount" - | "transaction-currency" - | "url" - | "username" - | "work" - | (string & {}) - | RemoveAttribute - >; - autocorrect?: FunctionMaybe<"on" | "off" | RemoveAttribute>; - autofocus?: FunctionMaybe; + autocomplete?: FunctionMaybe; cols?: FunctionMaybe; dirname?: FunctionMaybe; disabled?: FunctionMaybe; - enterkeyhint?: FunctionMaybe< - "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | RemoveAttribute - >; + form?: FunctionMaybe; maxlength?: FunctionMaybe; minlength?: FunctionMaybe; @@ -2223,13 +1914,6 @@ export namespace JSX { rows?: FunctionMaybe; value?: FunctionMaybe; wrap?: FunctionMaybe<"hard" | "soft" | "off" | RemoveAttribute>; - - /** @deprecated Use lowercase attributes */ - maxLength?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - minLength?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - readOnly?: FunctionMaybe; } interface ThHTMLAttributes extends HTMLAttributes { abbr?: FunctionMaybe; @@ -2238,11 +1922,6 @@ export namespace JSX { rowspan?: FunctionMaybe; scope?: FunctionMaybe<"col" | "row" | "rowgroup" | "colgroup" | RemoveAttribute>; - /** @deprecated Use lowercase attributes */ - colSpan?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - rowSpan?: FunctionMaybe; - /** @deprecated */ align?: FunctionMaybe<"left" | "center" | "right" | "justify" | "char" | RemoveAttribute>; /** @deprecated */ @@ -2264,9 +1943,6 @@ export namespace JSX { } interface TimeHTMLAttributes extends HTMLAttributes { datetime?: FunctionMaybe; - - /** @deprecated Use lowercase attributes */ - dateTime?: FunctionMaybe; } interface TrackHTMLAttributes extends HTMLAttributes { default?: FunctionMaybe; @@ -2287,8 +1963,6 @@ export namespace JSX { src?: FunctionMaybe; srclang?: FunctionMaybe; - /** @deprecated Use lowercase attributes */ - mediaGroup?: FunctionMaybe; /** @deprecated */ mediagroup?: FunctionMaybe; } @@ -2301,13 +1975,9 @@ export namespace JSX { onEnterPictureInPicture?: EventHandlerUnion | undefined; "on:enterpictureinpicture"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onenterpictureinpicture?: EventHandlerUnion | undefined; onLeavePictureInPicture?: EventHandlerUnion | undefined; "on:leavepictureinpicture"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onleavepictureinpicture?: EventHandlerUnion | undefined; } interface WebViewHTMLAttributes extends HTMLAttributes { @@ -2327,7 +1997,6 @@ export namespace JSX { // does this exists? allowfullscreen?: FunctionMaybe; - autofocus?: FunctionMaybe; autosize?: FunctionMaybe; /** @deprecated */ @@ -2338,7 +2007,8 @@ export namespace JSX { guestinstance?: FunctionMaybe; } - /** SVG Enumerated Attributes */ + // SVG + type SVGPreserveAspectRatio = | "none" | "xMinYMin" @@ -2400,14 +2070,6 @@ export namespace JSX { | "defer xMaxYMax slice"; type SVGUnits = "userSpaceOnUse" | "objectBoundingBox"; - interface CoreSVGAttributes extends AriaAttributes, DOMAttributes { - id?: FunctionMaybe; - lang?: FunctionMaybe; - tabindex?: FunctionMaybe; - - /** @deprecated Use lowercase attributes */ - tabIndex?: FunctionMaybe; - } interface StylableSVGAttributes { class?: FunctionMaybe; style?: FunctionMaybe; @@ -2581,11 +2243,23 @@ export namespace JSX { visibility?: FunctionMaybe<"visible" | "hidden" | "collapse" | "inherit" | RemoveAttribute>; } interface AnimationElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, ExternalResourceSVGAttributes, - ConditionalProcessingSVGAttributes {} + ConditionalProcessingSVGAttributes { + // TODO TimeEvent is currently undefined on TS + onBegin?: EventHandlerUnion | undefined; + "on:begin"?: EventHandlerWithOptionsUnion | undefined; + + // TODO TimeEvent is currently undefined on TS + onEnd?: EventHandlerUnion | undefined; + "on:end"?: EventHandlerWithOptionsUnion | undefined; + + // TODO TimeEvent is currently undefined on TS + onRepeat?: EventHandlerUnion | undefined; + "on:repeat"?: EventHandlerWithOptionsUnion | undefined; + } interface ContainerElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, ShapeElementSVGAttributes, Pick< PresentationSVGAttributes, @@ -2599,7 +2273,7 @@ export namespace JSX { | "color-rendering" > {} interface FilterPrimitiveElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, Pick { height?: FunctionMaybe; result?: FunctionMaybe; @@ -2619,7 +2293,7 @@ export namespace JSX { viewBox?: FunctionMaybe; } interface GradientElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, ExternalResourceSVGAttributes, StylableSVGAttributes { gradientTransform?: FunctionMaybe; @@ -2628,7 +2302,7 @@ export namespace JSX { spreadMethod?: FunctionMaybe<"pad" | "reflect" | "repeat" | RemoveAttribute>; } interface GraphicsElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, Pick< PresentationSVGAttributes, | "clip-rule" @@ -2642,14 +2316,14 @@ export namespace JSX { | "color-interpolation" | "color-rendering" > {} - interface LightSourceElementSVGAttributes extends CoreSVGAttributes {} + interface LightSourceElementSVGAttributes extends SVGAttributes {} interface NewViewportSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, Pick { viewBox?: FunctionMaybe; } interface ShapeElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, Pick< PresentationSVGAttributes, | "color" @@ -2668,7 +2342,7 @@ export namespace JSX { | "pathLength" > {} interface TextContentElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, Pick< PresentationSVGAttributes, | "font-family" @@ -2745,7 +2419,7 @@ export namespace JSX { r?: FunctionMaybe; } interface ClipPathSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, ConditionalProcessingSVGAttributes, ExternalResourceSVGAttributes, StylableSVGAttributes, @@ -2759,7 +2433,7 @@ export namespace JSX { ExternalResourceSVGAttributes, StylableSVGAttributes, TransformableSVGAttributes {} - interface DescSVGAttributes extends CoreSVGAttributes, StylableSVGAttributes {} + interface DescSVGAttributes extends SVGAttributes, StylableSVGAttributes {} interface EllipseSVGAttributes extends GraphicsElementSVGAttributes, ShapeElementSVGAttributes, @@ -2840,7 +2514,7 @@ export namespace JSX { elevation?: FunctionMaybe; } interface FeDropShadowSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, FilterPrimitiveElementSVGAttributes, StylableSVGAttributes, Pick { @@ -2852,7 +2526,7 @@ export namespace JSX { extends FilterPrimitiveElementSVGAttributes, StylableSVGAttributes, Pick {} - interface FeFuncSVGAttributes extends CoreSVGAttributes { + interface FeFuncSVGAttributes extends SVGAttributes { amplitude?: FunctionMaybe; exponent?: FunctionMaybe; intercept?: FunctionMaybe; @@ -2877,9 +2551,7 @@ export namespace JSX { interface FeMergeSVGAttributes extends FilterPrimitiveElementSVGAttributes, StylableSVGAttributes {} - interface FeMergeNodeSVGAttributes - extends CoreSVGAttributes, - SingleInputFilterSVGAttributes {} + interface FeMergeNodeSVGAttributes extends SVGAttributes, SingleInputFilterSVGAttributes {} interface FeMorphologySVGAttributes extends FilterPrimitiveElementSVGAttributes, SingleInputFilterSVGAttributes, @@ -2933,7 +2605,7 @@ export namespace JSX { type?: FunctionMaybe<"fractalNoise" | "turbulence" | RemoveAttribute>; } interface FilterSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, ExternalResourceSVGAttributes, StylableSVGAttributes { filterRes?: FunctionMaybe; @@ -3022,8 +2694,8 @@ export namespace JSX { x?: FunctionMaybe; y?: FunctionMaybe; } - interface MetadataSVGAttributes extends CoreSVGAttributes {} - interface MPathSVGAttributes extends CoreSVGAttributes {} + interface MetadataSVGAttributes extends SVGAttributes {} + interface MPathSVGAttributes extends SVGAttributes {} interface PathSVGAttributes extends GraphicsElementSVGAttributes, ShapeElementSVGAttributes, @@ -3094,11 +2766,11 @@ export namespace JSX { y?: FunctionMaybe; } interface SetSVGAttributes - extends CoreSVGAttributes, + extends AnimationElementSVGAttributes, StylableSVGAttributes, AnimationTimingSVGAttributes {} interface StopSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, StylableSVGAttributes, Pick { offset?: FunctionMaybe; @@ -3112,15 +2784,13 @@ export namespace JSX { FitToViewBoxSVGAttributes, ZoomAndPanSVGAttributes, PresentationSVGAttributes, - WindowEventMap, - ElementEventMap { + EventHandlersWindow { "xmlns:xlink"?: FunctionMaybe; contentScriptType?: FunctionMaybe; contentStyleType?: FunctionMaybe; height?: FunctionMaybe; width?: FunctionMaybe; x?: FunctionMaybe; - xmlns?: FunctionMaybe; y?: FunctionMaybe; /** @deprecated */ @@ -3200,7 +2870,7 @@ export namespace JSX { } /** @see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use */ interface UseSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, StylableSVGAttributes, ConditionalProcessingSVGAttributes, GraphicsElementSVGAttributes, @@ -3214,28 +2884,14 @@ export namespace JSX { y?: FunctionMaybe; } interface ViewSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, ExternalResourceSVGAttributes, FitToViewBoxSVGAttributes, ZoomAndPanSVGAttributes { viewTarget?: FunctionMaybe; } - interface MathMLAttributes extends HTMLAttributes { - xmlns?: FunctionMaybe; - - displaystyle?: FunctionMaybe; - /** @deprecated */ - href?: FunctionMaybe; - /** @deprecated */ - mathbackground?: FunctionMaybe; - /** @deprecated */ - mathcolor?: FunctionMaybe; - /** @deprecated */ - mathsize?: FunctionMaybe; - nonce?: FunctionMaybe; - scriptlevel?: FunctionMaybe; - } + // MATH interface MathMLAnnotationElementAttributes extends MathMLAttributes { encoding?: FunctionMaybe; @@ -3442,8 +3098,6 @@ export namespace JSX { } interface MathMLSemanticsElementAttributes extends MathMLAttributes {} - /* MathMLDeprecatedElements */ - interface MathMLMencloseElementAttributes extends MathMLAttributes { /** @non-standard */ notation?: FunctionMaybe; @@ -3454,6 +3108,8 @@ export namespace JSX { separators?: FunctionMaybe; } + // TAGS + /** @type {HTMLElementTagNameMap} */ interface HTMLElementTags { /** @@ -3510,7 +3166,7 @@ export namespace JSX { * @url https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdo * @url https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement */ - bdo: HTMLAttributes; + bdo: BdoHTMLAttributes; /** * @url https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote * @url https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement @@ -4039,11 +3695,6 @@ export namespace JSX { * @url https://developer.mozilla.org/en-US/docs/Web/API/HTMLUnknownElement */ menuitem: HTMLAttributes; - /** - * @deprecated - * @url https://developer.mozilla.org/en-US/docs/Web/API/HTMLUnknownElement - */ - noindex: HTMLAttributes; /** * @deprecated * @url https://developer.mozilla.org/en-US/docs/Web/HTML/Element/param diff --git a/packages/dom-expressions/src/jsx.d.ts b/packages/dom-expressions/src/jsx.d.ts index 1e8016c3..1625d1f5 100644 --- a/packages/dom-expressions/src/jsx.d.ts +++ b/packages/dom-expressions/src/jsx.d.ts @@ -35,6 +35,8 @@ import * as csstype from "csstype"; * through the component tree, not the dom tree. * - Native event handlers use the namespace `on:` such `on:click`, and wont be delegated. bubbling * the dom tree. + * - A global case-insensitive event handler can be added by extending `EventHandlersElement` + * - A native `on:` event handler can be added by extending `CustomEvents` interface * * ## Boolean Attributes (property setter that accepts `true | false`): * @@ -77,6 +79,37 @@ import * as csstype from "csstype"; * * - The namespace `prop:` could be used to directly set properties in native elements and * custom-elements. `` equivalent to `el.myProp = true` + * + * ## Interfaces + * + * Events + * + * 1. An event handler goes in `EventHandlersElement` when: + * + * - `event` is global, that's to be defined in `HTMLElement` AND `SVGElement` AND `MathMLElement` + * - `event` is defined in `Element` (as `HTMLElement/MathMLElement/SVGElement` -> `Element`) + * 2. ``, ``, `` are special as these include `window` events + * 3. Any other event is special for its own tag. + * + * Browser Hierarchy + * + * - $Element (ex HTMLDivElement
) -> ... -> HTMLElement -> Element -> Node + * - $Element (all math elements are MathMLElement) MathMLElement -> Element -> Node + * - $Element`(ex SVGMaskElement ) -> ... -> SVGElement -> Element -> Node + * + * Attributes + * + *
-> ... -> HTMLAttributes -> ElementAttributes + * -> ... -> SVGAttributes -> ElementAttributes + * -> ... -> MathMLAttributes -> ElementAttributes + * + * ElementAttributes = `Element` + `Node` attributes (aka global attributes) + * + * HTMLAttributes = `HTMLElement` attributes (aka HTML global attributes) + * SVGAttributes = `SVGElement` attributes (aka SVG global attributes) + * MathMLAttributes = `MathMLElement` attributes (aka MATH global attributes) + * + * CustomAttributes = Framework attributes */ type DOMElement = Element; @@ -129,7 +162,8 @@ export namespace JSX { > = EHandler | BoundEventHandler; interface EventHandlerWithOptions> - extends AddEventListenerOptions { + extends AddEventListenerOptions, + EventListenerOptions { handleEvent: EHandler; } @@ -203,6 +237,7 @@ export namespace JSX { } interface CustomAttributes { ref?: T | ((el: T) => void) | undefined; + children?: Element | undefined; $ServerOnly?: boolean | undefined; } type Accessor = () => T; @@ -246,541 +281,22 @@ export namespace JSX { [Key in keyof CustomEvents as `on:${Key}`]?: EventHandlerWithOptionsUnion; }; - // events - interface ElementEventMap { - onFullscreenChange?: EventHandlerUnion | undefined; - onFullscreenError?: EventHandlerUnion | undefined; - - "on:fullscreenchange"?: EventHandlerWithOptionsUnion | undefined; - "on:fullscreenerror"?: EventHandlerWithOptionsUnion | undefined; + // CSS - /** @deprecated Use camelCase event handlers */ - onfullscreenchange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onfullscreenerror?: EventHandlerUnion | undefined; + interface CSSProperties extends csstype.PropertiesHyphen { + // Override + [key: `-${string}`]: string | number | undefined; } - interface WindowEventMap { - onAfterPrint?: EventHandlerUnion | undefined; - onBeforePrint?: EventHandlerUnion | undefined; - onBeforeUnload?: EventHandlerUnion | undefined; - onGamepadConnected?: EventHandlerUnion | undefined; - onGamepadDisconnected?: EventHandlerUnion | undefined; - onHashchange?: EventHandlerUnion | undefined; - onLanguageChange?: EventHandlerUnion | undefined; - onMessage?: EventHandlerUnion | undefined; - onMessageError?: EventHandlerUnion | undefined; - onOffline?: EventHandlerUnion | undefined; - onOnline?: EventHandlerUnion | undefined; - onPageHide?: EventHandlerUnion | undefined; - // TODO `PageRevealEvent` is currently undefined on TS - onPageReveal?: EventHandlerUnion | undefined; - onPageShow?: EventHandlerUnion | undefined; - // TODO `PageSwapEvent` is currently undefined on TS - onPageSwap?: EventHandlerUnion | undefined; - onPopstate?: EventHandlerUnion | undefined; - onRejectionHandled?: EventHandlerUnion | undefined; - onStorage?: EventHandlerUnion | undefined; - onUnhandledRejection?: EventHandlerUnion | undefined; - onUnload?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onafterprint?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onbeforeprint?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onbeforeunload?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ongamepadconnected?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ongamepaddisconnected?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onhashchange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onlanguagechange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmessage?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmessageerror?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onoffline?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ononline?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpagehide?: EventHandlerUnion | undefined; - // TODO `PageRevealEvent` is currently undefined in TS - /** @deprecated Use camelCase event handlers */ - onpagereveal?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpageshow?: EventHandlerUnion | undefined; - // TODO `PageSwapEvent` is currently undefined in TS - /** @deprecated Use camelCase event handlers */ - onpageswap?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpopstate?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onrejectionhandled?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onstorage?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onunhandledrejection?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onunload?: EventHandlerUnion | undefined; + // TODO: Should we allow this? + // type ClassKeys = `class:${string}`; + // type CSSKeys = Exclude; - "on:afterprint"?: EventHandlerWithOptionsUnion | undefined; - "on:beforeprint"?: EventHandlerWithOptionsUnion | undefined; - "on:beforeunload"?: EventHandlerWithOptionsUnion | undefined; - "on:gamepadconnected"?: EventHandlerWithOptionsUnion | undefined; - "on:gamepaddisconnected"?: EventHandlerWithOptionsUnion | undefined; - "on:hashchange"?: EventHandlerWithOptionsUnion | undefined; - "on:languagechange"?: EventHandlerWithOptionsUnion | undefined; - "on:message"?: EventHandlerWithOptionsUnion | undefined; - "on:messageerror"?: EventHandlerWithOptionsUnion | undefined; - "on:offline"?: EventHandlerWithOptionsUnion | undefined; - "on:online"?: EventHandlerWithOptionsUnion | undefined; - "on:pagehide"?: EventHandlerWithOptionsUnion | undefined; - // TODO `PageRevealEvent` is currently undefined in TS - "on:pagereveal"?: EventHandlerWithOptionsUnion | undefined; - "on:pageshow"?: EventHandlerWithOptionsUnion | undefined; - // TODO `PageSwapEvent` is currently undefined in TS - "on:pageswap"?: EventHandlerWithOptionsUnion | undefined; - "on:popstate"?: EventHandlerWithOptionsUnion | undefined; - "on:rejectionhandled"?: EventHandlerWithOptionsUnion | undefined; - "on:storage"?: EventHandlerWithOptionsUnion | undefined; - "on:unhandledrejection"?: EventHandlerWithOptionsUnion | undefined; - "on:unload"?: EventHandlerWithOptionsUnion | undefined; - } + // type CSSAttributes = { + // [key in CSSKeys as `style:${key}`]: csstype.PropertiesHyphen[key]; + // }; - interface CustomEventHandlersCamelCase { - onAbort?: EventHandlerUnion | undefined; - onAnimationCancel?: EventHandlerUnion | undefined; - onAnimationEnd?: EventHandlerUnion | undefined; - onAnimationIteration?: EventHandlerUnion | undefined; - onAnimationStart?: EventHandlerUnion | undefined; - onAuxClick?: EventHandlerUnion | undefined; - onBeforeInput?: InputEventHandlerUnion | undefined; - onBeforeToggle?: EventHandlerUnion | undefined; - onBlur?: FocusEventHandlerUnion | undefined; - onCancel?: EventHandlerUnion | undefined; - onCanPlay?: EventHandlerUnion | undefined; - onCanPlayThrough?: EventHandlerUnion | undefined; - onChange?: ChangeEventHandlerUnion | undefined; - onClick?: EventHandlerUnion | undefined; - // TODO `CommandEvent` is currently undefined in TS - onCommand?: EventHandlerUnion | undefined; - onCompositionEnd?: EventHandlerUnion | undefined; - onCompositionStart?: EventHandlerUnion | undefined; - onCompositionUpdate?: EventHandlerUnion | undefined; - onContextMenu?: EventHandlerUnion | undefined; - onCopy?: EventHandlerUnion | undefined; - onCueChange?: EventHandlerUnion | undefined; - onCut?: EventHandlerUnion | undefined; - onDblClick?: EventHandlerUnion | undefined; - onDrag?: EventHandlerUnion | undefined; - onDragEnd?: EventHandlerUnion | undefined; - onDragEnter?: EventHandlerUnion | undefined; - onDragExit?: EventHandlerUnion | undefined; - onDragLeave?: EventHandlerUnion | undefined; - onDragOver?: EventHandlerUnion | undefined; - onDragStart?: EventHandlerUnion | undefined; - onDrop?: EventHandlerUnion | undefined; - onDurationChange?: EventHandlerUnion | undefined; - onEmptied?: EventHandlerUnion | undefined; - onEnded?: EventHandlerUnion | undefined; - onError?: EventHandlerUnion | undefined; - onFocus?: FocusEventHandlerUnion | undefined; - onFocusIn?: FocusEventHandlerUnion | undefined; - onFocusOut?: FocusEventHandlerUnion | undefined; - onGotPointerCapture?: EventHandlerUnion | undefined; - onInput?: InputEventHandlerUnion | undefined; - onInvalid?: EventHandlerUnion | undefined; - onKeyDown?: EventHandlerUnion | undefined; - onKeyPress?: EventHandlerUnion | undefined; - onKeyUp?: EventHandlerUnion | undefined; - onLoad?: EventHandlerUnion | undefined; - onLoadedData?: EventHandlerUnion | undefined; - onLoadedMetadata?: EventHandlerUnion | undefined; - onLoadStart?: EventHandlerUnion | undefined; - onLostPointerCapture?: EventHandlerUnion | undefined; - onMouseDown?: EventHandlerUnion | undefined; - onMouseEnter?: EventHandlerUnion | undefined; - onMouseLeave?: EventHandlerUnion | undefined; - onMouseMove?: EventHandlerUnion | undefined; - onMouseOut?: EventHandlerUnion | undefined; - onMouseOver?: EventHandlerUnion | undefined; - onMouseUp?: EventHandlerUnion | undefined; - onPaste?: EventHandlerUnion | undefined; - onPause?: EventHandlerUnion | undefined; - onPlay?: EventHandlerUnion | undefined; - onPlaying?: EventHandlerUnion | undefined; - onPointerCancel?: EventHandlerUnion | undefined; - onPointerDown?: EventHandlerUnion | undefined; - onPointerEnter?: EventHandlerUnion | undefined; - onPointerLeave?: EventHandlerUnion | undefined; - onPointerMove?: EventHandlerUnion | undefined; - onPointerOut?: EventHandlerUnion | undefined; - onPointerOver?: EventHandlerUnion | undefined; - onPointerUp?: EventHandlerUnion | undefined; - onProgress?: EventHandlerUnion | undefined; - onRateChange?: EventHandlerUnion | undefined; - onReset?: EventHandlerUnion | undefined; - onResize?: EventHandlerUnion | undefined; - onScroll?: EventHandlerUnion | undefined; - onScrollEnd?: EventHandlerUnion | undefined; - onSecurityPolicyViolation?: EventHandlerUnion | undefined; - onSeeked?: EventHandlerUnion | undefined; - onSeeking?: EventHandlerUnion | undefined; - onSelect?: EventHandlerUnion | undefined; - onSelectionChange?: EventHandlerUnion | undefined; - onSlotChange?: EventHandlerUnion | undefined; - onStalled?: EventHandlerUnion | undefined; - onSubmit?: EventHandlerUnion | undefined; - onSuspend?: EventHandlerUnion | undefined; - onTimeUpdate?: EventHandlerUnion | undefined; - onToggle?: EventHandlerUnion | undefined; - onTouchCancel?: EventHandlerUnion | undefined; - onTouchEnd?: EventHandlerUnion | undefined; - onTouchMove?: EventHandlerUnion | undefined; - onTouchStart?: EventHandlerUnion | undefined; - onTransitionCancel?: EventHandlerUnion | undefined; - onTransitionEnd?: EventHandlerUnion | undefined; - onTransitionRun?: EventHandlerUnion | undefined; - onTransitionStart?: EventHandlerUnion | undefined; - onVolumeChange?: EventHandlerUnion | undefined; - onWaiting?: EventHandlerUnion | undefined; - onWheel?: EventHandlerUnion | undefined; - } - /** @type {GlobalEventHandlers} */ - interface CustomEventHandlersLowerCase { - /** @deprecated Use camelCase event handlers */ - onabort?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onanimationcancel?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onanimationend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onanimationiteration?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onanimationstart?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onauxclick?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onbeforeinput?: InputEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onbeforetoggle?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onblur?: FocusEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncancel?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncanplay?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncanplaythrough?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onchange?: ChangeEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onclick?: EventHandlerUnion | undefined; - // TODO `CommandEvent` is currently undefined in TS - /** @deprecated Use camelCase event handlers */ - oncommand?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncompositionend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncompositionstart?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncompositionupdate?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncontextmenu?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncopy?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncuechange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncut?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondblclick?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondrag?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondragend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondragenter?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondragexit?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondragleave?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondragover?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondragstart?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondrop?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ondurationchange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onemptied?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onended?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onerror?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onfocus?: FocusEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onfocusin?: FocusEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onfocusout?: FocusEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ongotpointercapture?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oninput?: InputEventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oninvalid?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onkeydown?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onkeypress?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onkeyup?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onload?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onloadeddata?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onloadedmetadata?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onloadstart?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onlostpointercapture?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmousedown?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmouseenter?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmouseleave?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmousemove?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmouseout?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmouseover?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onmouseup?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpaste?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpause?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onplay?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onplaying?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointercancel?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointerdown?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointerenter?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointerleave?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointermove?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointerout?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointerover?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onpointerup?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onprogress?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onratechange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onreset?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onresize?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onscroll?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onscrollend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onsecuritypolicyviolation?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onseeked?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onseeking?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onselect?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onselectionchange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onslotchange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onstalled?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onsubmit?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onsuspend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontimeupdate?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontoggle?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontouchcancel?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontouchend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontouchmove?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontouchstart?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontransitioncancel?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontransitionend?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontransitionrun?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - ontransitionstart?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onvolumechange?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onwaiting?: EventHandlerUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onwheel?: EventHandlerUnion | undefined; - } - - interface CustomEventHandlersNamespaced { - "on:abort"?: EventHandlerWithOptionsUnion | undefined; - "on:animationcancel"?: EventHandlerWithOptionsUnion | undefined; - "on:animationend"?: EventHandlerWithOptionsUnion | undefined; - "on:animationiteration"?: EventHandlerWithOptionsUnion | undefined; - "on:animationstart"?: EventHandlerWithOptionsUnion | undefined; - "on:auxclick"?: EventHandlerWithOptionsUnion | undefined; - "on:beforeinput"?: - | EventHandlerWithOptionsUnion> - | undefined; - "on:beforetoggle"?: EventHandlerWithOptionsUnion | undefined; - "on:blur"?: - | EventHandlerWithOptionsUnion> - | undefined; - "on:cancel"?: EventHandlerWithOptionsUnion | undefined; - "on:canplay"?: EventHandlerWithOptionsUnion | undefined; - "on:canplaythrough"?: EventHandlerWithOptionsUnion | undefined; - "on:change"?: EventHandlerWithOptionsUnion> | undefined; - "on:click"?: EventHandlerWithOptionsUnion | undefined; - // TODO `CommandEvent` is currently undefined in TS - "on:command"?: EventHandlerWithOptionsUnion | undefined; - "on:compositionend"?: EventHandlerWithOptionsUnion | undefined; - "on:compositionstart"?: EventHandlerWithOptionsUnion | undefined; - "on:compositionupdate"?: EventHandlerWithOptionsUnion | undefined; - "on:contextmenu"?: EventHandlerWithOptionsUnion | undefined; - "on:copy"?: EventHandlerWithOptionsUnion | undefined; - "on:cuechange"?: EventHandlerWithOptionsUnion | undefined; - "on:cut"?: EventHandlerWithOptionsUnion | undefined; - "on:dblclick"?: EventHandlerWithOptionsUnion | undefined; - "on:drag"?: EventHandlerWithOptionsUnion | undefined; - "on:dragend"?: EventHandlerWithOptionsUnion | undefined; - "on:dragenter"?: EventHandlerWithOptionsUnion | undefined; - "on:dragexit"?: EventHandlerWithOptionsUnion | undefined; - "on:dragleave"?: EventHandlerWithOptionsUnion | undefined; - "on:dragover"?: EventHandlerWithOptionsUnion | undefined; - "on:dragstart"?: EventHandlerWithOptionsUnion | undefined; - "on:drop"?: EventHandlerWithOptionsUnion | undefined; - "on:durationchange"?: EventHandlerWithOptionsUnion | undefined; - "on:emptied"?: EventHandlerWithOptionsUnion | undefined; - "on:ended"?: EventHandlerWithOptionsUnion | undefined; - "on:error"?: EventHandlerWithOptionsUnion | undefined; - "on:focus"?: - | EventHandlerWithOptionsUnion> - | undefined; - "on:focusin"?: - | EventHandlerWithOptionsUnion> - | undefined; - "on:focusout"?: - | EventHandlerWithOptionsUnion> - | undefined; - "on:gotpointercapture"?: EventHandlerWithOptionsUnion | undefined; - "on:input"?: - | EventHandlerWithOptionsUnion> - | undefined; - "on:invalid"?: EventHandlerWithOptionsUnion | undefined; - "on:keydown"?: EventHandlerWithOptionsUnion | undefined; - "on:keypress"?: EventHandlerWithOptionsUnion | undefined; - "on:keyup"?: EventHandlerWithOptionsUnion | undefined; - "on:load"?: EventHandlerWithOptionsUnion | undefined; - "on:loadeddata"?: EventHandlerWithOptionsUnion | undefined; - "on:loadedmetadata"?: EventHandlerWithOptionsUnion | undefined; - "on:loadstart"?: EventHandlerWithOptionsUnion | undefined; - "on:lostpointercapture"?: EventHandlerWithOptionsUnion | undefined; - "on:mousedown"?: EventHandlerWithOptionsUnion | undefined; - "on:mouseenter"?: EventHandlerWithOptionsUnion | undefined; - "on:mouseleave"?: EventHandlerWithOptionsUnion | undefined; - "on:mousemove"?: EventHandlerWithOptionsUnion | undefined; - "on:mouseout"?: EventHandlerWithOptionsUnion | undefined; - "on:mouseover"?: EventHandlerWithOptionsUnion | undefined; - "on:mouseup"?: EventHandlerWithOptionsUnion | undefined; - "on:paste"?: EventHandlerWithOptionsUnion | undefined; - "on:pause"?: EventHandlerWithOptionsUnion | undefined; - "on:play"?: EventHandlerWithOptionsUnion | undefined; - "on:playing"?: EventHandlerWithOptionsUnion | undefined; - "on:pointercancel"?: EventHandlerWithOptionsUnion | undefined; - "on:pointerdown"?: EventHandlerWithOptionsUnion | undefined; - "on:pointerenter"?: EventHandlerWithOptionsUnion | undefined; - "on:pointerleave"?: EventHandlerWithOptionsUnion | undefined; - "on:pointermove"?: EventHandlerWithOptionsUnion | undefined; - "on:pointerout"?: EventHandlerWithOptionsUnion | undefined; - "on:pointerover"?: EventHandlerWithOptionsUnion | undefined; - "on:pointerup"?: EventHandlerWithOptionsUnion | undefined; - "on:progress"?: EventHandlerWithOptionsUnion | undefined; - "on:ratechange"?: EventHandlerWithOptionsUnion | undefined; - "on:reset"?: EventHandlerWithOptionsUnion | undefined; - "on:resize"?: EventHandlerWithOptionsUnion | undefined; - "on:scroll"?: EventHandlerWithOptionsUnion | undefined; - "on:scrollend"?: EventHandlerWithOptionsUnion | undefined; - "on:securitypolicyviolation"?: - | EventHandlerWithOptionsUnion - | undefined; - "on:seeked"?: EventHandlerWithOptionsUnion | undefined; - "on:seeking"?: EventHandlerWithOptionsUnion | undefined; - "on:select"?: EventHandlerWithOptionsUnion | undefined; - "on:selectionchange"?: EventHandlerWithOptionsUnion | undefined; - "on:slotchange"?: EventHandlerWithOptionsUnion | undefined; - "on:stalled"?: EventHandlerWithOptionsUnion | undefined; - "on:submit"?: EventHandlerWithOptionsUnion | undefined; - "on:suspend"?: EventHandlerWithOptionsUnion | undefined; - "on:timeupdate"?: EventHandlerWithOptionsUnion | undefined; - "on:toggle"?: EventHandlerWithOptionsUnion | undefined; - "on:touchcancel"?: EventHandlerWithOptionsUnion | undefined; - "on:touchend"?: EventHandlerWithOptionsUnion | undefined; - "on:touchmove"?: EventHandlerWithOptionsUnion | undefined; - "on:touchstart"?: EventHandlerWithOptionsUnion | undefined; - "on:transitioncancel"?: EventHandlerWithOptionsUnion | undefined; - "on:transitionend"?: EventHandlerWithOptionsUnion | undefined; - "on:transitionrun"?: EventHandlerWithOptionsUnion | undefined; - "on:transitionstart"?: EventHandlerWithOptionsUnion | undefined; - "on:volumechange"?: EventHandlerWithOptionsUnion | undefined; - "on:waiting"?: EventHandlerWithOptionsUnion | undefined; - "on:wheel"?: EventHandlerWithOptionsUnion | undefined; - } - - interface DOMAttributes - extends CustomAttributes, - DirectiveAttributes, - DirectiveFunctionAttributes, - PropAttributes, - AttrAttributes, - BoolAttributes, - OnAttributes, - CustomEventHandlersCamelCase, - CustomEventHandlersLowerCase, - CustomEventHandlersNamespaced { - children?: Element | undefined; - innerHTML?: string; - innerText?: string | number; - textContent?: string | number; - } - - interface CSSProperties extends csstype.PropertiesHyphen { - // Override - [key: `-${string}`]: string | number | undefined; - } + // BOOLEAN /** * Boolean and Pseudo-Boolean Attributes Helpers. @@ -797,50 +313,7 @@ export namespace JSX { type RemoveAttribute = undefined | false; - /** Enumerated Attributes */ - type HTMLAutocapitalize = "off" | "none" | "on" | "sentences" | "words" | "characters"; - type HTMLDir = "ltr" | "rtl" | "auto"; - type HTMLFormEncType = "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain"; - type HTMLFormMethod = "post" | "get" | "dialog"; - type HTMLCrossorigin = "anonymous" | "use-credentials" | EnumeratedAcceptsEmpty; - type HTMLReferrerPolicy = - | "no-referrer" - | "no-referrer-when-downgrade" - | "origin" - | "origin-when-cross-origin" - | "same-origin" - | "strict-origin" - | "strict-origin-when-cross-origin" - | "unsafe-url"; - type HTMLIframeSandbox = - | "allow-downloads-without-user-activation" - | "allow-downloads" - | "allow-forms" - | "allow-modals" - | "allow-orientation-lock" - | "allow-pointer-lock" - | "allow-popups" - | "allow-popups-to-escape-sandbox" - | "allow-presentation" - | "allow-same-origin" - | "allow-scripts" - | "allow-storage-access-by-user-activation" - | "allow-top-navigation" - | "allow-top-navigation-by-user-activation" - | "allow-top-navigation-to-custom-protocols"; - type HTMLLinkAs = - | "audio" - | "document" - | "embed" - | "fetch" - | "font" - | "image" - | "object" - | "script" - | "style" - | "track" - | "video" - | "worker"; + // ARIA // All the WAI-ARIA 1.1 attributes from https://www.w3.org/TR/wai-aria-1.1/ interface AriaAttributes { @@ -1225,36 +698,426 @@ export namespace JSX { | RemoveAttribute; } - // TODO: Should we allow this? - // type ClassKeys = `class:${string}`; - // type CSSKeys = Exclude; + // EVENTS + + /** + * `Window` events, defined for ``, ``, `` tags. + * + * Excluding `EventHandlersElement` events already defined as globals that all tags share, such as + * `onblur`. + */ + interface EventHandlersWindow { + onAfterPrint?: EventHandlerUnion | undefined; + onBeforePrint?: EventHandlerUnion | undefined; + onBeforeUnload?: EventHandlerUnion | undefined; + onGamepadConnected?: EventHandlerUnion | undefined; + onGamepadDisconnected?: EventHandlerUnion | undefined; + onHashchange?: EventHandlerUnion | undefined; + onLanguageChange?: EventHandlerUnion | undefined; + onMessage?: EventHandlerUnion | undefined; + onMessageError?: EventHandlerUnion | undefined; + onOffline?: EventHandlerUnion | undefined; + onOnline?: EventHandlerUnion | undefined; + onPageHide?: EventHandlerUnion | undefined; + // TODO `PageRevealEvent` is currently undefined on TS + onPageReveal?: EventHandlerUnion | undefined; + onPageShow?: EventHandlerUnion | undefined; + // TODO `PageSwapEvent` is currently undefined on TS + onPageSwap?: EventHandlerUnion | undefined; + onPopstate?: EventHandlerUnion | undefined; + onRejectionHandled?: EventHandlerUnion | undefined; + onStorage?: EventHandlerUnion | undefined; + onUnhandledRejection?: EventHandlerUnion | undefined; + onUnload?: EventHandlerUnion | undefined; + + "on:afterprint"?: EventHandlerWithOptionsUnion | undefined; + "on:beforeprint"?: EventHandlerWithOptionsUnion | undefined; + "on:beforeunload"?: EventHandlerWithOptionsUnion | undefined; + "on:gamepadconnected"?: EventHandlerWithOptionsUnion | undefined; + "on:gamepaddisconnected"?: EventHandlerWithOptionsUnion | undefined; + "on:hashchange"?: EventHandlerWithOptionsUnion | undefined; + "on:languagechange"?: EventHandlerWithOptionsUnion | undefined; + "on:message"?: EventHandlerWithOptionsUnion | undefined; + "on:messageerror"?: EventHandlerWithOptionsUnion | undefined; + "on:offline"?: EventHandlerWithOptionsUnion | undefined; + "on:online"?: EventHandlerWithOptionsUnion | undefined; + "on:pagehide"?: EventHandlerWithOptionsUnion | undefined; + // TODO `PageRevealEvent` is currently undefined in TS + "on:pagereveal"?: EventHandlerWithOptionsUnion | undefined; + "on:pageshow"?: EventHandlerWithOptionsUnion | undefined; + // TODO `PageSwapEvent` is currently undefined in TS + "on:pageswap"?: EventHandlerWithOptionsUnion | undefined; + "on:popstate"?: EventHandlerWithOptionsUnion | undefined; + "on:rejectionhandled"?: EventHandlerWithOptionsUnion | undefined; + "on:storage"?: EventHandlerWithOptionsUnion | undefined; + "on:unhandledrejection"?: EventHandlerWithOptionsUnion | undefined; + "on:unload"?: EventHandlerWithOptionsUnion | undefined; + } + + /** + * Global `EventHandlersElement`, defined for all tags. + * + * That's events defined and shared BY ALL of the `HTMLElement/SVGElement/MathMLElement` + * interfaces. + * + * Includes events defined for the `Element` interface. + */ + interface EventHandlersElement { + onAbort?: EventHandlerUnion | undefined; + onAnimationCancel?: EventHandlerUnion | undefined; + onAnimationEnd?: EventHandlerUnion | undefined; + onAnimationIteration?: EventHandlerUnion | undefined; + onAnimationStart?: EventHandlerUnion | undefined; + onAuxClick?: EventHandlerUnion | undefined; + onBeforeCopy?: EventHandlerUnion | undefined; + onBeforeCut?: EventHandlerUnion | undefined; + onBeforeInput?: InputEventHandlerUnion | undefined; + onBeforeMatch?: EventHandlerUnion | undefined; + onBeforePaste?: EventHandlerUnion | undefined; + onBeforeToggle?: EventHandlerUnion | undefined; + onBeforeXRSelect?: EventHandlerUnion | undefined; + onBlur?: FocusEventHandlerUnion | undefined; + onCancel?: EventHandlerUnion | undefined; + onCanPlay?: EventHandlerUnion | undefined; + onCanPlayThrough?: EventHandlerUnion | undefined; + onChange?: ChangeEventHandlerUnion | undefined; + onClick?: EventHandlerUnion | undefined; + onClose?: EventHandlerUnion | undefined; + // TODO `CommandEvent` is currently undefined in TS + onCommand?: EventHandlerUnion | undefined; + onCompositionEnd?: EventHandlerUnion | undefined; + onCompositionStart?: EventHandlerUnion | undefined; + onCompositionUpdate?: EventHandlerUnion | undefined; + onContentVisibilityAutoStateChange?: + | EventHandlerUnion + | undefined; + onContextLost?: EventHandlerUnion | undefined; + onContextMenu?: EventHandlerUnion | undefined; + onContextRestored?: EventHandlerUnion | undefined; + onCopy?: EventHandlerUnion | undefined; + onCueChange?: EventHandlerUnion | undefined; + onCut?: EventHandlerUnion | undefined; + onDblClick?: EventHandlerUnion | undefined; + onDrag?: EventHandlerUnion | undefined; + onDragEnd?: EventHandlerUnion | undefined; + onDragEnter?: EventHandlerUnion | undefined; + onDragExit?: EventHandlerUnion | undefined; + onDragLeave?: EventHandlerUnion | undefined; + onDragOver?: EventHandlerUnion | undefined; + onDragStart?: EventHandlerUnion | undefined; + onDrop?: EventHandlerUnion | undefined; + onDurationChange?: EventHandlerUnion | undefined; + onEmptied?: EventHandlerUnion | undefined; + onEnded?: EventHandlerUnion | undefined; + onError?: EventHandlerUnion | undefined; + onFocus?: FocusEventHandlerUnion | undefined; + onFocusIn?: FocusEventHandlerUnion | undefined; + onFocusOut?: FocusEventHandlerUnion | undefined; + onFormData?: EventHandlerUnion | undefined; + onFullscreenChange?: EventHandlerUnion | undefined; + onFullscreenError?: EventHandlerUnion | undefined; + onGotPointerCapture?: EventHandlerUnion | undefined; + onInput?: InputEventHandlerUnion | undefined; + onInvalid?: EventHandlerUnion | undefined; + onKeyDown?: EventHandlerUnion | undefined; + onKeyPress?: EventHandlerUnion | undefined; + onKeyUp?: EventHandlerUnion | undefined; + onLoad?: EventHandlerUnion | undefined; + onLoadedData?: EventHandlerUnion | undefined; + onLoadedMetadata?: EventHandlerUnion | undefined; + onLoadStart?: EventHandlerUnion | undefined; + onLostPointerCapture?: EventHandlerUnion | undefined; + onMouseDown?: EventHandlerUnion | undefined; + onMouseEnter?: EventHandlerUnion | undefined; + onMouseLeave?: EventHandlerUnion | undefined; + onMouseMove?: EventHandlerUnion | undefined; + onMouseOut?: EventHandlerUnion | undefined; + onMouseOver?: EventHandlerUnion | undefined; + onMouseUp?: EventHandlerUnion | undefined; + onPaste?: EventHandlerUnion | undefined; + onPause?: EventHandlerUnion | undefined; + onPlay?: EventHandlerUnion | undefined; + onPlaying?: EventHandlerUnion | undefined; + onPointerCancel?: EventHandlerUnion | undefined; + onPointerDown?: EventHandlerUnion | undefined; + onPointerEnter?: EventHandlerUnion | undefined; + onPointerLeave?: EventHandlerUnion | undefined; + onPointerMove?: EventHandlerUnion | undefined; + onPointerOut?: EventHandlerUnion | undefined; + onPointerOver?: EventHandlerUnion | undefined; + onPointerRawUpdate?: EventHandlerUnion | undefined; + onPointerUp?: EventHandlerUnion | undefined; + onProgress?: EventHandlerUnion | undefined; + onRateChange?: EventHandlerUnion | undefined; + onReset?: EventHandlerUnion | undefined; + onResize?: EventHandlerUnion | undefined; + onScroll?: EventHandlerUnion | undefined; + onScrollEnd?: EventHandlerUnion | undefined; + // todo `SnapEvent` is currently undefined in TS + onScrollSnapChange?: EventHandlerUnion | undefined; + // todo `SnapEvent` is currently undefined in TS + onScrollSnapChanging?: EventHandlerUnion | undefined; + onSecurityPolicyViolation?: EventHandlerUnion | undefined; + onSeeked?: EventHandlerUnion | undefined; + onSeeking?: EventHandlerUnion | undefined; + onSelect?: EventHandlerUnion | undefined; + onSelectionChange?: EventHandlerUnion | undefined; + onSelectStart?: EventHandlerUnion | undefined; + onSlotChange?: EventHandlerUnion | undefined; + onStalled?: EventHandlerUnion | undefined; + onSubmit?: EventHandlerUnion | undefined; + onSuspend?: EventHandlerUnion | undefined; + onTimeUpdate?: EventHandlerUnion | undefined; + onToggle?: EventHandlerUnion | undefined; + onTouchCancel?: EventHandlerUnion | undefined; + onTouchEnd?: EventHandlerUnion | undefined; + onTouchMove?: EventHandlerUnion | undefined; + onTouchStart?: EventHandlerUnion | undefined; + onTransitionCancel?: EventHandlerUnion | undefined; + onTransitionEnd?: EventHandlerUnion | undefined; + onTransitionRun?: EventHandlerUnion | undefined; + onTransitionStart?: EventHandlerUnion | undefined; + onVolumeChange?: EventHandlerUnion | undefined; + onWaiting?: EventHandlerUnion | undefined; + onWheel?: EventHandlerUnion | undefined; + + "on:abort"?: EventHandlerWithOptionsUnion | undefined; + "on:animationcancel"?: EventHandlerWithOptionsUnion | undefined; + "on:animationend"?: EventHandlerWithOptionsUnion | undefined; + "on:animationiteration"?: EventHandlerWithOptionsUnion | undefined; + "on:animationstart"?: EventHandlerWithOptionsUnion | undefined; + "on:auxclick"?: EventHandlerWithOptionsUnion | undefined; + "on:beforecopy"?: EventHandlerWithOptionsUnion | undefined; + "on:beforecut"?: EventHandlerWithOptionsUnion | undefined; + "on:beforeinput"?: + | EventHandlerWithOptionsUnion> + | undefined; + "on:beforematch"?: EventHandlerWithOptionsUnion | undefined; + "on:beforepaste"?: EventHandlerWithOptionsUnion | undefined; + "on:beforetoggle"?: EventHandlerWithOptionsUnion | undefined; + "on:beforexrselect"?: EventHandlerWithOptionsUnion | undefined; + "on:blur"?: + | EventHandlerWithOptionsUnion> + | undefined; + "on:cancel"?: EventHandlerWithOptionsUnion | undefined; + "on:canplay"?: EventHandlerWithOptionsUnion | undefined; + "on:canplaythrough"?: EventHandlerWithOptionsUnion | undefined; + "on:change"?: EventHandlerWithOptionsUnion> | undefined; + "on:click"?: EventHandlerWithOptionsUnion | undefined; + "on:close"?: EventHandlerWithOptionsUnion | undefined; + // TODO `CommandEvent` is currently undefined in TS + "on:command"?: EventHandlerWithOptionsUnion | undefined; + "on:compositionend"?: EventHandlerWithOptionsUnion | undefined; + "on:compositionstart"?: EventHandlerWithOptionsUnion | undefined; + "on:compositionupdate"?: EventHandlerWithOptionsUnion | undefined; + "on:contentvisibilityautostatechange"?: + | EventHandlerWithOptionsUnion + | undefined; + "on:contextlost"?: EventHandlerWithOptionsUnion | undefined; + "on:contextmenu"?: EventHandlerWithOptionsUnion | undefined; + "on:contextrestored"?: EventHandlerWithOptionsUnion | undefined; + "on:copy"?: EventHandlerWithOptionsUnion | undefined; + "on:cuechange"?: EventHandlerWithOptionsUnion | undefined; + "on:cut"?: EventHandlerWithOptionsUnion | undefined; + "on:dblclick"?: EventHandlerWithOptionsUnion | undefined; + "on:drag"?: EventHandlerWithOptionsUnion | undefined; + "on:dragend"?: EventHandlerWithOptionsUnion | undefined; + "on:dragenter"?: EventHandlerWithOptionsUnion | undefined; + "on:dragexit"?: EventHandlerWithOptionsUnion | undefined; + "on:dragleave"?: EventHandlerWithOptionsUnion | undefined; + "on:dragover"?: EventHandlerWithOptionsUnion | undefined; + "on:dragstart"?: EventHandlerWithOptionsUnion | undefined; + "on:drop"?: EventHandlerWithOptionsUnion | undefined; + "on:durationchange"?: EventHandlerWithOptionsUnion | undefined; + "on:emptied"?: EventHandlerWithOptionsUnion | undefined; + "on:ended"?: EventHandlerWithOptionsUnion | undefined; + "on:error"?: EventHandlerWithOptionsUnion | undefined; + "on:focus"?: + | EventHandlerWithOptionsUnion> + | undefined; + "on:focusin"?: + | EventHandlerWithOptionsUnion> + | undefined; + "on:focusout"?: + | EventHandlerWithOptionsUnion> + | undefined; + "on:formdata"?: EventHandlerWithOptionsUnion | undefined; + "on:fullscreenchange"?: EventHandlerWithOptionsUnion | undefined; + "on:fullscreenerror"?: EventHandlerWithOptionsUnion | undefined; + "on:gotpointercapture"?: EventHandlerWithOptionsUnion | undefined; + "on:input"?: + | EventHandlerWithOptionsUnion> + | undefined; + "on:invalid"?: EventHandlerWithOptionsUnion | undefined; + "on:keydown"?: EventHandlerWithOptionsUnion | undefined; + "on:keypress"?: EventHandlerWithOptionsUnion | undefined; + "on:keyup"?: EventHandlerWithOptionsUnion | undefined; + "on:load"?: EventHandlerWithOptionsUnion | undefined; + "on:loadeddata"?: EventHandlerWithOptionsUnion | undefined; + "on:loadedmetadata"?: EventHandlerWithOptionsUnion | undefined; + "on:loadstart"?: EventHandlerWithOptionsUnion | undefined; + "on:lostpointercapture"?: EventHandlerWithOptionsUnion | undefined; + "on:mousedown"?: EventHandlerWithOptionsUnion | undefined; + "on:mouseenter"?: EventHandlerWithOptionsUnion | undefined; + "on:mouseleave"?: EventHandlerWithOptionsUnion | undefined; + "on:mousemove"?: EventHandlerWithOptionsUnion | undefined; + "on:mouseout"?: EventHandlerWithOptionsUnion | undefined; + "on:mouseover"?: EventHandlerWithOptionsUnion | undefined; + "on:mouseup"?: EventHandlerWithOptionsUnion | undefined; + "on:paste"?: EventHandlerWithOptionsUnion | undefined; + "on:pause"?: EventHandlerWithOptionsUnion | undefined; + "on:play"?: EventHandlerWithOptionsUnion | undefined; + "on:playing"?: EventHandlerWithOptionsUnion | undefined; + "on:pointercancel"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerdown"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerenter"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerleave"?: EventHandlerWithOptionsUnion | undefined; + "on:pointermove"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerout"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerover"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerrawupdate"?: EventHandlerWithOptionsUnion | undefined; + "on:pointerup"?: EventHandlerWithOptionsUnion | undefined; + "on:progress"?: EventHandlerWithOptionsUnion | undefined; + "on:ratechange"?: EventHandlerWithOptionsUnion | undefined; + "on:reset"?: EventHandlerWithOptionsUnion | undefined; + "on:resize"?: EventHandlerWithOptionsUnion | undefined; + "on:scroll"?: EventHandlerWithOptionsUnion | undefined; + "on:scrollend"?: EventHandlerWithOptionsUnion | undefined; + // todo `SnapEvent` is currently undefined in TS + "on:scrollsnapchange"?: EventHandlerWithOptionsUnion | undefined; + // todo `SnapEvent` is currently undefined in TS + "on:scrollsnapchanging"?: EventHandlerWithOptionsUnion | undefined; + "on:securitypolicyviolation"?: + | EventHandlerWithOptionsUnion + | undefined; + "on:seeked"?: EventHandlerWithOptionsUnion | undefined; + "on:seeking"?: EventHandlerWithOptionsUnion | undefined; + "on:select"?: EventHandlerWithOptionsUnion | undefined; + "on:selectionchange"?: EventHandlerWithOptionsUnion | undefined; + "on:selectstart"?: EventHandlerWithOptionsUnion | undefined; + "on:slotchange"?: EventHandlerWithOptionsUnion | undefined; + "on:stalled"?: EventHandlerWithOptionsUnion | undefined; + "on:submit"?: EventHandlerWithOptionsUnion | undefined; + "on:suspend"?: EventHandlerWithOptionsUnion | undefined; + "on:timeupdate"?: EventHandlerWithOptionsUnion | undefined; + "on:toggle"?: EventHandlerWithOptionsUnion | undefined; + "on:touchcancel"?: EventHandlerWithOptionsUnion | undefined; + "on:touchend"?: EventHandlerWithOptionsUnion | undefined; + "on:touchmove"?: EventHandlerWithOptionsUnion | undefined; + "on:touchstart"?: EventHandlerWithOptionsUnion | undefined; + "on:transitioncancel"?: EventHandlerWithOptionsUnion | undefined; + "on:transitionend"?: EventHandlerWithOptionsUnion | undefined; + "on:transitionrun"?: EventHandlerWithOptionsUnion | undefined; + "on:transitionstart"?: EventHandlerWithOptionsUnion | undefined; + "on:volumechange"?: EventHandlerWithOptionsUnion | undefined; + "on:waiting"?: EventHandlerWithOptionsUnion | undefined; + "on:wheel"?: EventHandlerWithOptionsUnion | undefined; + } + + type EventType = + | (keyof EventHandlersWindow extends infer K + ? K extends `on:${infer T}` + ? T + : K extends `on${infer T}` + ? Lowercase + : never + : never) + | (keyof EventHandlersElement extends infer K + ? K extends `on:${infer T}` + ? T + : K extends `on${infer T}` + ? Lowercase + : never + : never) + | (string & {}); - // type CSSAttributes = { - // [key in CSSKeys as `style:${key}`]: csstype.PropertiesHyphen[key]; - // }; + // GLOBAL ATTRIBUTES - interface HTMLAttributes extends AriaAttributes, DOMAttributes { + /** + * Global `Element` + `Node` interface keys, shared by all tags regardless of their namespace: + * + * 1. That's `keys` that are defined BY ALL `HTMLElement/SVGElement/MathMLElement` interfaces. + * 2. Includes `keys` defined by `Element` and `Node` interfaces. + */ + interface ElementAttributes + extends CustomAttributes, + DirectiveAttributes, + DirectiveFunctionAttributes, + PropAttributes, + AttrAttributes, + BoolAttributes, + OnAttributes, + EventHandlersElement, + AriaAttributes { // [key: ClassKeys]: boolean; - about?: string | RemoveAttribute; + + // properties + innerHTML?: string; + textContent?: string | number; + + // attributes + autofocus?: BooleanAttribute | RemoveAttribute; + class?: string | ClassList | RemoveAttribute; + elementtiming?: string | RemoveAttribute; + id?: string | RemoveAttribute; + nonce?: string | RemoveAttribute; + part?: string | RemoveAttribute; + slot?: string | RemoveAttribute; + style?: CSSProperties | string | RemoveAttribute; + tabindex?: number | string | RemoveAttribute; + } + /** Global `SVGElement` interface keys only. */ + interface SVGAttributes extends ElementAttributes { + id?: string | RemoveAttribute; + lang?: string | RemoveAttribute; + tabindex?: number | string | RemoveAttribute; + xmlns?: string | RemoveAttribute; + } + /** Global `MathMLElement` interface keys only. */ + interface MathMLAttributes extends ElementAttributes { + dir?: HTMLDir | RemoveAttribute; + displaystyle?: BooleanAttribute | RemoveAttribute; + scriptlevel?: string | RemoveAttribute; + xmlns?: string | RemoveAttribute; + + /** @deprecated */ + href?: string | RemoveAttribute; + /** @deprecated */ + mathbackground?: string | RemoveAttribute; + /** @deprecated */ + mathcolor?: string | RemoveAttribute; + /** @deprecated */ + mathsize?: string | RemoveAttribute; + } + /** Global `HTMLElement` interface keys only. */ + interface HTMLAttributes extends ElementAttributes { + // properties + innerText?: string | number; + + // attributes accesskey?: string | RemoveAttribute; autocapitalize?: HTMLAutocapitalize | RemoveAttribute; - class?: string | ClassList | RemoveAttribute; - color?: string | RemoveAttribute; + autocorrect?: "on" | "off" | RemoveAttribute; contenteditable?: | EnumeratedPseudoBoolean | EnumeratedAcceptsEmpty | "plaintext-only" | "inherit" | RemoveAttribute; - contextmenu?: string | RemoveAttribute; - datatype?: string | RemoveAttribute; dir?: HTMLDir | RemoveAttribute; draggable?: EnumeratedPseudoBoolean | RemoveAttribute; + enterkeyhint?: + | "enter" + | "done" + | "go" + | "next" + | "previous" + | "search" + | "send" + | RemoveAttribute; exportparts?: string | RemoveAttribute; hidden?: EnumeratedAcceptsEmpty | "hidden" | "until-found" | RemoveAttribute; - id?: string | RemoveAttribute; inert?: BooleanAttribute | RemoveAttribute; - inlist?: any | RemoveAttribute; inputmode?: | "decimal" | "email" @@ -1266,60 +1129,148 @@ export namespace JSX { | "url" | RemoveAttribute; is?: string | RemoveAttribute; + lang?: string | RemoveAttribute; + popover?: EnumeratedAcceptsEmpty | "manual" | "auto" | RemoveAttribute; + spellcheck?: EnumeratedPseudoBoolean | EnumeratedAcceptsEmpty | RemoveAttribute; + title?: string | RemoveAttribute; + translate?: "yes" | "no" | RemoveAttribute; + + /** @experimental */ + virtualkeyboardpolicy?: EnumeratedAcceptsEmpty | "auto" | "manual" | RemoveAttribute; + /** @experimental */ + writingsuggestions?: EnumeratedPseudoBoolean | RemoveAttribute; + + // Microdata itemid?: string | RemoveAttribute; itemprop?: string | RemoveAttribute; itemref?: string | RemoveAttribute; itemscope?: BooleanAttribute | RemoveAttribute; itemtype?: string | RemoveAttribute; - lang?: string | RemoveAttribute; - part?: string | RemoveAttribute; - popover?: EnumeratedAcceptsEmpty | "manual" | "auto" | RemoveAttribute; + + // RDFa Attributes + about?: string | RemoveAttribute; + datatype?: string | RemoveAttribute; + inlist?: any | RemoveAttribute; prefix?: string | RemoveAttribute; property?: string | RemoveAttribute; resource?: string | RemoveAttribute; - slot?: string | RemoveAttribute; - spellcheck?: EnumeratedPseudoBoolean | EnumeratedAcceptsEmpty | RemoveAttribute; - style?: CSSProperties | string | RemoveAttribute; - tabindex?: number | string | RemoveAttribute; - title?: string | RemoveAttribute; - translate?: "yes" | "no" | RemoveAttribute; typeof?: string | RemoveAttribute; vocab?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - accessKey?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - autoCapitalize?: HTMLAutocapitalize | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - contentEditable?: EnumeratedPseudoBoolean | "plaintext-only" | "inherit" | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - contextMenu?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - exportParts?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - inputMode?: - | "none" - | "text" - | "tel" - | "url" - | "email" - | "numeric" - | "decimal" - | "search" - | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - itemId?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - itemProp?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - itemRef?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - itemScope?: BooleanAttribute | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - itemType?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - tabIndex?: number | string | RemoveAttribute; + /** @deprecated */ + contextmenu?: string | RemoveAttribute; } + + // HTML + + type HTMLAutocapitalize = "off" | "none" | "on" | "sentences" | "words" | "characters"; + type HTMLAutocomplete = + | "additional-name" + | "address-level1" + | "address-level2" + | "address-level3" + | "address-level4" + | "address-line1" + | "address-line2" + | "address-line3" + | "bday" + | "bday-day" + | "bday-month" + | "bday-year" + | "billing" + | "cc-additional-name" + | "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" + | "email" + | "family-name" + | "fax" + | "given-name" + | "home" + | "honorific-prefix" + | "honorific-suffix" + | "impp" + | "language" + | "mobile" + | "name" + | "new-password" + | "nickname" + | "off" + | "on" + | "organization" + | "organization-title" + | "pager" + | "photo" + | "postal-code" + | "sex" + | "shipping" + | "street-address" + | "tel" + | "tel-area-code" + | "tel-country-code" + | "tel-extension" + | "tel-local" + | "tel-local-prefix" + | "tel-local-suffix" + | "tel-national" + | "transaction-amount" + | "transaction-currency" + | "url" + | "username" + | "work" + | (string & {}); + type HTMLDir = "ltr" | "rtl" | "auto"; + type HTMLFormEncType = "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain"; + type HTMLFormMethod = "post" | "get" | "dialog"; + type HTMLCrossorigin = "anonymous" | "use-credentials" | EnumeratedAcceptsEmpty; + type HTMLReferrerPolicy = + | "no-referrer" + | "no-referrer-when-downgrade" + | "origin" + | "origin-when-cross-origin" + | "same-origin" + | "strict-origin" + | "strict-origin-when-cross-origin" + | "unsafe-url"; + type HTMLIframeSandbox = + | "allow-downloads-without-user-activation" + | "allow-downloads" + | "allow-forms" + | "allow-modals" + | "allow-orientation-lock" + | "allow-pointer-lock" + | "allow-popups" + | "allow-popups-to-escape-sandbox" + | "allow-presentation" + | "allow-same-origin" + | "allow-scripts" + | "allow-storage-access-by-user-activation" + | "allow-top-navigation" + | "allow-top-navigation-by-user-activation" + | "allow-top-navigation-to-custom-protocols"; + type HTMLLinkAs = + | "audio" + | "document" + | "embed" + | "fetch" + | "font" + | "image" + | "object" + | "script" + | "style" + | "track" + | "video" + | "worker"; + interface AnchorHTMLAttributes extends HTMLAttributes { download?: string | RemoveAttribute; href?: string | RemoveAttribute; @@ -1333,9 +1284,6 @@ export namespace JSX { /** @experimental */ attributionsrc?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - referrerPolicy?: HTMLReferrerPolicy | RemoveAttribute; - /** @deprecated */ charset?: string | RemoveAttribute; /** @deprecated */ @@ -1362,9 +1310,6 @@ export namespace JSX { /** @experimental */ attributionsrc?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - referrerPolicy?: HTMLReferrerPolicy | RemoveAttribute; - /** @deprecated */ nohref?: BooleanAttribute | RemoveAttribute; } @@ -1372,15 +1317,14 @@ export namespace JSX { href?: string | RemoveAttribute; target?: "_self" | "_blank" | "_parent" | "_top" | (string & {}) | RemoveAttribute; } + interface BdoHTMLAttributes extends HTMLAttributes { + dir?: "ltr" | "rtl" | RemoveAttribute; + } interface BlockquoteHTMLAttributes extends HTMLAttributes { cite?: string | RemoveAttribute; } - interface BodyHTMLAttributes - extends HTMLAttributes, - WindowEventMap, - ElementEventMap {} + interface BodyHTMLAttributes extends HTMLAttributes, EventHandlersWindow {} interface ButtonHTMLAttributes extends HTMLAttributes { - autofocus?: BooleanAttribute | RemoveAttribute; disabled?: BooleanAttribute | RemoveAttribute; form?: string | RemoveAttribute; formaction?: string | SerializableAttributeValue | RemoveAttribute; @@ -1405,36 +1349,11 @@ export namespace JSX { | RemoveAttribute; /** @experimental */ commandfor?: string | RemoveAttribute; - - /** @deprecated Use lowercase attributes */ - formAction?: string | SerializableAttributeValue | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - formEnctype?: HTMLFormEncType | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - formMethod?: HTMLFormMethod | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - formNoValidate?: boolean | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - formTarget?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - popoverTarget?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - popoverTargetAction?: "hide" | "show" | "toggle" | RemoveAttribute; } interface CanvasHTMLAttributes extends HTMLAttributes { height?: number | string | RemoveAttribute; width?: number | string | RemoveAttribute; - onContextLost?: EventHandlerUnion | undefined; - "on:contextlost"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncontextlost?: EventHandlerUnion | undefined; - - onContextRestored?: EventHandlerUnion | undefined; - "on:contextrestored"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncontextrestored?: EventHandlerUnion | undefined; - /** * @deprecated * @non-standard @@ -1487,23 +1406,16 @@ export namespace JSX { interface DialogHtmlAttributes extends HTMLAttributes { open?: BooleanAttribute | RemoveAttribute; /** - * Do not add the tabindex property to the element as it is not interactive and does - * not receive focus. The dialog's contents, including the close button contained in the dialog, - * can receive focus and be interactive. + * Do not add the `tabindex` property to the `` element as it is not interactive and + * does not receive focus. The dialog's contents, including the close button contained in the + * dialog, can receive focus and be interactive. * * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/dialog#usage_notes */ tabindex?: never; - onClose?: EventHandlerUnion | undefined; - "on:close"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onclose?: EventHandlerUnion | undefined; - - onCancel?: EventHandlerUnion | undefined; - "on:cancel"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - oncancel?: EventHandlerUnion | undefined; + /** @experimental */ + closedby: "any" | "closerequest" | "none" | RemoveAttribute; } interface EmbedHTMLAttributes extends HTMLAttributes { height?: number | string | RemoveAttribute; @@ -1533,14 +1445,6 @@ export namespace JSX { rel?: string | RemoveAttribute; target?: "_self" | "_blank" | "_parent" | "_top" | (string & {}) | RemoveAttribute; - onFormData?: EventHandlerUnion | undefined; - "on:formdata"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onformdata?: EventHandlerUnion | undefined; - - /** @deprecated Use lowercase attributes */ - noValidate?: boolean | RemoveAttribute; - /** @deprecated */ accept?: string | RemoveAttribute; } @@ -1556,9 +1460,6 @@ export namespace JSX { srcdoc?: string | RemoveAttribute; width?: number | string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - referrerPolicy?: HTMLReferrerPolicy | RemoveAttribute; - /** @experimental */ adauctionheaders?: BooleanAttribute | RemoveAttribute; /** @@ -1599,9 +1500,9 @@ export namespace JSX { } interface ImgHTMLAttributes extends HTMLAttributes { alt?: string | RemoveAttribute; + browsingtopics?: string | RemoveAttribute; crossorigin?: HTMLCrossorigin | RemoveAttribute; decoding?: "sync" | "async" | "auto" | RemoveAttribute; - elementtiming?: string | RemoveAttribute; fetchpriority?: "high" | "low" | "auto" | RemoveAttribute; height?: number | string | RemoveAttribute; ismap?: BooleanAttribute | RemoveAttribute; @@ -1618,17 +1519,6 @@ export namespace JSX { /** @experimental */ sharedstoragewritable?: BooleanAttribute | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - crossOrigin?: HTMLCrossorigin | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - isMap?: boolean | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - referrerPolicy?: HTMLReferrerPolicy | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - srcSet?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - useMap?: string | RemoveAttribute; - /** @deprecated */ align?: "top" | "middle" | "bottom" | "left" | "right" | RemoveAttribute; /** @deprecated */ @@ -1648,88 +1538,14 @@ export namespace JSX { } interface InputHTMLAttributes extends HTMLAttributes { accept?: string | RemoveAttribute; + alpha?: BooleanAttribute | RemoveAttribute; alt?: string | RemoveAttribute; - autocomplete?: - | "additional-name" - | "address-level1" - | "address-level2" - | "address-level3" - | "address-level4" - | "address-line1" - | "address-line2" - | "address-line3" - | "bday" - | "bday-day" - | "bday-month" - | "bday-year" - | "billing" - | "cc-additional-name" - | "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" - | "email" - | "family-name" - | "fax" - | "given-name" - | "home" - | "honorific-prefix" - | "honorific-suffix" - | "impp" - | "language" - | "mobile" - | "name" - | "new-password" - | "nickname" - | "off" - | "on" - | "organization" - | "organization-title" - | "pager" - | "photo" - | "postal-code" - | "sex" - | "shipping" - | "street-address" - | "tel" - | "tel-area-code" - | "tel-country-code" - | "tel-extension" - | "tel-local" - | "tel-local-prefix" - | "tel-local-suffix" - | "tel-national" - | "transaction-amount" - | "transaction-currency" - | "url" - | "username" - | "work" - | (string & {}) - | RemoveAttribute; - autocorrect?: "on" | "off" | RemoveAttribute; - autofocus?: BooleanAttribute | RemoveAttribute; + autocomplete?: HTMLAutocomplete | RemoveAttribute; capture?: "user" | "environment" | RemoveAttribute; checked?: BooleanAttribute | RemoveAttribute; - crossorigin?: HTMLCrossorigin | RemoveAttribute; + colorspace?: string | RemoveAttribute; dirname?: string | RemoveAttribute; disabled?: BooleanAttribute | RemoveAttribute; - enterkeyhint?: - | "enter" - | "done" - | "go" - | "next" - | "previous" - | "search" - | "send" - | RemoveAttribute; form?: string | RemoveAttribute; formaction?: string | SerializableAttributeValue | RemoveAttribute; formenctype?: HTMLFormEncType | RemoveAttribute; @@ -1786,25 +1602,6 @@ export namespace JSX { /** @non-standard */ incremental?: BooleanAttribute | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - crossOrigin?: HTMLCrossorigin | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - formAction?: string | SerializableAttributeValue | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - formEnctype?: HTMLFormEncType | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - formMethod?: HTMLFormMethod | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - formNoValidate?: boolean | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - formTarget?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - maxLength?: number | string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - minLength?: number | string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - readOnly?: boolean | RemoveAttribute; - /** @deprecated */ align?: string | RemoveAttribute; /** @deprecated */ @@ -1813,13 +1610,8 @@ export namespace JSX { interface ModHTMLAttributes extends HTMLAttributes { cite?: string | RemoveAttribute; datetime?: string | RemoveAttribute; - - /** @deprecated Use lowercase attributes */ - dateTime?: string | RemoveAttribute; } interface KeygenHTMLAttributes extends HTMLAttributes { - /** @deprecated */ - autofocus?: BooleanAttribute | RemoveAttribute; /** @deprecated */ challenge?: string | RemoveAttribute; /** @deprecated */ @@ -1835,7 +1627,6 @@ export namespace JSX { } interface LabelHTMLAttributes extends HTMLAttributes { for?: string | RemoveAttribute; - form?: string | RemoveAttribute; } interface LiHTMLAttributes extends HTMLAttributes { value?: number | string | RemoveAttribute; @@ -1846,6 +1637,7 @@ export namespace JSX { interface LinkHTMLAttributes extends HTMLAttributes { as?: HTMLLinkAs | RemoveAttribute; blocking?: "render" | RemoveAttribute; + color?: string | RemoveAttribute; crossorigin?: HTMLCrossorigin | RemoveAttribute; disabled?: BooleanAttribute | RemoveAttribute; fetchpriority?: "high" | "low" | "auto" | RemoveAttribute; @@ -1860,11 +1652,6 @@ export namespace JSX { sizes?: string | RemoveAttribute; type?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - crossOrigin?: HTMLCrossorigin | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - referrerPolicy?: HTMLReferrerPolicy | RemoveAttribute; - /** @deprecated */ charset?: string | RemoveAttribute; /** @deprecated */ @@ -1875,7 +1662,7 @@ export namespace JSX { interface MapHTMLAttributes extends HTMLAttributes { name?: string | RemoveAttribute; } - interface MediaHTMLAttributes extends HTMLAttributes, ElementEventMap { + interface MediaHTMLAttributes extends HTMLAttributes { autoplay?: BooleanAttribute | RemoveAttribute; controls?: BooleanAttribute | RemoveAttribute; controlslist?: @@ -1894,19 +1681,10 @@ export namespace JSX { onEncrypted?: EventHandlerUnion | undefined; "on:encrypted"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onencrypted?: EventHandlerUnion | undefined; onWaitingForKey?: EventHandlerUnion | undefined; "on:waitingforkey"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onwaitingforkey?: EventHandlerUnion | undefined; - /** @deprecated Use lowercase attributes */ - crossOrigin?: HTMLCrossorigin | RemoveAttribute; - - /** @deprecated Use lowercase attributes */ - mediaGroup?: string | RemoveAttribute; /** @deprecated */ mediagroup?: string | RemoveAttribute; } @@ -1953,9 +1731,7 @@ export namespace JSX { name?: string | RemoveAttribute; type?: string | RemoveAttribute; width?: number | string | RemoveAttribute; - - /** @deprecated Use lowercase attributes */ - useMap?: string | RemoveAttribute; + wmode?: string | RemoveAttribute; /** @deprecated */ align?: string | RemoveAttribute; @@ -2030,9 +1806,9 @@ export namespace JSX { crossorigin?: HTMLCrossorigin | RemoveAttribute; defer?: BooleanAttribute | RemoveAttribute; fetchpriority?: "high" | "low" | "auto" | RemoveAttribute; + for?: string | RemoveAttribute; integrity?: string | RemoveAttribute; nomodule?: BooleanAttribute | RemoveAttribute; - nonce?: string | RemoveAttribute; referrerpolicy?: HTMLReferrerPolicy | RemoveAttribute; src?: string | RemoveAttribute; type?: "importmap" | "module" | "speculationrules" | (string & {}) | RemoveAttribute; @@ -2040,13 +1816,6 @@ export namespace JSX { /** @experimental */ attributionsrc?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - crossOrigin?: HTMLCrossorigin | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - noModule?: boolean | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - referrerPolicy?: HTMLReferrerPolicy | RemoveAttribute; - /** @deprecated */ charset?: string | RemoveAttribute; /** @deprecated */ @@ -2055,8 +1824,7 @@ export namespace JSX { language?: string | RemoveAttribute; } interface SelectHTMLAttributes extends HTMLAttributes { - autocomplete?: string | RemoveAttribute; - autofocus?: BooleanAttribute | RemoveAttribute; + autocomplete?: HTMLAutocomplete | RemoveAttribute; disabled?: BooleanAttribute | RemoveAttribute; form?: string | RemoveAttribute; multiple?: BooleanAttribute | RemoveAttribute; @@ -2080,7 +1848,6 @@ export namespace JSX { interface StyleHTMLAttributes extends HTMLAttributes { blocking?: "render" | RemoveAttribute; media?: string | RemoveAttribute; - nonce?: string | RemoveAttribute; /** @deprecated */ scoped?: BooleanAttribute | RemoveAttribute; @@ -2092,11 +1859,6 @@ export namespace JSX { headers?: string | RemoveAttribute; rowspan?: number | string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - colSpan?: number | string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - rowSpan?: number | string | RemoveAttribute; - /** @deprecated */ abbr?: string | RemoveAttribute; /** @deprecated */ @@ -2124,93 +1886,17 @@ export namespace JSX { shadowrootclonable?: BooleanAttribute | RemoveAttribute; shadowrootdelegatesfocus?: BooleanAttribute | RemoveAttribute; shadowrootmode?: "open" | "closed" | RemoveAttribute; + shadowrootcustomelementregistry?: BooleanAttribute | RemoveAttribute; /** @experimental */ shadowrootserializable?: BooleanAttribute | RemoveAttribute; - - /** @deprecated */ - content?: DocumentFragment | RemoveAttribute; } interface TextareaHTMLAttributes extends HTMLAttributes { - autocomplete?: - | "additional-name" - | "address-level1" - | "address-level2" - | "address-level3" - | "address-level4" - | "address-line1" - | "address-line2" - | "address-line3" - | "bday" - | "bday-day" - | "bday-month" - | "bday-year" - | "billing" - | "cc-additional-name" - | "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" - | "email" - | "family-name" - | "fax" - | "given-name" - | "home" - | "honorific-prefix" - | "honorific-suffix" - | "impp" - | "language" - | "mobile" - | "name" - | "new-password" - | "nickname" - | "off" - | "on" - | "organization" - | "organization-title" - | "pager" - | "photo" - | "postal-code" - | "sex" - | "shipping" - | "street-address" - | "tel" - | "tel-area-code" - | "tel-country-code" - | "tel-extension" - | "tel-local" - | "tel-local-prefix" - | "tel-local-suffix" - | "tel-national" - | "transaction-amount" - | "transaction-currency" - | "url" - | "username" - | "work" - | (string & {}) - | RemoveAttribute; - autocorrect?: "on" | "off" | RemoveAttribute; - autofocus?: BooleanAttribute | RemoveAttribute; + autocomplete?: HTMLAutocomplete | RemoveAttribute; cols?: number | string | RemoveAttribute; dirname?: string | RemoveAttribute; disabled?: BooleanAttribute | RemoveAttribute; - enterkeyhint?: - | "enter" - | "done" - | "go" - | "next" - | "previous" - | "search" - | "send" - | RemoveAttribute; + form?: string | RemoveAttribute; maxlength?: number | string | RemoveAttribute; minlength?: number | string | RemoveAttribute; @@ -2221,13 +1907,6 @@ export namespace JSX { rows?: number | string | RemoveAttribute; value?: string | string[] | number | RemoveAttribute; wrap?: "hard" | "soft" | "off" | RemoveAttribute; - - /** @deprecated Use lowercase attributes */ - maxLength?: number | string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - minLength?: number | string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - readOnly?: boolean | RemoveAttribute; } interface ThHTMLAttributes extends HTMLAttributes { abbr?: string | RemoveAttribute; @@ -2236,11 +1915,6 @@ export namespace JSX { rowspan?: number | string | RemoveAttribute; scope?: "col" | "row" | "rowgroup" | "colgroup" | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - colSpan?: number | string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - rowSpan?: number | string | RemoveAttribute; - /** @deprecated */ align?: "left" | "center" | "right" | "justify" | "char" | RemoveAttribute; /** @deprecated */ @@ -2262,9 +1936,6 @@ export namespace JSX { } interface TimeHTMLAttributes extends HTMLAttributes { datetime?: string | RemoveAttribute; - - /** @deprecated Use lowercase attributes */ - dateTime?: string | RemoveAttribute; } interface TrackHTMLAttributes extends HTMLAttributes { default?: BooleanAttribute | RemoveAttribute; @@ -2284,8 +1955,6 @@ export namespace JSX { src?: string | RemoveAttribute; srclang?: string | RemoveAttribute; - /** @deprecated Use lowercase attributes */ - mediaGroup?: string | RemoveAttribute; /** @deprecated */ mediagroup?: string | RemoveAttribute; } @@ -2298,13 +1967,9 @@ export namespace JSX { onEnterPictureInPicture?: EventHandlerUnion | undefined; "on:enterpictureinpicture"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onenterpictureinpicture?: EventHandlerUnion | undefined; onLeavePictureInPicture?: EventHandlerUnion | undefined; "on:leavepictureinpicture"?: EventHandlerWithOptionsUnion | undefined; - /** @deprecated Use camelCase event handlers */ - onleavepictureinpicture?: EventHandlerUnion | undefined; } interface WebViewHTMLAttributes extends HTMLAttributes { @@ -2324,7 +1989,6 @@ export namespace JSX { // does this exists? allowfullscreen?: BooleanAttribute | RemoveAttribute; - autofocus?: BooleanAttribute | RemoveAttribute; autosize?: BooleanAttribute | RemoveAttribute; /** @deprecated */ @@ -2335,7 +1999,8 @@ export namespace JSX { guestinstance?: string | RemoveAttribute; } - /** SVG Enumerated Attributes */ + // SVG + type SVGPreserveAspectRatio = | "none" | "xMinYMin" @@ -2397,14 +2062,6 @@ export namespace JSX { | "defer xMaxYMax slice"; type SVGUnits = "userSpaceOnUse" | "objectBoundingBox"; - interface CoreSVGAttributes extends AriaAttributes, DOMAttributes { - id?: string | RemoveAttribute; - lang?: string | RemoveAttribute; - tabindex?: number | string | RemoveAttribute; - - /** @deprecated Use lowercase attributes */ - tabIndex?: number | string | RemoveAttribute; - } interface StylableSVGAttributes { class?: string | ClassList | RemoveAttribute; style?: CSSProperties | string | RemoveAttribute; @@ -2576,11 +2233,23 @@ export namespace JSX { visibility?: "visible" | "hidden" | "collapse" | "inherit" | RemoveAttribute; } interface AnimationElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, ExternalResourceSVGAttributes, - ConditionalProcessingSVGAttributes {} + ConditionalProcessingSVGAttributes { + // TODO TimeEvent is currently undefined on TS + onBegin?: EventHandlerUnion | undefined; + "on:begin"?: EventHandlerWithOptionsUnion | undefined; + + // TODO TimeEvent is currently undefined on TS + onEnd?: EventHandlerUnion | undefined; + "on:end"?: EventHandlerWithOptionsUnion | undefined; + + // TODO TimeEvent is currently undefined on TS + onRepeat?: EventHandlerUnion | undefined; + "on:repeat"?: EventHandlerWithOptionsUnion | undefined; + } interface ContainerElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, ShapeElementSVGAttributes, Pick< PresentationSVGAttributes, @@ -2594,7 +2263,7 @@ export namespace JSX { | "color-rendering" > {} interface FilterPrimitiveElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, Pick { height?: number | string | RemoveAttribute; result?: string | RemoveAttribute; @@ -2614,7 +2283,7 @@ export namespace JSX { viewBox?: string | RemoveAttribute; } interface GradientElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, ExternalResourceSVGAttributes, StylableSVGAttributes { gradientTransform?: string | RemoveAttribute; @@ -2623,7 +2292,7 @@ export namespace JSX { spreadMethod?: "pad" | "reflect" | "repeat" | RemoveAttribute; } interface GraphicsElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, Pick< PresentationSVGAttributes, | "clip-rule" @@ -2637,14 +2306,14 @@ export namespace JSX { | "color-interpolation" | "color-rendering" > {} - interface LightSourceElementSVGAttributes extends CoreSVGAttributes {} + interface LightSourceElementSVGAttributes extends SVGAttributes {} interface NewViewportSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, Pick { viewBox?: string | RemoveAttribute; } interface ShapeElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, Pick< PresentationSVGAttributes, | "color" @@ -2663,7 +2332,7 @@ export namespace JSX { | "pathLength" > {} interface TextContentElementSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, Pick< PresentationSVGAttributes, | "font-family" @@ -2740,7 +2409,7 @@ export namespace JSX { r?: number | string | RemoveAttribute; } interface ClipPathSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, ConditionalProcessingSVGAttributes, ExternalResourceSVGAttributes, StylableSVGAttributes, @@ -2754,7 +2423,7 @@ export namespace JSX { ExternalResourceSVGAttributes, StylableSVGAttributes, TransformableSVGAttributes {} - interface DescSVGAttributes extends CoreSVGAttributes, StylableSVGAttributes {} + interface DescSVGAttributes extends SVGAttributes, StylableSVGAttributes {} interface EllipseSVGAttributes extends GraphicsElementSVGAttributes, ShapeElementSVGAttributes, @@ -2831,7 +2500,7 @@ export namespace JSX { elevation?: number | string | RemoveAttribute; } interface FeDropShadowSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, FilterPrimitiveElementSVGAttributes, StylableSVGAttributes, Pick { @@ -2843,7 +2512,7 @@ export namespace JSX { extends FilterPrimitiveElementSVGAttributes, StylableSVGAttributes, Pick {} - interface FeFuncSVGAttributes extends CoreSVGAttributes { + interface FeFuncSVGAttributes extends SVGAttributes { amplitude?: number | string | RemoveAttribute; exponent?: number | string | RemoveAttribute; intercept?: number | string | RemoveAttribute; @@ -2868,9 +2537,7 @@ export namespace JSX { interface FeMergeSVGAttributes extends FilterPrimitiveElementSVGAttributes, StylableSVGAttributes {} - interface FeMergeNodeSVGAttributes - extends CoreSVGAttributes, - SingleInputFilterSVGAttributes {} + interface FeMergeNodeSVGAttributes extends SVGAttributes, SingleInputFilterSVGAttributes {} interface FeMorphologySVGAttributes extends FilterPrimitiveElementSVGAttributes, SingleInputFilterSVGAttributes, @@ -2924,7 +2591,7 @@ export namespace JSX { type?: "fractalNoise" | "turbulence" | RemoveAttribute; } interface FilterSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, ExternalResourceSVGAttributes, StylableSVGAttributes { filterRes?: number | string | RemoveAttribute; @@ -3013,8 +2680,8 @@ export namespace JSX { x?: number | string | RemoveAttribute; y?: number | string | RemoveAttribute; } - interface MetadataSVGAttributes extends CoreSVGAttributes {} - interface MPathSVGAttributes extends CoreSVGAttributes {} + interface MetadataSVGAttributes extends SVGAttributes {} + interface MPathSVGAttributes extends SVGAttributes {} interface PathSVGAttributes extends GraphicsElementSVGAttributes, ShapeElementSVGAttributes, @@ -3085,11 +2752,11 @@ export namespace JSX { y?: number | string | RemoveAttribute; } interface SetSVGAttributes - extends CoreSVGAttributes, + extends AnimationElementSVGAttributes, StylableSVGAttributes, AnimationTimingSVGAttributes {} interface StopSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, StylableSVGAttributes, Pick { offset?: number | string | RemoveAttribute; @@ -3103,15 +2770,13 @@ export namespace JSX { FitToViewBoxSVGAttributes, ZoomAndPanSVGAttributes, PresentationSVGAttributes, - WindowEventMap, - ElementEventMap { + EventHandlersWindow { "xmlns:xlink"?: string | RemoveAttribute; contentScriptType?: string | RemoveAttribute; contentStyleType?: string | RemoveAttribute; height?: number | string | RemoveAttribute; width?: number | string | RemoveAttribute; x?: number | string | RemoveAttribute; - xmlns?: string | RemoveAttribute; y?: number | string | RemoveAttribute; /** @deprecated */ @@ -3191,7 +2856,7 @@ export namespace JSX { } /** @see https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use */ interface UseSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, StylableSVGAttributes, ConditionalProcessingSVGAttributes, GraphicsElementSVGAttributes, @@ -3205,28 +2870,14 @@ export namespace JSX { y?: number | string | RemoveAttribute; } interface ViewSVGAttributes - extends CoreSVGAttributes, + extends SVGAttributes, ExternalResourceSVGAttributes, FitToViewBoxSVGAttributes, ZoomAndPanSVGAttributes { viewTarget?: string | RemoveAttribute; } - interface MathMLAttributes extends HTMLAttributes { - xmlns?: string | RemoveAttribute; - - displaystyle?: BooleanAttribute | RemoveAttribute; - /** @deprecated */ - href?: string | RemoveAttribute; - /** @deprecated */ - mathbackground?: string | RemoveAttribute; - /** @deprecated */ - mathcolor?: string | RemoveAttribute; - /** @deprecated */ - mathsize?: string | RemoveAttribute; - nonce?: string | RemoveAttribute; - scriptlevel?: string | RemoveAttribute; - } + // MATH interface MathMLAnnotationElementAttributes extends MathMLAttributes { encoding?: string | RemoveAttribute; @@ -3433,8 +3084,6 @@ export namespace JSX { } interface MathMLSemanticsElementAttributes extends MathMLAttributes {} - /* MathMLDeprecatedElements */ - interface MathMLMencloseElementAttributes extends MathMLAttributes { /** @non-standard */ notation?: string | RemoveAttribute; @@ -3445,6 +3094,8 @@ export namespace JSX { separators?: string | RemoveAttribute; } + // TAGS + /** @type {HTMLElementTagNameMap} */ interface HTMLElementTags { /** @@ -3501,7 +3152,7 @@ export namespace JSX { * @url https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdo * @url https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement */ - bdo: HTMLAttributes; + bdo: BdoHTMLAttributes; /** * @url https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote * @url https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement @@ -4030,11 +3681,6 @@ export namespace JSX { * @url https://developer.mozilla.org/en-US/docs/Web/API/HTMLUnknownElement */ menuitem: HTMLAttributes; - /** - * @deprecated - * @url https://developer.mozilla.org/en-US/docs/Web/API/HTMLUnknownElement - */ - noindex: HTMLAttributes; /** * @deprecated * @url https://developer.mozilla.org/en-US/docs/Web/HTML/Element/param