// eslint-disable-next-line @typescript-eslint/triple-slash-reference /// import _WidgetBase = require("dijit/_WidgetBase"); import { Rendition } from "./tsx/traits"; declare global { namespace JSX { type Ref = ((value: T | undefined) => void); type Element = Rendition | _WidgetBase; 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; } } }