@rowsncolumns/charts 27.0.34 → 28.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/atoms/pivot-chart.atom.d.ts +14 -0
- package/dist/cjs/atoms/pivot-chart.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/pivot-chart.atom.js +9 -0
- package/dist/cjs/basic-chart/basic-chart.d.ts +1 -1
- package/dist/cjs/basic-chart/basic-chart.d.ts.map +1 -1
- package/dist/cjs/basic-chart/basic-chart.js +863 -371
- package/dist/cjs/components/dialogs/pivot-chart-dialog.d.ts +39 -0
- package/dist/cjs/components/dialogs/pivot-chart-dialog.d.ts.map +1 -0
- package/dist/cjs/components/dialogs/pivot-chart-dialog.js +100 -0
- package/dist/cjs/components/editors/chart-editor.d.ts +13 -1
- package/dist/cjs/components/editors/chart-editor.d.ts.map +1 -1
- package/dist/cjs/components/editors/chart-editor.js +225 -59
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +149 -12
- package/dist/cjs/hooks/use-charts.d.ts +21 -6
- package/dist/cjs/hooks/use-charts.d.ts.map +1 -1
- package/dist/cjs/hooks/use-charts.js +13 -1
- package/dist/cjs/hooks/use-on-create-chart.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-create-chart.js +7 -1
- package/dist/cjs/hooks/use-on-move-chart-to-sheet.d.ts +12 -0
- package/dist/cjs/hooks/use-on-move-chart-to-sheet.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-move-chart-to-sheet.js +26 -0
- package/dist/cjs/hooks/use-on-move-chart.d.ts +1 -1
- package/dist/cjs/hooks/use-on-move-chart.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-move-chart.js +2 -2
- package/dist/cjs/hooks/use-on-resize-chart.d.ts +1 -1
- package/dist/cjs/hooks/use-on-resize-chart.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-resize-chart.js +2 -2
- package/dist/cjs/index.d.ts +11 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +34 -1
- package/dist/cjs/interface/create-chart.d.ts.map +1 -1
- package/dist/cjs/interface/create-chart.js +33 -42
- package/dist/cjs/interface/delete-chart.d.ts.map +1 -1
- package/dist/cjs/interface/delete-chart.js +4 -0
- package/dist/cjs/interface/move-chart-to-sheet.d.ts +13 -0
- package/dist/cjs/interface/move-chart-to-sheet.d.ts.map +1 -0
- package/dist/cjs/interface/move-chart-to-sheet.js +136 -0
- package/dist/cjs/interface/move-chart.d.ts +2 -2
- package/dist/cjs/interface/move-chart.d.ts.map +1 -1
- package/dist/cjs/interface/move-chart.js +7 -1
- package/dist/cjs/interface/resize-chart.d.ts +2 -2
- package/dist/cjs/interface/resize-chart.d.ts.map +1 -1
- package/dist/cjs/interface/resize-chart.js +7 -1
- package/dist/cjs/interface/update-chart.d.ts.map +1 -1
- package/dist/cjs/interface/update-chart.js +4 -0
- package/dist/cjs/plotly/basic-chart/basic-chart.d.ts +1 -1
- package/dist/cjs/plotly/basic-chart/basic-chart.d.ts.map +1 -1
- package/dist/cjs/plotly/basic-chart/basic-chart.js +970 -585
- package/dist/cjs/plotly/basic-chart/helpers.d.ts.map +1 -1
- package/dist/cjs/plotly/basic-chart/helpers.js +3 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +7 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/utils/axis-number-format.d.ts +69 -0
- package/dist/cjs/utils/axis-number-format.d.ts.map +1 -0
- package/dist/cjs/utils/axis-number-format.js +217 -0
- package/dist/cjs/utils/category-levels.d.ts +27 -0
- package/dist/cjs/utils/category-levels.d.ts.map +1 -0
- package/dist/cjs/utils/category-levels.js +80 -0
- package/dist/cjs/utils/chart-image.d.ts +8 -0
- package/dist/cjs/utils/chart-image.d.ts.map +1 -0
- package/dist/cjs/utils/chart-image.js +28 -0
- package/dist/cjs/utils/chart-orientation.d.ts +67 -0
- package/dist/cjs/utils/chart-orientation.d.ts.map +1 -0
- package/dist/cjs/utils/chart-orientation.js +265 -0
- package/dist/cjs/utils/chart-spec-utils.d.ts +3 -0
- package/dist/cjs/utils/chart-spec-utils.d.ts.map +1 -1
- package/dist/cjs/utils/chart-spec-utils.js +12 -4
- package/dist/cjs/utils/chart-styles.d.ts +75 -0
- package/dist/cjs/utils/chart-styles.d.ts.map +1 -0
- package/dist/cjs/utils/chart-styles.js +283 -0
- package/dist/cjs/utils/empty-cells.d.ts +30 -0
- package/dist/cjs/utils/empty-cells.d.ts.map +1 -0
- package/dist/cjs/utils/empty-cells.js +91 -0
- package/dist/cjs/utils/overrides.d.ts +6 -1
- package/dist/cjs/utils/overrides.d.ts.map +1 -1
- package/dist/cjs/utils/overrides.js +19 -7
- package/dist/cjs/utils/pie-explosion.d.ts +30 -0
- package/dist/cjs/utils/pie-explosion.d.ts.map +1 -0
- package/dist/cjs/utils/pie-explosion.js +55 -0
- package/dist/cjs/utils/plotly-click.d.ts +34 -0
- package/dist/cjs/utils/plotly-click.d.ts.map +1 -0
- package/dist/cjs/utils/plotly-click.js +49 -0
- package/dist/cjs/utils/plotly-surface.d.ts +14 -0
- package/dist/cjs/utils/plotly-surface.d.ts.map +1 -0
- package/dist/cjs/utils/plotly-surface.js +64 -0
- package/dist/cjs/utils/plotly-title.d.ts +12 -0
- package/dist/cjs/utils/plotly-title.d.ts.map +1 -0
- package/dist/cjs/utils/plotly-title.js +24 -0
- package/dist/cjs/utils/series-click.d.ts +39 -0
- package/dist/cjs/utils/series-click.d.ts.map +1 -0
- package/dist/cjs/utils/series-click.js +75 -0
- package/dist/cjs/utils/three-d.d.ts +17 -1
- package/dist/cjs/utils/three-d.d.ts.map +1 -1
- package/dist/cjs/utils/three-d.js +32 -4
- package/dist/esm/atoms/pivot-chart.atom.d.ts +14 -0
- package/dist/esm/atoms/pivot-chart.atom.d.ts.map +1 -0
- package/dist/esm/atoms/pivot-chart.atom.js +4 -0
- package/dist/esm/basic-chart/basic-chart.d.ts +1 -1
- package/dist/esm/basic-chart/basic-chart.d.ts.map +1 -1
- package/dist/esm/basic-chart/basic-chart.js +680 -178
- package/dist/esm/components/dialogs/pivot-chart-dialog.d.ts +39 -0
- package/dist/esm/components/dialogs/pivot-chart-dialog.d.ts.map +1 -0
- package/dist/esm/components/dialogs/pivot-chart-dialog.js +89 -0
- package/dist/esm/components/editors/chart-editor.d.ts +13 -1
- package/dist/esm/components/editors/chart-editor.d.ts.map +1 -1
- package/dist/esm/components/editors/chart-editor.js +164 -20
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +149 -12
- package/dist/esm/hooks/use-charts.d.ts +21 -6
- package/dist/esm/hooks/use-charts.d.ts.map +1 -1
- package/dist/esm/hooks/use-charts.js +13 -1
- package/dist/esm/hooks/use-on-create-chart.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-create-chart.js +7 -1
- package/dist/esm/hooks/use-on-move-chart-to-sheet.d.ts +12 -0
- package/dist/esm/hooks/use-on-move-chart-to-sheet.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-move-chart-to-sheet.js +19 -0
- package/dist/esm/hooks/use-on-move-chart.d.ts +1 -1
- package/dist/esm/hooks/use-on-move-chart.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-move-chart.js +2 -2
- package/dist/esm/hooks/use-on-resize-chart.d.ts +1 -1
- package/dist/esm/hooks/use-on-resize-chart.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-resize-chart.js +2 -2
- package/dist/esm/index.d.ts +11 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +14 -0
- package/dist/esm/interface/create-chart.d.ts.map +1 -1
- package/dist/esm/interface/create-chart.js +36 -58
- package/dist/esm/interface/delete-chart.d.ts.map +1 -1
- package/dist/esm/interface/delete-chart.js +4 -0
- package/dist/esm/interface/move-chart-to-sheet.d.ts +13 -0
- package/dist/esm/interface/move-chart-to-sheet.d.ts.map +1 -0
- package/dist/esm/interface/move-chart-to-sheet.js +126 -0
- package/dist/esm/interface/move-chart.d.ts +2 -2
- package/dist/esm/interface/move-chart.d.ts.map +1 -1
- package/dist/esm/interface/move-chart.js +7 -1
- package/dist/esm/interface/resize-chart.d.ts +2 -2
- package/dist/esm/interface/resize-chart.d.ts.map +1 -1
- package/dist/esm/interface/resize-chart.js +7 -1
- package/dist/esm/interface/update-chart.d.ts.map +1 -1
- package/dist/esm/interface/update-chart.js +4 -0
- package/dist/esm/plotly/basic-chart/basic-chart.d.ts +1 -1
- package/dist/esm/plotly/basic-chart/basic-chart.d.ts.map +1 -1
- package/dist/esm/plotly/basic-chart/basic-chart.js +858 -463
- package/dist/esm/plotly/basic-chart/helpers.d.ts.map +1 -1
- package/dist/esm/plotly/basic-chart/helpers.js +3 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +7 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/utils/axis-number-format.d.ts +69 -0
- package/dist/esm/utils/axis-number-format.d.ts.map +1 -0
- package/dist/esm/utils/axis-number-format.js +170 -0
- package/dist/esm/utils/category-levels.d.ts +27 -0
- package/dist/esm/utils/category-levels.d.ts.map +1 -0
- package/dist/esm/utils/category-levels.js +65 -0
- package/dist/esm/utils/chart-image.d.ts +8 -0
- package/dist/esm/utils/chart-image.d.ts.map +1 -0
- package/dist/esm/utils/chart-image.js +24 -0
- package/dist/esm/utils/chart-orientation.d.ts +67 -0
- package/dist/esm/utils/chart-orientation.d.ts.map +1 -0
- package/dist/esm/utils/chart-orientation.js +234 -0
- package/dist/esm/utils/chart-spec-utils.d.ts +3 -0
- package/dist/esm/utils/chart-spec-utils.d.ts.map +1 -1
- package/dist/esm/utils/chart-spec-utils.js +10 -2
- package/dist/esm/utils/chart-styles.d.ts +75 -0
- package/dist/esm/utils/chart-styles.d.ts.map +1 -0
- package/dist/esm/utils/chart-styles.js +357 -0
- package/dist/esm/utils/empty-cells.d.ts +30 -0
- package/dist/esm/utils/empty-cells.d.ts.map +1 -0
- package/dist/esm/utils/empty-cells.js +67 -0
- package/dist/esm/utils/overrides.d.ts +6 -1
- package/dist/esm/utils/overrides.d.ts.map +1 -1
- package/dist/esm/utils/overrides.js +14 -2
- package/dist/esm/utils/pie-explosion.d.ts +30 -0
- package/dist/esm/utils/pie-explosion.d.ts.map +1 -0
- package/dist/esm/utils/pie-explosion.js +43 -0
- package/dist/esm/utils/plotly-click.d.ts +34 -0
- package/dist/esm/utils/plotly-click.d.ts.map +1 -0
- package/dist/esm/utils/plotly-click.js +44 -0
- package/dist/esm/utils/plotly-surface.d.ts +14 -0
- package/dist/esm/utils/plotly-surface.d.ts.map +1 -0
- package/dist/esm/utils/plotly-surface.js +45 -0
- package/dist/esm/utils/plotly-title.d.ts +12 -0
- package/dist/esm/utils/plotly-title.d.ts.map +1 -0
- package/dist/esm/utils/plotly-title.js +20 -0
- package/dist/esm/utils/series-click.d.ts +39 -0
- package/dist/esm/utils/series-click.d.ts.map +1 -0
- package/dist/esm/utils/series-click.js +66 -0
- package/dist/esm/utils/three-d.d.ts +17 -1
- package/dist/esm/utils/three-d.d.ts.map +1 -1
- package/dist/esm/utils/three-d.js +29 -3
- package/package.json +16 -12
|
@@ -4,6 +4,7 @@ exports.createChart = exports.ensureValidEndIndex = void 0;
|
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var utils_1 = require("@rowsncolumns/utils");
|
|
6
6
|
var immer_1 = require("immer");
|
|
7
|
+
var chart_orientation_1 = require("../utils/chart-orientation");
|
|
7
8
|
var chart_spec_utils_1 = require("../utils/chart-spec-utils");
|
|
8
9
|
// For external interface
|
|
9
10
|
(0, immer_1.enablePatches)();
|
|
@@ -20,12 +21,18 @@ var createChart = function (_a) {
|
|
|
20
21
|
var lastSelection = selections.length
|
|
21
22
|
? selections[selections.length - 1]
|
|
22
23
|
: { range: (0, utils_1.selectionBoundsFromCells)(activeCell) };
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
var
|
|
28
|
-
|
|
24
|
+
var dataRange = tslib_1.__assign(tslib_1.__assign({}, lastSelection.range), { sheetId: sheetId });
|
|
25
|
+
// Excel's wizard: a selection wider than it is tall plots its rows as
|
|
26
|
+
// the series; otherwise the columns are.
|
|
27
|
+
var orientation = (0, chart_orientation_1.pickSeriesOrientationForRange)(dataRange);
|
|
28
|
+
var derived = (0, chart_orientation_1.deriveChartSeriesFromRange)({
|
|
29
|
+
range: dataRange,
|
|
30
|
+
orientation: orientation,
|
|
31
|
+
getFormattedValue: getFormattedValue,
|
|
32
|
+
});
|
|
33
|
+
var categoryAxis = derived.domains[0].sources;
|
|
34
|
+
var len = derived.series.length;
|
|
35
|
+
// Keep only the series whose first data cell is a number (or empty).
|
|
29
36
|
var chartData = len === 0
|
|
30
37
|
? [
|
|
31
38
|
{
|
|
@@ -34,36 +41,16 @@ var createChart = function (_a) {
|
|
|
34
41
|
aggregateType: "COUNT",
|
|
35
42
|
},
|
|
36
43
|
]
|
|
37
|
-
:
|
|
38
|
-
.
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var dataStartRowIndex = lastSelection.range.startRowIndex + 1;
|
|
44
|
-
var dataStartColumnIndex = columnIndex;
|
|
45
|
-
var firstEffectiveValue = getEffectiveValue(sheetId, dataStartRowIndex, dataStartColumnIndex);
|
|
46
|
-
var isNumberOrEmpty = +(0, utils_1.isNumber)(firstEffectiveValue) ||
|
|
47
|
-
firstEffectiveValue === undefined;
|
|
48
|
-
if (!isNumberOrEmpty) {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
return {
|
|
52
|
-
dataLabel: dataLabel,
|
|
53
|
-
sources: [
|
|
54
|
-
tslib_1.__assign(tslib_1.__assign({}, lastSelection.range), { startRowIndex: dataStartRowIndex, endRowIndex: (0, exports.ensureValidEndIndex)(lastSelection.range.endRowIndex, dataStartRowIndex), startColumnIndex: columnIndex, endColumnIndex: columnIndex, sheetId: sheetId }),
|
|
55
|
-
],
|
|
56
|
-
};
|
|
57
|
-
})
|
|
58
|
-
.filter(Boolean);
|
|
44
|
+
: derived.series.filter(function (entry) {
|
|
45
|
+
var _a = tslib_1.__read(entry.sources, 1), source = _a[0];
|
|
46
|
+
var firstEffectiveValue = getEffectiveValue(sheetId, source.startRowIndex, source.startColumnIndex);
|
|
47
|
+
return (+(0, utils_1.isNumber)(firstEffectiveValue) ||
|
|
48
|
+
firstEffectiveValue === undefined);
|
|
49
|
+
});
|
|
59
50
|
var chartTypeConfig = len === 0
|
|
60
51
|
? (0, chart_spec_utils_1.getDefaultChartTypeSpec)("pie")
|
|
61
52
|
: (0, chart_spec_utils_1.getDefaultChartTypeSpec)("line");
|
|
62
|
-
var baseSpec = tslib_1.__assign(tslib_1.__assign({}, chartTypeConfig), { dataRange:
|
|
63
|
-
{
|
|
64
|
-
sources: categoryAxis,
|
|
65
|
-
},
|
|
66
|
-
], series: chartData });
|
|
53
|
+
var baseSpec = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, chartTypeConfig), { dataRange: dataRange }), (orientation === "rows" ? { seriesOrientation: orientation } : {})), { domains: derived.domains, series: chartData });
|
|
67
54
|
var finalChartSpec = chartSpec !== null && chartSpec !== void 0 ? chartSpec : {
|
|
68
55
|
chartId: (_b = idCreationStrategy === null || idCreationStrategy === void 0 ? void 0 : idCreationStrategy("chart")) !== null && _b !== void 0 ? _b : (0, utils_1.uuid)(),
|
|
69
56
|
position: {
|
|
@@ -89,18 +76,22 @@ var createChart = function (_a) {
|
|
|
89
76
|
}
|
|
90
77
|
// Update charts
|
|
91
78
|
onChangeCharts === null || onChangeCharts === void 0 ? void 0 : onChangeCharts(function (prevCharts) {
|
|
92
|
-
var _a
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
79
|
+
var _a;
|
|
80
|
+
// A requested id that is already taken gets a fresh one before the chart is finalized, so
|
|
81
|
+
// the stored chart, the history entry and the returned spec all carry the same id (the
|
|
82
|
+
// caller's spec is left untouched).
|
|
83
|
+
if (prevCharts.some(function (c) { return c.chartId === finalChartSpec.chartId; })) {
|
|
84
|
+
finalChartSpec = tslib_1.__assign(tslib_1.__assign({}, finalChartSpec), { chartId: (_a = idCreationStrategy === null || idCreationStrategy === void 0 ? void 0 : idCreationStrategy("chart")) !== null && _a !== void 0 ? _a : (0, utils_1.uuid)() });
|
|
85
|
+
}
|
|
86
|
+
var _b = tslib_1.__read((0, immer_1.produceWithPatches)(prevCharts, function (draft) {
|
|
100
87
|
draft.push(finalChartSpec);
|
|
101
|
-
}), 3), nextState =
|
|
88
|
+
}), 3), nextState = _b[0], patches = _b[1], inversePatches = _b[2];
|
|
102
89
|
saveHistory({
|
|
103
90
|
charts: { patches: patches, inversePatches: inversePatches },
|
|
91
|
+
selectedEmbedOrChart: {
|
|
92
|
+
undo: undefined,
|
|
93
|
+
redo: finalChartSpec.chartId,
|
|
94
|
+
},
|
|
104
95
|
});
|
|
105
96
|
return nextState;
|
|
106
97
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-chart.d.ts","sourceRoot":"","sources":["../../../interface/delete-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAK1E,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,qBAAqB,CAAC,CAAC,CAAC,MACjB,SAAS,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"delete-chart.d.ts","sourceRoot":"","sources":["../../../interface/delete-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAK1E,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,qBAAqB,CAAC,CAAC,CAAC,MACjB,SAAS,MAAM,GAAG,MAAM,SA0BjC,CAAC"}
|
|
@@ -18,6 +18,10 @@ var deleteChart = function (_a) {
|
|
|
18
18
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
19
19
|
saveHistory({
|
|
20
20
|
charts: { patches: patches, inversePatches: inversePatches },
|
|
21
|
+
selectedEmbedOrChart: {
|
|
22
|
+
undo: chartId,
|
|
23
|
+
redo: undefined,
|
|
24
|
+
},
|
|
21
25
|
});
|
|
22
26
|
return nextState;
|
|
23
27
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CellData, EmbeddedChart, MoveChartTarget, Sheet } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import type { UseOnMoveChartToSheetProps } from "../hooks/use-on-move-chart-to-sheet";
|
|
3
|
+
/** The first unused `Chart${n}` title (honouring `generatedNames.chartSheet`), like Excel. */
|
|
4
|
+
export declare const getNextChartSheetTitle: (sheets: Pick<Sheet, "title">[], generatedNames?: UseOnMoveChartToSheetProps<CellData, Sheet>["generatedNames"]) => string;
|
|
5
|
+
/**
|
|
6
|
+
* Excel's "Move Chart…": relocate a chart to a new chartsheet (a tab that is
|
|
7
|
+
* the chart, no cells) or onto another worksheet at A1. Moving a chart OUT of
|
|
8
|
+
* a chartsheet deletes the now-empty chartsheet, like Excel. Sheet and chart
|
|
9
|
+
* patches share one history pointer so the whole move undoes in one step.
|
|
10
|
+
* Returns the sheet the chart now lives on (undefined when nothing moved).
|
|
11
|
+
*/
|
|
12
|
+
export declare const moveChartToSheet: <T extends CellData, S extends Sheet>({ onChangeCharts, onChangeSheets, onChangeActiveSheet, createHistory, idCreationStrategy, generatedNames, }: UseOnMoveChartToSheetProps<T, S>) => (chart: EmbeddedChart, target: MoveChartTarget) => number | undefined;
|
|
13
|
+
//# sourceMappingURL=move-chart-to-sheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"move-chart-to-sheet.d.ts","sourceRoot":"","sources":["../../../interface/move-chart-to-sheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,eAAe,EACf,KAAK,EACN,MAAM,2BAA2B,CAAC;AASnC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAKtF,8FAA8F;AAC9F,eAAO,MAAM,sBAAsB,GACjC,QAAQ,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAC9B,iBAAiB,0BAA0B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,gBAAgB,CAAC,WAI7E,CAAC;AA8BJ;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,6GAOnE,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,MACzB,OAAO,aAAa,EAAE,QAAQ,eAAe,uBAqGtD,CAAC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.moveChartToSheet = exports.getNextChartSheetTitle = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var spreadsheet_1 = require("@rowsncolumns/spreadsheet");
|
|
6
|
+
var spreadsheet_state_1 = require("@rowsncolumns/spreadsheet-state");
|
|
7
|
+
var utils_1 = require("@rowsncolumns/utils");
|
|
8
|
+
var immer_1 = require("immer");
|
|
9
|
+
// For external interface
|
|
10
|
+
(0, immer_1.enablePatches)();
|
|
11
|
+
/** The first unused `Chart${n}` title (honouring `generatedNames.chartSheet`), like Excel. */
|
|
12
|
+
var getNextChartSheetTitle = function (sheets, generatedNames) {
|
|
13
|
+
return (0, spreadsheet_1.getNextChartSheetTitle)(sheets, function (index) {
|
|
14
|
+
return (0, spreadsheet_state_1.truncateSheetTitle)((0, spreadsheet_state_1.getGeneratedChartSheetName)(index, generatedNames));
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
exports.getNextChartSheetTitle = getNextChartSheetTitle;
|
|
18
|
+
/**
|
|
19
|
+
* Sort key placing a new tab right after `afterSheetId` without renumbering
|
|
20
|
+
* the other tabs (patches stay add-only for ShareDB).
|
|
21
|
+
*/
|
|
22
|
+
var indexAfterSheet = function (sheets, afterSheetId) {
|
|
23
|
+
var _a;
|
|
24
|
+
var ordered = sheets
|
|
25
|
+
.map(function (sheet, arrayIndex) {
|
|
26
|
+
var _a;
|
|
27
|
+
return ({
|
|
28
|
+
sheet: sheet,
|
|
29
|
+
effectiveIndex: (_a = sheet.index) !== null && _a !== void 0 ? _a : arrayIndex,
|
|
30
|
+
arrayIndex: arrayIndex,
|
|
31
|
+
});
|
|
32
|
+
})
|
|
33
|
+
.sort(function (a, b) {
|
|
34
|
+
return a.effectiveIndex - b.effectiveIndex || a.arrayIndex - b.arrayIndex;
|
|
35
|
+
});
|
|
36
|
+
var position = ordered.findIndex(function (entry) { return entry.sheet.sheetId === afterSheetId; });
|
|
37
|
+
var maxIndex = ordered.length > 0
|
|
38
|
+
? Math.max.apply(Math, tslib_1.__spreadArray([], tslib_1.__read(ordered.map(function (entry) { return entry.effectiveIndex; })), false)) : -1;
|
|
39
|
+
if (position === -1)
|
|
40
|
+
return maxIndex + 1;
|
|
41
|
+
var current = ordered[position].effectiveIndex;
|
|
42
|
+
var next = (_a = ordered[position + 1]) === null || _a === void 0 ? void 0 : _a.effectiveIndex;
|
|
43
|
+
return next === undefined ? current + 1 : current + (next - current) / 2;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Excel's "Move Chart…": relocate a chart to a new chartsheet (a tab that is
|
|
47
|
+
* the chart, no cells) or onto another worksheet at A1. Moving a chart OUT of
|
|
48
|
+
* a chartsheet deletes the now-empty chartsheet, like Excel. Sheet and chart
|
|
49
|
+
* patches share one history pointer so the whole move undoes in one step.
|
|
50
|
+
* Returns the sheet the chart now lives on (undefined when nothing moved).
|
|
51
|
+
*/
|
|
52
|
+
var moveChartToSheet = function (_a) {
|
|
53
|
+
var onChangeCharts = _a.onChangeCharts, onChangeSheets = _a.onChangeSheets, onChangeActiveSheet = _a.onChangeActiveSheet, createHistory = _a.createHistory, idCreationStrategy = _a.idCreationStrategy, generatedNames = _a.generatedNames;
|
|
54
|
+
return function (chart, target) {
|
|
55
|
+
var chartId = chart.chartId;
|
|
56
|
+
var sourceSheetId = chart.position.sheetId;
|
|
57
|
+
if (target.kind === "sheet" && target.sheetId === sourceSheetId) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
var saveHistory = createHistory();
|
|
61
|
+
var targetSheetId;
|
|
62
|
+
var targetIsChartSheet = false;
|
|
63
|
+
onChangeSheets(function (prevSheets) {
|
|
64
|
+
var _a = tslib_1.__read((0, immer_1.produceWithPatches)(prevSheets, function (draft) {
|
|
65
|
+
var _a, _b, _c;
|
|
66
|
+
var sourceIndex = draft.findIndex(function (sheet) { return sheet.sheetId === sourceSheetId; });
|
|
67
|
+
if (target.kind === "sheet") {
|
|
68
|
+
var destination = draft.find(function (sheet) { return sheet.sheetId === target.sheetId; });
|
|
69
|
+
if (!destination || destination.type === "chartsheet") {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
targetSheetId = destination.sheetId;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
var newSheetId = (_a = idCreationStrategy === null || idCreationStrategy === void 0 ? void 0 : idCreationStrategy("sheet")) !== null && _a !== void 0 ? _a : (0, utils_1.uuid)();
|
|
76
|
+
var existingIds = new Set(draft.map(function (sheet) { return sheet.sheetId; }));
|
|
77
|
+
while (existingIds.has(newSheetId)) {
|
|
78
|
+
newSheetId = (_b = idCreationStrategy === null || idCreationStrategy === void 0 ? void 0 : idCreationStrategy("sheet")) !== null && _b !== void 0 ? _b : (0, utils_1.uuid)();
|
|
79
|
+
}
|
|
80
|
+
var requested = (_c = target.title) === null || _c === void 0 ? void 0 : _c.trim();
|
|
81
|
+
var existingTitles = new Set(draft.map(function (sheet) { return sheet.title; }));
|
|
82
|
+
var chartSheet = {
|
|
83
|
+
title: requested && !existingTitles.has(requested)
|
|
84
|
+
? (0, spreadsheet_state_1.truncateSheetTitle)(requested)
|
|
85
|
+
: (0, exports.getNextChartSheetTitle)(draft, generatedNames),
|
|
86
|
+
sheetId: newSheetId,
|
|
87
|
+
type: "chartsheet",
|
|
88
|
+
chartId: chartId,
|
|
89
|
+
index: indexAfterSheet(draft, sourceSheetId),
|
|
90
|
+
merges: [],
|
|
91
|
+
rowMetadata: [],
|
|
92
|
+
columnMetadata: [],
|
|
93
|
+
};
|
|
94
|
+
draft.push((0, immer_1.castDraft)(chartSheet));
|
|
95
|
+
targetSheetId = newSheetId;
|
|
96
|
+
targetIsChartSheet = true;
|
|
97
|
+
}
|
|
98
|
+
// The chart was the whole sheet: nothing is left to show.
|
|
99
|
+
if (sourceIndex !== -1 && draft[sourceIndex].type === "chartsheet") {
|
|
100
|
+
draft.splice(sourceIndex, 1);
|
|
101
|
+
}
|
|
102
|
+
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
103
|
+
if (targetSheetId !== undefined) {
|
|
104
|
+
saveHistory({
|
|
105
|
+
sheets: { patches: patches, inversePatches: inversePatches },
|
|
106
|
+
sheetId: { undo: sourceSheetId, redo: targetSheetId },
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return nextState;
|
|
110
|
+
});
|
|
111
|
+
if (targetSheetId === undefined) {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
var destinationSheetId = targetSheetId;
|
|
115
|
+
onChangeCharts === null || onChangeCharts === void 0 ? void 0 : onChangeCharts(function (prevCharts) {
|
|
116
|
+
var _a = tslib_1.__read((0, immer_1.produceWithPatches)(prevCharts, function (draft) {
|
|
117
|
+
var moved = draft.find(function (entry) { return entry.chartId === chartId; });
|
|
118
|
+
if (!moved)
|
|
119
|
+
return;
|
|
120
|
+
var _a = moved.position.overlayPosition, widthPixels = _a.widthPixels, heightPixels = _a.heightPixels;
|
|
121
|
+
moved.position = {
|
|
122
|
+
sheetId: destinationSheetId,
|
|
123
|
+
overlayPosition: tslib_1.__assign({ anchorCell: { rowIndex: 1, columnIndex: 1 }, offsetXPixels: 0, offsetYPixels: 0, widthPixels: widthPixels, heightPixels: heightPixels }, (targetIsChartSheet ? { placement: "absolute" } : {})),
|
|
124
|
+
};
|
|
125
|
+
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
126
|
+
saveHistory({
|
|
127
|
+
charts: { patches: patches, inversePatches: inversePatches },
|
|
128
|
+
selectedEmbedOrChart: { undo: chartId, redo: chartId },
|
|
129
|
+
});
|
|
130
|
+
return nextState;
|
|
131
|
+
});
|
|
132
|
+
onChangeActiveSheet === null || onChangeActiveSheet === void 0 ? void 0 : onChangeActiveSheet(destinationSheetId);
|
|
133
|
+
return destinationSheetId;
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
exports.moveChartToSheet = moveChartToSheet;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CellInterface } from "@rowsncolumns/grid";
|
|
2
|
-
import { type CellData } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import { type CellData, type OverlayToAnchor } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
import type { UseOnMoveChartProps } from "../hooks/use-on-move-chart";
|
|
4
|
-
export declare const moveChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnMoveChartProps<T>) => (chartId: string | number, anchorCell: CellInterface, offsetXPixels: number, offsetYPixels: number) => void;
|
|
4
|
+
export declare const moveChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnMoveChartProps<T>) => (chartId: string | number, anchorCell: CellInterface, offsetXPixels: number, offsetYPixels: number, toAnchor?: OverlayToAnchor) => void;
|
|
5
5
|
//# sourceMappingURL=move-chart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"move-chart.d.ts","sourceRoot":"","sources":["../../../interface/move-chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"move-chart.d.ts","sourceRoot":"","sources":["../../../interface/move-chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAIhF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAKtE,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG3C,mBAAmB,CAAC,CAAC,CAAC,MAErB,SAAS,MAAM,GAAG,MAAM,EACxB,YAAY,aAAa,EACzB,eAAe,MAAM,EACrB,eAAe,MAAM,EACrB,WAAW,eAAe,SA4B7B,CAAC"}
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.moveChart = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
+
var spreadsheet_state_1 = require("@rowsncolumns/spreadsheet-state");
|
|
5
6
|
var immer_1 = require("immer");
|
|
6
7
|
// For external interface
|
|
7
8
|
(0, immer_1.enablePatches)();
|
|
8
9
|
var moveChart = function (_a) {
|
|
9
10
|
var onChangeCharts = _a.onChangeCharts, createHistory = _a.createHistory;
|
|
10
|
-
return function (chartId, anchorCell, offsetXPixels, offsetYPixels) {
|
|
11
|
+
return function (chartId, anchorCell, offsetXPixels, offsetYPixels, toAnchor) {
|
|
11
12
|
var saveHistory = createHistory();
|
|
12
13
|
onChangeCharts === null || onChangeCharts === void 0 ? void 0 : onChangeCharts(function (prevCharts) {
|
|
13
14
|
var _a = tslib_1.__read((0, immer_1.produceWithPatches)(prevCharts, function (draft) {
|
|
@@ -16,10 +17,15 @@ var moveChart = function (_a) {
|
|
|
16
17
|
chart.position.overlayPosition.anchorCell = anchorCell;
|
|
17
18
|
chart.position.overlayPosition.offsetXPixels = offsetXPixels;
|
|
18
19
|
chart.position.overlayPosition.offsetYPixels = offsetYPixels;
|
|
20
|
+
(0, spreadsheet_state_1.setOverlayToAnchor)(chart.position.overlayPosition, toAnchor);
|
|
19
21
|
}
|
|
20
22
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
21
23
|
saveHistory({
|
|
22
24
|
charts: { patches: patches, inversePatches: inversePatches },
|
|
25
|
+
selectedEmbedOrChart: {
|
|
26
|
+
undo: chartId,
|
|
27
|
+
redo: chartId,
|
|
28
|
+
},
|
|
23
29
|
});
|
|
24
30
|
return nextState;
|
|
25
31
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CellInterface } from "@rowsncolumns/grid";
|
|
2
|
-
import { type CellData } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import { type CellData, type OverlayToAnchor } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
import type { UseOnResizeChartProps } from "../hooks/use-on-resize-chart";
|
|
4
|
-
export declare const resizeChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnResizeChartProps<T>) => (chartId: string | number, anchorCell: CellInterface, offsetXPixels: number, offsetYPixels: number, width: number, height: number) => void;
|
|
4
|
+
export declare const resizeChart: <T extends CellData>({ onChangeCharts, createHistory, }: UseOnResizeChartProps<T>) => (chartId: string | number, anchorCell: CellInterface, offsetXPixels: number, offsetYPixels: number, width: number, height: number, toAnchor?: OverlayToAnchor) => void;
|
|
5
5
|
//# sourceMappingURL=resize-chart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resize-chart.d.ts","sourceRoot":"","sources":["../../../interface/resize-chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"resize-chart.d.ts","sourceRoot":"","sources":["../../../interface/resize-chart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAIhF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAK1E,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,qBAAqB,CAAC,CAAC,CAAC,MAEvB,SAAS,MAAM,GAAG,MAAM,EACxB,YAAY,aAAa,EACzB,eAAe,MAAM,EACrB,eAAe,MAAM,EACrB,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,WAAW,eAAe,SA8B7B,CAAC"}
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resizeChart = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
+
var spreadsheet_state_1 = require("@rowsncolumns/spreadsheet-state");
|
|
5
6
|
var immer_1 = require("immer");
|
|
6
7
|
// For external interface
|
|
7
8
|
(0, immer_1.enablePatches)();
|
|
8
9
|
var resizeChart = function (_a) {
|
|
9
10
|
var onChangeCharts = _a.onChangeCharts, createHistory = _a.createHistory;
|
|
10
|
-
return function (chartId, anchorCell, offsetXPixels, offsetYPixels, width, height) {
|
|
11
|
+
return function (chartId, anchorCell, offsetXPixels, offsetYPixels, width, height, toAnchor) {
|
|
11
12
|
var saveHistory = createHistory();
|
|
12
13
|
onChangeCharts === null || onChangeCharts === void 0 ? void 0 : onChangeCharts(function (prevCharts) {
|
|
13
14
|
var _a = tslib_1.__read((0, immer_1.produceWithPatches)(prevCharts, function (draft) {
|
|
@@ -18,10 +19,15 @@ var resizeChart = function (_a) {
|
|
|
18
19
|
chart.position.overlayPosition.offsetYPixels = offsetYPixels;
|
|
19
20
|
chart.position.overlayPosition.widthPixels = width;
|
|
20
21
|
chart.position.overlayPosition.heightPixels = height;
|
|
22
|
+
(0, spreadsheet_state_1.setOverlayToAnchor)(chart.position.overlayPosition, toAnchor);
|
|
21
23
|
}
|
|
22
24
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
23
25
|
saveHistory({
|
|
24
26
|
charts: { patches: patches, inversePatches: inversePatches },
|
|
27
|
+
selectedEmbedOrChart: {
|
|
28
|
+
undo: chartId,
|
|
29
|
+
redo: chartId,
|
|
30
|
+
},
|
|
25
31
|
});
|
|
26
32
|
return nextState;
|
|
27
33
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-chart.d.ts","sourceRoot":"","sources":["../../../interface/update-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAM1E,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,qBAAqB,CAAC,CAAC,CAAC,MACjB,OAAO,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"update-chart.d.ts","sourceRoot":"","sources":["../../../interface/update-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAM1E,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,oCAG7C,qBAAqB,CAAC,CAAC,CAAC,MACjB,OAAO,OAAO,CAAC,aAAa,CAAC,SA+BtC,CAAC"}
|
|
@@ -21,6 +21,10 @@ var updateChart = function (_a) {
|
|
|
21
21
|
}), 3), nextState = _a[0], patches = _a[1], inversePatches = _a[2];
|
|
22
22
|
saveHistory({
|
|
23
23
|
charts: { patches: patches, inversePatches: inversePatches },
|
|
24
|
+
selectedEmbedOrChart: {
|
|
25
|
+
undo: chart.chartId,
|
|
26
|
+
redo: chart.chartId,
|
|
27
|
+
},
|
|
24
28
|
});
|
|
25
29
|
return nextState;
|
|
26
30
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { EChartComponentProps } from "../../types";
|
|
3
3
|
export type BasicChartProps = EChartComponentProps;
|
|
4
|
-
export declare const BasicChart: ({ width, height, chart, theme, isDarkMode, sheetId, readonly, getDomainValuesFromRange, getSeriesValuesFromRange, onDeleteChart, onRequestEdit, onRequestCalculate, isSelected, }: BasicChartProps) => React.JSX.Element;
|
|
4
|
+
export declare const BasicChart: ({ width, height, chart, theme, isDarkMode, sheetId, readonly, getDomainValuesFromRange, getSeriesValuesFromRange, getFormattingFromRange, onDeleteChart, onUpdateChart, onRequestEdit, onRequestCalculate, isSelected, fieldButtons, }: BasicChartProps) => React.JSX.Element;
|
|
5
5
|
//# sourceMappingURL=basic-chart.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic-chart.d.ts","sourceRoot":"","sources":["../../../../plotly/basic-chart/basic-chart.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"basic-chart.d.ts","sourceRoot":"","sources":["../../../../plotly/basic-chart/basic-chart.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAGtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AA4VxD,MAAM,MAAM,eAAe,GAAG,oBAAoB,CAAC;AA0FnD,eAAO,MAAM,UAAU,GAAI,wOAiBxB,eAAe,sBAmrEjB,CAAC"}
|