@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
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.switchRowColumn = exports.canSwitchRowColumn = exports.rectangularSeriesBounds = exports.deriveChartSeriesFromRange = exports.pickSeriesOrientationForRange = exports.flipSeriesOrientation = exports.inferSeriesOrientation = exports.cellLabelGetterFromRangeReader = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var chart_spec_utils_1 = require("./chart-spec-utils");
|
|
6
|
+
/**
|
|
7
|
+
* Adapt a range reader (the renderers' `getDomainValuesFromRange`) into
|
|
8
|
+
* the single-cell label getter the orientation helpers take.
|
|
9
|
+
*/
|
|
10
|
+
var cellLabelGetterFromRangeReader = function (readRange) {
|
|
11
|
+
return function (sheetId, rowIndex, columnIndex) {
|
|
12
|
+
var _a = tslib_1.__read(readRange({
|
|
13
|
+
sheetId: sheetId,
|
|
14
|
+
startRowIndex: rowIndex,
|
|
15
|
+
endRowIndex: rowIndex,
|
|
16
|
+
startColumnIndex: columnIndex,
|
|
17
|
+
endColumnIndex: columnIndex,
|
|
18
|
+
}, "SHOW_ALL"), 1), value = _a[0];
|
|
19
|
+
return value == null ? undefined : String(value);
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.cellLabelGetterFromRangeReader = cellLabelGetterFromRangeReader;
|
|
23
|
+
var isSingleRow = function (range) {
|
|
24
|
+
return range.startRowIndex === range.endRowIndex;
|
|
25
|
+
};
|
|
26
|
+
var isSingleColumn = function (range) {
|
|
27
|
+
return range.startColumnIndex === range.endColumnIndex;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Which way a chart's series run. The explicit flag wins; otherwise a
|
|
31
|
+
* chart whose every series is a single row spanning several columns is
|
|
32
|
+
* Excel's series-in-rows shape (OOXML carries no flag — each `<c:ser>` is
|
|
33
|
+
* its own reference — so imported charts are read this way).
|
|
34
|
+
*/
|
|
35
|
+
var inferSeriesOrientation = function (spec) {
|
|
36
|
+
if (spec.seriesOrientation)
|
|
37
|
+
return spec.seriesOrientation;
|
|
38
|
+
if (!(0, chart_spec_utils_1.isBasicChartSpec)(spec))
|
|
39
|
+
return "columns";
|
|
40
|
+
var sources = spec.series.flatMap(function (entry) { var _a; return (_a = entry.sources) !== null && _a !== void 0 ? _a : []; });
|
|
41
|
+
if (sources.length === 0)
|
|
42
|
+
return "columns";
|
|
43
|
+
return sources.every(function (range) { return isSingleRow(range) && !isSingleColumn(range); })
|
|
44
|
+
? "rows"
|
|
45
|
+
: "columns";
|
|
46
|
+
};
|
|
47
|
+
exports.inferSeriesOrientation = inferSeriesOrientation;
|
|
48
|
+
var flipSeriesOrientation = function (orientation) { return (orientation === "rows" ? "columns" : "rows"); };
|
|
49
|
+
exports.flipSeriesOrientation = flipSeriesOrientation;
|
|
50
|
+
/**
|
|
51
|
+
* Excel's chart wizard picks series-in-rows when the selection is wider
|
|
52
|
+
* than it is tall.
|
|
53
|
+
*/
|
|
54
|
+
var pickSeriesOrientationForRange = function (range) {
|
|
55
|
+
return range.endColumnIndex - range.startColumnIndex >
|
|
56
|
+
range.endRowIndex - range.startRowIndex
|
|
57
|
+
? "rows"
|
|
58
|
+
: "columns";
|
|
59
|
+
};
|
|
60
|
+
exports.pickSeriesOrientationForRange = pickSeriesOrientationForRange;
|
|
61
|
+
/**
|
|
62
|
+
* Split a data range the way Excel's chart wizard does. Series in
|
|
63
|
+
* columns: the first column (beneath the header row) is the category
|
|
64
|
+
* axis and every further column is one series named by its header cell.
|
|
65
|
+
* Series in rows is the transpose: the first row (right of the header
|
|
66
|
+
* column) is the category axis and every further row is a series named
|
|
67
|
+
* by its first cell. A range only one row (column) tall still yields a
|
|
68
|
+
* one-cell-deep axis so the chart has something to plot.
|
|
69
|
+
*/
|
|
70
|
+
var deriveChartSeriesFromRange = function (_a) {
|
|
71
|
+
var range = _a.range, orientation = _a.orientation, getFormattedValue = _a.getFormattedValue;
|
|
72
|
+
var sheetId = range.sheetId, startRowIndex = range.startRowIndex, startColumnIndex = range.startColumnIndex;
|
|
73
|
+
var endRowIndex = Math.max(range.endRowIndex, startRowIndex);
|
|
74
|
+
var endColumnIndex = Math.max(range.endColumnIndex, startColumnIndex);
|
|
75
|
+
var label = function (rowIndex, columnIndex) { var _a; return (_a = getFormattedValue === null || getFormattedValue === void 0 ? void 0 : getFormattedValue(sheetId, rowIndex, columnIndex)) !== null && _a !== void 0 ? _a : undefined; };
|
|
76
|
+
if (orientation === "rows") {
|
|
77
|
+
var categoryAxis_1 = {
|
|
78
|
+
sheetId: sheetId,
|
|
79
|
+
startRowIndex: startRowIndex,
|
|
80
|
+
endRowIndex: startRowIndex,
|
|
81
|
+
startColumnIndex: startColumnIndex + 1,
|
|
82
|
+
endColumnIndex: Math.max(endColumnIndex, startColumnIndex + 1),
|
|
83
|
+
};
|
|
84
|
+
var series_1 = [];
|
|
85
|
+
for (var rowIndex = startRowIndex + 1; rowIndex <= endRowIndex; rowIndex++) {
|
|
86
|
+
series_1.push({
|
|
87
|
+
dataLabel: label(rowIndex, startColumnIndex),
|
|
88
|
+
sources: [
|
|
89
|
+
{
|
|
90
|
+
sheetId: sheetId,
|
|
91
|
+
startRowIndex: rowIndex,
|
|
92
|
+
endRowIndex: rowIndex,
|
|
93
|
+
startColumnIndex: categoryAxis_1.startColumnIndex,
|
|
94
|
+
endColumnIndex: categoryAxis_1.endColumnIndex,
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return { domains: [{ sources: [categoryAxis_1] }], series: series_1 };
|
|
100
|
+
}
|
|
101
|
+
var categoryAxis = {
|
|
102
|
+
sheetId: sheetId,
|
|
103
|
+
startRowIndex: startRowIndex + 1,
|
|
104
|
+
endRowIndex: Math.max(endRowIndex, startRowIndex + 1),
|
|
105
|
+
startColumnIndex: startColumnIndex,
|
|
106
|
+
endColumnIndex: startColumnIndex,
|
|
107
|
+
};
|
|
108
|
+
var series = [];
|
|
109
|
+
for (var columnIndex = startColumnIndex + 1; columnIndex <= endColumnIndex; columnIndex++) {
|
|
110
|
+
series.push({
|
|
111
|
+
dataLabel: label(startRowIndex, columnIndex),
|
|
112
|
+
sources: [
|
|
113
|
+
{
|
|
114
|
+
sheetId: sheetId,
|
|
115
|
+
startRowIndex: categoryAxis.startRowIndex,
|
|
116
|
+
endRowIndex: categoryAxis.endRowIndex,
|
|
117
|
+
startColumnIndex: columnIndex,
|
|
118
|
+
endColumnIndex: columnIndex,
|
|
119
|
+
},
|
|
120
|
+
],
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return { domains: [{ sources: [categoryAxis] }], series: series };
|
|
124
|
+
};
|
|
125
|
+
exports.deriveChartSeriesFromRange = deriveChartSeriesFromRange;
|
|
126
|
+
/**
|
|
127
|
+
* The block the series tile when they form one rectangle: every series
|
|
128
|
+
* is a single source on the same sheet, all single columns sharing one
|
|
129
|
+
* row span (series in columns) or all single rows sharing one column
|
|
130
|
+
* span (series in rows), and adjacent to each other in order. Undefined
|
|
131
|
+
* for anything else — there is no meaningful transpose of scattered
|
|
132
|
+
* sources.
|
|
133
|
+
*/
|
|
134
|
+
var rectangularSeriesBounds = function (spec, orientation) {
|
|
135
|
+
var e_1, _a;
|
|
136
|
+
if (!(0, chart_spec_utils_1.isBasicChartSpec)(spec) || spec.series.length === 0)
|
|
137
|
+
return undefined;
|
|
138
|
+
var sources = [];
|
|
139
|
+
try {
|
|
140
|
+
for (var _b = tslib_1.__values(spec.series), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
141
|
+
var entry = _c.value;
|
|
142
|
+
if (!entry.sources || entry.sources.length !== 1)
|
|
143
|
+
return undefined;
|
|
144
|
+
sources.push(entry.sources[0]);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
148
|
+
finally {
|
|
149
|
+
try {
|
|
150
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
151
|
+
}
|
|
152
|
+
finally { if (e_1) throw e_1.error; }
|
|
153
|
+
}
|
|
154
|
+
var _d = tslib_1.__read(sources, 1), first = _d[0];
|
|
155
|
+
var alongRows = orientation === "columns";
|
|
156
|
+
for (var i = 0; i < sources.length; i++) {
|
|
157
|
+
var range = sources[i];
|
|
158
|
+
if (range.sheetId !== first.sheetId)
|
|
159
|
+
return undefined;
|
|
160
|
+
if (alongRows) {
|
|
161
|
+
if (!isSingleColumn(range) ||
|
|
162
|
+
range.startRowIndex !== first.startRowIndex ||
|
|
163
|
+
range.endRowIndex !== first.endRowIndex ||
|
|
164
|
+
range.startColumnIndex !== first.startColumnIndex + i) {
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
else if (!isSingleRow(range) ||
|
|
169
|
+
range.startColumnIndex !== first.startColumnIndex ||
|
|
170
|
+
range.endColumnIndex !== first.endColumnIndex ||
|
|
171
|
+
range.startRowIndex !== first.startRowIndex + i) {
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
var last = sources[sources.length - 1];
|
|
176
|
+
return {
|
|
177
|
+
sheetId: first.sheetId,
|
|
178
|
+
startRowIndex: first.startRowIndex,
|
|
179
|
+
endRowIndex: last.endRowIndex,
|
|
180
|
+
startColumnIndex: first.startColumnIndex,
|
|
181
|
+
endColumnIndex: last.endColumnIndex,
|
|
182
|
+
};
|
|
183
|
+
};
|
|
184
|
+
exports.rectangularSeriesBounds = rectangularSeriesBounds;
|
|
185
|
+
/** Whether `switchRowColumn` has a transpose to offer for this chart. */
|
|
186
|
+
var canSwitchRowColumn = function (spec) {
|
|
187
|
+
return (0, chart_spec_utils_1.isBasicChartSpec)(spec) &&
|
|
188
|
+
(!!spec.dataRange ||
|
|
189
|
+
(0, exports.rectangularSeriesBounds)(spec, (0, exports.inferSeriesOrientation)(spec)) !==
|
|
190
|
+
undefined);
|
|
191
|
+
};
|
|
192
|
+
exports.canSwitchRowColumn = canSwitchRowColumn;
|
|
193
|
+
/**
|
|
194
|
+
* Excel's "Switch Row/Column". With a `dataRange` the series and
|
|
195
|
+
* category axis are re-derived from it the other way round. Without one,
|
|
196
|
+
* rectangular series sources are transposed: each row (column) of the
|
|
197
|
+
* block becomes a series, named after the old category cell beside it,
|
|
198
|
+
* and the old series names become the categories (Excel's behaviour —
|
|
199
|
+
* the names are carried as inline values because the spec stores them
|
|
200
|
+
* as text, not as a cell reference). Per-series presentation (colours,
|
|
201
|
+
* trendlines, …) does not survive the transpose, as in Excel. Returns
|
|
202
|
+
* undefined when the sources cannot be transposed.
|
|
203
|
+
*/
|
|
204
|
+
var switchRowColumn = function (spec, _a) {
|
|
205
|
+
var _b, _c, _d, _e, _f;
|
|
206
|
+
var _g = _a === void 0 ? {} : _a, getFormattedValue = _g.getFormattedValue;
|
|
207
|
+
if (!(0, chart_spec_utils_1.isBasicChartSpec)(spec))
|
|
208
|
+
return undefined;
|
|
209
|
+
var current = (0, exports.inferSeriesOrientation)(spec);
|
|
210
|
+
var next = (0, exports.flipSeriesOrientation)(current);
|
|
211
|
+
if (spec.dataRange) {
|
|
212
|
+
var _h = (0, exports.deriveChartSeriesFromRange)({
|
|
213
|
+
range: spec.dataRange,
|
|
214
|
+
orientation: next,
|
|
215
|
+
getFormattedValue: getFormattedValue,
|
|
216
|
+
}), domains = _h.domains, series_2 = _h.series;
|
|
217
|
+
return tslib_1.__assign(tslib_1.__assign({}, spec), { seriesOrientation: next, domains: domains, series: series_2 });
|
|
218
|
+
}
|
|
219
|
+
var block = (0, exports.rectangularSeriesBounds)(spec, current);
|
|
220
|
+
if (!block)
|
|
221
|
+
return undefined;
|
|
222
|
+
var categorySource = (_d = (_c = (_b = spec.domains) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.sources) === null || _d === void 0 ? void 0 : _d[0];
|
|
223
|
+
var series = [];
|
|
224
|
+
if (next === "rows") {
|
|
225
|
+
for (var rowIndex = block.startRowIndex; rowIndex <= block.endRowIndex; rowIndex++) {
|
|
226
|
+
var offset = rowIndex - block.startRowIndex;
|
|
227
|
+
series.push({
|
|
228
|
+
dataLabel: categorySource && getFormattedValue
|
|
229
|
+
? (_e = getFormattedValue(categorySource.sheetId, categorySource.startRowIndex + offset, categorySource.startColumnIndex)) !== null && _e !== void 0 ? _e : undefined
|
|
230
|
+
: undefined,
|
|
231
|
+
sources: [
|
|
232
|
+
{
|
|
233
|
+
sheetId: block.sheetId,
|
|
234
|
+
startRowIndex: rowIndex,
|
|
235
|
+
endRowIndex: rowIndex,
|
|
236
|
+
startColumnIndex: block.startColumnIndex,
|
|
237
|
+
endColumnIndex: block.endColumnIndex,
|
|
238
|
+
},
|
|
239
|
+
],
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
for (var columnIndex = block.startColumnIndex; columnIndex <= block.endColumnIndex; columnIndex++) {
|
|
245
|
+
var offset = columnIndex - block.startColumnIndex;
|
|
246
|
+
series.push({
|
|
247
|
+
dataLabel: categorySource && getFormattedValue
|
|
248
|
+
? (_f = getFormattedValue(categorySource.sheetId, categorySource.startRowIndex, categorySource.startColumnIndex + offset)) !== null && _f !== void 0 ? _f : undefined
|
|
249
|
+
: undefined,
|
|
250
|
+
sources: [
|
|
251
|
+
{
|
|
252
|
+
sheetId: block.sheetId,
|
|
253
|
+
startRowIndex: block.startRowIndex,
|
|
254
|
+
endRowIndex: block.endRowIndex,
|
|
255
|
+
startColumnIndex: columnIndex,
|
|
256
|
+
endColumnIndex: columnIndex,
|
|
257
|
+
},
|
|
258
|
+
],
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
var categories = spec.series.map(function (entry, index) { var _a; return (_a = entry.dataLabel) !== null && _a !== void 0 ? _a : "Series ".concat(index + 1); });
|
|
263
|
+
return tslib_1.__assign(tslib_1.__assign({}, spec), { seriesOrientation: next, domains: [{ sources: [], inlineValues: categories }], series: series });
|
|
264
|
+
};
|
|
265
|
+
exports.switchRowColumn = switchRowColumn;
|
|
@@ -39,6 +39,9 @@ export declare const getDefaultChartTypeSpec: (chartType: ChartType) => Partial<
|
|
|
39
39
|
export declare const getPropertiesToRemove: (fromType: ChartType, toType: ChartType) => string[];
|
|
40
40
|
/**
|
|
41
41
|
* Checks if chart data array is empty or contains only placeholder entries.
|
|
42
|
+
* An entry carrying inline values (`<c:strLit>` / `<c:numLit>` categories,
|
|
43
|
+
* or the series names Switch Row/Column turns into categories) is real
|
|
44
|
+
* data even though it references no cells.
|
|
42
45
|
*/
|
|
43
46
|
export declare const isPlaceholderChartData: (data?: ChartData[]) => boolean;
|
|
44
47
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart-spec-utils.d.ts","sourceRoot":"","sources":["../../../utils/chart-spec-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,aAAa,EACb,UAAU,EACV,YAAY,EACb,MAAM,2BAA2B,CAAC;AAEnC,KAAK,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;AACpD,KAAK,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AACtD,KAAK,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAEvC,eAAO,MAAM,iBAAiB,6MAe5B,CAAC;AAEH,eAAO,MAAM,kBAAkB,6MAA4C,CAAC;AAE5E,eAAO,MAAM,qBAAqB,6MAGhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,WAAW,SAAS,KAAG,aAKvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,SAAS,KACd,IAAI,IAAI,SAAS,GAAG,cAAuD,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yEAAyE;IACzE,YAAY,CAAC,EACT,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,cAAc,GACd,QAAQ,GACR,MAAM,GACN,IAAI,CAAC;CACV,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,SAAS,KACd,IAAI,IAAI,SAAS,GAAG,qBACiB,CAAC;AAEzC,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC9C,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,SAAS,KACd,IAAI,IAAI,SAAS,GAAG,kBACoB,CAAC;AAwC5C;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,WAAW,SAAS,KACnB,OAAO,CAAC,SAAS,CAEnB,CAAC;
|
|
1
|
+
{"version":3,"file":"chart-spec-utils.d.ts","sourceRoot":"","sources":["../../../utils/chart-spec-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,SAAS,EACT,aAAa,EACb,UAAU,EACV,YAAY,EACb,MAAM,2BAA2B,CAAC;AAEnC,KAAK,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;AACpD,KAAK,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;AACtD,KAAK,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAEvC,eAAO,MAAM,iBAAiB,6MAe5B,CAAC;AAEH,eAAO,MAAM,kBAAkB,6MAA4C,CAAC;AAE5E,eAAO,MAAM,qBAAqB,6MAGhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,WAAW,SAAS,KAAG,aAKvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC3B,MAAM,SAAS,KACd,IAAI,IAAI,SAAS,GAAG,cAAuD,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yEAAyE;IACzE,YAAY,CAAC,EACT,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,cAAc,GACd,QAAQ,GACR,MAAM,GACN,IAAI,CAAC;CACV,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,SAAS,KACd,IAAI,IAAI,SAAS,GAAG,qBACiB,CAAC;AAEzC,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC9C,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,SAAS,KACd,IAAI,IAAI,SAAS,GAAG,kBACoB,CAAC;AAwC5C;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,WAAW,SAAS,KACnB,OAAO,CAAC,SAAS,CAEnB,CAAC;AAiFF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAChC,UAAU,SAAS,EACnB,QAAQ,SAAS,KAChB,MAAM,EAoBR,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,SAAS,EAAE,KAAG,OAO3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,SAAS,EAAE,EACrB,WAAW,SAAS,EAAE,KACrB,SAAS,EAKX,CAAC;AA+BF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,cAAc,SAAS,EACvB,cAAc,OAAO,CAAC,SAAS,CAAC,KAC/B,SA0EF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,SAAS,KAAG,UAAU,EAsB9D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,QAAQ,OAAO,KAAG,MAQvD,CAAC"}
|
|
@@ -98,12 +98,13 @@ exports.getDefaultChartTypeSpec = getDefaultChartTypeSpec;
|
|
|
98
98
|
* These should be cleared when switching between chart types within basic charts.
|
|
99
99
|
*/
|
|
100
100
|
var BASIC_CHART_TYPE_PROPERTIES = {
|
|
101
|
-
line: ["smooth"],
|
|
101
|
+
line: ["smooth", "showMarkers"],
|
|
102
102
|
// `doughnutHoleSize` is deliberately NOT cleared when leaving pie so
|
|
103
103
|
// upgrading a legacy pie-based doughnut (pie + doughnutHoleSize) to
|
|
104
104
|
// the first-class doughnut token keeps the authored hole size.
|
|
105
105
|
pie: [
|
|
106
106
|
"radius",
|
|
107
|
+
"explosion",
|
|
107
108
|
// Of-pie composite fields (pie-of-pie / bar-of-pie) — meaningless
|
|
108
109
|
// on any other chart type, so drop them on transition.
|
|
109
110
|
"sourceChartType",
|
|
@@ -112,7 +113,7 @@ var BASIC_CHART_TYPE_PROPERTIES = {
|
|
|
112
113
|
"splitPos",
|
|
113
114
|
"secondPieSize",
|
|
114
115
|
],
|
|
115
|
-
doughnut: ["doughnutHoleSize"],
|
|
116
|
+
doughnut: ["doughnutHoleSize", "explosion"],
|
|
116
117
|
waterfall: ["totalIndices"],
|
|
117
118
|
boxplot: ["quartileMethod", "showOutliers", "showMeanMarker"],
|
|
118
119
|
// Region map (filled map / choropleth) — the geo scope and the
|
|
@@ -126,7 +127,9 @@ var BASIC_CHART_TYPE_PROPERTIES = {
|
|
|
126
127
|
var CATEGORY_SPECIFIC_PROPERTIES = {
|
|
127
128
|
basic: [
|
|
128
129
|
"smooth",
|
|
130
|
+
"showMarkers",
|
|
129
131
|
"radius",
|
|
132
|
+
"explosion",
|
|
130
133
|
"stackedType",
|
|
131
134
|
"doughnutHoleSize",
|
|
132
135
|
"totalIndices",
|
|
@@ -190,13 +193,18 @@ var getPropertiesToRemove = function (fromType, toType) {
|
|
|
190
193
|
exports.getPropertiesToRemove = getPropertiesToRemove;
|
|
191
194
|
/**
|
|
192
195
|
* Checks if chart data array is empty or contains only placeholder entries.
|
|
196
|
+
* An entry carrying inline values (`<c:strLit>` / `<c:numLit>` categories,
|
|
197
|
+
* or the series names Switch Row/Column turns into categories) is real
|
|
198
|
+
* data even though it references no cells.
|
|
193
199
|
*/
|
|
194
200
|
var isPlaceholderChartData = function (data) {
|
|
195
201
|
if (!data || data.length === 0)
|
|
196
202
|
return true;
|
|
197
203
|
return data.every(function (entry) {
|
|
198
|
-
var _a;
|
|
199
|
-
|
|
204
|
+
var _a, _b;
|
|
205
|
+
if ((_a = entry === null || entry === void 0 ? void 0 : entry.inlineValues) === null || _a === void 0 ? void 0 : _a.length)
|
|
206
|
+
return false;
|
|
207
|
+
var sources = (_b = entry === null || entry === void 0 ? void 0 : entry.sources) !== null && _b !== void 0 ? _b : [];
|
|
200
208
|
return sources.length === 0 || sources.every(function (source) { return !source; });
|
|
201
209
|
});
|
|
202
210
|
};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { ChartSpec } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
/**
|
|
3
|
+
* Excel's Chart Design tab as pure spec transforms: Chart Styles, Change
|
|
4
|
+
* Colors, Quick Layouts and Reset to Match Style. Every transform returns
|
|
5
|
+
* a new spec and writes only the fields the gallery entry defines, so the
|
|
6
|
+
* result renders identically on both renderers (they read the same spec)
|
|
7
|
+
* and survives the XLSX round-trip field by field.
|
|
8
|
+
*/
|
|
9
|
+
/** A "Change Colors" gallery entry. `colors` omitted = the workbook theme's accents. */
|
|
10
|
+
export type ChartColorPalette = {
|
|
11
|
+
id: string;
|
|
12
|
+
label: string;
|
|
13
|
+
kind: "colorful" | "monochromatic";
|
|
14
|
+
colors?: string[];
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Office's Change Colors gallery. Colorful 1 is the theme itself (no
|
|
18
|
+
* `colors` — the renderer keeps its accent fallback); the rest are the
|
|
19
|
+
* default Office theme's derived palettes.
|
|
20
|
+
*/
|
|
21
|
+
export declare const CHART_COLOR_PALETTES: readonly ChartColorPalette[];
|
|
22
|
+
/**
|
|
23
|
+
* Change Colors: set the palette and clear every series' own colour so the
|
|
24
|
+
* palette applies (a series colour always wins over the palette).
|
|
25
|
+
*/
|
|
26
|
+
export declare const applyChartColorPalette: (spec: ChartSpec, palette: ChartColorPalette) => ChartSpec;
|
|
27
|
+
/**
|
|
28
|
+
* Reset to Match Style: drop the per-series formatting overrides so the
|
|
29
|
+
* series follow the chart style's palette again. Chart-level fields are
|
|
30
|
+
* untouched — they *are* the style.
|
|
31
|
+
*/
|
|
32
|
+
export declare const resetChartToMatchStyle: (spec: ChartSpec) => ChartSpec;
|
|
33
|
+
/**
|
|
34
|
+
* The series colour cycle a renderer should use: the spec's palette when
|
|
35
|
+
* one is set, else the caller's theme accents.
|
|
36
|
+
*/
|
|
37
|
+
export declare const getChartPalette: (spec: Pick<ChartSpec, "palette"> | undefined, fallback: readonly string[]) => string[];
|
|
38
|
+
/**
|
|
39
|
+
* A Chart Styles gallery entry. `id` is the OOXML `<c:style>` value the
|
|
40
|
+
* style is written as (§21.2.3.46 ST_Style: 1 grayscale, 2 colourful, 3
|
|
41
|
+
* monochromatic accent 1, +8 per row of increasing emphasis, 33-40 on a
|
|
42
|
+
* dark-gray frame, 41-48 on black).
|
|
43
|
+
*/
|
|
44
|
+
export type ChartStylePreset = {
|
|
45
|
+
id: number;
|
|
46
|
+
label: string;
|
|
47
|
+
/** Swatch colours for the gallery tile. */
|
|
48
|
+
preview: {
|
|
49
|
+
background: string;
|
|
50
|
+
bars: string[];
|
|
51
|
+
};
|
|
52
|
+
apply(spec: ChartSpec): ChartSpec;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* The Chart Styles gallery. Each entry pins the look Excel's style of that
|
|
56
|
+
* id implies onto the spec fields both renderers read: chart-area fill,
|
|
57
|
+
* gridlines, data labels, legend placement, title font and — for the
|
|
58
|
+
* grayscale / monochromatic rows — the palette. Per-series colours are
|
|
59
|
+
* left alone (Reset to Match Style clears them).
|
|
60
|
+
*/
|
|
61
|
+
export declare const CHART_STYLES: readonly ChartStylePreset[];
|
|
62
|
+
export declare const applyChartStyle: (spec: ChartSpec, style: ChartStylePreset) => ChartSpec;
|
|
63
|
+
/** A Quick Layouts gallery entry — where the title, legend, labels and axis titles go. */
|
|
64
|
+
export type ChartQuickLayout = {
|
|
65
|
+
id: number;
|
|
66
|
+
label: string;
|
|
67
|
+
apply(spec: ChartSpec): ChartSpec;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Excel's Quick Layout gallery (the first six of the column-chart set).
|
|
71
|
+
* Layouts arrange the existing elements; they never touch colours.
|
|
72
|
+
*/
|
|
73
|
+
export declare const CHART_QUICK_LAYOUTS: readonly ChartQuickLayout[];
|
|
74
|
+
export declare const applyChartQuickLayout: (spec: ChartSpec, layout: ChartQuickLayout) => ChartSpec;
|
|
75
|
+
//# sourceMappingURL=chart-styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-styles.d.ts","sourceRoot":"","sources":["../../../utils/chart-styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EAEV,MAAM,2BAA2B,CAAC;AAEnC;;;;;;GAMG;AAEH,wFAAwF;AACxF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,GAAG,eAAe,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EA4C5D,CAAC;AAsBF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,MAAM,SAAS,EACf,SAAS,iBAAiB,KACzB,SAGD,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,MAAM,SAAS,KAAG,SAC9B,CAAC;AAE5B;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC1B,MAAM,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,SAAS,EAC5C,UAAU,SAAS,MAAM,EAAE,KAC1B,MAAM,EAGU,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChD,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;CACnC,CAAC;AAmDF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,gBAAgB,EAwInD,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,MAAM,SAAS,EACf,OAAO,gBAAgB,KACtB,SAA8B,CAAC;AAElC,0FAA0F;AAC1F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;CACnC,CAAC;AA0BF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EAqE1D,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,MAAM,SAAS,EACf,QAAQ,gBAAgB,KACvB,SAA+B,CAAC"}
|