@tablecraft/table 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auto/auto-columns.d.ts +9 -0
- package/dist/auto/auto-columns.d.ts.map +1 -0
- package/dist/auto/auto-columns.js +39 -0
- package/dist/auto/auto-columns.js.map +1 -0
- package/dist/auto/auto-filters.d.ts +22 -0
- package/dist/auto/auto-filters.d.ts.map +1 -0
- package/dist/auto/auto-filters.js +15 -0
- package/dist/auto/auto-filters.js.map +1 -0
- package/dist/auto/rest-adapter.d.ts +34 -0
- package/dist/auto/rest-adapter.d.ts.map +1 -0
- package/dist/auto/rest-adapter.js +31 -0
- package/dist/auto/rest-adapter.js.map +1 -0
- package/dist/auto/static-adapter.d.ts +21 -0
- package/dist/auto/static-adapter.d.ts.map +1 -0
- package/dist/auto/static-adapter.js +116 -0
- package/dist/auto/static-adapter.js.map +1 -0
- package/dist/auto/tablecraft-adapter.d.ts +26 -0
- package/dist/auto/tablecraft-adapter.d.ts.map +1 -0
- package/dist/auto/tablecraft-adapter.js +143 -0
- package/dist/auto/tablecraft-adapter.js.map +1 -0
- package/dist/auto/use-auto-columns.d.ts +13 -0
- package/dist/auto/use-auto-columns.d.ts.map +1 -0
- package/dist/auto/use-auto-columns.js +53 -0
- package/dist/auto/use-auto-columns.js.map +1 -0
- package/dist/column-header.d.ts +8 -0
- package/dist/column-header.d.ts.map +1 -0
- package/dist/column-header.js +33 -0
- package/dist/column-header.js.map +1 -0
- package/dist/components/button.d.ts +12 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +35 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar-date-picker.d.ts +21 -0
- package/dist/components/calendar-date-picker.d.ts.map +1 -0
- package/dist/components/calendar-date-picker.js +333 -0
- package/dist/components/calendar-date-picker.js.map +1 -0
- package/dist/components/calendar.d.ts +9 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +77 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/checkbox.d.ts +5 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +10 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/command.d.ts +79 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +26 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/popover.d.ts +11 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +27 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/select.d.ts +14 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +28 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/table-dropdown.d.ts +26 -0
- package/dist/components/table-dropdown.d.ts.map +1 -0
- package/dist/components/table-dropdown.js +52 -0
- package/dist/components/table-dropdown.js.map +1 -0
- package/dist/core/table-config.d.ts +12 -0
- package/dist/core/table-config.d.ts.map +1 -0
- package/dist/core/table-config.js +33 -0
- package/dist/core/table-config.js.map +1 -0
- package/dist/core/use-column-resize.d.ts +10 -0
- package/dist/core/use-column-resize.d.ts.map +1 -0
- package/dist/core/use-column-resize.js +83 -0
- package/dist/core/use-column-resize.js.map +1 -0
- package/dist/core/use-conditional-state.d.ts +14 -0
- package/dist/core/use-conditional-state.d.ts.map +1 -0
- package/dist/core/use-conditional-state.js +27 -0
- package/dist/core/use-conditional-state.js.map +1 -0
- package/dist/core/use-table-data.d.ts +64 -0
- package/dist/core/use-table-data.d.ts.map +1 -0
- package/dist/core/use-table-data.js +141 -0
- package/dist/core/use-table-data.js.map +1 -0
- package/dist/core/use-url-state.d.ts +14 -0
- package/dist/core/use-url-state.d.ts.map +1 -0
- package/dist/core/use-url-state.js +269 -0
- package/dist/core/use-url-state.js.map +1 -0
- package/dist/data-table.d.ts +3 -0
- package/dist/data-table.d.ts.map +1 -0
- package/dist/data-table.js +278 -0
- package/dist/data-table.js.map +1 -0
- package/dist/expand-icon.d.ts +9 -0
- package/dist/expand-icon.d.ts.map +1 -0
- package/dist/expand-icon.js +13 -0
- package/dist/expand-icon.js.map +1 -0
- package/dist/export.d.ts +13 -0
- package/dist/export.d.ts.map +1 -0
- package/dist/export.js +122 -0
- package/dist/export.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/pagination.d.ts +11 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +49 -0
- package/dist/pagination.js.map +1 -0
- package/dist/renderers/actions.d.ts +8 -0
- package/dist/renderers/actions.d.ts.map +1 -0
- package/dist/renderers/actions.js +10 -0
- package/dist/renderers/actions.js.map +1 -0
- package/dist/renderers/badge.d.ts +3 -0
- package/dist/renderers/badge.d.ts.map +1 -0
- package/dist/renderers/badge.js +18 -0
- package/dist/renderers/badge.js.map +1 -0
- package/dist/renderers/boolean.d.ts +3 -0
- package/dist/renderers/boolean.d.ts.map +1 -0
- package/dist/renderers/boolean.js +10 -0
- package/dist/renderers/boolean.js.map +1 -0
- package/dist/renderers/date.d.ts +3 -0
- package/dist/renderers/date.d.ts.map +1 -0
- package/dist/renderers/date.js +56 -0
- package/dist/renderers/date.js.map +1 -0
- package/dist/renderers/image.d.ts +3 -0
- package/dist/renderers/image.d.ts.map +1 -0
- package/dist/renderers/image.js +18 -0
- package/dist/renderers/image.js.map +1 -0
- package/dist/renderers/index.d.ts +23 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +43 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/link.d.ts +3 -0
- package/dist/renderers/link.d.ts.map +1 -0
- package/dist/renderers/link.js +9 -0
- package/dist/renderers/link.js.map +1 -0
- package/dist/renderers/number.d.ts +3 -0
- package/dist/renderers/number.d.ts.map +1 -0
- package/dist/renderers/number.js +29 -0
- package/dist/renderers/number.js.map +1 -0
- package/dist/renderers/progress.d.ts +3 -0
- package/dist/renderers/progress.d.ts.map +1 -0
- package/dist/renderers/progress.js +10 -0
- package/dist/renderers/progress.js.map +1 -0
- package/dist/renderers/tags.d.ts +3 -0
- package/dist/renderers/tags.d.ts.map +1 -0
- package/dist/renderers/tags.js +28 -0
- package/dist/renderers/tags.js.map +1 -0
- package/dist/renderers/text.d.ts +3 -0
- package/dist/renderers/text.d.ts.map +1 -0
- package/dist/renderers/text.js +8 -0
- package/dist/renderers/text.js.map +1 -0
- package/dist/resizer.d.ts +6 -0
- package/dist/resizer.d.ts.map +1 -0
- package/dist/resizer.js +10 -0
- package/dist/resizer.js.map +1 -0
- package/dist/row-actions.d.ts +10 -0
- package/dist/row-actions.d.ts.map +1 -0
- package/dist/row-actions.js +36 -0
- package/dist/row-actions.js.map +1 -0
- package/dist/toolbar.d.ts +35 -0
- package/dist/toolbar.d.ts.map +1 -0
- package/dist/toolbar.js +119 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/types.d.ts +230 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/cn.d.ts +3 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +6 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/column-sizing.d.ts +18 -0
- package/dist/utils/column-sizing.d.ts.map +1 -0
- package/dist/utils/column-sizing.js +78 -0
- package/dist/utils/column-sizing.js.map +1 -0
- package/dist/utils/date-format.d.ts +13 -0
- package/dist/utils/date-format.d.ts.map +1 -0
- package/dist/utils/date-format.js +30 -0
- package/dist/utils/date-format.js.map +1 -0
- package/dist/utils/deep-utils.d.ts +15 -0
- package/dist/utils/deep-utils.d.ts.map +1 -0
- package/dist/utils/deep-utils.js +111 -0
- package/dist/utils/deep-utils.js.map +1 -0
- package/dist/utils/export-utils.d.ts +25 -0
- package/dist/utils/export-utils.d.ts.map +1 -0
- package/dist/utils/export-utils.js +170 -0
- package/dist/utils/export-utils.js.map +1 -0
- package/dist/utils/history-sync.d.ts +11 -0
- package/dist/utils/history-sync.d.ts.map +1 -0
- package/dist/utils/history-sync.js +45 -0
- package/dist/utils/history-sync.js.map +1 -0
- package/dist/utils/keyboard-navigation.d.ts +11 -0
- package/dist/utils/keyboard-navigation.d.ts.map +1 -0
- package/dist/utils/keyboard-navigation.js +39 -0
- package/dist/utils/keyboard-navigation.js.map +1 -0
- package/dist/utils/search.d.ts +10 -0
- package/dist/utils/search.d.ts.map +1 -0
- package/dist/utils/search.js +33 -0
- package/dist/utils/search.js.map +1 -0
- package/dist/utils/size-variants.d.ts +15 -0
- package/dist/utils/size-variants.d.ts.map +1 -0
- package/dist/utils/size-variants.js +42 -0
- package/dist/utils/size-variants.js.map +1 -0
- package/dist/utils/url-events.d.ts +2 -0
- package/dist/utils/url-events.d.ts.map +1 -0
- package/dist/utils/url-events.js +4 -0
- package/dist/utils/url-events.js.map +1 -0
- package/dist/view-options.d.ts +10 -0
- package/dist/view-options.d.ts.map +1 -0
- package/dist/view-options.js +104 -0
- package/dist/view-options.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { ensureUrlStateHistoryPatched } from "./history-sync";
|
|
2
|
+
/**
|
|
3
|
+
* Optimized deep equality check for objects and arrays.
|
|
4
|
+
*/
|
|
5
|
+
export function isDeepEqual(a, b) {
|
|
6
|
+
const visited = new WeakMap();
|
|
7
|
+
return compare(a, b);
|
|
8
|
+
function compare(a, b) {
|
|
9
|
+
if (a === b)
|
|
10
|
+
return true;
|
|
11
|
+
if (a == null || b == null)
|
|
12
|
+
return a === b;
|
|
13
|
+
const typeA = typeof a;
|
|
14
|
+
const typeB = typeof b;
|
|
15
|
+
if (typeA !== typeB)
|
|
16
|
+
return false;
|
|
17
|
+
if (typeA !== "object")
|
|
18
|
+
return false;
|
|
19
|
+
if (a instanceof Date) {
|
|
20
|
+
return b instanceof Date && a.getTime() === b.getTime();
|
|
21
|
+
}
|
|
22
|
+
if (a instanceof RegExp) {
|
|
23
|
+
return b instanceof RegExp && a.toString() === b.toString();
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(a)) {
|
|
26
|
+
if (!Array.isArray(b) || a.length !== b.length)
|
|
27
|
+
return false;
|
|
28
|
+
for (let i = 0; i < a.length; i++) {
|
|
29
|
+
if (!compare(a[i], b[i]))
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
if (a instanceof Set) {
|
|
35
|
+
if (!(b instanceof Set) || a.size !== b.size)
|
|
36
|
+
return false;
|
|
37
|
+
return compare([...a], [...b]);
|
|
38
|
+
}
|
|
39
|
+
if (a instanceof Map) {
|
|
40
|
+
if (!(b instanceof Map) || a.size !== b.size)
|
|
41
|
+
return false;
|
|
42
|
+
for (const [key, val] of a.entries()) {
|
|
43
|
+
if (!b.has(key) || !compare(val, b.get(key)))
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
if (a.constructor === Object && b.constructor === Object) {
|
|
49
|
+
if (visited.has(a)) {
|
|
50
|
+
return visited.get(a) === b;
|
|
51
|
+
}
|
|
52
|
+
visited.set(a, b);
|
|
53
|
+
const keysA = Object.keys(a);
|
|
54
|
+
const keysB = Object.keys(b);
|
|
55
|
+
if (keysA.length !== keysB.length)
|
|
56
|
+
return false;
|
|
57
|
+
keysA.sort();
|
|
58
|
+
keysB.sort();
|
|
59
|
+
for (let i = 0; i < keysA.length; i++) {
|
|
60
|
+
if (keysA[i] !== keysB[i])
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
for (const key of keysA) {
|
|
64
|
+
if (!compare(a[key], b[key]))
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
if (a.constructor !== b.constructor)
|
|
70
|
+
return false;
|
|
71
|
+
const keysA = Object.keys(a);
|
|
72
|
+
const keysB = Object.keys(b);
|
|
73
|
+
if (keysA.length !== keysB.length)
|
|
74
|
+
return false;
|
|
75
|
+
for (const key of keysA) {
|
|
76
|
+
if (!Object.prototype.hasOwnProperty.call(b, key))
|
|
77
|
+
return false;
|
|
78
|
+
if (!compare(a[key], b[key]))
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Creates a debounced function that delays invoking func until after wait ms.
|
|
86
|
+
*/
|
|
87
|
+
export function debounce(func, wait) {
|
|
88
|
+
let timeout = null;
|
|
89
|
+
return (...args) => {
|
|
90
|
+
const later = () => {
|
|
91
|
+
timeout = null;
|
|
92
|
+
func(...args);
|
|
93
|
+
};
|
|
94
|
+
if (timeout)
|
|
95
|
+
clearTimeout(timeout);
|
|
96
|
+
timeout = setTimeout(later, wait);
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Reset URL parameters by removing all query parameters.
|
|
101
|
+
*/
|
|
102
|
+
export function resetUrlState(pathname) {
|
|
103
|
+
if (typeof window === "undefined")
|
|
104
|
+
return;
|
|
105
|
+
ensureUrlStateHistoryPatched();
|
|
106
|
+
const nextPathname = pathname ?? window.location.pathname;
|
|
107
|
+
const hash = window.location.hash;
|
|
108
|
+
const nextUrl = `${nextPathname}${hash}`;
|
|
109
|
+
window.history.replaceState(window.history.state, "", nextUrl);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=deep-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-utils.js","sourceRoot":"","sources":["../../src/utils/deep-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ExportableData, DataTransformFunction } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Export data to CSV file.
|
|
4
|
+
*/
|
|
5
|
+
export declare function exportToCSV<T extends ExportableData>(data: T[], filename: string, headers?: string[], columnMapping?: Record<string, string>, transformFunction?: DataTransformFunction<T>): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Export data to Excel file using ExcelJS (optional peer dependency).
|
|
8
|
+
* Falls back gracefully if exceljs is not installed.
|
|
9
|
+
*/
|
|
10
|
+
export declare function exportToExcel<T extends ExportableData>(data: T[], filename: string, columnMapping?: Record<string, string>, columnWidths?: Array<{
|
|
11
|
+
wch: number;
|
|
12
|
+
}>, headers?: string[], transformFunction?: DataTransformFunction<T>): Promise<boolean>;
|
|
13
|
+
/**
|
|
14
|
+
* Unified export function that handles loading states and error handling.
|
|
15
|
+
*/
|
|
16
|
+
export declare function exportData<T extends ExportableData>(type: "csv" | "excel", getData: () => Promise<T[]>, onLoadingStart?: () => void, onLoadingEnd?: () => void, options?: {
|
|
17
|
+
headers?: string[];
|
|
18
|
+
columnMapping?: Record<string, string>;
|
|
19
|
+
columnWidths?: Array<{
|
|
20
|
+
wch: number;
|
|
21
|
+
}>;
|
|
22
|
+
entityName?: string;
|
|
23
|
+
transformFunction?: DataTransformFunction<T>;
|
|
24
|
+
}): Promise<boolean>;
|
|
25
|
+
//# sourceMappingURL=export-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-utils.d.ts","sourceRoot":"","sources":["../../src/utils/export-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA6DtE;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,cAAc,EAClD,IAAI,EAAE,CAAC,EAAE,EACT,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,MAAM,EAA+B,EAC9C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC3C,OAAO,CA0BT;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,CAAC,SAAS,cAAc,EAC1D,IAAI,EAAE,CAAC,EAAE,EACT,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,YAAY,CAAC,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EACrC,OAAO,CAAC,EAAE,MAAM,EAAE,EAClB,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC3C,OAAO,CAAC,OAAO,CAAC,CAoElB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,CAAC,SAAS,cAAc,EACvD,IAAI,EAAE,KAAK,GAAG,OAAO,EACrB,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,EAC3B,cAAc,CAAC,EAAE,MAAM,IAAI,EAC3B,YAAY,CAAC,EAAE,MAAM,IAAI,EACzB,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;CAC9C,GACA,OAAO,CAAC,OAAO,CAAC,CAyClB"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert array of objects to CSV string.
|
|
3
|
+
*/
|
|
4
|
+
function convertToCSV(data, headers, columnMapping) {
|
|
5
|
+
if (data.length === 0) {
|
|
6
|
+
throw new Error("No data to export");
|
|
7
|
+
}
|
|
8
|
+
let csvContent = "";
|
|
9
|
+
if (columnMapping) {
|
|
10
|
+
const headerRow = headers.map((header) => {
|
|
11
|
+
const mappedHeader = columnMapping[header] || header;
|
|
12
|
+
return mappedHeader.includes(",") || mappedHeader.includes('"')
|
|
13
|
+
? `"${mappedHeader.replace(/"/g, '""')}"`
|
|
14
|
+
: mappedHeader;
|
|
15
|
+
});
|
|
16
|
+
csvContent = `${headerRow.join(",")}\n`;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
csvContent = `${headers.join(",")}\n`;
|
|
20
|
+
}
|
|
21
|
+
for (const item of data) {
|
|
22
|
+
const row = headers.map((header) => {
|
|
23
|
+
const value = item[header];
|
|
24
|
+
const cellValue = value === null || value === undefined ? "" : String(value);
|
|
25
|
+
const escapedValue = cellValue.includes(",") || cellValue.includes('"')
|
|
26
|
+
? `"${cellValue.replace(/"/g, '""')}"`
|
|
27
|
+
: cellValue;
|
|
28
|
+
return escapedValue;
|
|
29
|
+
});
|
|
30
|
+
csvContent += `${row.join(",")}\n`;
|
|
31
|
+
}
|
|
32
|
+
return csvContent;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Download blob as file.
|
|
36
|
+
*/
|
|
37
|
+
function downloadFile(blob, filename) {
|
|
38
|
+
const link = document.createElement("a");
|
|
39
|
+
const url = URL.createObjectURL(blob);
|
|
40
|
+
link.setAttribute("href", url);
|
|
41
|
+
link.setAttribute("download", filename);
|
|
42
|
+
link.style.visibility = "hidden";
|
|
43
|
+
document.body.appendChild(link);
|
|
44
|
+
link.click();
|
|
45
|
+
document.body.removeChild(link);
|
|
46
|
+
URL.revokeObjectURL(url);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Export data to CSV file.
|
|
50
|
+
*/
|
|
51
|
+
export function exportToCSV(data, filename, headers = Object.keys(data[0] || {}), columnMapping, transformFunction) {
|
|
52
|
+
if (data.length === 0) {
|
|
53
|
+
console.error("No data to export");
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const processedData = data.map((item) => {
|
|
58
|
+
const transformedItem = transformFunction ? transformFunction(item) : item;
|
|
59
|
+
const filteredItem = {};
|
|
60
|
+
for (const header of headers) {
|
|
61
|
+
if (header in transformedItem) {
|
|
62
|
+
filteredItem[header] = transformedItem[header];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return filteredItem;
|
|
66
|
+
});
|
|
67
|
+
const csvContent = convertToCSV(processedData, headers, columnMapping);
|
|
68
|
+
const blob = new Blob([csvContent], { type: "text/csv;charset=utf-8;" });
|
|
69
|
+
downloadFile(blob, `${filename}.csv`);
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
console.error("Error creating CSV:", error);
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Export data to Excel file using ExcelJS (optional peer dependency).
|
|
79
|
+
* Falls back gracefully if exceljs is not installed.
|
|
80
|
+
*/
|
|
81
|
+
export async function exportToExcel(data, filename, columnMapping, columnWidths, headers, transformFunction) {
|
|
82
|
+
if (data.length === 0) {
|
|
83
|
+
console.error("No data to export");
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
// Dynamic import — exceljs is an optional peer dependency
|
|
88
|
+
let ExcelJS;
|
|
89
|
+
try {
|
|
90
|
+
ExcelJS = await import("exceljs");
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
console.error("Excel export requires 'exceljs' package. Install it with: npm install exceljs");
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
const mapping = columnMapping ||
|
|
97
|
+
Object.keys(data[0] || {}).reduce((acc, key) => {
|
|
98
|
+
acc[key] = key.charAt(0).toUpperCase() + key.slice(1).replace(/_/g, " ");
|
|
99
|
+
return acc;
|
|
100
|
+
}, {});
|
|
101
|
+
const workbook = new ExcelJS.Workbook();
|
|
102
|
+
const worksheet = workbook.addWorksheet("Data");
|
|
103
|
+
const columnsToExport = headers || Object.keys(mapping);
|
|
104
|
+
worksheet.columns = columnsToExport.map((key, index) => ({
|
|
105
|
+
header: mapping[key] || key,
|
|
106
|
+
key: key,
|
|
107
|
+
width: columnWidths?.[index]?.wch || 15,
|
|
108
|
+
}));
|
|
109
|
+
data.forEach((item) => {
|
|
110
|
+
const transformedItem = transformFunction ? transformFunction(item) : item;
|
|
111
|
+
const row = {};
|
|
112
|
+
for (const key of columnsToExport) {
|
|
113
|
+
if (key in transformedItem) {
|
|
114
|
+
row[key] = transformedItem[key];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
worksheet.addRow(row);
|
|
118
|
+
});
|
|
119
|
+
// Style header row
|
|
120
|
+
worksheet.getRow(1).font = { bold: true };
|
|
121
|
+
worksheet.getRow(1).fill = {
|
|
122
|
+
type: "pattern",
|
|
123
|
+
pattern: "solid",
|
|
124
|
+
fgColor: { argb: "FFE0E0E0" },
|
|
125
|
+
};
|
|
126
|
+
const buffer = await workbook.xlsx.writeBuffer();
|
|
127
|
+
const blob = new Blob([buffer], {
|
|
128
|
+
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
129
|
+
});
|
|
130
|
+
downloadFile(blob, `${filename}.xlsx`);
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
console.error("Error creating Excel file:", error);
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Unified export function that handles loading states and error handling.
|
|
140
|
+
*/
|
|
141
|
+
export async function exportData(type, getData, onLoadingStart, onLoadingEnd, options) {
|
|
142
|
+
try {
|
|
143
|
+
if (onLoadingStart)
|
|
144
|
+
onLoadingStart();
|
|
145
|
+
const exportRows = await getData();
|
|
146
|
+
if (exportRows.length === 0) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
const entityName = options?.entityName || "items";
|
|
150
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
151
|
+
const filename = `${entityName}-export-${timestamp}`;
|
|
152
|
+
let success = false;
|
|
153
|
+
if (type === "csv") {
|
|
154
|
+
success = exportToCSV(exportRows, filename, options?.headers, options?.columnMapping, options?.transformFunction);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
success = await exportToExcel(exportRows, filename, options?.columnMapping, options?.columnWidths, options?.headers, options?.transformFunction);
|
|
158
|
+
}
|
|
159
|
+
return success;
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
console.error("Error exporting data:", error);
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
finally {
|
|
166
|
+
if (onLoadingEnd)
|
|
167
|
+
onLoadingEnd();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=export-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-utils.js","sourceRoot":"","sources":["../../src/utils/export-utils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,YAAY,CACnB,IAAS,EACT,OAAiB,EACjB,aAAsC;IAEtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACvC,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;YACrD,OAAO,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC7D,CAAC,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;gBACzC,CAAC,CAAC,YAAY,CAAC;QACnB,CAAC,CAAC,CAAC;QACH,UAAU,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,SAAS,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7E,MAAM,YAAY,GAChB,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAChD,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG;gBACtC,CAAC,CAAC,SAAS,CAAC;YAChB,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,UAAU,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACrC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAU,EAAE,QAAgB;IAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;IAEjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;IACb,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,IAAS,EACT,QAAgB,EAChB,UAAoB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAC9C,aAAsC,EACtC,iBAA4C;IAE5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACtC,MAAM,eAAe,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3E,MAAM,YAAY,GAAmB,EAAE,CAAC;YACxC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,MAAM,IAAI,eAAe,EAAE,CAAC;oBAC9B,YAAY,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAA2B,CAAC;gBAC3E,CAAC;YACH,CAAC;YACD,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;QACzE,YAAY,CAAC,IAAI,EAAE,GAAG,QAAQ,MAAM,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAS,EACT,QAAgB,EAChB,aAAsC,EACtC,YAAqC,EACrC,OAAkB,EAClB,iBAA4C;IAE5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,0DAA0D;QAC1D,IAAI,OAAiC,CAAC;QACtC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CACX,+EAA+E,CAChF,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GACX,aAAa;YACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAC/B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACX,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACzE,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAA4B,CAC7B,CAAC;QAEJ,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEhD,MAAM,eAAe,GAAG,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAExD,SAAS,CAAC,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACvD,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG;YAC3B,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE;SACxC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACpB,MAAM,eAAe,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3E,MAAM,GAAG,GAA4B,EAAE,CAAC;YACxC,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;gBAClC,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;oBAC3B,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YACD,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,mBAAmB;QACnB,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC1C,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG;YACzB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;SAC9B,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;YAC9B,IAAI,EAAE,mEAAmE;SAC1E,CAAC,CAAC;QACH,YAAY,CAAC,IAAI,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAqB,EACrB,OAA2B,EAC3B,cAA2B,EAC3B,YAAyB,EACzB,OAMC;IAED,IAAI,CAAC;QACH,IAAI,cAAc;YAAE,cAAc,EAAE,CAAC;QAErC,MAAM,UAAU,GAAG,MAAM,OAAO,EAAE,CAAC;QAEnC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,OAAO,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,GAAG,UAAU,WAAW,SAAS,EAAE,CAAC;QAErD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO,GAAG,WAAW,CACnB,UAAU,EACV,QAAQ,EACR,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,iBAAiB,CAC3B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,aAAa,CAC3B,UAAU,EACV,QAAQ,EACR,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,iBAAiB,CAC3B,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,IAAI,YAAY;YAAE,YAAY,EAAE,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patch history APIs to emit a shared event when the URL changes.
|
|
3
|
+
*
|
|
4
|
+
* Notes:
|
|
5
|
+
* - `popstate` does NOT fire for `history.pushState`/`replaceState`.
|
|
6
|
+
* - Framework routers commonly use these APIs.
|
|
7
|
+
* - We patch once globally and keep it installed for the app lifetime.
|
|
8
|
+
*/
|
|
9
|
+
export declare function ensureUrlStateHistoryPatched(): void;
|
|
10
|
+
export declare function isUrlStateHistoryPatched(): boolean;
|
|
11
|
+
//# sourceMappingURL=history-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-sync.d.ts","sourceRoot":"","sources":["../../src/utils/history-sync.ts"],"names":[],"mappings":"AAyBA;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAqBnD;AAED,wBAAgB,wBAAwB,IAAI,OAAO,CAElD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { TABLECRAFT_URL_STATE_EVENT } from "./url-events";
|
|
2
|
+
let patched = false;
|
|
3
|
+
function canUseDOM() {
|
|
4
|
+
return (typeof window !== "undefined" &&
|
|
5
|
+
typeof window.history !== "undefined" &&
|
|
6
|
+
typeof window.dispatchEvent !== "undefined");
|
|
7
|
+
}
|
|
8
|
+
function dispatchUrlStateEvent() {
|
|
9
|
+
if (!canUseDOM())
|
|
10
|
+
return;
|
|
11
|
+
const dispatch = () => window.dispatchEvent(new Event(TABLECRAFT_URL_STATE_EVENT));
|
|
12
|
+
if (typeof queueMicrotask === "function") {
|
|
13
|
+
queueMicrotask(dispatch);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
Promise.resolve().then(dispatch);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Patch history APIs to emit a shared event when the URL changes.
|
|
20
|
+
*
|
|
21
|
+
* Notes:
|
|
22
|
+
* - `popstate` does NOT fire for `history.pushState`/`replaceState`.
|
|
23
|
+
* - Framework routers commonly use these APIs.
|
|
24
|
+
* - We patch once globally and keep it installed for the app lifetime.
|
|
25
|
+
*/
|
|
26
|
+
export function ensureUrlStateHistoryPatched() {
|
|
27
|
+
if (patched || !canUseDOM())
|
|
28
|
+
return;
|
|
29
|
+
const originalPushState = window.history.pushState.bind(window.history);
|
|
30
|
+
const originalReplaceState = window.history.replaceState.bind(window.history);
|
|
31
|
+
window.history.pushState = ((...args) => {
|
|
32
|
+
originalPushState(...args);
|
|
33
|
+
dispatchUrlStateEvent();
|
|
34
|
+
});
|
|
35
|
+
window.history.replaceState = ((...args) => {
|
|
36
|
+
originalReplaceState(...args);
|
|
37
|
+
dispatchUrlStateEvent();
|
|
38
|
+
});
|
|
39
|
+
window.addEventListener("hashchange", dispatchUrlStateEvent);
|
|
40
|
+
patched = true;
|
|
41
|
+
}
|
|
42
|
+
export function isUrlStateHistoryPatched() {
|
|
43
|
+
return patched;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=history-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-sync.js","sourceRoot":"","sources":["../../src/utils/history-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,SAAS,SAAS;IAChB,OAAO,CACL,OAAO,MAAM,KAAK,WAAW;QAC7B,OAAO,MAAM,CAAC,OAAO,KAAK,WAAW;QACrC,OAAO,MAAM,CAAC,aAAa,KAAK,WAAW,CAC5C,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,CAAC,SAAS,EAAE;QAAE,OAAO;IAEzB,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEnF,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;QACzC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B;IAC1C,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE;QAAE,OAAO;IAEpC,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE9E,MAAM,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,IAAsC,EAAE,EAAE;QACxE,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,qBAAqB,EAAE,CAAC;IAC1B,CAAC,CAAyB,CAAC;IAE3B,MAAM,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAC7B,GAAG,IAAyC,EAC5C,EAAE;QACF,oBAAoB,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9B,qBAAqB,EAAE,CAAC;IAC1B,CAAC,CAA4B,CAAC;IAE9B,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;IAE7D,OAAO,GAAG,IAAI,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Table } from "@tanstack/react-table";
|
|
2
|
+
import type { KeyboardEvent } from "react";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a keyboard navigation handler for data tables.
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - Space to toggle selection
|
|
8
|
+
* - Enter to activate/view a row
|
|
9
|
+
*/
|
|
10
|
+
export declare function createKeyboardNavigationHandler<TData>(table: Table<TData>, onRowActivate?: (row: TData, rowIndex: number) => void): (e: KeyboardEvent) => void;
|
|
11
|
+
//# sourceMappingURL=keyboard-navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard-navigation.d.ts","sourceRoot":"","sources":["../../src/utils/keyboard-navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EACnD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EACnB,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,IAE9C,GAAG,aAAa,UAsCzB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a keyboard navigation handler for data tables.
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Space to toggle selection
|
|
6
|
+
* - Enter to activate/view a row
|
|
7
|
+
*/
|
|
8
|
+
export function createKeyboardNavigationHandler(table, onRowActivate) {
|
|
9
|
+
return (e) => {
|
|
10
|
+
if ((e.key === " " || e.key === "Enter") &&
|
|
11
|
+
!e.target.matches('input, button, [role="button"], [contenteditable="true"]')) {
|
|
12
|
+
e.preventDefault();
|
|
13
|
+
const focusedElement = document.activeElement;
|
|
14
|
+
if (focusedElement &&
|
|
15
|
+
(focusedElement.getAttribute("role") === "row" ||
|
|
16
|
+
focusedElement.getAttribute("role") === "gridcell")) {
|
|
17
|
+
const rowElement = focusedElement.getAttribute("role") === "row"
|
|
18
|
+
? focusedElement
|
|
19
|
+
: focusedElement.closest('[role="row"]');
|
|
20
|
+
if (rowElement) {
|
|
21
|
+
const rowId = rowElement.getAttribute("data-row-index") || rowElement.id;
|
|
22
|
+
if (rowId) {
|
|
23
|
+
const rowIndex = Number.parseInt(rowId.replace(/^row-/, ""), 10);
|
|
24
|
+
const row = table.getRowModel().rows[rowIndex];
|
|
25
|
+
if (row) {
|
|
26
|
+
if (e.key === " ") {
|
|
27
|
+
row.toggleSelected();
|
|
28
|
+
}
|
|
29
|
+
else if (e.key === "Enter" && onRowActivate) {
|
|
30
|
+
onRowActivate(row.original, rowIndex);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=keyboard-navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard-navigation.js","sourceRoot":"","sources":["../../src/utils/keyboard-navigation.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAC7C,KAAmB,EACnB,aAAsD;IAEtD,OAAO,CAAC,CAAgB,EAAE,EAAE;QAC1B,IACE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC;YACpC,CAAE,CAAC,CAAC,MAAsB,CAAC,OAAO,CAChC,0DAA0D,CAC3D,EACD,CAAC;YACD,CAAC,CAAC,cAAc,EAAE,CAAC;YAEnB,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC;YAC9C,IACE,cAAc;gBACd,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK;oBAC5C,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,EACrD,CAAC;gBACD,MAAM,UAAU,GACd,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK;oBAC3C,CAAC,CAAC,cAAc;oBAChB,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAE7C,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,KAAK,GACT,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC;oBAC7D,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;wBACjE,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC/C,IAAI,GAAG,EAAE,CAAC;4BACR,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gCAClB,GAAG,CAAC,cAAc,EAAE,CAAC;4BACvB,CAAC;iCAAM,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,aAAa,EAAE,CAAC;gCAC9C,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;4BACxC,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preprocess search terms before sending to API.
|
|
3
|
+
*
|
|
4
|
+
* - Trims whitespace
|
|
5
|
+
* - Removes excessive spaces
|
|
6
|
+
* - Sanitizes potentially harmful characters
|
|
7
|
+
* - Returns empty string for invalid inputs
|
|
8
|
+
*/
|
|
9
|
+
export declare function preprocessSearch(searchTerm: string): string;
|
|
10
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/utils/search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CA2B3D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preprocess search terms before sending to API.
|
|
3
|
+
*
|
|
4
|
+
* - Trims whitespace
|
|
5
|
+
* - Removes excessive spaces
|
|
6
|
+
* - Sanitizes potentially harmful characters
|
|
7
|
+
* - Returns empty string for invalid inputs
|
|
8
|
+
*/
|
|
9
|
+
export function preprocessSearch(searchTerm) {
|
|
10
|
+
if (!searchTerm)
|
|
11
|
+
return "";
|
|
12
|
+
// Trim whitespace
|
|
13
|
+
let processed = searchTerm.trim();
|
|
14
|
+
// Remove excessive whitespace within the search term
|
|
15
|
+
processed = processed.replace(/\s+/g, " ");
|
|
16
|
+
// Check for minimum length after processing
|
|
17
|
+
if (processed.length < 1)
|
|
18
|
+
return "";
|
|
19
|
+
// Sanitize XSS vectors
|
|
20
|
+
processed = processed.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "");
|
|
21
|
+
processed = processed.replace(/javascript:/gi, "");
|
|
22
|
+
processed = processed.replace(/on\w+\s*=/gi, "");
|
|
23
|
+
// HTML entity encoding
|
|
24
|
+
processed = processed
|
|
25
|
+
.replace(/&/g, "&")
|
|
26
|
+
.replace(/</g, "<")
|
|
27
|
+
.replace(/>/g, ">")
|
|
28
|
+
.replace(/"/g, """)
|
|
29
|
+
.replace(/'/g, "'")
|
|
30
|
+
.replace(/\//g, "/");
|
|
31
|
+
return processed;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/utils/search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,kBAAkB;IAClB,IAAI,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAElC,qDAAqD;IACrD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE3C,4CAA4C;IAC5C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,uBAAuB;IACvB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,qDAAqD,EAAE,EAAE,CAAC,CAAC;IACzF,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACnD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAEjD,uBAAuB;IACvB,SAAS,GAAG,SAAS;SAClB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE5B,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Size variant utility functions for consistent component sizing across the table package
|
|
3
|
+
*/
|
|
4
|
+
export type SizeVariant = 'sm' | 'default' | 'lg';
|
|
5
|
+
/**
|
|
6
|
+
* Get the appropriate height class for input elements based on size variant
|
|
7
|
+
*/
|
|
8
|
+
export declare const getInputSizeClass: (size: SizeVariant) => string;
|
|
9
|
+
/**
|
|
10
|
+
* Get the appropriate size classes for button elements
|
|
11
|
+
* @param size - The size variant to apply
|
|
12
|
+
* @param isIcon - Whether this is an icon-only button (affects width)
|
|
13
|
+
*/
|
|
14
|
+
export declare const getButtonSizeClass: (size: SizeVariant, isIcon?: boolean) => string;
|
|
15
|
+
//# sourceMappingURL=size-variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"size-variants.d.ts","sourceRoot":"","sources":["../../src/utils/size-variants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,WAAW,KAAG,MASrD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,WAAW,EAAE,gBAAc,KAAG,MAmBtE,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Size variant utility functions for consistent component sizing across the table package
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Get the appropriate height class for input elements based on size variant
|
|
6
|
+
*/
|
|
7
|
+
export const getInputSizeClass = (size) => {
|
|
8
|
+
switch (size) {
|
|
9
|
+
case 'sm':
|
|
10
|
+
return 'h-8';
|
|
11
|
+
case 'lg':
|
|
12
|
+
return 'h-11';
|
|
13
|
+
default:
|
|
14
|
+
return '';
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Get the appropriate size classes for button elements
|
|
19
|
+
* @param size - The size variant to apply
|
|
20
|
+
* @param isIcon - Whether this is an icon-only button (affects width)
|
|
21
|
+
*/
|
|
22
|
+
export const getButtonSizeClass = (size, isIcon = false) => {
|
|
23
|
+
if (isIcon) {
|
|
24
|
+
switch (size) {
|
|
25
|
+
case 'sm':
|
|
26
|
+
return 'h-8 w-8';
|
|
27
|
+
case 'lg':
|
|
28
|
+
return 'h-11 w-11';
|
|
29
|
+
default:
|
|
30
|
+
return '';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
switch (size) {
|
|
34
|
+
case 'sm':
|
|
35
|
+
return 'h-8 px-3';
|
|
36
|
+
case 'lg':
|
|
37
|
+
return 'h-11 px-5';
|
|
38
|
+
default:
|
|
39
|
+
return '';
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=size-variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"size-variants.js","sourceRoot":"","sources":["../../src/utils/size-variants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAiB,EAAU,EAAE;IAC7D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI;YACP,OAAO,KAAK,CAAC;QACf,KAAK,IAAI;YACP,OAAO,MAAM,CAAC;QAChB;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAiB,EAAE,MAAM,GAAG,KAAK,EAAU,EAAE;IAC9E,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,IAAI;gBACP,OAAO,SAAS,CAAC;YACnB,KAAK,IAAI;gBACP,OAAO,WAAW,CAAC;YACrB;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IACD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI;YACP,OAAO,UAAU,CAAC;QACpB,KAAK,IAAI;YACP,OAAO,WAAW,CAAC;QACrB;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-events.d.ts","sourceRoot":"","sources":["../../src/utils/url-events.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,+BAA+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url-events.js","sourceRoot":"","sources":["../../src/utils/url-events.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,uEAAuE;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Table } from "@tanstack/react-table";
|
|
2
|
+
interface DataTableViewOptionsProps<TData> {
|
|
3
|
+
table: Table<TData>;
|
|
4
|
+
columnMapping?: Record<string, string>;
|
|
5
|
+
size?: "sm" | "default" | "lg";
|
|
6
|
+
tableId?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function DataTableViewOptions<TData>({ table, columnMapping, size, tableId, }: DataTableViewOptionsProps<TData>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=view-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"view-options.d.ts","sourceRoot":"","sources":["../src/view-options.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAU,MAAM,uBAAuB,CAAC;AAqB3D,UAAU,yBAAyB,CAAC,KAAK;IACvC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,EAC1C,KAAK,EACL,aAAa,EACb,IAAgB,EAChB,OAAO,GACR,EAAE,yBAAyB,CAAC,KAAK,CAAC,2CA6LlC"}
|