[Feature] `motion()`: configurable enter start state (scale about the centre, arc seeds for partitions)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
- Domain
- data-visualization
Research direction
Read packages/charts-core/src/motion.ts around the enter-track and partition-seed logic, then compare the ChartMotionTiming types in packages/charts-core/src/types.ts and the sunburst lineage guidance in docs/reference/marks/sunburst.md. The issue proposes API changes for generic marks and partition marks; done means both can accept per-element enter or exit start states while retaining per-datum delays.
Written by the indexing model from the issue text.
Description
Version: @tanstack/charts 1.1.0 (57774e1). Split from #193 (comment section D) and #194 (section C) so it can be closed on its own.
A mark cannot choose how its elements enter: generic marks only fade, and sunburst sectors only take their start shape from an ancestor. Both asks are the same API, an enter start state per element.
Generic marks: the only enter is an opacity fade (from #193 D)
When a keyed rect, dot or text gets an enter track, addEnterMotionTrack ends in a single opacity attribute tween from 0 to the target (motion.ts:2596-2635). ChartMotionTiming carries only delay, transition and path (types.ts:872-877), so a mark cannot ask for another shape of enter.
Example: radial gauge notches (areaX/rect marks) that should grow from scale 0 about each notch's own centre, with a per-notch delay. With the built-in tracks the only options are a fade or nothing. The workaround is scoped CSS keyframes keyed on data-ts-key, which depend on renderer-owned DOM and have to be aligned with the motion clock by hand.
Partition marks: enter/exit seeds cannot be supplied (from #194 C)
- Seeds come only from the nearest related ancestor (
motion.ts:2745,motion.ts:2770); with none, the sector only fades. - The docs describe lineage as the only source (
sunburst.md:171-174).
Ask
- Generic marks: an
enteroption onmotion()(or on the mark'smotion) withfrom: { opacity?, scale? }andorigin: 'center' | 'start', applied per element with the existing per-datumdelay. Or a documented per-element enter transform. - Partition marks:
enter: { from(node) }andexit: { to(node) }, returning[startAngle, endAngle, innerRadius, outerRadius].
Read from source, not run.
Related: #193 (missing enter tracks), #194 (arc motion).
- Dominant language
- TypeScript
- Stars
- 819
- Forks
- 49
- Avg merge
- 4h 58m
- Merged PRs (30d)
- 15
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from TanStack/charts
-
[Bug] Focus guides: `url(#id)` paints ignore `idPrefix`Possibly taken @getdownandcode claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
TanStack/charts#211 · 1 comment ·
Maintainers usually reply within 1 day
-
[Bug] Printed charts keep their screen width: resize redraw waits for an animation framePossibly taken @piecyk claimed this today. Open
Difficulty 3/5 1-2 days Newbie friendliness 25/100
Maintainers usually reply within 1 day
-
[Feature] Readable outside labels for crowded pie and donut chartsPossibly taken A pull request linked to this issue is open or already merged. Open
Difficulty 5/5 Over a week Newbie friendliness 25/100
TanStack/charts#227 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 42/100
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 57/100
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
one-zero-eight/apply-bot#39 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
bigbluebutton/bbb-ui-components-react#108 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
high priority
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
CI-CMG/deep-sea-corals-exb#84 · 1 comment ·