@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,286 @@
|
|
|
1
|
+
// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
2
|
+
// ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
|
|
3
|
+
// ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
|
|
4
|
+
// ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
|
|
5
|
+
// ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
|
|
6
|
+
// ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
|
|
7
|
+
// ┃ Copyright (c) 2017, the Perspective Authors. ┃
|
|
8
|
+
// ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
|
|
9
|
+
// ┃ This file is part of the Perspective library, distributed under the terms ┃
|
|
10
|
+
// ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
|
|
11
|
+
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
12
|
+
|
|
13
|
+
import type { PluginConfig } from "../charts/chart";
|
|
14
|
+
|
|
15
|
+
export type ChartType = "bar" | "line" | "scatter" | "area";
|
|
16
|
+
|
|
17
|
+
export type PluginChartType = ChartType | "candlestick" | "ohlc";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Subset of `PluginConfig` keys that a chart impl actually consumes.
|
|
21
|
+
* Drives `plugin_config_schema()` filtering — the host only renders
|
|
22
|
+
* the controls listed here, and `plugin.restore({ plugin_config })`
|
|
23
|
+
* still hands the full struct to the worker (other keys are inert).
|
|
24
|
+
*/
|
|
25
|
+
export type PluginConfigField = keyof PluginConfig;
|
|
26
|
+
|
|
27
|
+
export interface ChartTypeConfig {
|
|
28
|
+
name: string;
|
|
29
|
+
tag: string;
|
|
30
|
+
category: string;
|
|
31
|
+
selectMode: "select" | "toggle";
|
|
32
|
+
initial: {
|
|
33
|
+
count: number;
|
|
34
|
+
names: string[];
|
|
35
|
+
};
|
|
36
|
+
max_cells: number;
|
|
37
|
+
max_columns: number;
|
|
38
|
+
default_chart_type?: PluginChartType;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Plugin-config keys this chart type renders controls for. Empty
|
|
42
|
+
* for plugins with no global settings (heatmap / treemap /
|
|
43
|
+
* sunburst). See {@link PluginConfig} for field semantics.
|
|
44
|
+
*/
|
|
45
|
+
applicable_plugin_fields: readonly PluginConfigField[];
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Per-chart-type overrides for `DEFAULT_PLUGIN_CONFIG`. Used when a
|
|
49
|
+
* field's sensible default differs by chart family — currently
|
|
50
|
+
* `include_zero` (true for Y Bar / Y Area / X Bar, false for line
|
|
51
|
+
* / scatter / cartesian / financial). Applied at schema generation
|
|
52
|
+
* and at `restore({})` so the effective default matches the
|
|
53
|
+
* surfaced UI default.
|
|
54
|
+
*/
|
|
55
|
+
plugin_field_defaults?: Partial<PluginConfig>;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const SERIES = "Series Charts";
|
|
59
|
+
const CART = "Cartesian Charts";
|
|
60
|
+
const HIER = "Hierarchical Charts";
|
|
61
|
+
const FIN = "Financial Charts";
|
|
62
|
+
const MAP = "Map Charts";
|
|
63
|
+
const X_AXIS = ["X Axis"];
|
|
64
|
+
const Y_AXIS = ["Y Axis"];
|
|
65
|
+
const SELECT = "select";
|
|
66
|
+
const TOGGLE = "toggle";
|
|
67
|
+
|
|
68
|
+
const DEFAULT_MAX_CELLS = 2_000_000;
|
|
69
|
+
const DEFAULT_MAX_COLUMNS = 10_000;
|
|
70
|
+
|
|
71
|
+
// Plugin-config field sets, by chart family.
|
|
72
|
+
//
|
|
73
|
+
// Series charts paint bars / lines / scatter / area glyphs (selected
|
|
74
|
+
// per-column via `chart_type`), so the union covers every glyph that
|
|
75
|
+
// might appear. `auto_alt_y_axis` + `series_zoom_mode` are Series-only.
|
|
76
|
+
const SERIES_FIELDS: readonly PluginConfigField[] = [
|
|
77
|
+
"auto_alt_y_axis",
|
|
78
|
+
"facet_mode",
|
|
79
|
+
"series_zoom_mode",
|
|
80
|
+
"include_zero",
|
|
81
|
+
"domain_mode",
|
|
82
|
+
"line_width_px",
|
|
83
|
+
"point_size_px",
|
|
84
|
+
"band_inner_frac",
|
|
85
|
+
"bar_inner_pad",
|
|
86
|
+
];
|
|
87
|
+
|
|
88
|
+
// Bar / area series glyphs grow from the zero baseline, so the value
|
|
89
|
+
// axis must enclose 0 to render correctly. Line / scatter glyphs have
|
|
90
|
+
// no such constraint — their default `include_zero` stays `false`.
|
|
91
|
+
const ZERO_ANCHORED_DEFAULTS: Partial<PluginConfig> = { include_zero: true };
|
|
92
|
+
|
|
93
|
+
// Pure Cartesian (X/Y Scatter, X/Y Line) — no categorical axis, so no
|
|
94
|
+
// band geometry; gets the facet-routing variant of zoom_mode.
|
|
95
|
+
const CARTESIAN_FIELDS: readonly PluginConfigField[] = [
|
|
96
|
+
"facet_mode",
|
|
97
|
+
"facet_zoom_mode",
|
|
98
|
+
"domain_mode",
|
|
99
|
+
"line_width_px",
|
|
100
|
+
"point_size_px",
|
|
101
|
+
];
|
|
102
|
+
|
|
103
|
+
// Candlestick/OHLC share the categorical-X build pipeline (band slots)
|
|
104
|
+
// and add their two stroke widths.
|
|
105
|
+
const FIN_FIELDS: readonly PluginConfigField[] = [
|
|
106
|
+
"facet_mode",
|
|
107
|
+
"series_zoom_mode",
|
|
108
|
+
"domain_mode",
|
|
109
|
+
"band_inner_frac",
|
|
110
|
+
"bar_inner_pad",
|
|
111
|
+
"wick_width_px",
|
|
112
|
+
"ohlc_line_width_px",
|
|
113
|
+
];
|
|
114
|
+
|
|
115
|
+
// Hierarchical — none of the listed fields apply.
|
|
116
|
+
const NO_FIELDS: readonly PluginConfigField[] = [];
|
|
117
|
+
|
|
118
|
+
// Heatmap
|
|
119
|
+
const HEATMAP_FIELDS: readonly PluginConfigField[] = ["facet_zoom_mode"];
|
|
120
|
+
|
|
121
|
+
// Map — reuses the cartesian build pipeline with a Mercator
|
|
122
|
+
// projection hook. Carries the basemap controls (`map_tile_provider`,
|
|
123
|
+
// `map_tile_alpha`) plus the relevant glyph-styling fields the
|
|
124
|
+
// underlying chart type already uses. Density-on-map adds the four
|
|
125
|
+
// gradient knobs on top.
|
|
126
|
+
const MAP_BASE_FIELDS: readonly PluginConfigField[] = [
|
|
127
|
+
"facet_mode",
|
|
128
|
+
"facet_zoom_mode",
|
|
129
|
+
"domain_mode",
|
|
130
|
+
"map_tile_provider",
|
|
131
|
+
"map_tile_alpha",
|
|
132
|
+
];
|
|
133
|
+
const MAP_SCATTER_FIELDS: readonly PluginConfigField[] = [
|
|
134
|
+
...MAP_BASE_FIELDS,
|
|
135
|
+
"point_size_px",
|
|
136
|
+
];
|
|
137
|
+
const MAP_LINE_FIELDS: readonly PluginConfigField[] = [
|
|
138
|
+
...MAP_BASE_FIELDS,
|
|
139
|
+
"line_width_px",
|
|
140
|
+
];
|
|
141
|
+
const MAP_DENSITY_FIELDS: readonly PluginConfigField[] = [
|
|
142
|
+
...MAP_BASE_FIELDS,
|
|
143
|
+
"gradient_color_mode",
|
|
144
|
+
"gradient_radius_px",
|
|
145
|
+
"gradient_intensity",
|
|
146
|
+
"gradient_heat_max",
|
|
147
|
+
];
|
|
148
|
+
|
|
149
|
+
// Density — shares the cartesian build pipeline (X/Y numeric
|
|
150
|
+
// with an optional Color column), then routes through the density-field
|
|
151
|
+
// glyph. Reuses the cartesian facet/zoom controls and adds the three
|
|
152
|
+
// shader-specific knobs.
|
|
153
|
+
const DENSITY_FIELDS: readonly PluginConfigField[] = [
|
|
154
|
+
"facet_mode",
|
|
155
|
+
"facet_zoom_mode",
|
|
156
|
+
"domain_mode",
|
|
157
|
+
"gradient_color_mode",
|
|
158
|
+
"gradient_radius_px",
|
|
159
|
+
"gradient_intensity",
|
|
160
|
+
"gradient_heat_max",
|
|
161
|
+
];
|
|
162
|
+
|
|
163
|
+
function make(
|
|
164
|
+
name: string,
|
|
165
|
+
tag: string,
|
|
166
|
+
category: string,
|
|
167
|
+
selectMode: "select" | "toggle",
|
|
168
|
+
count: number,
|
|
169
|
+
names: readonly string[],
|
|
170
|
+
applicable_plugin_fields: readonly PluginConfigField[],
|
|
171
|
+
overrides?: Partial<
|
|
172
|
+
Pick<
|
|
173
|
+
ChartTypeConfig,
|
|
174
|
+
| "max_cells"
|
|
175
|
+
| "max_columns"
|
|
176
|
+
| "default_chart_type"
|
|
177
|
+
| "plugin_field_defaults"
|
|
178
|
+
>
|
|
179
|
+
>,
|
|
180
|
+
): ChartTypeConfig {
|
|
181
|
+
return {
|
|
182
|
+
name,
|
|
183
|
+
tag,
|
|
184
|
+
category,
|
|
185
|
+
selectMode,
|
|
186
|
+
initial: { count, names: names as string[] },
|
|
187
|
+
max_cells: overrides?.max_cells ?? DEFAULT_MAX_CELLS,
|
|
188
|
+
max_columns: overrides?.max_columns ?? DEFAULT_MAX_COLUMNS,
|
|
189
|
+
applicable_plugin_fields,
|
|
190
|
+
...(overrides?.default_chart_type
|
|
191
|
+
? { default_chart_type: overrides.default_chart_type }
|
|
192
|
+
: {}),
|
|
193
|
+
...(overrides?.plugin_field_defaults
|
|
194
|
+
? { plugin_field_defaults: overrides.plugin_field_defaults }
|
|
195
|
+
: {}),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
const FIN_NAMES = ["Open", "Close", "High", "Low", "Tooltip"];
|
|
200
|
+
const HIER_NAMES = ["Size", "Color", "Tooltip"];
|
|
201
|
+
|
|
202
|
+
const CHARTS: ChartTypeConfig[] = [
|
|
203
|
+
make("X Bar", "x-bar", SERIES, SELECT, 1, X_AXIS, SERIES_FIELDS, {
|
|
204
|
+
default_chart_type: "bar",
|
|
205
|
+
plugin_field_defaults: ZERO_ANCHORED_DEFAULTS,
|
|
206
|
+
}),
|
|
207
|
+
make("Y Bar", "y-bar", SERIES, SELECT, 1, Y_AXIS, SERIES_FIELDS, {
|
|
208
|
+
default_chart_type: "bar",
|
|
209
|
+
plugin_field_defaults: ZERO_ANCHORED_DEFAULTS,
|
|
210
|
+
}),
|
|
211
|
+
make("Y Line", "y-line", SERIES, SELECT, 1, Y_AXIS, SERIES_FIELDS, {
|
|
212
|
+
default_chart_type: "line",
|
|
213
|
+
}),
|
|
214
|
+
make("Y Scatter", "y-scatter", SERIES, SELECT, 1, Y_AXIS, SERIES_FIELDS, {
|
|
215
|
+
default_chart_type: "scatter",
|
|
216
|
+
}),
|
|
217
|
+
make("Y Area", "y-area", SERIES, SELECT, 1, Y_AXIS, SERIES_FIELDS, {
|
|
218
|
+
default_chart_type: "area",
|
|
219
|
+
plugin_field_defaults: ZERO_ANCHORED_DEFAULTS,
|
|
220
|
+
}),
|
|
221
|
+
make(
|
|
222
|
+
"X/Y Scatter",
|
|
223
|
+
"scatter",
|
|
224
|
+
CART,
|
|
225
|
+
TOGGLE,
|
|
226
|
+
2,
|
|
227
|
+
["X Axis", "Y Axis", "Color", "Size", "Label", "Tooltip"],
|
|
228
|
+
CARTESIAN_FIELDS,
|
|
229
|
+
),
|
|
230
|
+
make(
|
|
231
|
+
"X/Y Line",
|
|
232
|
+
"line",
|
|
233
|
+
CART,
|
|
234
|
+
SELECT,
|
|
235
|
+
2,
|
|
236
|
+
["X Axis", "Y Axis", "Tooltip"],
|
|
237
|
+
CARTESIAN_FIELDS,
|
|
238
|
+
),
|
|
239
|
+
make(
|
|
240
|
+
"Density",
|
|
241
|
+
"density",
|
|
242
|
+
CART,
|
|
243
|
+
TOGGLE,
|
|
244
|
+
2,
|
|
245
|
+
["X Axis", "Y Axis", "Color", "Tooltip"],
|
|
246
|
+
DENSITY_FIELDS,
|
|
247
|
+
),
|
|
248
|
+
make("Treemap", "treemap", HIER, TOGGLE, 1, HIER_NAMES, NO_FIELDS),
|
|
249
|
+
make("Sunburst", "sunburst", HIER, TOGGLE, 1, HIER_NAMES, NO_FIELDS),
|
|
250
|
+
make("Heatmap", "heatmap", HIER, SELECT, 1, ["Color"], HEATMAP_FIELDS),
|
|
251
|
+
make("Candlestick", "candlestick", FIN, TOGGLE, 1, FIN_NAMES, FIN_FIELDS, {
|
|
252
|
+
default_chart_type: "candlestick",
|
|
253
|
+
}),
|
|
254
|
+
make("OHLC", "ohlc", FIN, TOGGLE, 1, FIN_NAMES, FIN_FIELDS, {
|
|
255
|
+
default_chart_type: "ohlc",
|
|
256
|
+
}),
|
|
257
|
+
make(
|
|
258
|
+
"Map Scatter",
|
|
259
|
+
"map-scatter",
|
|
260
|
+
MAP,
|
|
261
|
+
TOGGLE,
|
|
262
|
+
2,
|
|
263
|
+
["Longitude", "Latitude", "Color", "Size", "Label", "Tooltip"],
|
|
264
|
+
MAP_SCATTER_FIELDS,
|
|
265
|
+
),
|
|
266
|
+
make(
|
|
267
|
+
"Map Line",
|
|
268
|
+
"map-line",
|
|
269
|
+
MAP,
|
|
270
|
+
SELECT,
|
|
271
|
+
2,
|
|
272
|
+
["Longitude", "Latitude", "Tooltip"],
|
|
273
|
+
MAP_LINE_FIELDS,
|
|
274
|
+
),
|
|
275
|
+
make(
|
|
276
|
+
"Map Density",
|
|
277
|
+
"map-density",
|
|
278
|
+
MAP,
|
|
279
|
+
TOGGLE,
|
|
280
|
+
2,
|
|
281
|
+
["Longitude", "Latitude", "Color", "Tooltip"],
|
|
282
|
+
MAP_DENSITY_FIELDS,
|
|
283
|
+
),
|
|
284
|
+
];
|
|
285
|
+
|
|
286
|
+
export default CHARTS;
|