// eslint-disable-next-line @typescript-eslint/triple-slash-reference
///
import { Rendition } from "./tsx/traits";
declare global {
namespace JSX {
type Ref = ((value: T | undefined) => void);
type Element = Rendition;
interface DjxIntrinsicAttributes {
/** alias for className */
class?: string;
/** specifies the name of the property in the widget where the the
* reference to the current object will be stored
*/
"data-dojo-attach-point"?: string;
/** specifies handlers map for the events */
"data-dojo-attach-event"?: string;
ref?: Ref;
/** @deprecated */
[attr: string]: unknown;
}
// eslint-disable-next-line @typescript-eslint/no-empty-interface
interface DjxIntrinsicElements {
}
type RecursivePartial = T extends string | number | boolean | null | undefined | ((...args: unknown[]) => unknown) ?
T :
{ [k in keyof T]?: RecursivePartial };
type MatchingMemberKeys = {
[K in keyof T]: T[K] extends U ? K : never;
}[keyof T];
type NotMatchingMemberKeys = {
[K in keyof T]: T[K] extends U ? never : K;
}[keyof T];
type ExtractMembers = Pick>;
type ExcludeMembers = Pick>;
type ElementAttrNames = NotMatchingMemberKeys unknown>;
type ElementAttrType = K extends keyof E ? RecursivePartial : string;
type ElementAttrNamesBlacklist = "children" | "getRootNode" | keyof EventTarget;
/** This type extracts keys of the specified parameter E by the following rule:
* 1. skips all ElementAttrNamesBlacklist
* 2. skips all methods except with the signature of event handlers
*/
type AssignableElementAttrNames = {
[K in keyof E]: K extends ElementAttrNamesBlacklist ? never :
((evt: Event) => unknown) extends E[K] ? K :
E[K] extends ((...args: unknown[]) => unknown) ? never :
K;
}[keyof E];
type LaxElement =
RecursivePartial>> &
DjxIntrinsicAttributes;
type LaxIntrinsicElementsMap = {
[tag in keyof HTMLElementTagNameMap]: LaxElement
} & DjxIntrinsicElements;
type IntrinsicElements = {
[tag in keyof LaxIntrinsicElementsMap]: LaxIntrinsicElementsMap[tag];
};
interface ElementChildrenAttribute {
children: unknown;
}
interface IntrinsicClassAttributes {
ref?: Ref;
children?: unknown;
}
}
}