Skip to content

Commit c88834c

Browse files
committed
Add ResizeObserver
1 parent 7310818 commit c88834c

File tree

3 files changed

+107
-153
lines changed

3 files changed

+107
-153
lines changed

src/ResizeObserver.js

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/ResizeObserver.res

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
@@warning("-30")
2+
3+
open Prelude
4+
open DOM
5+
6+
type resizeObserverBoxOptions =
7+
| @as("border-box") BorderBox
8+
| @as("content-box") ContentBox
9+
| @as("device-pixel-content-box") DevicePixelContentBox
10+
11+
/**
12+
[See ResizeObserverSize on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserverSize)
13+
*/
14+
type resizeObserverSize = {
15+
/**
16+
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserverSize/inlineSize)
17+
*/
18+
inlineSize: any,
19+
/**
20+
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserverSize/blockSize)
21+
*/
22+
blockSize: any,
23+
}
24+
25+
/**
26+
[See ResizeObserverEntry on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry)
27+
*/
28+
type resizeObserverEntry = {
29+
/**
30+
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/target)
31+
*/
32+
target: element,
33+
/**
34+
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/contentRect)
35+
*/
36+
contentRect: domRectReadOnly,
37+
/**
38+
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/borderBoxSize)
39+
*/
40+
borderBoxSize: array<resizeObserverSize>,
41+
/**
42+
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/contentBoxSize)
43+
*/
44+
contentBoxSize: array<resizeObserverSize>,
45+
/**
46+
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserverEntry/devicePixelContentBoxSize)
47+
*/
48+
devicePixelContentBoxSize: array<resizeObserverSize>,
49+
}
50+
51+
/**
52+
[See ResizeObserver on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserver)
53+
*/
54+
type resizeObserver = {}
55+
56+
type resizeObserverOptions = {mutable box: resizeObserverBoxOptions}
57+
58+
type resizeObserverCallback = array<resizeObserverEntry> => resizeObserver => unit
59+
60+
module ResizeObserver = {
61+
/**
62+
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserver)
63+
*/
64+
@new
65+
external make: resizeObserverCallback => resizeObserver = "ResizeObserver"
66+
/**
67+
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserver/observe)
68+
*/
69+
@send
70+
external observe: (resizeObserver, element, resizeObserverOptions) => unit = "observe"
71+
72+
/**
73+
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserver/unobserve)
74+
*/
75+
@send
76+
external unobserve: (resizeObserver, element) => unit = "unobserve"
77+
78+
/**
79+
[Read more on MDN](https://developer.mozilla.org/docs/Web/API/ResizeObserver/disconnect)
80+
*/
81+
@send
82+
external disconnect: resizeObserver => unit = "disconnect"
83+
}

tools/TypeScript-DOM-lib-generator/src/build/emitter.ts

Lines changed: 15 additions & 153 deletions
Original file line numberDiff line numberDiff line change
@@ -2010,159 +2010,21 @@ export async function emitRescriptBindings(
20102010
],
20112011
opens: ["Prelude", "ChannelMessaging", "Event", "DOM"],
20122012
},
2013-
2014-
// chain([
2015-
// "AudioNode",
2016-
// "AudioDestinationNode",
2017-
// "BaseAudioContext",
2018-
// "AudioListener",
2019-
// "AudioWorklet",
2020-
// "AudioParam",
2021-
// ]),
2022-
// individualInterfaces(["NavigationPreloadManager", "PushManager"]),
2023-
// chain([
2024-
// "ServiceWorkerRegistration",
2025-
// "ServiceWorker",
2026-
// "ServiceWorkerContainer",
2027-
// ]),
2028-
// chain(["FileSystemEntry", "FileSystemDirectoryEntry", "FileSystem"]),
2029-
// individualInterfaces([
2030-
// "DOMTokenList",
2031-
// "NamedNodeMap",
2032-
// "DOMStringList",
2033-
// "Location",
2034-
// "FragmentDirective",
2035-
// "History",
2036-
// "CustomElementRegistry",
2037-
// // https://developer.mozilla.org/en-US/docs/Web/API/Window/locationbar
2038-
// "BarProp",
2039-
// "Clipboard",
2040-
// "CredentialsContainer",
2041-
// "Geolocation",
2042-
// "MediaCapabilities",
2043-
// "UserActivation",
2044-
// "MediaDevices",
2045-
// "MediaMetadata",
2046-
// "MediaSession",
2047-
// "Permissions",
2048-
// "WakeLock",
2049-
// "Navigator",
2050-
// "ScreenOrientation",
2051-
// "Screen",
2052-
// "VisualViewport",
2053-
// "SpeechSynthesis",
2054-
// "DOMException",
2055-
// "IDBValidKey",
2056-
// "IDBDatabase",
2057-
// "IDBTransaction",
2058-
// "IDBRequest",
2059-
// "IDBCursor",
2060-
// "SubtleCrypto",
2061-
// "KeyAlgorithm",
2062-
// "CryptoKey",
2063-
// "DataTransferItemList",
2064-
// "FileList",
2065-
// "DataTransfer",
2066-
// "AnimationEffect",
2067-
// "MediaList",
2068-
// "CSSNumericArray",
2069-
// "CSSTransformComponent",
2070-
// "CSSStyleValue",
2071-
// "CSSNumericValue",
2072-
// "CSSPerspective",
2073-
// "DOMMatrixReadOnly",
2074-
// "DOMMatrix",
2075-
// "CSSMatrixComponent",
2076-
// "NodeFilter",
2077-
// "MediaKeyStatusMap",
2078-
// "MediaKeySession",
2079-
// "ArrayBuffer",
2080-
// "GamepadHapticActuator",
2081-
// "GeolocationCoordinates",
2082-
// "ValidityState",
2083-
// "MediaError",
2084-
// "TimeRanges", // https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges#normalized_timeranges_objects
2085-
// "TextTrackList",
2086-
// "RemotePlayback",
2087-
// "TextTrackCueList",
2088-
// "FormData",
2089-
// "CustomStateSet",
2090-
// "MessageEventSource",
2091-
// "MessagePort",
2092-
// "SourceBufferList",
2093-
// "SpeechSynthesisVoice",
2094-
// "GamepadButton",
2095-
// "PerformanceServerTiming",
2096-
// "ResizeObserverSize",
2097-
// "URLSearchParams",
2098-
// "AudioBuffer",
2099-
// "AuthenticatorResponse", // https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredential/response
2100-
// "VideoColorSpace",
2101-
// "RTCSessionDescription",
2102-
// "RTCIceTransport",
2103-
// "RTCDtlsTransport",
2104-
// "RTCSctpTransport",
2105-
// "RTCRtpScriptTransform",
2106-
// "RTCDTMFSender",
2107-
// "WebTransportCloseInfo", // https://developer.mozilla.org/en-US/docs/Web/API/WebTransport/closed
2108-
// "VTTRegion",
2109-
// "LineAndPositionSetting", // https://developer.mozilla.org/en-US/docs/Web/API/VTTCue/line
2110-
// ]),
2111-
// chain(["AnimationTimeline", "DocumentTimeline"]),
2112-
// chain([
2113-
// "Node",
2114-
// "NodeList",
2115-
// "NodeListOf",
2116-
// "Element",
2117-
// "ShadowRoot",
2118-
// "HTMLCollection",
2119-
// "HTMLCollectionOf",
2120-
// "HTMLFormControlsCollection",
2121-
// "HTMLElement",
2122-
// "HTMLHeadElement",
2123-
// "HTMLFormElement",
2124-
// "HTMLImageElement",
2125-
// "HTMLEmbedElement",
2126-
// "HTMLAnchorElement",
2127-
// "HTMLAreaElement",
2128-
// "HTMLScriptElement",
2129-
// "DOMImplementation",
2130-
// "DocumentType",
2131-
// "Document",
2132-
// "Window",
2133-
// "Event",
2134-
// "MutationRecord",
2135-
// ]),
2136-
// chain([
2137-
// "StyleSheet",
2138-
// "CSSStyleSheet",
2139-
// "CSSRule",
2140-
// "CSSRuleList",
2141-
// "CSSStyleDeclaration",
2142-
// ]),
2143-
// chain(["AbortController", "AbortSignal"]),
2144-
// chain([
2145-
// "HTMLTableElement",
2146-
// "HTMLTableCaptionElement",
2147-
// "HTMLTableSectionElement",
2148-
// "HTMLTableCellElement",
2149-
// "HTMLTableRowElement",
2150-
// ]),
2151-
// chain([
2152-
// "HTMLButtonElement",
2153-
// "HTMLLabelElement",
2154-
// "HTMLTextAreaElement",
2155-
// "HTMLOutputElement",
2156-
// "HTMLInputElement",
2157-
// "HTMLDataListElement",
2158-
// "HTMLSelectElement",
2159-
// "HTMLOptionElement",
2160-
// "HTMLOptionsCollection",
2161-
// ]),
2162-
// chain(["ReadableByteStreamController", "ReadableStreamBYOBRequest"]),
2163-
// chain(["Animation"]),
2164-
// chain(["FontFaceSet"]),
2165-
// chain(["FontFace"]),
2013+
// https://developer.mozilla.org/en-US/docs/Web/API/Resize_Observer_API
2014+
{
2015+
name: "ResizeObserver",
2016+
entries: [
2017+
enums(["ResizeObserverBoxOptions"]),
2018+
individualInterfaces([
2019+
"ResizeObserverSize",
2020+
"ResizeObserverEntry",
2021+
"ResizeObserver",
2022+
]),
2023+
dictionaries(["ResizeObserverOptions"]),
2024+
...callbacks(["ResizeObserverCallback"]),
2025+
],
2026+
opens: ["Prelude", "DOM"],
2027+
},
21662028
];
21672029

21682030
for (const file of interfaceHierarchy) {

0 commit comments

Comments
 (0)