@perspective-dev/viewer-charts 4.5.2 → 5.0.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/dist/cdn/perspective-viewer-charts.js +2 -2
- package/dist/cdn/perspective-viewer-charts.js.map +3 -3
- package/dist/esm/charts/candlestick/candlestick.d.ts +8 -10
- package/dist/esm/charts/chart-base.d.ts +58 -4
- package/dist/esm/charts/chart.d.ts +45 -9
- package/dist/esm/charts/series/glyphs/draw-areas.d.ts +3 -2
- package/dist/esm/charts/series/glyphs/draw-bars.d.ts +8 -1
- package/dist/esm/charts/series/glyphs/draw-lines.d.ts +3 -2
- package/dist/esm/charts/series/glyphs/draw-scatter.d.ts +5 -2
- package/dist/esm/charts/series/series-build.d.ts +11 -0
- package/dist/esm/charts/series/series-interact.d.ts +10 -0
- package/dist/esm/charts/series/series-render.d.ts +17 -1
- package/dist/esm/charts/series/series.d.ts +53 -10
- package/dist/esm/data/view-reader.d.ts +10 -1
- package/dist/esm/event-detail.d.ts +7 -0
- package/dist/esm/layout/ticks.d.ts +5 -0
- package/dist/esm/perspective-viewer-charts.js +2 -2
- package/dist/esm/perspective-viewer-charts.js.map +3 -3
- package/dist/esm/plugin/charts.d.ts +6 -3
- package/dist/esm/plugin/plugin.d.ts +31 -2
- package/dist/esm/render/scheduler.d.ts +11 -8
- package/dist/esm/transport/protocol.d.ts +31 -2
- package/dist/esm/transport/renderer-transport.d.ts +74 -3
- package/dist/esm/webgl/instanced-attrs.d.ts +7 -1
- package/dist/esm/worker/renderer.worker.d.ts +12 -0
- package/package.json +1 -1
- package/src/ts/charts/candlestick/candlestick-render.ts +4 -1
- package/src/ts/charts/candlestick/candlestick.ts +12 -17
- package/src/ts/charts/cartesian/cartesian-render.ts +80 -63
- package/src/ts/charts/chart-base.ts +85 -5
- package/src/ts/charts/chart.ts +47 -9
- package/src/ts/charts/common/category-axis-resolver.ts +5 -1
- package/src/ts/charts/common/tree-data.ts +61 -16
- package/src/ts/charts/heatmap/heatmap-render.ts +6 -2
- package/src/ts/charts/series/glyphs/draw-areas.ts +10 -1
- package/src/ts/charts/series/glyphs/draw-bars.ts +30 -9
- package/src/ts/charts/series/glyphs/draw-lines.ts +10 -1
- package/src/ts/charts/series/glyphs/draw-scatter.ts +56 -3
- package/src/ts/charts/series/series-build.ts +21 -3
- package/src/ts/charts/series/series-interact.ts +86 -13
- package/src/ts/charts/series/series-render.ts +660 -17
- package/src/ts/charts/series/series.ts +96 -26
- package/src/ts/charts/sunburst/sunburst-interact.ts +2 -3
- package/src/ts/charts/sunburst/sunburst-render.ts +3 -1
- package/src/ts/charts/treemap/treemap-interact.ts +2 -5
- package/src/ts/charts/treemap/treemap-render.ts +3 -1
- package/src/ts/charts/treemap/treemap.ts +6 -1
- package/src/ts/data/view-reader.ts +22 -2
- package/src/ts/event-detail.ts +8 -0
- package/src/ts/index.ts +13 -7
- package/src/ts/interaction/raw-event-forwarder.ts +7 -0
- package/src/ts/interaction/zoom-controller.ts +8 -0
- package/src/ts/layout/ticks.ts +9 -0
- package/src/ts/plugin/charts.ts +20 -4
- package/src/ts/plugin/plugin.ts +86 -16
- package/src/ts/render/scheduler.ts +39 -13
- package/src/ts/transport/protocol.ts +33 -0
- package/src/ts/transport/renderer-transport.ts +185 -9
- package/src/ts/webgl/instanced-attrs.ts +15 -1
- package/src/ts/worker/dispatch.ts +4 -1
- package/src/ts/worker/renderer.worker.ts +32 -3
|
@@ -40,9 +40,12 @@ export function dispatch(r: WorkerRenderer, msg: ControlMsg): void {
|
|
|
40
40
|
case "redraw":
|
|
41
41
|
r.redraw();
|
|
42
42
|
break;
|
|
43
|
+
case "deselect":
|
|
44
|
+
r.chartImpl.deselect?.();
|
|
45
|
+
break;
|
|
43
46
|
case "resize":
|
|
44
47
|
r.resize(msg.cssWidth, msg.cssHeight, msg.dpr);
|
|
45
|
-
r.
|
|
48
|
+
r.redrawAck(msg.msgId);
|
|
46
49
|
break;
|
|
47
50
|
case "clear":
|
|
48
51
|
r.clear();
|
|
@@ -295,16 +295,23 @@ export class WorkerRenderer {
|
|
|
295
295
|
try {
|
|
296
296
|
await viewToColumnDataMap(
|
|
297
297
|
this.view,
|
|
298
|
-
async (cols) => {
|
|
298
|
+
async (cols, deliveredRows) => {
|
|
299
299
|
if (this._renderGen !== myGen) {
|
|
300
300
|
throw new StaleGenerationError();
|
|
301
301
|
}
|
|
302
302
|
|
|
303
|
+
// `totalRows` came from a SEPARATE `num_rows()`
|
|
304
|
+
// round-trip; a fast-updating table with deletions
|
|
305
|
+
// can shrink the view before the Arrow fetch, which
|
|
306
|
+
// clamps its window silently. Iterating to the stale
|
|
307
|
+
// count reads typed arrays out-of-bounds (`undefined`
|
|
308
|
+
// values no validity bitmap covers) — clamp to what
|
|
309
|
+
// was actually delivered.
|
|
303
310
|
await this.chartImpl.uploadAndRender(
|
|
304
311
|
this.glManager,
|
|
305
312
|
cols,
|
|
306
313
|
0,
|
|
307
|
-
totalRows,
|
|
314
|
+
Math.min(totalRows, deliveredRows),
|
|
308
315
|
);
|
|
309
316
|
},
|
|
310
317
|
{ end_row: totalRows, float32: msg.options.float32 },
|
|
@@ -327,6 +334,24 @@ export class WorkerRenderer {
|
|
|
327
334
|
this.chartImpl.requestRender(this.glManager);
|
|
328
335
|
}
|
|
329
336
|
|
|
337
|
+
/**
|
|
338
|
+
* `redraw`, acked to the host AFTER the frame's present completes —
|
|
339
|
+
* the reply backing the viewer's presize contract (`ResizeAckMsg`):
|
|
340
|
+
* `plugin.resize()` must not resolve until the resized frame is
|
|
341
|
+
* actually on screen. A resize landing mid-present defers its
|
|
342
|
+
* canvas mutation (`deferIfDraining`), but the redraw's own frame
|
|
343
|
+
* applies pending dimensions in `beginFrame`, so the present this
|
|
344
|
+
* awaits IS at the new size. Always acks — a failed present or a
|
|
345
|
+
* torn-down chart resolves the host's await rather than stranding
|
|
346
|
+
* it (completion, not success, is the contract).
|
|
347
|
+
*/
|
|
348
|
+
redrawAck(msgId: number): void {
|
|
349
|
+
this.chartImpl
|
|
350
|
+
.requestRender(this.glManager)
|
|
351
|
+
.catch(() => {})
|
|
352
|
+
.finally(() => this.post({ kind: "resizeAck", msgId }));
|
|
353
|
+
}
|
|
354
|
+
|
|
330
355
|
resize(cssWidth: number, cssHeight: number, dpr: number): void {
|
|
331
356
|
// `glManager.resize` would set `canvas.width = N`, which the
|
|
332
357
|
// spec mandates clears the drawing buffer immediately. In
|
|
@@ -572,7 +597,11 @@ export class WorkerRenderer {
|
|
|
572
597
|
// chart left the shared canvas at its own size) would render at
|
|
573
598
|
// the wrong dimensions.
|
|
574
599
|
this.glManager.beginFrame();
|
|
575
|
-
|
|
600
|
+
// `renderFrameSync` (not `_fullRender`) so the gridline + chrome
|
|
601
|
+
// 2D canvases are actually painted here — the scheduler normally
|
|
602
|
+
// defers those to a post-fence flush, but the snapshot path
|
|
603
|
+
// bypasses the scheduler and composites the 2D layers below.
|
|
604
|
+
this.chartImpl.renderFrameSync(this.glManager);
|
|
576
605
|
const gl = this.glManager.gl;
|
|
577
606
|
const glCanvas = gl.canvas as OffscreenCanvas;
|
|
578
607
|
const w = glCanvas.width;
|