@pond-ts/react 0.39.0 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/CHANGELOG.md +69 -14
  2. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -8,7 +8,9 @@ The `@pond-ts` packages — `pond-ts`, `@pond-ts/react`, `@pond-ts/charts`, and
8
8
  them all. Pre-1.0: minor bumps may include new features and type-level changes;
9
9
  patch bumps are strictly additive.
10
10
 
11
- [Unreleased]: https://github.com/pjm17971/pond-ts/compare/v0.39.0...HEAD
11
+ [Unreleased]: https://github.com/pjm17971/pond-ts/compare/v0.41.0...HEAD
12
+ [0.41.0]: https://github.com/pjm17971/pond-ts/compare/v0.40.0...v0.41.0
13
+ [0.40.0]: https://github.com/pjm17971/pond-ts/compare/v0.39.0...v0.40.0
12
14
  [0.39.0]: https://github.com/pjm17971/pond-ts/compare/v0.38.0...v0.39.0
13
15
  [0.38.0]: https://github.com/pjm17971/pond-ts/compare/v0.37.0...v0.38.0
14
16
  [0.37.0]: https://github.com/pjm17971/pond-ts/compare/v0.36.0...v0.37.0
@@ -37,21 +39,61 @@ patch bumps are strictly additive.
37
39
 
38
40
  ## [Unreleased]
39
41
 
42
+ ## [0.41.0] — 2026-07-06
43
+
44
+ ### Added
45
+
46
+ - **`@pond-ts/charts`: `<Candlestick>` — a first-class OHLC mark** (Phase 1 of
47
+ the financial-charts RFC, Tidal-driven). `open`/`high`/`low`/`close` props
48
+ default to the conventional names (`<Candlestick series={s} />` for a standard
49
+ OHLCV series); draws-only (body extents derived per-mark); **point- or
50
+ interval-keyed** so raw daily OHLCV feeds straight in (no `aggregate`), while a
51
+ weekly/monthly rollup is the identical call. `variant: 'candle' | 'bar' |
52
+ 'hollow'`, `colorBy: 'direction' | 'series'`, `gap`, and `showOHLC` (four-pill
53
+ O/H/L/C hover readout; default is a single `close` pill keyed on `as`).
54
+ Participates in the crosshair x-snap (unlike `BoxPlot`). Supersedes `BoxPlot
55
+ shape='solid'` for OHLC data.
56
+ - **`@pond-ts/charts`: `ohlcFromTimeSeries`** + the `OhlcSeries` / `OhlcColumns`
57
+ types — read four price columns into a chart-ready columnar view (exported
58
+ alongside the existing `*FromTimeSeries` builders).
59
+
60
+ ### Changed
61
+
62
+ - **`@pond-ts/charts`: `ChartTheme` gains a required `candle` slot** (a
63
+ `CandleStyle`: `rising`/`falling`/`neutral` body+wick pairs, `bodyWidth`,
64
+ `wickWidth`). `defaultTheme` and `estelaTheme` ship neutral, **unbranded**
65
+ up/down pairs — market green/red is a `cssVarTheme` overlay, not a library
66
+ default. **Breaking (type-level):** a hand-built `ChartTheme` that doesn't
67
+ derive from a shipped theme must add a `candle` slot to compile.
68
+
69
+ ## [0.40.0] — 2026-07-05
70
+
71
+ A **core + charts** release from the estela `DataChart`-port friction wave.
72
+ `@pond-ts/react` and `@pond-ts/fit` carry no code changes — republished in
73
+ lock-step (peer ranges widen to `^0.40.0`).
74
+
75
+ ### Added
76
+
77
+ - `pond-ts`: **`TimeSeries.fromColumns({ sort })`** — an opt-in `sort?: boolean`
78
+ (default `false`) that stable-sorts a columnar payload by key before
79
+ construction, the columnar counterpart of `fromJSON`'s `sort`. The default path
80
+ is unchanged: a decreasing key still throws (a backwards key on the trusted fast
81
+ door is a corruption signal, not silently accepted), and the `Float64Array`
82
+ zero-copy adoption is preserved when `sort` is unset. (#344)
83
+ - `@pond-ts/charts`: **controlled bar hover** — `<ChartContainer hovered
84
+ onHover>`, the transient-hover analog of the existing `selected` / `onSelect`
85
+ pair, keyed by the same `SelectInfo`. Pin a lit `<BarChart>` bar from a legend
86
+ or list row (`hovered`), or mirror a bar-originated hover out-of-band
87
+ (`onHover`); omit both for today's uncontrolled behavior. (#343)
88
+
40
89
  ### Fixed
41
90
 
42
- - **Charts — click-to-select an annotation now works while `panZoom` is on.** A
43
- _selectable but non-editable_ `<Region>` / `<Marker>` (one with no `onChange`)
44
- lets its press bubble to the plot so a drag can pan _through_ it. The plot
45
- captured the pointer on press to start the pan, and the browser then retargeted
46
- the resulting `click` onto the plot (Pointer Events spec: a captured pointer's
47
- compatibility mouse events fire on the capture target) silently dropping the
48
- mark's `onSelectAnnotation`. The plot now **defers** its pan pointer-capture
49
- until the pointer actually moves past the drag slop, so a click (no drag) leaves
50
- the pointer on the mark and its select fires, while a press-drag still pans
51
- through and the tracker still hides once the pan commits. Resolves the
52
- browser-dependent finding deferred from #308; adds
53
- `e2e/annotations-panzoom.spec.ts`, the first real-pointer-event behavior e2e for
54
- the annotation layer. (#309)
91
+ - `@pond-ts/charts`: **axis and layer registration are value-equality-guarded**
92
+ a fresh-but-value-equal `ticks` / `format` / `byValue()`-projected `series`
93
+ reference no longer re-registers the axis/layer, fixing a "Maximum update depth
94
+ exceeded" loop on frequently re-rendering (scrub-driven) charts. The layer and
95
+ axis docs gain a memoize note for `format` / `series` (an inline `format`
96
+ closure still must be hoisted a closure can't be value-compared). (#342)
55
97
 
56
98
  ## [0.39.0] — 2026-07-03
57
99
 
@@ -89,6 +131,19 @@ carry no code changes — republished in lock-step (peer ranges widen to `^0.39.
89
131
 
90
132
  - `@pond-ts/charts`: the crosshair x-axis pill and marker pills read the axis's
91
133
  own formatter (a value-axis / off-boundary time no longer shows a raw number).
134
+ - **Charts — click-to-select an annotation now works while `panZoom` is on.** A
135
+ _selectable but non-editable_ `<Region>` / `<Marker>` (one with no `onChange`)
136
+ lets its press bubble to the plot so a drag can pan _through_ it. The plot
137
+ captured the pointer on press to start the pan, and the browser then retargeted
138
+ the resulting `click` onto the plot (Pointer Events spec: a captured pointer's
139
+ compatibility mouse events fire on the capture target) — silently dropping the
140
+ mark's `onSelectAnnotation`. The plot now **defers** its pan pointer-capture
141
+ until the pointer actually moves past the drag slop, so a click (no drag) leaves
142
+ the pointer on the mark and its select fires, while a press-drag still pans
143
+ through and the tracker still hides once the pan commits. Resolves the
144
+ browser-dependent finding deferred from #308; adds
145
+ `e2e/annotations-panzoom.spec.ts`, the first real-pointer-event behavior e2e for
146
+ the annotation layer. (#309)
92
147
 
93
148
  ## [0.38.0] — 2026-07-03
94
149
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pond-ts/react",
3
- "version": "0.39.0",
3
+ "version": "0.41.0",
4
4
  "description": "React hooks for pond-ts live time series",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -33,7 +33,7 @@
33
33
  "test:runtime": "vitest run"
34
34
  },
35
35
  "peerDependencies": {
36
- "pond-ts": "^0.39.0",
36
+ "pond-ts": "^0.41.0",
37
37
  "react": "^18.0.0 || ^19.0.0"
38
38
  },
39
39
  "devDependencies": {