diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2024-03-29 19:54:07 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2024-03-29 19:54:07 -0300 |
commit | beb4d7fa789991b1564a694ff73f205655d1bd77 (patch) | |
tree | 19d81f52e52c5422959c48b9974679386837ff09 | |
parent | f4f1c80ed54738ef06007df30b2c45d922870b90 (diff) |
client: WikiRect.fromMouse, fromElementUnderMouse
-rw-r--r-- | src/static/client3.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/static/client3.js b/src/static/client3.js index 764bdaa8..6aea86ad 100644 --- a/src/static/client3.js +++ b/src/static/client3.js @@ -193,6 +193,34 @@ class WikiRect extends DOMRect { return this.fromRect(element.getBoundingClientRect()); } + static fromMouse() { + const {clientX, clientY} = liveMousePositionInfo.state; + + return WikiRect.fromRect({ + x: clientX, + y: clientY, + width: 0, + height: 0, + }); + } + + static fromElementUnderMouse(element) { + const mouseRect = WikiRect.fromMouse(); + + const rects = + Array.from(element.getClientRects()) + .map(rect => WikiRect.fromRect(rect)); + + const rectUnderMouse = + rects.find(rect => rect.contains(mouseRect)); + + if (rectUnderMouse) { + return rectUnderMouse; + } else { + return rects[0]; + } + } + static leftOf(origin, offset = 0) { // Returns a rectangle representing everywhere to the left of the provided // point or rectangle (with no top or bottom bounds), towards negative x. |