diff --git a/TS.fsx b/TS.fsx index 1e87f1873..a584a2138 100644 --- a/TS.fsx +++ b/TS.fsx @@ -793,19 +793,22 @@ module Emit = /// Emit overloads for the getElementsByTagName method let EmitGetElementsByTagNameOverloads (m: Browser.Method) = if matchSingleParamMethodSignature m "getElementsByTagName" "NodeList" "string" then - Pt.Printl "getElementsByTagName(%s: K): ElementListTagNameMap[K];" m.Params.[0].Name + Pt.Printl "getElementsByTagName(%s: K): NodeListOf;" m.Params.[0].Name + Pt.Printl "getElementsByTagName(%s: K): NodeListOf;" m.Params.[0].Name Pt.Printl "getElementsByTagName(%s: string): NodeListOf;" m.Params.[0].Name /// Emit overloads for the querySelector method let EmitQuerySelectorOverloads (m: Browser.Method) = if matchSingleParamMethodSignature m "querySelector" "Element" "string" then - Pt.Printl "querySelector(selectors: K): ElementTagNameMap[K] | null;" + Pt.Printl "querySelector(selectors: K): HTMLElementTagNameMap[K] | null;" + Pt.Printl "querySelector(selectors: K): SVGElementTagNameMap[K] | null;" Pt.Printl "querySelector(selectors: string): E | null;" /// Emit overloads for the querySelectorAll method let EmitQuerySelectorAllOverloads (m: Browser.Method) = if matchSingleParamMethodSignature m "querySelectorAll" "NodeList" "string" then - Pt.Printl "querySelectorAll(selectors: K): ElementListTagNameMap[K];" + Pt.Printl "querySelectorAll(selectors: K): NodeListOf;" + Pt.Printl "querySelectorAll(selectors: K): NodeListOf;" Pt.Printl "querySelectorAll(selectors: string): NodeListOf;" let EmitHTMLElementTagNameMap () = @@ -828,16 +831,6 @@ module Emit = Pt.Printl "}" Pt.Printl "" - let EmitElementTagNameMap () = - Pt.Printl "interface ElementTagNameMap extends HTMLElementTagNameMap, SVGElementTagNameMap { }" - Pt.Printl "" - - let EmitElementListTagNameMap () = - Pt.Printl "type ElementListTagNameMap = {" - Pt.PrintWithAddedIndent "[key in keyof ElementTagNameMap]: NodeListOf" - Pt.Printl "};" - Pt.Printl "" - /// Emit overloads for the createEvent method let EmitCreateEventOverloads (m: Browser.Method) = if matchSingleParamMethodSignature m "createEvent" "Event" "string" then @@ -1521,8 +1514,6 @@ module Emit = if flavor <> Worker then EmitHTMLElementTagNameMap() EmitSVGElementTagNameMap() - EmitElementTagNameMap() - EmitElementListTagNameMap() EmitNamedConstructors() match GetGlobalPollutor flavor with diff --git a/baselines/dom.generated.d.ts b/baselines/dom.generated.d.ts index b9a7da426..519e21d64 100644 --- a/baselines/dom.generated.d.ts +++ b/baselines/dom.generated.d.ts @@ -3243,7 +3243,8 @@ interface Document extends Node, GlobalEventHandlers, NodeSelector, DocumentEven * Retrieves a collection of objects based on the specified element name. * @param name Specifies the name of an element. */ - getElementsByTagName(tagname: K): ElementListTagNameMap[K]; + getElementsByTagName(tagname: K): NodeListOf; + getElementsByTagName(tagname: K): NodeListOf; getElementsByTagName(tagname: string): NodeListOf; getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; @@ -3600,7 +3601,8 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec getAttributeNS(namespaceURI: string, localName: string): string; getBoundingClientRect(): ClientRect; getClientRects(): ClientRectList; - getElementsByTagName(name: K): ElementListTagNameMap[K]; + getElementsByTagName(name: K): NodeListOf; + getElementsByTagName(name: K): NodeListOf; getElementsByTagName(name: string): NodeListOf; getElementsByTagNameNS(namespaceURI: "http://www.w3.org/1999/xhtml", localName: string): HTMLCollectionOf; getElementsByTagNameNS(namespaceURI: "http://www.w3.org/2000/svg", localName: string): HTMLCollectionOf; @@ -3629,7 +3631,8 @@ interface Element extends Node, GlobalEventHandlers, ElementTraversal, NodeSelec webkitRequestFullScreen(): void; getElementsByClassName(classNames: string): NodeListOf; matches(selector: string): boolean; - closest(selector: K): ElementTagNameMap[K] | null; + closest(selector: K): HTMLElementTagNameMap[K] | null; + closest(selector: K): SVGElementTagNameMap[K] | null; closest(selector: string): Element | null; scrollIntoView(arg?: boolean | ScrollIntoViewOptions): void; scroll(options?: ScrollToOptions): void; @@ -14131,9 +14134,11 @@ interface NavigatorUserMedia { } interface NodeSelector { - querySelector(selectors: K): ElementTagNameMap[K] | null; + querySelector(selectors: K): HTMLElementTagNameMap[K] | null; + querySelector(selectors: K): SVGElementTagNameMap[K] | null; querySelector(selectors: string): E | null; - querySelectorAll(selectors: K): ElementListTagNameMap[K]; + querySelectorAll(selectors: K): NodeListOf; + querySelectorAll(selectors: K): NodeListOf; querySelectorAll(selectors: string): NodeListOf; } @@ -15024,12 +15029,6 @@ interface SVGElementTagNameMap { "view": SVGViewElement; } -interface ElementTagNameMap extends HTMLElementTagNameMap, SVGElementTagNameMap { } - -type ElementListTagNameMap = { - [key in keyof ElementTagNameMap]: NodeListOf -}; - declare var Audio: { new(src?: string): HTMLAudioElement; }; declare var Image: { new(width?: number, height?: number): HTMLImageElement; }; declare var Option: { new(text?: string, value?: string, defaultSelected?: boolean, selected?: boolean): HTMLOptionElement; }; diff --git a/inputfiles/addedTypes.json b/inputfiles/addedTypes.json index dc900d056..7b2238807 100644 --- a/inputfiles/addedTypes.json +++ b/inputfiles/addedTypes.json @@ -458,7 +458,8 @@ "kind": "method", "interface": "Element", "signatures": [ - "closest(selector: K): ElementTagNameMap[K] | null" + "closest(selector: K): HTMLElementTagNameMap[K] | null", + "closest(selector: K): SVGElementTagNameMap[K] | null" ] }, {