@rowsncolumns/charts 27.0.30
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 +100 -0
- package/Readme.md +81 -0
- package/dist/cjs/atoms/editing-chart.atom.d.ts +13 -0
- package/dist/cjs/atoms/editing-chart.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/editing-chart.atom.js +26 -0
- package/dist/cjs/basic-chart/basic-chart.d.ts +5 -0
- package/dist/cjs/basic-chart/basic-chart.d.ts.map +1 -0
- package/dist/cjs/basic-chart/basic-chart.js +2250 -0
- package/dist/cjs/basic-chart/helpers.d.ts +12 -0
- package/dist/cjs/basic-chart/helpers.d.ts.map +1 -0
- package/dist/cjs/basic-chart/helpers.js +105 -0
- package/dist/cjs/basic-chart/index.d.ts +5 -0
- package/dist/cjs/basic-chart/index.d.ts.map +1 -0
- package/dist/cjs/basic-chart/index.js +12 -0
- package/dist/cjs/components/dialogs/chart-editor-dialog.d.ts +5 -0
- package/dist/cjs/components/dialogs/chart-editor-dialog.d.ts.map +1 -0
- package/dist/cjs/components/dialogs/chart-editor-dialog.js +25 -0
- package/dist/cjs/components/editors/chart-editor.d.ts +10 -0
- package/dist/cjs/components/editors/chart-editor.d.ts.map +1 -0
- package/dist/cjs/components/editors/chart-editor.js +631 -0
- package/dist/cjs/components/editors/chart-range-input.d.ts +17 -0
- package/dist/cjs/components/editors/chart-range-input.d.ts.map +1 -0
- package/dist/cjs/components/editors/chart-range-input.js +16 -0
- package/dist/cjs/config.d.ts +19 -0
- package/dist/cjs/config.d.ts.map +1 -0
- package/dist/cjs/config.js +196 -0
- package/dist/cjs/hooks/use-chart-editor.d.ts +8 -0
- package/dist/cjs/hooks/use-chart-editor.d.ts.map +1 -0
- package/dist/cjs/hooks/use-chart-editor.js +29 -0
- package/dist/cjs/hooks/use-charts.d.ts +35 -0
- package/dist/cjs/hooks/use-charts.d.ts.map +1 -0
- package/dist/cjs/hooks/use-charts.js +67 -0
- package/dist/cjs/hooks/use-on-create-chart.d.ts +13 -0
- package/dist/cjs/hooks/use-on-create-chart.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-create-chart.js +24 -0
- package/dist/cjs/hooks/use-on-delete-chart.d.ts +8 -0
- package/dist/cjs/hooks/use-on-delete-chart.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-delete-chart.js +19 -0
- package/dist/cjs/hooks/use-on-move-chart.d.ts +8 -0
- package/dist/cjs/hooks/use-on-move-chart.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-move-chart.js +15 -0
- package/dist/cjs/hooks/use-on-resize-chart.d.ts +8 -0
- package/dist/cjs/hooks/use-on-resize-chart.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-resize-chart.js +15 -0
- package/dist/cjs/hooks/use-on-update-chart.d.ts +9 -0
- package/dist/cjs/hooks/use-on-update-chart.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-update-chart.js +15 -0
- package/dist/cjs/index.d.ts +11 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +18 -0
- package/dist/cjs/interface/create-chart.d.ts +9 -0
- package/dist/cjs/interface/create-chart.d.ts.map +1 -0
- package/dist/cjs/interface/create-chart.js +110 -0
- package/dist/cjs/interface/delete-chart.d.ts +4 -0
- package/dist/cjs/interface/delete-chart.d.ts.map +1 -0
- package/dist/cjs/interface/delete-chart.js +26 -0
- package/dist/cjs/interface/move-chart.d.ts +5 -0
- package/dist/cjs/interface/move-chart.d.ts.map +1 -0
- package/dist/cjs/interface/move-chart.js +28 -0
- package/dist/cjs/interface/resize-chart.d.ts +5 -0
- package/dist/cjs/interface/resize-chart.d.ts.map +1 -0
- package/dist/cjs/interface/resize-chart.js +30 -0
- package/dist/cjs/interface/update-chart.d.ts +4 -0
- package/dist/cjs/interface/update-chart.d.ts.map +1 -0
- package/dist/cjs/interface/update-chart.js +29 -0
- package/dist/cjs/plotly/basic-chart/basic-chart.d.ts +5 -0
- package/dist/cjs/plotly/basic-chart/basic-chart.d.ts.map +1 -0
- package/dist/cjs/plotly/basic-chart/basic-chart.js +1586 -0
- package/dist/cjs/plotly/basic-chart/helpers.d.ts +20 -0
- package/dist/cjs/plotly/basic-chart/helpers.d.ts.map +1 -0
- package/dist/cjs/plotly/basic-chart/helpers.js +114 -0
- package/dist/cjs/plotly/basic-chart/index.d.ts +5 -0
- package/dist/cjs/plotly/basic-chart/index.d.ts.map +1 -0
- package/dist/cjs/plotly/basic-chart/index.js +12 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/cjs/types.d.ts +27 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/utils/aggregation.d.ts +6 -0
- package/dist/cjs/utils/aggregation.d.ts.map +1 -0
- package/dist/cjs/utils/aggregation.js +127 -0
- package/dist/cjs/utils/bar-layout.d.ts +57 -0
- package/dist/cjs/utils/bar-layout.d.ts.map +1 -0
- package/dist/cjs/utils/bar-layout.js +81 -0
- package/dist/cjs/utils/boxplot.d.ts +62 -0
- package/dist/cjs/utils/boxplot.d.ts.map +1 -0
- package/dist/cjs/utils/boxplot.js +105 -0
- package/dist/cjs/utils/bubble.d.ts +52 -0
- package/dist/cjs/utils/bubble.d.ts.map +1 -0
- package/dist/cjs/utils/bubble.js +139 -0
- package/dist/cjs/utils/chart-spec-utils.d.ts +67 -0
- package/dist/cjs/utils/chart-spec-utils.d.ts.map +1 -0
- package/dist/cjs/utils/chart-spec-utils.js +355 -0
- package/dist/cjs/utils/echarts-gl-loader.d.ts +11 -0
- package/dist/cjs/utils/echarts-gl-loader.d.ts.map +1 -0
- package/dist/cjs/utils/echarts-gl-loader.js +59 -0
- package/dist/cjs/utils/error-bars.d.ts +58 -0
- package/dist/cjs/utils/error-bars.d.ts.map +1 -0
- package/dist/cjs/utils/error-bars.js +154 -0
- package/dist/cjs/utils/gradient.d.ts +52 -0
- package/dist/cjs/utils/gradient.d.ts.map +1 -0
- package/dist/cjs/utils/gradient.js +93 -0
- package/dist/cjs/utils/hierarchy.d.ts +28 -0
- package/dist/cjs/utils/hierarchy.d.ts.map +1 -0
- package/dist/cjs/utils/hierarchy.js +186 -0
- package/dist/cjs/utils/histogram.d.ts +46 -0
- package/dist/cjs/utils/histogram.d.ts.map +1 -0
- package/dist/cjs/utils/histogram.js +125 -0
- package/dist/cjs/utils/of-pie.d.ts +101 -0
- package/dist/cjs/utils/of-pie.d.ts.map +1 -0
- package/dist/cjs/utils/of-pie.js +159 -0
- package/dist/cjs/utils/overrides.d.ts +12 -0
- package/dist/cjs/utils/overrides.d.ts.map +1 -0
- package/dist/cjs/utils/overrides.js +171 -0
- package/dist/cjs/utils/radar.d.ts +37 -0
- package/dist/cjs/utils/radar.d.ts.map +1 -0
- package/dist/cjs/utils/radar.js +70 -0
- package/dist/cjs/utils/region-map-loader.d.ts +22 -0
- package/dist/cjs/utils/region-map-loader.d.ts.map +1 -0
- package/dist/cjs/utils/region-map-loader.js +174 -0
- package/dist/cjs/utils/region-map.d.ts +100 -0
- package/dist/cjs/utils/region-map.d.ts.map +1 -0
- package/dist/cjs/utils/region-map.js +327 -0
- package/dist/cjs/utils/stock.d.ts +64 -0
- package/dist/cjs/utils/stock.d.ts.map +1 -0
- package/dist/cjs/utils/stock.js +153 -0
- package/dist/cjs/utils/three-d.d.ts +96 -0
- package/dist/cjs/utils/three-d.d.ts.map +1 -0
- package/dist/cjs/utils/three-d.js +191 -0
- package/dist/cjs/utils/trendline.d.ts +41 -0
- package/dist/cjs/utils/trendline.d.ts.map +1 -0
- package/dist/cjs/utils/trendline.js +303 -0
- package/dist/cjs/utils/waterfall.d.ts +24 -0
- package/dist/cjs/utils/waterfall.d.ts.map +1 -0
- package/dist/cjs/utils/waterfall.js +61 -0
- package/dist/cjs/utils/webgl.d.ts +12 -0
- package/dist/cjs/utils/webgl.d.ts.map +1 -0
- package/dist/cjs/utils/webgl.js +36 -0
- package/dist/cjs/vitest.config.d.ts +3 -0
- package/dist/cjs/vitest.config.d.ts.map +1 -0
- package/dist/cjs/vitest.config.js +9 -0
- package/dist/esm/atoms/editing-chart.atom.d.ts +13 -0
- package/dist/esm/atoms/editing-chart.atom.d.ts.map +1 -0
- package/dist/esm/atoms/editing-chart.atom.js +12 -0
- package/dist/esm/basic-chart/basic-chart.d.ts +5 -0
- package/dist/esm/basic-chart/basic-chart.d.ts.map +1 -0
- package/dist/esm/basic-chart/basic-chart.js +2343 -0
- package/dist/esm/basic-chart/helpers.d.ts +12 -0
- package/dist/esm/basic-chart/helpers.d.ts.map +1 -0
- package/dist/esm/basic-chart/helpers.js +98 -0
- package/dist/esm/basic-chart/index.d.ts +5 -0
- package/dist/esm/basic-chart/index.d.ts.map +1 -0
- package/dist/esm/basic-chart/index.js +7 -0
- package/dist/esm/components/dialogs/chart-editor-dialog.d.ts +5 -0
- package/dist/esm/components/dialogs/chart-editor-dialog.d.ts.map +1 -0
- package/dist/esm/components/dialogs/chart-editor-dialog.js +19 -0
- package/dist/esm/components/editors/chart-editor.d.ts +10 -0
- package/dist/esm/components/editors/chart-editor.d.ts.map +1 -0
- package/dist/esm/components/editors/chart-editor.js +550 -0
- package/dist/esm/components/editors/chart-range-input.d.ts +17 -0
- package/dist/esm/components/editors/chart-range-input.d.ts.map +1 -0
- package/dist/esm/components/editors/chart-range-input.js +10 -0
- package/dist/esm/config.d.ts +19 -0
- package/dist/esm/config.d.ts.map +1 -0
- package/dist/esm/config.js +161 -0
- package/dist/esm/hooks/use-chart-editor.d.ts +8 -0
- package/dist/esm/hooks/use-chart-editor.d.ts.map +1 -0
- package/dist/esm/hooks/use-chart-editor.js +32 -0
- package/dist/esm/hooks/use-charts.d.ts +35 -0
- package/dist/esm/hooks/use-charts.d.ts.map +1 -0
- package/dist/esm/hooks/use-charts.js +62 -0
- package/dist/esm/hooks/use-on-create-chart.d.ts +13 -0
- package/dist/esm/hooks/use-on-create-chart.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-create-chart.js +19 -0
- package/dist/esm/hooks/use-on-delete-chart.d.ts +8 -0
- package/dist/esm/hooks/use-on-delete-chart.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-delete-chart.js +14 -0
- package/dist/esm/hooks/use-on-move-chart.d.ts +8 -0
- package/dist/esm/hooks/use-on-move-chart.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-move-chart.js +10 -0
- package/dist/esm/hooks/use-on-resize-chart.d.ts +8 -0
- package/dist/esm/hooks/use-on-resize-chart.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-resize-chart.js +10 -0
- package/dist/esm/hooks/use-on-update-chart.d.ts +9 -0
- package/dist/esm/hooks/use-on-update-chart.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-update-chart.js +10 -0
- package/dist/esm/index.d.ts +11 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +13 -0
- package/dist/esm/interface/create-chart.d.ts +9 -0
- package/dist/esm/interface/create-chart.d.ts.map +1 -0
- package/dist/esm/interface/create-chart.js +126 -0
- package/dist/esm/interface/delete-chart.d.ts +4 -0
- package/dist/esm/interface/delete-chart.d.ts.map +1 -0
- package/dist/esm/interface/delete-chart.js +20 -0
- package/dist/esm/interface/move-chart.d.ts +5 -0
- package/dist/esm/interface/move-chart.d.ts.map +1 -0
- package/dist/esm/interface/move-chart.js +22 -0
- package/dist/esm/interface/resize-chart.d.ts +5 -0
- package/dist/esm/interface/resize-chart.d.ts.map +1 -0
- package/dist/esm/interface/resize-chart.js +24 -0
- package/dist/esm/interface/update-chart.d.ts +4 -0
- package/dist/esm/interface/update-chart.d.ts.map +1 -0
- package/dist/esm/interface/update-chart.js +26 -0
- package/dist/esm/plotly/basic-chart/basic-chart.d.ts +5 -0
- package/dist/esm/plotly/basic-chart/basic-chart.d.ts.map +1 -0
- package/dist/esm/plotly/basic-chart/basic-chart.js +1682 -0
- package/dist/esm/plotly/basic-chart/helpers.d.ts +20 -0
- package/dist/esm/plotly/basic-chart/helpers.d.ts.map +1 -0
- package/dist/esm/plotly/basic-chart/helpers.js +107 -0
- package/dist/esm/plotly/basic-chart/index.d.ts +5 -0
- package/dist/esm/plotly/basic-chart/index.d.ts.map +1 -0
- package/dist/esm/plotly/basic-chart/index.js +7 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/esm/types.d.ts +27 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/utils/aggregation.d.ts +6 -0
- package/dist/esm/utils/aggregation.d.ts.map +1 -0
- package/dist/esm/utils/aggregation.js +96 -0
- package/dist/esm/utils/bar-layout.d.ts +57 -0
- package/dist/esm/utils/bar-layout.d.ts.map +1 -0
- package/dist/esm/utils/bar-layout.js +70 -0
- package/dist/esm/utils/boxplot.d.ts +62 -0
- package/dist/esm/utils/boxplot.d.ts.map +1 -0
- package/dist/esm/utils/boxplot.js +91 -0
- package/dist/esm/utils/bubble.d.ts +52 -0
- package/dist/esm/utils/bubble.d.ts.map +1 -0
- package/dist/esm/utils/bubble.js +122 -0
- package/dist/esm/utils/chart-spec-utils.d.ts +67 -0
- package/dist/esm/utils/chart-spec-utils.d.ts.map +1 -0
- package/dist/esm/utils/chart-spec-utils.js +270 -0
- package/dist/esm/utils/echarts-gl-loader.d.ts +11 -0
- package/dist/esm/utils/echarts-gl-loader.d.ts.map +1 -0
- package/dist/esm/utils/echarts-gl-loader.js +51 -0
- package/dist/esm/utils/error-bars.d.ts +58 -0
- package/dist/esm/utils/error-bars.d.ts.map +1 -0
- package/dist/esm/utils/error-bars.js +134 -0
- package/dist/esm/utils/gradient.d.ts +52 -0
- package/dist/esm/utils/gradient.d.ts.map +1 -0
- package/dist/esm/utils/gradient.js +84 -0
- package/dist/esm/utils/hierarchy.d.ts +28 -0
- package/dist/esm/utils/hierarchy.d.ts.map +1 -0
- package/dist/esm/utils/hierarchy.js +150 -0
- package/dist/esm/utils/histogram.d.ts +46 -0
- package/dist/esm/utils/histogram.d.ts.map +1 -0
- package/dist/esm/utils/histogram.js +95 -0
- package/dist/esm/utils/of-pie.d.ts +101 -0
- package/dist/esm/utils/of-pie.d.ts.map +1 -0
- package/dist/esm/utils/of-pie.js +141 -0
- package/dist/esm/utils/overrides.d.ts +12 -0
- package/dist/esm/utils/overrides.d.ts.map +1 -0
- package/dist/esm/utils/overrides.js +159 -0
- package/dist/esm/utils/radar.d.ts +37 -0
- package/dist/esm/utils/radar.d.ts.map +1 -0
- package/dist/esm/utils/radar.js +49 -0
- package/dist/esm/utils/region-map-loader.d.ts +22 -0
- package/dist/esm/utils/region-map-loader.d.ts.map +1 -0
- package/dist/esm/utils/region-map-loader.js +141 -0
- package/dist/esm/utils/region-map.d.ts +100 -0
- package/dist/esm/utils/region-map.d.ts.map +1 -0
- package/dist/esm/utils/region-map.js +266 -0
- package/dist/esm/utils/stock.d.ts +64 -0
- package/dist/esm/utils/stock.d.ts.map +1 -0
- package/dist/esm/utils/stock.js +123 -0
- package/dist/esm/utils/three-d.d.ts +96 -0
- package/dist/esm/utils/three-d.d.ts.map +1 -0
- package/dist/esm/utils/three-d.js +162 -0
- package/dist/esm/utils/trendline.d.ts +41 -0
- package/dist/esm/utils/trendline.d.ts.map +1 -0
- package/dist/esm/utils/trendline.js +257 -0
- package/dist/esm/utils/waterfall.d.ts +24 -0
- package/dist/esm/utils/waterfall.d.ts.map +1 -0
- package/dist/esm/utils/waterfall.js +55 -0
- package/dist/esm/utils/webgl.d.ts +12 -0
- package/dist/esm/utils/webgl.d.ts.map +1 -0
- package/dist/esm/utils/webgl.js +30 -0
- package/dist/esm/vitest.config.d.ts +3 -0
- package/dist/esm/vitest.config.d.ts.map +1 -0
- package/dist/esm/vitest.config.js +7 -0
- package/package.json +96 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ChartSpec } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
export declare const CHART_TYPES: Array<[string, Array<[string, Partial<ChartSpec>]>]>;
|
|
3
|
+
/**
|
|
4
|
+
* True when a spec is doughnut-shaped: the first-class
|
|
5
|
+
* `chartType: "doughnut"` token, or the two legacy pie encodings —
|
|
6
|
+
* `doughnutHoleSize` on a pie (SDK-authored), or a pie with a nonzero
|
|
7
|
+
* inner radius (the old picker preset wrote
|
|
8
|
+
* `{ chartType: "pie", radius: ["40%", "70%"] }`).
|
|
9
|
+
*/
|
|
10
|
+
export declare const isDoughnutSpec: (spec: Partial<ChartSpec>) => boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Derive the picker label for an existing spec — the inverse of the
|
|
13
|
+
* CHART_TYPES presets. Purely read-only: opening a chart in the editor
|
|
14
|
+
* uses this for display and never rewrites the spec, so SDK-authored
|
|
15
|
+
* specs (doughnutHoleSize, PERCENT_STACKED, …) round-trip unchanged.
|
|
16
|
+
* Falls back to the capitalized chartType when no preset matches.
|
|
17
|
+
*/
|
|
18
|
+
export declare const getChartPresetLabel: (spec: Partial<ChartSpec>) => string;
|
|
19
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AA8F3D,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAa1E,CAAC;AAYJ;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,OAAO,CAAC,SAAS,CAAC,KAAG,OAQzD,CAAC;AAcF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,OAAO,CAAC,SAAS,CAAC,KAAG,MAmB9D,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
const LINE_CHART_TYPES = [
|
|
2
|
+
["Line", { chartType: "line", smooth: false }],
|
|
3
|
+
[
|
|
4
|
+
"Stacked line",
|
|
5
|
+
{ chartType: "line", smooth: false, stackedType: "STACKED" },
|
|
6
|
+
],
|
|
7
|
+
["Smooth line", { chartType: "line", smooth: true }],
|
|
8
|
+
];
|
|
9
|
+
const COLUMN_CHART_TYPES = [
|
|
10
|
+
["Clustered Column", { chartType: "column", stackedType: "UNSTACKED" }],
|
|
11
|
+
["Stacked column", { chartType: "column", stackedType: "STACKED" }],
|
|
12
|
+
[
|
|
13
|
+
"100% stacked column",
|
|
14
|
+
{ chartType: "column", stackedType: "PERCENT_STACKED" },
|
|
15
|
+
],
|
|
16
|
+
];
|
|
17
|
+
const BAR_CHART_TYPES = [
|
|
18
|
+
["Clustered Bar", { chartType: "bar", stackedType: "UNSTACKED" }],
|
|
19
|
+
["Stacked Bar", { chartType: "bar", stackedType: "STACKED" }],
|
|
20
|
+
["100% stacked Bar", { chartType: "bar", stackedType: "PERCENT_STACKED" }],
|
|
21
|
+
];
|
|
22
|
+
const PIE_CHART_TYPES = [
|
|
23
|
+
[
|
|
24
|
+
"2D Pie",
|
|
25
|
+
{ chartType: "pie", stackedType: "UNSTACKED", radius: [0, "75%"] },
|
|
26
|
+
],
|
|
27
|
+
// A first-class doughnut token. The hole is controlled by
|
|
28
|
+
// spec.doughnutHoleSize (0-1 fraction, renderer default 0.5) via the
|
|
29
|
+
// editor's "Chart options" section; the preset deliberately omits it
|
|
30
|
+
// so re-picking "Doughnut" never clobbers an authored hole size.
|
|
31
|
+
["Doughnut", { chartType: "doughnut", stackedType: "UNSTACKED" }],
|
|
32
|
+
];
|
|
33
|
+
const BUBBLE_CHART_TYPES = [
|
|
34
|
+
[
|
|
35
|
+
"Bubble",
|
|
36
|
+
{
|
|
37
|
+
chartType: "bubble",
|
|
38
|
+
bubbleLabels: [{ sources: [] }],
|
|
39
|
+
// domains: [{ sources: [] }],
|
|
40
|
+
// series: [{ sources: [] }],
|
|
41
|
+
useFirstRowAsHeaders: true,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
[
|
|
45
|
+
"Scatter",
|
|
46
|
+
{
|
|
47
|
+
chartType: "scatter",
|
|
48
|
+
bubbleLabels: [{ sources: [] }],
|
|
49
|
+
// domains: [{ sources: [] }],
|
|
50
|
+
// series: [{ sources: [] }],
|
|
51
|
+
useFirstRowAsHeaders: true,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
];
|
|
55
|
+
const HIERARCHY_CHART_TYPES = [
|
|
56
|
+
["Treemap", { chartType: "treemap", useFirstRowAsHeaders: true }],
|
|
57
|
+
["Sunburst", { chartType: "sunburst", useFirstRowAsHeaders: true }],
|
|
58
|
+
];
|
|
59
|
+
const STATISTICAL_CHART_TYPES = [
|
|
60
|
+
["Histogram", { chartType: "histogram" }],
|
|
61
|
+
["Box & Whisker", { chartType: "boxplot" }],
|
|
62
|
+
];
|
|
63
|
+
const FLOW_CHART_TYPES = [
|
|
64
|
+
["Waterfall", { chartType: "waterfall" }],
|
|
65
|
+
["Funnel", { chartType: "funnel" }],
|
|
66
|
+
];
|
|
67
|
+
const COMBO_CHART_TYPES = [
|
|
68
|
+
["Combo (mixed series)", { chartType: "combo" }],
|
|
69
|
+
];
|
|
70
|
+
const RADAR_CHART_TYPES = [
|
|
71
|
+
["Radar", { chartType: "radar", radarStyle: "standard" }],
|
|
72
|
+
["Radar with markers", { chartType: "radar", radarStyle: "marker" }],
|
|
73
|
+
["Filled radar", { chartType: "radar", radarStyle: "filled" }],
|
|
74
|
+
];
|
|
75
|
+
const STOCK_CHART_TYPES = [
|
|
76
|
+
["Stock (HLC)", { chartType: "stock", stockVariant: "HLC" }],
|
|
77
|
+
["Stock (OHLC)", { chartType: "stock", stockVariant: "OHLC" }],
|
|
78
|
+
];
|
|
79
|
+
export const CHART_TYPES = [
|
|
80
|
+
["Bar", BAR_CHART_TYPES],
|
|
81
|
+
["Column", COLUMN_CHART_TYPES],
|
|
82
|
+
["Line", LINE_CHART_TYPES],
|
|
83
|
+
["Pie", PIE_CHART_TYPES],
|
|
84
|
+
["Scatter & Bubble", BUBBLE_CHART_TYPES],
|
|
85
|
+
["Hierarchy", HIERARCHY_CHART_TYPES],
|
|
86
|
+
["Statistical", STATISTICAL_CHART_TYPES],
|
|
87
|
+
["Flow", FLOW_CHART_TYPES],
|
|
88
|
+
["Radar", RADAR_CHART_TYPES],
|
|
89
|
+
["Stock", STOCK_CHART_TYPES],
|
|
90
|
+
["Combo", COMBO_CHART_TYPES],
|
|
91
|
+
];
|
|
92
|
+
/** Parse a radius entry ("40%" | 40 | 0) into a number, NaN-safe. */
|
|
93
|
+
const parseRadiusValue = (value) => {
|
|
94
|
+
if (typeof value === "number")
|
|
95
|
+
return value;
|
|
96
|
+
if (typeof value === "string") {
|
|
97
|
+
const parsed = Number.parseFloat(value);
|
|
98
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
99
|
+
}
|
|
100
|
+
return 0;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* True when a spec is doughnut-shaped: the first-class
|
|
104
|
+
* `chartType: "doughnut"` token, or the two legacy pie encodings —
|
|
105
|
+
* `doughnutHoleSize` on a pie (SDK-authored), or a pie with a nonzero
|
|
106
|
+
* inner radius (the old picker preset wrote
|
|
107
|
+
* `{ chartType: "pie", radius: ["40%", "70%"] }`).
|
|
108
|
+
*/
|
|
109
|
+
export const isDoughnutSpec = (spec) => {
|
|
110
|
+
const loose = spec;
|
|
111
|
+
if (loose.chartType === "doughnut")
|
|
112
|
+
return true;
|
|
113
|
+
if (loose.chartType !== "pie")
|
|
114
|
+
return false;
|
|
115
|
+
const holeSize = loose.doughnutHoleSize;
|
|
116
|
+
if (typeof holeSize === "number" && holeSize > 0)
|
|
117
|
+
return true;
|
|
118
|
+
const radius = loose.radius;
|
|
119
|
+
return Array.isArray(radius) && parseRadiusValue(radius[0]) > 0;
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Fields that distinguish presets sharing a chartType, with the value
|
|
123
|
+
* an absent field is equivalent to (e.g. no stackedType renders
|
|
124
|
+
* unstacked, so `{ chartType: "column" }` is "Clustered Column").
|
|
125
|
+
*/
|
|
126
|
+
const PRESET_DISCRIMINATORS = [
|
|
127
|
+
["stackedType", "UNSTACKED"],
|
|
128
|
+
["smooth", false],
|
|
129
|
+
["radarStyle", "standard"],
|
|
130
|
+
["stockVariant", "HLC"],
|
|
131
|
+
];
|
|
132
|
+
/**
|
|
133
|
+
* Derive the picker label for an existing spec — the inverse of the
|
|
134
|
+
* CHART_TYPES presets. Purely read-only: opening a chart in the editor
|
|
135
|
+
* uses this for display and never rewrites the spec, so SDK-authored
|
|
136
|
+
* specs (doughnutHoleSize, PERCENT_STACKED, …) round-trip unchanged.
|
|
137
|
+
* Falls back to the capitalized chartType when no preset matches.
|
|
138
|
+
*/
|
|
139
|
+
export const getChartPresetLabel = (spec) => {
|
|
140
|
+
// Doughnut first — it has several encodings (see isDoughnutSpec) and
|
|
141
|
+
// the legacy pie-based ones would otherwise match the pie presets.
|
|
142
|
+
if (isDoughnutSpec(spec))
|
|
143
|
+
return "Doughnut";
|
|
144
|
+
const loose = spec;
|
|
145
|
+
for (const [, presets] of CHART_TYPES) {
|
|
146
|
+
for (const [name, config] of presets) {
|
|
147
|
+
if (config.chartType !== spec.chartType)
|
|
148
|
+
continue;
|
|
149
|
+
const looseConfig = config;
|
|
150
|
+
const matches = PRESET_DISCRIMINATORS.every(([key, absentValue]) => {
|
|
151
|
+
const presetValue = looseConfig[key] ?? absentValue;
|
|
152
|
+
const specValue = loose[key] ?? absentValue;
|
|
153
|
+
return presetValue === specValue;
|
|
154
|
+
});
|
|
155
|
+
if (matches)
|
|
156
|
+
return name;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const chartType = spec.chartType ?? "";
|
|
160
|
+
return chartType.charAt(0).toUpperCase() + chartType.slice(1);
|
|
161
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { EmbeddedChart, OverlayPosition } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
export declare const useChartEditor: () => {
|
|
3
|
+
onRequestEditChart: (chart: EmbeddedChart) => void;
|
|
4
|
+
updateSelectedChartPosition: (chartId: string | number, overlayPosition: Partial<OverlayPosition>) => void;
|
|
5
|
+
selectedChart: EmbeddedChart | undefined;
|
|
6
|
+
isEditInProgress: boolean;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=use-chart-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-chart-editor.d.ts","sourceRoot":"","sources":["../../../hooks/use-chart-editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAKhF,eAAO,MAAM,cAAc;gCAKf,aAAa;2CAWX,MAAM,GAAG,MAAM,mBAAmB,OAAO,CAAC,eAAe,CAAC;;;CAyBvE,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useCallback, useState } from "react";
|
|
2
|
+
import { useSetChartEditorDialogState } from "../atoms/editing-chart.atom";
|
|
3
|
+
export const useChartEditor = () => {
|
|
4
|
+
const [chart, setChart] = useState();
|
|
5
|
+
const setChartEditorDialogState = useSetChartEditorDialogState();
|
|
6
|
+
const onRequestEditChart = useCallback((chart) => {
|
|
7
|
+
// Open resize dialog
|
|
8
|
+
setChartEditorDialogState(true);
|
|
9
|
+
// Set editing chart
|
|
10
|
+
setChart(chart);
|
|
11
|
+
}, [setChartEditorDialogState]);
|
|
12
|
+
const updateSelectedChartPosition = useCallback((chartId, overlayPosition) => {
|
|
13
|
+
setChart((prev) => prev && prev.chartId === chartId
|
|
14
|
+
? {
|
|
15
|
+
...prev,
|
|
16
|
+
position: {
|
|
17
|
+
...prev.position,
|
|
18
|
+
overlayPosition: {
|
|
19
|
+
...prev.position.overlayPosition,
|
|
20
|
+
...overlayPosition,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
}
|
|
24
|
+
: prev);
|
|
25
|
+
}, []);
|
|
26
|
+
return {
|
|
27
|
+
onRequestEditChart,
|
|
28
|
+
updateSelectedChartPosition,
|
|
29
|
+
selectedChart: chart,
|
|
30
|
+
isEditInProgress: !!chart,
|
|
31
|
+
};
|
|
32
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { EmbeddedChart } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
|
|
3
|
+
export type UseChartsProps = {
|
|
4
|
+
/**
|
|
5
|
+
* Callback when chart state is changed
|
|
6
|
+
*/
|
|
7
|
+
onChangeCharts?: React.Dispatch<React.SetStateAction<EmbeddedChart[]>>;
|
|
8
|
+
/**
|
|
9
|
+
* Create a spreadsheet history
|
|
10
|
+
*/
|
|
11
|
+
createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
|
|
12
|
+
/**
|
|
13
|
+
* Get formatted value
|
|
14
|
+
*/
|
|
15
|
+
getFormattedValue: ReturnType<typeof useSpreadsheetState>["getFormattedValue"];
|
|
16
|
+
/**
|
|
17
|
+
* Get effective value
|
|
18
|
+
*/
|
|
19
|
+
getEffectiveValue: ReturnType<typeof useSpreadsheetState>["getEffectiveValue"];
|
|
20
|
+
/**
|
|
21
|
+
* Id Creation strategy
|
|
22
|
+
*/
|
|
23
|
+
idCreationStrategy?: UseSpreadsheetProps["idCreationStrategy"];
|
|
24
|
+
};
|
|
25
|
+
export declare const useCharts: ({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }: UseChartsProps) => {
|
|
26
|
+
selectedChart: EmbeddedChart | undefined;
|
|
27
|
+
onRequestEditChart: (chart: EmbeddedChart) => void;
|
|
28
|
+
updateSelectedChartPosition: (chartId: string | number, overlayPosition: Partial<import("@rowsncolumns/spreadsheet").OverlayPosition>) => void;
|
|
29
|
+
onCreateChart: (sheetId: number, activeCell: import("@rowsncolumns/grid").CellInterface, selections: import("@rowsncolumns/grid").SelectionArea<import("@rowsncolumns/spreadsheet").SelectionAttributes>[], chartSpec?: EmbeddedChart) => EmbeddedChart;
|
|
30
|
+
onDeleteChart: (chartId: string | number) => void;
|
|
31
|
+
onMoveChart: (chartId: string | number, anchorCell: import("@rowsncolumns/grid").CellInterface, offsetXPixels: number, offsetYPixels: number) => void;
|
|
32
|
+
onResizeChart: (chartId: string | number, anchorCell: import("@rowsncolumns/grid").CellInterface, offsetXPixels: number, offsetYPixels: number, width: number, height: number) => void;
|
|
33
|
+
onUpdateChart: (chart: EmbeddedChart) => void;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=use-charts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-charts.d.ts","sourceRoot":"","sources":["../../../hooks/use-charts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAUzC,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACvE;;OAEG;IACH,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IACvE;;OAEG;IACH,iBAAiB,EAAE,UAAU,CAC3B,OAAO,mBAAmB,CAC3B,CAAC,mBAAmB,CAAC,CAAC;IACvB;;OAEG;IACH,iBAAiB,EAAE,UAAU,CAC3B,OAAO,mBAAmB,CAC3B,CAAC,mBAAmB,CAAC,CAAC;IACvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;CAChE,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,8FAMvB,cAAc;;;;;;;;;CA6EhB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { useChartEditor } from "./use-chart-editor";
|
|
3
|
+
import { useOnDeleteChart } from "./use-on-delete-chart";
|
|
4
|
+
import { useOnMoveChart } from "./use-on-move-chart";
|
|
5
|
+
import { useOnResizeChart } from "./use-on-resize-chart";
|
|
6
|
+
import { useOnUpdateChart } from "./use-on-update-chart";
|
|
7
|
+
import { useOnCreateChart } from "./use-on-create-chart";
|
|
8
|
+
export const useCharts = ({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }) => {
|
|
9
|
+
const { selectedChart, onRequestEditChart, updateSelectedChartPosition } = useChartEditor();
|
|
10
|
+
const onDeleteChart = useOnDeleteChart({
|
|
11
|
+
onChangeCharts,
|
|
12
|
+
createHistory,
|
|
13
|
+
});
|
|
14
|
+
// Charts and embeds
|
|
15
|
+
const handleMoveChart = useOnMoveChart({
|
|
16
|
+
onChangeCharts,
|
|
17
|
+
createHistory,
|
|
18
|
+
});
|
|
19
|
+
const handleResizeChart = useOnResizeChart({
|
|
20
|
+
onChangeCharts,
|
|
21
|
+
createHistory,
|
|
22
|
+
});
|
|
23
|
+
const onMoveChart = useCallback((chartId, anchorCell, offsetXPixels, offsetYPixels) => {
|
|
24
|
+
handleMoveChart(chartId, anchorCell, offsetXPixels, offsetYPixels);
|
|
25
|
+
updateSelectedChartPosition(chartId, {
|
|
26
|
+
anchorCell,
|
|
27
|
+
offsetXPixels,
|
|
28
|
+
offsetYPixels,
|
|
29
|
+
});
|
|
30
|
+
}, [handleMoveChart, updateSelectedChartPosition]);
|
|
31
|
+
const onResizeChart = useCallback((chartId, anchorCell, offsetXPixels, offsetYPixels, width, height) => {
|
|
32
|
+
handleResizeChart(chartId, anchorCell, offsetXPixels, offsetYPixels, width, height);
|
|
33
|
+
updateSelectedChartPosition(chartId, {
|
|
34
|
+
anchorCell,
|
|
35
|
+
offsetXPixels,
|
|
36
|
+
offsetYPixels,
|
|
37
|
+
widthPixels: width,
|
|
38
|
+
heightPixels: height,
|
|
39
|
+
});
|
|
40
|
+
}, [handleResizeChart, updateSelectedChartPosition]);
|
|
41
|
+
const onUpdateChart = useOnUpdateChart({
|
|
42
|
+
onChangeCharts,
|
|
43
|
+
createHistory,
|
|
44
|
+
});
|
|
45
|
+
const onCreateChart = useOnCreateChart({
|
|
46
|
+
onChangeCharts,
|
|
47
|
+
createHistory,
|
|
48
|
+
getFormattedValue,
|
|
49
|
+
getEffectiveValue,
|
|
50
|
+
idCreationStrategy,
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
selectedChart,
|
|
54
|
+
onRequestEditChart,
|
|
55
|
+
updateSelectedChartPosition,
|
|
56
|
+
onCreateChart,
|
|
57
|
+
onDeleteChart,
|
|
58
|
+
onMoveChart,
|
|
59
|
+
onResizeChart,
|
|
60
|
+
onUpdateChart,
|
|
61
|
+
};
|
|
62
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CellInterface, SelectionArea } from "@rowsncolumns/grid";
|
|
2
|
+
import { type CellData, SelectionAttributes, EmbeddedChart } from "@rowsncolumns/spreadsheet";
|
|
3
|
+
import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
|
|
4
|
+
import { UseChartsProps } from "./use-charts";
|
|
5
|
+
export type UseOnCreateChartProps<T extends CellData> = {
|
|
6
|
+
onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
|
|
7
|
+
createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
|
|
8
|
+
getFormattedValue: ReturnType<typeof useSpreadsheetState>["getFormattedValue"];
|
|
9
|
+
getEffectiveValue: ReturnType<typeof useSpreadsheetState>["getEffectiveValue"];
|
|
10
|
+
idCreationStrategy?: UseChartsProps["idCreationStrategy"];
|
|
11
|
+
};
|
|
12
|
+
export declare const useOnCreateChart: <T extends CellData>({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }: UseOnCreateChartProps<T>) => (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[], chartSpec?: EmbeddedChart) => EmbeddedChart;
|
|
13
|
+
//# sourceMappingURL=use-on-create-chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-on-create-chart.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-create-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EACL,KAAK,QAAQ,EACb,mBAAmB,EACnB,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,QAAQ,IAAI;IACtD,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;IACvE,iBAAiB,EAAE,UAAU,CAC3B,OAAO,mBAAmB,CAC3B,CAAC,mBAAmB,CAAC,CAAC;IACvB,iBAAiB,EAAE,UAAU,CAC3B,OAAO,mBAAmB,CAC3B,CAAC,mBAAmB,CAAC,CAAC;IACvB,kBAAkB,CAAC,EAAE,cAAc,CAAC,oBAAoB,CAAC,CAAC;CAC3D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,8FAMlD,qBAAqB,CAAC,CAAC,CAAC,eAGZ,MAAM,cACH,aAAa,cACb,aAAa,CAAC,mBAAmB,CAAC,EAAE,cACpC,aAAa,kBAkB9B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { createChart } from "../interface/create-chart";
|
|
3
|
+
export const useOnCreateChart = ({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }) => {
|
|
4
|
+
return useCallback((sheetId, activeCell, selections, chartSpec) => {
|
|
5
|
+
return createChart({
|
|
6
|
+
onChangeCharts,
|
|
7
|
+
getFormattedValue,
|
|
8
|
+
getEffectiveValue,
|
|
9
|
+
createHistory,
|
|
10
|
+
idCreationStrategy,
|
|
11
|
+
})(sheetId, activeCell, selections, chartSpec);
|
|
12
|
+
}, [
|
|
13
|
+
onChangeCharts,
|
|
14
|
+
getFormattedValue,
|
|
15
|
+
getEffectiveValue,
|
|
16
|
+
createHistory,
|
|
17
|
+
idCreationStrategy,
|
|
18
|
+
]);
|
|
19
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type CellData } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
|
|
3
|
+
export type UseOnDeleteChartProps<T extends CellData> = {
|
|
4
|
+
onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
|
|
5
|
+
createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
|
|
6
|
+
};
|
|
7
|
+
export declare const useOnDeleteChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnDeleteChartProps<T>) => (chartId: string | number) => void;
|
|
8
|
+
//# sourceMappingURL=use-on-delete-chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-on-delete-chart.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-delete-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAKzC,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,QAAQ,IAAI;IACtD,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAGlD,qBAAqB,CAAC,CAAC,CAAC,uCAc1B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useFocusSheet, } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import { useCallback } from "react";
|
|
3
|
+
import { deleteChart } from "../interface/delete-chart";
|
|
4
|
+
export const useOnDeleteChart = ({ onChangeCharts, createHistory, }) => {
|
|
5
|
+
const focusSheet = useFocusSheet();
|
|
6
|
+
return useCallback((chartId) => {
|
|
7
|
+
deleteChart({
|
|
8
|
+
onChangeCharts,
|
|
9
|
+
createHistory,
|
|
10
|
+
})(chartId);
|
|
11
|
+
// Keep focus on
|
|
12
|
+
focusSheet?.();
|
|
13
|
+
}, [onChangeCharts, createHistory, focusSheet]);
|
|
14
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CellData } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
|
|
3
|
+
export type UseOnMoveChartProps<T extends CellData> = {
|
|
4
|
+
onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
|
|
5
|
+
createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
|
|
6
|
+
};
|
|
7
|
+
export declare const useOnMoveChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnMoveChartProps<T>) => (chartId: string | number, anchorCell: import("@rowsncolumns/grid").CellInterface, offsetXPixels: number, offsetYPixels: number) => void;
|
|
8
|
+
//# sourceMappingURL=use-on-move-chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-on-move-chart.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-move-chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAKzC,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,QAAQ,IAAI;IACpD,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAGhD,mBAAmB,CAAC,CAAC,CAAC,6IAUxB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { moveChart } from "../interface/move-chart";
|
|
3
|
+
export const useOnMoveChart = ({ onChangeCharts, createHistory, }) => {
|
|
4
|
+
return useCallback((chartId, anchorCell, offsetXPixels, offsetYPixels) => {
|
|
5
|
+
moveChart({
|
|
6
|
+
onChangeCharts,
|
|
7
|
+
createHistory,
|
|
8
|
+
})(chartId, anchorCell, offsetXPixels, offsetYPixels);
|
|
9
|
+
}, [onChangeCharts, createHistory]);
|
|
10
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CellData } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
|
|
3
|
+
export type UseOnResizeChartProps<T extends CellData> = {
|
|
4
|
+
onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
|
|
5
|
+
createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
|
|
6
|
+
};
|
|
7
|
+
export declare const useOnResizeChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnResizeChartProps<T>) => (chartId: string | number, anchorCell: import("@rowsncolumns/grid").CellInterface, offsetXPixels: number, offsetYPixels: number, width: number, height: number) => void;
|
|
8
|
+
//# sourceMappingURL=use-on-resize-chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-on-resize-chart.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-resize-chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAKzC,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,QAAQ,IAAI;IACtD,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAGlD,qBAAqB,CAAC,CAAC,CAAC,4KAU1B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { resizeChart } from "../interface/resize-chart";
|
|
3
|
+
export const useOnResizeChart = ({ onChangeCharts, createHistory, }) => {
|
|
4
|
+
return useCallback((chartId, anchorCell, offsetXPixels, offsetYPixels, width, height) => {
|
|
5
|
+
resizeChart({
|
|
6
|
+
onChangeCharts,
|
|
7
|
+
createHistory,
|
|
8
|
+
})(chartId, anchorCell, offsetXPixels, offsetYPixels, width, height);
|
|
9
|
+
}, [onChangeCharts, createHistory]);
|
|
10
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CellData } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import type { EmbeddedChart } from "@rowsncolumns/spreadsheet";
|
|
3
|
+
import type { UseSpreadsheetProps, useSpreadsheetState } from "@rowsncolumns/spreadsheet-state";
|
|
4
|
+
export type UseOnUpdateChartProps<T extends CellData> = {
|
|
5
|
+
onChangeCharts: UseSpreadsheetProps<T>["onChangeCharts"];
|
|
6
|
+
createHistory: ReturnType<typeof useSpreadsheetState>["createHistory"];
|
|
7
|
+
};
|
|
8
|
+
export declare const useOnUpdateChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnUpdateChartProps<T>) => (chart: EmbeddedChart) => void;
|
|
9
|
+
//# sourceMappingURL=use-on-update-chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-on-update-chart.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-update-chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAKzC,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,QAAQ,IAAI;IACtD,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IACzD,aAAa,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,eAAe,CAAC,CAAC;CACxE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAGlD,qBAAqB,CAAC,CAAC,CAAC,aAEf,aAAa,SAQxB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { updateChart } from "../interface/update-chart";
|
|
3
|
+
export const useOnUpdateChart = ({ onChangeCharts, createHistory, }) => {
|
|
4
|
+
return useCallback((chart) => {
|
|
5
|
+
updateChart({
|
|
6
|
+
onChangeCharts,
|
|
7
|
+
createHistory,
|
|
8
|
+
})(chart);
|
|
9
|
+
}, [onChangeCharts, createHistory]);
|
|
10
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./hooks/use-charts";
|
|
2
|
+
export * from "./components/dialogs/chart-editor-dialog";
|
|
3
|
+
export * from "./components/editors/chart-editor";
|
|
4
|
+
export * from "./basic-chart";
|
|
5
|
+
export { registerChartGeoMap } from "./utils/region-map-loader";
|
|
6
|
+
export * from "./interface/create-chart";
|
|
7
|
+
export * from "./interface/delete-chart";
|
|
8
|
+
export * from "./interface/move-chart";
|
|
9
|
+
export * from "./interface/resize-chart";
|
|
10
|
+
export * from "./interface/update-chart";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAI9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from "./hooks/use-charts";
|
|
2
|
+
export * from "./components/dialogs/chart-editor-dialog";
|
|
3
|
+
export * from "./components/editors/chart-editor";
|
|
4
|
+
export * from "./basic-chart";
|
|
5
|
+
// Region-map (filled map / choropleth) host API — register additional
|
|
6
|
+
// geo scopes (e.g. a US-states GeoJSON) for `chartType: "regionMap"`.
|
|
7
|
+
export { registerChartGeoMap } from "./utils/region-map-loader";
|
|
8
|
+
// Chart interface functions
|
|
9
|
+
export * from "./interface/create-chart";
|
|
10
|
+
export * from "./interface/delete-chart";
|
|
11
|
+
export * from "./interface/move-chart";
|
|
12
|
+
export * from "./interface/resize-chart";
|
|
13
|
+
export * from "./interface/update-chart";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CellInterface, SelectionArea } from "@rowsncolumns/grid";
|
|
2
|
+
import { type CellData, SelectionAttributes, EmbeddedChart } from "@rowsncolumns/spreadsheet";
|
|
3
|
+
import type { UseOnCreateChartProps } from "../hooks/use-on-create-chart";
|
|
4
|
+
/**
|
|
5
|
+
* Ensures endIndex is at least minValue.
|
|
6
|
+
*/
|
|
7
|
+
export declare const ensureValidEndIndex: (endIndex: number | undefined, minValue: number) => number;
|
|
8
|
+
export declare const createChart: <T extends CellData>({ onChangeCharts, getFormattedValue, getEffectiveValue, createHistory, idCreationStrategy, }: UseOnCreateChartProps<T>) => (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[], chartSpec?: EmbeddedChart) => EmbeddedChart;
|
|
9
|
+
//# sourceMappingURL=create-chart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-chart.d.ts","sourceRoot":"","sources":["../../../interface/create-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EACL,KAAK,QAAQ,EACb,mBAAmB,EACnB,aAAa,EAKd,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAa1E;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,MAAM,GAAG,SAAS,EAC5B,UAAU,MAAM,KACf,MAAkF,CAAC;AAEtF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,8FAM7C,qBAAqB,CAAC,CAAC,CAAC,MAEvB,SAAS,MAAM,EACf,YAAY,aAAa,EACzB,YAAY,aAAa,CAAC,mBAAmB,CAAC,EAAE,EAChD,YAAY,aAAa,kBAyJ5B,CAAC"}
|