blazeplot 0.1.11 → 0.2.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.
- package/README.md +14 -48
- package/dist/core/DataCursor.d.ts.map +1 -1
- package/dist/core/OhlcDataset.d.ts +51 -0
- package/dist/core/OhlcDataset.d.ts.map +1 -0
- package/dist/core/RingBuffer.d.ts +7 -1
- package/dist/core/RingBuffer.d.ts.map +1 -1
- package/dist/core/SeriesStore.d.ts +15 -5
- package/dist/core/SeriesStore.d.ts.map +1 -1
- package/dist/core/StaticDataset.d.ts.map +1 -1
- package/dist/core/search.d.ts +3 -0
- package/dist/core/search.d.ts.map +1 -0
- package/dist/core/types.d.ts +10 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +604 -267
- package/dist/index.js.map +1 -1
- package/dist/plugins/interactions.d.ts +1 -1
- package/dist/plugins/interactions.d.ts.map +1 -1
- package/dist/plugins/interactions.js +44 -41
- package/dist/plugins/interactions.js.map +1 -1
- package/dist/plugins/legend.js +6 -3
- package/dist/plugins/legend.js.map +1 -1
- package/dist/plugins/tooltip.js +32 -17
- package/dist/plugins/tooltip.js.map +1 -1
- package/dist/render/Renderer.d.ts +9 -3
- package/dist/render/Renderer.d.ts.map +1 -1
- package/dist/ui/AxisOverlay.d.ts +2 -1
- package/dist/ui/AxisOverlay.d.ts.map +1 -1
- package/dist/ui/Chart.d.ts +27 -12
- package/dist/ui/Chart.d.ts.map +1 -1
- package/dist/ui/Interactions.d.ts +2 -1
- package/dist/ui/Interactions.d.ts.map +1 -1
- package/dist/ui/Legend.d.ts.map +1 -1
- package/dist/ui/Tooltip.d.ts +2 -0
- package/dist/ui/Tooltip.d.ts.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
[](https://www.npmjs.com/package/blazeplot)
|
|
6
6
|
[](https://www.npmjs.com/package/blazeplot)
|
|
7
7
|
[](LICENSE)
|
|
8
|
-
[](https://github.com/Federicocervelli/blazeplot/actions)
|
|
9
8
|
|
|
10
9
|
Fast WebGL2 plotting engine for the browser 🔥
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
Built for people who have hit the performance ceiling of Chart.js, Plotly, and similar browser charting libraries. BlazePlot keeps the hot path GPU-native and the DOM minimal, so large streaming datasets stay interactive instead of turning into a slideshow.
|
|
12
|
+
|
|
13
|
+
Built on WebGL2 + [regl](https://github.com/regl-project/regl).
|
|
13
14
|
|
|
14
15
|
## Installation
|
|
15
16
|
|
|
@@ -21,35 +22,21 @@ bun install blazeplot
|
|
|
21
22
|
|
|
22
23
|
```html
|
|
23
24
|
<div id="chart" style="width:100%;height:400px"></div>
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
```js
|
|
27
|
-
import { Chart } from "blazeplot";
|
|
28
25
|
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
<script type="module">
|
|
27
|
+
import { Chart } from "blazeplot";
|
|
31
28
|
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
{ color: [0.3, 0.6, 1.0, 1.0] },
|
|
35
|
-
);
|
|
29
|
+
const chart = new Chart(document.getElementById("chart"));
|
|
30
|
+
const wave = chart.addLine({ capacity: 10_000, downsample: "minmax" });
|
|
36
31
|
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
wave.append(
|
|
33
|
+
Float64Array.from({ length: 1000 }, (_, i) => i),
|
|
34
|
+
Float32Array.from({ length: 1000 }, (_, i) => Math.sin(i * 0.02)),
|
|
35
|
+
);
|
|
39
36
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
function push() {
|
|
45
|
-
for (let i = 0; i < 256; i++) {
|
|
46
|
-
xs[i] = t++;
|
|
47
|
-
ys[i] = Math.sin(t * 0.01) * 0.5 + Math.random() * 0.01;
|
|
48
|
-
}
|
|
49
|
-
series.append(xs, ys);
|
|
50
|
-
requestAnimationFrame(push);
|
|
51
|
-
}
|
|
52
|
-
push();
|
|
37
|
+
chart.setViewport({ xMin: 0, xMax: 1000, yMin: -1.5, yMax: 1.5 });
|
|
38
|
+
chart.start();
|
|
39
|
+
</script>
|
|
53
40
|
```
|
|
54
41
|
|
|
55
42
|
## Features
|
|
@@ -241,27 +228,6 @@ src/
|
|
|
241
228
|
bun install
|
|
242
229
|
bun run dev # Vite dev server → preview/
|
|
243
230
|
bun run build # Package build (JS + declarations)
|
|
244
|
-
bun run build:js # JS-only build
|
|
245
231
|
bun test # Tests
|
|
246
232
|
bun run typecheck # TypeScript strict check
|
|
247
233
|
```
|
|
248
|
-
|
|
249
|
-
## Package build
|
|
250
|
-
|
|
251
|
-
```bash
|
|
252
|
-
bun run build
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
Output:
|
|
256
|
-
|
|
257
|
-
```
|
|
258
|
-
dist/index.js ES module
|
|
259
|
-
dist/index.d.ts TypeScript declarations
|
|
260
|
-
dist/plugins/interactions.js Optional interactions plugin
|
|
261
|
-
dist/plugins/legend.js Optional legend plugin
|
|
262
|
-
dist/plugins/tooltip.js Optional tooltip plugin
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
## Why WebGL2?
|
|
266
|
-
|
|
267
|
-
Canvas2D and SVG are CPU-bound — every point becomes a draw call or a DOM node. BlazePlot keeps plot data on the GPU and streams only visible vertices; DOM is limited to chart layout and labels. For dense line plots (millions of points), interactive scatter, or real-time streaming, the difference is orders of magnitude.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCursor.d.ts","sourceRoot":"","sources":["../../src/core/DataCursor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DataCursor.d.ts","sourceRoot":"","sources":["../../src/core/DataCursor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,OAAO,CAAwB;IAEvC,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAK3B,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAMjC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { BufferOverflowStrategy, OhlcDataset, TimeRange } from './types.js';
|
|
2
|
+
export declare class StaticOhlcDataset implements OhlcDataset {
|
|
3
|
+
readonly length: number;
|
|
4
|
+
private readonly xs;
|
|
5
|
+
private readonly opens;
|
|
6
|
+
private readonly highs;
|
|
7
|
+
private readonly lows;
|
|
8
|
+
private readonly closes;
|
|
9
|
+
constructor(x: ArrayLike<number>, open: ArrayLike<number>, high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>);
|
|
10
|
+
get range(): TimeRange | null;
|
|
11
|
+
getX(index: number): number;
|
|
12
|
+
getY(index: number): number;
|
|
13
|
+
getOpen(index: number): number;
|
|
14
|
+
getHigh(index: number): number;
|
|
15
|
+
getLow(index: number): number;
|
|
16
|
+
getClose(index: number): number;
|
|
17
|
+
lowerBoundX(x: number): number;
|
|
18
|
+
upperBoundX(x: number): number;
|
|
19
|
+
private assertValidIndex;
|
|
20
|
+
}
|
|
21
|
+
export interface OhlcRingBufferOptions {
|
|
22
|
+
readonly overflow?: BufferOverflowStrategy;
|
|
23
|
+
}
|
|
24
|
+
export declare class OhlcRingBuffer implements OhlcDataset {
|
|
25
|
+
readonly capacity: number;
|
|
26
|
+
private readonly overflow;
|
|
27
|
+
private readonly xData;
|
|
28
|
+
private readonly openData;
|
|
29
|
+
private readonly highData;
|
|
30
|
+
private readonly lowData;
|
|
31
|
+
private readonly closeData;
|
|
32
|
+
private _length;
|
|
33
|
+
private _head;
|
|
34
|
+
constructor(capacity: number, options?: OhlcRingBufferOptions);
|
|
35
|
+
get length(): number;
|
|
36
|
+
get range(): TimeRange | null;
|
|
37
|
+
push(x: number, open: number, high: number, low: number, close: number): void;
|
|
38
|
+
append(x: ArrayLike<number>, open: ArrayLike<number>, high: ArrayLike<number>, low: ArrayLike<number>, close: ArrayLike<number>): void;
|
|
39
|
+
clear(): void;
|
|
40
|
+
getX(index: number): number;
|
|
41
|
+
getY(index: number): number;
|
|
42
|
+
getOpen(index: number): number;
|
|
43
|
+
getHigh(index: number): number;
|
|
44
|
+
getLow(index: number): number;
|
|
45
|
+
getClose(index: number): number;
|
|
46
|
+
lowerBoundX(x: number): number;
|
|
47
|
+
upperBoundX(x: number): number;
|
|
48
|
+
private logicalToPhysical;
|
|
49
|
+
private assertValidIndex;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=OhlcDataset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OhlcDataset.d.ts","sourceRoot":"","sources":["../../src/core/OhlcDataset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { TimeRange } from './types.js';
|
|
2
|
+
export type RingBufferOverflow = "wrap" | "drop-new" | "error";
|
|
3
|
+
export interface RingBufferOptions {
|
|
4
|
+
readonly overflow?: RingBufferOverflow;
|
|
5
|
+
}
|
|
2
6
|
export declare class RingBuffer {
|
|
3
7
|
readonly capacity: number;
|
|
4
8
|
private _length;
|
|
@@ -8,7 +12,8 @@ export declare class RingBuffer {
|
|
|
8
12
|
private readonly treeBase;
|
|
9
13
|
private readonly minTree;
|
|
10
14
|
private readonly maxTree;
|
|
11
|
-
|
|
15
|
+
private readonly overflow;
|
|
16
|
+
constructor(capacity: number, options?: RingBufferOptions);
|
|
12
17
|
get length(): number;
|
|
13
18
|
get range(): TimeRange | null;
|
|
14
19
|
push(x: number, y: number): void;
|
|
@@ -26,6 +31,7 @@ export declare class RingBuffer {
|
|
|
26
31
|
maxY: number;
|
|
27
32
|
} | null;
|
|
28
33
|
clear(): void;
|
|
34
|
+
private appendNoWrap;
|
|
29
35
|
private copyIntoPhysical;
|
|
30
36
|
private setTreeLeaf;
|
|
31
37
|
private recomputeTreeRange;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RingBuffer.d.ts","sourceRoot":"","sources":["../../src/core/RingBuffer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RingBuffer.d.ts","sourceRoot":"","sources":["../../src/core/RingBuffer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CACxC;AAED,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;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAElC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB;IAgB7D,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;IAahC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI;IA2BxD,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;IAI9B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAI9B,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,YAAY;IAapB,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"}
|
|
@@ -24,12 +24,22 @@ export declare class SeriesStore {
|
|
|
24
24
|
sampleAt(index: number): SeriesSample | null;
|
|
25
25
|
nearestSampleByX(x: number, viewport?: Viewport): SeriesSample | null;
|
|
26
26
|
nearestSampleByPoint(x: number, y: number, viewport: Viewport, plotWidth: number, plotHeight: number): SeriesSample | null;
|
|
27
|
-
copyRawVisible(viewport: Viewport, target: Float32Array, maxPoints: number): number;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
copyRawVisible(viewport: Viewport, target: Float32Array, maxPoints: number, xOrigin?: number): number;
|
|
28
|
+
copyRawVisibleClipped(viewport: Viewport, target: Float32Array, maxPoints: number, xOrigin?: number): number;
|
|
29
|
+
copyRawVisibleClipSpace(viewport: Viewport, target: Float32Array, maxPoints: number): number;
|
|
30
|
+
copyRawRange(start: number, end: number, target: Float32Array, maxPoints: number, xOrigin?: number): number;
|
|
31
|
+
copyAreaVisible(viewport: Viewport, target: Float32Array, maxPoints: number, baseline?: number, xOrigin?: number): number;
|
|
32
|
+
copyAreaRange(start: number, end: number, target: Float32Array, maxPoints: number, baseline?: number, xOrigin?: number): number;
|
|
33
|
+
copyMinMaxVisible(viewport: Viewport, target: Float32Array, maxSegments: number, xOrigin?: number): number;
|
|
34
|
+
copyMinMaxInstanced(viewport: Viewport, target: Float32Array, maxSegments: number, xOrigin?: number): number;
|
|
35
|
+
copyOhlcRange(start: number, end: number, target: Float32Array, maxCandles: number, tickWidth: number, xOrigin?: number): number;
|
|
36
|
+
visibleIndexRange(viewport: Viewport | undefined, outerPadding?: number): {
|
|
37
|
+
start: number;
|
|
38
|
+
end: number;
|
|
39
|
+
};
|
|
40
|
+
private copyClippedVisibleLine;
|
|
32
41
|
private copyVisibleSamples;
|
|
42
|
+
private copySampleRange;
|
|
33
43
|
private copyMinMaxSegments;
|
|
34
44
|
private minMaxForRange;
|
|
35
45
|
private queryRangeMinMax;
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticDataset.d.ts","sourceRoot":"","sources":["../../src/core/StaticDataset.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StaticDataset.d.ts","sourceRoot":"","sources":["../../src/core/StaticDataset.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAErD,qBAAa,aAAc,YAAW,OAAO;IAEzC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADL,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EACxB,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC;IAG3C,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,KAAK,IAAI,SAAS,GAAG,IAAI,CAG5B;IAED,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK3B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAK3B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAI9B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAI9B,OAAO,CAAC,gBAAgB;CAKzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/core/search.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CASpG;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CASpG"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -27,8 +27,9 @@ export interface SeriesStyle {
|
|
|
27
27
|
readonly barWidth?: number;
|
|
28
28
|
readonly baseline?: number;
|
|
29
29
|
readonly fillColor?: readonly [number, number, number, number];
|
|
30
|
+
readonly tickWidth?: number;
|
|
30
31
|
}
|
|
31
|
-
export type SeriesMode = "line" | "area" | "envelope" | "scatter" | "bar";
|
|
32
|
+
export type SeriesMode = "line" | "area" | "envelope" | "scatter" | "bar" | "ohlc";
|
|
32
33
|
export interface Dataset {
|
|
33
34
|
readonly length: number;
|
|
34
35
|
readonly range: TimeRange | null;
|
|
@@ -43,12 +44,19 @@ export interface RangeMinMaxDataset extends Dataset {
|
|
|
43
44
|
maxY: number;
|
|
44
45
|
} | null;
|
|
45
46
|
}
|
|
47
|
+
export interface OhlcDataset extends Dataset {
|
|
48
|
+
getOpen(index: number): number;
|
|
49
|
+
getHigh(index: number): number;
|
|
50
|
+
getLow(index: number): number;
|
|
51
|
+
getClose(index: number): number;
|
|
52
|
+
}
|
|
46
53
|
export interface AppendableDataset extends Dataset {
|
|
47
54
|
push(x: number, y: number): void;
|
|
48
55
|
append(x: ArrayLike<number>, y: ArrayLike<number>): void;
|
|
49
56
|
clear(): void;
|
|
50
57
|
}
|
|
51
58
|
export type LODStrategy = "minmax" | "none";
|
|
59
|
+
export type BufferOverflowStrategy = "wrap" | "drop-new" | "error";
|
|
52
60
|
export interface SeriesSample {
|
|
53
61
|
readonly index: number;
|
|
54
62
|
readonly x: number;
|
|
@@ -59,6 +67,7 @@ export interface SeriesConfig {
|
|
|
59
67
|
readonly mode: SeriesMode;
|
|
60
68
|
readonly capacity: number;
|
|
61
69
|
readonly downsample?: LODStrategy;
|
|
70
|
+
readonly overflow?: BufferOverflowStrategy;
|
|
62
71
|
readonly dataset?: Dataset;
|
|
63
72
|
readonly id?: string;
|
|
64
73
|
readonly name?: string;
|
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;
|
|
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;CAC7B;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAEnF,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,kBAAmB,SAAQ,OAAO;IACjD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACjF;AAED,MAAM,WAAW,WAAY,SAAQ,OAAO;IAC1C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACjC;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;AAC5C,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,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,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,10 +5,13 @@ export type { ChartTheme, ResolvedChartTheme, RgbaColor, CssColor, ThemeColor }
|
|
|
5
5
|
export type { AxisPosition } from './ui/ChartLayout.js';
|
|
6
6
|
export { SeriesStore } from './core/SeriesStore.js';
|
|
7
7
|
export { RingBuffer } from './core/RingBuffer.js';
|
|
8
|
+
export type { RingBufferOptions, RingBufferOverflow } from './core/RingBuffer.js';
|
|
8
9
|
export { StaticDataset } from './core/StaticDataset.js';
|
|
10
|
+
export { OhlcRingBuffer, StaticOhlcDataset } from './core/OhlcDataset.js';
|
|
11
|
+
export type { OhlcRingBufferOptions } from './core/OhlcDataset.js';
|
|
9
12
|
export { MinMaxPyramid } from './core/MinMaxPyramid.js';
|
|
10
13
|
export { Camera2D } from './interaction/Camera2D.js';
|
|
11
14
|
export { AxisController } from './interaction/AxisController.js';
|
|
12
|
-
export type { Viewport, LODBucket, LODView, TimeRange, SeriesStyle, SeriesMode, SeriesConfig, SeriesSample, LODStrategy, Dataset, RangeMinMaxDataset, AppendableDataset } from './core/types.js';
|
|
15
|
+
export type { Viewport, LODBucket, LODView, TimeRange, SeriesStyle, SeriesMode, SeriesConfig, SeriesSample, LODStrategy, BufferOverflowStrategy, Dataset, OhlcDataset, RangeMinMaxDataset, AppendableDataset } from './core/types.js';
|
|
13
16
|
export type { PanIntent, ZoomAxis, ZoomIntent, ViewportPolicy } from './interaction/types.js';
|
|
14
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;AAC7O,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,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;
|
|
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,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,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,sBAAsB,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACtO,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
|