@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.
Files changed (73) hide show
  1. package/dist/cjs/autofilter-condition.js +6 -2
  2. package/dist/cjs/excel-parser/helpers.d.ts +9 -1
  3. package/dist/cjs/excel-parser/helpers.d.ts.map +1 -1
  4. package/dist/cjs/excel-parser/helpers.js +70 -16
  5. package/dist/cjs/excel-parser/interface.d.ts +9 -1
  6. package/dist/cjs/excel-parser/interface.d.ts.map +1 -1
  7. package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.d.ts.map +1 -1
  8. package/dist/cjs/excel-parser/plugins/xlsx/conditional-formatting.js +61 -6
  9. package/dist/cjs/excel-parser/plugins/xlsx/data-validations.d.ts.map +1 -1
  10. package/dist/cjs/excel-parser/plugins/xlsx/data-validations.js +13 -2
  11. package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts +8 -1
  12. package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
  13. package/dist/cjs/excel-parser/plugins/xlsx/index.js +159 -26
  14. package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts +17 -2
  15. package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts.map +1 -1
  16. package/dist/cjs/excel-parser/plugins/xlsx/styles.js +25 -14
  17. package/dist/cjs/excel-parser/types.d.ts +5 -1
  18. package/dist/cjs/excel-parser/types.d.ts.map +1 -1
  19. package/dist/cjs/excel-parser/workbook.d.ts +1 -0
  20. package/dist/cjs/excel-parser/workbook.d.ts.map +1 -1
  21. package/dist/cjs/excel-parser/workbook.js +4 -0
  22. package/dist/cjs/excel-parser/worker.js +3 -0
  23. package/dist/cjs/exporter/xlsx/chart-builder.d.ts.map +1 -1
  24. package/dist/cjs/exporter/xlsx/chart-builder.js +167 -53
  25. package/dist/cjs/exporter/xlsx/future-functions.d.ts +6 -7
  26. package/dist/cjs/exporter/xlsx/future-functions.d.ts.map +1 -1
  27. package/dist/cjs/exporter/xlsx/future-functions.js +5 -261
  28. package/dist/cjs/exporter/xlsx/style-builder.d.ts.map +1 -1
  29. package/dist/cjs/exporter/xlsx/style-builder.js +62 -19
  30. package/dist/cjs/exporter/xlsx/xlsx-export.d.ts +10 -2
  31. package/dist/cjs/exporter/xlsx/xlsx-export.d.ts.map +1 -1
  32. package/dist/cjs/exporter/xlsx/xlsx-export.js +404 -158
  33. package/dist/cjs/helpers/excel-formula-prefixes.d.ts +51 -0
  34. package/dist/cjs/helpers/excel-formula-prefixes.d.ts.map +1 -0
  35. package/dist/cjs/helpers/excel-formula-prefixes.js +548 -0
  36. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  37. package/dist/esm/autofilter-condition.js +6 -2
  38. package/dist/esm/excel-parser/helpers.d.ts +9 -1
  39. package/dist/esm/excel-parser/helpers.d.ts.map +1 -1
  40. package/dist/esm/excel-parser/helpers.js +65 -3
  41. package/dist/esm/excel-parser/interface.d.ts +9 -1
  42. package/dist/esm/excel-parser/interface.d.ts.map +1 -1
  43. package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.d.ts.map +1 -1
  44. package/dist/esm/excel-parser/plugins/xlsx/conditional-formatting.js +42 -1
  45. package/dist/esm/excel-parser/plugins/xlsx/data-validations.d.ts.map +1 -1
  46. package/dist/esm/excel-parser/plugins/xlsx/data-validations.js +11 -2
  47. package/dist/esm/excel-parser/plugins/xlsx/index.d.ts +8 -1
  48. package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
  49. package/dist/esm/excel-parser/plugins/xlsx/index.js +109 -4
  50. package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts +17 -2
  51. package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts.map +1 -1
  52. package/dist/esm/excel-parser/plugins/xlsx/styles.js +20 -8
  53. package/dist/esm/excel-parser/types.d.ts +5 -1
  54. package/dist/esm/excel-parser/types.d.ts.map +1 -1
  55. package/dist/esm/excel-parser/workbook.d.ts +1 -0
  56. package/dist/esm/excel-parser/workbook.d.ts.map +1 -1
  57. package/dist/esm/excel-parser/workbook.js +3 -0
  58. package/dist/esm/excel-parser/worker.js +3 -0
  59. package/dist/esm/exporter/xlsx/chart-builder.d.ts.map +1 -1
  60. package/dist/esm/exporter/xlsx/chart-builder.js +80 -0
  61. package/dist/esm/exporter/xlsx/future-functions.d.ts +6 -7
  62. package/dist/esm/exporter/xlsx/future-functions.d.ts.map +1 -1
  63. package/dist/esm/exporter/xlsx/future-functions.js +5 -261
  64. package/dist/esm/exporter/xlsx/style-builder.d.ts.map +1 -1
  65. package/dist/esm/exporter/xlsx/style-builder.js +56 -18
  66. package/dist/esm/exporter/xlsx/xlsx-export.d.ts +10 -2
  67. package/dist/esm/exporter/xlsx/xlsx-export.d.ts.map +1 -1
  68. package/dist/esm/exporter/xlsx/xlsx-export.js +338 -106
  69. package/dist/esm/helpers/excel-formula-prefixes.d.ts +51 -0
  70. package/dist/esm/helpers/excel-formula-prefixes.d.ts.map +1 -0
  71. package/dist/esm/helpers/excel-formula-prefixes.js +531 -0
  72. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  73. 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,gBA0G5E;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
+ {"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
- if (filter) {
119
- var filterArray = Array.isArray(filter) ? filter : [filter];
120
- criteria.visibleValues = filterArray.map(function (f) { return f.a$.val; });
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 = (_e = col.colorFilter) !== null && _e !== void 0 ? _e : col["x:colorFilter"];
177
+ var colorFilterNode = (_g = col.colorFilter) !== null && _g !== void 0 ? _g : col["x:colorFilter"];
124
178
  if (colorFilterNode && resolveDxfColor) {
125
- var attrs = (_f = colorFilterNode.a$) !== null && _f !== void 0 ? _f : colorFilterNode;
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 = (_g = col.iconFilter) !== null && _g !== void 0 ? _g : col["x:iconFilter"];
196
+ var iconFilterNode = (_j = col.iconFilter) !== null && _j !== void 0 ? _j : col["x:iconFilter"];
143
197
  if (iconFilterNode) {
144
- var attrs = (_h = iconFilterNode.a$) !== null && _h !== void 0 ? _h : iconFilterNode;
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 = (_j = col.customFilters) !== null && _j !== void 0 ? _j : col["x:customFilters"];
212
+ var customFiltersNode = (_l = col.customFilters) !== null && _l !== void 0 ? _l : col["x:customFilters"];
159
213
  if (customFiltersNode) {
160
- var cfAttrs = (_k = customFiltersNode.a$) !== null && _k !== void 0 ? _k : customFiltersNode;
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 = (_l = customFiltersNode.customFilter) !== null && _l !== void 0 ? _l : customFiltersNode["x:customFilter"];
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 = (_m = col.dynamicFilter) !== null && _m !== void 0 ? _m : col["x:dynamicFilter"];
227
+ var dynamicNode = (_p = col.dynamicFilter) !== null && _p !== void 0 ? _p : col["x:dynamicFilter"];
174
228
  if (dynamicNode && !criteria.condition) {
175
- var dynAttrs = (_o = dynamicNode.a$) !== null && _o !== void 0 ? _o : dynamicNode;
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 = (_p = col.top10) !== null && _p !== void 0 ? _p : col["x:top10"];
235
+ var top10Node = (_r = col.top10) !== null && _r !== void 0 ? _r : col["x:top10"];
182
236
  if (top10Node && !criteria.condition) {
183
- var a = (_q = top10Node.a$) !== null && _q !== void 0 ? _q : top10Node;
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":"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"}
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,EAChB,UAAU,EAGV,qBAAqB,EAGrB,YAAY,EAKZ,aAAa,EACd,MAAM,2BAA2B,CAAC;AAgLnC,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
+ {"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 _a, _b;
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" ? ((_b = (_a = uNode === null || uNode === void 0 ? void 0 : uNode.a$) === null || _a === void 0 ? void 0 : _a.val) !== null && _b !== void 0 ? _b : uNode === null || uNode === void 0 ? void 0 : uNode["#text"]) : uNode;
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 e_1, _a;
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 (e_1_1) { e_1 = { error: e_1_1 }; }
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 (e_1) throw e_1.error; }
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;AAwSvD,eAAO,MAAM,0BAA0B,GACrC,UAAU,eAAe,EACzB,SAAS,MAAM,EACf,YAAY,GAAG,EACf,YAAY,MAAM,+BAyRnB,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":"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"}
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,kBAAkB,EAClB,MAAM,EACN,gBAAgB,EAEhB,SAAS,EACT,gBAAgB,EAEjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EAIb,UAAU,EACV,aAAa,EACd,MAAM,4BAA4B,CAAC;AAgBpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAe5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EACV,YAAY,EACZ,+BAA+B,EAC/B,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAU9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,UAAU,CAAC;AAUlB,OAAO,EAGL,KAAK,0BAA0B,EAEhC,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AA0D7B,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,MAC7C,CAAC;AA+HlB,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAsB5D;AAkBD,qBAAa,cAAc;IACzB,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B;;;;;OAKG;IACH,eAAe,EAAE,KAAK,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC,CAAC;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;gBACpC,UAAU,EAAE,GAAG;IAqG3B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA2C1B;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAwC9B;;OAEG;IACH,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS;IAqE9D;;;;;;;;OAQG;IACH,0BAA0B,IAAI,KAAK,CAAC;QAClC,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,QAAQ,EAAE,KAAK,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,eAAe,CAAC,EAAE,GAAG,CAAC;YACtB,SAAS,CAAC,EAAE,GAAG,CAAC;YAChB,IAAI,CAAC,EAAE,OAAO,CAAC;YACf,MAAM,CAAC,EAAE,OAAO,CAAC;SAClB,CAAC,CAAC;KACJ,CAAC;IAwEF;;OAEG;IACH,OAAO,CAAC,eAAe;WA4CV,IAAI,CAAC,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS;IAerE,OAAO,CAAC,MAAM,EAAE,MAAM;IAGtB,OAAO,CAAC,MAAM,EAAE,MAAM;IAItB,UAAU,CAAC,UAAU,EAAE,MAAM;IAI7B,cAAc,CAAC,IAAI,EAAE,MAAM;IAI3B,OAAO,CAAC,oBAAoB;CAkC7B;AAkED,qBAAa,UAAW,SAAQ,kBAAmB,YAAW,eAAe;IAC3E,SAAS,EAAE,kBAAkB,CAAC;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAG,gBAAgB,CAAC;IACzB,aAAa,EAAG,MAAM,EAAE,CAAC;IACzB;;;;;OAKG;IACH,oBAAoB,EAAG,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACpD,gBAAgB,EAAG,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,cAAc,EAAG,cAAc,CAAC;IAChC,SAAS,EAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,OAAO,EAAG,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC9D,KAAK,EAAG,MAAM,EAAE,CAAC;IACjB,WAAW,EAAG,UAAU,EAAE,CAAC;IAC3B,sBAAsB,EAAE,SAAS,CAAC;IAClC,OAAO,CAAC,kBAAkB,CAAsC;IAChE,OAAO,CAAC,0BAA0B,CAAqC;IACvE,2EAA2E;IAC3E,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,qBAAqB,CAAM;IACnC,OAAO,CAAC,qBAAqB,CAAC,CAAS;IACvC;;;;;OAKG;IACH,OAAO,CAAC,aAAa,CAAwC;IAC7D;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAAC,CAA4D;IACvF;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAA2C;IACrE;;;OAGG;IACH,OAAO,CAAC,qBAAqB,CAA+C;IAC5E,yEAAyE;IACzE,OAAO,CAAC,kBAAkB,CAA0B;IACpD;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB,CAGtB;IACJ;;;;;;;OAOG;IACH;;;;OAIG;IACH,OAAO,CAAC,sBAAsB,CAAuC;IACrE;;;;OAIG;IACH,OAAO,CAAC,mBAAmB,CAGvB;IACJ,OAAO,CAAC,2BAA2B,CAG/B;IACJ,yEAAyE;IACzE,OAAO,CAAC,iCAAiC,CAGrC;IACJ,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,gBAAgB;YASV,kBAAkB;IA0jBhC;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAuBtE;;;;;OAKG;YACW,gBAAgB;YAiKhB,qBAAqB;IAkJnC;;;OAGG;YACW,qBAAqB;;YAkTrB,eAAe;IAsB7B,OAAO,CAAC,yBAAyB;YAQnB,SAAS;YAiCT,iBAAiB;IA4EzB,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,MAAM;IA4BxD,OAAO;IAeP,kBAAkB;IAOlB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM;IAc7D,gCAAgC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG;IAY1D,kBAAkB,CACtB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EAAE;IAiOxB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,iBAAiB;IAQzB;;;OAGG;IACH,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,mBAAmB;YAWZ,eAAe;IA0W9B,OAAO,CAAC,kBAAkB;IAiCpB,mBAAmB,CAAC,GAAG,EAAE,MAAM;IAuErC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAyBlB;;;;;;;OAOG;IACG,2BAA2B,CAC/B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,qBAAqB,CAAC;IA+CjC;;;;OAIG;IACG,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAenE,QAAQ,IAAI,MAAM,EAAE;IAsDpB,UAAU;IAIV;;OAEG;IACH,uBAAuB,CAAC,SAAS,EAAE,GAAG,GAAG,eAAe;IA6FlD,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG;IA2L7D;;;;;OAKG;IACG,YAAY,CAChB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,cAAc,EAAE,CAAC;IAuFtB,YAAY,CAAC,GAAG,EAAE,MAAM;IAgB9B,SAAS;IAIT,QAAQ;IAIR,mFAAmF;IACnF,kBAAkB,IAAI,cAAc,EAAE;IAItC;;;OAGG;IACH,oBAAoB,IAAI,gBAAgB,EAAE;IAW1C;;;;OAIG;IACH,cAAc,IAAI,UAAU,GAAG,IAAI;IAMnC;;;OAGG;IACH,gBAAgB;IAIV,YAAY;IAKlB,UAAU;IAIV;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAgC7B,eAAe;IA8If;;;OAGG;IACH,cAAc,IAAI,OAAO;IAKzB;;;;OAIG;IACH,eAAe,IAAI,OAAO;IAK1B;;;;OAIG;IACH,qBAAqB,IAAI,kBAAkB,GAAG,SAAS;IAKvD,8BAA8B,IAAI,2BAA2B,GAAG,SAAS;IAoCzE,aAAa,IAAI,MAAM;IAMjB,SAAS,CACb,WAAW,SAAI,EACf,cAAc,SAAI,GACjB,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAwBlC,eAAe,IAAI,iBAAiB,EAAE;IA2BhC,QAAQ,CACZ,OAAO,EAAE,MAAM,EACf,WAAW,SAAI,EACf,cAAc,SAAI,GACjB,OAAO,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAkBlB,qBAAqB;IAqQ5B,gBAAgB,CACrB,SAAS,SAAM,EACf,qBAAqB,UAAQ,EAC7B,oBAAoB,UAAO,EAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,IAAI,GACrD,cAAc,CAAC,sBAAsB,EAAE,IAAI,EAAE,OAAO,CAAC;IAsBjD,wBAAwB,CAC7B,OAAO,EAAE,+BAA+B,GACvC,cAAc,CAAC,sBAAsB,EAAE,IAAI,EAAE,OAAO,CAAC;IAexD,kBAAkB,CAAC,OAAO,EAAE,MAAM;YAcnB,eAAe;IAihBxB,WAAW,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IA+B1D;;;;OAIG;IACG,gBAAgB,CACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,cAAc,EAAE,CAAC;IA6DtB,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAgD3C;;;;;OAKG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,2BAA2B,EAAE,UAAU,EAAE,CAAC;YAKnE,gBAAgB;IAkE9B;;;;;;;OAOG;IACG,aAAa,IAAI,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAuHrD,wBAAwB,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAclE,gCAAgC,CAC9B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,EAAE,CAAC;YASrB,kCAAkC;IAqB1C,kBAAkB,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAc/D,0BAA0B,CACxB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,EAAE,CAAC;YASxB,4BAA4B;IA2B1C;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE;IAOtD,cAAc;IAId;;;;;OAKG;IACG,aAAa,IAAI,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IA0ExD,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAIvB,qBAAqB;IAgWnC,OAAO,CAAC,qBAAqB;IAmH7B,OAAO,CAAC,YAAY;IAQpB;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAsHlD"}