From e89d40a9cfc7a97c7fe8a21cc0c7fb057698881e Mon Sep 17 00:00:00 2001 From: Andrew Herron Date: Fri, 29 Oct 2021 19:19:40 +1000 Subject: [PATCH 1/2] Document.elementFromPoint is now optional (and nullable) --- lib/js/tests/Webapi/Dom/Webapi__Dom__Document__test.js | 6 +++++- src/Webapi/Dom/Webapi__Dom__Document.res | 5 ++--- tests/Webapi/Dom/Webapi__Dom__Document__test.res | 5 ++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/js/tests/Webapi/Dom/Webapi__Dom__Document__test.js b/lib/js/tests/Webapi/Dom/Webapi__Dom__Document__test.js index ab929b49..6529f025 100644 --- a/lib/js/tests/Webapi/Dom/Webapi__Dom__Document__test.js +++ b/lib/js/tests/Webapi/Dom/Webapi__Dom__Document__test.js @@ -64,7 +64,11 @@ document.createTreeWalker(el, Webapi__Dom__Types.WhatToShow.many({ return 0; })); -document.elementFromPoint(0, 0); +var el$1 = document.elementFromPoint(0, 0); + +if (!(el$1 == null)) { + console.log(el$1); +} document.elementsFromPoint(0, 0); diff --git a/src/Webapi/Dom/Webapi__Dom__Document.res b/src/Webapi/Dom/Webapi__Dom__Document.res index ea63b944..1fa7bd78 100644 --- a/src/Webapi/Dom/Webapi__Dom__Document.res +++ b/src/Webapi/Dom/Webapi__Dom__Document.res @@ -95,9 +95,8 @@ module Impl = ( Webapi__Dom__Types.WhatToShow.t, Dom.nodeFilter, ) => Dom.treeWalker = "createTreeWalker" - @send - external elementFromPoint: (T.t, int, int) => Dom.element = - "" /* experimental, but widely supported */ + @send @return(nullable) + external elementFromPoint: (T.t, int, int) => option = "elementFromPoint" @send external elementsFromPoint: (T.t, int, int) => array = "" /* experimental */ @send external enableStyleSheetsForSet: (T.t, string) => unit = "" @send external exitPointerLock: T.t => unit = "" /* experimental */ diff --git a/tests/Webapi/Dom/Webapi__Dom__Document__test.res b/tests/Webapi/Dom/Webapi__Dom__Document__test.res index ee4b93b9..d5d7e0e4 100644 --- a/tests/Webapi/Dom/Webapi__Dom__Document__test.res +++ b/tests/Webapi/Dom/Webapi__Dom__Document__test.res @@ -61,7 +61,10 @@ let _ = document->createTreeWalkerWithWhatToShowFilter( }, NodeFilter.make(_ => 0), ) -let _ = document->elementFromPoint(0, 0) +switch (document->elementFromPoint(0, 0)) { + | Some(el) => Js.log(el) + | None => () +} let _ = document->elementsFromPoint(0, 0) let _ = document->enableStyleSheetsForSet("my-stylesheet-set") let _ = document->exitPointerLock From 331ff76e127c4c9c9f71987653e5a2e3e01e58a8 Mon Sep 17 00:00:00 2001 From: Andrew Herron Date: Sun, 31 Oct 2021 17:55:46 +1000 Subject: [PATCH 2/2] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99e6236b..e4d12a54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ Done: * Added `IntersectionObserver` and `IntersectionObserverEntry` bindings (#27) * Imported `bs-fetch` and converted it to "t-first" (#31) * Added `WebSocket` bindings (#34) +* Updated `Document.elementFromPoint` api to account for null return values (#35) Todo: * Convert more input types to `node_like` and `element_like` to improve usability