@rowsncolumns/toolkit 24.5.4 → 24.5.5
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/autofilter-condition.js +6 -2
- package/dist/cjs/excel-parser/helpers.d.ts +9 -1
- package/dist/cjs/excel-parser/helpers.d.ts.map +1 -1
- package/dist/cjs/excel-parser/helpers.js +70 -16
- package/dist/cjs/excel-parser/interface.d.ts +9 -1
- package/dist/cjs/excel-parser/interface.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.js +61 -6
- package/dist/cjs/excel-parser/plugins/xlsx/data-validations.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/data-validations.js +13 -2
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts +8 -1
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/index.js +159 -26
- package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts +17 -2
- package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/styles.js +25 -14
- package/dist/cjs/excel-parser/types.d.ts +5 -1
- package/dist/cjs/excel-parser/types.d.ts.map +1 -1
- package/dist/cjs/excel-parser/workbook.d.ts +1 -0
- package/dist/cjs/excel-parser/workbook.d.ts.map +1 -1
- package/dist/cjs/excel-parser/workbook.js +4 -0
- package/dist/cjs/excel-parser/worker.js +3 -0
- package/dist/cjs/exporter/xlsx/chart-builder.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/chart-builder.js +167 -53
- package/dist/cjs/exporter/xlsx/future-functions.d.ts +6 -7
- package/dist/cjs/exporter/xlsx/future-functions.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/future-functions.js +5 -261
- package/dist/cjs/exporter/xlsx/style-builder.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/style-builder.js +62 -19
- package/dist/cjs/exporter/xlsx/xlsx-export.d.ts +10 -2
- package/dist/cjs/exporter/xlsx/xlsx-export.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/xlsx-export.js +404 -158
- package/dist/cjs/helpers/excel-formula-prefixes.d.ts +51 -0
- package/dist/cjs/helpers/excel-formula-prefixes.d.ts.map +1 -0
- package/dist/cjs/helpers/excel-formula-prefixes.js +548 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/autofilter-condition.js +6 -2
- package/dist/esm/excel-parser/helpers.d.ts +9 -1
- package/dist/esm/excel-parser/helpers.d.ts.map +1 -1
- package/dist/esm/excel-parser/helpers.js +65 -3
- package/dist/esm/excel-parser/interface.d.ts +9 -1
- package/dist/esm/excel-parser/interface.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.js +42 -1
- package/dist/esm/excel-parser/plugins/xlsx/data-validations.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/data-validations.js +11 -2
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts +8 -1
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/index.js +109 -4
- package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts +17 -2
- package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/styles.js +20 -8
- package/dist/esm/excel-parser/types.d.ts +5 -1
- package/dist/esm/excel-parser/types.d.ts.map +1 -1
- package/dist/esm/excel-parser/workbook.d.ts +1 -0
- package/dist/esm/excel-parser/workbook.d.ts.map +1 -1
- package/dist/esm/excel-parser/workbook.js +3 -0
- package/dist/esm/excel-parser/worker.js +3 -0
- package/dist/esm/exporter/xlsx/chart-builder.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/chart-builder.js +80 -0
- package/dist/esm/exporter/xlsx/future-functions.d.ts +6 -7
- package/dist/esm/exporter/xlsx/future-functions.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/future-functions.js +5 -261
- package/dist/esm/exporter/xlsx/style-builder.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/style-builder.js +56 -18
- package/dist/esm/exporter/xlsx/xlsx-export.d.ts +10 -2
- package/dist/esm/exporter/xlsx/xlsx-export.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/xlsx-export.js +338 -106
- package/dist/esm/helpers/excel-formula-prefixes.d.ts +51 -0
- package/dist/esm/helpers/excel-formula-prefixes.d.ts.map +1 -0
- package/dist/esm/helpers/excel-formula-prefixes.js +531 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -246,6 +246,10 @@ var singleCustomFilterToCondition = function (filter) {
|
|
|
246
246
|
var operator = (_a = filter.operator) !== null && _a !== void 0 ? _a : "equal";
|
|
247
247
|
var val = String((_b = filter.val) !== null && _b !== void 0 ? _b : "");
|
|
248
248
|
// Text wildcards: equal/notEqual carrying * map back to contains/starts/ends.
|
|
249
|
+
// A NEGATED begins-with / ends-with (`notEqual` + `x*` / `*x`, Excel's "does
|
|
250
|
+
// not begin / end with") has no condition type of its own — it falls through
|
|
251
|
+
// to TEXT_NOT_EQ with the wildcard value verbatim, so the export writes
|
|
252
|
+
// `notEqual` + `x*` back unchanged instead of flipping it to `equal`.
|
|
249
253
|
if ((operator === "equal" || operator === "notEqual") && /[*?]/.test(val)) {
|
|
250
254
|
var negated = operator === "notEqual";
|
|
251
255
|
var lead = val.startsWith("*");
|
|
@@ -257,10 +261,10 @@ var singleCustomFilterToCondition = function (filter) {
|
|
|
257
261
|
values: [{ userEnteredValue: core }],
|
|
258
262
|
};
|
|
259
263
|
}
|
|
260
|
-
if (trail) {
|
|
264
|
+
if (trail && !negated) {
|
|
261
265
|
return { type: "TEXT_STARTS_WITH", values: [{ userEnteredValue: core }] };
|
|
262
266
|
}
|
|
263
|
-
if (lead) {
|
|
267
|
+
if (lead && !negated) {
|
|
264
268
|
return { type: "TEXT_ENDS_WITH", values: [{ userEnteredValue: core }] };
|
|
265
269
|
}
|
|
266
270
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { GridRange } from "@rowsncolumns/common-types";
|
|
2
|
-
import type { Column, FilterSpec, SortSpecs, TableTotalsRowFunction } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import type { Column, DateGroupFilter, FilterSpec, SortSpecs, TableTotalsRowFunction } from "@rowsncolumns/spreadsheet";
|
|
3
|
+
/** The engine's "(Blanks)" checklist entry — Excel's `<filters blank="1">`. */
|
|
4
|
+
export declare const BLANK_LABEL = "(Blanks)";
|
|
3
5
|
export declare const getRangeFromAddressRef: (ref: string) => GridRange | undefined;
|
|
4
6
|
/**
|
|
5
7
|
* OOXML `<col width>` (and `<sheetFormatPr defaultColWidth>`) → pixels.
|
|
@@ -24,6 +26,12 @@ export declare const isTableTotalsRowFunction: (value: unknown) => value is Tabl
|
|
|
24
26
|
* present so columns without a totals row stay `{ name }`.
|
|
25
27
|
*/
|
|
26
28
|
export declare const parseTableColumnTotals: (colDef: any) => Pick<Column, "totalsRowFunction" | "totalsRowLabel" | "totalsRowFormula">;
|
|
29
|
+
/**
|
|
30
|
+
* A `<dateGroupItem>`'s attributes → the criteria's date-group entry, or
|
|
31
|
+
* `undefined` without a year. `dateTimeGrouping` defaults to `day` like the
|
|
32
|
+
* schema.
|
|
33
|
+
*/
|
|
34
|
+
export declare function dateGroupFilterFromAttributes(attrs: Record<string, unknown> | undefined): DateGroupFilter | undefined;
|
|
27
35
|
export declare function createFilterSpecsFromAutoFilter(autoFilter: any,
|
|
28
36
|
/**
|
|
29
37
|
* Optional dxf resolver — called with (dxfId, cellColor) to return a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../excel-parser/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAEV,MAAM,EACN,UAAU,EACV,SAAS,EACT,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAUnC,eAAO,MAAM,sBAAsB,GAAI,KAAK,MAAM,KAAG,SAAS,GAAG,SAIhE,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,UAMrD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,UAMpC;AAmBD,eAAO,MAAM,wBAAwB,GACnC,OAAO,OAAO,KACb,KAAK,IAAI,sBACwD,CAAC;AAErE;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,GAAG,KACV,IAAI,CAAC,MAAM,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,kBAAkB,CAmB1E,CAAC;AAqBF,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,GAAG;AACf;;;;GAIG;AACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../excel-parser/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAEV,MAAM,EACN,eAAe,EACf,UAAU,EACV,SAAS,EACT,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAUnC,+EAA+E;AAC/E,eAAO,MAAM,WAAW,aAAa,CAAC;AAEtC,eAAO,MAAM,sBAAsB,GAAI,KAAK,MAAM,KAAG,SAAS,GAAG,SAIhE,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,UAMrD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,UAMpC;AAmBD,eAAO,MAAM,wBAAwB,GACnC,OAAO,OAAO,KACb,KAAK,IAAI,sBACwD,CAAC;AAErE;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,QAAQ,GAAG,KACV,IAAI,CAAC,MAAM,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,kBAAkB,CAmB1E,CAAC;AAqBF;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACzC,eAAe,GAAG,SAAS,CA8B7B;AAED,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,GAAG;AACf;;;;GAIG;AACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,gBAgI5E;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAgBtE;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,GAAG,EACd,KAAK,EAAE,SAAS,EAChB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,GAC1E,SAAS,EAAE,CA2Cb;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,wBAkB3D"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { __awaiter, __generator, __values } from "tslib";
|
|
1
|
+
import { __assign, __awaiter, __generator, __values } from "tslib";
|
|
2
2
|
import { customFiltersToCriteria, dynamicFilterToCondition, top10FilterToCondition, } from "../autofilter-condition";
|
|
3
3
|
import { addressToSelection } from "@rowsncolumns/utils";
|
|
4
|
+
/** The engine's "(Blanks)" checklist entry — Excel's `<filters blank="1">`. */
|
|
5
|
+
export var BLANK_LABEL = "(Blanks)";
|
|
4
6
|
export var getRangeFromAddressRef = function (ref) {
|
|
5
7
|
var selection = addressToSelection(ref);
|
|
6
8
|
if (!selection)
|
|
@@ -89,6 +91,36 @@ var getNodeText = function (node) {
|
|
|
89
91
|
}
|
|
90
92
|
return String(node);
|
|
91
93
|
};
|
|
94
|
+
/**
|
|
95
|
+
* A `<dateGroupItem>`'s attributes → the criteria's date-group entry, or
|
|
96
|
+
* `undefined` without a year. `dateTimeGrouping` defaults to `day` like the
|
|
97
|
+
* schema.
|
|
98
|
+
*/
|
|
99
|
+
export function dateGroupFilterFromAttributes(attrs) {
|
|
100
|
+
if (!attrs)
|
|
101
|
+
return undefined;
|
|
102
|
+
var int = function (name) {
|
|
103
|
+
var raw = attrs[name];
|
|
104
|
+
if (raw === undefined || raw === null || raw === "")
|
|
105
|
+
return undefined;
|
|
106
|
+
var n = parseInt(String(raw), 10);
|
|
107
|
+
return Number.isFinite(n) ? n : undefined;
|
|
108
|
+
};
|
|
109
|
+
var year = int("year");
|
|
110
|
+
if (year === undefined)
|
|
111
|
+
return undefined;
|
|
112
|
+
var grouping = attrs.dateTimeGrouping;
|
|
113
|
+
var dateTimeGrouping = typeof grouping === "string" &&
|
|
114
|
+
["year", "month", "day", "hour", "minute", "second"].includes(grouping)
|
|
115
|
+
? grouping
|
|
116
|
+
: "day";
|
|
117
|
+
var month = int("month");
|
|
118
|
+
var day = int("day");
|
|
119
|
+
var hour = int("hour");
|
|
120
|
+
var minute = int("minute");
|
|
121
|
+
var second = int("second");
|
|
122
|
+
return __assign(__assign(__assign(__assign(__assign(__assign({ year: year }, (month !== undefined ? { month: month } : {})), (day !== undefined ? { day: day } : {})), (hour !== undefined ? { hour: hour } : {})), (minute !== undefined ? { minute: minute } : {})), (second !== undefined ? { second: second } : {})), { dateTimeGrouping: dateTimeGrouping });
|
|
123
|
+
}
|
|
92
124
|
export function createFilterSpecsFromAutoFilter(autoFilter,
|
|
93
125
|
/**
|
|
94
126
|
* Optional dxf resolver — called with (dxfId, cellColor) to return a
|
|
@@ -97,7 +129,7 @@ export function createFilterSpecsFromAutoFilter(autoFilter,
|
|
|
97
129
|
*/
|
|
98
130
|
resolveDxfColor) {
|
|
99
131
|
var e_1, _a;
|
|
100
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
132
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
101
133
|
var filterSpecs = [];
|
|
102
134
|
// Handle both with and without namespace prefix
|
|
103
135
|
var filterColumn = (_b = autoFilter === null || autoFilter === void 0 ? void 0 : autoFilter.filterColumn) !== null && _b !== void 0 ? _b : autoFilter === null || autoFilter === void 0 ? void 0 : autoFilter["x:filterColumn"];
|
|
@@ -115,14 +147,36 @@ resolveDxfColor) {
|
|
|
115
147
|
// <filters><filter val=…/></filters>
|
|
116
148
|
var filtersObj = (_c = col.filters) !== null && _c !== void 0 ? _c : col["x:filters"];
|
|
117
149
|
var filter = (_d = filtersObj === null || filtersObj === void 0 ? void 0 : filtersObj.filter) !== null && _d !== void 0 ? _d : filtersObj === null || filtersObj === void 0 ? void 0 : filtersObj["x:filter"];
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
150
|
+
var filtersAttrs = (_e = filtersObj === null || filtersObj === void 0 ? void 0 : filtersObj.a$) !== null && _e !== void 0 ? _e : filtersObj;
|
|
151
|
+
// `<filters blank="1">` — the checked "(Blanks)" entry is an attribute in
|
|
152
|
+
// Excel, never a `<filter val>`.
|
|
153
|
+
var showBlanks = (filtersAttrs === null || filtersAttrs === void 0 ? void 0 : filtersAttrs.blank) === "1" || (filtersAttrs === null || filtersAttrs === void 0 ? void 0 : filtersAttrs.blank) === "true";
|
|
154
|
+
if (filter || showBlanks) {
|
|
155
|
+
var filterArray = filter
|
|
156
|
+
? Array.isArray(filter)
|
|
157
|
+
? filter
|
|
158
|
+
: [filter]
|
|
159
|
+
: [];
|
|
160
|
+
var values = filterArray.map(function (f) { return String(f.a$.val); });
|
|
161
|
+
if (showBlanks)
|
|
162
|
+
values.push(BLANK_LABEL);
|
|
163
|
+
criteria.visibleValues = values;
|
|
164
|
+
}
|
|
165
|
+
// <filters><dateGroupItem year month day … dateTimeGrouping/></filters> —
|
|
166
|
+
// Excel's date-grouped checklist entries.
|
|
167
|
+
var dateGroupItem = (_f = filtersObj === null || filtersObj === void 0 ? void 0 : filtersObj.dateGroupItem) !== null && _f !== void 0 ? _f : filtersObj === null || filtersObj === void 0 ? void 0 : filtersObj["x:dateGroupItem"];
|
|
168
|
+
if (dateGroupItem) {
|
|
169
|
+
var items = Array.isArray(dateGroupItem) ? dateGroupItem : [dateGroupItem];
|
|
170
|
+
var dateGroups = items
|
|
171
|
+
.map(function (item) { var _a; return dateGroupFilterFromAttributes((_a = item === null || item === void 0 ? void 0 : item.a$) !== null && _a !== void 0 ? _a : item); })
|
|
172
|
+
.filter(function (group) { return group !== undefined; });
|
|
173
|
+
if (dateGroups.length)
|
|
174
|
+
criteria.dateGroups = dateGroups;
|
|
121
175
|
}
|
|
122
176
|
// <colorFilter dxfId="…" cellColor="1|0"/>
|
|
123
|
-
var colorFilterNode = (
|
|
177
|
+
var colorFilterNode = (_g = col.colorFilter) !== null && _g !== void 0 ? _g : col["x:colorFilter"];
|
|
124
178
|
if (colorFilterNode && resolveDxfColor) {
|
|
125
|
-
var attrs = (
|
|
179
|
+
var attrs = (_h = colorFilterNode.a$) !== null && _h !== void 0 ? _h : colorFilterNode;
|
|
126
180
|
var dxfIdRaw = attrs === null || attrs === void 0 ? void 0 : attrs.dxfId;
|
|
127
181
|
if (dxfIdRaw !== undefined) {
|
|
128
182
|
var dxfId = parseInt(String(dxfIdRaw), 10);
|
|
@@ -139,9 +193,9 @@ resolveDxfColor) {
|
|
|
139
193
|
}
|
|
140
194
|
}
|
|
141
195
|
// <iconFilter iconSet="…" iconId="…"/>
|
|
142
|
-
var iconFilterNode = (
|
|
196
|
+
var iconFilterNode = (_j = col.iconFilter) !== null && _j !== void 0 ? _j : col["x:iconFilter"];
|
|
143
197
|
if (iconFilterNode) {
|
|
144
|
-
var attrs = (
|
|
198
|
+
var attrs = (_k = iconFilterNode.a$) !== null && _k !== void 0 ? _k : iconFilterNode;
|
|
145
199
|
var iconSet = attrs === null || attrs === void 0 ? void 0 : attrs.iconSet;
|
|
146
200
|
if (typeof iconSet === "string" && iconSet.length) {
|
|
147
201
|
var iconIdRaw = attrs === null || attrs === void 0 ? void 0 : attrs.iconId;
|
|
@@ -155,11 +209,11 @@ resolveDxfColor) {
|
|
|
155
209
|
}
|
|
156
210
|
}
|
|
157
211
|
// <customFilters and="1"><customFilter operator=… val=…/></customFilters>
|
|
158
|
-
var customFiltersNode = (
|
|
212
|
+
var customFiltersNode = (_l = col.customFilters) !== null && _l !== void 0 ? _l : col["x:customFilters"];
|
|
159
213
|
if (customFiltersNode) {
|
|
160
|
-
var cfAttrs = (
|
|
214
|
+
var cfAttrs = (_m = customFiltersNode.a$) !== null && _m !== void 0 ? _m : customFiltersNode;
|
|
161
215
|
var and = (cfAttrs === null || cfAttrs === void 0 ? void 0 : cfAttrs.and) === "1" || (cfAttrs === null || cfAttrs === void 0 ? void 0 : cfAttrs.and) === "true";
|
|
162
|
-
var cfRaw = (
|
|
216
|
+
var cfRaw = (_o = customFiltersNode.customFilter) !== null && _o !== void 0 ? _o : customFiltersNode["x:customFilter"];
|
|
163
217
|
var cfArray = (Array.isArray(cfRaw) ? cfRaw : cfRaw ? [cfRaw] : []).map(function (f) {
|
|
164
218
|
var _a;
|
|
165
219
|
var a = (_a = f.a$) !== null && _a !== void 0 ? _a : f;
|
|
@@ -170,17 +224,17 @@ resolveDxfColor) {
|
|
|
170
224
|
Object.assign(criteria, conditions);
|
|
171
225
|
}
|
|
172
226
|
// <dynamicFilter type="thisMonth"/> etc.
|
|
173
|
-
var dynamicNode = (
|
|
227
|
+
var dynamicNode = (_p = col.dynamicFilter) !== null && _p !== void 0 ? _p : col["x:dynamicFilter"];
|
|
174
228
|
if (dynamicNode && !criteria.condition) {
|
|
175
|
-
var dynAttrs = (
|
|
229
|
+
var dynAttrs = (_q = dynamicNode.a$) !== null && _q !== void 0 ? _q : dynamicNode;
|
|
176
230
|
var condition = dynamicFilterToCondition(dynAttrs === null || dynAttrs === void 0 ? void 0 : dynAttrs.type);
|
|
177
231
|
if (condition)
|
|
178
232
|
criteria.condition = condition;
|
|
179
233
|
}
|
|
180
234
|
// <top10 top="1" percent="0" val="10"/> (Excel's "Top 10…")
|
|
181
|
-
var top10Node = (
|
|
235
|
+
var top10Node = (_r = col.top10) !== null && _r !== void 0 ? _r : col["x:top10"];
|
|
182
236
|
if (top10Node && !criteria.condition) {
|
|
183
|
-
var a = (
|
|
237
|
+
var a = (_s = top10Node.a$) !== null && _s !== void 0 ? _s : top10Node;
|
|
184
238
|
var condition = top10FilterToCondition({
|
|
185
239
|
top: (a === null || a === void 0 ? void 0 : a.top) !== undefined ? String(a.top) : undefined,
|
|
186
240
|
percent: (a === null || a === void 0 ? void 0 : a.percent) !== undefined ? String(a.percent) : undefined,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, NamedRange, ProtectedRange, Sheet, Slicer, SpreadsheetTheme, TableView, CustomTableStyle } from "@rowsncolumns/spreadsheet";
|
|
1
|
+
import type { ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, NamedRange, ProtectedRange, Sheet, Slicer, SpreadsheetTheme, TableView, CustomTableStyle, WorkbookProtection } from "@rowsncolumns/spreadsheet";
|
|
2
2
|
import type { CommentThread, IterativeCalculationOptions, NamedCellStyle, TextFormat, TextFormatRun } from "@rowsncolumns/common-types";
|
|
3
3
|
import type { EmbeddedObjectWithPosition, ExternalLink, ProcessSheetDataForSheetOptions, ProcessSheetDataResult, SheetCatalogEntry, WorkbookProperties } from "./types";
|
|
4
4
|
export interface IWorkbookPlugin {
|
|
@@ -97,6 +97,14 @@ export interface IWorkbookPlugin {
|
|
|
97
97
|
* Get iterative calculation settings if present in the workbook.
|
|
98
98
|
*/
|
|
99
99
|
getIterativeCalculationOptions(): IterativeCalculationOptions | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Workbook-level protection (`<workbookProtection>` in `xl/workbook.xml` —
|
|
102
|
+
* Excel's "Protect Workbook" structure / windows / revision locks with the
|
|
103
|
+
* source's password hash), or `undefined` when the workbook is unprotected.
|
|
104
|
+
* Optional so plugins without workbook protection still satisfy the
|
|
105
|
+
* interface; the workbook wrapper resolves to `undefined`.
|
|
106
|
+
*/
|
|
107
|
+
getWorkbookProtection?(): WorkbookProtection | undefined;
|
|
100
108
|
/**
|
|
101
109
|
* Whether the workbook uses the 1904 date epoch (`<workbookPr date1904="1"/>`).
|
|
102
110
|
* Date serials in a 1904-anchored workbook are shifted by 1462 days.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../excel-parser/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,wBAAwB,EACxB,aAAa,EACb,UAAU,EACV,cAAc,EACd,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../excel-parser/interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conditional-formatting.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/conditional-formatting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,
|
|
1
|
+
{"version":3,"file":"conditional-formatting.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/conditional-formatting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAGhB,UAAU,EAGV,qBAAqB,EAGrB,YAAY,EAKZ,aAAa,EACd,MAAM,2BAA2B,CAAC;AA6NnC,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,UAAU,GACjB,aAAa,GAAG,SAAS,CAuC3B;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,GACjB,YAAY,CAKd;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,GAAG,GACV,gBAAgB,GAAG,SAAS,CAgI9B;AA8KD;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,GAAG,EACd,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,GAAG,EACnB,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GACxC,qBAAqB,EAAE,CAsLzB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __assign, __read, __spreadArray, __values } from "tslib";
|
|
2
2
|
import { get, set } from "lodash-es";
|
|
3
3
|
import { getRangeFromAddressRef } from "../../helpers";
|
|
4
|
-
import { extractColor } from "./styles";
|
|
4
|
+
import { extractColor, mapBorderStyle, mapBorderWidth, mapNumberFormatType, } from "./styles";
|
|
5
5
|
/**
|
|
6
6
|
* Parse cell format from dxf format definition. Theme color
|
|
7
7
|
* references (`<color theme="N" tint="T"/>`) are intentionally
|
|
@@ -15,7 +15,8 @@ import { extractColor } from "./styles";
|
|
|
15
15
|
* @returns CellFormat object
|
|
16
16
|
*/
|
|
17
17
|
function parseDxfFormat(dxf, indexedColors) {
|
|
18
|
-
var
|
|
18
|
+
var e_1, _a;
|
|
19
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
19
20
|
var format = {};
|
|
20
21
|
// Font formatting. OOXML boolean flag elements default to TRUE when the `val`
|
|
21
22
|
// attribute is absent, but `val="0"`/`"false"` means explicitly OFF — key presence
|
|
@@ -44,7 +45,7 @@ function parseDxfFormat(dxf, indexedColors) {
|
|
|
44
45
|
// Underline is not a boolean — `<u val="none"/>` means no underline; anything
|
|
45
46
|
// else (including an absent val) is some form of underline.
|
|
46
47
|
var uNode = dxf.font.u;
|
|
47
|
-
var uVal = typeof uNode === "object" ? ((
|
|
48
|
+
var uVal = typeof uNode === "object" ? ((_c = (_b = uNode === null || uNode === void 0 ? void 0 : uNode.a$) === null || _b === void 0 ? void 0 : _b.val) !== null && _c !== void 0 ? _c : uNode === null || uNode === void 0 ? void 0 : uNode["#text"]) : uNode;
|
|
48
49
|
var uStr = uVal === undefined || uVal === null ? "" : String(uVal).toLowerCase();
|
|
49
50
|
if (uStr !== "none") {
|
|
50
51
|
set(format, "textFormat.underline", true);
|
|
@@ -60,6 +61,60 @@ function parseDxfFormat(dxf, indexedColors) {
|
|
|
60
61
|
if (dxf.fill && dxf.fill.patternFill && dxf.fill.patternFill.bgColor) {
|
|
61
62
|
format.backgroundColor = extractColor(dxf.fill.patternFill.bgColor, indexedColors);
|
|
62
63
|
}
|
|
64
|
+
// Border — a dxf carries its `<border>` inline (no borderId). Excel writes only
|
|
65
|
+
// the edges the rule sets; `style="none"` (or no style) is "no border here".
|
|
66
|
+
if (dxf.border) {
|
|
67
|
+
var borders = {};
|
|
68
|
+
var edgeToBorder = function (edge) {
|
|
69
|
+
var _a;
|
|
70
|
+
var style = (_a = edge === null || edge === void 0 ? void 0 : edge.a$) === null || _a === void 0 ? void 0 : _a.style;
|
|
71
|
+
if (!style || style === "none")
|
|
72
|
+
return undefined;
|
|
73
|
+
return {
|
|
74
|
+
style: mapBorderStyle(style),
|
|
75
|
+
width: mapBorderWidth(style),
|
|
76
|
+
color: edge.color ? extractColor(edge.color, indexedColors) : null,
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
try {
|
|
80
|
+
for (var _l = __values(["top", "bottom", "left", "right"]), _m = _l.next(); !_m.done; _m = _l.next()) {
|
|
81
|
+
var side = _m.value;
|
|
82
|
+
var border = edgeToBorder(dxf.border[side]);
|
|
83
|
+
if (border)
|
|
84
|
+
borders[side] = border;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
88
|
+
finally {
|
|
89
|
+
try {
|
|
90
|
+
if (_m && !_m.done && (_a = _l.return)) _a.call(_l);
|
|
91
|
+
}
|
|
92
|
+
finally { if (e_1) throw e_1.error; }
|
|
93
|
+
}
|
|
94
|
+
var diagonal = edgeToBorder(dxf.border.diagonal);
|
|
95
|
+
if (diagonal) {
|
|
96
|
+
var isOn = function (v) {
|
|
97
|
+
return v !== undefined && v !== "0" && v !== "false" && v !== false;
|
|
98
|
+
};
|
|
99
|
+
if (isOn((_d = dxf.border.a$) === null || _d === void 0 ? void 0 : _d.diagonalUp))
|
|
100
|
+
borders.diagonalUp = diagonal;
|
|
101
|
+
if (isOn((_e = dxf.border.a$) === null || _e === void 0 ? void 0 : _e.diagonalDown))
|
|
102
|
+
borders.diagonalDown = diagonal;
|
|
103
|
+
}
|
|
104
|
+
if (Object.keys(borders).length > 0) {
|
|
105
|
+
format.borders = borders;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Number format — inline `<numFmt numFmtId formatCode/>`; the code is authoritative
|
|
109
|
+
// (a dxf-only format need not appear in the workbook's `<numFmts>` table).
|
|
110
|
+
var formatCode = (_g = (_f = dxf.numFmt) === null || _f === void 0 ? void 0 : _f.a$) === null || _g === void 0 ? void 0 : _g.formatCode;
|
|
111
|
+
if (typeof formatCode === "string" && formatCode.length > 0) {
|
|
112
|
+
var numFmtId = parseInt((_j = (_h = dxf.numFmt.a$) === null || _h === void 0 ? void 0 : _h.numFmtId) !== null && _j !== void 0 ? _j : "0", 10);
|
|
113
|
+
format.numberFormat = {
|
|
114
|
+
type: (_k = mapNumberFormatType(Number.isNaN(numFmtId) ? 0 : numFmtId, formatCode)) !== null && _k !== void 0 ? _k : "GENERAL",
|
|
115
|
+
pattern: formatCode,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
63
118
|
return format;
|
|
64
119
|
}
|
|
65
120
|
/**
|
|
@@ -489,7 +544,7 @@ export function getConditionalFormattingFromSheet(sheetData, sheetId, workbookSt
|
|
|
489
544
|
var cfRulesArray = Array.isArray(cfRules) ? cfRules : [cfRules];
|
|
490
545
|
// Process each rule
|
|
491
546
|
cfRulesArray.forEach(function (cfRule, ruleIndex) {
|
|
492
|
-
var
|
|
547
|
+
var e_2, _a;
|
|
493
548
|
var _b, _c, _d, _e, _f, _g;
|
|
494
549
|
var rule = {
|
|
495
550
|
id: "".concat(sheetId, "_").concat(index, "_").concat(ruleIndex),
|
|
@@ -537,12 +592,12 @@ export function getConditionalFormattingFromSheet(sheetData, sheetId, workbookSt
|
|
|
537
592
|
}
|
|
538
593
|
}
|
|
539
594
|
}
|
|
540
|
-
catch (
|
|
595
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
541
596
|
finally {
|
|
542
597
|
try {
|
|
543
598
|
if (formulaArray_1_1 && !formulaArray_1_1.done && (_a = formulaArray_1.return)) _a.call(formulaArray_1);
|
|
544
599
|
}
|
|
545
|
-
finally { if (
|
|
600
|
+
finally { if (e_2) throw e_2.error; }
|
|
546
601
|
}
|
|
547
602
|
var numericAttr = function (key) {
|
|
548
603
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-validations.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/data-validations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,wBAAwB,EAEzB,MAAM,2BAA2B,CAAC;AASnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"data-validations.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/data-validations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,wBAAwB,EAEzB,MAAM,2BAA2B,CAAC;AASnC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAoTvD,eAAO,MAAM,0BAA0B,GACrC,UAAU,eAAe,EACzB,SAAS,MAAM,EACf,YAAY,GAAG,EACf,YAAY,MAAM,+BAyRnB,CAAC"}
|
|
@@ -115,6 +115,17 @@ var mapErrorStyle = function (style) {
|
|
|
115
115
|
return "stop";
|
|
116
116
|
};
|
|
117
117
|
var NUMBER_VALIDATION_TYPES = new Set(["whole", "decimal", "time"]);
|
|
118
|
+
var NUMERIC_LITERAL_PATTERN = /^[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i;
|
|
119
|
+
/**
|
|
120
|
+
* A `whole` / `decimal` / `date` / `time` bound is an OOXML formula — Excel
|
|
121
|
+
* writes `<formula1>$B$1</formula1>`, `TODAY()`, `DATE(2024,1,1)`, `LEN(A1)`,
|
|
122
|
+
* `MaxValue` with no leading `=`. Store it the way the rule editors and the
|
|
123
|
+
* expression builders read a formula operand (`=…`), keeping only a bare
|
|
124
|
+
* numeric literal (`10`, `0.5`, `45292`) as is.
|
|
125
|
+
*/
|
|
126
|
+
var toBoundOperand = function (formula) {
|
|
127
|
+
return NUMERIC_LITERAL_PATTERN.test(formula) ? formula : "=".concat(formula);
|
|
128
|
+
};
|
|
118
129
|
var escapeRegExp = function (value) {
|
|
119
130
|
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
120
131
|
};
|
|
@@ -483,8 +494,8 @@ export var getDataValidationsForSheet = function (workbook, sheetId, sheet_data,
|
|
|
483
494
|
return "continue";
|
|
484
495
|
}
|
|
485
496
|
var values = __spreadArray([
|
|
486
|
-
{ userEnteredValue: formula1 }
|
|
487
|
-
], __read((formula2 ? [{ userEnteredValue: formula2 }] : [])), false);
|
|
497
|
+
{ userEnteredValue: toBoundOperand(formula1) }
|
|
498
|
+
], __read((formula2 ? [{ userEnteredValue: toBoundOperand(formula2) }] : [])), false);
|
|
488
499
|
dataValidations.push({
|
|
489
500
|
id: uuid(),
|
|
490
501
|
ranges: ranges,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CellFormat, ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, EmbeddedObject, NamedRange, ProtectedRange, Sheet, Slicer, SpreadsheetTheme, TableView, CustomTableStyle } from "@rowsncolumns/spreadsheet";
|
|
1
|
+
import type { CellFormat, ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, EmbeddedObject, NamedRange, ProtectedRange, Sheet, WorkbookProtection, Slicer, SpreadsheetTheme, TableView, CustomTableStyle } from "@rowsncolumns/spreadsheet";
|
|
2
2
|
import type { NamedCellStyle, CommentThread, TextFormat, TextFormatRun } from "@rowsncolumns/common-types";
|
|
3
3
|
import { XMLParser } from "fast-xml-parser";
|
|
4
4
|
import type { IWorkbookPlugin } from "../../interface";
|
|
@@ -125,6 +125,7 @@ export declare class XlsxPlugin extends BaseWorkbookPlugin implements IWorkbookP
|
|
|
125
125
|
private workSheets;
|
|
126
126
|
private calcPr;
|
|
127
127
|
private workbookPr;
|
|
128
|
+
private workbookProtectionXml;
|
|
128
129
|
private currentSheetTotalRows?;
|
|
129
130
|
/**
|
|
130
131
|
* Per-sheet feature presence recorded during the hyperlink SAX pass.
|
|
@@ -307,6 +308,12 @@ export declare class XlsxPlugin extends BaseWorkbookPlugin implements IWorkbookP
|
|
|
307
308
|
* 1904-anchored we treat it as 1900.
|
|
308
309
|
*/
|
|
309
310
|
getUse1904Epoch(): boolean;
|
|
311
|
+
/**
|
|
312
|
+
* `<workbookProtection …/>` → `WorkbookProtection`. The element's presence is
|
|
313
|
+
* what matters (Excel writes it only for a protected workbook); attributes
|
|
314
|
+
* are kept exactly as present so the exporter replays them verbatim.
|
|
315
|
+
*/
|
|
316
|
+
getWorkbookProtection(): WorkbookProtection | undefined;
|
|
310
317
|
getIterativeCalculationOptions(): IterativeCalculationOptions | undefined;
|
|
311
318
|
getSheetCount(): number;
|
|
312
319
|
getSheets(minRowCount?: number, minColumnCount?: number): Promise<[Sheet[], TableView[]]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,UAAU,EAEV,qBAAqB,EACrB,wBAAwB,EAExB,aAAa,EACb,cAAc,EAGd,UAAU,EAMV,cAAc,EACd,KAAK,EAEL,MAAM,EACN,gBAAgB,EAEhB,SAAS,EACT,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/index.ts"],"names":[],"mappings":"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"}
|