blazeplot 0.2.0 → 0.2.1
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.
- package/README.md +29 -14
- package/dist/core/SeriesStore.d.ts +6 -1
- package/dist/core/SeriesStore.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/types.d.ts +40 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +472 -284
- package/dist/index.js.map +1 -1
- package/dist/plugins/tooltip.js +1 -1
- package/dist/plugins/tooltip.js.map +1 -1
- package/dist/ui/AxisOverlay.d.ts +3 -1
- package/dist/ui/AxisOverlay.d.ts.map +1 -1
- package/dist/ui/Chart.d.ts +27 -7
- package/dist/ui/Chart.d.ts.map +1 -1
- package/dist/ui/ChartLayout.d.ts +6 -0
- package/dist/ui/ChartLayout.d.ts.map +1 -1
- package/dist/ui/Tooltip.d.ts +2 -1
- package/dist/ui/Tooltip.d.ts.map +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -62,12 +62,13 @@ bun install blazeplot
|
|
|
62
62
|
|---|---|
|
|
63
63
|
| `new Chart(container, options?)` | Create a chart inside an HTML container element. The chart owns the plot canvas and axis layout. |
|
|
64
64
|
| `chart.addSeries(config, style?)` | Add a data series. Returns `SeriesStore`. |
|
|
65
|
-
| `chart.addLine(config, style?)` / `addArea` / `addScatter` / `addBar` | Typed helpers that set the series mode for you. |
|
|
65
|
+
| `chart.addLine(config, style?)` / `addArea` / `addScatter` / `addBar` / `addOhlc` / `addCandlestick` | Typed helpers that set the series mode for you. `config.yAxis: "right"` maps a series to the secondary Y axis. |
|
|
66
66
|
| `chart.removeSeries(series)` | Remove a previously added series. |
|
|
67
|
-
| `chart.setViewport({ xMin, xMax, yMin, yMax })` | Set the visible data range. |
|
|
68
|
-
| `chart.
|
|
67
|
+
| `chart.setViewport({ xMin, xMax, yMin, yMax })` | Set the visible data range on both Y axes and the shared X range. |
|
|
68
|
+
| `chart.setYViewport("left" | "right", { yMin, yMax })` | Set one Y-axis viewport while preserving the shared X range. |
|
|
69
|
+
| `chart.getViewport(yAxis?)` | Return the current visible data range for `"left"` or `"right"` Y axis. |
|
|
69
70
|
| `chart.pan(intent)` / `chart.zoom(intent)` | Plugin-facing camera interaction helpers. |
|
|
70
|
-
| `chart.clientToData(clientX, clientY)` / `chart.dataToPlot(x, y)` | Convert between client/plot coordinates and data coordinates. |
|
|
71
|
+
| `chart.clientToData(clientX, clientY, yAxis?)` / `chart.dataToPlot(x, y, yAxis?)` | Convert between client/plot coordinates and data coordinates for the selected Y axis. |
|
|
71
72
|
| `chart.resize(dpr?)` | Resize the internal plot canvas to match its CSS size × DPR. |
|
|
72
73
|
| `chart.start()` | Start the render loop (rAF). |
|
|
73
74
|
| `chart.stop()` | Stop the render loop. |
|
|
@@ -77,7 +78,7 @@ bun install blazeplot
|
|
|
77
78
|
| `chart.getFrameStats(target?)` | Copy per-frame benchmark counters into a reusable object. |
|
|
78
79
|
| `chart.getSeriesState()` | Return public series metadata/state for plugins or custom UI. |
|
|
79
80
|
| `chart.setSeriesVisible(series, visible)` | Toggle visibility and notify series-state subscribers. |
|
|
80
|
-
| `chart.pick(clientX, clientY, options?)` | Raw-data hit test. Supports `"nearest-x"
|
|
81
|
+
| `chart.pick(clientX, clientY, options?)` | Raw-data hit test. Supports `mode: "nearest-x" | "nearest-point"`, `group: "x" | "none"`, and `maxDistancePx`; returned items include actual sample X/Y and plot/client coordinates for highlights. |
|
|
81
82
|
| `chart.subscribe("hover", cb)` / `chart.subscribe("serieschange", cb)` | Subscribe to hover or series state changes. Returns an unsubscribe function. |
|
|
82
83
|
| `await chart.screenshot(options?)` | Export the full chart as an image `Blob`, including the WebGL plot and built-in DOM text overlays. |
|
|
83
84
|
| `chart.dispose()` | Dispose GPU resources, observers, input handlers, and owned DOM layout. |
|
|
@@ -87,12 +88,12 @@ bun install blazeplot
|
|
|
87
88
|
| Property | Default | Description |
|
|
88
89
|
|---|---|---|
|
|
89
90
|
| `viewportPolicy?` | — | Optional `beforeRender` viewport hook. Pass the same policy to `interactionsPlugin({ viewportPolicy })` for pan/zoom hooks. |
|
|
90
|
-
| `hover?` | `{ mode: "nearest-x" }` | Default hover picking behavior. `mode` can be `"nearest-x"` or `"nearest-point"
|
|
91
|
+
| `hover?` | `{ mode: "nearest-x", group: "x" }` | Default hover picking behavior. `mode` can be `"nearest-x"` or `"nearest-point"`; `group: "x"` reports one item per visible series at the selected X, while `group: "none"` reports only the selected point. |
|
|
91
92
|
| `plugins?` | `[]` | Optional `ChartPlugin` instances, e.g. `legendPlugin()` and `tooltipPlugin()`. |
|
|
92
93
|
| `theme?` | built-in dark theme | Override chart, axis, palette, legend, and tooltip colors/fonts. |
|
|
93
94
|
| `grid?` | `true` | Show grid lines. |
|
|
94
95
|
| `gridStyle?` | `{ color: theme.gridColor }` | Grid line color and width; overrides the theme grid color. |
|
|
95
|
-
| `axes?` | `true` | Show axis tick labels. `true`/`false`, or per-axis `{ x?: boolean \| AxisConfig, y?: boolean \| AxisConfig }`. |
|
|
96
|
+
| `axes?` | `true` | Show axis tick labels. `true`/`false`, or per-axis `{ x?: boolean \| AxisConfig, y?: boolean \| AxisConfig, y2?: boolean \| AxisConfig }`. `y2` is the right-side secondary Y axis and is hidden by default. |
|
|
96
97
|
|
|
97
98
|
### `ChartTheme`
|
|
98
99
|
|
|
@@ -129,10 +130,14 @@ WebGL-facing colors (`backgroundColor`, `gridColor`, `seriesColors`) accept eith
|
|
|
129
130
|
| `position?` | `"inside"` | `"inside"` draws labels over the plot; `"outside"` reserves a real DOM gutter and shrinks the plot canvas. |
|
|
130
131
|
|
|
131
132
|
```ts
|
|
132
|
-
// X labels outside (bottom gutter), Y
|
|
133
|
-
new Chart(canvas, {
|
|
134
|
-
axes: { x: { position: "outside" }, y: true }
|
|
133
|
+
// X labels outside (bottom gutter), left Y inside, right Y outside.
|
|
134
|
+
const chart = new Chart(canvas, {
|
|
135
|
+
axes: { x: { position: "outside" }, y: true, y2: { position: "outside" } }
|
|
135
136
|
});
|
|
137
|
+
|
|
138
|
+
chart.addLine({ capacity: 10_000, yAxis: "left" });
|
|
139
|
+
chart.addLine({ capacity: 10_000, yAxis: "right" });
|
|
140
|
+
chart.setYViewport("right", { yMin: 0, yMax: 100 });
|
|
136
141
|
```
|
|
137
142
|
|
|
138
143
|
### `ChartFrameStats`
|
|
@@ -155,16 +160,16 @@ import { legendPlugin } from "blazeplot/plugins/legend";
|
|
|
155
160
|
import { tooltipPlugin } from "blazeplot/plugins/tooltip";
|
|
156
161
|
|
|
157
162
|
const chart = new Chart(container, {
|
|
158
|
-
hover: { mode: "nearest-x" },
|
|
163
|
+
hover: { mode: "nearest-x", group: "x" },
|
|
159
164
|
plugins: [
|
|
160
165
|
interactionsPlugin({ axis: "xy" }),
|
|
161
166
|
legendPlugin(),
|
|
162
|
-
tooltipPlugin({ mode: "nearest-point" }),
|
|
167
|
+
tooltipPlugin({ mode: "nearest-point", group: "none", maxDistancePx: 24 }),
|
|
163
168
|
],
|
|
164
169
|
});
|
|
165
170
|
```
|
|
166
171
|
|
|
167
|
-
Built-in plugins are optional. `interactionsPlugin()` provides plain-drag box zoom, Shift+drag plot pan, wheel zoom, double-click reset, and `axis: "x" | "y" | "xy"`. When outside axes are visible, scrolling an axis zooms that axis and dragging an axis pans that axis; the plugin also applies a subtle axis hover color/filter configurable with `axisHover`, `axisHoverColor`, and `axisHoverFilter`. Legend/tooltip 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.
|
|
172
|
+
Built-in plugins are optional. `interactionsPlugin()` provides plain-drag box zoom, Shift+drag plot pan, wheel zoom, double-click reset, and `axis: "x" | "y" | "xy"`. When outside axes are visible, scrolling an axis zooms that axis and dragging an axis pans that axis; the plugin also applies a subtle axis hover color/filter configurable with `axisHover`, `axisHoverColor`, and `axisHoverFilter`. Legend/tooltip 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. For shared time-series tooltips, use `group: "x"`; for scatter/true point hover, use `group: "none"`.
|
|
168
173
|
|
|
169
174
|
### `SeriesStore`
|
|
170
175
|
|
|
@@ -180,9 +185,10 @@ Built-in plugins are optional. `interactionsPlugin()` provides plain-drag box zo
|
|
|
180
185
|
|
|
181
186
|
| Property | Description |
|
|
182
187
|
|---|---|
|
|
183
|
-
| `mode` | `"line"` / `"area"` / `"scatter"` / `"bar"` / `"envelope"` (envelope roadmap-only). |
|
|
188
|
+
| `mode` | `"line"` / `"area"` / `"scatter"` / `"bar"` / `"ohlc"` / `"candlestick"` / `"envelope"` (envelope roadmap-only). |
|
|
184
189
|
| `capacity` | Ring buffer capacity (samples). |
|
|
185
190
|
| `id?` / `name?` | Optional metadata exposed to plugins, legend, and tooltip rows. |
|
|
191
|
+
| `yAxis?` | `"left"` or `"right"`; selects the primary or secondary Y viewport/axis for this series. |
|
|
186
192
|
| `downsample` | `"minmax"` or `"none"`. Min/max LOD applies to line and bar rendering; area/scatter skip LOD. |
|
|
187
193
|
|
|
188
194
|
### `SeriesStyle`
|
|
@@ -195,6 +201,15 @@ Built-in plugins are optional. `interactionsPlugin()` provides plain-drag box zo
|
|
|
195
201
|
| `barWidth` | `0.8` | Bar width in data-space X units. |
|
|
196
202
|
| `baseline` | `0` | Area/bar baseline in data-space Y units. |
|
|
197
203
|
| `fillColor` | line color with 25% alpha | Area fill RGBA color. |
|
|
204
|
+
| `tickWidth` | `barWidth` or `0.8` | OHLC open/close tick width in data-space X units. |
|
|
205
|
+
| `upColor` / `downColor` | series color / translucent fill | Candlestick body colors. |
|
|
206
|
+
| `wickColor` | series color | Candlestick wick color. |
|
|
207
|
+
|
|
208
|
+
### High-performance dataset capabilities
|
|
209
|
+
|
|
210
|
+
`Dataset` only requires `getX/getY` and X binary search. For maximum performance with huge, procedural, remote, or memory-mapped data, implement `AcceleratedDataset`.
|
|
211
|
+
|
|
212
|
+
`AcceleratedDataset` is the convenience contract for all fast paths: range min/max, exact range copying, stable viewport sampling, and renderer-ready min/max buckets. BlazePlot still exports the smaller capability interfaces (`RangeMinMaxDataset`, `RangeSampleCopyDataset`, `VisibleSampleCopyDataset`, `MinMaxSegmentCopyDataset`) for advanced partial acceleration, but most high-performance custom datasets should target `AcceleratedDataset`.
|
|
198
213
|
|
|
199
214
|
### `ViewportPolicy`
|
|
200
215
|
|
|
@@ -23,7 +23,7 @@ export declare class SeriesStore {
|
|
|
23
23
|
visibleSampleCount(viewport: Viewport): number;
|
|
24
24
|
sampleAt(index: number): SeriesSample | null;
|
|
25
25
|
nearestSampleByX(x: number, viewport?: Viewport): SeriesSample | null;
|
|
26
|
-
nearestSampleByPoint(x: number, y: number, viewport: Viewport, plotWidth: number, plotHeight: number): SeriesSample | null;
|
|
26
|
+
nearestSampleByPoint(x: number, y: number, viewport: Viewport, plotWidth: number, plotHeight: number, maxDistancePx?: number): SeriesSample | null;
|
|
27
27
|
copyRawVisible(viewport: Viewport, target: Float32Array, maxPoints: number, xOrigin?: number): number;
|
|
28
28
|
copyRawVisibleClipped(viewport: Viewport, target: Float32Array, maxPoints: number, xOrigin?: number): number;
|
|
29
29
|
copyRawVisibleClipSpace(viewport: Viewport, target: Float32Array, maxPoints: number): number;
|
|
@@ -33,10 +33,15 @@ export declare class SeriesStore {
|
|
|
33
33
|
copyMinMaxVisible(viewport: Viewport, target: Float32Array, maxSegments: number, xOrigin?: number): number;
|
|
34
34
|
copyMinMaxInstanced(viewport: Viewport, target: Float32Array, maxSegments: number, xOrigin?: number): number;
|
|
35
35
|
copyOhlcRange(start: number, end: number, target: Float32Array, maxCandles: number, tickWidth: number, xOrigin?: number): number;
|
|
36
|
+
copyOhlcTuplesRange(start: number, end: number, target: Float32Array, maxCandles: number, xOrigin?: number): number;
|
|
36
37
|
visibleIndexRange(viewport: Viewport | undefined, outerPadding?: number): {
|
|
37
38
|
start: number;
|
|
38
39
|
end: number;
|
|
39
40
|
};
|
|
41
|
+
private pointXDistanceSq;
|
|
42
|
+
private pointIntervalDistanceSq;
|
|
43
|
+
private hasPointIntervalBounds;
|
|
44
|
+
private pointIntervalMinMaxY;
|
|
40
45
|
private copyClippedVisibleLine;
|
|
41
46
|
private copyVisibleSamples;
|
|
42
47
|
private copySampleRange;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeriesStore.d.ts","sourceRoot":"","sources":["../../src/core/SeriesStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"SeriesStore.d.ts","sourceRoot":"","sources":["../../src/core/SeriesStore.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { Viewport, LODBucket, LODView, TimeRange, SeriesStyle, SeriesMode, SeriesConfig, LODStrategy, Dataset, AppendableDataset } from './types.js';
|
|
1
|
+
export type { Viewport, LODBucket, LODView, TimeRange, SeriesStyle, SeriesMode, SeriesYAxis, SeriesConfig, LODStrategy, Dataset, AcceleratedDataset, AppendableDataset, RangeMinMaxDataset, RangeSampleCopyDataset, VisibleSampleCopyDataset, MinMaxSegmentCopyDataset, SampleCopyLayout, MinMaxSegmentLayout } from './types.js';
|
|
2
2
|
export { RingBuffer } from './RingBuffer.js';
|
|
3
3
|
export { StaticDataset } from './StaticDataset.js';
|
|
4
4
|
export { MinMaxPyramid } from './MinMaxPyramid.js';
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAElU,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -28,8 +28,12 @@ export interface SeriesStyle {
|
|
|
28
28
|
readonly baseline?: number;
|
|
29
29
|
readonly fillColor?: readonly [number, number, number, number];
|
|
30
30
|
readonly tickWidth?: number;
|
|
31
|
+
readonly upColor?: readonly [number, number, number, number];
|
|
32
|
+
readonly downColor?: readonly [number, number, number, number];
|
|
33
|
+
readonly wickColor?: readonly [number, number, number, number];
|
|
31
34
|
}
|
|
32
|
-
export type SeriesMode = "line" | "area" | "envelope" | "scatter" | "bar" | "ohlc";
|
|
35
|
+
export type SeriesMode = "line" | "area" | "envelope" | "scatter" | "bar" | "ohlc" | "candlestick";
|
|
36
|
+
export type SeriesYAxis = "left" | "right";
|
|
33
37
|
export interface Dataset {
|
|
34
38
|
readonly length: number;
|
|
35
39
|
readonly range: TimeRange | null;
|
|
@@ -44,6 +48,40 @@ export interface RangeMinMaxDataset extends Dataset {
|
|
|
44
48
|
maxY: number;
|
|
45
49
|
} | null;
|
|
46
50
|
}
|
|
51
|
+
export type SampleCopyLayout = "points" | "area";
|
|
52
|
+
export type MinMaxSegmentLayout = "line-list" | "instanced";
|
|
53
|
+
/**
|
|
54
|
+
* Optional high-performance extraction capability for datasets that can copy raw
|
|
55
|
+
* samples without going through repeated getX/getY calls. Implement this for
|
|
56
|
+
* very large datasets, implicit-X datasets, or remote/memory-mapped sources.
|
|
57
|
+
*/
|
|
58
|
+
export interface RangeSampleCopyDataset extends Dataset {
|
|
59
|
+
copySamplesRange(start: number, end: number, target: Float32Array, maxPoints: number, layout: SampleCopyLayout, baseline: number, xOrigin: number): number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Optional high-performance stable visible sampling capability. Unlike
|
|
63
|
+
* copySamplesRange, this method may stride/downsample, but should choose samples
|
|
64
|
+
* anchored to data coordinates so streamed appends do not make existing sampled
|
|
65
|
+
* points jitter.
|
|
66
|
+
*/
|
|
67
|
+
export interface VisibleSampleCopyDataset extends Dataset {
|
|
68
|
+
copyVisibleSamples(viewport: Viewport, target: Float32Array, maxPoints: number, layout: SampleCopyLayout, baseline: number, xOrigin: number): number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Optional high-performance min/max extraction capability for dense rendering.
|
|
72
|
+
* Implementations can use pyramids, segment trees, database aggregates, or
|
|
73
|
+
* analytic/procedural envelopes to emit renderer-ready min/max buckets.
|
|
74
|
+
*/
|
|
75
|
+
export interface MinMaxSegmentCopyDataset extends Dataset {
|
|
76
|
+
copyMinMaxSegments(viewport: Viewport, target: Float32Array, maxSegments: number, layout: MinMaxSegmentLayout, xOrigin: number): number;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Convenience contract for maximum-performance custom datasets. Implement this
|
|
80
|
+
* when a dataset can provide fast exact sample copies, stable viewport sampling,
|
|
81
|
+
* range min/max queries, and renderer-ready min/max buckets.
|
|
82
|
+
*/
|
|
83
|
+
export interface AcceleratedDataset extends Dataset, RangeMinMaxDataset, RangeSampleCopyDataset, VisibleSampleCopyDataset, MinMaxSegmentCopyDataset {
|
|
84
|
+
}
|
|
47
85
|
export interface OhlcDataset extends Dataset {
|
|
48
86
|
getOpen(index: number): number;
|
|
49
87
|
getHigh(index: number): number;
|
|
@@ -69,6 +107,7 @@ export interface SeriesConfig {
|
|
|
69
107
|
readonly downsample?: LODStrategy;
|
|
70
108
|
readonly overflow?: BufferOverflowStrategy;
|
|
71
109
|
readonly dataset?: Dataset;
|
|
110
|
+
readonly yAxis?: SeriesYAxis;
|
|
72
111
|
readonly id?: string;
|
|
73
112
|
readonly name?: string;
|
|
74
113
|
}
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -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;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
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, ChartScreenshotOptions, AxisConfig, TypedSeriesConfig, ChartHoverState, ChartPickItem, ChartPickMode, ChartPickOptions, ChartPlugin, ChartPluginHandle, ChartSeriesState } from './ui/Chart.js';
|
|
2
|
+
export type { ChartFrameStats, ChartOptions, ChartScreenshotOptions, AxisConfig, TypedSeriesConfig, ChartHoverState, ChartPickGroup, ChartPickItem, ChartPickMode, ChartPickOptions, ChartPlugin, ChartPluginHandle, ChartSeriesState } from './ui/Chart.js';
|
|
3
3
|
export { DEFAULT_CHART_THEME } from './ui/theme.js';
|
|
4
4
|
export type { ChartTheme, ResolvedChartTheme, RgbaColor, CssColor, ThemeColor } from './ui/theme.js';
|
|
5
5
|
export type { AxisPosition } from './ui/ChartLayout.js';
|
|
@@ -12,6 +12,6 @@ export type { OhlcRingBufferOptions } from './core/OhlcDataset.js';
|
|
|
12
12
|
export { MinMaxPyramid } from './core/MinMaxPyramid.js';
|
|
13
13
|
export { Camera2D } from './interaction/Camera2D.js';
|
|
14
14
|
export { AxisController } from './interaction/AxisController.js';
|
|
15
|
-
export type { Viewport, LODBucket, LODView, TimeRange, SeriesStyle, SeriesMode, SeriesConfig, SeriesSample, LODStrategy, BufferOverflowStrategy, Dataset, OhlcDataset, RangeMinMaxDataset, AppendableDataset } from './core/types.js';
|
|
15
|
+
export type { Viewport, LODBucket, LODView, TimeRange, SeriesStyle, SeriesMode, SeriesYAxis, SeriesConfig, SeriesSample, LODStrategy, BufferOverflowStrategy, Dataset, AcceleratedDataset, OhlcDataset, RangeMinMaxDataset, RangeSampleCopyDataset, VisibleSampleCopyDataset, MinMaxSegmentCopyDataset, SampleCopyLayout, MinMaxSegmentLayout, AppendableDataset } from './core/types.js';
|
|
16
16
|
export type { PanIntent, ZoomAxis, ZoomIntent, ViewportPolicy } from './interaction/types.js';
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,sBAAsB,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,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,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7P,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrG,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,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,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1X,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
|