@perspective-dev/viewer-charts 4.3.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/LICENSE.md +193 -0
- package/dist/cdn/perspective-viewer-charts.js +3 -0
- package/dist/cdn/perspective-viewer-charts.js.map +7 -0
- package/dist/esm/axis/axis-primitives.d.ts +24 -0
- package/dist/esm/axis/bar-axis.d.ts +51 -0
- package/dist/esm/axis/canvas.d.ts +24 -0
- package/dist/esm/axis/categorical-axis-core.d.ts +42 -0
- package/dist/esm/axis/categorical-axis.d.ts +27 -0
- package/dist/esm/axis/facet-chrome.d.ts +13 -0
- package/dist/esm/axis/label-geometry.d.ts +41 -0
- package/dist/esm/axis/legend.d.ts +44 -0
- package/dist/esm/axis/numeric-axis.d.ts +20 -0
- package/dist/esm/charts/candlestick/candlestick-build.d.ts +129 -0
- package/dist/esm/charts/candlestick/candlestick-interact.d.ts +10 -0
- package/dist/esm/charts/candlestick/candlestick-render.d.ts +24 -0
- package/dist/esm/charts/candlestick/candlestick.d.ts +144 -0
- package/dist/esm/charts/candlestick/glyphs/draw-candlesticks.d.ts +36 -0
- package/dist/esm/charts/candlestick/glyphs/draw-ohlc.d.ts +33 -0
- package/dist/esm/charts/canvas-types.d.ts +15 -0
- package/dist/esm/charts/cartesian/cartesian-build.d.ts +14 -0
- package/dist/esm/charts/cartesian/cartesian-interact.d.ts +20 -0
- package/dist/esm/charts/cartesian/cartesian-render.d.ts +26 -0
- package/dist/esm/charts/cartesian/cartesian.d.ts +239 -0
- package/dist/esm/charts/cartesian/glyph.d.ts +53 -0
- package/dist/esm/charts/cartesian/glyphs/density.d.ts +142 -0
- package/dist/esm/charts/cartesian/glyphs/lines.d.ts +23 -0
- package/dist/esm/charts/cartesian/glyphs/points.d.ts +24 -0
- package/dist/esm/charts/cartesian/label-interner.d.ts +21 -0
- package/dist/esm/charts/cartesian/tooltip-lines.d.ts +11 -0
- package/dist/esm/charts/chart-base.d.ts +402 -0
- package/dist/esm/charts/chart.d.ts +338 -0
- package/dist/esm/charts/common/band-layout.d.ts +32 -0
- package/dist/esm/charts/common/categorical-y-chart.d.ts +53 -0
- package/dist/esm/charts/common/category-axis-resolver.d.ts +90 -0
- package/dist/esm/charts/common/chrome-cache.d.ts +18 -0
- package/dist/esm/charts/common/draw-tooltip-box.d.ts +9 -0
- package/dist/esm/charts/common/leaf-color.d.ts +33 -0
- package/dist/esm/charts/common/node-store.d.ts +81 -0
- package/dist/esm/charts/common/tree-chart.d.ts +48 -0
- package/dist/esm/charts/common/tree-chrome.d.ts +31 -0
- package/dist/esm/charts/common/tree-data.d.ts +54 -0
- package/dist/esm/charts/common/visible-extent.d.ts +51 -0
- package/dist/esm/charts/heatmap/heatmap-build.d.ts +86 -0
- package/dist/esm/charts/heatmap/heatmap-interact.d.ts +19 -0
- package/dist/esm/charts/heatmap/heatmap-render.d.ts +19 -0
- package/dist/esm/charts/heatmap/heatmap-y-axis.d.ts +46 -0
- package/dist/esm/charts/heatmap/heatmap.d.ts +117 -0
- package/dist/esm/charts/map/map.d.ts +67 -0
- package/dist/esm/charts/registry.d.ts +14 -0
- package/dist/esm/charts/series/glyphs/draw-areas.d.ts +30 -0
- package/dist/esm/charts/series/glyphs/draw-bars.d.ts +15 -0
- package/dist/esm/charts/series/glyphs/draw-lines.d.ts +34 -0
- package/dist/esm/charts/series/glyphs/draw-scatter.d.ts +33 -0
- package/dist/esm/charts/series/series-build.d.ts +228 -0
- package/dist/esm/charts/series/series-interact.d.ts +35 -0
- package/dist/esm/charts/series/series-render.d.ts +41 -0
- package/dist/esm/charts/series/series-type.d.ts +49 -0
- package/dist/esm/charts/series/series.d.ts +317 -0
- package/dist/esm/charts/sunburst/sunburst-interact.d.ts +7 -0
- package/dist/esm/charts/sunburst/sunburst-layout.d.ts +33 -0
- package/dist/esm/charts/sunburst/sunburst-render.d.ts +22 -0
- package/dist/esm/charts/sunburst/sunburst.d.ts +85 -0
- package/dist/esm/charts/treemap/treemap-interact.d.ts +12 -0
- package/dist/esm/charts/treemap/treemap-layout.d.ts +28 -0
- package/dist/esm/charts/treemap/treemap-render.d.ts +18 -0
- package/dist/esm/charts/treemap/treemap.d.ts +74 -0
- package/dist/esm/config.d.ts +27 -0
- package/dist/esm/data/lazy-row.d.ts +32 -0
- package/dist/esm/data/split-groups.d.ts +20 -0
- package/dist/esm/data/view-reader.d.ts +35 -0
- package/dist/esm/event-detail.d.ts +28 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/interaction/hit-test.d.ts +30 -0
- package/dist/esm/interaction/host-sink-dom.d.ts +19 -0
- package/dist/esm/interaction/host-sink-message.d.ts +46 -0
- package/dist/esm/interaction/lazy-tooltip.d.ts +61 -0
- package/dist/esm/interaction/raw-event-forwarder.d.ts +27 -0
- package/dist/esm/interaction/spatial-grid.d.ts +15 -0
- package/dist/esm/interaction/tooltip-controller.d.ts +193 -0
- package/dist/esm/interaction/zoom-controller.d.ts +106 -0
- package/dist/esm/interaction/zoom-router.d.ts +48 -0
- package/dist/esm/layout/facet-grid.d.ts +126 -0
- package/dist/esm/layout/plot-layout.d.ts +104 -0
- package/dist/esm/layout/ticks.d.ts +17 -0
- package/dist/esm/map/mercator.d.ts +102 -0
- package/dist/esm/map/tile-cache.d.ts +38 -0
- package/dist/esm/map/tile-layer.d.ts +66 -0
- package/dist/esm/map/tile-loader.d.ts +52 -0
- package/dist/esm/map/tile-source.d.ts +66 -0
- package/dist/esm/perspective-viewer-charts.js +3 -0
- package/dist/esm/perspective-viewer-charts.js.map +7 -0
- package/dist/esm/plugin/charts.d.ts +40 -0
- package/dist/esm/plugin/plugin.d.ts +95 -0
- package/dist/esm/render/scheduler.d.ts +41 -0
- package/dist/esm/theme/gradient.d.ts +48 -0
- package/dist/esm/theme/palette.d.ts +13 -0
- package/dist/esm/theme/theme-snapshot.d.ts +7 -0
- package/dist/esm/theme/theme.d.ts +53 -0
- package/dist/esm/transport/protocol.d.ts +430 -0
- package/dist/esm/transport/renderer-transport.d.ts +201 -0
- package/dist/esm/utils/css.d.ts +1 -0
- package/dist/esm/utils/font-snapshot.d.ts +50 -0
- package/dist/esm/webgl/buffer-pool.d.ts +62 -0
- package/dist/esm/webgl/context-manager.d.ts +184 -0
- package/dist/esm/webgl/gradient-texture.d.ts +17 -0
- package/dist/esm/webgl/instanced-attrs.d.ts +44 -0
- package/dist/esm/webgl/plot-frame.d.ts +39 -0
- package/dist/esm/webgl/program-cache.d.ts +13 -0
- package/dist/esm/webgl/shader-manifest.d.ts +53 -0
- package/dist/esm/webgl/shader-registry.d.ts +22 -0
- package/dist/esm/worker/boot.d.ts +0 -0
- package/dist/esm/worker/dispatch.d.ts +9 -0
- package/dist/esm/worker/font-loader.d.ts +2 -0
- package/dist/esm/worker/renderer.worker.d.ts +115 -0
- package/dist/esm/worker/session-host.d.ts +26 -0
- package/package.json +47 -0
- package/src/css/perspective-viewer-charts.css +95 -0
- package/src/ts/axis/axis-primitives.ts +125 -0
- package/src/ts/axis/bar-axis.ts +345 -0
- package/src/ts/axis/canvas.ts +64 -0
- package/src/ts/axis/categorical-axis-core.ts +125 -0
- package/src/ts/axis/categorical-axis.ts +716 -0
- package/src/ts/axis/facet-chrome.ts +42 -0
- package/src/ts/axis/label-geometry.ts +188 -0
- package/src/ts/axis/legend.ts +218 -0
- package/src/ts/axis/numeric-axis.ts +353 -0
- package/src/ts/charts/candlestick/candlestick-build.ts +516 -0
- package/src/ts/charts/candlestick/candlestick-interact.ts +256 -0
- package/src/ts/charts/candlestick/candlestick-render.ts +387 -0
- package/src/ts/charts/candlestick/candlestick.ts +367 -0
- package/src/ts/charts/candlestick/glyphs/draw-candlesticks.ts +432 -0
- package/src/ts/charts/candlestick/glyphs/draw-ohlc.ts +317 -0
- package/src/ts/charts/canvas-types.ts +30 -0
- package/src/ts/charts/cartesian/cartesian-build.ts +616 -0
- package/src/ts/charts/cartesian/cartesian-interact.ts +355 -0
- package/src/ts/charts/cartesian/cartesian-render.ts +948 -0
- package/src/ts/charts/cartesian/cartesian.ts +469 -0
- package/src/ts/charts/cartesian/glyph.ts +81 -0
- package/src/ts/charts/cartesian/glyphs/density.ts +1263 -0
- package/src/ts/charts/cartesian/glyphs/lines.ts +320 -0
- package/src/ts/charts/cartesian/glyphs/points.ts +239 -0
- package/src/ts/charts/cartesian/label-interner.ts +56 -0
- package/src/ts/charts/cartesian/tooltip-lines.ts +80 -0
- package/src/ts/charts/chart-base.ts +840 -0
- package/src/ts/charts/chart.ts +427 -0
- package/src/ts/charts/common/band-layout.ts +63 -0
- package/src/ts/charts/common/categorical-y-chart.ts +81 -0
- package/src/ts/charts/common/category-axis-resolver.ts +314 -0
- package/src/ts/charts/common/chrome-cache.ts +79 -0
- package/src/ts/charts/common/draw-tooltip-box.ts +84 -0
- package/src/ts/charts/common/leaf-color.ts +92 -0
- package/src/ts/charts/common/node-store.ts +235 -0
- package/src/ts/charts/common/tree-chart.ts +76 -0
- package/src/ts/charts/common/tree-chrome.ts +123 -0
- package/src/ts/charts/common/tree-data.ts +623 -0
- package/src/ts/charts/common/visible-extent.ts +112 -0
- package/src/ts/charts/heatmap/heatmap-build.ts +426 -0
- package/src/ts/charts/heatmap/heatmap-interact.ts +274 -0
- package/src/ts/charts/heatmap/heatmap-render.ts +815 -0
- package/src/ts/charts/heatmap/heatmap-y-axis.ts +351 -0
- package/src/ts/charts/heatmap/heatmap.ts +368 -0
- package/src/ts/charts/map/map.ts +201 -0
- package/src/ts/charts/registry.ts +65 -0
- package/src/ts/charts/series/glyphs/draw-areas.ts +331 -0
- package/src/ts/charts/series/glyphs/draw-bars.ts +113 -0
- package/src/ts/charts/series/glyphs/draw-lines.ts +320 -0
- package/src/ts/charts/series/glyphs/draw-scatter.ts +328 -0
- package/src/ts/charts/series/series-build.ts +848 -0
- package/src/ts/charts/series/series-interact.ts +604 -0
- package/src/ts/charts/series/series-render.ts +1109 -0
- package/src/ts/charts/series/series-type.ts +99 -0
- package/src/ts/charts/series/series.ts +794 -0
- package/src/ts/charts/sunburst/sunburst-interact.ts +460 -0
- package/src/ts/charts/sunburst/sunburst-layout.ts +238 -0
- package/src/ts/charts/sunburst/sunburst-render.ts +887 -0
- package/src/ts/charts/sunburst/sunburst.ts +248 -0
- package/src/ts/charts/treemap/treemap-interact.ts +445 -0
- package/src/ts/charts/treemap/treemap-layout.ts +328 -0
- package/src/ts/charts/treemap/treemap-render.ts +886 -0
- package/src/ts/charts/treemap/treemap.ts +247 -0
- package/src/ts/config.ts +41 -0
- package/src/ts/data/lazy-row.ts +140 -0
- package/src/ts/data/split-groups.ts +97 -0
- package/src/ts/data/view-reader.ts +107 -0
- package/src/ts/event-detail.ts +44 -0
- package/src/ts/index.ts +53 -0
- package/src/ts/interaction/hit-test.ts +106 -0
- package/src/ts/interaction/host-sink-dom.ts +85 -0
- package/src/ts/interaction/host-sink-message.ts +75 -0
- package/src/ts/interaction/lazy-tooltip.ts +102 -0
- package/src/ts/interaction/raw-event-forwarder.ts +175 -0
- package/src/ts/interaction/spatial-grid.ts +100 -0
- package/src/ts/interaction/tooltip-controller.ts +407 -0
- package/src/ts/interaction/zoom-controller.ts +468 -0
- package/src/ts/interaction/zoom-router.ts +230 -0
- package/src/ts/layout/facet-grid.ts +346 -0
- package/src/ts/layout/plot-layout.ts +277 -0
- package/src/ts/layout/ticks.ts +168 -0
- package/src/ts/map/mercator.ts +204 -0
- package/src/ts/map/tile-cache.ts +96 -0
- package/src/ts/map/tile-layer.ts +382 -0
- package/src/ts/map/tile-loader.ts +143 -0
- package/src/ts/map/tile-source.ts +156 -0
- package/src/ts/plugin/charts.ts +286 -0
- package/src/ts/plugin/plugin.ts +668 -0
- package/src/ts/render/scheduler.ts +339 -0
- package/src/ts/shaders/area.frag.glsl +20 -0
- package/src/ts/shaders/area.vert.glsl +19 -0
- package/src/ts/shaders/bar.frag.glsl +25 -0
- package/src/ts/shaders/bar.vert.glsl +60 -0
- package/src/ts/shaders/candlestick-body.frag.glsl +19 -0
- package/src/ts/shaders/candlestick-body.vert.glsl +34 -0
- package/src/ts/shaders/density-extreme.frag.glsl +30 -0
- package/src/ts/shaders/density-mrt.frag.glsl +44 -0
- package/src/ts/shaders/density-mrt.vert.glsl +48 -0
- package/src/ts/shaders/density-resolve.frag.glsl +89 -0
- package/src/ts/shaders/density-resolve.vert.glsl +23 -0
- package/src/ts/shaders/density-splat.frag.glsl +34 -0
- package/src/ts/shaders/density-splat.vert.glsl +52 -0
- package/src/ts/shaders/gridline.frag.glsl +18 -0
- package/src/ts/shaders/gridline.vert.glsl +18 -0
- package/src/ts/shaders/heatmap.frag.glsl +23 -0
- package/src/ts/shaders/heatmap.vert.glsl +42 -0
- package/src/ts/shaders/line-uniform.frag.glsl +26 -0
- package/src/ts/shaders/line-uniform.vert.glsl +54 -0
- package/src/ts/shaders/line.frag.glsl +28 -0
- package/src/ts/shaders/line.vert.glsl +87 -0
- package/src/ts/shaders/scatter.frag.glsl +39 -0
- package/src/ts/shaders/scatter.vert.glsl +67 -0
- package/src/ts/shaders/sunburst-arc.frag.glsl +19 -0
- package/src/ts/shaders/sunburst-arc.vert.glsl +79 -0
- package/src/ts/shaders/tile.frag.glsl +27 -0
- package/src/ts/shaders/tile.vert.glsl +35 -0
- package/src/ts/shaders/treemap.frag.glsl +19 -0
- package/src/ts/shaders/treemap.vert.glsl +25 -0
- package/src/ts/shaders/y-scatter.frag.glsl +30 -0
- package/src/ts/shaders/y-scatter.vert.glsl +31 -0
- package/src/ts/theme/gradient.ts +312 -0
- package/src/ts/theme/palette.ts +64 -0
- package/src/ts/theme/theme-snapshot.ts +66 -0
- package/src/ts/theme/theme.ts +166 -0
- package/src/ts/transport/protocol.ts +497 -0
- package/src/ts/transport/renderer-transport.ts +788 -0
- package/src/ts/utils/css.ts +36 -0
- package/src/ts/utils/font-snapshot.ts +159 -0
- package/src/ts/webgl/buffer-pool.ts +163 -0
- package/src/ts/webgl/context-manager.ts +414 -0
- package/src/ts/webgl/gradient-texture.ts +84 -0
- package/src/ts/webgl/instanced-attrs.ts +139 -0
- package/src/ts/webgl/plot-frame.ts +91 -0
- package/src/ts/webgl/program-cache.ts +46 -0
- package/src/ts/webgl/shader-manifest.ts +148 -0
- package/src/ts/webgl/shader-registry.ts +97 -0
- package/src/ts/worker/boot.ts +22 -0
- package/src/ts/worker/dispatch.ts +99 -0
- package/src/ts/worker/font-loader.ts +89 -0
- package/src/ts/worker/renderer.worker.ts +734 -0
- package/src/ts/worker/session-host.ts +118 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { PluginConfig } from "../charts/chart";
|
|
2
|
+
export type ChartType = "bar" | "line" | "scatter" | "area";
|
|
3
|
+
export type PluginChartType = ChartType | "candlestick" | "ohlc";
|
|
4
|
+
/**
|
|
5
|
+
* Subset of `PluginConfig` keys that a chart impl actually consumes.
|
|
6
|
+
* Drives `plugin_config_schema()` filtering — the host only renders
|
|
7
|
+
* the controls listed here, and `plugin.restore({ plugin_config })`
|
|
8
|
+
* still hands the full struct to the worker (other keys are inert).
|
|
9
|
+
*/
|
|
10
|
+
export type PluginConfigField = keyof PluginConfig;
|
|
11
|
+
export interface ChartTypeConfig {
|
|
12
|
+
name: string;
|
|
13
|
+
tag: string;
|
|
14
|
+
category: string;
|
|
15
|
+
selectMode: "select" | "toggle";
|
|
16
|
+
initial: {
|
|
17
|
+
count: number;
|
|
18
|
+
names: string[];
|
|
19
|
+
};
|
|
20
|
+
max_cells: number;
|
|
21
|
+
max_columns: number;
|
|
22
|
+
default_chart_type?: PluginChartType;
|
|
23
|
+
/**
|
|
24
|
+
* Plugin-config keys this chart type renders controls for. Empty
|
|
25
|
+
* for plugins with no global settings (heatmap / treemap /
|
|
26
|
+
* sunburst). See {@link PluginConfig} for field semantics.
|
|
27
|
+
*/
|
|
28
|
+
applicable_plugin_fields: readonly PluginConfigField[];
|
|
29
|
+
/**
|
|
30
|
+
* Per-chart-type overrides for `DEFAULT_PLUGIN_CONFIG`. Used when a
|
|
31
|
+
* field's sensible default differs by chart family — currently
|
|
32
|
+
* `include_zero` (true for Y Bar / Y Area / X Bar, false for line
|
|
33
|
+
* / scatter / cartesian / financial). Applied at schema generation
|
|
34
|
+
* and at `restore({})` so the effective default matches the
|
|
35
|
+
* surfaced UI default.
|
|
36
|
+
*/
|
|
37
|
+
plugin_field_defaults?: Partial<PluginConfig>;
|
|
38
|
+
}
|
|
39
|
+
declare const CHARTS: ChartTypeConfig[];
|
|
40
|
+
export default CHARTS;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { View } from "@perspective-dev/client";
|
|
2
|
+
import type { IPerspectiveViewerPlugin, PluginStaticConfig } from "@perspective-dev/viewer";
|
|
3
|
+
import { ChartTypeConfig } from "./charts";
|
|
4
|
+
export declare class HTMLPerspectiveViewerWebGLPluginElement extends HTMLElement implements IPerspectiveViewerPlugin {
|
|
5
|
+
_chartType: ChartTypeConfig;
|
|
6
|
+
private _initialized;
|
|
7
|
+
private _glCanvas;
|
|
8
|
+
private _gridlineCanvas;
|
|
9
|
+
private _chromeCanvas;
|
|
10
|
+
private _renderer;
|
|
11
|
+
private _rendererPromise;
|
|
12
|
+
private _rawEventForwarder;
|
|
13
|
+
private _generation;
|
|
14
|
+
private _renderBlitMode;
|
|
15
|
+
private _resetClickAbort;
|
|
16
|
+
/**
|
|
17
|
+
* Plugin-scoped global config. Seeded lazily from
|
|
18
|
+
* `_effectiveDefaults()` (which folds
|
|
19
|
+
* `_chartType.plugin_field_defaults` over `DEFAULT_PLUGIN_CONFIG`)
|
|
20
|
+
* because base-class field initializers run before the subclass
|
|
21
|
+
* `_chartType` assignment. `restore({ plugin_config })` merges
|
|
22
|
+
* incoming values on top of the same effective defaults so fields
|
|
23
|
+
* the host omits fall back to the chart-type default
|
|
24
|
+
* (`include_zero = true` for Y Bar / Y Area / X Bar, `false`
|
|
25
|
+
* elsewhere). Held on the element (not just inside the worker) so
|
|
26
|
+
* a `_buildRenderer` triggered after a `restore` ships the
|
|
27
|
+
* resolved values in the `InitMsg`.
|
|
28
|
+
*/
|
|
29
|
+
private _pluginConfigStore;
|
|
30
|
+
private get _pluginConfig();
|
|
31
|
+
private set _pluginConfig(value);
|
|
32
|
+
private _effectiveDefaults;
|
|
33
|
+
connectedCallback(): void;
|
|
34
|
+
private _buildCanvasStack;
|
|
35
|
+
private _clearCanvasStack;
|
|
36
|
+
/**
|
|
37
|
+
* Fires when the host (`<perspective-viewer>`) removes this plugin
|
|
38
|
+
* from the DOM on chart-type switch — see
|
|
39
|
+
* `renderer/activate.rs::remove_inactive_plugin`. Without this,
|
|
40
|
+
* inactive plugin instances retain their `RendererTransport`
|
|
41
|
+
* (worker + WebGL context + compiled shader programs) until the
|
|
42
|
+
* entire viewer is torn down, so a user cycling all 12 chart kinds
|
|
43
|
+
* holds 12 GL contexts per viewer and routinely exceeds the
|
|
44
|
+
* browser's per-page context cap (~16) in workspaces.
|
|
45
|
+
*/
|
|
46
|
+
disconnectedCallback(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Lazy renderer construction. Memoizes the in-flight `init()`
|
|
49
|
+
* promise so concurrent `draw()` calls during async setup await
|
|
50
|
+
* the same initialization rather than racing.
|
|
51
|
+
*/
|
|
52
|
+
private _ensureRenderer;
|
|
53
|
+
/**
|
|
54
|
+
* Capture raw DOM events on the GL canvas with `RawEventForwarder`
|
|
55
|
+
* and post them over the control channel. The renderer dispatches
|
|
56
|
+
* them through its own resolver + `applyWheel` / `applyPan` for
|
|
57
|
+
* zoom/pan, and through `TooltipController` virtual dispatch for
|
|
58
|
+
* hover/click; `zoomChanged` updates push back so the reset-zoom
|
|
59
|
+
* button visibility tracks the renderer-side state.
|
|
60
|
+
*
|
|
61
|
+
* The `zoomChanged` callback was wired at `RendererTransport`
|
|
62
|
+
* construction time; here we just attach the event forwarder and
|
|
63
|
+
* the reset-button click handler.
|
|
64
|
+
*/
|
|
65
|
+
private _setupInteraction;
|
|
66
|
+
private _buildRenderer;
|
|
67
|
+
setBlitMode(mode: "direct" | "blit"): void;
|
|
68
|
+
get_static_config(): PluginStaticConfig;
|
|
69
|
+
column_config_schema(column_type: string, _group: string | undefined, _column_name: string, current_value: Record<string, unknown> | null, _viewer_config?: {
|
|
70
|
+
group_by?: string[];
|
|
71
|
+
group_rollup_mode?: string;
|
|
72
|
+
}): {
|
|
73
|
+
fields: (Record<string, unknown> & {
|
|
74
|
+
kind: string;
|
|
75
|
+
})[];
|
|
76
|
+
};
|
|
77
|
+
plugin_config_schema(_view_config?: {
|
|
78
|
+
group_by?: string[];
|
|
79
|
+
group_rollup_mode?: string;
|
|
80
|
+
}): {
|
|
81
|
+
fields: (Record<string, unknown> & {
|
|
82
|
+
kind: string;
|
|
83
|
+
})[];
|
|
84
|
+
};
|
|
85
|
+
draw(view: View): Promise<void>;
|
|
86
|
+
update(view: View): Promise<void>;
|
|
87
|
+
private _drawImpl;
|
|
88
|
+
clear(): Promise<void>;
|
|
89
|
+
resize(): Promise<void>;
|
|
90
|
+
restyle(): number;
|
|
91
|
+
save(): any;
|
|
92
|
+
render(view: View): Promise<Blob>;
|
|
93
|
+
restore(config: any, columns_config?: Record<string, any>): void;
|
|
94
|
+
delete(): void;
|
|
95
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { WebGLContextManager } from "../webgl/context-manager";
|
|
2
|
+
/**
|
|
3
|
+
* Request a coalesced render of `glManager` whose body is
|
|
4
|
+
* `fullRender`. Returns a promise that resolves when this entry's
|
|
5
|
+
* Phase 2 (`awaitGpuFence` + `endFrame`) completes.
|
|
6
|
+
*
|
|
7
|
+
* If a request is already pending for the same glManager, the new
|
|
8
|
+
* call's `fullRender` closure replaces the prior one (latest call
|
|
9
|
+
* wins; closures read chart state lazily so this is functionally a
|
|
10
|
+
* no-op, but keeps the closure fresh) and the returned promise
|
|
11
|
+
* resolves alongside the existing waiters.
|
|
12
|
+
*/
|
|
13
|
+
export declare function requestRender(glManager: WebGLContextManager, fullRender: () => void): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Run `op` synchronously if no drain `present()` is currently active
|
|
16
|
+
* for `glManager`. Otherwise queue `op` to run as soon as that
|
|
17
|
+
* glManager's in-flight `present()` completes (after `endFrame`,
|
|
18
|
+
* after the resolved/rejected waiters).
|
|
19
|
+
*
|
|
20
|
+
* Used by canvas-mutating callers — `WorkerRenderer.resize`,
|
|
21
|
+
* `WorkerRenderer.clear` — to avoid wiping the offscreen between
|
|
22
|
+
* Phase 1 paint and Phase 2 `endFrame`. `glManager.resize` setting
|
|
23
|
+
* `canvas.width = N` clears the drawing buffer immediately
|
|
24
|
+
* (per the WebGL spec, out-of-band from the GL command queue), and
|
|
25
|
+
* a clear that lands in Phase 2's fence-wait yield window corrupts
|
|
26
|
+
* the bitmap that `transferToImageBitmap` ships, producing a blank
|
|
27
|
+
* frame on the host.
|
|
28
|
+
*
|
|
29
|
+
* Deferred ops execute in `present()`'s `finally` clause, so they
|
|
30
|
+
* land *after* the in-flight drain's bitmap has been shipped and
|
|
31
|
+
* before the next drain starts. If a deferred op itself triggers a
|
|
32
|
+
* `requestRender`, the resulting entry queues into `pending` and
|
|
33
|
+
* the drain's tail check (`pending.size > 0 → scheduleFrame(drain)`)
|
|
34
|
+
* picks it up for the next RAF.
|
|
35
|
+
*/
|
|
36
|
+
export declare function deferIfDraining(glManager: WebGLContextManager, op: () => void): void;
|
|
37
|
+
/**
|
|
38
|
+
* Test-only: clear pending state. Production callers must not use
|
|
39
|
+
* this — outstanding waiters are silently dropped.
|
|
40
|
+
*/
|
|
41
|
+
export declare function _resetForTest(): void;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A single stop on a parsed CSS gradient. `offset` ∈ [0, 1].
|
|
3
|
+
*/
|
|
4
|
+
export interface GradientStop {
|
|
5
|
+
offset: number;
|
|
6
|
+
color: [number, number, number, number];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Parse a `linear-gradient(...)` CSS expression into ordered stops. Tolerates
|
|
10
|
+
* missing percentages (distributes linearly between known offsets, matching
|
|
11
|
+
* the CSS standard) and leading direction tokens (`to right`, `90deg`, etc.)
|
|
12
|
+
* which are simply skipped.
|
|
13
|
+
*
|
|
14
|
+
* Returns the default blue → orange two-stop on any parse failure so themes
|
|
15
|
+
* that never set the gradient still produce sane output.
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseCssGradient(src: string | null | undefined): GradientStop[];
|
|
18
|
+
/**
|
|
19
|
+
* Piecewise-linear color sample at `t ∈ [0, 1]`. Returns RGBA in [0, 1].
|
|
20
|
+
* Clamps `t` to the gradient's first/last stop outside `[0, 1]`.
|
|
21
|
+
*/
|
|
22
|
+
export declare function sampleGradient(stops: GradientStop[], t: number): [number, number, number, number];
|
|
23
|
+
/**
|
|
24
|
+
* Sign-aware normalization. Returns `t ∈ [0, 1]` where the 50% stop is
|
|
25
|
+
* always the sign pivot:
|
|
26
|
+
* - crosses zero → `[-maxAbs, maxAbs]` stretched symmetrically; 0 → 0.5.
|
|
27
|
+
* - all-positive → `[0, colorMax]` occupies top half `[0.5, 1]`.
|
|
28
|
+
* - all-negative → `[colorMin, 0]` occupies bottom half `[0, 0.5]`.
|
|
29
|
+
* - degenerate → 0.5 (single colour at the midpoint).
|
|
30
|
+
*/
|
|
31
|
+
export declare function colorValueToT(value: number, colorMin: number, colorMax: number): number;
|
|
32
|
+
/**
|
|
33
|
+
* Convert a discrete series palette (from `--psp-charts--series-N--color`)
|
|
34
|
+
* into a `GradientStop[]` with stops at `i / (N - 1)`. The resulting
|
|
35
|
+
* stops can feed `buildGradientLUT` / `ensureGradientTexture` / any
|
|
36
|
+
* other code path that already accepts a gradient — so categorical
|
|
37
|
+
* coloring and numeric gradients share one LUT pipeline. Integer idx
|
|
38
|
+
* sampling via `t = idx / (N - 1)` lands exactly on a palette color;
|
|
39
|
+
* the linear blend between stops is only hit by non-integer samples
|
|
40
|
+
* (which categorical data doesn't produce).
|
|
41
|
+
*/
|
|
42
|
+
export declare function paletteToStops(palette: [number, number, number][]): GradientStop[];
|
|
43
|
+
/**
|
|
44
|
+
* Bake a sampled LUT for GPU upload as RGBA8 (`size × 1`). Default 256
|
|
45
|
+
* samples — visually indistinguishable from a denser sample at typical
|
|
46
|
+
* viewport sizes and keeps the texture tiny (1 KB).
|
|
47
|
+
*/
|
|
48
|
+
export declare function buildGradientLUT(stops: GradientStop[], size?: number): Uint8Array;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type GradientStop } from "./gradient";
|
|
2
|
+
export type Vec3 = [number, number, number];
|
|
3
|
+
/**
|
|
4
|
+
* Build a series palette of length `count` by sampling the theme gradient
|
|
5
|
+
* at evenly-spaced offsets. For count == 1 returns the 50% stop.
|
|
6
|
+
*/
|
|
7
|
+
export declare function interpolatePalette(stops: GradientStop[], count: number): Vec3[];
|
|
8
|
+
/**
|
|
9
|
+
* Resolve a series palette: use the discrete `--psp-charts--series-N--color`
|
|
10
|
+
* palette when available, otherwise fall back to evenly-spaced samples of
|
|
11
|
+
* the theme gradient.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolvePalette(discrete: Vec3[], stops: GradientStop[], count: number): Vec3[];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ThemeSnapshot } from "./theme";
|
|
2
|
+
/**
|
|
3
|
+
* Capture every CSS variable the renderer cares about into a
|
|
4
|
+
* structured-cloneable map. Series-palette colours are walked until the
|
|
5
|
+
* first missing var.
|
|
6
|
+
*/
|
|
7
|
+
export declare function snapshotThemeVars(el: Element): ThemeSnapshot;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type GradientStop } from "./gradient";
|
|
2
|
+
export type { GradientStop } from "./gradient";
|
|
3
|
+
export interface Theme {
|
|
4
|
+
fontFamily: string;
|
|
5
|
+
tickColor: string;
|
|
6
|
+
labelColor: string;
|
|
7
|
+
axisLineColor: string;
|
|
8
|
+
gridlineColor: string;
|
|
9
|
+
backgroundColor: string;
|
|
10
|
+
gradientStops: GradientStop[];
|
|
11
|
+
legendText: string;
|
|
12
|
+
legendBorder: string;
|
|
13
|
+
tooltipBg: string;
|
|
14
|
+
tooltipText: string;
|
|
15
|
+
tooltipBorder: string;
|
|
16
|
+
/**
|
|
17
|
+
* Fill opacity for area glyphs. `--psp-charts--area--opacity`.
|
|
18
|
+
*/
|
|
19
|
+
areaOpacity: number;
|
|
20
|
+
/**
|
|
21
|
+
* Pixel gap between heatmap cells. Controls the inset applied in the
|
|
22
|
+
* heatmap vertex shader so neighbouring cells remain visually
|
|
23
|
+
* distinguishable. `--psp-charts--heatmap-gap--px`.
|
|
24
|
+
*/
|
|
25
|
+
heatmapGapPx: number;
|
|
26
|
+
/**
|
|
27
|
+
* Pixel gap between sunburst arcs (both radial — between ring
|
|
28
|
+
* levels — and angular — between siblings). Works the same way as
|
|
29
|
+
* `heatmapGapPx`: a symmetric inset in the vertex shader so the
|
|
30
|
+
* transparent background shows through as a border.
|
|
31
|
+
* `--psp-charts--sunburst-gap--px`.
|
|
32
|
+
*/
|
|
33
|
+
sunburstGapPx: number;
|
|
34
|
+
/**
|
|
35
|
+
* Discrete series palette read from `--psp-charts--series-N--color`
|
|
36
|
+
* (N = 1, 2, …). Empty when no palette is defined — callers should
|
|
37
|
+
* fall back to `gradientStops` sampling in that case.
|
|
38
|
+
*/
|
|
39
|
+
seriesPalette: [number, number, number][];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Plain map of CSS variable name → resolved value. Produced on the
|
|
43
|
+
* main thread via `snapshotThemeVars` and shipped to the worker
|
|
44
|
+
* Renderer (which has no DOM and can't call `getComputedStyle`).
|
|
45
|
+
*/
|
|
46
|
+
export type ThemeSnapshot = Record<string, string>;
|
|
47
|
+
/**
|
|
48
|
+
* Decode a `ThemeSnapshot` into the parsed `Theme` the renderer
|
|
49
|
+
* consumes. Workers reach this from a serialized snapshot; host code
|
|
50
|
+
* snapshots from the live DOM via `theme-snapshot.ts` and feeds it
|
|
51
|
+
* through here.
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolveThemeFromVars(vars: ThemeSnapshot): Theme;
|