From 1104a4b796aba02e1cba2723f9ef9d022246f750 Mon Sep 17 00:00:00 2001 From: cqh963852 Date: Sat, 20 Jan 2024 10:49:56 +0800 Subject: [PATCH 1/4] refactor: update van_jsx type --- addons/van_jsx/package.json | 19 +- addons/van_jsx/src/createElement.d.ts | 13 + addons/van_jsx/src/createElement.js | 33 + addons/van_jsx/src/hyper.d.ts | 3 + addons/van_jsx/src/hyper.js | 37 + addons/van_jsx/src/index.d.ts | 3 +- addons/van_jsx/src/index.js | 7 +- addons/van_jsx/src/jsx-dev-runtime.d.ts | 1 + addons/van_jsx/src/jsx-dev-runtime.js | 1 + addons/van_jsx/src/jsx-internal.d.ts | 31 - addons/van_jsx/src/jsx-runtime.d.ts | 40 +- addons/van_jsx/src/jsx-runtime.js | 49 - addons/van_jsx/src/type.d.ts | 1433 ++++++++++++++++++++++- 13 files changed, 1543 insertions(+), 127 deletions(-) create mode 100644 addons/van_jsx/src/createElement.d.ts create mode 100644 addons/van_jsx/src/createElement.js create mode 100644 addons/van_jsx/src/hyper.d.ts create mode 100644 addons/van_jsx/src/hyper.js delete mode 100644 addons/van_jsx/src/jsx-internal.d.ts delete mode 100644 addons/van_jsx/src/jsx-runtime.js diff --git a/addons/van_jsx/package.json b/addons/van_jsx/package.json index 9cd89255..3a248129 100644 --- a/addons/van_jsx/package.json +++ b/addons/van_jsx/package.json @@ -2,22 +2,23 @@ "name": "vanjs-jsx", "version": "0.1.0", "type": "module", - "types": "./src/index.d.ts", "description": "jsx-runtime for vanjs", + "types": "./dist/index.d.ts", "exports": { ".": { - "require": "./src/index.js", - "import": "./src/index.js" + "require": "./dist/umd/index.js", + "import": "./dist/esm/index.js", + "types": "./dist/index.d.ts" }, "./jsx-runtime": { - "require": "./src/jsx-runtime.js", - "import": "./src/jsx-runtime.js", - "types": "./src/jsx-runtime.d.ts" + "require": "./dist/umd/index.js", + "import": "./dist/esm/index.js", + "types": "./dist/jsx-runtime.d.ts" }, "./jsx-dev-runtime": { - "require": "./src/jsx-dev-runtime.js", - "import": "./src/jsx-dev-runtime.js", - "types": "./src/jsx-dev-runtime.d.ts" + "require": "./dist/umd/index.js", + "import": "./dist/esm/index.js", + "types": "./dist/jsx-runtime.d.ts" } }, "files": [ diff --git a/addons/van_jsx/src/createElement.d.ts b/addons/van_jsx/src/createElement.d.ts new file mode 100644 index 00000000..d1db49f2 --- /dev/null +++ b/addons/van_jsx/src/createElement.d.ts @@ -0,0 +1,13 @@ +import * as CSS from "csstype"; +import { State } from "vanjs-core"; +import { Primitive } from "./type"; +export type VanElement = Element; +export type JSXElementType

= (props: P) => VanNode | VanElement; +export type PrimitiveChild = Primitive | State; +export type VanNode = VanElement | PrimitiveChild | VanNode[] | (() => VanNode) | null; +declare const createElement: (jsxTag: string | Function, { children, style, ref, ...props }: { + children?: VanNode | undefined; + style?: CSS.Properties<0 | (string & {}), string & {}> | (() => CSS.Properties) | undefined; + ref?: State | undefined; +}) => any; +export default createElement; diff --git a/addons/van_jsx/src/createElement.js b/addons/van_jsx/src/createElement.js new file mode 100644 index 00000000..16486003 --- /dev/null +++ b/addons/van_jsx/src/createElement.js @@ -0,0 +1,33 @@ +import van from "vanjs-core"; +import { setAttribute } from "./hyper"; +const createElement = (jsxTag, { children, style, ref, ...props }) => { + if (typeof jsxTag === "string") { + // TODO VanNode to VanElement + const ele = van.tags[jsxTag](children); + for (const [key, value] of Object.entries(props ?? {})) { + // Auto Update Attribute + if (typeof value === "function" && !key.startsWith("on")) { + van.derive(() => { + let attr = value(); + setAttribute(ele, key, attr); + }); + continue; + } + // Add Event Listener + if (typeof value === "function" && key.startsWith("on")) { + ele.addEventListener(key.replace("on", "").toLowerCase(), value); + continue; + } + setAttribute(ele, key, value); + continue; + } + if (ref != null) { + ref.val = ele; + } + return ele; + } + if (typeof jsxTag === "function") { + return jsxTag({ ...props, ref, style, children }); + } +}; +export default createElement; diff --git a/addons/van_jsx/src/hyper.d.ts b/addons/van_jsx/src/hyper.d.ts new file mode 100644 index 00000000..e7245d93 --- /dev/null +++ b/addons/van_jsx/src/hyper.d.ts @@ -0,0 +1,3 @@ +import * as CSS from "csstype"; +export declare const styleToString: (style: CSS.Properties) => string; +export declare const setAttribute: (element: Element, key: string, value: unknown) => void; diff --git a/addons/van_jsx/src/hyper.js b/addons/van_jsx/src/hyper.js new file mode 100644 index 00000000..352b3aa2 --- /dev/null +++ b/addons/van_jsx/src/hyper.js @@ -0,0 +1,37 @@ +export const styleToString = (style) => { + return Object.entries(style).reduce((acc, key) => acc + + key[0] + .split(/(?=[A-Z])/) + .join("-") + .toLowerCase() + + ":" + + key[1] + + ";", ""); +}; +export const setAttribute = (element, key, value) => { + // Convert Style Object + if (key === "style") { + const attr = styleToString(value); + element.setAttribute(key, attr); + return; + } + if (typeof value === "number") { + if (key === "tabIndex") { + element.setAttribute("tabindex", value.toString()); + return; + } + } + // Set String Attribute + if (typeof value === "string") { + if (key === "className") { + element.setAttribute("class", value); + return; + } + if (key === "htmlFor") { + element.setAttribute("for", value); + return; + } + element.setAttribute(key, value); + return; + } +}; diff --git a/addons/van_jsx/src/index.d.ts b/addons/van_jsx/src/index.d.ts index dafd7a34..14a10fa7 100644 --- a/addons/van_jsx/src/index.d.ts +++ b/addons/van_jsx/src/index.d.ts @@ -1,7 +1,6 @@ import { State, StateView } from "vanjs-core"; - export declare function createState(initialValue: T): State; export declare function createState(initialValue: T | null): StateView; export declare function createState(): State; -export * from "./jsx-runtime"; +export { default as createElement, default as jsx, default as jsxDEV, } from "./createElement"; export * from "./type"; diff --git a/addons/van_jsx/src/index.js b/addons/van_jsx/src/index.js index fc409308..7b7832dc 100644 --- a/addons/van_jsx/src/index.js +++ b/addons/van_jsx/src/index.js @@ -1,7 +1,6 @@ import van from "vanjs-core"; - export function createState(v) { - return van.state(v); + return van.state(v); } - -export * from "./jsx-runtime"; +export { default as createElement, default as jsx, default as jsxDEV, } from "./createElement"; +export * from "./type"; diff --git a/addons/van_jsx/src/jsx-dev-runtime.d.ts b/addons/van_jsx/src/jsx-dev-runtime.d.ts index 6020639b..00923971 100644 --- a/addons/van_jsx/src/jsx-dev-runtime.d.ts +++ b/addons/van_jsx/src/jsx-dev-runtime.d.ts @@ -1 +1,2 @@ +export * from "./index"; export * from "./jsx-runtime"; diff --git a/addons/van_jsx/src/jsx-dev-runtime.js b/addons/van_jsx/src/jsx-dev-runtime.js index 6020639b..00923971 100644 --- a/addons/van_jsx/src/jsx-dev-runtime.js +++ b/addons/van_jsx/src/jsx-dev-runtime.js @@ -1 +1,2 @@ +export * from "./index"; export * from "./jsx-runtime"; diff --git a/addons/van_jsx/src/jsx-internal.d.ts b/addons/van_jsx/src/jsx-internal.d.ts deleted file mode 100644 index 4796c100..00000000 --- a/addons/van_jsx/src/jsx-internal.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import * as CSS from "csstype"; -import { State, ChildDom } from "vanjs-core"; -import { FunctionChild } from "./type"; - -type OriginalElement = HTMLElement; -type JSXProp = T[K] | (() => T[K]) | State; - -export declare namespace JSX { - type HTMLAttributes = { - [K in keyof Omit]?: JSXProp; - } & Partial<{ children: ChildDom; style: CSS.Properties; ref: State }>; - - type SVGAttributes = { - [K in keyof Omit]?: JSXProp; - } & Partial<{ children: ChildDom; style: CSS.Properties; ref: State }>; - - export type ElementType = string | FunctionChild; - export interface Element extends OriginalElement {} - export interface ElementAttributesProperty { - props: {}; - } - export interface ElementChildrenAttribute { - children: {}; - } - export interface IntrinsicAttributes {} - export type IntrinsicElements = { - [K in keyof HTMLElementTagNameMap]: HTMLElementTagNameMap[K] extends HTMLElement - ? HTMLAttributes - : SVGAttributes; - }; -} diff --git a/addons/van_jsx/src/jsx-runtime.d.ts b/addons/van_jsx/src/jsx-runtime.d.ts index 58bd2e08..e0eb3a40 100644 --- a/addons/van_jsx/src/jsx-runtime.d.ts +++ b/addons/van_jsx/src/jsx-runtime.d.ts @@ -1,21 +1,19 @@ -import * as CSS from "csstype"; -import { State, ChildDom } from "vanjs-core"; - -export declare const jsx: ( - jsxTag: string | Function, - { - children, - style, - ref, - ...props - }: { - children?: ChildDom; - style?: - | CSS.Properties<0 | (string & {}), string & {}> - | (() => CSS.Properties) - | undefined; - ref?: State | undefined; - } -) => any; -export { jsx as jsxDEV, jsx as jsxs }; -export type { JSX } from "./jsx-internal"; +import { JSXElementType, VanElement } from "./createElement"; +import { InnerElement, Key, TagOption } from "./type"; +export declare namespace JSX { + type ElementType = string | JSXElementType; + interface ElementAttributesProperty { + props: object; + } + interface ElementChildrenAttribute { + children: object; + } + interface Element extends VanElement { + } + interface IntrinsicAttributes { + key?: Key; + } + type IntrinsicElements = { + [K in keyof InnerElement]: TagOption; + }; +} diff --git a/addons/van_jsx/src/jsx-runtime.js b/addons/van_jsx/src/jsx-runtime.js deleted file mode 100644 index e829ab12..00000000 --- a/addons/van_jsx/src/jsx-runtime.js +++ /dev/null @@ -1,49 +0,0 @@ -import van from "vanjs-core"; - -const styleToString = (style) => { - return Object.entries(style).reduce( - (acc, key) => - acc + - key[0] - .split(/(?=[A-Z])/) - .join("-") - .toLowerCase() + - ":" + - key[1] + - ";", - "" - ); -}; - -const mergeStyle = (props, style) => { - if (typeof style === "function") { - return { - ...props, - style: () => { - return styleToString(style()); - }, - }; - } - if (style == null) { - return props; - } - return { - ...props, - style: styleToString(style), - }; -}; - -export const jsx = (jsxTag, { children, style, ref, ...props }) => { - if (typeof jsxTag === "string") { - const ele = van.tags[jsxTag](mergeStyle(props, style), children); - if (ref != null) { - ref.val = ele; - } - return ele; - } - if (typeof jsxTag === "function") { - return jsxTag({ ...props, ref, style, children }); - } -}; - -export { jsx as jsxDEV, jsx as jsxs }; diff --git a/addons/van_jsx/src/type.d.ts b/addons/van_jsx/src/type.d.ts index 9e00db13..f7479693 100644 --- a/addons/van_jsx/src/type.d.ts +++ b/addons/van_jsx/src/type.d.ts @@ -1,12 +1,1423 @@ -import { ChildDom } from "vanjs-core"; - -export type PropsWithChildren = TProps & { - children?: ChildDom | undefined; -}; - -export interface FunctionComponent { - (props: PropsWithChildren, context?: any): ChildDom | null; +import CSS from "csstype"; +import { State } from "vanjs-core"; +import { VanNode } from "./createElement"; +export type Primitive = string | number | boolean | bigint; +export type Key = number | string | symbol; +export type PrimitiveChild = Primitive; +interface EventHandler { + (event: E): void; +} +export interface DOMAttributes { + onCopy?: EventHandler | undefined; + onCopyCapture?: EventHandler | undefined; + onCut?: EventHandler | undefined; + onCutCapture?: EventHandler | undefined; + onPaste?: EventHandler | undefined; + onPasteCapture?: EventHandler | undefined; + onCompositionEnd?: EventHandler | undefined; + onCompositionEndCapture?: EventHandler | undefined; + onCompositionStart?: EventHandler | undefined; + onCompositionStartCapture?: EventHandler | undefined; + onCompositionUpdate?: EventHandler | undefined; + onCompositionUpdateCapture?: EventHandler | undefined; + onFocus?: EventHandler | undefined; + onFocusCapture?: EventHandler | undefined; + onBlur?: EventHandler | undefined; + onBlurCapture?: EventHandler | undefined; + onChange?: EventHandler | undefined; + onChangeCapture?: EventHandler | undefined; + onBeforeInput?: EventHandler | undefined; + onBeforeInputCapture?: EventHandler | undefined; + onInput?: EventHandler | undefined; + onInputCapture?: EventHandler | undefined; + onReset?: EventHandler | undefined; + onResetCapture?: EventHandler | undefined; + onSubmit?: EventHandler | undefined; + onSubmitCapture?: EventHandler | undefined; + onInvalid?: EventHandler | undefined; + onInvalidCapture?: EventHandler | undefined; + onLoad?: EventHandler | undefined; + onLoadCapture?: EventHandler | undefined; + onError?: EventHandler | undefined; + onErrorCapture?: EventHandler | undefined; + onKeyDown?: EventHandler | undefined; + onKeyDownCapture?: EventHandler | undefined; + /** @deprecated */ + onKeyPress?: EventHandler | undefined; + /** @deprecated */ + onKeyPressCapture?: EventHandler | undefined; + onKeyUp?: EventHandler | undefined; + onKeyUpCapture?: EventHandler | undefined; + onAbort?: EventHandler | undefined; + onAbortCapture?: EventHandler | undefined; + onCanPlay?: EventHandler | undefined; + onCanPlayCapture?: EventHandler | undefined; + onCanPlayThrough?: EventHandler | undefined; + onCanPlayThroughCapture?: EventHandler | undefined; + onDurationChange?: EventHandler | undefined; + onDurationChangeCapture?: EventHandler | undefined; + onEmptied?: EventHandler | undefined; + onEmptiedCapture?: EventHandler | undefined; + onEncrypted?: EventHandler | undefined; + onEncryptedCapture?: EventHandler | undefined; + onEnded?: EventHandler | undefined; + onEndedCapture?: EventHandler | undefined; + onLoadedData?: EventHandler | undefined; + onLoadedDataCapture?: EventHandler | undefined; + onLoadedMetadata?: EventHandler | undefined; + onLoadedMetadataCapture?: EventHandler | undefined; + onLoadStart?: EventHandler | undefined; + onLoadStartCapture?: EventHandler | undefined; + onPause?: EventHandler | undefined; + onPauseCapture?: EventHandler | undefined; + onPlay?: EventHandler | undefined; + onPlayCapture?: EventHandler | undefined; + onPlaying?: EventHandler | undefined; + onPlayingCapture?: EventHandler | undefined; + onProgress?: EventHandler | undefined; + onProgressCapture?: EventHandler | undefined; + onRateChange?: EventHandler | undefined; + onRateChangeCapture?: EventHandler | undefined; + onSeeked?: EventHandler | undefined; + onSeekedCapture?: EventHandler | undefined; + onSeeking?: EventHandler | undefined; + onSeekingCapture?: EventHandler | undefined; + onStalled?: EventHandler | undefined; + onStalledCapture?: EventHandler | undefined; + onSuspend?: EventHandler | undefined; + onSuspendCapture?: EventHandler | undefined; + onTimeUpdate?: EventHandler | undefined; + onTimeUpdateCapture?: EventHandler | undefined; + onVolumeChange?: EventHandler | undefined; + onVolumeChangeCapture?: EventHandler | undefined; + onWaiting?: EventHandler | undefined; + onWaitingCapture?: EventHandler | undefined; + onAuxClick?: EventHandler | undefined; + onAuxClickCapture?: EventHandler | undefined; + onClick?: EventHandler | undefined; + onClickCapture?: EventHandler | undefined; + onContextMenu?: EventHandler | undefined; + onContextMenuCapture?: EventHandler | undefined; + onDoubleClick?: EventHandler | undefined; + onDoubleClickCapture?: EventHandler | undefined; + onDrag?: EventHandler | undefined; + onDragCapture?: EventHandler | undefined; + onDragEnd?: EventHandler | undefined; + onDragEndCapture?: EventHandler | undefined; + onDragEnter?: EventHandler | undefined; + onDragEnterCapture?: EventHandler | undefined; + onDragExit?: EventHandler | undefined; + onDragExitCapture?: EventHandler | undefined; + onDragLeave?: EventHandler | undefined; + onDragLeaveCapture?: EventHandler | undefined; + onDragOver?: EventHandler | undefined; + onDragOverCapture?: EventHandler | undefined; + onDragStart?: EventHandler | undefined; + onDragStartCapture?: EventHandler | undefined; + onDrop?: EventHandler | undefined; + onDropCapture?: EventHandler | undefined; + onMouseDown?: EventHandler | undefined; + onMouseDownCapture?: EventHandler | undefined; + onMouseEnter?: EventHandler | undefined; + onMouseLeave?: EventHandler | undefined; + onMouseMove?: EventHandler | undefined; + onMouseMoveCapture?: EventHandler | undefined; + onMouseOut?: EventHandler | undefined; + onMouseOutCapture?: EventHandler | undefined; + onMouseOver?: EventHandler | undefined; + onMouseOverCapture?: EventHandler | undefined; + onMouseUp?: EventHandler | undefined; + onMouseUpCapture?: EventHandler | undefined; + onSelect?: EventHandler | undefined; + onSelectCapture?: EventHandler | undefined; + onTouchCancel?: EventHandler | undefined; + onTouchCancelCapture?: EventHandler | undefined; + onTouchEnd?: EventHandler | undefined; + onTouchEndCapture?: EventHandler | undefined; + onTouchMove?: EventHandler | undefined; + onTouchMoveCapture?: EventHandler | undefined; + onTouchStart?: EventHandler | undefined; + onTouchStartCapture?: EventHandler | undefined; + onPointerDown?: EventHandler | undefined; + onPointerDownCapture?: EventHandler | undefined; + onPointerMove?: EventHandler | undefined; + onPointerMoveCapture?: EventHandler | undefined; + onPointerUp?: EventHandler | undefined; + onPointerUpCapture?: EventHandler | undefined; + onPointerCancel?: EventHandler | undefined; + onPointerCancelCapture?: EventHandler | undefined; + onPointerEnter?: EventHandler | undefined; + onPointerEnterCapture?: EventHandler | undefined; + onPointerLeave?: EventHandler | undefined; + onPointerLeaveCapture?: EventHandler | undefined; + onPointerOver?: EventHandler | undefined; + onPointerOverCapture?: EventHandler | undefined; + onPointerOut?: EventHandler | undefined; + onPointerOutCapture?: EventHandler | undefined; + onGotPointerCapture?: EventHandler | undefined; + onGotPointerCaptureCapture?: EventHandler | undefined; + onLostPointerCapture?: EventHandler | undefined; + onLostPointerCaptureCapture?: EventHandler | undefined; + onScroll?: EventHandler | undefined; + onScrollCapture?: EventHandler | undefined; + onWheel?: EventHandler | undefined; + onWheelCapture?: EventHandler | undefined; + onAnimationStart?: EventHandler | undefined; + onAnimationStartCapture?: EventHandler | undefined; + onAnimationEnd?: EventHandler | undefined; + onAnimationEndCapture?: EventHandler | undefined; + onAnimationIteration?: EventHandler | undefined; + onAnimationIterationCapture?: EventHandler | undefined; + onTransitionEnd?: EventHandler | undefined; + onTransitionEndCapture?: EventHandler | undefined; +} +type Booleanish = boolean | "true" | "false"; +type CrossOrigin = "anonymous" | "use-credentials" | "" | undefined; +interface AriaAttributes { + /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */ + "aria-activedescendant"?: string | undefined; + /** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */ + "aria-atomic"?: Booleanish | undefined; + /** + * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be + * presented if they are made. + */ + "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined; + /** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */ + "aria-busy"?: Booleanish | undefined; + /** + * Indicates the current "checked" state of checkboxes, radio buttons, and other widgets. + * @see aria-pressed @see aria-selected. + */ + "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined; + /** + * Defines the total number of columns in a table, grid, or treegrid. + * @see aria-colindex. + */ + "aria-colcount"?: number | undefined; + /** + * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid. + * @see aria-colcount @see aria-colspan. + */ + "aria-colindex"?: number | undefined; + /** + * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid. + * @see aria-colindex @see aria-rowspan. + */ + "aria-colspan"?: number | undefined; + /** + * Identifies the element (or elements) whose contents or presence are controlled by the current element. + * @see aria-owns. + */ + "aria-controls"?: string | undefined; + /** Indicates the element that represents the current item within a container or set of related elements. */ + "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined; + /** + * Identifies the element (or elements) that describes the object. + * @see aria-labelledby + */ + "aria-describedby"?: string | undefined; + /** + * Identifies the element that provides a detailed, extended description for the object. + * @see aria-describedby. + */ + "aria-details"?: string | undefined; + /** + * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. + * @see aria-hidden @see aria-readonly. + */ + "aria-disabled"?: Booleanish | undefined; + /** + * Indicates what functions can be performed when a dragged object is released on the drop target. + * @deprecated in ARIA 1.1 + */ + "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined; + /** + * Identifies the element that provides an error message for the object. + * @see aria-invalid @see aria-describedby. + */ + "aria-errormessage"?: string | undefined; + /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */ + "aria-expanded"?: Booleanish | undefined; + /** + * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion, + * allows assistive technology to override the general default of reading in document source order. + */ + "aria-flowto"?: string | undefined; + /** + * Indicates an element's "grabbed" state in a drag-and-drop operation. + * @deprecated in ARIA 1.1 + */ + "aria-grabbed"?: Booleanish | undefined; + /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */ + "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined; + /** + * Indicates whether the element is exposed to an accessibility API. + * @see aria-disabled. + */ + "aria-hidden"?: Booleanish | undefined; + /** + * Indicates the entered value does not conform to the format expected by the application. + * @see aria-errormessage. + */ + "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined; + /** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */ + "aria-keyshortcuts"?: string | undefined; + /** + * Defines a string value that labels the current element. + * @see aria-labelledby. + */ + "aria-label"?: string | undefined; + /** + * Identifies the element (or elements) that labels the current element. + * @see aria-describedby. + */ + "aria-labelledby"?: string | undefined; + /** Defines the hierarchical level of an element within a structure. */ + "aria-level"?: number | undefined; + /** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */ + "aria-live"?: "off" | "assertive" | "polite" | undefined; + /** Indicates whether an element is modal when displayed. */ + "aria-modal"?: Booleanish | undefined; + /** Indicates whether a text box accepts multiple lines of input or only a single line. */ + "aria-multiline"?: Booleanish | undefined; + /** Indicates that the user may select more than one item from the current selectable descendants. */ + "aria-multiselectable"?: Booleanish | undefined; + /** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */ + "aria-orientation"?: "horizontal" | "vertical" | undefined; + /** + * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship + * between DOM elements where the DOM hierarchy cannot be used to represent the relationship. + * @see aria-controls. + */ + "aria-owns"?: string | undefined; + /** + * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. + * A hint could be a sample value or a brief description of the expected format. + */ + "aria-placeholder"?: string | undefined; + /** + * Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + * @see aria-setsize. + */ + "aria-posinset"?: number | undefined; + /** + * Indicates the current "pressed" state of toggle buttons. + * @see aria-checked @see aria-selected. + */ + "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined; + /** + * Indicates that the element is not editable, but is otherwise operable. + * @see aria-disabled. + */ + "aria-readonly"?: Booleanish | undefined; + /** + * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. + * @see aria-atomic. + */ + "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined; + /** Indicates that user input is required on the element before a form may be submitted. */ + "aria-required"?: Booleanish | undefined; + /** Defines a human-readable, author-localized description for the role of an element. */ + "aria-roledescription"?: string | undefined; + /** + * Defines the total number of rows in a table, grid, or treegrid. + * @see aria-rowindex. + */ + "aria-rowcount"?: number | undefined; + /** + * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid. + * @see aria-rowcount @see aria-rowspan. + */ + "aria-rowindex"?: number | undefined; + /** + * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid. + * @see aria-rowindex @see aria-colspan. + */ + "aria-rowspan"?: number | undefined; + /** + * Indicates the current "selected" state of various widgets. + * @see aria-checked @see aria-pressed. + */ + "aria-selected"?: Booleanish | undefined; + /** + * Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. + * @see aria-posinset. + */ + "aria-setsize"?: number | undefined; + /** Indicates if items in a table or grid are sorted in ascending or descending order. */ + "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined; + /** Defines the maximum allowed value for a range widget. */ + "aria-valuemax"?: number | undefined; + /** Defines the minimum allowed value for a range widget. */ + "aria-valuemin"?: number | undefined; + /** + * Defines the current value for a range widget. + * @see aria-valuetext. + */ + "aria-valuenow"?: number | undefined; + /** Defines the human readable text alternative of aria-valuenow for a range widget. */ + "aria-valuetext"?: string | undefined; +} +type AriaRole = "alert" | "alertdialog" | "application" | "article" | "banner" | "button" | "cell" | "checkbox" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "dialog" | "directory" | "document" | "feed" | "figure" | "form" | "grid" | "gridcell" | "group" | "heading" | "img" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem" | (string & object); +interface EventHandler { + (event: E): void; +} +export interface DOMAttributes { + onCopy?: EventHandler | undefined; + onCopyCapture?: EventHandler | undefined; + onCut?: EventHandler | undefined; + onCutCapture?: EventHandler | undefined; + onPaste?: EventHandler | undefined; + onPasteCapture?: EventHandler | undefined; + onCompositionEnd?: EventHandler | undefined; + onCompositionEndCapture?: EventHandler | undefined; + onCompositionStart?: EventHandler | undefined; + onCompositionStartCapture?: EventHandler | undefined; + onCompositionUpdate?: EventHandler | undefined; + onCompositionUpdateCapture?: EventHandler | undefined; + onFocus?: EventHandler | undefined; + onFocusCapture?: EventHandler | undefined; + onBlur?: EventHandler | undefined; + onBlurCapture?: EventHandler | undefined; + onChange?: EventHandler | undefined; + onChangeCapture?: EventHandler | undefined; + onBeforeInput?: EventHandler | undefined; + onBeforeInputCapture?: EventHandler | undefined; + onInput?: EventHandler | undefined; + onInputCapture?: EventHandler | undefined; + onReset?: EventHandler | undefined; + onResetCapture?: EventHandler | undefined; + onSubmit?: EventHandler | undefined; + onSubmitCapture?: EventHandler | undefined; + onInvalid?: EventHandler | undefined; + onInvalidCapture?: EventHandler | undefined; + onLoad?: EventHandler | undefined; + onLoadCapture?: EventHandler | undefined; + onError?: EventHandler | undefined; + onErrorCapture?: EventHandler | undefined; + onKeyDown?: EventHandler | undefined; + onKeyDownCapture?: EventHandler | undefined; + /** @deprecated */ + onKeyPress?: EventHandler | undefined; + /** @deprecated */ + onKeyPressCapture?: EventHandler | undefined; + onKeyUp?: EventHandler | undefined; + onKeyUpCapture?: EventHandler | undefined; + onAbort?: EventHandler | undefined; + onAbortCapture?: EventHandler | undefined; + onCanPlay?: EventHandler | undefined; + onCanPlayCapture?: EventHandler | undefined; + onCanPlayThrough?: EventHandler | undefined; + onCanPlayThroughCapture?: EventHandler | undefined; + onDurationChange?: EventHandler | undefined; + onDurationChangeCapture?: EventHandler | undefined; + onEmptied?: EventHandler | undefined; + onEmptiedCapture?: EventHandler | undefined; + onEncrypted?: EventHandler | undefined; + onEncryptedCapture?: EventHandler | undefined; + onEnded?: EventHandler | undefined; + onEndedCapture?: EventHandler | undefined; + onLoadedData?: EventHandler | undefined; + onLoadedDataCapture?: EventHandler | undefined; + onLoadedMetadata?: EventHandler | undefined; + onLoadedMetadataCapture?: EventHandler | undefined; + onLoadStart?: EventHandler | undefined; + onLoadStartCapture?: EventHandler | undefined; + onPause?: EventHandler | undefined; + onPauseCapture?: EventHandler | undefined; + onPlay?: EventHandler | undefined; + onPlayCapture?: EventHandler | undefined; + onPlaying?: EventHandler | undefined; + onPlayingCapture?: EventHandler | undefined; + onProgress?: EventHandler | undefined; + onProgressCapture?: EventHandler | undefined; + onRateChange?: EventHandler | undefined; + onRateChangeCapture?: EventHandler | undefined; + onSeeked?: EventHandler | undefined; + onSeekedCapture?: EventHandler | undefined; + onSeeking?: EventHandler | undefined; + onSeekingCapture?: EventHandler | undefined; + onStalled?: EventHandler | undefined; + onStalledCapture?: EventHandler | undefined; + onSuspend?: EventHandler | undefined; + onSuspendCapture?: EventHandler | undefined; + onTimeUpdate?: EventHandler | undefined; + onTimeUpdateCapture?: EventHandler | undefined; + onVolumeChange?: EventHandler | undefined; + onVolumeChangeCapture?: EventHandler | undefined; + onWaiting?: EventHandler | undefined; + onWaitingCapture?: EventHandler | undefined; + onAuxClick?: EventHandler | undefined; + onAuxClickCapture?: EventHandler | undefined; + onClick?: EventHandler | undefined; + onClickCapture?: EventHandler | undefined; + onContextMenu?: EventHandler | undefined; + onContextMenuCapture?: EventHandler | undefined; + onDoubleClick?: EventHandler | undefined; + onDoubleClickCapture?: EventHandler | undefined; + onDrag?: EventHandler | undefined; + onDragCapture?: EventHandler | undefined; + onDragEnd?: EventHandler | undefined; + onDragEndCapture?: EventHandler | undefined; + onDragEnter?: EventHandler | undefined; + onDragEnterCapture?: EventHandler | undefined; + onDragExit?: EventHandler | undefined; + onDragExitCapture?: EventHandler | undefined; + onDragLeave?: EventHandler | undefined; + onDragLeaveCapture?: EventHandler | undefined; + onDragOver?: EventHandler | undefined; + onDragOverCapture?: EventHandler | undefined; + onDragStart?: EventHandler | undefined; + onDragStartCapture?: EventHandler | undefined; + onDrop?: EventHandler | undefined; + onDropCapture?: EventHandler | undefined; + onMouseDown?: EventHandler | undefined; + onMouseDownCapture?: EventHandler | undefined; + onMouseEnter?: EventHandler | undefined; + onMouseLeave?: EventHandler | undefined; + onMouseMove?: EventHandler | undefined; + onMouseMoveCapture?: EventHandler | undefined; + onMouseOut?: EventHandler | undefined; + onMouseOutCapture?: EventHandler | undefined; + onMouseOver?: EventHandler | undefined; + onMouseOverCapture?: EventHandler | undefined; + onMouseUp?: EventHandler | undefined; + onMouseUpCapture?: EventHandler | undefined; + onSelect?: EventHandler | undefined; + onSelectCapture?: EventHandler | undefined; + onTouchCancel?: EventHandler | undefined; + onTouchCancelCapture?: EventHandler | undefined; + onTouchEnd?: EventHandler | undefined; + onTouchEndCapture?: EventHandler | undefined; + onTouchMove?: EventHandler | undefined; + onTouchMoveCapture?: EventHandler | undefined; + onTouchStart?: EventHandler | undefined; + onTouchStartCapture?: EventHandler | undefined; + onPointerDown?: EventHandler | undefined; + onPointerDownCapture?: EventHandler | undefined; + onPointerMove?: EventHandler | undefined; + onPointerMoveCapture?: EventHandler | undefined; + onPointerUp?: EventHandler | undefined; + onPointerUpCapture?: EventHandler | undefined; + onPointerCancel?: EventHandler | undefined; + onPointerCancelCapture?: EventHandler | undefined; + onPointerEnter?: EventHandler | undefined; + onPointerEnterCapture?: EventHandler | undefined; + onPointerLeave?: EventHandler | undefined; + onPointerLeaveCapture?: EventHandler | undefined; + onPointerOver?: EventHandler | undefined; + onPointerOverCapture?: EventHandler | undefined; + onPointerOut?: EventHandler | undefined; + onPointerOutCapture?: EventHandler | undefined; + onGotPointerCapture?: EventHandler | undefined; + onGotPointerCaptureCapture?: EventHandler | undefined; + onLostPointerCapture?: EventHandler | undefined; + onLostPointerCaptureCapture?: EventHandler | undefined; + onScroll?: EventHandler | undefined; + onScrollCapture?: EventHandler | undefined; + onWheel?: EventHandler | undefined; + onWheelCapture?: EventHandler | undefined; + onAnimationStart?: EventHandler | undefined; + onAnimationStartCapture?: EventHandler | undefined; + onAnimationEnd?: EventHandler | undefined; + onAnimationEndCapture?: EventHandler | undefined; + onAnimationIteration?: EventHandler | undefined; + onAnimationIterationCapture?: EventHandler | undefined; + onTransitionEnd?: EventHandler | undefined; + onTransitionEndCapture?: EventHandler | undefined; +} +export interface ReactiveAttributes { + ref?: State; + children?: VanNode; + key?: Key; +} +export interface HTMLAttributes extends AriaAttributes, DOMAttributes, ReactiveAttributes { + accessKey?: string | undefined; + autoFocus?: boolean | undefined; + className?: string | undefined; + contentEditable?: Booleanish | "inherit" | undefined; + contextMenu?: string | undefined; + dir?: string | undefined; + draggable?: Booleanish | undefined; + hidden?: boolean | undefined; + id?: string | undefined; + lang?: string | undefined; + nonce?: string | undefined; + placeholder?: string | undefined; + slot?: string | undefined; + spellCheck?: Booleanish | undefined; + style?: CSS.Properties | undefined; + tabIndex?: number | undefined; + title?: string | undefined; + translate?: "yes" | "no" | undefined; + radioGroup?: string | undefined; + role?: AriaRole | undefined; + about?: string | undefined; + content?: string | undefined; + datatype?: string | undefined; + inlist?: unknown; + prefix?: string | undefined; + property?: string | undefined; + rel?: string | undefined; + resource?: string | undefined; + rev?: string | undefined; + typeof?: string | undefined; + vocab?: string | undefined; + autoCapitalize?: string | undefined; + autoCorrect?: string | undefined; + autoSave?: string | undefined; + color?: string | undefined; + itemProp?: string | undefined; + itemScope?: boolean | undefined; + itemType?: string | undefined; + itemID?: string | undefined; + itemRef?: string | undefined; + results?: number | undefined; + security?: string | undefined; + unselectable?: "on" | "off" | undefined; + /** + * Hints at the type of data that might be entered by the user while editing the element or its contents + * @see https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute + */ + inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined; + /** + * Specify that a standard HTML element should behave like a defined custom built-in element + * @see https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is + */ + is?: string | undefined; +} +export interface SVGAttributes extends AriaAttributes, DOMAttributes, ReactiveAttributes { + className?: string | undefined; + color?: string | undefined; + height?: number | string | undefined; + id?: string | undefined; + lang?: string | undefined; + max?: number | string | undefined; + media?: string | undefined; + method?: string | undefined; + min?: number | string | undefined; + name?: string | undefined; + style?: CSS.Properties | undefined; + target?: string | undefined; + type?: string | undefined; + width?: number | string | undefined; + role?: AriaRole | undefined; + tabIndex?: number | undefined; + crossOrigin?: CrossOrigin; + accentHeight?: number | string | undefined; + accumulate?: "none" | "sum" | undefined; + additive?: "replace" | "sum" | undefined; + alignmentBaseline?: "auto" | "baseline" | "before-edge" | "text-before-edge" | "middle" | "central" | "after-edge" | "text-after-edge" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "inherit" | undefined; + allowReorder?: "no" | "yes" | undefined; + alphabetic?: number | string | undefined; + amplitude?: number | string | undefined; + arabicForm?: "initial" | "medial" | "terminal" | "isolated" | undefined; + ascent?: number | string | undefined; + attributeName?: string | undefined; + attributeType?: string | undefined; + autoReverse?: Booleanish | undefined; + azimuth?: number | string | undefined; + baseFrequency?: number | string | undefined; + baselineShift?: number | string | undefined; + baseProfile?: number | string | undefined; + bbox?: number | string | undefined; + begin?: number | string | undefined; + bias?: number | string | undefined; + by?: number | string | undefined; + calcMode?: number | string | undefined; + capHeight?: number | string | undefined; + clip?: number | string | undefined; + clipPath?: string | undefined; + clipPathUnits?: number | string | undefined; + clipRule?: number | string | undefined; + colorInterpolation?: number | string | undefined; + colorInterpolationFilters?: "auto" | "sRGB" | "linearRGB" | "inherit" | undefined; + colorProfile?: number | string | undefined; + colorRendering?: number | string | undefined; + contentScriptType?: number | string | undefined; + contentStyleType?: number | string | undefined; + cursor?: number | string | undefined; + cx?: number | string | undefined; + cy?: number | string | undefined; + d?: string | undefined; + decelerate?: number | string | undefined; + descent?: number | string | undefined; + diffuseConstant?: number | string | undefined; + direction?: number | string | undefined; + display?: number | string | undefined; + divisor?: number | string | undefined; + dominantBaseline?: number | string | undefined; + dur?: number | string | undefined; + dx?: number | string | undefined; + dy?: number | string | undefined; + edgeMode?: number | string | undefined; + elevation?: number | string | undefined; + enableBackground?: number | string | undefined; + end?: number | string | undefined; + exponent?: number | string | undefined; + externalResourcesRequired?: Booleanish | undefined; + fill?: string | undefined; + fillOpacity?: number | string | undefined; + fillRule?: "nonzero" | "evenodd" | "inherit" | undefined; + filter?: string | undefined; + filterRes?: number | string | undefined; + filterUnits?: number | string | undefined; + floodColor?: number | string | undefined; + floodOpacity?: number | string | undefined; + focusable?: Booleanish | "auto" | undefined; + fontFamily?: string | undefined; + fontSize?: number | string | undefined; + fontSizeAdjust?: number | string | undefined; + fontStretch?: number | string | undefined; + fontStyle?: number | string | undefined; + fontVariant?: number | string | undefined; + fontWeight?: number | string | undefined; + format?: number | string | undefined; + fr?: number | string | undefined; + from?: number | string | undefined; + fx?: number | string | undefined; + fy?: number | string | undefined; + g1?: number | string | undefined; + g2?: number | string | undefined; + glyphName?: number | string | undefined; + glyphOrientationHorizontal?: number | string | undefined; + glyphOrientationVertical?: number | string | undefined; + glyphRef?: number | string | undefined; + gradientTransform?: string | undefined; + gradientUnits?: string | undefined; + hanging?: number | string | undefined; + horizAdvX?: number | string | undefined; + horizOriginX?: number | string | undefined; + href?: string | undefined; + ideographic?: number | string | undefined; + imageRendering?: number | string | undefined; + in2?: number | string | undefined; + in?: string | undefined; + intercept?: number | string | undefined; + k1?: number | string | undefined; + k2?: number | string | undefined; + k3?: number | string | undefined; + k4?: number | string | undefined; + k?: number | string | undefined; + kernelMatrix?: number | string | undefined; + kernelUnitLength?: number | string | undefined; + kerning?: number | string | undefined; + keyPoints?: number | string | undefined; + keySplines?: number | string | undefined; + keyTimes?: number | string | undefined; + lengthAdjust?: number | string | undefined; + letterSpacing?: number | string | undefined; + lightingColor?: number | string | undefined; + limitingConeAngle?: number | string | undefined; + local?: number | string | undefined; + markerEnd?: string | undefined; + markerHeight?: number | string | undefined; + markerMid?: string | undefined; + markerStart?: string | undefined; + markerUnits?: number | string | undefined; + markerWidth?: number | string | undefined; + mask?: string | undefined; + maskContentUnits?: number | string | undefined; + maskUnits?: number | string | undefined; + mathematical?: number | string | undefined; + mode?: number | string | undefined; + numOctaves?: number | string | undefined; + offset?: number | string | undefined; + opacity?: number | string | undefined; + operator?: number | string | undefined; + order?: number | string | undefined; + orient?: number | string | undefined; + orientation?: number | string | undefined; + origin?: number | string | undefined; + overflow?: number | string | undefined; + overlinePosition?: number | string | undefined; + overlineThickness?: number | string | undefined; + paintOrder?: number | string | undefined; + panose1?: number | string | undefined; + path?: string | undefined; + pathLength?: number | string | undefined; + patternContentUnits?: string | undefined; + patternTransform?: number | string | undefined; + patternUnits?: string | undefined; + pointerEvents?: number | string | undefined; + points?: string | undefined; + pointsAtX?: number | string | undefined; + pointsAtY?: number | string | undefined; + pointsAtZ?: number | string | undefined; + preserveAlpha?: Booleanish | undefined; + preserveAspectRatio?: string | undefined; + primitiveUnits?: number | string | undefined; + r?: number | string | undefined; + radius?: number | string | undefined; + refX?: number | string | undefined; + refY?: number | string | undefined; + renderingIntent?: number | string | undefined; + repeatCount?: number | string | undefined; + repeatDur?: number | string | undefined; + requiredExtensions?: number | string | undefined; + requiredFeatures?: number | string | undefined; + restart?: number | string | undefined; + result?: string | undefined; + rotate?: number | string | undefined; + rx?: number | string | undefined; + ry?: number | string | undefined; + scale?: number | string | undefined; + seed?: number | string | undefined; + shapeRendering?: number | string | undefined; + slope?: number | string | undefined; + spacing?: number | string | undefined; + specularConstant?: number | string | undefined; + specularExponent?: number | string | undefined; + speed?: number | string | undefined; + spreadMethod?: string | undefined; + startOffset?: number | string | undefined; + stdDeviation?: number | string | undefined; + stemh?: number | string | undefined; + stemv?: number | string | undefined; + stitchTiles?: number | string | undefined; + stopColor?: string | undefined; + stopOpacity?: number | string | undefined; + strikethroughPosition?: number | string | undefined; + strikethroughThickness?: number | string | undefined; + string?: number | string | undefined; + stroke?: string | undefined; + strokeDasharray?: string | number | undefined; + strokeDashoffset?: string | number | undefined; + strokeLinecap?: "butt" | "round" | "square" | "inherit" | undefined; + strokeLinejoin?: "miter" | "round" | "bevel" | "inherit" | undefined; + strokeMiterlimit?: number | string | undefined; + strokeOpacity?: number | string | undefined; + strokeWidth?: number | string | undefined; + surfaceScale?: number | string | undefined; + systemLanguage?: number | string | undefined; + tableValues?: number | string | undefined; + targetX?: number | string | undefined; + targetY?: number | string | undefined; + textAnchor?: string | undefined; + textDecoration?: number | string | undefined; + textLength?: number | string | undefined; + textRendering?: number | string | undefined; + to?: number | string | undefined; + transform?: string | undefined; + u1?: number | string | undefined; + u2?: number | string | undefined; + underlinePosition?: number | string | undefined; + underlineThickness?: number | string | undefined; + unicode?: number | string | undefined; + unicodeBidi?: number | string | undefined; + unicodeRange?: number | string | undefined; + unitsPerEm?: number | string | undefined; + vAlphabetic?: number | string | undefined; + values?: string | undefined; + vectorEffect?: number | string | undefined; + version?: string | undefined; + vertAdvY?: number | string | undefined; + vertOriginX?: number | string | undefined; + vertOriginY?: number | string | undefined; + vHanging?: number | string | undefined; + vIdeographic?: number | string | undefined; + viewBox?: string | undefined; + viewTarget?: number | string | undefined; + visibility?: number | string | undefined; + vMathematical?: number | string | undefined; + widths?: number | string | undefined; + wordSpacing?: number | string | undefined; + writingMode?: number | string | undefined; + x1?: number | string | undefined; + x2?: number | string | undefined; + x?: number | string | undefined; + xChannelSelector?: string | undefined; + xHeight?: number | string | undefined; + xlinkActuate?: string | undefined; + xlinkArcrole?: string | undefined; + xlinkHref?: string | undefined; + xlinkRole?: string | undefined; + xlinkShow?: string | undefined; + xlinkTitle?: string | undefined; + xlinkType?: string | undefined; + xmlBase?: string | undefined; + xmlLang?: string | undefined; + xmlns?: string | undefined; + xmlnsXlink?: string | undefined; + xmlSpace?: string | undefined; + y1?: number | string | undefined; + y2?: number | string | undefined; + y?: number | string | undefined; + yChannelSelector?: string | undefined; + z?: number | string | undefined; + zoomAndPan?: string | undefined; +} +type HTMLAttributeAnchorTarget = "_self" | "_blank" | "_parent" | "_top" | (string & object); +type HTMLAttributeReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url"; +export interface AnchorHTMLAttributes extends HTMLAttributes { + download?: unknown; + href?: string | undefined; + hrefLang?: string | undefined; + media?: string | undefined; + ping?: string | undefined; + target?: HTMLAttributeAnchorTarget | undefined; + type?: string | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; +} +export interface AreaHTMLAttributes extends HTMLAttributes { + alt?: string | undefined; + coords?: string | undefined; + download?: unknown; + href?: string | undefined; + hrefLang?: string | undefined; + media?: string | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + shape?: string | undefined; + target?: string | undefined; +} +export interface MediaHTMLAttributes extends HTMLAttributes { + autoPlay?: boolean | undefined; + controls?: boolean | undefined; + controlsList?: string | undefined; + crossOrigin?: CrossOrigin; + loop?: boolean | undefined; + mediaGroup?: string | undefined; + muted?: boolean | undefined; + playsInline?: boolean | undefined; + preload?: string | undefined; + src?: string | undefined; +} +export interface AudioHTMLAttributes extends MediaHTMLAttributes { +} +export interface BaseHTMLAttributes extends HTMLAttributes { + href?: string | undefined; + target?: string | undefined; +} +export interface BlockquoteHTMLAttributes extends HTMLAttributes { + cite?: string | undefined; +} +export interface ButtonHTMLAttributes extends HTMLAttributes { + disabled?: boolean | undefined; + form?: string | undefined; + formAction?: string | undefined; + formEncType?: string | undefined; + formMethod?: string | undefined; + formNoValidate?: boolean | undefined; + formTarget?: string | undefined; + name?: string | undefined; + type?: "submit" | "reset" | "button" | undefined; + value?: string | ReadonlyArray | number | undefined; +} +export interface CanvasHTMLAttributes extends HTMLAttributes { + height?: number | string | undefined; + width?: number | string | undefined; +} +export interface ColHTMLAttributes extends HTMLAttributes { + span?: number | undefined; + width?: number | string | undefined; +} +export interface ColgroupHTMLAttributes extends HTMLAttributes { + span?: number | undefined; +} +export interface DataHTMLAttributes extends HTMLAttributes { + value?: string | ReadonlyArray | number | undefined; +} +export interface DetailsHTMLAttributes extends HTMLAttributes { + open?: boolean | undefined; + onToggle?: Event | undefined; +} +export interface DelHTMLAttributes extends HTMLAttributes { + cite?: string | undefined; + dateTime?: string | undefined; +} +export interface DialogHTMLAttributes extends HTMLAttributes { + onCancel?: Event | undefined; + onClose?: Event | undefined; + open?: boolean | undefined; +} +export interface EmbedHTMLAttributes extends HTMLAttributes { + height?: number | string | undefined; + src?: string | undefined; + type?: string | undefined; + width?: number | string | undefined; +} +export interface FieldsetHTMLAttributes extends HTMLAttributes { + disabled?: boolean | undefined; + form?: string | undefined; + name?: string | undefined; +} +export interface FormHTMLAttributes extends HTMLAttributes { + acceptCharset?: string | undefined; + action?: string | undefined; + autoComplete?: string | undefined; + encType?: string | undefined; + method?: string | undefined; + name?: string | undefined; + noValidate?: boolean | undefined; + target?: string | undefined; +} +export interface HtmlHTMLAttributes extends HTMLAttributes { + manifest?: string | undefined; +} +export interface IframeHTMLAttributes extends HTMLAttributes { + allow?: string | undefined; + allowFullScreen?: boolean | undefined; + allowTransparency?: boolean | undefined; + /** @deprecated */ + frameBorder?: number | string | undefined; + height?: number | string | undefined; + loading?: "eager" | "lazy" | undefined; + /** @deprecated */ + marginHeight?: number | undefined; + /** @deprecated */ + marginWidth?: number | undefined; + name?: string | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + sandbox?: string | undefined; + /** @deprecated */ + scrolling?: string | undefined; + seamless?: boolean | undefined; + src?: string | undefined; + srcDoc?: string | undefined; + width?: number | string | undefined; +} +export interface ImgHTMLAttributes extends HTMLAttributes { + alt?: string | undefined; + crossOrigin?: CrossOrigin; + decoding?: "async" | "auto" | "sync" | undefined; + height?: number | string | undefined; + loading?: "eager" | "lazy" | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + sizes?: string | undefined; + src?: string | undefined; + srcSet?: string | undefined; + useMap?: string | undefined; + width?: number | string | undefined; +} +export interface InsHTMLAttributes extends HTMLAttributes { + cite?: string | undefined; + dateTime?: string | undefined; +} +type HTMLInputTypeAttribute = "button" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "file" | "hidden" | "image" | "month" | "number" | "password" | "radio" | "range" | "reset" | "search" | "submit" | "tel" | "text" | "time" | "url" | "week" | (string & object); +export interface InputHTMLAttributes extends HTMLAttributes { + accept?: string | undefined; + alt?: string | undefined; + autoComplete?: string | undefined; + capture?: boolean | "user" | "environment" | undefined; + checked?: boolean | undefined; + disabled?: boolean | undefined; + enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined; + form?: string | undefined; + formAction?: string | undefined; + formEncType?: string | undefined; + formMethod?: string | undefined; + formNoValidate?: boolean | undefined; + formTarget?: string | undefined; + height?: number | string | undefined; + list?: string | undefined; + max?: number | string | undefined; + maxLength?: number | undefined; + min?: number | string | undefined; + minLength?: number | undefined; + multiple?: boolean | undefined; + name?: string | undefined; + pattern?: string | undefined; + placeholder?: string | undefined; + readOnly?: boolean | undefined; + required?: boolean | undefined; + size?: number | undefined; + src?: string | undefined; + step?: number | string | undefined; + type?: HTMLInputTypeAttribute | undefined; + value?: string | ReadonlyArray | number | undefined; + width?: number | string | undefined; + onChange?: EventHandler | undefined; +} +export interface KeygenHTMLAttributes extends HTMLAttributes { + challenge?: string | undefined; + disabled?: boolean | undefined; + form?: string | undefined; + keyType?: string | undefined; + keyParams?: string | undefined; + name?: string | undefined; } - -export type ComponentType = FunctionComponent; -export type FunctionChild = (props: TProps) => ChildDom; +export interface LabelHTMLAttributes extends HTMLAttributes { + form?: string | undefined; + htmlFor?: string | undefined; +} +export interface LiHTMLAttributes extends HTMLAttributes { + value?: string | ReadonlyArray | number | undefined; +} +export interface LinkHTMLAttributes extends HTMLAttributes { + as?: string | undefined; + crossOrigin?: CrossOrigin; + fetchPriority?: "high" | "low" | "auto"; + href?: string | undefined; + hrefLang?: string | undefined; + integrity?: string | undefined; + media?: string | undefined; + imageSrcSet?: string | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + sizes?: string | undefined; + type?: string | undefined; + charSet?: string | undefined; +} +export interface MapHTMLAttributes extends HTMLAttributes { + name?: string | undefined; +} +export interface MenuHTMLAttributes extends HTMLAttributes { + type?: string | undefined; +} +export interface MetaHTMLAttributes extends HTMLAttributes { + charSet?: string | undefined; + httpEquiv?: string | undefined; + name?: string | undefined; + media?: string | undefined; +} +export interface MeterHTMLAttributes extends HTMLAttributes { + form?: string | undefined; + high?: number | undefined; + low?: number | undefined; + max?: number | string | undefined; + min?: number | string | undefined; + optimum?: number | undefined; + value?: string | ReadonlyArray | number | undefined; +} +export interface QuoteHTMLAttributes extends HTMLAttributes { + cite?: string | undefined; +} +export interface ObjectHTMLAttributes extends HTMLAttributes { + classID?: string | undefined; + data?: string | undefined; + form?: string | undefined; + height?: number | string | undefined; + name?: string | undefined; + type?: string | undefined; + useMap?: string | undefined; + width?: number | string | undefined; + wmode?: string | undefined; +} +export interface OlHTMLAttributes extends HTMLAttributes { + reversed?: boolean | undefined; + start?: number | undefined; + type?: "1" | "a" | "A" | "i" | "I" | undefined; +} +export interface OptgroupHTMLAttributes extends HTMLAttributes { + disabled?: boolean | undefined; + label?: string | undefined; +} +export interface OptionHTMLAttributes extends HTMLAttributes { + disabled?: boolean | undefined; + label?: string | undefined; + selected?: boolean | undefined; + value?: string | ReadonlyArray | number | undefined; +} +export interface OutputHTMLAttributes extends HTMLAttributes { + form?: string | undefined; + htmlFor?: string | undefined; + name?: string | undefined; +} +export interface ParamHTMLAttributes extends HTMLAttributes { + name?: string | undefined; + value?: string | ReadonlyArray | number | undefined; +} +export interface ProgressHTMLAttributes extends HTMLAttributes { + max?: number | string | undefined; + value?: string | ReadonlyArray | number | undefined; +} +export interface SlotHTMLAttributes extends HTMLAttributes { + name?: string | undefined; +} +export interface ScriptHTMLAttributes extends HTMLAttributes { + async?: boolean | undefined; + /** @deprecated */ + charSet?: string | undefined; + crossOrigin?: CrossOrigin; + defer?: boolean | undefined; + integrity?: string | undefined; + noModule?: boolean | undefined; + referrerPolicy?: HTMLAttributeReferrerPolicy | undefined; + src?: string | undefined; + type?: string | undefined; +} +export interface SelectHTMLAttributes extends HTMLAttributes { + autoComplete?: string | undefined; + disabled?: boolean | undefined; + form?: string | undefined; + multiple?: boolean | undefined; + name?: string | undefined; + required?: boolean | undefined; + size?: number | undefined; + value?: string | ReadonlyArray | number | undefined; + onChange?: EventHandler | undefined; +} +export interface SourceHTMLAttributes extends HTMLAttributes { + height?: number | string | undefined; + media?: string | undefined; + sizes?: string | undefined; + src?: string | undefined; + srcSet?: string | undefined; + type?: string | undefined; + width?: number | string | undefined; +} +export interface StyleHTMLAttributes extends HTMLAttributes { + media?: string | undefined; + scoped?: boolean | undefined; + type?: string | undefined; +} +export interface TableHTMLAttributes extends HTMLAttributes { + cellPadding?: number | string | undefined; + cellSpacing?: number | string | undefined; + summary?: string | undefined; + width?: number | string | undefined; +} +export interface TextareaHTMLAttributes extends HTMLAttributes { + autoComplete?: string | undefined; + cols?: number | undefined; + dirName?: string | undefined; + disabled?: boolean | undefined; + form?: string | undefined; + maxLength?: number | undefined; + minLength?: number | undefined; + name?: string | undefined; + placeholder?: string | undefined; + readOnly?: boolean | undefined; + required?: boolean | undefined; + rows?: number | undefined; + value?: string | ReadonlyArray | number | undefined; + wrap?: string | undefined; + onChange?: EventHandler | undefined; +} +export interface TdHTMLAttributes extends HTMLAttributes { + align?: "left" | "center" | "right" | "justify" | "char" | undefined; + colSpan?: number | undefined; + headers?: string | undefined; + rowSpan?: number | undefined; + scope?: string | undefined; + abbr?: string | undefined; + height?: number | string | undefined; + width?: number | string | undefined; + valign?: "top" | "middle" | "bottom" | "baseline" | undefined; +} +export interface ThHTMLAttributes extends HTMLAttributes { + align?: "left" | "center" | "right" | "justify" | "char" | undefined; + colSpan?: number | undefined; + headers?: string | undefined; + rowSpan?: number | undefined; + scope?: string | undefined; + abbr?: string | undefined; +} +export interface TimeHTMLAttributes extends HTMLAttributes { + dateTime?: string | undefined; +} +export interface TrackHTMLAttributes extends HTMLAttributes { + default?: boolean | undefined; + kind?: string | undefined; + label?: string | undefined; + src?: string | undefined; + srcLang?: string | undefined; +} +export interface VideoHTMLAttributes extends MediaHTMLAttributes { + height?: number | string | undefined; + playsInline?: boolean | undefined; + poster?: string | undefined; + width?: number | string | undefined; + disablePictureInPicture?: boolean | undefined; + disableRemotePlayback?: boolean | undefined; +} +export interface WebViewHTMLAttributes extends HTMLAttributes { + allowFullScreen?: boolean | undefined; + allowpopups?: boolean | undefined; + autosize?: boolean | undefined; + blinkfeatures?: string | undefined; + disableblinkfeatures?: string | undefined; + disableguestresize?: boolean | undefined; + disablewebsecurity?: boolean | undefined; + guestinstance?: string | undefined; + httpreferrer?: string | undefined; + nodeintegration?: boolean | undefined; + partition?: string | undefined; + plugins?: boolean | undefined; + preload?: string | undefined; + src?: string | undefined; + useragent?: string | undefined; + webpreferences?: string | undefined; +} +export interface InnerElement { + a: AnchorHTMLAttributes; + abbr: HTMLAttributes; + address: HTMLAttributes; + area: AreaHTMLAttributes; + article: HTMLAttributes; + aside: HTMLAttributes; + audio: AudioHTMLAttributes; + b: HTMLAttributes; + base: BaseHTMLAttributes; + bdi: HTMLAttributes; + bdo: HTMLAttributes; + big: HTMLAttributes; + blockquote: BlockquoteHTMLAttributes; + body: HTMLAttributes; + br: HTMLAttributes; + button: ButtonHTMLAttributes; + canvas: CanvasHTMLAttributes; + caption: HTMLAttributes; + cite: HTMLAttributes; + code: HTMLAttributes; + col: ColHTMLAttributes; + colgroup: ColgroupHTMLAttributes; + data: DataHTMLAttributes; + datalist: HTMLAttributes; + dd: HTMLAttributes; + del: DelHTMLAttributes; + details: DetailsHTMLAttributes; + dfn: HTMLAttributes; + dialog: DialogHTMLAttributes; + div: HTMLAttributes; + dl: HTMLAttributes; + dt: HTMLAttributes; + em: HTMLAttributes; + embed: EmbedHTMLAttributes; + fieldset: FieldsetHTMLAttributes; + figcaption: HTMLAttributes; + figure: HTMLAttributes; + footer: HTMLAttributes; + form: FormHTMLAttributes; + h1: HTMLAttributes; + h2: HTMLAttributes; + h3: HTMLAttributes; + h4: HTMLAttributes; + h5: HTMLAttributes; + h6: HTMLAttributes; + head: HTMLAttributes; + header: HTMLAttributes; + hgroup: HTMLAttributes; + hr: HTMLAttributes; + html: HtmlHTMLAttributes; + i: HTMLAttributes; + iframe: IframeHTMLAttributes; + img: ImgHTMLAttributes; + input: InputHTMLAttributes; + ins: InsHTMLAttributes; + kbd: HTMLAttributes; + keygen: KeygenHTMLAttributes; + label: LabelHTMLAttributes; + legend: HTMLAttributes; + li: LiHTMLAttributes; + link: LinkHTMLAttributes; + main: HTMLAttributes; + map: MapHTMLAttributes; + mark: HTMLAttributes; + menu: MenuHTMLAttributes; + menuitem: HTMLAttributes; + meta: MetaHTMLAttributes; + meter: MeterHTMLAttributes; + nav: HTMLAttributes; + noindex: HTMLAttributes; + noscript: HTMLAttributes; + object: ObjectHTMLAttributes; + ol: OlHTMLAttributes; + optgroup: OptgroupHTMLAttributes; + option: OptionHTMLAttributes; + output: OutputHTMLAttributes; + p: HTMLAttributes; + param: ParamHTMLAttributes; + picture: HTMLAttributes; + pre: HTMLAttributes; + progress: ProgressHTMLAttributes; + q: QuoteHTMLAttributes; + rp: HTMLAttributes; + rt: HTMLAttributes; + ruby: HTMLAttributes; + s: HTMLAttributes; + samp: HTMLAttributes; + slot: SlotHTMLAttributes; + script: ScriptHTMLAttributes; + section: HTMLAttributes; + select: SelectHTMLAttributes; + small: HTMLAttributes; + source: SourceHTMLAttributes; + span: HTMLAttributes; + strong: HTMLAttributes; + style: StyleHTMLAttributes; + sub: HTMLAttributes; + summary: HTMLAttributes; + sup: HTMLAttributes; + table: TableHTMLAttributes; + template: HTMLAttributes; + tbody: HTMLAttributes; + td: TdHTMLAttributes; + textarea: TextareaHTMLAttributes; + tfoot: HTMLAttributes; + th: ThHTMLAttributes; + thead: HTMLAttributes; + time: TimeHTMLAttributes; + title: HTMLAttributes; + tr: HTMLAttributes; + track: TrackHTMLAttributes; + u: HTMLAttributes; + ul: HTMLAttributes; + var: HTMLAttributes; + video: VideoHTMLAttributes; + wbr: HTMLAttributes; + webview: WebViewHTMLAttributes; + svg: SVGAttributes; + animate: SVGAttributes; + animateMotion: SVGAttributes; + animateTransform: SVGAttributes; + circle: SVGAttributes; + clipPath: SVGAttributes; + defs: SVGAttributes; + desc: SVGAttributes; + ellipse: SVGAttributes; + feBlend: SVGAttributes; + feColorMatrix: SVGAttributes; + feComponentTransfer: SVGAttributes; + feComposite: SVGAttributes; + feConvolveMatrix: SVGAttributes; + feDiffuseLighting: SVGAttributes; + feDisplacementMap: SVGAttributes; + feDistantLight: SVGAttributes; + feDropShadow: SVGAttributes; + feFlood: SVGAttributes; + feFuncA: SVGAttributes; + feFuncB: SVGAttributes; + feFuncG: SVGAttributes; + feFuncR: SVGAttributes; + feGaussianBlur: SVGAttributes; + feImage: SVGAttributes; + feMerge: SVGAttributes; + feMergeNode: SVGAttributes; + feMorphology: SVGAttributes; + feOffset: SVGAttributes; + fePointLight: SVGAttributes; + feSpecularLighting: SVGAttributes; + feSpotLight: SVGAttributes; + feTile: SVGAttributes; + feTurbulence: SVGAttributes; + filter: SVGAttributes; + foreignObject: SVGAttributes; + g: SVGAttributes; + image: SVGAttributes; + line: SVGAttributes; + linearGradient: SVGAttributes; + marker: SVGAttributes; + mask: SVGAttributes; + metadata: SVGAttributes; + mpath: SVGAttributes; + path: SVGAttributes; + pattern: SVGAttributes; + polygon: SVGAttributes; + polyline: SVGAttributes; + radialGradient: SVGAttributes; + rect: SVGAttributes; + stop: SVGAttributes; + switch: SVGAttributes; + symbol: SVGAttributes; + text: SVGAttributes; + textPath: SVGAttributes; + tspan: SVGAttributes; + use: SVGAttributes; + view: SVGAttributes; +} +type OrVanAttribute = { + [K in keyof T]: T[K] | (() => T[K]) | State; +}; +export type TagOption = OrVanAttribute> & Pick; +export {}; From 22fcc07bbdeba86ace8486f2f52c03e33c18a11e Mon Sep 17 00:00:00 2001 From: cqh963852 Date: Sat, 20 Jan 2024 10:52:12 +0800 Subject: [PATCH 2/4] chore: refine package.json --- addons/van_jsx/package.json | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/addons/van_jsx/package.json b/addons/van_jsx/package.json index 3a248129..955e2789 100644 --- a/addons/van_jsx/package.json +++ b/addons/van_jsx/package.json @@ -6,19 +6,18 @@ "types": "./dist/index.d.ts", "exports": { ".": { - "require": "./dist/umd/index.js", - "import": "./dist/esm/index.js", - "types": "./dist/index.d.ts" + "require": "./src/index.js", + "import": "./src/index.js" }, "./jsx-runtime": { - "require": "./dist/umd/index.js", - "import": "./dist/esm/index.js", - "types": "./dist/jsx-runtime.d.ts" + "require": "./src/jsx-runtime.js", + "import": "./src/jsx-runtime.js", + "types": "./src/jsx-runtime.d.ts" }, "./jsx-dev-runtime": { - "require": "./dist/umd/index.js", - "import": "./dist/esm/index.js", - "types": "./dist/jsx-runtime.d.ts" + "require": "./src/jsx-dev-runtime.js", + "import": "./src/jsx-dev-runtime.js", + "types": "./src/jsx-dev-runtime.d.ts" } }, "files": [ From 33bcdb852910a61862c9a0b2fcdc99536731ed66 Mon Sep 17 00:00:00 2001 From: cqh963852 Date: Sat, 20 Jan 2024 10:53:07 +0800 Subject: [PATCH 3/4] chore: refine package.json --- addons/van_jsx/package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/van_jsx/package.json b/addons/van_jsx/package.json index 955e2789..3b2ea4b1 100644 --- a/addons/van_jsx/package.json +++ b/addons/van_jsx/package.json @@ -3,11 +3,12 @@ "version": "0.1.0", "type": "module", "description": "jsx-runtime for vanjs", - "types": "./dist/index.d.ts", + "types": "./src/index.d.ts", "exports": { ".": { "require": "./src/index.js", - "import": "./src/index.js" + "import": "./src/index.js", + "types": "./src/index.d.ts" }, "./jsx-runtime": { "require": "./src/jsx-runtime.js", From 15d86493619feead97536c40fff622ecb9854341 Mon Sep 17 00:00:00 2001 From: cqh963852 Date: Sat, 20 Jan 2024 14:23:36 +0800 Subject: [PATCH 4/4] chore: update version --- addons/van_jsx/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/van_jsx/package.json b/addons/van_jsx/package.json index 3b2ea4b1..7609e5ef 100644 --- a/addons/van_jsx/package.json +++ b/addons/van_jsx/package.json @@ -1,6 +1,6 @@ { "name": "vanjs-jsx", - "version": "0.1.0", + "version": "0.2.0", "type": "module", "description": "jsx-runtime for vanjs", "types": "./src/index.d.ts",