/// // This file is deliberately not exposed through the exports map. // It's meant to be loaded directly by the Roonix language server /* eslint-disable @typescript-eslint/no-empty-interface */ import * as roonixElements from "./elements.js"; /** * @internal do not use */ type HTMLProps = Omit< import("./elements.js").RoonixHTMLElements[Property], keyof Override > & Override; declare global { /** * This namespace does not exist in the runtime, it is only used for typings */ namespace roonixHTML { // Every namespace eligible for use needs to implement the following two functions /** * @internal do not use */ function mapElementTag( tag: K, ): ElementTagNameMap[K]; function mapElementTag( tag: K, ): SVGElementTagNameMap[K]; function mapElementTag(tag: any): any; // needs to be any because used in context of /** * @internal do not use */ function createElement< Elements extends IntrinsicElements, Key extends keyof Elements, >( // "undefined | null" because of element: Key | undefined | null, attrs: string extends Key ? roonixElements.HTMLAttributes : Elements[Key], ): Key extends keyof ElementTagNameMap ? ElementTagNameMap[Key] : Key extends keyof SVGElementTagNameMap ? SVGElementTagNameMap[Key] : any; function createElement< Elements extends IntrinsicElements, Key extends keyof Elements, T, >( // "undefined | null" because of element: Key | undefined | null, attrsEnhancers: T, attrs: (string extends Key ? roonixElements.HTMLAttributes : Elements[Key]) & T, ): Key extends keyof ElementTagNameMap ? ElementTagNameMap[Key] : Key extends keyof SVGElementTagNameMap ? SVGElementTagNameMap[Key] : any; // For backwards-compatibility and ease-of-use, in case someone enhanced the typings from import('roonix/elements').HTMLAttributes/SVGAttributes // eslint-disable-next-line @typescript-eslint/no-unused-vars interface HTMLAttributes {} // eslint-disable-next-line @typescript-eslint/no-unused-vars interface SVGAttributes {} /** * Avoid using this interface directly. Instead use the `RoonixHTMLElements` interface exported by `roonix/elements` * This should only be used if you need to extend the interface with custom elements */ interface IntrinsicElements extends roonixElements.RoonixHTMLElements { a: HTMLProps<"a", HTMLAttributes>; abbr: HTMLProps<"abbr", HTMLAttributes>; address: HTMLProps<"address", HTMLAttributes>; area: HTMLProps<"area", HTMLAttributes>; article: HTMLProps<"article", HTMLAttributes>; aside: HTMLProps<"aside", HTMLAttributes>; audio: HTMLProps<"audio", HTMLAttributes>; b: HTMLProps<"b", HTMLAttributes>; base: HTMLProps<"base", HTMLAttributes>; bdi: HTMLProps<"bdi", HTMLAttributes>; bdo: HTMLProps<"bdo", HTMLAttributes>; big: HTMLProps<"big", HTMLAttributes>; blockquote: HTMLProps<"blockquote", HTMLAttributes>; body: HTMLProps<"body", HTMLAttributes>; br: HTMLProps<"br", HTMLAttributes>; button: HTMLProps<"button", HTMLAttributes>; canvas: HTMLProps<"canvas", HTMLAttributes>; caption: HTMLProps<"caption", HTMLAttributes>; cite: HTMLProps<"cite", HTMLAttributes>; code: HTMLProps<"code", HTMLAttributes>; col: HTMLProps<"col", HTMLAttributes>; colgroup: HTMLProps<"colgroup", HTMLAttributes>; data: HTMLProps<"data", HTMLAttributes>; datalist: HTMLProps<"datalist", HTMLAttributes>; dd: HTMLProps<"dd", HTMLAttributes>; del: HTMLProps<"del", HTMLAttributes>; details: HTMLProps<"details", HTMLAttributes>; dfn: HTMLProps<"dfn", HTMLAttributes>; dialog: HTMLProps<"dialog", HTMLAttributes>; div: HTMLProps<"div", HTMLAttributes>; dl: HTMLProps<"dl", HTMLAttributes>; dt: HTMLProps<"dt", HTMLAttributes>; em: HTMLProps<"em", HTMLAttributes>; embed: HTMLProps<"embed", HTMLAttributes>; fieldset: HTMLProps<"fieldset", HTMLAttributes>; figcaption: HTMLProps<"figcaption", HTMLAttributes>; figure: HTMLProps<"figure", HTMLAttributes>; footer: HTMLProps<"footer", HTMLAttributes>; form: HTMLProps<"form", HTMLAttributes>; h1: HTMLProps<"h1", HTMLAttributes>; h2: HTMLProps<"h2", HTMLAttributes>; h3: HTMLProps<"h3", HTMLAttributes>; h4: HTMLProps<"h4", HTMLAttributes>; h5: HTMLProps<"h5", HTMLAttributes>; h6: HTMLProps<"h6", HTMLAttributes>; head: HTMLProps<"head", HTMLAttributes>; header: HTMLProps<"header", HTMLAttributes>; hgroup: HTMLProps<"hgroup", HTMLAttributes>; hr: HTMLProps<"hr", HTMLAttributes>; html: HTMLProps<"html", HTMLAttributes>; i: HTMLProps<"i", HTMLAttributes>; iframe: HTMLProps<"iframe", HTMLAttributes>; img: HTMLProps<"img", HTMLAttributes>; input: HTMLProps<"input", HTMLAttributes>; ins: HTMLProps<"ins", HTMLAttributes>; kbd: HTMLProps<"kbd", HTMLAttributes>; keygen: HTMLProps<"keygen", HTMLAttributes>; label: HTMLProps<"label", HTMLAttributes>; legend: HTMLProps<"legend", HTMLAttributes>; li: HTMLProps<"li", HTMLAttributes>; link: HTMLProps<"link", HTMLAttributes>; main: HTMLProps<"main", HTMLAttributes>; map: HTMLProps<"map", HTMLAttributes>; mark: HTMLProps<"mark", HTMLAttributes>; menu: HTMLProps<"menu", HTMLAttributes>; menuitem: HTMLProps<"menuitem", HTMLAttributes>; meta: HTMLProps<"meta", HTMLAttributes>; meter: HTMLProps<"meter", HTMLAttributes>; nav: HTMLProps<"nav", HTMLAttributes>; noscript: HTMLProps<"noscript", HTMLAttributes>; object: HTMLProps<"object", HTMLAttributes>; ol: HTMLProps<"ol", HTMLAttributes>; optgroup: HTMLProps<"optgroup", HTMLAttributes>; option: HTMLProps<"option", HTMLAttributes>; output: HTMLProps<"output", HTMLAttributes>; p: HTMLProps<"p", HTMLAttributes>; param: HTMLProps<"param", HTMLAttributes>; picture: HTMLProps<"picture", HTMLAttributes>; pre: HTMLProps<"pre", HTMLAttributes>; progress: HTMLProps<"progress", HTMLAttributes>; q: HTMLProps<"q", HTMLAttributes>; rp: HTMLProps<"rp", HTMLAttributes>; rt: HTMLProps<"rt", HTMLAttributes>; ruby: HTMLProps<"ruby", HTMLAttributes>; s: HTMLProps<"s", HTMLAttributes>; samp: HTMLProps<"samp", HTMLAttributes>; slot: HTMLProps<"slot", HTMLAttributes>; script: HTMLProps<"script", HTMLAttributes>; section: HTMLProps<"section", HTMLAttributes>; select: HTMLProps<"select", HTMLAttributes>; small: HTMLProps<"small", HTMLAttributes>; source: HTMLProps<"source", HTMLAttributes>; span: HTMLProps<"span", HTMLAttributes>; strong: HTMLProps<"strong", HTMLAttributes>; style: HTMLProps<"style", HTMLAttributes>; sub: HTMLProps<"sub", HTMLAttributes>; summary: HTMLProps<"summary", HTMLAttributes>; sup: HTMLProps<"sup", HTMLAttributes>; table: HTMLProps<"table", HTMLAttributes>; template: HTMLProps<"template", HTMLAttributes>; tbody: HTMLProps<"tbody", HTMLAttributes>; td: HTMLProps<"td", HTMLAttributes>; textarea: HTMLProps<"textarea", HTMLAttributes>; tfoot: HTMLProps<"tfoot", HTMLAttributes>; th: HTMLProps<"th", HTMLAttributes>; thead: HTMLProps<"thead", HTMLAttributes>; time: HTMLProps<"time", HTMLAttributes>; title: HTMLProps<"title", HTMLAttributes>; tr: HTMLProps<"tr", HTMLAttributes>; track: HTMLProps<"track", HTMLAttributes>; u: HTMLProps<"u", HTMLAttributes>; ul: HTMLProps<"ul", HTMLAttributes>; var: HTMLProps<"var", HTMLAttributes>; video: HTMLProps<"video", HTMLAttributes>; wbr: HTMLProps<"wbr", HTMLAttributes>; webview: HTMLProps<"webview", HTMLAttributes>; // SVG svg: HTMLProps<"svg", SVGAttributes>; animate: HTMLProps<"animate", SVGAttributes>; animateMotion: HTMLProps<"animateMotion", SVGAttributes>; animateTransform: HTMLProps<"animateTransform", SVGAttributes>; circle: HTMLProps<"circle", SVGAttributes>; clipPath: HTMLProps<"clipPath", SVGAttributes>; defs: HTMLProps<"defs", SVGAttributes>; desc: HTMLProps<"desc", SVGAttributes>; ellipse: HTMLProps<"ellipse", SVGAttributes>; feBlend: HTMLProps<"feBlend", SVGAttributes>; feColorMatrix: HTMLProps<"feColorMatrix", SVGAttributes>; feComponentTransfer: HTMLProps<"feComponentTransfer", SVGAttributes>; feComposite: HTMLProps<"feComposite", SVGAttributes>; feConvolveMatrix: HTMLProps<"feConvolveMatrix", SVGAttributes>; feDiffuseLighting: HTMLProps<"feDiffuseLighting", SVGAttributes>; feDisplacementMap: HTMLProps<"feDisplacementMap", SVGAttributes>; feDistantLight: HTMLProps<"feDistantLight", SVGAttributes>; feDropShadow: HTMLProps<"feDropShadow", SVGAttributes>; feFlood: HTMLProps<"feFlood", SVGAttributes>; feFuncA: HTMLProps<"feFuncA", SVGAttributes>; feFuncB: HTMLProps<"feFuncB", SVGAttributes>; feFuncG: HTMLProps<"feFuncG", SVGAttributes>; feFuncR: HTMLProps<"feFuncR", SVGAttributes>; feGaussianBlur: HTMLProps<"feGaussianBlur", SVGAttributes>; feImage: HTMLProps<"feImage", SVGAttributes>; feMerge: HTMLProps<"feMerge", SVGAttributes>; feMergeNode: HTMLProps<"feMergeNode", SVGAttributes>; feMorphology: HTMLProps<"feMorphology", SVGAttributes>; feOffset: HTMLProps<"feOffset", SVGAttributes>; fePointLight: HTMLProps<"fePointLight", SVGAttributes>; feSpecularLighting: HTMLProps<"feSpecularLighting", SVGAttributes>; feSpotLight: HTMLProps<"feSpotLight", SVGAttributes>; feTile: HTMLProps<"feTile", SVGAttributes>; feTurbulence: HTMLProps<"feTurbulence", SVGAttributes>; filter: HTMLProps<"filter", SVGAttributes>; foreignObject: HTMLProps<"foreignObject", SVGAttributes>; g: HTMLProps<"g", SVGAttributes>; image: HTMLProps<"image", SVGAttributes>; line: HTMLProps<"line", SVGAttributes>; linearGradient: HTMLProps<"linearGradient", SVGAttributes>; marker: HTMLProps<"marker", SVGAttributes>; mask: HTMLProps<"mask", SVGAttributes>; metadata: HTMLProps<"metadata", SVGAttributes>; mpath: HTMLProps<"mpath", SVGAttributes>; path: HTMLProps<"path", SVGAttributes>; pattern: HTMLProps<"pattern", SVGAttributes>; polygon: HTMLProps<"polygon", SVGAttributes>; polyline: HTMLProps<"polyline", SVGAttributes>; radialGradient: HTMLProps<"radialGradient", SVGAttributes>; rect: HTMLProps<"rect", SVGAttributes>; stop: HTMLProps<"stop", SVGAttributes>; switch: HTMLProps<"switch", SVGAttributes>; symbol: HTMLProps<"symbol", SVGAttributes>; text: HTMLProps<"text", SVGAttributes>; textPath: HTMLProps<"textPath", SVGAttributes>; tspan: HTMLProps<"tspan", SVGAttributes>; use: HTMLProps<"use", SVGAttributes>; view: HTMLProps<"view", SVGAttributes>; // Roonix specific "roonix:window": HTMLProps<"roonix:window", HTMLAttributes>; "roonix:body": HTMLProps<"roonix:body", HTMLAttributes>; "roonix:document": HTMLProps<"roonix:document", HTMLAttributes>; "roonix:fragment": { slot?: string }; "roonix:options": HTMLProps<"roonix:options", HTMLAttributes>; "roonix:head": { [name: string]: any }; [name: string]: { [name: string]: any }; } } }