[csswg-drafts] [cssom-view] Proposal: Document.elementsFromRect() (#10398)

justinfagnani has just created a new issue for https://github.com/w3c/csswg-drafts:

== [cssom-view] Proposal: Document.elementsFromRect() ==
`elementsFromPoint()` allows us to utilize browser hit-testing to get all elements under a specific coordinate. This is great for things like interactive editors that use DOM elements as the editable objects.

But such editors often have other kinds of selection gestures than just a single click that selects at a single coordinate. Often we'll have click-and-drag gestures for selecting all elements under a rectangular window. Some editors will have a lasso tool that lets users draw an irregular selection window. `elementsFromPoint()` is insufficient for these cases.

### Existing solutions

There are two rough approaches I know of for finding all elements under a rect:

1. Call `elementsFromPoint()` repeatedly in a grid pattern. This uses the native hit-testing mechanism, but it can obviously miss elements that fall between the grid points.

2. Re-implement hit testing and crawl the entire DOM looking for intersecting elements. This is very difficult and prone to error.

### Proposal

Add `elementsFromRect()` (and possibly `elementsFromPath()`) that return all elements intersecting the given rect, to Document and ShadowRoot.

Relevant spec section? https://drafts.csswg.org/cssom-view/#extensions-to-the-document-interface

Originally opened at: https://github.com/whatwg/dom/issues/1286

Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/10398 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Friday, 7 June 2024 23:53:55 UTC