@dcs-tech/ui 0.4.0 → 0.6.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.
Files changed (65) hide show
  1. package/dist/ChartImageMenu-CuuFnW9q.js +1481 -0
  2. package/dist/{ChartView-Cehrcr05.js → ChartView-nS4f4EU_.js} +514 -514
  3. package/dist/{SummaryChart-y27q_BBN.js → SummaryChart-CVg6i2mx.js} +2 -2
  4. package/dist/{SummaryImage-DDNEEu_K.js → SummaryImage-CoEFzMl6.js} +2 -2
  5. package/dist/{SummarySeeAll-0dX-_LFe.js → SummarySeeAll-C_OUs3kn.js} +5 -5
  6. package/dist/assets/fileTask.worker-FQSUtwcz.js +1 -0
  7. package/dist/columnValue-K98ElfJc.js +610 -0
  8. package/dist/exportContext-CJaIv8R-.js +166 -0
  9. package/dist/{exportEngine-DL-jEXFU.js → exportEngine-CDLYHH0d.js} +137 -133
  10. package/dist/fileActions-KSaVGnaE.js +144 -0
  11. package/dist/{geometry-CG2nOEnw.js → geometry-ChwYB45B.js} +433 -497
  12. package/dist/index.js +8572 -8435
  13. package/dist/{defaults-DL745PK1.js → labels-CnqqTrne.js} +3 -79
  14. package/dist/runFileTask-BClLQjmv.js +109 -0
  15. package/dist/scrollArea-DAlVT5U7.js +214 -0
  16. package/dist/style.css +1 -1
  17. package/dist/{summaryChartData-Djo73zb8.js → summaryChartData-pNvzaEHp.js} +1 -1
  18. package/dist/types/components/Charts/parts.d.ts +1 -1
  19. package/dist/types/components/Collapsible/index.d.ts +1 -1
  20. package/dist/types/components/DataTable/DataTable.d.ts +1 -1
  21. package/dist/types/components/DataTable/cards/cardFields.d.ts +2 -4
  22. package/dist/types/components/DataTable/columnValue.d.ts +19 -0
  23. package/dist/types/components/DataTable/export/exportCells.d.ts +13 -0
  24. package/dist/types/components/DataTable/export/exportEngine.d.ts +2 -0
  25. package/dist/types/components/DataTable/export/useTableExport.d.ts +2 -0
  26. package/dist/types/components/DataTable/host.d.ts +2 -0
  27. package/dist/types/components/DataTable/index.d.ts +1 -1
  28. package/dist/types/components/DataTable/labels.d.ts +2 -0
  29. package/dist/types/components/DataTable/types.d.ts +11 -0
  30. package/dist/types/components/DataTable/useTable.d.ts +4 -1
  31. package/dist/types/components/DataTable/vendor/index.d.ts +1 -1
  32. package/dist/types/components/EditableTable/EditableTableCell.d.ts +1 -1
  33. package/dist/types/components/FileEngine/FileEngineContext.d.ts +17 -0
  34. package/dist/types/components/FileEngine/FileEngineProvider.d.ts +12 -0
  35. package/dist/types/components/FileEngine/FileJobsTray.d.ts +10 -0
  36. package/dist/types/components/FileEngine/index.d.ts +8 -0
  37. package/dist/types/components/FileEngine/labels.d.ts +29 -0
  38. package/dist/types/components/Toast/ToastHost.d.ts +1 -0
  39. package/dist/types/components/UIProvider/UIFormatContext.d.ts +7 -0
  40. package/dist/types/components/UIProvider/UILabelsContext.d.ts +116 -0
  41. package/dist/types/components/UIProvider/UIProvider.d.ts +6 -1
  42. package/dist/types/components/UIProvider/index.d.ts +4 -0
  43. package/dist/types/core/logic/collapsible.logic.d.ts +6 -1
  44. package/dist/types/core/logic/datePicker.logic.d.ts +5 -0
  45. package/dist/types/core/logic/exportSafety.logic.d.ts +1 -0
  46. package/dist/types/core/logic/fileQueue.logic.d.ts +28 -0
  47. package/dist/types/core/logic/format.logic.d.ts +4 -0
  48. package/dist/types/core/logic/index.d.ts +4 -0
  49. package/dist/types/core/logic/tableDate.logic.d.ts +7 -0
  50. package/dist/types/core/logic/tableSummary.logic.d.ts +2 -2
  51. package/dist/types/core/types/collapsible.types.d.ts +4 -16
  52. package/dist/types/core/types/fileEngine.types.d.ts +65 -0
  53. package/dist/types/core/types/format.types.d.ts +15 -0
  54. package/dist/types/core/types/index.d.ts +2 -0
  55. package/dist/types/core/types/table.types.d.ts +1 -0
  56. package/dist/types/{components/DataTable/vendor → file}/fileActions.d.ts +17 -7
  57. package/dist/types/file/fileEngine.d.ts +48 -0
  58. package/dist/types/file/tasks/fileTask.worker.d.ts +1 -0
  59. package/dist/types/file/tasks/runFileTask.d.ts +6 -0
  60. package/dist/types/file/workerPool.d.ts +17 -0
  61. package/dist/types/index.d.ts +9 -2
  62. package/package.json +1 -1
  63. package/dist/ChartImageMenu-HILSfn5A.js +0 -1115
  64. package/dist/exportContext-CdpsOzE8.js +0 -235
  65. package/dist/scrollArea-CkPGDYH2.js +0 -210
@@ -1,5 +1,6 @@
1
1
  "use client";
2
- import { a as e, c as t, d as n, f as r, h as i, i as a, l as o, m as s, n as c, o as l, p as u, r as d, s as f, u as p } from "./exportContext-CdpsOzE8.js";
2
+ import { a as e, c as t, i as n, n as r, o as i, r as a, s as o } from "./exportContext-CJaIv8R-.js";
3
+ import { a as s, c, i as l, o as u, r as d, s as f, u as p } from "./fileActions-KSaVGnaE.js";
3
4
  import m from "exceljs";
4
5
  // src/components/DataTable/export/exportEngine.ts
5
6
  var h = (e) => JSON.stringify(e).replace(/</g, "\\u003c");
@@ -41,38 +42,41 @@ function v(e, t, n, r, i) {
41
42
  }
42
43
  return o;
43
44
  }
44
- function y(e, t, n, r, i, o) {
45
- let s = (e) => {
45
+ function y(e, t, r, i, o, s) {
46
+ let c = (e) => {
46
47
  if (e == null) return "";
47
48
  let t = String(e);
48
49
  return t.includes(",") || t.includes("\"") || t.includes("\n") ? `"${t.replace(/"/g, "\"\"")}"` : t;
49
- }, c = [];
50
- if (i) {
51
- let e = d(i);
52
- for (let [t, n] of e) c.push(`${s(t)},${s(n)}`);
53
- o && c.push(s(o)), c.push("");
54
- } else o && (c.push(s(o)), c.push(""));
55
- if (c.push(e.map(s).join(","), ...t.map((t) => e.map((e) => s(t[e])).join(","))), n && c.push(e.map((e) => s(n[e])).join(",")), r && Object.keys(r.items).length > 0) {
56
- c.push(""), c.push(s(a(i).exportSummaryLabel));
57
- for (let [e, t] of Object.entries(r.items)) c.push(`${s(e)},${s(t)}`);
50
+ }, l = [];
51
+ if (o) {
52
+ let e = a(o);
53
+ for (let [t, n] of e) l.push(`${c(t)},${c(n)}`);
54
+ s && l.push(c(s)), l.push("");
55
+ } else s && (l.push(c(s)), l.push(""));
56
+ if (l.push(e.map(c).join(","), ...t.map((t) => e.map((e) => c(t[e])).join(","))), r && l.push(e.map((e) => c(r[e])).join(",")), i && Object.keys(i.items).length > 0) {
57
+ l.push(""), l.push(c(n(o).exportSummaryLabel));
58
+ for (let [e, t] of Object.entries(i.items)) l.push(`${c(e)},${c(t)}`);
58
59
  }
59
- for (let e of r?.tables ?? []) {
60
- c.push(""), c.push(s(e.title)), c.push(e.header.map(s).join(","));
61
- for (let t of e.rows) c.push(`${s(t.label)},${s(t.count)}`);
60
+ for (let e of i?.tables ?? []) {
61
+ l.push(""), l.push(c(e.title)), l.push(e.header.map(c).join(","));
62
+ for (let t of e.rows) l.push(`${c(t.label)},${c(t.count)}`);
62
63
  }
63
- return new Blob(["" + c.join("\n")], { type: "text/csv;charset=utf-8;" });
64
+ return new Blob(["" + l.join("\n")], { type: "text/csv;charset=utf-8;" });
64
65
  }
65
66
  function b(e) {
66
- if (e) switch (e.format) {
67
- case "currency": return "#,##0.00";
68
- case "number": return "#,##0";
69
- case "percentage": return "0.00%";
70
- case "date": return "DD/MM/YYYY";
71
- default: return;
67
+ if (e) {
68
+ if (e.numFmt) return e.numFmt;
69
+ switch (e.format) {
70
+ case "currency": return "#,##0.00";
71
+ case "number": return "#,##0";
72
+ case "percentage": return "0.00%";
73
+ case "date": return "DD/MM/YYYY";
74
+ default: return;
75
+ }
72
76
  }
73
77
  }
74
- async function x(t, n, r) {
75
- let { totals: i, summary: o, style: s, sheetName: l, columnMeta: u, cellStyles: d, metadata: f, subtitle: p } = r || {}, h = new m.Workbook(), g = h.addWorksheet(l || "Sheet1"), _ = 0;
78
+ async function x(t, i, a) {
79
+ let { totals: o, summary: s, style: c, sheetName: l, columnMeta: u, cellStyles: d, metadata: f, subtitle: p } = a || {}, h = new m.Workbook(), g = h.addWorksheet(l || "Sheet1"), _ = 0;
76
80
  if (f) {
77
81
  if (f.businessName) {
78
82
  let e = g.addRow([f.businessName]);
@@ -101,9 +105,9 @@ async function x(t, n, r) {
101
105
  color: { argb: "FF555555" }
102
106
  }, t.length > 1 && g.mergeCells(_ + 1, 1, _ + 1, t.length), _++;
103
107
  }
104
- let r = c(f);
105
- if (r) {
106
- let e = g.addRow([r]);
108
+ let i = r(f);
109
+ if (i) {
110
+ let e = g.addRow([i]);
107
111
  e.getCell(1).font = {
108
112
  size: 9,
109
113
  italic: !0
@@ -118,27 +122,27 @@ async function x(t, n, r) {
118
122
  color: { argb: "FF555555" }
119
123
  }, t.length > 1 && g.mergeCells(1, 1, 1, t.length), e++, g.addRow([]), e++, _ += e;
120
124
  }
121
- let v = _ + 1, y = s?.headerStyle?.fill || "#1a73e8", x = s?.headerStyle?.fontColor || "#FFFFFF", S = s?.headerStyle?.bold !== !1;
125
+ let v = _ + 1, y = c?.headerStyle?.fill || "#1a73e8", x = c?.headerStyle?.fontColor || "#FFFFFF", S = c?.headerStyle?.bold !== !1;
122
126
  if (g.columns = t.map((e, t) => {
123
- let r = u?.[t], i = s?.columnStyles?.[e]?.width || r?.width;
124
- if (!i) {
125
- let t = Math.max(e.length, ...n.slice(0, 50).map((t) => String(t[e] ?? "").length));
126
- i = Math.min(Math.max(t + 2, 10), 40);
127
+ let n = u?.[t], r = c?.columnStyles?.[e]?.width || n?.width;
128
+ if (!r) {
129
+ let t = Math.max(e.length, ...i.slice(0, 50).map((t) => String(t[e] ?? "").length));
130
+ r = Math.min(Math.max(t + 2, 10), 40);
127
131
  }
128
132
  return _ > 0 ? {
129
133
  key: e,
130
- width: i
134
+ width: r
131
135
  } : {
132
136
  header: e,
133
137
  key: e,
134
- width: i
138
+ width: r
135
139
  };
136
140
  }), _ > 0 && g.addRow(t), g.getRow(v).eachCell((e, n) => {
137
- let r = u?.[n - 1], i = s?.columnStyles?.[t[n - 1]]?.align;
141
+ let r = u?.[n - 1], i = c?.columnStyles?.[t[n - 1]]?.align;
138
142
  e.font = {
139
143
  bold: S,
140
144
  color: { argb: x.replace("#", "FF") },
141
- size: s?.headerStyle?.fontSize || 11
145
+ size: c?.headerStyle?.fontSize || 11
142
146
  }, e.fill = {
143
147
  type: "pattern",
144
148
  pattern: "solid",
@@ -152,20 +156,20 @@ async function x(t, n, r) {
152
156
  } };
153
157
  }), g.views = [{
154
158
  state: "frozen",
155
- ySplit: s?.freezeRows ?? v,
156
- xSplit: s?.freezeCols || 0
157
- }], n.forEach((e, n) => {
159
+ ySplit: c?.freezeRows ?? v,
160
+ xSplit: c?.freezeCols || 0
161
+ }], i.forEach((e, n) => {
158
162
  let r = g.addRow(t.map((t) => e[t] ?? "")), i = n % 2 == 1;
159
163
  r.eachCell((e, r) => {
160
- let a = u?.[r - 1], o = t[r - 1], c = s?.columnStyles?.[o], l = d?.[n]?.[o], f = l?.align || c?.align || a?.align;
164
+ let a = u?.[r - 1], o = t[r - 1], s = c?.columnStyles?.[o], l = d?.[n]?.[o], f = l?.align || s?.align || a?.align;
161
165
  f && (e.alignment = {
162
166
  horizontal: f,
163
167
  vertical: "middle"
164
168
  });
165
- let p = c?.numFmt || b(a);
166
- p && typeof e.value == "number" && (e.numFmt = p);
169
+ let p = s?.numFmt || b(a);
170
+ p && (typeof e.value == "number" || e.value instanceof Date) && (e.numFmt = p);
167
171
  let m = {};
168
- (c?.bold || l?.fontWeight === "bold") && (m.bold = !0), l?.color && (m.color = { argb: "FF" + l.color.replace("#", "") }), l?.fontSize && (m.size = l.fontSize), Object.keys(m).length > 0 && (e.font = m), l?.backgroundColor ? e.fill = {
172
+ (s?.bold || l?.fontWeight === "bold") && (m.bold = !0), l?.color && (m.color = { argb: "FF" + l.color.replace("#", "") }), l?.fontSize && (m.size = l.fontSize), Object.keys(m).length > 0 && (e.font = m), l?.backgroundColor ? e.fill = {
169
173
  type: "pattern",
170
174
  pattern: "solid",
171
175
  fgColor: { argb: "FF" + l.backgroundColor.replace("#", "") }
@@ -175,10 +179,10 @@ async function x(t, n, r) {
175
179
  fgColor: { argb: "FFF8F9FA" }
176
180
  });
177
181
  });
178
- }), i) {
179
- let e = t.map((e) => i[e] ?? ""), n = g.addRow(e), r = s?.totalsStyle?.fill || "#e8e8e8", a = s?.totalsStyle?.bold !== !1, o = s?.totalsStyle?.border || "thin";
182
+ }), o) {
183
+ let e = t.map((e) => o[e] ?? ""), n = g.addRow(e), r = c?.totalsStyle?.fill || "#e8e8e8", i = c?.totalsStyle?.bold !== !1, a = c?.totalsStyle?.border || "thin";
180
184
  n.eachCell((e, n) => {
181
- let c = u?.[n - 1], l = t[n - 1], d = s?.columnStyles?.[l], f = c?.cellStyle?.(i[l], {}), p = f?.align || d?.align || c?.align, m = { bold: a };
185
+ let s = u?.[n - 1], l = t[n - 1], d = c?.columnStyles?.[l], f = s?.cellStyle?.(o[l], {}), p = f?.align || d?.align || s?.align, m = { bold: i };
182
186
  f?.color && (m.color = { argb: "FF" + f.color.replace("#", "") }), f?.fontSize && (m.size = f.fontSize), e.font = m, e.fill = f?.backgroundColor ? {
183
187
  type: "pattern",
184
188
  pattern: "solid",
@@ -188,17 +192,17 @@ async function x(t, n, r) {
188
192
  pattern: "solid",
189
193
  fgColor: { argb: r.replace("#", "FF") }
190
194
  }, e.border = { top: {
191
- style: o,
195
+ style: a,
192
196
  color: { argb: "FF333333" }
193
197
  } }, p && (e.alignment = {
194
198
  horizontal: p,
195
199
  vertical: "middle"
196
200
  });
197
- let h = d?.numFmt || b(c);
198
- h && typeof e.value == "number" && (e.numFmt = h);
201
+ let h = d?.numFmt || b(s);
202
+ h && (typeof e.value == "number" || e.value instanceof Date) && (e.numFmt = h);
199
203
  });
200
204
  }
201
- if (s?.autoFilter !== !1 && n.length > 0 && (g.autoFilter = {
205
+ if (c?.autoFilter !== !1 && i.length > 0 && (g.autoFilter = {
202
206
  from: {
203
207
  row: v,
204
208
  column: 1
@@ -207,19 +211,19 @@ async function x(t, n, r) {
207
211
  row: v,
208
212
  column: t.length
209
213
  }
210
- }), o && Object.keys(o.items).length > 0) {
214
+ }), s && Object.keys(s.items).length > 0) {
211
215
  g.addRow([]);
212
- let e = g.addRow([a(f).exportSummaryLabel]);
216
+ let e = g.addRow([n(f).exportSummaryLabel]);
213
217
  e.getCell(1).font = {
214
218
  bold: !0,
215
219
  size: 12
216
220
  };
217
- for (let [e, t] of Object.entries(o.items)) {
221
+ for (let [e, t] of Object.entries(s.items)) {
218
222
  let n = g.addRow([e, t]);
219
223
  n.getCell(1).font = { bold: !0 }, typeof t == "number" && (n.getCell(2).numFmt = "#,##0.00");
220
224
  }
221
225
  }
222
- for (let e of o?.tables ?? []) {
226
+ for (let e of s?.tables ?? []) {
223
227
  g.addRow([]), g.addRow([e.title]).getCell(1).font = {
224
228
  bold: !0,
225
229
  size: 12
@@ -265,8 +269,8 @@ function S(t, n, r, i) {
265
269
  } : t;
266
270
  return a && i && (o.summary = a), new Blob([JSON.stringify(o, null, 2)], { type: "application/json" });
267
271
  }
268
- function C(t, n, r) {
269
- let { title: i, subtitle: o, totals: s, summary: l, customStyles: u, columnMeta: d, cellStyles: f, metadata: p, branding: m } = r || {}, g = a(p), _ = m ? `<footer class="export-footer">
272
+ function C(t, i, a) {
273
+ let { title: o, subtitle: s, totals: c, summary: l, customStyles: u, columnMeta: d, cellStyles: f, metadata: p, branding: m } = a || {}, g = n(p), _ = m ? `<footer class="export-footer">
270
274
  ${D(g.exportGeneratedFrom)} <strong>${D(m.name)}</strong>${m.url ? ` &mdash; <a href="${D(m.url)}" target="_blank" rel="noopener">${D(m.url.replace(/^https?:\/\//, ""))}</a>` : ""}
271
275
  </footer>` : "", v = (e) => e == null ? "" : String(e).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"), y = (e) => {
272
276
  let t = d?.[e];
@@ -278,10 +282,10 @@ ${D(g.exportGeneratedFrom)} <strong>${D(m.name)}</strong>${m.url ? ` &mdash; <a
278
282
  return a && (a.color && r.push(`color:${a.color}`), a.backgroundColor && r.push(`background:${a.backgroundColor}`), a.fontWeight && r.push(`font-weight:${a.fontWeight}`), a.fontSize && r.push(`font-size:${a.fontSize}px`), a.align && r.push(`text-align:${a.align}`)), r.length > 0 ? ` style="${r.join(";")}"` : i?.align ? ` style="text-align:${i.align}"` : "";
279
283
  };
280
284
  t.map((e, t) => `<th${y(t)}>${v(e)}</th>`).join("");
281
- let x = n.map((e, n) => `<tr>${t.map((t, r) => `<td${b(n, t, r)}>${v(e[t])}</td>`).join("")}</tr>`).join("\n"), S = s ? `<tr class="totals">${t.map((e, t) => {
282
- let n = d?.[t]?.cellStyle?.(s[e], {}), r = [], i = d?.[t];
283
- return i?.align && r.push(`text-align:${i.align}`), n?.color && r.push(`color:${n.color}`), n?.backgroundColor && r.push(`background:${n.backgroundColor}`), n?.fontWeight && r.push(`font-weight:${n.fontWeight}`), n?.fontSize && r.push(`font-size:${n.fontSize}px`), n?.align && r.push(`text-align:${n.align}`), `<td${r.length > 0 ? ` style="${r.join(";")}"` : ""}>${v(s[e])}</td>`;
284
- }).join("")}</tr>` : "", C = l && Object.keys(l.items).length > 0 ? `<h3>Summary</h3><dl>${Object.entries(l.items).map(([e, t]) => `<dt>${v(e)}</dt><dd>${v(t)}</dd>`).join("")}</dl>` : "", w = (l?.tables ?? []).map((e) => `<div class="summary-group"><h4>${v(e.title)}</h4><table class="summary-table"><thead><tr><th>${v(e.header[0])}</th><th class="num">${v(e.header[1])}</th></tr></thead><tbody>${e.rows.map((e) => `<tr><td>${v(e.label)}</td><td class="num">${v(e.count)}</td></tr>`).join("")}</tbody></table></div>`).join(""), T = C || w ? `<div class="summary">${C}${w}</div>` : "", E = (/* @__PURE__ */ new Date()).toLocaleDateString(p?.locale || "en-IN", {
285
+ let x = i.map((e, n) => `<tr>${t.map((t, r) => `<td${b(n, t, r)}>${v(e[t])}</td>`).join("")}</tr>`).join("\n"), S = c ? `<tr class="totals">${t.map((e, t) => {
286
+ let n = d?.[t]?.cellStyle?.(c[e], {}), r = [], i = d?.[t];
287
+ return i?.align && r.push(`text-align:${i.align}`), n?.color && r.push(`color:${n.color}`), n?.backgroundColor && r.push(`background:${n.backgroundColor}`), n?.fontWeight && r.push(`font-weight:${n.fontWeight}`), n?.fontSize && r.push(`font-size:${n.fontSize}px`), n?.align && r.push(`text-align:${n.align}`), `<td${r.length > 0 ? ` style="${r.join(";")}"` : ""}>${v(c[e])}</td>`;
288
+ }).join("")}</tr>` : "", C = l && Object.keys(l.items).length > 0 ? `<h3>Summary</h3><dl>${Object.entries(l.items).map(([e, t]) => `<dt>${v(e)}</dt><dd>${v(t)}</dd>`).join("")}</dl>` : "", w = (l?.tables ?? []).map((e) => `<div class="summary-group"><h4>${v(e.title)}</h4><table class="summary-table"><thead><tr><th>${v(e.header[0])}</th><th class="num">${v(e.header[1])}</th></tr></thead><tbody>${e.rows.map((e) => `<tr><td>${v(e.label)}</td><td class="num">${v(e.count)}</td></tr>`).join("")}</tbody></table></div>`).join(""), T = C || w ? `<div class="summary">${C}${w}</div>` : "", E = (/* @__PURE__ */ new Date()).toLocaleDateString(p?.locale || void 0, {
285
289
  day: "2-digit",
286
290
  month: "2-digit",
287
291
  year: "numeric"
@@ -290,7 +294,7 @@ ${D(g.exportGeneratedFrom)} <strong>${D(m.name)}</strong>${m.url ? ` &mdash; <a
290
294
  <head>
291
295
  <meta charset="UTF-8">
292
296
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
293
- <title>${v(i || g.export)}</title>
297
+ <title>${v(o || g.export)}</title>
294
298
  <style>
295
299
  :root{--bg:#ffffff;--bg-alt:#f8f9fa;--bg-hover:#f0f4ff;--text:#1a1a1a;--text-secondary:#666;--text-muted:#888;--border:#e8e8e8;--border-strong:#333;--th-bg:#1a73e8;--th-bg-hover:#1557b0;--th-color:#fff;--input-border:#d0d0d0;--input-focus:#1a73e8;--meta-bg:#f8f9fa;--meta-border:#e8e8e8;--summary-bg:#f8f9fa;--totals-bg:#f5f5f5;--btn-bg:#1a73e8;--btn-color:#fff;--btn-hover:#1557b0;--btn-secondary-bg:#f0f0f0;--btn-secondary-color:#333;--btn-secondary-hover:#e0e0e0;--footer-bg:#f8f9fa;--footer-border:#e8e8e8}
296
300
  [data-theme="dark"]{--bg:#1a1a2e;--bg-alt:#16213e;--bg-hover:#1a2745;--text:#e0e0e0;--text-secondary:#aaa;--text-muted:#888;--border:#2a2a4a;--border-strong:#555;--th-bg:#0f3460;--th-bg-hover:#1a4a7a;--th-color:#e0e0e0;--input-border:#3a3a5a;--input-focus:#4a8fe8;--meta-bg:#16213e;--meta-border:#2a2a4a;--summary-bg:#16213e;--totals-bg:#1a2745;--btn-bg:#0f3460;--btn-color:#e0e0e0;--btn-hover:#1a4a7a;--btn-secondary-bg:#2a2a4a;--btn-secondary-color:#ccc;--btn-secondary-hover:#3a3a5a;--footer-bg:#16213e;--footer-border:#2a2a4a}
@@ -359,15 +363,15 @@ ${p ? (() => {
359
363
  let t = ["<div class=\"export-meta\">"];
360
364
  p.businessName && t.push(`<h2>${v(p.businessName)}</h2>`);
361
365
  let n = [];
362
- p.businessAddress && n.push(`<span>${v(p.businessAddress)}</span>`), p.businessPhone && n.push(`<span>${v(p.businessPhone)}</span>`), p.taxNumber && n.push(`<span>${v(e(p))}: ${v(p.taxNumber)}</span>`), n.length > 0 && t.push(`<div class="meta-details">${n.join("")}</div>`), i && t.push(`<h3 style="margin:8px 0 4px;font-size:15px">${v(i)}</h3>`), o && t.push(`<div style="font-size:12px;color:var(--text-secondary);margin-bottom:4px">${v(o)}</div>`);
363
- let r = c(p);
364
- return r && t.push(`<div class="meta-filters">${v(r)}</div>`), t.push("</div>"), t.join("\n");
366
+ p.businessAddress && n.push(`<span>${v(p.businessAddress)}</span>`), p.businessPhone && n.push(`<span>${v(p.businessPhone)}</span>`), p.taxNumber && n.push(`<span>${v(e(p))}: ${v(p.taxNumber)}</span>`), n.length > 0 && t.push(`<div class="meta-details">${n.join("")}</div>`), o && t.push(`<h3 style="margin:8px 0 4px;font-size:15px">${v(o)}</h3>`), s && t.push(`<div style="font-size:12px;color:var(--text-secondary);margin-bottom:4px">${v(s)}</div>`);
367
+ let i = r(p);
368
+ return i && t.push(`<div class="meta-filters">${v(i)}</div>`), t.push("</div>"), t.join("\n");
365
369
  })() : ""}
366
- ${!p && i ? `<h1>${v(i)}</h1>` : ""}
367
- ${!p && o ? `<p class="subtitle">${v(o)}</p>` : ""}
370
+ ${!p && o ? `<h1>${v(o)}</h1>` : ""}
371
+ ${!p && s ? `<p class="subtitle">${v(s)}</p>` : ""}
368
372
  <div class="toolbar">
369
373
  <input type="text" id="globalSearch" placeholder="${v(g.exportHtmlSearch)}" aria-label="${v(g.exportHtmlSearch)}" autocomplete="off">
370
- <span class="count" id="rowCount">${v(g.rowsInfo(String(n.length)))}</span>
374
+ <span class="count" id="rowCount">${v(g.rowsInfo(String(i.length)))}</span>
371
375
  <div class="toolbar-actions">
372
376
  <button class="btn btn-primary" id="btnDownload" title="${v(g.exportDownloadAs("HTML"))}"><svg viewBox="0 0 24 24"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"/></svg>${v(g.exportDownload)}</button>
373
377
  <button class="btn btn-secondary" id="btnPrint" title="${v(g.exportPrint)}"><svg viewBox="0 0 24 24"><path d="M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z"/></svg>${v(g.exportPrint)}</button>
@@ -569,30 +573,30 @@ function T(e, t, n, r) {
569
573
  ]
570
574
  };
571
575
  }
572
- function E(t, n, r) {
573
- let { pdfConfig: i, totals: o, summary: s, subtitle: l, columnMeta: u, cellStyles: d, metadata: f, fontFor: p } = r || {}, m = a(f), h = (/* @__PURE__ */ new Date()).toLocaleDateString(f?.locale), _ = i?.title || m.export, v = i?.autoFit !== !1, y = i?.pageSize || "A4", b = i?.orientation || "portrait", x = i?.fontSize || 9, S = [
576
+ function E(t, i, a) {
577
+ let { pdfConfig: o, totals: s, summary: c, subtitle: l, columnMeta: u, cellStyles: d, metadata: f, fontFor: p } = a || {}, m = n(f), h = (/* @__PURE__ */ new Date()).toLocaleDateString(f?.locale), _ = o?.title || m.export, v = o?.autoFit !== !1, y = o?.pageSize || "A4", b = o?.orientation || "portrait", x = o?.fontSize || 9, S = [
574
578
  30,
575
579
  30,
576
580
  30,
577
581
  40
578
582
  ];
579
- if (v && !i?.orientation && !i?.pageSize) {
580
- let e = T(t, n, u, i);
581
- y = e.pageSize, b = e.orientation, i?.fontSize || (x = e.fontSize), S = e.margins;
583
+ if (v && !o?.orientation && !o?.pageSize) {
584
+ let e = T(t, i, u, o);
585
+ y = e.pageSize, b = e.orientation, o?.fontSize || (x = e.fontSize), S = e.margins;
582
586
  }
583
- i?.margin && (S = typeof i.margin == "number" ? [
584
- i.margin,
585
- i.margin,
586
- i.margin,
587
- i.margin
587
+ o?.margin && (S = typeof o.margin == "number" ? [
588
+ o.margin,
589
+ o.margin,
590
+ o.margin,
591
+ o.margin
588
592
  ] : [
589
- i.margin.left,
590
- i.margin.top,
591
- i.margin.right,
592
- i.margin.bottom
593
+ o.margin.left,
594
+ o.margin.top,
595
+ o.margin.right,
596
+ o.margin.bottom
593
597
  ]);
594
598
  let C = (e) => {
595
- let n = i?.columnStyles?.[t[e]];
599
+ let n = o?.columnStyles?.[t[e]];
596
600
  return n?.align ? n.align : u?.[e]?.align || "left";
597
601
  }, w = t.map((e, t) => ({
598
602
  ...g(e, { bold: !0 }, p),
@@ -600,7 +604,7 @@ function E(t, n, r) {
600
604
  color: "white",
601
605
  fillColor: "#1a73e8",
602
606
  alignment: C(t)
603
- })), E = n.map((e, n) => t.map((t, r) => {
607
+ })), E = i.map((e, n) => t.map((t, r) => {
604
608
  let i = d?.[n]?.[t];
605
609
  return {
606
610
  ...g(e[t] == null ? "" : String(e[t]), {}, p),
@@ -610,10 +614,10 @@ function E(t, n, r) {
610
614
  color: i?.color || void 0,
611
615
  bold: i?.fontWeight === "bold" || void 0
612
616
  };
613
- })), D = o ? t.map((e, t) => {
614
- let n = u?.[t]?.cellStyle?.(o[e], {});
617
+ })), D = s ? t.map((e, t) => {
618
+ let n = u?.[t]?.cellStyle?.(s[e], {});
615
619
  return {
616
- ...g(o[e] == null ? "" : String(o[e]), { bold: !0 }, p),
620
+ ...g(s[e] == null ? "" : String(s[e]), { bold: !0 }, p),
617
621
  fontSize: x,
618
622
  fillColor: n?.backgroundColor || "#e8e8e8",
619
623
  alignment: n?.align || C(t),
@@ -665,7 +669,7 @@ function E(t, n, r) {
665
669
  4
666
670
  ]
667
671
  });
668
- let n = [c(f), m.exportGenerated(h)].filter(Boolean).join(" | ");
672
+ let n = [r(f), m.exportGenerated(h)].filter(Boolean).join(" | ");
669
673
  M.push({
670
674
  ...g(n, {}, p),
671
675
  fontSize: 8,
@@ -697,7 +701,7 @@ function E(t, n, r) {
697
701
  4
698
702
  ]
699
703
  }), M.push({
700
- text: `${m.rowsInfo(String(n.length))} | ${m.exportGenerated(h)}`,
704
+ text: `${m.rowsInfo(String(i.length))} | ${m.exportGenerated(h)}`,
701
705
  fontSize: 9,
702
706
  color: "#888",
703
707
  margin: [
@@ -723,7 +727,7 @@ function E(t, n, r) {
723
727
  paddingTop: () => j,
724
728
  paddingBottom: () => j
725
729
  }
726
- }), s && Object.keys(s.items).length > 0) {
730
+ }), c && Object.keys(c.items).length > 0) {
727
731
  M.push({
728
732
  text: "",
729
733
  margin: [
@@ -742,7 +746,7 @@ function E(t, n, r) {
742
746
  6
743
747
  ]
744
748
  });
745
- let e = Object.entries(s.items).map(([e, t]) => [{
749
+ let e = Object.entries(c.items).map(([e, t]) => [{
746
750
  ...g(e, { bold: !0 }, p),
747
751
  fontSize: 9
748
752
  }, {
@@ -757,7 +761,7 @@ function E(t, n, r) {
757
761
  layout: "noBorders"
758
762
  });
759
763
  }
760
- for (let e of s?.tables ?? []) {
764
+ for (let e of c?.tables ?? []) {
761
765
  M.push({
762
766
  text: "",
763
767
  margin: [
@@ -818,73 +822,73 @@ function E(t, n, r) {
818
822
  }
819
823
  var D = (e) => String(e ?? "").replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
820
824
  function O(e, t, n) {
821
- let { title: r, subtitle: i, totals: a, summary: o, metadata: s } = n || {}, c = D, l = (t) => e.map((e) => ` <field name="${c(e)}">${c(t[e])}</field>`).join("\n"), u = ["<?xml version=\"1.0\" encoding=\"UTF-8\"?>", `<export${r ? ` title="${c(r)}"` : ""} generated="${(/* @__PURE__ */ new Date()).toISOString()}">`];
822
- if (i && u.push(` <subtitle>${c(i)}</subtitle>`), s) {
823
- u.push(" <metadata>");
824
- for (let [e, t] of d(s)) u.push(` <item name="${c(e)}">${c(t)}</item>`);
825
- u.push(" </metadata>");
825
+ let { title: r, subtitle: i, totals: o, summary: s, metadata: c } = n || {}, l = D, u = (t) => e.map((e) => ` <field name="${l(e)}">${l(t[e])}</field>`).join("\n"), d = ["<?xml version=\"1.0\" encoding=\"UTF-8\"?>", `<export${r ? ` title="${l(r)}"` : ""} generated="${(/* @__PURE__ */ new Date()).toISOString()}">`];
826
+ if (i && d.push(` <subtitle>${l(i)}</subtitle>`), c) {
827
+ d.push(" <metadata>");
828
+ for (let [e, t] of a(c)) d.push(` <item name="${l(e)}">${l(t)}</item>`);
829
+ d.push(" </metadata>");
826
830
  }
827
- u.push(` <rows count="${t.length}">`);
828
- for (let e of t) u.push(" <row>", l(e), " </row>");
829
- if (u.push(" </rows>"), a && u.push(" <totals>", l(a), " </totals>"), o && (Object.keys(o.items).length > 0 || o.tables?.length)) {
830
- u.push(" <summary>");
831
- for (let [e, t] of Object.entries(o.items)) u.push(` <item name="${c(e)}">${c(t)}</item>`);
832
- for (let e of o.tables || []) {
833
- u.push(` <table title="${c(e.title)}" label="${c(e.header[0])}" count="${c(e.header[1])}">`);
834
- for (let t of e.rows) u.push(` <row label="${c(t.label)}" count="${t.count}" />`);
835
- u.push(" </table>");
831
+ d.push(` <rows count="${t.length}">`);
832
+ for (let e of t) d.push(" <row>", u(e), " </row>");
833
+ if (d.push(" </rows>"), o && d.push(" <totals>", u(o), " </totals>"), s && (Object.keys(s.items).length > 0 || s.tables?.length)) {
834
+ d.push(" <summary>");
835
+ for (let [e, t] of Object.entries(s.items)) d.push(` <item name="${l(e)}">${l(t)}</item>`);
836
+ for (let e of s.tables || []) {
837
+ d.push(` <table title="${l(e.title)}" label="${l(e.header[0])}" count="${l(e.header[1])}">`);
838
+ for (let t of e.rows) d.push(` <row label="${l(t.label)}" count="${t.count}" />`);
839
+ d.push(" </table>");
836
840
  }
837
- u.push(" </summary>");
841
+ d.push(" </summary>");
838
842
  }
839
- return u.push("</export>"), new Blob([u.join("\n")], { type: "application/xml;charset=utf-8;" });
843
+ return d.push("</export>"), new Blob([d.join("\n")], { type: "application/xml;charset=utf-8;" });
840
844
  }
841
- async function k(e, t, n, r) {
842
- let i = r?.totals ?? v(n, t, r?.totalKeys, r?.columns, a(r?.metadata)), o = r?.summary, s = r?.metadata, c = r?.subtitle || r?.pdf?.subtitle, l = r?.columns ? _(r.columns, t) : void 0;
845
+ async function k(e, t, r, i) {
846
+ let a = i?.totals ?? v(r, t, i?.totalKeys, i?.columns, n(i?.metadata)), o = i?.summary, s = i?.metadata, c = i?.subtitle || i?.pdf?.subtitle, l = i?.columnMeta ?? (i?.columns ? _(i.columns, t) : void 0);
843
847
  switch (e) {
844
- case "csv": return y(t, n, i, o, s, c);
845
- case "xlsx": return await x(t, n, {
846
- totals: i,
848
+ case "csv": return y(t, r, a, o, s, c);
849
+ case "xlsx": return await x(t, r, {
850
+ totals: a,
847
851
  summary: o,
848
- style: r?.xlsx,
849
- sheetName: r?.xlsx?.sheetName,
852
+ style: i?.xlsx,
853
+ sheetName: i?.xlsx?.sheetName,
850
854
  columnMeta: l,
851
- cellStyles: r?.cellStyles,
855
+ cellStyles: i?.cellStyles,
852
856
  metadata: s,
853
857
  subtitle: c
854
858
  });
855
- case "json": return S(n, o, s, c);
856
- case "html": return C(t, n, {
857
- title: r?.html?.title || r?.title || r?.pdf?.title,
859
+ case "json": return S(r, o, s, c);
860
+ case "html": return C(t, r, {
861
+ title: i?.html?.title || i?.title || i?.pdf?.title,
858
862
  subtitle: c,
859
- totals: i,
863
+ totals: a,
860
864
  summary: o,
861
- customStyles: r?.html?.styles,
865
+ customStyles: i?.html?.styles,
862
866
  columnMeta: l,
863
- cellStyles: r?.cellStyles,
867
+ cellStyles: i?.cellStyles,
864
868
  metadata: s,
865
- branding: r?.branding
869
+ branding: i?.branding
866
870
  });
867
- case "xml": return O(t, n, {
868
- title: r?.title,
871
+ case "xml": return O(t, r, {
872
+ title: i?.title,
869
873
  subtitle: c,
870
- totals: i,
874
+ totals: a,
871
875
  summary: o,
872
876
  metadata: s
873
877
  });
874
- case "pdf": return C(t, n, {
875
- title: r?.pdf?.title || r?.title || a(r?.metadata).export,
878
+ case "pdf": return C(t, r, {
879
+ title: i?.pdf?.title || i?.title || n(i?.metadata).export,
876
880
  subtitle: c,
877
- totals: i,
881
+ totals: a,
878
882
  summary: o,
879
883
  customStyles: `
880
- @page{size:${r?.pdf?.pageSize || "A4"} ${r?.pdf?.orientation || "portrait"};margin:15mm}
881
- body{font-size:${r?.pdf?.fontSize || 10}pt}
884
+ @page{size:${i?.pdf?.pageSize || "A4"} ${i?.pdf?.orientation || "portrait"};margin:15mm}
885
+ body{font-size:${i?.pdf?.fontSize || 10}pt}
882
886
  `,
883
887
  columnMeta: l,
884
- cellStyles: r?.cellStyles,
888
+ cellStyles: i?.cellStyles,
885
889
  metadata: s
886
890
  });
887
- default: return y(t, n, i, o, s, c);
891
+ default: return y(t, r, a, o, s, c);
888
892
  }
889
893
  }
890
- export { l as autoFormatValue, f as buildBusinessMeta, _ as buildColumnMeta, k as buildExportBlob, o as downloadBlob, p as executeFileAction, c as formatContextLine, d as formatMetadataLines, y as generateCSV, C as generateHTML, S as generateJSON, E as generateTablePDFDocDef, x as generateXLSX, O as generateXML, n as getExtension, r as getFormatLabel, u as openPreview, t as prepareExportRows, s as rawDataToBlob, i as shareFile };
894
+ export { i as autoFormatValue, o as buildBusinessMeta, _ as buildColumnMeta, k as buildExportBlob, d as downloadBlob, l as executeFileAction, r as formatContextLine, a as formatMetadataLines, y as generateCSV, C as generateHTML, S as generateJSON, E as generateTablePDFDocDef, x as generateXLSX, O as generateXML, s as getExtension, u as getFormatLabel, f as openPreview, t as prepareExportRows, c as rawDataToBlob, p as shareFile };
@@ -0,0 +1,144 @@
1
+ "use client";
2
+ // src/file/fileActions.ts
3
+ var e = {
4
+ pdf: ".pdf",
5
+ xlsx: ".xlsx",
6
+ csv: ".csv",
7
+ html: ".html",
8
+ json: ".json",
9
+ xml: ".xml",
10
+ png: ".png"
11
+ }, t = {
12
+ pdf: "application/pdf",
13
+ xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
14
+ csv: "text/csv;charset=utf-8;",
15
+ html: "text/html;charset=utf-8;",
16
+ json: "application/json",
17
+ xml: "application/xml;charset=utf-8;",
18
+ png: "image/png"
19
+ };
20
+ async function n(e, n) {
21
+ let { runFileTask: r } = await import("./runFileTask-BClLQjmv.js").then((e) => e.n), i = await r({
22
+ kind: "pdf",
23
+ document: e,
24
+ fonts: n ? {
25
+ fonts: n.fonts,
26
+ vfs: n.vfs
27
+ } : void 0
28
+ }, { progress: () => {} });
29
+ return new Blob([i], { type: t.pdf });
30
+ }
31
+ async function r(e, r, i) {
32
+ if (r instanceof Blob) return r;
33
+ switch (e) {
34
+ case "pdf": return n(r, i);
35
+ case "json": return new Blob([JSON.stringify(r, null, 2)], { type: t.json });
36
+ case "csv":
37
+ case "html":
38
+ case "xml": return new Blob([typeof r == "string" ? r : String(r)], { type: t[e] });
39
+ case "xlsx": return new Blob([r], { type: t.xlsx });
40
+ default: return new Blob([typeof r == "string" ? r : JSON.stringify(r)]);
41
+ }
42
+ }
43
+ function i(e) {
44
+ return String(e ?? "").replace(/[\\/:*?"<>|\u0000-\u001F]/g, " ").replace(/\./g, " ").replace(/\s+/g, " ").replace(/[\s.]+$/, "").trim().slice(0, 120) || "file";
45
+ }
46
+ function a(e) {
47
+ let t = String(e ?? ""), n = t.lastIndexOf("."), r = n > 0 && /^\.[A-Za-z0-9]{1,5}$/.test(t.slice(n)) ? t.slice(n) : "";
48
+ return i(r ? t.slice(0, n) : t) + r;
49
+ }
50
+ function o(e, t) {
51
+ let n = URL.createObjectURL(e), r = document.createElement("a");
52
+ r.href = n, r.download = a(t), document.body.appendChild(r), r.click(), document.body.removeChild(r), URL.revokeObjectURL(n);
53
+ }
54
+ async function s(e, t, n) {
55
+ let r = new File([e], a(t), { type: e.type });
56
+ if (navigator.share && navigator.canShare?.({ files: [r] })) try {
57
+ return await navigator.share({
58
+ title: n || t,
59
+ files: [r]
60
+ }), !0;
61
+ } catch (e) {
62
+ if (e?.name === "AbortError") return !1;
63
+ }
64
+ if (e.type.includes("text") || e.type.includes("json") || e.type.includes("csv")) try {
65
+ let t = await e.text();
66
+ return await navigator.clipboard.writeText(t), !0;
67
+ } catch {}
68
+ return o(e, t), !0;
69
+ }
70
+ function c(e, t, n) {
71
+ if (t === "html" || t === "pdf" || t === "json" || t === "xml") {
72
+ let t = URL.createObjectURL(e), r = window.open(t, "_blank");
73
+ if (r) {
74
+ if (n) {
75
+ let e = () => {
76
+ try {
77
+ r.document.title = n;
78
+ } catch {}
79
+ };
80
+ r.addEventListener("load", e), setTimeout(e, 100);
81
+ }
82
+ setTimeout(() => URL.revokeObjectURL(t), 6e4);
83
+ }
84
+ return { type: "new_tab" };
85
+ }
86
+ return { type: "modal" };
87
+ }
88
+ async function l(e, t, n) {
89
+ if (t === "pdf") u(e);
90
+ else if (t === "html") {
91
+ let t = URL.createObjectURL(e), n = window.open(t, "_blank");
92
+ n && (n.addEventListener("load", () => n.print()), setTimeout(() => URL.revokeObjectURL(t), 6e4));
93
+ } else o(e, n);
94
+ }
95
+ function u(e) {
96
+ let t = URL.createObjectURL(e), n = document.createElement("iframe");
97
+ n.style.display = "none", n.src = t, document.body.appendChild(n), n.addEventListener("load", () => {
98
+ try {
99
+ n.contentWindow?.print();
100
+ } catch {
101
+ window.open(t, "_blank");
102
+ }
103
+ setTimeout(() => {
104
+ n.remove(), URL.revokeObjectURL(t);
105
+ }, 6e4);
106
+ });
107
+ }
108
+ async function d(e, t, n, i, a, u) {
109
+ let d = await r(n, e, u);
110
+ switch (i) {
111
+ case "download":
112
+ o(d, t);
113
+ break;
114
+ case "share":
115
+ await s(d, t, a);
116
+ break;
117
+ case "preview":
118
+ c(d, n, a || t);
119
+ break;
120
+ case "print":
121
+ await l(d, n, t);
122
+ break;
123
+ case "open": {
124
+ let e = URL.createObjectURL(d);
125
+ window.open(e, "_blank"), setTimeout(() => URL.revokeObjectURL(e), 6e4);
126
+ break;
127
+ }
128
+ }
129
+ }
130
+ function f(t) {
131
+ return e[t] || "";
132
+ }
133
+ function p(e) {
134
+ return {
135
+ csv: "CSV",
136
+ xlsx: "Excel",
137
+ json: "JSON",
138
+ pdf: "PDF",
139
+ html: "HTML",
140
+ xml: "XML",
141
+ png: "Image"
142
+ }[e] || e.toUpperCase();
143
+ }
144
+ export { f as a, r as c, d as i, i as l, n, p as o, o as r, c as s, t, s as u };