diff --git a/packages/inula/scripts/rollup/build-types.js b/packages/inula/scripts/rollup/build-types.js
index 66a5e5620d7393cf6041945d0552abc609d41f40..ca9c8f53314ca70fec4815c81df3d42466556872 100644
--- a/packages/inula/scripts/rollup/build-types.js
+++ b/packages/inula/scripts/rollup/build-types.js
@@ -42,6 +42,9 @@ function deleteFolder(filePath) {
* @param folders {string[]}
* @returns {{buildEnd(): void, name: string}}
*/
+//先明确什么
+//打包出来
+//ut的例子
export function cleanUp(folders) {
return {
name: 'clean-up',
@@ -50,7 +53,42 @@ export function cleanUp(folders) {
},
};
}
+/**
+ * 自定义插件:处理生成的 .d.ts 文件
+ * 例如,移除内部方法或不需要的类型定义。
+ * @returns {{writeBundle(): void, name: string}}
+ */
+function processDTS() {
+ return {
+ name: 'process-dts',
+ writeBundle() {
+ const dtsFilePath = path.resolve('./build/@types/index.d.ts');
+ if (fs.existsSync(dtsFilePath)) {
+ let dtsContent = fs.readFileSync(dtsFilePath, 'utf-8');
+
+ // 删除所有带有下划线的 export 声明
+ dtsContent = dtsContent.replace(/^export\s+.*_.*;/gm, '');
+
+ // 替换特定的导入路径
+ dtsContent = dtsContent.replace(/import\("openinula"\)/g, 'import { InulaNode } from "openinula"');
+
+ // 处理 .d.ts 文件中所有导出的函数
+ dtsContent = dtsContent.replace(
+ /export\s+(function|const|let|var|type|interface)\s+(\w+)\s*(:|\()/g,
+ (match, type, name) => {
+ if (type === 'function') {
+ return `export function ${name}`;
+ }
+ return match;
+ }
+ );
+ fs.writeFileSync(dtsFilePath, dtsContent, 'utf-8');
+ }
+ },
+ };
+}
+module.exports = processDTS;
function buildTypeConfig() {
return {
input: ['./build/@types/index.d.ts'],
@@ -58,7 +96,7 @@ function buildTypeConfig() {
file: './build/@types/index.d.ts',
format: 'es',
},
- plugins: [dts(), cleanUp(['./build/@types/'])],
+ plugins: [dts(), processDTS(), cleanUp(['./build/@types/'])],
};
}
diff --git a/packages/inula/src/external/JSXElement.ts b/packages/inula/src/external/JSXElement.ts
index 89a7a3c75a601d8ade9f1c1266201253da1a68c1..86579ff76f5b47131e9cbcc0646e70594a1b2eb7 100644
--- a/packages/inula/src/external/JSXElement.ts
+++ b/packages/inula/src/external/JSXElement.ts
@@ -17,7 +17,10 @@ import { TYPE_COMMON_ELEMENT } from './JSXElementType';
import { getProcessingClassVNode } from '../renderer/GlobalVar';
import { Source } from '../renderer/Types';
import { BELONG_CLASS_VNODE_KEY } from '../renderer/vnode/VNode';
-import { InulaElement, KVObject } from '../types';
+import { Context, ExoticComponent, InulaElement, InulaNode, KVObject, ConsumerProps, ProviderProps } from '../types';
+import { OriginalComponent } from '../inulax/adapters/reduxReact';
+import { ReduxStoreHandler } from '../inulax/adapters/redux';
+import { Subscription } from '../inulax/adapters/subscription';
/**
* vtype 节点的类型,这里固定是element
@@ -72,8 +75,8 @@ function mergeDefault(sourceObj, defaultObj) {
// ['key', 'ref', '__source', '__self']属性不从setting获取
const keyArray = ['key', 'ref', '__source', '__self'];
-
-function buildElement(isClone, type, setting, children) {
+//这个没太懂 todo
+function buildElement(isClone: boolean, type, setting, children: InulaNode[]) {
// setting中的值优先级最高,clone情况下从 type 中取值,创建情况下直接赋值为 null
const key = setting && setting.key !== undefined ? String(setting.key) : isClone ? type.key : null;
const ref = setting && setting.ref !== undefined ? setting.ref : isClone ? type.ref : null;
@@ -110,14 +113,61 @@ function buildElement(isClone, type, setting, children) {
}
// 创建Element结构体,供JSX编译时调用
-export function createElement(type, setting, ...children) {
+//type 细节化 todo 参考react
+export function createElement
(
+ //仍然需要修改 MergeProps定义问题
+ type: OriginalComponent
,
+ setting?: P | null,
+ ...children: InulaNode[]
+): InulaElement
;
+
+export function createElement(
+ type: ExoticComponent>,
+ setting: { [p: string]: any } | null,
+ ...children: InulaNode[]
+): InulaElement;
+
+export function createElement(
+ type: ExoticComponent>,
+ setting: { [key: string]: any } | null,
+ ...children: InulaNode[]
+): InulaElement;
+
+// 重载签名 2:处理 InulaElement 类型
+export function createElement(type: InulaElement
, setting?: P | null, ...children: InulaNode[]): InulaElement
;
+
+// 实现签名:与重载签名一致的实现
+export function createElement
(
+ type:
+ | string
+ | InulaElement
+ | ExoticComponent>
+ | Context<{ store: ReduxStoreHandler; subscription: Subscription }>
+ | ExoticComponent>
+ // todo MergedProps 接口?
+ | OriginalComponent,
+ setting?: (P & { children?: InulaNode }) | null,
+ ...children: InulaNode[]
+): InulaElement | InulaElement
{
return buildElement(false, type, setting, children);
}
-
-export function cloneElement(element, setting, ...children) {
+//只传入 element,克隆该元素,返回一个新的 InulaElement。
+export function cloneElement
(element: InulaElement
): InulaElement
;
+//传入 element 和 setting,克隆元素并覆盖属性。
+export function cloneElement
(element: InulaElement
, setting: Partial
| null): InulaElement
;
+//:传入 element、setting 和 children,克隆元素,覆盖属性并指定新的子节点。
+export function cloneElement
(
+ element: InulaElement
,
+ setting: Partial
| null,
+ ...children: InulaNode[]
+): InulaElement
;
+export function cloneElement
(
+ element: InulaElement
,
+ setting?: Partial
| null,
+ ...children: InulaNode[]
+): InulaElement
{
return buildElement(true, element, setting, children);
}
-
// 检测结构体是否为合法的Element
export function isValidElement
(element: KVObject | null | undefined): element is InulaElement
{
return !!(element && element.vtype === TYPE_COMMON_ELEMENT);
@@ -128,6 +178,5 @@ export function jsx(type, setting, key) {
if (setting.key === undefined && key !== undefined) {
setting.key = key;
}
-
return buildElement(false, type, setting, []);
}
diff --git a/packages/inula/src/inulax/adapters/reduxReact.ts b/packages/inula/src/inulax/adapters/reduxReact.ts
index 9c150f873513b62af42924eab7ace764a1f58264..984d0924b5e230ecab759e452d3391442731915b 100644
--- a/packages/inula/src/inulax/adapters/reduxReact.ts
+++ b/packages/inula/src/inulax/adapters/reduxReact.ts
@@ -114,7 +114,7 @@ export type MergePropsP = (
) => MergedProps;
type WrappedComponent = (props: OwnProps & WrapperInnerProps) => ReturnType;
-type OriginalComponent = (props: MergedProps) => ReturnType;
+export type OriginalComponent = (props: MergedProps) => ReturnType;
type Connector = (Component: OriginalComponent) => WrappedComponent;
export type ConnectOption = {
/** @deprecated */
diff --git a/packages/inula/src/renderer/hooks/HookExternal.ts b/packages/inula/src/renderer/hooks/HookExternal.ts
index 44e2dc0474143b1b17f988bbb9c6b8a2e81128db..4c84e21604593efd82d9818ddb0e21295f3484cd 100644
--- a/packages/inula/src/renderer/hooks/HookExternal.ts
+++ b/packages/inula/src/renderer/hooks/HookExternal.ts
@@ -24,7 +24,7 @@ import { useReducerImpl } from './UseReducerHook';
import { useStateImpl } from './UseStateHook';
import { getNewContext } from '../components/context/Context';
import { getProcessingVNode } from '../GlobalVar';
-import type { MutableRef, RefCallBack, RefObject } from './HookType';
+import type { MutableRef, RefCallBack, RefObject, Trigger } from './HookType';
import type {
BasicStateAction,
@@ -45,10 +45,11 @@ export function useContext(Context: ContextType | Context): T {
export function useState(initialState: (() => S) | S): [S, Dispatch>];
export function useState(): [S | undefined, Dispatch>];
-export function useState(initialState?: (() => S) | S): [S, Dispatch>] {
+export function useState(
+ initialState?: (() => S) | S
+): [S | undefined, Trigger<((arg0: S) => S | undefined) | S | undefined>] | void {
return useStateImpl(initialState);
}
-
export function useReducer, I>(
reducer: R,
initialArg: I,
diff --git a/packages/inula/src/renderer/vnode/VNodeCreator.ts b/packages/inula/src/renderer/vnode/VNodeCreator.ts
index 7cff347875bc3f11eb970ef350fe7ab531e11fe5..2185ab588bf6e7eeab352314fe79776fb4cb8007 100644
--- a/packages/inula/src/renderer/vnode/VNodeCreator.ts
+++ b/packages/inula/src/renderer/vnode/VNodeCreator.ts
@@ -75,7 +75,7 @@ export function getLazyVNodeTag(lazyComp: any): string {
} else if (lazyComp !== undefined && lazyComp !== null && typeLazyMap[lazyComp.vtype]) {
return typeLazyMap[lazyComp.vtype];
}
- throw Error("Inula can't resolve the content of lazy");
+ throw Error('Inula can\'t resolve the content of lazy');
}
// 创建processing
diff --git a/packages/inula/src/types.ts b/packages/inula/src/types.ts
index 67db6d325a872d33b667c02984426b8636e8e5c8..ac029df0d732384de0589410c7b11a0e6f954747 100644
--- a/packages/inula/src/types.ts
+++ b/packages/inula/src/types.ts
@@ -17,6 +17,7 @@ import { Component } from './renderer/components/BaseClassComponent';
import { MutableRef, RefCallBack, RefObject } from './renderer/hooks/HookType';
import * as Event from './EventTypes';
+//import Element = JSX.Element;
//
// --------------------------------- Inula Base Types ----------------------------------
@@ -55,12 +56,12 @@ export interface ExoticComponent {
(props: P): InulaElement | null;
}
-interface ProviderProps {
+export interface ProviderProps {
value: T;
children?: InulaNode | undefined;
}
-interface ConsumerProps {
+export interface ConsumerProps {
children: (value: T) => InulaNode;
}
@@ -129,7 +130,7 @@ export type RefAttributes = Attributes & {
ref?: Ref | null;
};
-export type ComponentPropsWithRef = T extends new (props: infer P) => Component
+export type ComponentPropsWithRef = T extends new (props: infer P) => Component
? PropsOmitRef & RefAttributes>
: PropsWithRef;
@@ -244,6 +245,1041 @@ export type JSXElementConstructor =
| ((props: P) => InulaElement | null)
| (new (props: P) => Component);
+interface ClassAttributes extends Attributes {
+ ref: Ref;
+ key: Key | undefined;
+ jsx: boolean | undefined;
+}
+//让其他代码在值发生变化时得到通知
+interface SignalLike {
+ value: T;
+ peek(): T;
+ subscribe(fn: (value: T) => void): () => void;
+}
+export type Signalish = T | SignalLike;
+export interface DOMAttributes {
+ // Image Events
+ onLoad?: GenericEventHandler | undefined;
+ onLoadCapture?: GenericEventHandler | undefined;
+ onError?: GenericEventHandler | undefined;
+ onErrorCapture?: GenericEventHandler | undefined;
+
+ // Clipboard Events
+ onCopy?: ClipboardEventHandler | undefined;
+ onCopyCapture?: ClipboardEventHandler | undefined;
+ onCut?: ClipboardEventHandler | undefined;
+ onCutCapture?: ClipboardEventHandler | undefined;
+ onPaste?: ClipboardEventHandler | undefined;
+ onPasteCapture?: ClipboardEventHandler | undefined;
+ // Composition Events
+ onCompositionEnd?: CompositionEventHandler | undefined;
+ onCompositionEndCapture?: CompositionEventHandler | undefined;
+ onCompositionStart?: CompositionEventHandler | undefined;
+ onCompositionStartCapture?: CompositionEventHandler | undefined;
+ onCompositionUpdate?: CompositionEventHandler | undefined;
+ onCompositionUpdateCapture?: CompositionEventHandler | undefined;
+
+ // Details Events
+ onToggle?: GenericEventHandler | undefined;
+
+ // Dialog Events
+ onClose?: GenericEventHandler | undefined;
+ onCancel?: GenericEventHandler | undefined;
+
+ // Focus Events
+ onFocus?: FocusEventHandler | undefined;
+ onFocusCapture?: FocusEventHandler | undefined;
+ onFocusIn?: FocusEventHandler | undefined;
+ onFocusInCapture?: FocusEventHandler | undefined;
+ onFocusOut?: FocusEventHandler | undefined;
+ onFocusOutCapture?: FocusEventHandler | undefined;
+ onBlur?: FocusEventHandler | undefined;
+ onBlurCapture?: FocusEventHandler | undefined;
+
+ // Form Events
+ onChange?: GenericEventHandler | undefined;
+ onChangeCapture?: GenericEventHandler | undefined;
+ onInput?: FormEventHandler | undefined;
+ onInputCapture?: FormEventHandler | undefined;
+ onBeforeInput?: FormEventHandler | undefined;
+ onBeforeInputCapture?: FormEventHandler | undefined;
+ onSearch?: GenericEventHandler | undefined;
+ onSearchCapture?: GenericEventHandler | undefined;
+ onSubmit?: FormEventHandler | undefined;
+ onSubmitCapture?: FormEventHandler | undefined;
+ onInvalid?: GenericEventHandler | undefined;
+ onInvalidCapture?: GenericEventHandler | undefined;
+ onReset?: GenericEventHandler | undefined;
+ onResetCapture?: GenericEventHandler | undefined;
+ onFormData?: GenericEventHandler | undefined;
+ onFormDataCapture?: GenericEventHandler | undefined;
+
+ // Keyboard Events
+ onKeyDown?: KeyboardEventHandler | undefined;
+ onKeyDownCapture?: KeyboardEventHandler | undefined;
+ onKeyPress?: KeyboardEventHandler | undefined;
+ onKeyPressCapture?: KeyboardEventHandler | undefined;
+ onKeyUp?: KeyboardEventHandler | undefined;
+ onKeyUpCapture?: KeyboardEventHandler | undefined;
+
+ // Media Events
+ onAbort?: GenericEventHandler | undefined;
+ onAbortCapture?: GenericEventHandler | undefined;
+ onCanPlay?: GenericEventHandler | undefined;
+ onCanPlayCapture?: GenericEventHandler | undefined;
+ onCanPlayThrough?: GenericEventHandler | undefined;
+ onCanPlayThroughCapture?: GenericEventHandler | undefined;
+ onDurationChange?: GenericEventHandler | undefined;
+ onDurationChangeCapture?: GenericEventHandler | undefined;
+ onEmptied?: GenericEventHandler | undefined;
+ onEmptiedCapture?: GenericEventHandler | undefined;
+ onEncrypted?: GenericEventHandler | undefined;
+ onEncryptedCapture?: GenericEventHandler | undefined;
+ onEnded?: GenericEventHandler | undefined;
+ onEndedCapture?: GenericEventHandler | undefined;
+ onLoadedData?: GenericEventHandler | undefined;
+ onLoadedDataCapture?: GenericEventHandler | undefined;
+ onLoadedMetadata?: GenericEventHandler | undefined;
+ onLoadedMetadataCapture?: GenericEventHandler | undefined;
+ onLoadStart?: GenericEventHandler | undefined;
+ onLoadStartCapture?: GenericEventHandler | undefined;
+ onPause?: GenericEventHandler | undefined;
+ onPauseCapture?: GenericEventHandler | undefined;
+ onPlay?: GenericEventHandler | undefined;
+ onPlayCapture?: GenericEventHandler | undefined;
+ onPlaying?: GenericEventHandler | undefined;
+ onPlayingCapture?: GenericEventHandler | undefined;
+ onProgress?: GenericEventHandler | undefined;
+ onProgressCapture?: GenericEventHandler | undefined;
+ onRateChange?: GenericEventHandler | undefined;
+ onRateChangeCapture?: GenericEventHandler | undefined;
+ onSeeked?: GenericEventHandler | undefined;
+ onSeekedCapture?: GenericEventHandler | undefined;
+ onSeeking?: GenericEventHandler | undefined;
+ onSeekingCapture?: GenericEventHandler | undefined;
+ onStalled?: GenericEventHandler | undefined;
+ onStalledCapture?: GenericEventHandler | undefined;
+ onSuspend?: GenericEventHandler | undefined;
+ onSuspendCapture?: GenericEventHandler | undefined;
+ onTimeUpdate?: GenericEventHandler | undefined;
+ onTimeUpdateCapture?: GenericEventHandler | undefined;
+ onVolumeChange?: GenericEventHandler | undefined;
+ onVolumeChangeCapture?: GenericEventHandler | undefined;
+ onWaiting?: GenericEventHandler | undefined;
+ onWaitingCapture?: GenericEventHandler | undefined;
+
+ // MouseEvents
+ onClick?: MouseEventHandler | undefined;
+ onClickCapture?: MouseEventHandler | undefined;
+ onContextMenu?: MouseEventHandler | undefined;
+ onContextMenuCapture?: MouseEventHandler | undefined;
+ onDblClick?: MouseEventHandler | undefined;
+ onDblClickCapture?: MouseEventHandler | undefined;
+ onDrag?: DragEventHandler | undefined;
+ onDragCapture?: DragEventHandler | undefined;
+ onDragEnd?: DragEventHandler | undefined;
+ onDragEndCapture?: DragEventHandler | undefined;
+ onDragEnter?: DragEventHandler | undefined;
+ onDragEnterCapture?: DragEventHandler | undefined;
+ onDragExit?: DragEventHandler | undefined;
+ onDragExitCapture?: DragEventHandler | undefined;
+ onDragLeave?: DragEventHandler | undefined;
+ onDragLeaveCapture?: DragEventHandler | undefined;
+ onDragOver?: DragEventHandler | undefined;
+ onDragOverCapture?: DragEventHandler | undefined;
+ onDragStart?: DragEventHandler | undefined;
+ onDragStartCapture?: DragEventHandler | undefined;
+ onDrop?: DragEventHandler | undefined;
+ onDropCapture?: DragEventHandler | undefined;
+ onMouseDown?: MouseEventHandler | undefined;
+ onMouseDownCapture?: MouseEventHandler | undefined;
+ onMouseEnter?: MouseEventHandler | undefined;
+ onMouseEnterCapture?: MouseEventHandler | undefined;
+ onMouseLeave?: MouseEventHandler | undefined;
+ onMouseLeaveCapture?: MouseEventHandler | undefined;
+ onMouseMove?: MouseEventHandler | undefined;
+ onMouseMoveCapture?: MouseEventHandler | undefined;
+ onMouseOut?: MouseEventHandler | undefined;
+ onMouseOutCapture?: MouseEventHandler | undefined;
+ onMouseOver?: MouseEventHandler | undefined;
+ onMouseOverCapture?: MouseEventHandler | undefined;
+ onMouseUp?: MouseEventHandler | undefined;
+ onMouseUpCapture?: MouseEventHandler | undefined;
+
+ // Selection Events
+ onSelect?: GenericEventHandler | undefined;
+ onSelectCapture?: GenericEventHandler | undefined;
+
+ // Touch Events
+ onTouchCancel?: TouchEventHandler | undefined;
+ onTouchCancelCapture?: TouchEventHandler | undefined;
+ onTouchEnd?: TouchEventHandler | undefined;
+ onTouchEndCapture?: TouchEventHandler | undefined;
+ onTouchMove?: TouchEventHandler | undefined;
+ onTouchMoveCapture?: TouchEventHandler | undefined;
+ onTouchStart?: TouchEventHandler | undefined;
+ onTouchStartCapture?: TouchEventHandler | undefined;
+
+ // Pointer Events
+ onPointerOver?: PointerEventHandler | undefined;
+ onPointerOverCapture?: PointerEventHandler | undefined;
+ onPointerEnter?: PointerEventHandler | undefined;
+ onPointerEnterCapture?: PointerEventHandler | undefined;
+ onPointerDown?: PointerEventHandler | undefined;
+ onPointerDownCapture?: PointerEventHandler | undefined;
+ onPointerMove?: PointerEventHandler | undefined;
+ onPointerMoveCapture?: PointerEventHandler | undefined;
+ onPointerUp?: PointerEventHandler | undefined;
+ onPointerUpCapture?: PointerEventHandler | undefined;
+ onPointerCancel?: PointerEventHandler | undefined;
+ onPointerCancelCapture?: PointerEventHandler | undefined;
+ onPointerOut?: PointerEventHandler | undefined;
+ onPointerOutCapture?: PointerEventHandler | undefined;
+ onPointerLeave?: PointerEventHandler | undefined;
+ onPointerLeaveCapture?: PointerEventHandler | undefined;
+ onGotPointerCapture?: PointerEventHandler | undefined;
+ onGotPointerCaptureCapture?: PointerEventHandler | undefined;
+ onLostPointerCapture?: PointerEventHandler | undefined;
+ onLostPointerCaptureCapture?: PointerEventHandler | undefined;
+
+ // UI Events
+ onScroll?: UIEventHandler | undefined;
+ onScrollEnd?: UIEventHandler | undefined;
+ onScrollCapture?: UIEventHandler | undefined;
+
+ // Wheel Events
+ onWheel?: WheelEventHandler | undefined;
+ onWheelCapture?: WheelEventHandler | undefined;
+
+ // Animation Events
+ onAnimationStart?: AnimationEventHandler | undefined;
+ onAnimationStartCapture?: AnimationEventHandler | undefined;
+ onAnimationEnd?: AnimationEventHandler | undefined;
+ onAnimationEndCapture?: AnimationEventHandler | undefined;
+ onAnimationIteration?: AnimationEventHandler | undefined;
+ onAnimationIterationCapture?: AnimationEventHandler | undefined;
+
+ // Transition Events
+ onTransitionCancel?: TransitionEventHandler;
+ onTransitionCancelCapture?: TransitionEventHandler;
+ onTransitionEnd?: TransitionEventHandler;
+ onTransitionEndCapture?: TransitionEventHandler;
+ onTransitionRun?: TransitionEventHandler;
+ onTransitionRunCapture?: TransitionEventHandler;
+ onTransitionStart?: TransitionEventHandler;
+ onTransitionStartCapture?: TransitionEventHandler;
+
+ // PictureInPicture Events
+ onEnterPictureInPicture?: ChangeEventHandler;
+ onEnterPictureInPictureCapture?: ChangeEventHandler;
+ onLeavePictureInPicture?: ChangeEventHandler;
+ onLeavePictureInPictureCapture?: ChangeEventHandler;
+ onResize?: ChangeEventHandler;
+ onResizeCapture?: ChangeEventHandler;
+}
+
+export interface AriaAttributes {
+ /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */
+ 'aria-activedescendant'?: Signalish;
+ /** 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'?: Signalish;
+ /**
+ * 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'?: Signalish<'none' | 'inline' | 'list' | 'both' | undefined>;
+ /**
+ * Defines a string value that labels the current element, which is intended to be converted into Braille.
+ * @see aria-label.
+ */
+ 'aria-braillelabel'?: Signalish;
+ /**
+ * Defines a human-readable, author-localized abbreviated description for the role of an element, which is intended to be converted into Braille.
+ * @see aria-roledescription.
+ */
+ 'aria-brailleroledescription'?: Signalish;
+ /** 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'?: Signalish;
+ /**
+ * Indicates the current "checked" state of checkboxes, radio buttons, and other widgets.
+ * @see aria-pressed
+ * @see aria-selected.
+ */
+ 'aria-checked'?: Signalish;
+ /**
+ * Defines the total number of columns in a table, grid, or treegrid.
+ * @see aria-colindex.
+ */
+ 'aria-colcount'?: Signalish;
+ /**
+ * 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'?: Signalish;
+ /**
+ * Defines a human readable text alternative of aria-colindex.
+ * @see aria-rowindextext.
+ */
+ 'aria-colindextext'?: Signalish;
+ /**
+ * 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'?: Signalish;
+ /**
+ * Identifies the element (or elements) whose contents or presence are controlled by the current element.
+ * @see aria-owns.
+ */
+ 'aria-controls'?: Signalish;
+ /** Indicates the element that represents the current item within a container or set of related elements. */
+ 'aria-current'?: Signalish;
+ /**
+ * Identifies the element (or elements) that describes the object.
+ * @see aria-labelledby
+ */
+ 'aria-describedby'?: Signalish;
+ /**
+ * Defines a string value that describes or annotates the current element.
+ * @see related aria-describedby.
+ */
+ 'aria-description'?: Signalish;
+ /**
+ * Identifies the element that provides a detailed, extended description for the object.
+ * @see aria-describedby.
+ */
+ 'aria-details'?: Signalish;
+ /**
+ * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.
+ * @see aria-hidden
+ * @see aria-readonly.
+ */
+ 'aria-disabled'?: Signalish;
+ /**
+ * Indicates what functions can be performed when a dragged object is released on the drop target.
+ * @deprecated in ARIA 1.1
+ */
+ 'aria-dropeffect'?: Signalish<'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'?: Signalish;
+ /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */
+ 'aria-expanded'?: Signalish