blazeplot 0.1.6 → 0.1.8

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 (41) hide show
  1. package/README.md +36 -4
  2. package/dist/core/MinMaxPyramid.d.ts +4 -0
  3. package/dist/core/MinMaxPyramid.d.ts.map +1 -1
  4. package/dist/core/RingBuffer.d.ts +13 -0
  5. package/dist/core/RingBuffer.d.ts.map +1 -1
  6. package/dist/core/SeriesStore.d.ts +14 -1
  7. package/dist/core/SeriesStore.d.ts.map +1 -1
  8. package/dist/core/types.d.ts +19 -1
  9. package/dist/core/types.d.ts.map +1 -1
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +824 -80
  13. package/dist/index.js.map +1 -1
  14. package/dist/plugins/legend.d.ts +3 -0
  15. package/dist/plugins/legend.d.ts.map +1 -0
  16. package/dist/plugins/legend.js +37 -0
  17. package/dist/plugins/legend.js.map +1 -0
  18. package/dist/plugins/tooltip.d.ts +3 -0
  19. package/dist/plugins/tooltip.d.ts.map +1 -0
  20. package/dist/plugins/tooltip.js +50 -0
  21. package/dist/plugins/tooltip.js.map +1 -0
  22. package/dist/render/ReglBackend.d.ts +2 -0
  23. package/dist/render/ReglBackend.d.ts.map +1 -1
  24. package/dist/render/Renderer.d.ts +22 -1
  25. package/dist/render/Renderer.d.ts.map +1 -1
  26. package/dist/render/ShaderPrograms.d.ts +16 -0
  27. package/dist/render/ShaderPrograms.d.ts.map +1 -1
  28. package/dist/render/index.d.ts +1 -1
  29. package/dist/render/index.d.ts.map +1 -1
  30. package/dist/render/types.d.ts +13 -2
  31. package/dist/render/types.d.ts.map +1 -1
  32. package/dist/ui/Chart.d.ts +99 -2
  33. package/dist/ui/Chart.d.ts.map +1 -1
  34. package/dist/ui/ChartLayout.d.ts.map +1 -1
  35. package/dist/ui/Legend.d.ts +7 -1
  36. package/dist/ui/Legend.d.ts.map +1 -1
  37. package/dist/ui/Tooltip.d.ts +11 -1
  38. package/dist/ui/Tooltip.d.ts.map +1 -1
  39. package/dist/ui/index.d.ts +5 -3
  40. package/dist/ui/index.d.ts.map +1 -1
  41. package/package.json +9 -1
package/README.md CHANGED
@@ -60,7 +60,8 @@ push();
60
60
  | **Pan & zoom** | Pointer/touch pan and wheel zoom via `Camera2D`. Customizable viewport policies. |
61
61
  | **Grid lines** | Data-anchored grid rendered as WebGL line lists. |
62
62
  | **Axis labels** | Smart tick generation with DOM labels. Per-axis `inside`/`outside` positioning; outside axes reserve real layout gutters. |
63
- | **Multi-series** | Independent buffers, styles, and visibility per series. |
63
+ | **Multi-series** | Independent buffers, styles, and visibility per series. Line, area, scatter, and bar modes are supported. |
64
+ | **Plugin-ready UI** | Optional built-in `legendPlugin()` and `tooltipPlugin()` use the same public state and hover APIs available to custom plugins. |
64
65
  | **Benchmark overlay** | Built-in fps, frame time, vertex count, draw calls. |
65
66
  | **ResizeObserver** | Automatic DPR-aware canvas sizing. |
66
67
 
@@ -72,6 +73,7 @@ push();
72
73
  |---|---|
73
74
  | `new Chart(container, options?)` | Create a chart inside an HTML container element. The chart owns the plot canvas and axis layout. |
74
75
  | `chart.addSeries(config, style?)` | Add a data series. Returns `SeriesStore`. |
76
+ | `chart.addLine(config, style?)` / `addArea` / `addScatter` / `addBar` | Typed helpers that set the series mode for you. |
75
77
  | `chart.removeSeries(series)` | Remove a previously added series. |
76
78
  | `chart.setViewport({ xMin, xMax, yMin, yMax })` | Set the visible data range. |
77
79
  | `chart.resize(dpr?)` | Resize the internal plot canvas to match its CSS size × DPR. |
@@ -79,6 +81,11 @@ push();
79
81
  | `chart.stop()` | Stop the render loop. |
80
82
  | `chart.canvas` | Read-only access to the internal plot canvas. |
81
83
  | `chart.getFrameStats(target?)` | Copy per-frame benchmark counters into a reusable object. |
84
+ | `chart.getSeriesState()` | Return public series metadata/state for plugins or custom UI. |
85
+ | `chart.setSeriesVisible(series, visible)` | Toggle visibility and notify series-state subscribers. |
86
+ | `chart.pick(clientX, clientY, options?)` | Raw-data hit test. Supports `"nearest-x"` and `"nearest-point"`; returned items include actual sample X/Y and plot/client coordinates for highlights. |
87
+ | `chart.subscribe("hover", cb)` / `chart.subscribe("serieschange", cb)` | Subscribe to hover or series state changes. Returns an unsubscribe function. |
88
+ | `await chart.screenshot(options?)` | Export the full chart as an image `Blob`, including the WebGL plot and built-in DOM text overlays. |
82
89
  | `chart.dispose()` | Dispose GPU resources, observers, input handlers, and owned DOM layout. |
83
90
 
84
91
  ### `ChartOptions`
@@ -86,6 +93,8 @@ push();
86
93
  | Property | Default | Description |
87
94
  |---|---|---|
88
95
  | `viewportPolicy?` | — | Custom pan/zoom/viewport behavior hooks. |
96
+ | `hover?` | `{ mode: "nearest-x" }` | Default hover picking behavior. `mode` can be `"nearest-x"` or `"nearest-point"`. |
97
+ | `plugins?` | `[]` | Optional `ChartPlugin` instances, e.g. `legendPlugin()` and `tooltipPlugin()`. |
89
98
  | `grid?` | `true` | Show grid lines. |
90
99
  | `gridStyle?` | `{ color: [0.22,0.30,0.44,0.45] }` | Grid line color and width. |
91
100
  | `axes?` | `true` | Show axis tick labels. `true`/`false`, or per-axis `{ x?: boolean \| AxisConfig, y?: boolean \| AxisConfig }`. |
@@ -113,7 +122,25 @@ new Chart(canvas, {
113
122
  | `pointsRendered` | Number of vertices drawn this frame. |
114
123
  | `drawCalls` | Number of GPU draw calls this frame. |
115
124
  | `uploadBytes` | Bytes uploaded to GPU this frame. |
116
- | `renderMode` | `"none"` / `"raw"` / `"minmax"` / `"mixed"`. |
125
+ | `renderMode` | `"none"` / `"raw"` / `"minmax"` / `"points"` / `"bars"` / `"area"` / `"mixed"`. |
126
+
127
+ ### Plugins
128
+
129
+ ```js
130
+ import { Chart } from "blazeplot";
131
+ import { legendPlugin } from "blazeplot/plugins/legend";
132
+ import { tooltipPlugin } from "blazeplot/plugins/tooltip";
133
+
134
+ const chart = new Chart(container, {
135
+ hover: { mode: "nearest-x" },
136
+ plugins: [
137
+ legendPlugin(),
138
+ tooltipPlugin({ mode: "nearest-point" }),
139
+ ],
140
+ });
141
+ ```
142
+
143
+ Built-in plugins are optional. They consume public APIs (`getSeriesState`, `setSeriesVisible`, `pick`, and `subscribe`) so custom UI can use the same contract. The default tooltip updates while the cursor is still on live charts and highlights the raw sample(s) it is reporting.
117
144
 
118
145
  ### `SeriesStore`
119
146
 
@@ -129,9 +156,10 @@ new Chart(canvas, {
129
156
 
130
157
  | Property | Description |
131
158
  |---|---|
132
- | `mode` | `"line"` / `"envelope"` / `"scatter"` (envelope and scatter roadmap-only). |
159
+ | `mode` | `"line"` / `"area"` / `"scatter"` / `"bar"` / `"envelope"` (envelope roadmap-only). |
133
160
  | `capacity` | Ring buffer capacity (samples). |
134
- | `downsample` | `"minmax"` (LOD for line rendering). |
161
+ | `id?` / `name?` | Optional metadata exposed to plugins, legend, and tooltip rows. |
162
+ | `downsample` | `"minmax"` or `"none"`. Min/max LOD applies to line and bar rendering; area/scatter skip LOD. |
135
163
 
136
164
  ### `SeriesStyle`
137
165
 
@@ -139,6 +167,10 @@ new Chart(canvas, {
139
167
  |---|---|---|
140
168
  | `color` | `[0.3, 0.6, 1.0, 1.0]` | RGBA float color. |
141
169
  | `lineWidth` | `1` | Line width in pixels. |
170
+ | `pointSize` | `4` | Scatter point size in CSS pixels. |
171
+ | `barWidth` | `0.8` | Bar width in data-space X units. |
172
+ | `baseline` | `0` | Area/bar baseline in data-space Y units. |
173
+ | `fillColor` | line color with 25% alpha | Area fill RGBA color. |
142
174
 
143
175
  ### `ViewportPolicy`
144
176
 
@@ -11,6 +11,10 @@ export declare class MinMaxPyramid {
11
11
  incrementalBuild(source: Dataset): void;
12
12
  private appendTail;
13
13
  private ensureLevelData;
14
+ rangeMinMax(source: Dataset, start: number, end: number): {
15
+ minY: number;
16
+ maxY: number;
17
+ } | null;
14
18
  query(_viewport: Viewport, pixelWidth: number, xRange: {
15
19
  start: number;
16
20
  length: number;
@@ -1 +1 @@
1
- {"version":3,"file":"MinMaxPyramid.d.ts","sourceRoot":"","sources":["../../src/core/MinMaxPyramid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI7D,qBAAa,aAAa;IAOZ,QAAQ,CAAC,UAAU,EAAE,MAAM;IANvC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAAe;gBAEjB,UAAU,GAAE,MAAU;IAS3C,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAuD5B,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAwBvC,OAAO,CAAC,UAAU;IAkDlB,OAAO,CAAC,eAAe;IAYvB,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;CAsCnG"}
1
+ {"version":3,"file":"MinMaxPyramid.d.ts","sourceRoot":"","sources":["../../src/core/MinMaxPyramid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI7D,qBAAa,aAAa;IAOZ,QAAQ,CAAC,UAAU,EAAE,MAAM;IANvC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,eAAe,CAAe;gBAEjB,UAAU,GAAE,MAAU;IAS3C,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAuD5B,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAwBvC,OAAO,CAAC,UAAU;IAkDlB,OAAO,CAAC,eAAe;IAYvB,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA8C/F,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;CAsCnG"}
@@ -5,6 +5,9 @@ export declare class RingBuffer {
5
5
  private _head;
6
6
  private readonly xData;
7
7
  private readonly yData;
8
+ private readonly treeBase;
9
+ private readonly minTree;
10
+ private readonly maxTree;
8
11
  constructor(capacity: number);
9
12
  get length(): number;
10
13
  get range(): TimeRange | null;
@@ -18,8 +21,18 @@ export declare class RingBuffer {
18
21
  getY(index: number): number;
19
22
  lowerBoundX(x: number): number;
20
23
  upperBoundX(x: number): number;
24
+ rangeMinMaxY(start: number, end: number): {
25
+ minY: number;
26
+ maxY: number;
27
+ } | null;
21
28
  clear(): void;
29
+ private copyIntoPhysical;
30
+ private setTreeLeaf;
31
+ private recomputeTreeRange;
32
+ private recomputeTreeNode;
33
+ private queryPhysicalMinMax;
22
34
  private logicalToPhysical;
23
35
  private assertValidIndex;
36
+ private static nextPowerOfTwo;
24
37
  }
25
38
  //# sourceMappingURL=RingBuffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RingBuffer.d.ts","sourceRoot":"","sources":["../../src/core/RingBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,qBAAa,UAAU;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,KAAK,CAAa;IAE1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,QAAQ,EAAE,MAAM;IAU5B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,KAAK,IAAI,SAAS,GAAG,IAAI,CAG5B;IAED,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAOhC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI;IAOxD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAKnD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK3B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK3B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAW9B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAW9B,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;CAKzB"}
1
+ {"version":3,"file":"RingBuffer.d.ts","sourceRoot":"","sources":["../../src/core/RingBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,qBAAa,UAAU;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,KAAK,CAAa;IAE1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAE3B,QAAQ,EAAE,MAAM;IAe5B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,KAAK,IAAI,SAAS,GAAG,IAAI,CAG5B;IAED,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAQhC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI;IAwBxD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAKnD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK3B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK3B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAW9B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAW9B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAqB/E,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,MAAM,CAAC,cAAc;CAG9B"}
@@ -1,10 +1,13 @@
1
- import { Dataset, LODView, Viewport, SeriesConfig, SeriesStyle } from './types.js';
1
+ import { Dataset, LODView, Viewport, SeriesConfig, SeriesStyle, SeriesSample } from './types.js';
2
2
  export declare class SeriesStore {
3
3
  readonly config: SeriesConfig;
4
4
  readonly style: SeriesStyle;
5
5
  private readonly dataset;
6
6
  private readonly pyramid;
7
7
  private _dirty;
8
+ private _useRawMinMaxScan;
9
+ private _lastBuildLength;
10
+ private _lastBuildRangeStart;
8
11
  private _visible;
9
12
  constructor(dataset: Dataset, config: SeriesConfig, style: SeriesStyle);
10
13
  get hasLOD(): boolean;
@@ -17,7 +20,17 @@ export declare class SeriesStore {
17
20
  rebuildPyramid(): void;
18
21
  query(viewport: Viewport, pixelWidth: number): LODView;
19
22
  visibleSampleCount(viewport: Viewport): number;
23
+ sampleAt(index: number): SeriesSample | null;
24
+ nearestSampleByX(x: number, viewport?: Viewport): SeriesSample | null;
25
+ nearestSampleByPoint(x: number, y: number, viewport: Viewport, plotWidth: number, plotHeight: number): SeriesSample | null;
20
26
  copyRawVisible(viewport: Viewport, target: Float32Array, maxPoints: number): number;
27
+ copyAreaVisible(viewport: Viewport, target: Float32Array, maxPoints: number, baseline?: number): number;
21
28
  copyMinMaxVisible(viewport: Viewport, target: Float32Array, maxSegments: number): number;
29
+ copyMinMaxInstanced(viewport: Viewport, target: Float32Array, maxSegments: number): number;
30
+ private visibleIndexRange;
31
+ private copyVisibleSamples;
32
+ private copyMinMaxSegments;
33
+ private minMaxForRange;
34
+ private rawMinMaxForRange;
22
35
  }
23
36
  //# sourceMappingURL=SeriesStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SeriesStore.d.ts","sourceRoot":"","sources":["../../src/core/SeriesStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAqB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG3G,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAE/C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAiB;gBAErB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW;IAWtE,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI;IAUxD,KAAK,IAAI,IAAI;IAUb,cAAc,IAAI,IAAI;IAMtB,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAmBtD,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAM9C,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAmBnF,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;CAqCzF"}
1
+ {"version":3,"file":"SeriesStore.d.ts","sourceRoot":"","sources":["../../src/core/SeriesStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAyC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO7I,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAE/C,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,oBAAoB,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAiB;gBAErB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW;IAatE,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI;IAUxD,KAAK,IAAI,IAAI;IAab,cAAc,IAAI,IAAI;IAkBtB,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAmBtD,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAM9C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAK5C,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI;IAgBrE,oBAAoB,CAClB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,YAAY,GAAG,IAAI;IAwBtB,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAInF,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM;IAI1G,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAIxF,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAI1F,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,kBAAkB;IAqC1B,OAAO,CAAC,kBAAkB;IA6C1B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;CAgB1B"}
@@ -23,8 +23,12 @@ export interface TimeRange {
23
23
  export interface SeriesStyle {
24
24
  readonly color: readonly [number, number, number, number];
25
25
  readonly lineWidth: number;
26
+ readonly pointSize?: number;
27
+ readonly barWidth?: number;
28
+ readonly baseline?: number;
29
+ readonly fillColor?: readonly [number, number, number, number];
26
30
  }
27
- export type SeriesMode = "line" | "envelope" | "scatter";
31
+ export type SeriesMode = "line" | "area" | "envelope" | "scatter" | "bar";
28
32
  export interface Dataset {
29
33
  readonly length: number;
30
34
  readonly range: TimeRange | null;
@@ -33,16 +37,30 @@ export interface Dataset {
33
37
  lowerBoundX(x: number): number;
34
38
  upperBoundX(x: number): number;
35
39
  }
40
+ export interface RangeMinMaxDataset extends Dataset {
41
+ rangeMinMaxY(start: number, end: number): {
42
+ minY: number;
43
+ maxY: number;
44
+ } | null;
45
+ }
36
46
  export interface AppendableDataset extends Dataset {
37
47
  push(x: number, y: number): void;
38
48
  append(x: ArrayLike<number>, y: ArrayLike<number>): void;
39
49
  clear(): void;
40
50
  }
41
51
  export type LODStrategy = "minmax" | "none";
52
+ export interface SeriesSample {
53
+ readonly index: number;
54
+ readonly x: number;
55
+ readonly y: number;
56
+ readonly distancePx?: number;
57
+ }
42
58
  export interface SeriesConfig {
43
59
  readonly mode: SeriesMode;
44
60
  readonly capacity: number;
45
61
  readonly downsample?: LODStrategy;
46
62
  readonly dataset?: Dataset;
63
+ readonly id?: string;
64
+ readonly name?: string;
47
65
  }
48
66
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACzD,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { Chart } from './ui/Chart.js';
2
- export type { ChartFrameStats, ChartOptions, AxisConfig } from './ui/Chart.js';
2
+ export type { ChartFrameStats, ChartOptions, ChartScreenshotOptions, AxisConfig, TypedSeriesConfig, ChartHoverState, ChartPickItem, ChartPickMode, ChartPickOptions, ChartPlugin, ChartPluginHandle, ChartSeriesState } from './ui/Chart.js';
3
3
  export type { AxisPosition } from './ui/ChartLayout.js';
4
4
  export { SeriesStore } from './core/SeriesStore.js';
5
5
  export { RingBuffer } from './core/RingBuffer.js';
@@ -7,6 +7,6 @@ export { StaticDataset } from './core/StaticDataset.js';
7
7
  export { MinMaxPyramid } from './core/MinMaxPyramid.js';
8
8
  export { Camera2D } from './interaction/Camera2D.js';
9
9
  export { AxisController } from './interaction/AxisController.js';
10
- export type { Viewport, LODBucket, LODView, TimeRange, SeriesStyle, SeriesMode, SeriesConfig, LODStrategy, Dataset, AppendableDataset } from './core/types.js';
10
+ export type { Viewport, LODBucket, LODView, TimeRange, SeriesStyle, SeriesMode, SeriesConfig, SeriesSample, LODStrategy, Dataset, RangeMinMaxDataset, AppendableDataset } from './core/types.js';
11
11
  export type { PanIntent, ZoomAxis, ZoomIntent, ViewportPolicy } from './interaction/types.js';
12
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC/J,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,sBAAsB,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7O,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACjM,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}