Skip to content

Commit 8e56201

Browse files
rubennortefacebook-github-bot
authored andcommitted
[Flow] Replace nonexistent global ClientRect class with an alias to DOMRect (#9258)
Summary: Pull Request resolved: #9258 Changelog: [fix] Replace incorrect definition for `ClientRect` and `ClientRectList` with aliases to `DOMRect` and `DOMRectList` This fixes the type definitions for the DOM APIs in Flow, but replacing an nonexistent globals `ClientRect` and `ClientRectList` types with just an alias to `DOMRect` and `DOMRectList`. Reviewed By: huntie Differential Revision: D70083998 fbshipit-source-id: 4f028aea306bd9a6affb05e279e1068bf85bb60b
1 parent 67c50eb commit 8e56201

File tree

3 files changed

+20
-34
lines changed

3 files changed

+20
-34
lines changed

lib/dom.js

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1711,7 +1711,7 @@ declare class Range { // extension
17111711
setStartBefore(refNode: Node): void;
17121712
selectNode(refNode: Node): void;
17131713
detach(): void;
1714-
getBoundingClientRect(): ClientRect;
1714+
getBoundingClientRect(): DOMRect;
17151715
toString(): string;
17161716
compareBoundaryPoints(how: number, sourceRange: Range): number;
17171717
insertNode(newNode: Node): void;
@@ -1720,7 +1720,7 @@ declare class Range { // extension
17201720
cloneContents(): DocumentFragment;
17211721
setEnd(refNode: Node, offset: number): void;
17221722
cloneRange(): Range;
1723-
getClientRects(): ClientRectList;
1723+
getClientRects(): DOMRectList;
17241724
surroundContents(newParent: Node): void;
17251725
deleteContents(): void;
17261726
setStartAfter(refNode: Node): void;
@@ -1800,8 +1800,8 @@ declare class Element extends Node implements Animatable {
18001800
getAttributeNS(namespaceURI: string | null, localName: string): string | null;
18011801
getAttributeNode(name: string): Attr | null;
18021802
getAttributeNodeNS(namespaceURI: string | null, localName: string): Attr | null;
1803-
getBoundingClientRect(): ClientRect;
1804-
getClientRects(): ClientRect[];
1803+
getBoundingClientRect(): DOMRect;
1804+
getClientRects(): DOMRectList;
18051805
getElementsByClassName(names: string): HTMLCollection<HTMLElement>;
18061806
getElementsByTagName(name: 'a'): HTMLCollection<HTMLAnchorElement>;
18071807
getElementsByTagName(name: 'audio'): HTMLCollection<HTMLAudioElement>;
@@ -2093,7 +2093,7 @@ declare class HTMLElement extends Element {
20932093
blur(): void;
20942094
click(): void;
20952095
focus(options?: FocusOptions): void;
2096-
getBoundingClientRect(): ClientRect;
2096+
getBoundingClientRect(): DOMRect;
20972097
forceSpellcheck(): void;
20982098
accessKey: string;
20992099
accessKeyLabel: string;
@@ -4235,7 +4235,7 @@ declare class TextRange {
42354235
scrollIntoView(fStart?: boolean): void;
42364236
findText(string: string, count?: number, flags?: number): boolean;
42374237
execCommand(cmdID: string, showUI?: boolean, value?: any): boolean;
4238-
getBoundingClientRect(): ClientRect | DOMRect;
4238+
getBoundingClientRect(): DOMRect;
42394239
moveToBookmark(bookmark: string): boolean;
42404240
isEqual(range: TextRange): boolean;
42414241
duplicate(): TextRange;
@@ -4245,7 +4245,7 @@ declare class TextRange {
42454245
pasteHTML(html: string): void;
42464246
inRange(range: TextRange): boolean;
42474247
moveEnd(unit: string, count?: number): number;
4248-
getClientRects(): ClientRectList | DOMRectList;
4248+
getClientRects(): DOMRectList;
42494249
moveStart(unit: string, count?: number): number;
42504250
parentElement(): Element;
42514251
queryCommandState(cmdID: string): boolean;
@@ -4258,23 +4258,11 @@ declare class TextRange {
42584258
queryCommandEnabled(cmdID: string): boolean;
42594259
}
42604260

4261-
declare class ClientRect { // extension
4262-
left: number;
4263-
x: number;
4264-
width: number;
4265-
right: number;
4266-
top: number;
4267-
y: number;
4268-
bottom: number;
4269-
height: number;
4270-
}
4271-
4272-
declare class ClientRectList { // extension
4273-
@@iterator(): Iterator<ClientRect>;
4274-
length: number;
4275-
item(index: number): ClientRect;
4276-
[index: number]: ClientRect;
4277-
}
4261+
// These types used to exist as a copy of DOMRect/DOMRectList, which is
4262+
// incorrect because there are no ClientRect/ClientRectList globals on the DOM.
4263+
// Keep these as type aliases for backwards compatibility.
4264+
declare type ClientRect = DOMRect;
4265+
declare type ClientRectList = DOMRectList;
42784266

42794267
// TODO: HTML*Element
42804268

tests/autocomplete_from_m_to_q/autocomplete_from_m_to_q.exp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,8 +392,6 @@ Flags: --pretty
392392
{"name":"clearInterval","type":"(intervalId: ?IntervalID) => void"},
393393
{"name":"clearTimeout","type":"(timeoutId: ?TimeoutID) => void"},
394394
{"name":"Client","type":"typeof Client"},
395-
{"name":"ClientRect","type":"typeof ClientRect"},
396-
{"name":"ClientRectList","type":"typeof ClientRectList"},
397395
{"name":"Clients","type":"typeof Clients"},
398396
{"name":"clients","type":"Clients"},
399397
{"name":"Clipboard","type":"typeof Clipboard"},

tests/dom/dom.exp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,11 +1022,11 @@ References:
10221022
traversal.js:188:74
10231023
188| document.createNodeIterator(document_body, -1, { acceptNode: node => 'accept' }); // invalid
10241024
^^^^^^^^ [1]
1025-
<BUILTINS>/dom.js:4422:1
1025+
<BUILTINS>/dom.js:4410:1
10261026
v--------------------------------
1027-
4422| typeof NodeFilter.FILTER_ACCEPT |
1028-
4423| typeof NodeFilter.FILTER_REJECT |
1029-
4424| typeof NodeFilter.FILTER_SKIP;
1027+
4410| typeof NodeFilter.FILTER_ACCEPT |
1028+
4411| typeof NodeFilter.FILTER_REJECT |
1029+
4412| typeof NodeFilter.FILTER_SKIP;
10301030
----------------------------^ [2]
10311031
traversal.js:188:48
10321032
188| document.createNodeIterator(document_body, -1, { acceptNode: node => 'accept' }); // invalid
@@ -1398,11 +1398,11 @@ References:
13981398
traversal.js:195:72
13991399
195| document.createTreeWalker(document_body, -1, { acceptNode: node => 'accept' }); // invalid
14001400
^^^^^^^^ [1]
1401-
<BUILTINS>/dom.js:4422:1
1401+
<BUILTINS>/dom.js:4410:1
14021402
v--------------------------------
1403-
4422| typeof NodeFilter.FILTER_ACCEPT |
1404-
4423| typeof NodeFilter.FILTER_REJECT |
1405-
4424| typeof NodeFilter.FILTER_SKIP;
1403+
4410| typeof NodeFilter.FILTER_ACCEPT |
1404+
4411| typeof NodeFilter.FILTER_REJECT |
1405+
4412| typeof NodeFilter.FILTER_SKIP;
14061406
----------------------------^ [2]
14071407
traversal.js:195:46
14081408
195| document.createTreeWalker(document_body, -1, { acceptNode: node => 'accept' }); // invalid

0 commit comments

Comments
 (0)