diff --git a/rescript.json b/rescript.json index eaf0b5f6..48cfb109 100644 --- a/rescript.json +++ b/rescript.json @@ -19,6 +19,11 @@ "WebAPI.Media": ["WebAPI.HTML", "Media"], "WebAPI.WebAudio": ["WebAPI.Media", "WebAPI.Messaging", "WebAudio"], "WebAPI.SVG": ["WebAPI.DOMNodes", "WebAPI.Geometry", "SVG"], + "WebAPI.Observers": [ + "WebAPI.DOMNodes", + "WebAPI.Geometry", + "Observers" + ], "WebAPI.File": ["WebAPI.Event", "File"], "WebAPI.URL": ["WebAPI.DOM", "URL"], "WebAPI.Fetch": ["WebAPI.Event", "WebAPI.File", "WebAPI.URL", "Fetch"], @@ -361,12 +366,14 @@ ] }, { - "dir": "src/IntersectionObserver", + "dir": "src/observers", "subdirs": true, - "feature": "WebAPI.IntersectionObserver", + "feature": "Observers", "public": [ "IntersectionObserver", - "IntersectionObserverRoot" + "IntersectionObserverRoot", + "MutationObserver", + "ResizeObserver" ] }, { @@ -402,14 +409,6 @@ "VideoPlaybackQuality" ] }, - { - "dir": "src/MutationObserver", - "subdirs": true, - "feature": "WebAPI.MutationObserver", - "public": [ - "MutationObserver" - ] - }, { "dir": "src/performance", "subdirs": true, @@ -428,14 +427,6 @@ "Permissions" ] }, - { - "dir": "src/ResizeObserver", - "subdirs": true, - "feature": "WebAPI.ResizeObserver", - "public": [ - "ResizeObserver" - ] - }, { "dir": "src/ServiceWorker", "subdirs": true, diff --git a/src/IntersectionObserver/IntersectionObserver.res b/src/observers/IntersectionObserver.res similarity index 100% rename from src/IntersectionObserver/IntersectionObserver.res rename to src/observers/IntersectionObserver.res diff --git a/src/IntersectionObserver/IntersectionObserverRoot.res b/src/observers/IntersectionObserverRoot.res similarity index 87% rename from src/IntersectionObserver/IntersectionObserverRoot.res rename to src/observers/IntersectionObserverRoot.res index ea99dd53..1d5c88f7 100644 --- a/src/IntersectionObserver/IntersectionObserverRoot.res +++ b/src/observers/IntersectionObserverRoot.res @@ -10,10 +10,12 @@ type decoded = | Document(DOM.document) | Null +let isDocument = (_: 't): bool => %raw(`param instanceof Document`) + let decode = (t: IntersectionObserverTypes.root): decoded => { if Element.isInstanceOf(t) { Element(t->toElement) - } else if Document.isInstanceOf(t) { + } else if isDocument(t) { Document(t->toDocument) } else { Null diff --git a/src/IntersectionObserver/IntersectionObserverTypes.res b/src/observers/IntersectionObserverTypes.res similarity index 100% rename from src/IntersectionObserver/IntersectionObserverTypes.res rename to src/observers/IntersectionObserverTypes.res diff --git a/src/MutationObserver/MutationObserver.res b/src/observers/MutationObserver.res similarity index 100% rename from src/MutationObserver/MutationObserver.res rename to src/observers/MutationObserver.res diff --git a/src/ResizeObserver/ResizeObserver.res b/src/observers/ResizeObserver.res similarity index 100% rename from src/ResizeObserver/ResizeObserver.res rename to src/observers/ResizeObserver.res diff --git a/src/ResizeObserver/ResizeObserverTypes.res b/src/observers/ResizeObserverTypes.res similarity index 100% rename from src/ResizeObserver/ResizeObserverTypes.res rename to src/observers/ResizeObserverTypes.res