@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,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Radar-chart shaping shared by chart renderers.
|
|
4
|
+
*
|
|
5
|
+
* A radar chart plots each series as a closed polygon over a set of
|
|
6
|
+
* "indicators" (one axis per category). echarts needs a top-level
|
|
7
|
+
* `radar.indicator: [{ name, max }]` plus series of shape
|
|
8
|
+
* `{ value: number[], name }`. plotly uses `scatterpolar` traces with
|
|
9
|
+
* `r` (the values) and `theta` (the category names).
|
|
10
|
+
*
|
|
11
|
+
* These helpers are pure transforms over already-extracted category
|
|
12
|
+
* labels and per-series numeric values.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.buildRadarSeriesData = exports.buildRadarIndicators = void 0;
|
|
16
|
+
var tslib_1 = require("tslib");
|
|
17
|
+
var isFiniteNum = function (v) {
|
|
18
|
+
return typeof v === "number" && Number.isFinite(v);
|
|
19
|
+
};
|
|
20
|
+
var toNumber = function (v) {
|
|
21
|
+
return isFiniteNum(v) ? v : 0;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Build echarts radar indicators from category labels and series.
|
|
25
|
+
* The `max` per indicator is the largest value seen across all series at
|
|
26
|
+
* that category (rounded up a touch so the polygon doesn't touch the
|
|
27
|
+
* rim). When every series is empty at an index, `max` defaults to 1.
|
|
28
|
+
*/
|
|
29
|
+
var buildRadarIndicators = function (categories, series) {
|
|
30
|
+
return categories.map(function (label, i) {
|
|
31
|
+
var e_1, _a;
|
|
32
|
+
var max = 0;
|
|
33
|
+
try {
|
|
34
|
+
for (var series_1 = tslib_1.__values(series), series_1_1 = series_1.next(); !series_1_1.done; series_1_1 = series_1.next()) {
|
|
35
|
+
var s = series_1_1.value;
|
|
36
|
+
var v = s.values[i];
|
|
37
|
+
if (isFiniteNum(v))
|
|
38
|
+
max = Math.max(max, v);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
42
|
+
finally {
|
|
43
|
+
try {
|
|
44
|
+
if (series_1_1 && !series_1_1.done && (_a = series_1.return)) _a.call(series_1);
|
|
45
|
+
}
|
|
46
|
+
finally { if (e_1) throw e_1.error; }
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
name: String(label !== null && label !== void 0 ? label : ""),
|
|
50
|
+
// Pad by 10% so the outermost ring has breathing room; never 0.
|
|
51
|
+
max: max > 0 ? max * 1.1 : 1,
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
exports.buildRadarIndicators = buildRadarIndicators;
|
|
56
|
+
/**
|
|
57
|
+
* Shape series into echarts radar data: one entry per series with its
|
|
58
|
+
* value vector aligned to the indicator order. Missing/non-numeric
|
|
59
|
+
* values become 0 so the polygon stays closed.
|
|
60
|
+
*/
|
|
61
|
+
var buildRadarSeriesData = function (series, indicatorCount) {
|
|
62
|
+
return series.map(function (s) {
|
|
63
|
+
var value = [];
|
|
64
|
+
for (var i = 0; i < indicatorCount; i++) {
|
|
65
|
+
value.push(toNumber(s.values[i]));
|
|
66
|
+
}
|
|
67
|
+
return { value: value, name: s.name };
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
exports.buildRadarSeriesData = buildRadarSeriesData;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type RegionMapGeo = {
|
|
2
|
+
/** The map's region names — the match targets for data labels. */
|
|
3
|
+
regionNames: string[];
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Host-provided geo data: register `geoJson` under `name` so region-map
|
|
7
|
+
* specs with `geoScope: name` can render on it (e.g. a US-states map).
|
|
8
|
+
* Region matching targets each feature's `properties.name`. The actual
|
|
9
|
+
* `echarts.registerMap` call is deferred until the map modules have
|
|
10
|
+
* loaded, so this is safe to call at module scope.
|
|
11
|
+
*/
|
|
12
|
+
export declare const registerChartGeoMap: (name: string, geoJson: object) => void;
|
|
13
|
+
/**
|
|
14
|
+
* Resolve the geo data for a scope, loading the echarts map modules
|
|
15
|
+
* (and, for "world", the bundled world GeoJSON) on first use. Resolves
|
|
16
|
+
* null — never throws — when the scope is unknown or an asset failed
|
|
17
|
+
* to load; the renderer then draws an empty chart.
|
|
18
|
+
*/
|
|
19
|
+
export declare const loadRegionMapGeo: (scope: string) => Promise<RegionMapGeo | null>;
|
|
20
|
+
/** Test hook — resets the module-level registries and latches. */
|
|
21
|
+
export declare const __resetRegionMapLoaderForTests: () => void;
|
|
22
|
+
//# sourceMappingURL=region-map-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"region-map-loader.d.ts","sourceRoot":"","sources":["../../../utils/region-map-loader.ts"],"names":[],"mappings":"AAsCA,MAAM,MAAM,YAAY,GAAG;IACzB,kEAAkE;IAClE,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAmDF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,KAAG,IAMnE,CAAC;AAkCF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,MAAM,KACZ,OAAO,CAAC,YAAY,GAAG,IAAI,CAyB7B,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,8BAA8B,QAAO,IAKjD,CAAC"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.__resetRegionMapLoaderForTests = exports.loadRegionMapGeo = exports.registerChartGeoMap = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Lazy loader + registry for region-map (choropleth) geo data.
|
|
7
|
+
*
|
|
8
|
+
* echarts ships no map geometry, and the world GeoJSON plus the map
|
|
9
|
+
* chart module are dead weight for every non-map chart — so nothing
|
|
10
|
+
* here is imported eagerly. The renderer calls `loadRegionMapGeo(scope)`
|
|
11
|
+
* the first time a region-map spec is actually about to render:
|
|
12
|
+
*
|
|
13
|
+
* - the echarts `MapChart` / `GeoComponent` / `VisualMapComponent`
|
|
14
|
+
* modules are dynamically imported and registered once
|
|
15
|
+
* - the default `"world"` scope is built by dynamically importing the
|
|
16
|
+
* `world-atlas` countries TopoJSON (~110 KB) and converting it with
|
|
17
|
+
* `topojson-client`
|
|
18
|
+
* - any other scope must have been provided by the host through
|
|
19
|
+
* `registerChartGeoMap(name, geoJson)` (e.g. a US-states GeoJSON)
|
|
20
|
+
*
|
|
21
|
+
* Failures latch (mirroring `echarts-gl-loader.ts`): a failed import
|
|
22
|
+
* warns once and keeps resolving null, so the renderer draws an empty
|
|
23
|
+
* chart instead of crashing or re-fetching on every update. Everything
|
|
24
|
+
* is SSR-safe — no window/document access.
|
|
25
|
+
*/
|
|
26
|
+
var echarts = tslib_1.__importStar(require("echarts/core"));
|
|
27
|
+
var region_map_1 = require("./region-map");
|
|
28
|
+
var registeredMaps = new Map();
|
|
29
|
+
var modulesPromise = null;
|
|
30
|
+
var worldPromise = null;
|
|
31
|
+
var warnedScopes = new Set();
|
|
32
|
+
var extractRegionNames = function (geoJson) {
|
|
33
|
+
var e_1, _a;
|
|
34
|
+
var _b;
|
|
35
|
+
var features = geoJson === null || geoJson === void 0 ? void 0 : geoJson.features;
|
|
36
|
+
if (!Array.isArray(features))
|
|
37
|
+
return [];
|
|
38
|
+
var names = [];
|
|
39
|
+
try {
|
|
40
|
+
for (var features_1 = tslib_1.__values(features), features_1_1 = features_1.next(); !features_1_1.done; features_1_1 = features_1.next()) {
|
|
41
|
+
var feature = features_1_1.value;
|
|
42
|
+
var name_1 = (_b = feature === null || feature === void 0 ? void 0 : feature.properties) === null || _b === void 0 ? void 0 : _b.name;
|
|
43
|
+
if (typeof name_1 === "string" && name_1.length > 0) {
|
|
44
|
+
names.push(name_1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
49
|
+
finally {
|
|
50
|
+
try {
|
|
51
|
+
if (features_1_1 && !features_1_1.done && (_a = features_1.return)) _a.call(features_1);
|
|
52
|
+
}
|
|
53
|
+
finally { if (e_1) throw e_1.error; }
|
|
54
|
+
}
|
|
55
|
+
return names;
|
|
56
|
+
};
|
|
57
|
+
var warnOnce = function (scope, message) {
|
|
58
|
+
if (warnedScopes.has(scope))
|
|
59
|
+
return;
|
|
60
|
+
warnedScopes.add(scope);
|
|
61
|
+
// eslint-disable-next-line no-console
|
|
62
|
+
console.warn(message);
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Register the echarts modules the choropleth needs (map series, geo
|
|
66
|
+
* coordinate system, visualMap). Dynamically imported so non-map
|
|
67
|
+
* charts never pay for them; a failed import latches as unavailable.
|
|
68
|
+
*/
|
|
69
|
+
var ensureEchartsMapModules = function () {
|
|
70
|
+
if (!modulesPromise) {
|
|
71
|
+
modulesPromise = Promise.all([
|
|
72
|
+
Promise.resolve().then(function () { return tslib_1.__importStar(require("echarts/charts")); }),
|
|
73
|
+
Promise.resolve().then(function () { return tslib_1.__importStar(require("echarts/components")); }),
|
|
74
|
+
])
|
|
75
|
+
.then(function (_a) {
|
|
76
|
+
var _b = tslib_1.__read(_a, 2), charts = _b[0], components = _b[1];
|
|
77
|
+
echarts.use([
|
|
78
|
+
charts.MapChart,
|
|
79
|
+
components.GeoComponent,
|
|
80
|
+
components.VisualMapComponent,
|
|
81
|
+
]);
|
|
82
|
+
return true;
|
|
83
|
+
})
|
|
84
|
+
.catch(function () { return false; });
|
|
85
|
+
}
|
|
86
|
+
return modulesPromise;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Host-provided geo data: register `geoJson` under `name` so region-map
|
|
90
|
+
* specs with `geoScope: name` can render on it (e.g. a US-states map).
|
|
91
|
+
* Region matching targets each feature's `properties.name`. The actual
|
|
92
|
+
* `echarts.registerMap` call is deferred until the map modules have
|
|
93
|
+
* loaded, so this is safe to call at module scope.
|
|
94
|
+
*/
|
|
95
|
+
var registerChartGeoMap = function (name, geoJson) {
|
|
96
|
+
registeredMaps.set(name, {
|
|
97
|
+
geoJson: geoJson,
|
|
98
|
+
regionNames: extractRegionNames(geoJson),
|
|
99
|
+
applied: false,
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
exports.registerChartGeoMap = registerChartGeoMap;
|
|
103
|
+
var loadWorldGeoMap = function () {
|
|
104
|
+
if (!worldPromise) {
|
|
105
|
+
worldPromise = Promise.all([
|
|
106
|
+
Promise.resolve().then(function () { return tslib_1.__importStar(require("world-atlas/countries-110m.json")); }),
|
|
107
|
+
Promise.resolve().then(function () { return tslib_1.__importStar(require("topojson-client")); }),
|
|
108
|
+
])
|
|
109
|
+
.then(function (_a) {
|
|
110
|
+
var _b;
|
|
111
|
+
var _c = tslib_1.__read(_a, 2), topologyModule = _c[0], topojson = _c[1];
|
|
112
|
+
var topology = (_b = topologyModule.default) !== null && _b !== void 0 ? _b : topologyModule;
|
|
113
|
+
var geoJson = topojson.feature(topology, topology.objects.countries);
|
|
114
|
+
var entry = {
|
|
115
|
+
geoJson: geoJson,
|
|
116
|
+
regionNames: extractRegionNames(geoJson),
|
|
117
|
+
applied: false,
|
|
118
|
+
};
|
|
119
|
+
registeredMaps.set(region_map_1.WORLD_GEO_SCOPE, entry);
|
|
120
|
+
return entry;
|
|
121
|
+
})
|
|
122
|
+
.catch(function () {
|
|
123
|
+
warnOnce(region_map_1.WORLD_GEO_SCOPE, "[charts] Failed to load the world map geometry for region-map charts; the chart will render empty.");
|
|
124
|
+
return null;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return worldPromise;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Resolve the geo data for a scope, loading the echarts map modules
|
|
131
|
+
* (and, for "world", the bundled world GeoJSON) on first use. Resolves
|
|
132
|
+
* null — never throws — when the scope is unknown or an asset failed
|
|
133
|
+
* to load; the renderer then draws an empty chart.
|
|
134
|
+
*/
|
|
135
|
+
var loadRegionMapGeo = function (scope) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
136
|
+
var modulesReady, entry;
|
|
137
|
+
var _a;
|
|
138
|
+
return tslib_1.__generator(this, function (_b) {
|
|
139
|
+
switch (_b.label) {
|
|
140
|
+
case 0: return [4 /*yield*/, ensureEchartsMapModules()];
|
|
141
|
+
case 1:
|
|
142
|
+
modulesReady = _b.sent();
|
|
143
|
+
if (!modulesReady) {
|
|
144
|
+
warnOnce("echarts-map-modules", "[charts] Failed to load the echarts map modules for region-map charts; the chart will render empty.");
|
|
145
|
+
return [2 /*return*/, null];
|
|
146
|
+
}
|
|
147
|
+
entry = (_a = registeredMaps.get(scope)) !== null && _a !== void 0 ? _a : null;
|
|
148
|
+
if (!(!entry && scope === region_map_1.WORLD_GEO_SCOPE)) return [3 /*break*/, 3];
|
|
149
|
+
return [4 /*yield*/, loadWorldGeoMap()];
|
|
150
|
+
case 2:
|
|
151
|
+
entry = _b.sent();
|
|
152
|
+
_b.label = 3;
|
|
153
|
+
case 3:
|
|
154
|
+
if (!entry) {
|
|
155
|
+
warnOnce(scope, "[charts] Region map: no geo data registered for scope \"".concat(scope, "\". Register one with registerChartGeoMap(\"").concat(scope, "\", geoJson)."));
|
|
156
|
+
return [2 /*return*/, null];
|
|
157
|
+
}
|
|
158
|
+
if (!entry.applied) {
|
|
159
|
+
echarts.registerMap(scope, entry.geoJson);
|
|
160
|
+
entry.applied = true;
|
|
161
|
+
}
|
|
162
|
+
return [2 /*return*/, { regionNames: entry.regionNames }];
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}); };
|
|
166
|
+
exports.loadRegionMapGeo = loadRegionMapGeo;
|
|
167
|
+
/** Test hook — resets the module-level registries and latches. */
|
|
168
|
+
var __resetRegionMapLoaderForTests = function () {
|
|
169
|
+
registeredMaps.clear();
|
|
170
|
+
modulesPromise = null;
|
|
171
|
+
worldPromise = null;
|
|
172
|
+
warnedScopes.clear();
|
|
173
|
+
};
|
|
174
|
+
exports.__resetRegionMapLoaderForTests = __resetRegionMapLoaderForTests;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Region map / filled map (OOXML chartex `<cx:regionMap>`) helpers.
|
|
3
|
+
*
|
|
4
|
+
* Excel's filled map paints a choropleth: values keyed by geography
|
|
5
|
+
* (country/state names) shade regions on a map. The spec reuses the
|
|
6
|
+
* existing series/domain data model — the category domain carries the
|
|
7
|
+
* region labels and the first series carries the values — plus an
|
|
8
|
+
* optional `geoScope` naming the registered echarts map ("world" by
|
|
9
|
+
* default).
|
|
10
|
+
*
|
|
11
|
+
* Everything here is pure: region-name normalization + alias matching,
|
|
12
|
+
* choropleth data assembly, and the sequential color ramp for the value
|
|
13
|
+
* scale. The geo asset loading lives in `region-map-loader.ts`.
|
|
14
|
+
*/
|
|
15
|
+
type MaybeLike<T> = T | null | undefined;
|
|
16
|
+
/** Default geo scope — the lazily loaded world map. */
|
|
17
|
+
export declare const WORLD_GEO_SCOPE = "world";
|
|
18
|
+
/**
|
|
19
|
+
* True when a basic-chart spec should render as a region-map
|
|
20
|
+
* choropleth: the first-class `"regionMap"` chart type, or any payload
|
|
21
|
+
* degraded to another `chartType` that preserves the authored class as
|
|
22
|
+
* `sourceChartType: "REGION_MAP"` (case-insensitive, mirroring
|
|
23
|
+
* `isParetoSpec` / `isOfPieChartSpec`).
|
|
24
|
+
*/
|
|
25
|
+
export declare const isRegionMapSpec: (spec: {
|
|
26
|
+
chartType?: string;
|
|
27
|
+
sourceChartType?: MaybeLike<string>;
|
|
28
|
+
}) => boolean;
|
|
29
|
+
/** Coerce a `geoScope` value to a usable map name (default "world"). */
|
|
30
|
+
export declare const resolveGeoScope: (raw: MaybeLike<string>) => string;
|
|
31
|
+
/**
|
|
32
|
+
* Normalize a region label for matching: trim, collapse whitespace,
|
|
33
|
+
* casefold, strip diacritics ("Côte d'Ivoire" → "cote d'ivoire"),
|
|
34
|
+
* unify curly apostrophes, and drop periods ("U.S." → "us").
|
|
35
|
+
*/
|
|
36
|
+
export declare const normalizeRegionKey: (name: MaybeLike<string>) => string;
|
|
37
|
+
/**
|
|
38
|
+
* Groups of equivalent region names. Members are matched through
|
|
39
|
+
* `normalizeRegionKey`, so casing/diacritics/periods don't matter.
|
|
40
|
+
* Each group binds only when one of its members actually exists on the
|
|
41
|
+
* loaded map, so the table is map-agnostic: the canonical spellings
|
|
42
|
+
* below cover both the bundled world map's Natural Earth names
|
|
43
|
+
* ("United States of America", "Dem. Rep. Congo", …) and the long-form
|
|
44
|
+
* names hosts commonly author.
|
|
45
|
+
*/
|
|
46
|
+
export declare const REGION_NAME_ALIASES: readonly (readonly string[])[];
|
|
47
|
+
/**
|
|
48
|
+
* Build a lookup from normalized label → the map's own region name.
|
|
49
|
+
* Exact (normalized) names always win; alias-group members resolve to
|
|
50
|
+
* whichever member exists on the map, and never shadow a real region
|
|
51
|
+
* name.
|
|
52
|
+
*/
|
|
53
|
+
export declare const buildRegionNameIndex: (regionNames: readonly string[]) => Map<string, string>;
|
|
54
|
+
export type RegionMapDatum = {
|
|
55
|
+
/** The map's own region name (echarts matches `data[].name` on it). */
|
|
56
|
+
name: string;
|
|
57
|
+
value: number;
|
|
58
|
+
};
|
|
59
|
+
export type RegionMapData = {
|
|
60
|
+
/** Matched regions, deduped by region (last value wins). */
|
|
61
|
+
data: RegionMapDatum[];
|
|
62
|
+
/** Labels that matched no region on the map — skipped, never fatal. */
|
|
63
|
+
unmatched: string[];
|
|
64
|
+
/** visualMap extent derived from the matched values. */
|
|
65
|
+
min: number;
|
|
66
|
+
max: number;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Assemble echarts `map`-series data from parallel label/value arrays
|
|
70
|
+
* (category domain = region labels, first series = values).
|
|
71
|
+
*
|
|
72
|
+
* - labels are matched exactly first, then through the normalization +
|
|
73
|
+
* alias layer; unmatched labels are collected (not thrown)
|
|
74
|
+
* - blank labels and non-finite values are skipped
|
|
75
|
+
* - duplicate labels collapse onto one region (last value wins)
|
|
76
|
+
* - min/max span the matched values; degenerate extents are widened so
|
|
77
|
+
* the visualMap ramp stays valid (no data → 0..1, all-equal → the
|
|
78
|
+
* value against 0, all-zero → 0..1)
|
|
79
|
+
*/
|
|
80
|
+
export declare const buildRegionMapData: (labels: readonly MaybeLike<string | number>[], values: readonly MaybeLike<string | number | boolean>[], regionNames: readonly string[]) => RegionMapData;
|
|
81
|
+
/** Linear RGB mix of two 6-digit hex colors; `t` 0 → a, 1 → b. */
|
|
82
|
+
export declare const mixHexColors: (a: string, b: string, t: number) => string;
|
|
83
|
+
/**
|
|
84
|
+
* Sequential (single-hue, light→dark) color ramp for the choropleth's
|
|
85
|
+
* value scale, derived from the theme accent. Dark mode gets its own
|
|
86
|
+
* steps mixed toward the dark chart surface rather than a flipped
|
|
87
|
+
* light ramp, so low values stay legible on a dark background.
|
|
88
|
+
*/
|
|
89
|
+
export declare const buildSequentialColorRamp: (accentColor: MaybeLike<string>, isDarkMode: boolean) => string[];
|
|
90
|
+
/**
|
|
91
|
+
* `console.warn` the unmatched region labels for a scope once — the
|
|
92
|
+
* chart re-renders on every data tick, so an unguarded warn would spam
|
|
93
|
+
* the console. Keyed by scope + label set; a different set of
|
|
94
|
+
* unmatched labels warns again.
|
|
95
|
+
*/
|
|
96
|
+
export declare const warnOnceForUnmatchedRegions: (scope: string, unmatched: readonly string[]) => void;
|
|
97
|
+
/** Test hook — resets the warn-once registry. */
|
|
98
|
+
export declare const __resetRegionMapWarningsForTests: () => void;
|
|
99
|
+
export {};
|
|
100
|
+
//# sourceMappingURL=region-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"region-map.d.ts","sourceRoot":"","sources":["../../../utils/region-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAEzC,uDAAuD;AACvD,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CACrC,KAAG,OAGoD,CAAC;AAEzD,wEAAwE;AACxE,eAAO,MAAM,eAAe,GAAI,KAAK,SAAS,CAAC,MAAM,CAAC,KAAG,MAGxD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,SAAS,CAAC,MAAM,CAAC,KAAG,MAS3C,CAAC;AAEnB;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAqDpD,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAC/B,aAAa,SAAS,MAAM,EAAE,KAC7B,GAAG,CAAC,MAAM,EAAE,MAAM,CA2BpB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,4DAA4D;IAC5D,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,uEAAuE;IACvE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAOF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,SAAS,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAC7C,QAAQ,SAAS,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,EACvD,aAAa,SAAS,MAAM,EAAE,KAC7B,aAiCF,CAAC;AAeF,kEAAkE;AAClE,eAAO,MAAM,YAAY,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,MAU9D,CAAC;AAOF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GACnC,aAAa,SAAS,CAAC,MAAM,CAAC,EAC9B,YAAY,OAAO,KAClB,MAAM,EAWR,CAAC;AAMF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,MAAM,EACb,WAAW,SAAS,MAAM,EAAE,KAC3B,IAUF,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,gCAAgC,QAAO,IAEnD,CAAC"}
|