@rowsncolumns/toolkit 24.4.5 → 24.5.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/autofilter-condition.d.ts +45 -1
- package/dist/cjs/autofilter-condition.d.ts.map +1 -1
- package/dist/cjs/autofilter-condition.js +135 -12
- package/dist/cjs/excel-parser/helpers.d.ts +15 -1
- package/dist/cjs/excel-parser/helpers.d.ts.map +1 -1
- package/dist/cjs/excel-parser/helpers.js +119 -5
- package/dist/cjs/excel-parser/interface.d.ts +3 -1
- package/dist/cjs/excel-parser/interface.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/ods/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/ods/index.js +186 -97
- package/dist/cjs/excel-parser/plugins/ods/styles.d.ts +15 -0
- package/dist/cjs/excel-parser/plugins/ods/styles.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/ods/styles.js +80 -6
- package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsb/index.js +107 -103
- package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts +77 -1
- package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/charts.js +920 -122
- package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts +7 -1
- package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/drawing.js +24 -9
- package/dist/cjs/excel-parser/plugins/xlsx/form-controls.d.ts +24 -3
- package/dist/cjs/excel-parser/plugins/xlsx/form-controls.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/form-controls.js +25 -3
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts +24 -1
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/index.js +561 -394
- package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts +8 -2
- package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/pivots.js +312 -21
- package/dist/cjs/excel-parser/plugins/xlsx/relationships.d.ts +6 -0
- package/dist/cjs/excel-parser/plugins/xlsx/relationships.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/relationships.js +9 -0
- package/dist/cjs/excel-parser/plugins/xlsx/theme.d.ts +1 -1
- package/dist/cjs/excel-parser/types.d.ts +9 -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 +5 -0
- package/dist/cjs/excel-parser/worker.js +2 -0
- package/dist/cjs/exporter/ods/ods-export.d.ts.map +1 -1
- package/dist/cjs/exporter/ods/ods-export.js +255 -80
- package/dist/cjs/exporter/xlsx/chart-builder.d.ts +7 -1
- package/dist/cjs/exporter/xlsx/chart-builder.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/chart-builder.js +902 -119
- package/dist/cjs/exporter/xlsx/form-controls-builder.d.ts +16 -3
- package/dist/cjs/exporter/xlsx/form-controls-builder.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/form-controls-builder.js +30 -8
- package/dist/cjs/exporter/xlsx/pivot-builder.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/pivot-builder.js +206 -162
- package/dist/cjs/exporter/xlsx/style-builder.d.ts +8 -2
- package/dist/cjs/exporter/xlsx/style-builder.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/style-builder.js +25 -0
- package/dist/cjs/exporter/xlsx/xlsx-export.d.ts +2 -2
- package/dist/cjs/exporter/xlsx/xlsx-export.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/xlsx-export.js +728 -452
- package/dist/esm/autofilter-condition.d.ts +45 -1
- package/dist/esm/autofilter-condition.d.ts.map +1 -1
- package/dist/esm/autofilter-condition.js +131 -11
- package/dist/esm/excel-parser/helpers.d.ts +15 -1
- package/dist/esm/excel-parser/helpers.d.ts.map +1 -1
- package/dist/esm/excel-parser/helpers.js +94 -4
- package/dist/esm/excel-parser/interface.d.ts +3 -1
- package/dist/esm/excel-parser/interface.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/ods/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/ods/index.js +105 -22
- package/dist/esm/excel-parser/plugins/ods/styles.d.ts +15 -0
- package/dist/esm/excel-parser/plugins/ods/styles.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/ods/styles.js +79 -5
- package/dist/esm/excel-parser/plugins/xlsb/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsb/index.js +15 -7
- package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts +77 -1
- package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/charts.js +708 -16
- package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts +7 -1
- package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/drawing.js +23 -0
- package/dist/esm/excel-parser/plugins/xlsx/form-controls.d.ts +24 -3
- package/dist/esm/excel-parser/plugins/xlsx/form-controls.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/form-controls.js +21 -3
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts +24 -1
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/index.js +192 -54
- package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts +8 -2
- package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/pivots.js +220 -4
- package/dist/esm/excel-parser/plugins/xlsx/relationships.d.ts +6 -0
- package/dist/esm/excel-parser/plugins/xlsx/relationships.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/relationships.js +9 -0
- package/dist/esm/excel-parser/plugins/xlsx/theme.d.ts +1 -1
- package/dist/esm/excel-parser/types.d.ts +9 -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 +4 -0
- package/dist/esm/excel-parser/worker.js +2 -0
- package/dist/esm/exporter/ods/ods-export.d.ts.map +1 -1
- package/dist/esm/exporter/ods/ods-export.js +238 -72
- package/dist/esm/exporter/xlsx/chart-builder.d.ts +7 -1
- package/dist/esm/exporter/xlsx/chart-builder.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/chart-builder.js +674 -58
- package/dist/esm/exporter/xlsx/form-controls-builder.d.ts +16 -3
- package/dist/esm/exporter/xlsx/form-controls-builder.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/form-controls-builder.js +29 -8
- package/dist/esm/exporter/xlsx/pivot-builder.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/pivot-builder.js +187 -139
- package/dist/esm/exporter/xlsx/style-builder.d.ts +8 -2
- package/dist/esm/exporter/xlsx/style-builder.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/style-builder.js +28 -0
- package/dist/esm/exporter/xlsx/xlsx-export.d.ts +2 -2
- package/dist/esm/exporter/xlsx/xlsx-export.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/xlsx-export.js +451 -197
- package/package.json +10 -5
|
@@ -21,10 +21,44 @@ export type AutoFilterCondition = {
|
|
|
21
21
|
type: ConditionType;
|
|
22
22
|
values: ConditionValue[];
|
|
23
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* The condition part of a column's `filterCriteria` as `<filterColumn>`
|
|
26
|
+
* carries it: one clause, or two clauses joined by Excel's Custom AutoFilter
|
|
27
|
+
* And / Or (`<customFilters and="1">` with two `<customFilter>` children).
|
|
28
|
+
*/
|
|
29
|
+
export type AutoFilterCriteriaConditions = {
|
|
30
|
+
condition: AutoFilterCondition;
|
|
31
|
+
condition2?: AutoFilterCondition;
|
|
32
|
+
conditionJoin?: "AND" | "OR";
|
|
33
|
+
};
|
|
24
34
|
export type RawCustomFilter = {
|
|
25
35
|
operator?: string;
|
|
26
36
|
val?: string;
|
|
27
37
|
};
|
|
38
|
+
/** `<top10 top percent val>` attributes as parsed from the sheet XML. */
|
|
39
|
+
export type RawTop10Filter = {
|
|
40
|
+
top?: string;
|
|
41
|
+
percent?: string;
|
|
42
|
+
val?: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* `<filterColumn>` condition XML for a column's criteria: a two-clause Custom
|
|
46
|
+
* AutoFilter becomes `<customFilters [and="1"]>` with both clauses when each
|
|
47
|
+
* has a single-element form; otherwise the first clause alone is written the
|
|
48
|
+
* way `buildAutoFilterConditionXml` does (the second is dropped — say so in
|
|
49
|
+
* the PR when this asymmetry matters).
|
|
50
|
+
*/
|
|
51
|
+
export declare const buildAutoFilterCriteriaXml: (criteria: {
|
|
52
|
+
condition?: {
|
|
53
|
+
type?: ConditionType | null;
|
|
54
|
+
values?: ConditionValue[] | null;
|
|
55
|
+
} | null;
|
|
56
|
+
condition2?: {
|
|
57
|
+
type?: ConditionType | null;
|
|
58
|
+
values?: ConditionValue[] | null;
|
|
59
|
+
} | null;
|
|
60
|
+
conditionJoin?: "AND" | "OR" | null;
|
|
61
|
+
}) => string | null;
|
|
28
62
|
/**
|
|
29
63
|
* Build the `<customFilters>` / `<dynamicFilter>` XML for a filter condition,
|
|
30
64
|
* or `null` when the condition type has no AutoFilter representation (BLANK /
|
|
@@ -35,9 +69,19 @@ export declare const buildAutoFilterConditionXml: (condition: {
|
|
|
35
69
|
type?: ConditionType | null;
|
|
36
70
|
values?: ConditionValue[] | null;
|
|
37
71
|
} | null | undefined) => string | null;
|
|
72
|
+
/** Map an Excel `<top10 top percent val>` back to a condition, or null. */
|
|
73
|
+
export declare const top10FilterToCondition: (raw: RawTop10Filter | undefined) => AutoFilterCondition | null;
|
|
38
74
|
/** Map an Excel `<dynamicFilter type=…>` back to a condition, or null. */
|
|
39
75
|
export declare const dynamicFilterToCondition: (type: string | undefined) => AutoFilterCondition | null;
|
|
40
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* Map Excel `<customFilters>` children back to a column's condition(s), or
|
|
78
|
+
* null. Two children are a `NUMBER_BETWEEN` (`and`, `>=` then `<=`) or
|
|
79
|
+
* `NUMBER_NOT_BETWEEN` (or, `<` then `>`) range when they have that exact
|
|
80
|
+
* shape — the form the exporter writes for those types — and otherwise a
|
|
81
|
+
* Custom AutoFilter's two clauses joined by And / Or.
|
|
82
|
+
*/
|
|
83
|
+
export declare const customFiltersToCriteria: (filters: RawCustomFilter[], and: boolean) => AutoFilterCriteriaConditions | null;
|
|
84
|
+
/** Map Excel `<customFilters>` children back to a single condition, or null. */
|
|
41
85
|
export declare const customFiltersToCondition: (filters: RawCustomFilter[], and: boolean) => AutoFilterCondition | null;
|
|
42
86
|
export {};
|
|
43
87
|
//# sourceMappingURL=autofilter-condition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autofilter-condition.d.ts","sourceRoot":"","sources":["../../autofilter-condition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE;;;;;;;;;;;;;;GAcG;AAEH,KAAK,cAAc,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC;AACnD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"autofilter-condition.d.ts","sourceRoot":"","sources":["../../autofilter-condition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE;;;;;;;;;;;;;;GAcG;AAEH,KAAK,cAAc,GAAG;IAAE,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC;AACnD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,aAAa,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAClE,yEAAyE;AACzE,MAAM,MAAM,cAAc,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAoH9E;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,GAAI,UAAU;IACnD,SAAS,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACrF,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IACtF,aAAa,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;CACrC,KAAG,MAAM,GAAG,IAUZ,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,GACtC,WAAW;IAAE,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,KAC9F,MAAM,GAAG,IAmCX,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,GACjC,KAAK,cAAc,GAAG,SAAS,KAC9B,mBAAmB,GAAG,IAexB,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,GACnC,MAAM,MAAM,GAAG,SAAS,KACvB,mBAAmB,GAAG,IAIxB,CAAC;AAIF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAClC,SAAS,eAAe,EAAE,EAC1B,KAAK,OAAO,KACX,4BAA4B,GAAG,IA8BjC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,GACnC,SAAS,eAAe,EAAE,EAC1B,KAAK,OAAO,KACX,mBAAmB,GAAG,IAAgE,CAAC"}
|
|
@@ -17,6 +17,36 @@ const DYNAMIC_BY_TYPE = {
|
|
|
17
17
|
DATE_NEXT_MONTH: "nextMonth",
|
|
18
18
|
NUMBER_ABOVE_AVERAGE: "aboveAverage",
|
|
19
19
|
NUMBER_BELOW_AVERAGE: "belowAverage",
|
|
20
|
+
DATE_THIS_QUARTER: "thisQuarter",
|
|
21
|
+
DATE_LAST_QUARTER: "lastQuarter",
|
|
22
|
+
DATE_NEXT_QUARTER: "nextQuarter",
|
|
23
|
+
DATE_THIS_YEAR: "thisYear",
|
|
24
|
+
DATE_LAST_YEAR: "lastYear",
|
|
25
|
+
DATE_NEXT_YEAR: "nextYear",
|
|
26
|
+
DATE_YEAR_TO_DATE: "yearToDate",
|
|
27
|
+
DATE_IN_Q1: "Q1",
|
|
28
|
+
DATE_IN_Q2: "Q2",
|
|
29
|
+
DATE_IN_Q3: "Q3",
|
|
30
|
+
DATE_IN_Q4: "Q4",
|
|
31
|
+
DATE_IN_M1: "M1",
|
|
32
|
+
DATE_IN_M2: "M2",
|
|
33
|
+
DATE_IN_M3: "M3",
|
|
34
|
+
DATE_IN_M4: "M4",
|
|
35
|
+
DATE_IN_M5: "M5",
|
|
36
|
+
DATE_IN_M6: "M6",
|
|
37
|
+
DATE_IN_M7: "M7",
|
|
38
|
+
DATE_IN_M8: "M8",
|
|
39
|
+
DATE_IN_M9: "M9",
|
|
40
|
+
DATE_IN_M10: "M10",
|
|
41
|
+
DATE_IN_M11: "M11",
|
|
42
|
+
DATE_IN_M12: "M12",
|
|
43
|
+
};
|
|
44
|
+
// Excel's "Top 10…" AutoFilter: `<top10 top="1|0" percent="1|0" val="N"/>`.
|
|
45
|
+
const TOP10_BY_TYPE = {
|
|
46
|
+
NUMBER_TOP_N: { top: true, percent: false },
|
|
47
|
+
NUMBER_BOTTOM_N: { top: false, percent: false },
|
|
48
|
+
NUMBER_TOP_PERCENT: { top: true, percent: true },
|
|
49
|
+
NUMBER_BOTTOM_PERCENT: { top: false, percent: true },
|
|
20
50
|
};
|
|
21
51
|
const TYPE_BY_DYNAMIC = Object.fromEntries(Object.entries(DYNAMIC_BY_TYPE).map(([k, v]) => [v, k]));
|
|
22
52
|
// condition type -> single customFilter operator (number + date comparisons)
|
|
@@ -52,6 +82,43 @@ const TEXT_WRAP = {
|
|
|
52
82
|
TEXT_ENDS_WITH: { op: "equal", wrap: (v) => `*${v}` },
|
|
53
83
|
};
|
|
54
84
|
const customFilterXml = (operator, val) => `<customFilter operator="${operator}" val="${escapeXml(val)}"/>`;
|
|
85
|
+
/**
|
|
86
|
+
* A single `<customFilter>` for one comparison clause (number / date / text),
|
|
87
|
+
* or `null` when the clause has no single-element form (between, dynamic, …).
|
|
88
|
+
*/
|
|
89
|
+
const singleCustomFilterXml = (condition) => {
|
|
90
|
+
const type = condition?.type;
|
|
91
|
+
if (!type)
|
|
92
|
+
return null;
|
|
93
|
+
const v0 = condition?.values?.[0]?.userEnteredValue;
|
|
94
|
+
if (v0 == null)
|
|
95
|
+
return null;
|
|
96
|
+
const op = OPERATOR_BY_TYPE[type];
|
|
97
|
+
if (op)
|
|
98
|
+
return customFilterXml(op, v0);
|
|
99
|
+
const text = TEXT_WRAP[type];
|
|
100
|
+
if (text)
|
|
101
|
+
return customFilterXml(text.op, text.wrap(v0));
|
|
102
|
+
return null;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* `<filterColumn>` condition XML for a column's criteria: a two-clause Custom
|
|
106
|
+
* AutoFilter becomes `<customFilters [and="1"]>` with both clauses when each
|
|
107
|
+
* has a single-element form; otherwise the first clause alone is written the
|
|
108
|
+
* way `buildAutoFilterConditionXml` does (the second is dropped — say so in
|
|
109
|
+
* the PR when this asymmetry matters).
|
|
110
|
+
*/
|
|
111
|
+
export const buildAutoFilterCriteriaXml = (criteria) => {
|
|
112
|
+
if (criteria.condition2?.type) {
|
|
113
|
+
const first = singleCustomFilterXml(criteria.condition);
|
|
114
|
+
const second = singleCustomFilterXml(criteria.condition2);
|
|
115
|
+
if (first && second) {
|
|
116
|
+
const and = criteria.conditionJoin === "OR" ? "" : ` and="1"`;
|
|
117
|
+
return `<customFilters${and}>${first}${second}</customFilters>`;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return buildAutoFilterConditionXml(criteria.condition);
|
|
121
|
+
};
|
|
55
122
|
/**
|
|
56
123
|
* Build the `<customFilters>` / `<dynamicFilter>` XML for a filter condition,
|
|
57
124
|
* or `null` when the condition type has no AutoFilter representation (BLANK /
|
|
@@ -68,6 +135,13 @@ export const buildAutoFilterConditionXml = (condition) => {
|
|
|
68
135
|
const dynamic = DYNAMIC_BY_TYPE[type];
|
|
69
136
|
if (dynamic)
|
|
70
137
|
return `<dynamicFilter type="${dynamic}"/>`;
|
|
138
|
+
const top10 = TOP10_BY_TYPE[type];
|
|
139
|
+
if (top10) {
|
|
140
|
+
const n = Number(v0);
|
|
141
|
+
if (!Number.isFinite(n) || n <= 0)
|
|
142
|
+
return null;
|
|
143
|
+
return `<top10 top="${top10.top ? 1 : 0}" percent="${top10.percent ? 1 : 0}" val="${n}"/>`;
|
|
144
|
+
}
|
|
71
145
|
if (type === "NUMBER_BETWEEN" || type === "DATE_BETWEEN") {
|
|
72
146
|
if (v0 == null || v1 == null)
|
|
73
147
|
return null;
|
|
@@ -88,6 +162,25 @@ export const buildAutoFilterConditionXml = (condition) => {
|
|
|
88
162
|
}
|
|
89
163
|
return null;
|
|
90
164
|
};
|
|
165
|
+
/** Map an Excel `<top10 top percent val>` back to a condition, or null. */
|
|
166
|
+
export const top10FilterToCondition = (raw) => {
|
|
167
|
+
if (!raw)
|
|
168
|
+
return null;
|
|
169
|
+
const n = Number(raw.val);
|
|
170
|
+
if (!Number.isFinite(n) || n <= 0)
|
|
171
|
+
return null;
|
|
172
|
+
// Both attributes default to true/false per the schema: `top` defaults to 1, `percent` to 0.
|
|
173
|
+
const top = raw.top === undefined || raw.top === "1" || raw.top === "true";
|
|
174
|
+
const percent = raw.percent === "1" || raw.percent === "true";
|
|
175
|
+
const type = top
|
|
176
|
+
? percent
|
|
177
|
+
? "NUMBER_TOP_PERCENT"
|
|
178
|
+
: "NUMBER_TOP_N"
|
|
179
|
+
: percent
|
|
180
|
+
? "NUMBER_BOTTOM_PERCENT"
|
|
181
|
+
: "NUMBER_BOTTOM_N";
|
|
182
|
+
return { type, values: [{ userEnteredValue: String(n) }] };
|
|
183
|
+
};
|
|
91
184
|
/** Map an Excel `<dynamicFilter type=…>` back to a condition, or null. */
|
|
92
185
|
export const dynamicFilterToCondition = (type) => {
|
|
93
186
|
if (!type)
|
|
@@ -96,22 +189,49 @@ export const dynamicFilterToCondition = (type) => {
|
|
|
96
189
|
return conditionType ? { type: conditionType, values: [] } : null;
|
|
97
190
|
};
|
|
98
191
|
const isNumeric = (v) => v !== "" && !Number.isNaN(Number(v));
|
|
99
|
-
/**
|
|
100
|
-
|
|
192
|
+
/**
|
|
193
|
+
* Map Excel `<customFilters>` children back to a column's condition(s), or
|
|
194
|
+
* null. Two children are a `NUMBER_BETWEEN` (`and`, `>=` then `<=`) or
|
|
195
|
+
* `NUMBER_NOT_BETWEEN` (or, `<` then `>`) range when they have that exact
|
|
196
|
+
* shape — the form the exporter writes for those types — and otherwise a
|
|
197
|
+
* Custom AutoFilter's two clauses joined by And / Or.
|
|
198
|
+
*/
|
|
199
|
+
export const customFiltersToCriteria = (filters, and) => {
|
|
101
200
|
const valid = filters.filter((f) => f && f.val !== undefined);
|
|
102
201
|
if (valid.length === 0)
|
|
103
202
|
return null;
|
|
104
|
-
// Two filters => a range (between when AND, not-between when OR).
|
|
105
203
|
if (valid.length >= 2) {
|
|
106
|
-
const
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
204
|
+
const [first, second] = valid;
|
|
205
|
+
const v0 = String(first.val ?? "");
|
|
206
|
+
const v1 = String(second.val ?? "");
|
|
207
|
+
const isRange = and
|
|
208
|
+
? first.operator === "greaterThanOrEqual" &&
|
|
209
|
+
second.operator === "lessThanOrEqual"
|
|
210
|
+
: first.operator === "lessThan" && second.operator === "greaterThan";
|
|
211
|
+
if (isRange && isNumeric(v0) && isNumeric(v1)) {
|
|
212
|
+
return {
|
|
213
|
+
condition: {
|
|
214
|
+
type: and ? "NUMBER_BETWEEN" : "NUMBER_NOT_BETWEEN",
|
|
215
|
+
values: [{ userEnteredValue: v0 }, { userEnteredValue: v1 }],
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
const condition = singleCustomFilterToCondition(first);
|
|
220
|
+
const condition2 = singleCustomFilterToCondition(second);
|
|
221
|
+
if (!condition)
|
|
222
|
+
return condition2 ? { condition: condition2 } : null;
|
|
223
|
+
return condition2
|
|
224
|
+
? { condition, condition2, conditionJoin: and ? "AND" : "OR" }
|
|
225
|
+
: { condition };
|
|
112
226
|
}
|
|
113
|
-
const
|
|
114
|
-
|
|
227
|
+
const condition = singleCustomFilterToCondition(valid[0]);
|
|
228
|
+
return condition ? { condition } : null;
|
|
229
|
+
};
|
|
230
|
+
/** Map Excel `<customFilters>` children back to a single condition, or null. */
|
|
231
|
+
export const customFiltersToCondition = (filters, and) => customFiltersToCriteria(filters, and)?.condition ?? null;
|
|
232
|
+
const singleCustomFilterToCondition = (filter) => {
|
|
233
|
+
const operator = filter.operator ?? "equal";
|
|
234
|
+
const val = String(filter.val ?? "");
|
|
115
235
|
// Text wildcards: equal/notEqual carrying * map back to contains/starts/ends.
|
|
116
236
|
if ((operator === "equal" || operator === "notEqual") && /[*?]/.test(val)) {
|
|
117
237
|
const negated = operator === "notEqual";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { GridRange } from "@rowsncolumns/common-types";
|
|
2
|
-
import type { Column, FilterSpec, TableTotalsRowFunction } from "@rowsncolumns/spreadsheet";
|
|
2
|
+
import type { Column, FilterSpec, SortSpecs, TableTotalsRowFunction } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
export declare const getRangeFromAddressRef: (ref: string) => GridRange | undefined;
|
|
4
4
|
/**
|
|
5
5
|
* Convert an xlsx column width (in units of max-digit-width of the
|
|
@@ -29,6 +29,20 @@ export declare function createFilterSpecsFromAutoFilter(autoFilter: any,
|
|
|
29
29
|
* (caller doesn't have access to workbook dxfs).
|
|
30
30
|
*/
|
|
31
31
|
resolveDxfColor?: (dxfId: number, cellColor: boolean) => string | undefined): FilterSpec[];
|
|
32
|
+
/**
|
|
33
|
+
* The table-relative column ids whose header shows NO filter button —
|
|
34
|
+
* `<filterColumn colId="n" hiddenButton="1"/>` (Excel's per-column toggle;
|
|
35
|
+
* the table-level toggle is the presence of `<autoFilter>` itself).
|
|
36
|
+
*/
|
|
37
|
+
export declare function hiddenFilterButtonColumns(autoFilter: any): Set<number>;
|
|
38
|
+
/**
|
|
39
|
+
* A table's persisted sort levels — `<sortState><sortCondition ref
|
|
40
|
+
* descending sortBy dxfId iconSet iconId customList/></sortState>` — as
|
|
41
|
+
* range-relative `SortSpecs` (the inverse of the exporter's
|
|
42
|
+
* `buildTableSortStateXml`). A colour level's `dxfId` resolves through
|
|
43
|
+
* `resolveDxfColor` (skipped when the caller has no dxf table).
|
|
44
|
+
*/
|
|
45
|
+
export declare function createSortSpecsFromSortState(sortState: any, range: GridRange, resolveDxfColor?: (dxfId: number, cellColor: boolean) => string | undefined): SortSpecs[];
|
|
32
46
|
/**
|
|
33
47
|
* Reads an Excel file and extracts sheet metadata
|
|
34
48
|
*/
|
|
@@ -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,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;
|
|
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;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,UAIrD;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,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { customFiltersToCriteria, dynamicFilterToCondition, top10FilterToCondition, } from "../autofilter-condition";
|
|
2
2
|
import { addressToSelection } from "@rowsncolumns/utils";
|
|
3
3
|
export const getRangeFromAddressRef = (ref) => {
|
|
4
4
|
const selection = addressToSelection(ref);
|
|
@@ -153,9 +153,9 @@ resolveDxfColor) {
|
|
|
153
153
|
const a = f.a$ ?? f;
|
|
154
154
|
return { operator: a?.operator, val: a?.val };
|
|
155
155
|
});
|
|
156
|
-
const
|
|
157
|
-
if (
|
|
158
|
-
criteria
|
|
156
|
+
const conditions = customFiltersToCriteria(cfArray, and);
|
|
157
|
+
if (conditions)
|
|
158
|
+
Object.assign(criteria, conditions);
|
|
159
159
|
}
|
|
160
160
|
// <dynamicFilter type="thisMonth"/> etc.
|
|
161
161
|
const dynamicNode = col.dynamicFilter ?? col["x:dynamicFilter"];
|
|
@@ -165,12 +165,102 @@ resolveDxfColor) {
|
|
|
165
165
|
if (condition)
|
|
166
166
|
criteria.condition = condition;
|
|
167
167
|
}
|
|
168
|
+
// <top10 top="1" percent="0" val="10"/> (Excel's "Top 10…")
|
|
169
|
+
const top10Node = col.top10 ?? col["x:top10"];
|
|
170
|
+
if (top10Node && !criteria.condition) {
|
|
171
|
+
const a = top10Node.a$ ?? top10Node;
|
|
172
|
+
const condition = top10FilterToCondition({
|
|
173
|
+
top: a?.top !== undefined ? String(a.top) : undefined,
|
|
174
|
+
percent: a?.percent !== undefined ? String(a.percent) : undefined,
|
|
175
|
+
val: a?.val !== undefined ? String(a.val) : undefined,
|
|
176
|
+
});
|
|
177
|
+
if (condition)
|
|
178
|
+
criteria.condition = condition;
|
|
179
|
+
}
|
|
168
180
|
if (Object.keys(criteria).length > 0) {
|
|
169
181
|
filterSpecs.push({ columnIndex, filterCriteria: criteria });
|
|
170
182
|
}
|
|
171
183
|
}
|
|
172
184
|
return filterSpecs.sort((a, b) => a.columnIndex - b.columnIndex);
|
|
173
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* The table-relative column ids whose header shows NO filter button —
|
|
188
|
+
* `<filterColumn colId="n" hiddenButton="1"/>` (Excel's per-column toggle;
|
|
189
|
+
* the table-level toggle is the presence of `<autoFilter>` itself).
|
|
190
|
+
*/
|
|
191
|
+
export function hiddenFilterButtonColumns(autoFilter) {
|
|
192
|
+
const hidden = new Set();
|
|
193
|
+
const filterColumn = autoFilter?.filterColumn ?? autoFilter?.["x:filterColumn"];
|
|
194
|
+
if (!filterColumn)
|
|
195
|
+
return hidden;
|
|
196
|
+
const filterColumns = Array.isArray(filterColumn)
|
|
197
|
+
? filterColumn
|
|
198
|
+
: [filterColumn];
|
|
199
|
+
for (const col of filterColumns) {
|
|
200
|
+
const attrs = col?.a$ ?? {};
|
|
201
|
+
const hiddenButton = attrs.hiddenButton;
|
|
202
|
+
if (hiddenButton !== "1" && hiddenButton !== "true")
|
|
203
|
+
continue;
|
|
204
|
+
const columnIndex = parseInt(String(attrs.colId), 10);
|
|
205
|
+
if (Number.isFinite(columnIndex))
|
|
206
|
+
hidden.add(columnIndex);
|
|
207
|
+
}
|
|
208
|
+
return hidden;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* A table's persisted sort levels — `<sortState><sortCondition ref
|
|
212
|
+
* descending sortBy dxfId iconSet iconId customList/></sortState>` — as
|
|
213
|
+
* range-relative `SortSpecs` (the inverse of the exporter's
|
|
214
|
+
* `buildTableSortStateXml`). A colour level's `dxfId` resolves through
|
|
215
|
+
* `resolveDxfColor` (skipped when the caller has no dxf table).
|
|
216
|
+
*/
|
|
217
|
+
export function createSortSpecsFromSortState(sortState, range, resolveDxfColor) {
|
|
218
|
+
const raw = sortState?.sortCondition ?? sortState?.["x:sortCondition"];
|
|
219
|
+
if (!raw)
|
|
220
|
+
return [];
|
|
221
|
+
const conditions = Array.isArray(raw) ? raw : [raw];
|
|
222
|
+
const specs = [];
|
|
223
|
+
for (const condition of conditions) {
|
|
224
|
+
const attrs = condition?.a$ ?? {};
|
|
225
|
+
const conditionRange = attrs.ref
|
|
226
|
+
? getRangeFromAddressRef(String(attrs.ref))
|
|
227
|
+
: undefined;
|
|
228
|
+
if (!conditionRange)
|
|
229
|
+
continue;
|
|
230
|
+
const dimensionIndex = conditionRange.startColumnIndex - range.startColumnIndex;
|
|
231
|
+
if (dimensionIndex < 0)
|
|
232
|
+
continue;
|
|
233
|
+
const spec = {
|
|
234
|
+
dimensionIndex,
|
|
235
|
+
sortOrder: attrs.descending === "1" || attrs.descending === "true"
|
|
236
|
+
? "DESCENDING"
|
|
237
|
+
: "ASCENDING",
|
|
238
|
+
};
|
|
239
|
+
const sortBy = attrs.sortBy;
|
|
240
|
+
if (sortBy === "cellColor" || sortBy === "fontColor") {
|
|
241
|
+
spec.sortBy = sortBy;
|
|
242
|
+
const dxfId = parseInt(String(attrs.dxfId), 10);
|
|
243
|
+
const color = Number.isFinite(dxfId)
|
|
244
|
+
? resolveDxfColor?.(dxfId, sortBy === "cellColor")
|
|
245
|
+
: undefined;
|
|
246
|
+
if (color)
|
|
247
|
+
spec.sortColor = color;
|
|
248
|
+
}
|
|
249
|
+
else if (sortBy === "icon" && typeof attrs.iconSet === "string") {
|
|
250
|
+
const iconId = parseInt(String(attrs.iconId ?? 0), 10);
|
|
251
|
+
spec.sortBy = "icon";
|
|
252
|
+
spec.sortIcon = {
|
|
253
|
+
iconSet: attrs.iconSet,
|
|
254
|
+
iconId: Number.isFinite(iconId) ? iconId : 0,
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
if (typeof attrs.customList === "string" && attrs.customList.length) {
|
|
258
|
+
spec.customList = attrs.customList.split(",");
|
|
259
|
+
}
|
|
260
|
+
specs.push(spec);
|
|
261
|
+
}
|
|
262
|
+
return specs;
|
|
263
|
+
}
|
|
174
264
|
/**
|
|
175
265
|
* Reads an Excel file and extracts sheet metadata
|
|
176
266
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, NamedRange, ProtectedRange, Sheet, Slicer, SpreadsheetTheme, TableView } from "@rowsncolumns/spreadsheet";
|
|
1
|
+
import type { ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, NamedRange, ProtectedRange, Sheet, Slicer, SpreadsheetTheme, TableView, CustomTableStyle } 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 {
|
|
@@ -62,6 +62,8 @@ export interface IWorkbookPlugin {
|
|
|
62
62
|
* Workbook named cell styles (`<cellStyles>`) resolved to cell formats.
|
|
63
63
|
*/
|
|
64
64
|
getNamedCellStyles?(): NamedCellStyle[];
|
|
65
|
+
/** Custom `<tableStyle>`s resolved to banding — the `customTableStyles` facet (#668 T-103). */
|
|
66
|
+
getCustomTableStyles?(): CustomTableStyle[];
|
|
65
67
|
/**
|
|
66
68
|
* Get the workbook default font (styles.xml fonts[0]) when the source
|
|
67
69
|
* format has one; null/undefined otherwise.
|
|
@@ -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,
|
|
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":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/ods/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/ods/index.ts"],"names":[],"mappings":"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"}
|