Skip to content

Commit 3143838

Browse files
author
Orta Therox
authored
Merge pull request microsoft#948 from timocov/add-resize-observer
Add resize observer
2 parents 7345e8d + bec4a01 commit 3143838

File tree

4 files changed

+93
-0
lines changed

4 files changed

+93
-0
lines changed

baselines/dom.generated.d.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1607,6 +1607,10 @@ interface RequestInit {
16071607
window?: any;
16081608
}
16091609

1610+
interface ResizeObserverOptions {
1611+
box?: ResizeObserverBoxOptions;
1612+
}
1613+
16101614
interface ResponseInit {
16111615
headers?: HeadersInit;
16121616
status?: number;
@@ -12624,6 +12628,39 @@ declare var Request: {
1262412628
new(input: RequestInfo, init?: RequestInit): Request;
1262512629
};
1262612630

12631+
interface ResizeObserver {
12632+
disconnect(): void;
12633+
observe(target: Element, options?: ResizeObserverOptions): void;
12634+
unobserve(target: Element): void;
12635+
}
12636+
12637+
declare var ResizeObserver: {
12638+
prototype: ResizeObserver;
12639+
new(callback: ResizeObserverCallback): ResizeObserver;
12640+
};
12641+
12642+
interface ResizeObserverEntry {
12643+
readonly borderBoxSize: ReadonlyArray<ResizeObserverSize>;
12644+
readonly contentBoxSize: ReadonlyArray<ResizeObserverSize>;
12645+
readonly contentRect: DOMRectReadOnly;
12646+
readonly target: Element;
12647+
}
12648+
12649+
declare var ResizeObserverEntry: {
12650+
prototype: ResizeObserverEntry;
12651+
new(): ResizeObserverEntry;
12652+
};
12653+
12654+
interface ResizeObserverSize {
12655+
readonly blockSize: number;
12656+
readonly inlineSize: number;
12657+
}
12658+
12659+
declare var ResizeObserverSize: {
12660+
prototype: ResizeObserverSize;
12661+
new(): ResizeObserverSize;
12662+
};
12663+
1262712664
/** This Fetch API interface represents the response to a request. */
1262812665
interface Response extends Body {
1262912666
readonly headers: Headers;
@@ -19259,6 +19296,10 @@ interface RTCStatsCallback {
1925919296
(report: RTCStatsReport): void;
1926019297
}
1926119298

19299+
interface ResizeObserverCallback {
19300+
(entries: ResizeObserverEntry[], observer: ResizeObserver): void;
19301+
}
19302+
1926219303
interface TransformerFlushCallback<O> {
1926319304
(controller: TransformStreamDefaultController<O>): void | PromiseLike<void>;
1926419305
}
@@ -20111,6 +20152,7 @@ type RequestDestination = "" | "audio" | "audioworklet" | "document" | "embed" |
2011120152
type RequestMode = "cors" | "navigate" | "no-cors" | "same-origin";
2011220153
type RequestRedirect = "error" | "follow" | "manual";
2011320154
type ResidentKeyRequirement = "discouraged" | "preferred" | "required";
20155+
type ResizeObserverBoxOptions = "border-box" | "content-box" | "device-pixel-content-box";
2011420156
type ResizeQuality = "high" | "low" | "medium" | "pixelated";
2011520157
type ResponseType = "basic" | "cors" | "default" | "error" | "opaque" | "opaqueredirect";
2011620158
type ScopedCredentialType = "ScopedCred";

inputfiles/idl/Resize Observer.widl

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
enum ResizeObserverBoxOptions {
2+
"border-box", "content-box", "device-pixel-content-box"
3+
};
4+
5+
dictionary ResizeObserverOptions {
6+
ResizeObserverBoxOptions box = "content-box";
7+
};
8+
9+
[Exposed=(Window)]
10+
interface ResizeObserver {
11+
constructor(ResizeObserverCallback callback);
12+
undefined observe(Element target, optional ResizeObserverOptions options = {});
13+
undefined unobserve(Element target);
14+
undefined disconnect();
15+
};
16+
17+
callback ResizeObserverCallback = undefined (sequence<ResizeObserverEntry> entries, ResizeObserver observer);
18+
19+
[Exposed=Window]
20+
interface ResizeObserverEntry {
21+
readonly attribute Element target;
22+
readonly attribute DOMRectReadOnly contentRect;
23+
readonly attribute FrozenArray<ResizeObserverSize> borderBoxSize;
24+
readonly attribute FrozenArray<ResizeObserverSize> contentBoxSize;
25+
readonly attribute FrozenArray<ResizeObserverSize> devicePixelContentBoxSize;
26+
};
27+
28+
[Exposed=Window]
29+
interface ResizeObserverSize {
30+
readonly attribute unrestricted double inlineSize;
31+
readonly attribute unrestricted double blockSize;
32+
};
33+
34+
interface ResizeObservation {
35+
constructor(Element target);
36+
readonly attribute Element target;
37+
readonly attribute ResizeObserverBoxOptions observedBox;
38+
readonly attribute FrozenArray<ResizeObserverSize> lastReportedSizes;
39+
};

inputfiles/idlSources.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,10 @@
438438
"url": "https://www.w3.org/TR/referrer-policy/",
439439
"title": "Referrer Policy"
440440
},
441+
{
442+
"url": "https://drafts.csswg.org/resize-observer/",
443+
"title": "Resize Observer"
444+
},
441445
{
442446
"url": "https://w3c.github.io/resource-timing/",
443447
"title": "Resource Timing"

inputfiles/removedTypes.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,14 @@
255255
"ReadableStreamBYOBReader": null,
256256
"ReadableStreamBYOBRequest": null,
257257
"ReadableStreamReader": null,
258+
"ResizeObservation": null,
259+
"ResizeObserverEntry": {
260+
"properties": {
261+
"property": {
262+
"devicePixelContentBoxSize": null
263+
}
264+
}
265+
},
258266
"RTCDataChannel": {
259267
"properties": {
260268
"property": {

0 commit comments

Comments
 (0)