dom icon indicating copy to clipboard operation
dom copied to clipboard

Proposal: elementsFromRect()

Open justinfagnani opened this issue 1 year ago • 1 comments

What problem are you trying to solve?

elementsFromPoint() allows us to utilize the browsers hit-testing 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.

What solutions exist today?

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.

How would you solve it?

Add elementsFromRect() (and possibly elementsFromPath()) that return all elements intersecting the given rect.

Anything else?

No response

justinfagnani avatar May 02 '24 17:05 justinfagnani

This should be filed against CSSOM View. Once you file it there could you please link it from here and close this?

(Although I'm not sure we should do this until someone actually defines hit testing.)

annevk avatar May 03 '24 08:05 annevk

New issue open here: https://github.com/w3c/csswg-drafts/issues/10398

justinfagnani avatar Jun 07 '24 23:06 justinfagnani