//! Errors type FunctDynamic any> = (new (...params: ConstructorParameters) => InstanceType); //! Shortcuts type ModifierKey = 'ctrl' | 'alt' | 'shift' | 'meta' | 'control' | 'windows' | 'command' | 'search'; type RegularKey = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'f1' | 'f2' | 'f3' | 'f4' | 'f5' | 'f6' | 'f7' | 'f8' | 'f9' | 'f10' | 'f11' | 'f12' | 'escape' | 'enter' | 'tab' | 'backspace' | 'delete' | 'insert' | 'home' | 'end' | 'pageup' | 'pagedown' | 'arrowup' | 'arrowdown' | 'arrowleft' | 'arrowright' | 'space' | 'plus' | 'minus' | 'equal' | 'bracketleft' | 'bracketright' | 'backslash' | 'semicolon' | 'quote' | 'comma' | 'period' | 'slash'; type Shortcut = `${ModifierKey}+${RegularKey}` | `${ModifierKey}+${ModifierKey}+${RegularKey}` | `${ModifierKey}+${ModifierKey}+${ModifierKey}+${RegularKey}` type KeyboardEventKey = ModifierKey | RegularKey; //! Utility Types type StringRecord = Record; type APIRule = "Disabled" | "Check" | "Enabled" type placeholder = any; type GetterKeys = { [K in keyof T]-?: T[K] extends Function ? never : ( { -readonly [P in K]: T[K] } extends { [P in K]: T[K] } ? K : never ) }[keyof T]; type SetterKeys = { [K in keyof T]-?: T[K] extends Function ? never : ( { -readonly [P in K]: T[P] } extends { [P in K]: T[P] } ? K : never ) }[keyof T]; type AccessorKeys = GetterKeys | SetterKeys; type Class = abstract new (...args: any[]) => T; type ShortcutEventInit = Omit type ID = string & { readonly __brand: unique symbol }; type PartialRecord = Partial>; type HTMLTag = keyof HTMLElementTagNameMap | keyof HTMLElementDeprecatedTagNameMap; type HTMLElementOf = T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : T extends keyof HTMLElementDeprecatedTagNameMap ? HTMLElementDeprecatedTagNameMap[T] : HTMLElement; type SVGElementOf = SVGElementTagNameMap[T]; type MathMLElementOf = MathMLElementTagNameMap[T]; // Extract tag name from element type for HTMLElement type HTMLElementTagNameOf = { [K in keyof HTMLElementTagNameMap | keyof HTMLElementDeprecatedTagNameMap]: K extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[K] extends T ? K : never : K extends keyof HTMLElementDeprecatedTagNameMap ? HTMLElementDeprecatedTagNameMap[K] extends T ? K : never : never }[keyof HTMLElementTagNameMap | keyof HTMLElementDeprecatedTagNameMap]; // Extract tag name from element type for SVGElement type SVGElementTagNameOf = { [K in keyof SVGElementTagNameMap]: SVGElementTagNameMap[K] extends T ? K : never; }[keyof SVGElementTagNameMap]; // Extract tag name from element type for MathMLElement type MathMLElementTagNameOf = { [K in keyof MathMLElementTagNameMap]: MathMLElementTagNameMap[K] extends T ? K : never; }[keyof MathMLElementTagNameMap]; /** Returns the resulting type(s) of the function(s) given */ type CallbackResult any) | readonly ((...args: any[]) => any)[]> = T extends ((...args: any[]) => any) ? ReturnType : T extends readonly [...infer R] ? R extends ((...args: any[]) => any)[] ? { [K in keyof R]: ReturnType } : never : never; type EventMapOf = T extends HTMLVideoElement ? HTMLVideoElementEventMap : T extends HTMLMediaElement ? HTMLMediaElementEventMap : T extends HTMLBodyElement ? HTMLBodyElementEventMap : T extends HTMLFrameSetElement ? HTMLFrameSetElementEventMap : T extends HTMLElement ? HTMLElementEventMap : T extends SVGSVGElement ? SVGSVGElementEventMap : T extends SVGElement ? SVGElementEventMap : T extends ShadowRoot ? ShadowRootEventMap : T extends Document ? DocumentEventMap : T extends Window & typeof globalThis ? WindowEventMap : T extends Worker ? WorkerEventMap : T extends ServiceWorker ? ServiceWorkerEventMap : T extends ServiceWorkerRegistration ? ServiceWorkerRegistrationEventMap : T extends ServiceWorkerContainer ? ServiceWorkerContainerEventMap : T extends RTCPeerConnection ? RTCPeerConnectionEventMap : T extends RTCDataChannel ? RTCDataChannelEventMap : T extends RTCDTMFSender ? RTCDTMFSenderEventMap : T extends RTCDtlsTransport ? RTCDtlsTransportEventMap : T extends RTCIceTransport ? RTCIceTransportEventMap : T extends RTCSctpTransport ? RTCSctpTransportEventMap : T extends AudioScheduledSourceNode ? AudioScheduledSourceNodeEventMap : T extends AudioWorkletNode ? AudioWorkletNodeEventMap : T extends ScriptProcessorNode ? ScriptProcessorNodeEventMap : T extends BaseAudioContext ? BaseAudioContextEventMap : T extends OfflineAudioContext ? OfflineAudioContextEventMap : T extends AudioDecoder ? AudioDecoderEventMap : T extends AudioEncoder ? AudioEncoderEventMap : T extends VideoDecoder ? VideoDecoderEventMap : T extends VideoEncoder ? VideoEncoderEventMap : T extends FontFaceSet ? FontFaceSetEventMap : T extends PaymentRequest ? PaymentRequestEventMap : T extends PaymentResponse ? PaymentResponseEventMap : T extends MediaDevices ? MediaDevicesEventMap : T extends MediaStream ? MediaStreamEventMap : T extends MediaStreamTrack ? MediaStreamTrackEventMap : T extends MediaRecorder ? MediaRecorderEventMap : T extends MediaSource ? MediaSourceEventMap : T extends MessagePort ? MessagePortEventMap : T extends MessageEventTarget ? MessageEventTargetEventMap : T extends BroadcastChannel ? BroadcastChannelEventMap : T extends WebSocket ? WebSocketEventMap : T extends NavigationHistoryEntry ? NavigationHistoryEntryEventMap : T extends Notification ? NotificationEventMap : T extends Performance ? PerformanceEventMap : T extends VisualViewport ? VisualViewportEventMap : T extends ScreenOrientation ? ScreenOrientationEventMap : T extends RemotePlayback ? RemotePlaybackEventMap : T extends WakeLockSentinel ? WakeLockSentinelEventMap : T extends TextTrackCue ? TextTrackCueEventMap : T extends TextTrack ? TextTrackEventMap : T extends TextTrackList ? TextTrackListEventMap : T extends SpeechSynthesisUtterance ? SpeechSynthesisUtteranceEventMap : T extends SpeechSynthesis ? SpeechSynthesisEventMap : T extends MathMLElement ? MathMLElementEventMap : T extends IDBOpenDBRequest ? IDBOpenDBRequestEventMap : T extends IDBDatabase ? IDBDatabaseEventMap : T extends IDBTransaction ? IDBTransactionEventMap : T extends IDBRequest ? IDBRequestEventMap : T extends XMLHttpRequest ? XMLHttpRequestEventMap : T extends XMLHttpRequestEventTarget ? XMLHttpRequestEventTargetEventMap : T extends FileReader ? FileReaderEventMap : T extends MediaQueryList ? MediaQueryListEventMap : T extends EventSource ? EventSourceEventMap : T extends PermissionStatus ? PermissionStatusEventMap : T extends Animation ? AnimationEventMap : T extends MIDIAccess ? MIDIAccessEventMap : T extends MIDIInput ? MIDIInputEventMap : T extends MIDIPort ? MIDIPortEventMap : T extends SourceBufferList ? SourceBufferListEventMap : T extends SourceBuffer ? SourceBufferEventMap : T extends AbortSignal ? AbortSignalEventMap : T extends OffscreenCanvas ? OffscreenCanvasEventMap : T extends Element ? ElementEventMap : T extends GlobalEventHandlers ? GlobalEventHandlersEventMap : T extends WindowEventHandlers ? WindowEventHandlersEventMap : T extends AbstractWorker ? AbstractWorkerEventMap : GlobalEventHandlersEventMap; // fallback //! Interfaces /** * @opti * @deprecated */ interface HTMLElementCascade { element: keyof HTMLElementTagNameMap; id?: string; className?: string | string[]; children?: HTMLElementCascade[] | HTMLElementCascade; [key: string]: any } /* New Classes */ /** * @opti */ type HTMLAttrs = { text?: string, html?: string, id?: string; class?: string | string[]; style?: { [key: string]: string }; [key: string]: any }; /** * @opti */ interface OptiFeature { enable(): void; disable(): void; [key: `_${string}`]: any; } /** * @opti */ type ElementProps = Partial< Pick< HTMLElementOf, keyof HTMLElementOf extends string ? keyof HTMLElementOf : never > >; /** * @opti */ type ElementNode = { tag: HTMLTag; class?: string; text?: string; html?: string; style?: Record; children?: ElementNode | ElementNode[]; [key: string]: | string | number | Record | ElementNode | ElementNode[] | undefined; }; /** * @opti */ interface HTMLElementCreator { el(tag: keyof HTMLElementTagNameMap, attrs?: HTMLAttrs): HTMLElementCreator; container(tag: keyof HTMLElementTagNameMap, attrs?: HTMLAttrs): HTMLElementCreator; up(): HTMLElementCreator; append(element: HTMLElement): void; get element(): HTMLElement; } declare enum Direction { UP = "UP", DOWN = "DOWN", LEFT = "LEFT", RIGHT = "RIGHT" }