Use rendered path geometry for curved mark interaction - #42
Draft
gillkyle wants to merge 3 commits into
Draft
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Curved marks look smooth, but hover selection currently tests the straight polygon connecting their original data points.
In a curved stacked-area chart, the cursor can be visibly inside the top layer while the tooltip selects the layer underneath it.
This PR makes hover selection follow the curve that was actually drawn.
Approach
Built-in D3 curves get this automatically. Custom marks can use
scenePath.Cost
Every row below is a TanStack Charts bundle or consumer:
The last row shrinks because our old adapter bundled D3's full line and area generators. The new recorder calls the D3 curve function directly, allowing those larger generators to tree-shake out. This is a TanStack implementation saving, not a comparison against D3.
Curved selection is about 0.3 µs slower per query (3.6 vs 3.3 µs). Point-only selection is unchanged.
bundle:checkremains red because the standalone resolver is 227 B over its existing 2 KiB budget; this draft leaves that trade-off visible for review.Validated with 775 tests, typecheck, package/docs checks, production build, benchmarks, and live SVG/Canvas checks.
Not included: frame-by-frame animated picking or parsing arbitrary SVG path strings.