@tipolox/litgrid-web 1.0.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 (50) hide show
  1. package/dist/DataGrid.d.ts +2 -0
  2. package/dist/DataGrid.d.ts.map +1 -0
  3. package/dist/DataGrid.js +2 -0
  4. package/dist/DataGrid.js.map +1 -0
  5. package/dist/LICENSE +21 -0
  6. package/dist/clipboard/serializeSelectedCells.d.ts +12 -0
  7. package/dist/clipboard/serializeSelectedCells.d.ts.map +1 -0
  8. package/dist/clipboard/serializeSelectedCells.js +37 -0
  9. package/dist/clipboard/serializeSelectedCells.js.map +1 -0
  10. package/dist/clipboard/serializeSelectedRows.d.ts +12 -0
  11. package/dist/clipboard/serializeSelectedRows.d.ts.map +1 -0
  12. package/dist/clipboard/serializeSelectedRows.js +21 -0
  13. package/dist/clipboard/serializeSelectedRows.js.map +1 -0
  14. package/dist/columnState/columnState.d.ts +23 -0
  15. package/dist/columnState/columnState.d.ts.map +1 -0
  16. package/dist/columnState/columnState.js +70 -0
  17. package/dist/columnState/columnState.js.map +1 -0
  18. package/dist/components/DataGrid.d.ts +249 -0
  19. package/dist/components/DataGrid.d.ts.map +1 -0
  20. package/dist/components/DataGrid.js +2567 -0
  21. package/dist/components/DataGrid.js.map +1 -0
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +2 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/sizing/columnSizing.d.ts +4 -0
  27. package/dist/sizing/columnSizing.d.ts.map +1 -0
  28. package/dist/sizing/columnSizing.js +17 -0
  29. package/dist/sizing/columnSizing.js.map +1 -0
  30. package/dist/sizing/constants.d.ts +4 -0
  31. package/dist/sizing/constants.d.ts.map +1 -0
  32. package/dist/sizing/constants.js +4 -0
  33. package/dist/sizing/constants.js.map +1 -0
  34. package/dist/sizing/rowSizing.d.ts +2 -0
  35. package/dist/sizing/rowSizing.d.ts.map +1 -0
  36. package/dist/sizing/rowSizing.js +5 -0
  37. package/dist/sizing/rowSizing.js.map +1 -0
  38. package/dist/theme/darkTheme.d.ts +6 -0
  39. package/dist/theme/darkTheme.d.ts.map +1 -0
  40. package/dist/theme/darkTheme.js +34 -0
  41. package/dist/theme/darkTheme.js.map +1 -0
  42. package/dist/theme/lightTheme.d.ts +6 -0
  43. package/dist/theme/lightTheme.d.ts.map +1 -0
  44. package/dist/theme/lightTheme.js +35 -0
  45. package/dist/theme/lightTheme.js.map +1 -0
  46. package/dist/types.d.ts +85 -0
  47. package/dist/types.d.ts.map +1 -0
  48. package/dist/types.js +2 -0
  49. package/dist/types.js.map +1 -0
  50. package/package.json +50 -0
@@ -0,0 +1,2 @@
1
+ export * from './components/DataGrid.js';
2
+ //# sourceMappingURL=DataGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../src/DataGrid.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './components/DataGrid.js';
2
+ //# sourceMappingURL=DataGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataGrid.js","sourceRoot":"","sources":["../src/DataGrid.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA"}
package/dist/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Tipolox
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,12 @@
1
+ import type { GridSelection } from '@tipolox/litgrid-core';
2
+ import type { GridColumn } from '../types.js';
3
+ type SerializeSelectedCellsOptions = {
4
+ selection: GridSelection;
5
+ rows: unknown[];
6
+ columns: GridColumn[];
7
+ getCellValue: (column: GridColumn, row: unknown, rowIndex: number) => unknown;
8
+ formatValue: (value: unknown) => string;
9
+ };
10
+ export declare function serializeSelectedCells({ selection, rows, columns, getCellValue, formatValue }: SerializeSelectedCellsOptions): string | null;
11
+ export {};
12
+ //# sourceMappingURL=serializeSelectedCells.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializeSelectedCells.d.ts","sourceRoot":"","sources":["../../src/clipboard/serializeSelectedCells.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,KAAK,6BAA6B,GAAG;IACnC,SAAS,EAAE,aAAa,CAAA;IACxB,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,YAAY,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;IAC7E,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAA;CACxC,CAAA;AAMD,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,WAAW,EACZ,EAAE,6BAA6B,GAAG,MAAM,GAAG,IAAI,CAwC/C"}
@@ -0,0 +1,37 @@
1
+ function isCellSelection(selection) {
2
+ return selection.mode === 'cell' || selection.mode === 'multi-cell';
3
+ }
4
+ export function serializeSelectedCells({ selection, rows, columns, getCellValue, formatValue }) {
5
+ if (!isCellSelection(selection) || selection.cells.size === 0) {
6
+ return null;
7
+ }
8
+ const selectedRows = [];
9
+ const selectedColumns = [];
10
+ for (let rowIndex = 0; rowIndex < rows.length; rowIndex += 1) {
11
+ for (let columnIndex = 0; columnIndex < columns.length; columnIndex += 1) {
12
+ if (selection.cells.has(`${rowIndex}:${columns[columnIndex].key}`)) {
13
+ selectedRows.push(rowIndex);
14
+ selectedColumns.push(columnIndex);
15
+ }
16
+ }
17
+ }
18
+ if (selectedRows.length === 0 || selectedColumns.length === 0) {
19
+ return null;
20
+ }
21
+ const firstRowIndex = Math.min(...selectedRows);
22
+ const lastRowIndex = Math.max(...selectedRows);
23
+ const firstColumnIndex = Math.min(...selectedColumns);
24
+ const lastColumnIndex = Math.max(...selectedColumns);
25
+ return Array.from({ length: lastRowIndex - firstRowIndex + 1 }, (_, rowOffset) => {
26
+ const rowIndex = firstRowIndex + rowOffset;
27
+ const row = rows[rowIndex];
28
+ return Array.from({ length: lastColumnIndex - firstColumnIndex + 1 }, (_, columnOffset) => {
29
+ const column = columns[firstColumnIndex + columnOffset];
30
+ if (!selection.cells.has(`${rowIndex}:${column.key}`)) {
31
+ return '';
32
+ }
33
+ return formatValue(getCellValue(column, row, rowIndex));
34
+ }).join('\t');
35
+ }).join('\n');
36
+ }
37
+ //# sourceMappingURL=serializeSelectedCells.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializeSelectedCells.js","sourceRoot":"","sources":["../../src/clipboard/serializeSelectedCells.ts"],"names":[],"mappings":"AAWA,SAAS,eAAe,CAAC,SAAwB;IAC/C,OAAO,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EACrC,SAAS,EACT,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,WAAW,EACmB;IAC9B,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,YAAY,GAAa,EAAE,CAAA;IACjC,MAAM,eAAe,GAAa,EAAE,CAAA;IAEpC,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,EAAE,CAAC;QAC7D,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC,EAAE,CAAC;YACzE,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBACnE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC3B,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAA;IAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAA;IAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,CAAA;IACrD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,CAAA;IAEpD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,GAAG,aAAa,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE;QAC/E,MAAM,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAA;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE1B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,GAAG,gBAAgB,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE;YACxF,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,YAAY,CAAC,CAAA;YAEvD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBACtD,OAAO,EAAE,CAAA;YACX,CAAC;YAED,OAAO,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;QACzD,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACf,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { GridSelection } from '@tipolox/litgrid-core';
2
+ import type { GridColumn } from '../types.js';
3
+ type SerializeSelectedRowsOptions = {
4
+ selection: GridSelection;
5
+ rows: unknown[];
6
+ columns: GridColumn[];
7
+ getCellValue: (column: GridColumn, row: unknown, rowIndex: number) => unknown;
8
+ formatValue: (value: unknown) => string;
9
+ };
10
+ export declare function serializeSelectedRows({ selection, rows, columns, getCellValue, formatValue }: SerializeSelectedRowsOptions): string | null;
11
+ export {};
12
+ //# sourceMappingURL=serializeSelectedRows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializeSelectedRows.d.ts","sourceRoot":"","sources":["../../src/clipboard/serializeSelectedRows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,KAAK,4BAA4B,GAAG;IAClC,SAAS,EAAE,aAAa,CAAA;IACxB,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,YAAY,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;IAC7E,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAA;CACxC,CAAA;AAMD,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,WAAW,EACZ,EAAE,4BAA4B,GAAG,MAAM,GAAG,IAAI,CAoB9C"}
@@ -0,0 +1,21 @@
1
+ function isRowSelection(selection) {
2
+ return selection.mode === 'row' || selection.mode === 'multi-row';
3
+ }
4
+ export function serializeSelectedRows({ selection, rows, columns, getCellValue, formatValue }) {
5
+ if (!isRowSelection(selection) || selection.rowIndexes.size === 0) {
6
+ return null;
7
+ }
8
+ const selectedRowIndexes = [...selection.rowIndexes]
9
+ .filter((rowIndex) => Number.isInteger(rowIndex) && rowIndex >= 0 && rowIndex < rows.length)
10
+ .sort((left, right) => left - right);
11
+ if (selectedRowIndexes.length === 0) {
12
+ return null;
13
+ }
14
+ return selectedRowIndexes.map((rowIndex) => {
15
+ const row = rows[rowIndex];
16
+ return columns
17
+ .map((column) => formatValue(getCellValue(column, row, rowIndex)))
18
+ .join('\t');
19
+ }).join('\n');
20
+ }
21
+ //# sourceMappingURL=serializeSelectedRows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializeSelectedRows.js","sourceRoot":"","sources":["../../src/clipboard/serializeSelectedRows.ts"],"names":[],"mappings":"AAWA,SAAS,cAAc,CAAC,SAAwB;IAC9C,OAAO,SAAS,CAAC,IAAI,KAAK,KAAK,IAAI,SAAS,CAAC,IAAI,KAAK,WAAW,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EACpC,SAAS,EACT,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,WAAW,EACkB;IAC7B,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAClE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,kBAAkB,GAAG,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC;SACjD,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;SAC3F,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAA;IAEtC,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE1B,OAAO,OAAO;aACX,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;aACjE,IAAI,CAAC,IAAI,CAAC,CAAA;IACf,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { GridColumn } from '../types.js';
2
+ export type GridColumnStateColumn = {
3
+ key: string;
4
+ width?: number;
5
+ visible: boolean;
6
+ };
7
+ export type GridColumnState = {
8
+ version: 1;
9
+ columns: GridColumnStateColumn[];
10
+ };
11
+ export type ColumnStateChangeDetail = {
12
+ reason: 'resize' | 'reorder' | 'visibility' | 'restore' | 'reset' | 'set';
13
+ state: GridColumnState;
14
+ };
15
+ export type ResolvedColumnState = {
16
+ columns: GridColumn[];
17
+ widths: Map<string, number>;
18
+ hiddenKeys: Set<string>;
19
+ };
20
+ export declare function createColumnState(columns: GridColumn[], widths: Map<string, number>, hiddenKeys: Set<string>): GridColumnState;
21
+ export declare function resolveColumnState(state: unknown, sourceColumns: GridColumn[]): ResolvedColumnState | null;
22
+ export declare function parseColumnState(value: string | null): GridColumnState | null;
23
+ //# sourceMappingURL=columnState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columnState.d.ts","sourceRoot":"","sources":["../../src/columnState/columnState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,CAAC,CAAA;IACV,OAAO,EAAE,qBAAqB,EAAE,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAA;IACzE,KAAK,EAAE,eAAe,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CACxB,CAAA;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,UAAU,EAAE,EACrB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GACtB,eAAe,CAYjB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,UAAU,EAAE,GAC1B,mBAAmB,GAAG,IAAI,CA6B5B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,eAAe,GAAG,IAAI,CAS7E"}
@@ -0,0 +1,70 @@
1
+ import { normalizeColumnWidth } from '../sizing/columnSizing.js';
2
+ export function createColumnState(columns, widths, hiddenKeys) {
3
+ return {
4
+ version: 1,
5
+ columns: columns.map((column) => {
6
+ const width = widths.get(column.key);
7
+ return {
8
+ key: column.key,
9
+ ...(width === undefined ? {} : { width }),
10
+ visible: !hiddenKeys.has(column.key)
11
+ };
12
+ })
13
+ };
14
+ }
15
+ export function resolveColumnState(state, sourceColumns) {
16
+ if (!isGridColumnState(state))
17
+ return null;
18
+ const sourceByKey = new Map(sourceColumns.map((column) => [column.key, column]));
19
+ const consumedKeys = new Set();
20
+ const columns = [];
21
+ const widths = new Map();
22
+ const hiddenKeys = new Set();
23
+ for (const entry of state.columns) {
24
+ const column = sourceByKey.get(entry.key);
25
+ if (!column || consumedKeys.has(entry.key))
26
+ continue;
27
+ consumedKeys.add(entry.key);
28
+ columns.push(column);
29
+ if (!entry.visible)
30
+ hiddenKeys.add(entry.key);
31
+ if (typeof entry.width === 'number' && Number.isFinite(entry.width)) {
32
+ widths.set(entry.key, normalizeColumnWidth(entry.width));
33
+ }
34
+ }
35
+ for (const column of sourceColumns) {
36
+ if (consumedKeys.has(column.key))
37
+ continue;
38
+ columns.push(column);
39
+ if (column.hidden)
40
+ hiddenKeys.add(column.key);
41
+ }
42
+ return { columns, widths, hiddenKeys };
43
+ }
44
+ export function parseColumnState(value) {
45
+ if (!value)
46
+ return null;
47
+ try {
48
+ const state = JSON.parse(value);
49
+ return isGridColumnState(state) ? state : null;
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }
55
+ function isGridColumnState(value) {
56
+ if (!value || typeof value !== 'object')
57
+ return false;
58
+ const state = value;
59
+ if (state.version !== 1 || !Array.isArray(state.columns))
60
+ return false;
61
+ return state.columns.every((column) => {
62
+ if (!column || typeof column !== 'object')
63
+ return false;
64
+ const entry = column;
65
+ return typeof entry.key === 'string' &&
66
+ typeof entry.visible === 'boolean' &&
67
+ (entry.width === undefined || typeof entry.width === 'number');
68
+ });
69
+ }
70
+ //# sourceMappingURL=columnState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columnState.js","sourceRoot":"","sources":["../../src/columnState/columnState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,249 @@
1
+ import { LitElement } from 'lit';
2
+ import { type GridConfig, type GridFilter, type GridSelection, type SelectionIntent } from '@tipolox/litgrid-core';
3
+ import type { GridColumn, GridTheme } from '../types.js';
4
+ import { type GridColumnState } from '../columnState/columnState.js';
5
+ export declare class DataGrid extends LitElement {
6
+ private static nextInstanceId;
7
+ private readonly gridId;
8
+ private engine;
9
+ private fixedRowVirtualizer;
10
+ private variableRowVirtualizer;
11
+ private columnVirtualizer;
12
+ private rowHeight;
13
+ private height;
14
+ private overscan;
15
+ private columnOverscan;
16
+ private _bestFitSampleSize;
17
+ private horizontalScrollLeft;
18
+ private viewportWidth;
19
+ private scrollbarWidth;
20
+ private columnDefs;
21
+ private sourceColumnDefs;
22
+ private columnWidths;
23
+ private hiddenColumnKeys;
24
+ private _columnStateStorageKey;
25
+ private rowHeights;
26
+ private bestFitWidths;
27
+ private columnResizeState;
28
+ private rowResizeState;
29
+ private columnReorderState;
30
+ private columnDragPreview;
31
+ private previousBodyCursor;
32
+ private previousBodyUserSelect;
33
+ private activeHeaderMenu;
34
+ private columnChooserOpen;
35
+ private columnChooserPosition;
36
+ private quickSearchVisible;
37
+ private quickSearchDraft;
38
+ private quickSearchDebounceId;
39
+ private sourceRowCount;
40
+ private filterDrafts;
41
+ private measureContainer;
42
+ private viewportElement;
43
+ private scrollRAFId;
44
+ private pendingScrollTop;
45
+ private pendingScrollLeft;
46
+ private previousPendingScrollTop;
47
+ private headerRowElement;
48
+ private activeCell;
49
+ private shouldFocusActiveCell;
50
+ private headerMenuTrigger;
51
+ private shouldFocusHeaderMenu;
52
+ private shouldRestoreHeaderMenuFocus;
53
+ private screenReaderMessage;
54
+ private lastScreenReaderAnnouncement;
55
+ private maxScrollableHeight;
56
+ private lastTotalSize;
57
+ private lastDisplayTotal;
58
+ quickSearchDebounceThreshold: number;
59
+ quickSearchDebounceMs: number;
60
+ theme: GridTheme;
61
+ ariaLabel: string;
62
+ ariaDescription: string;
63
+ screenReaderAnnouncements: boolean;
64
+ static properties: {
65
+ theme: {
66
+ type: StringConstructor;
67
+ reflect: boolean;
68
+ };
69
+ ariaLabel: {
70
+ type: StringConstructor;
71
+ attribute: string;
72
+ reflect: boolean;
73
+ };
74
+ ariaDescription: {
75
+ type: StringConstructor;
76
+ attribute: string;
77
+ reflect: boolean;
78
+ };
79
+ screenReaderAnnouncements: {
80
+ type: BooleanConstructor;
81
+ attribute: string;
82
+ reflect: boolean;
83
+ };
84
+ };
85
+ constructor();
86
+ static styles: import("lit").CSSResult[];
87
+ firstUpdated(): void;
88
+ updated(): void;
89
+ disconnectedCallback(): void;
90
+ private updateVirtualizer;
91
+ private updateScrollbarWidth;
92
+ private getResolvedColumns;
93
+ private getVisibleColumns;
94
+ getColumnWidth(column: GridColumn): number;
95
+ private isRowHeaderEnabled;
96
+ private hasCheckboxSelection;
97
+ private isRowHeaderVisible;
98
+ private getRowHeaderWidth;
99
+ private textMeasureContext;
100
+ getRowHeight(rowIndex: number): number;
101
+ get bestFitSampleSize(): number;
102
+ set bestFitSampleSize(value: number);
103
+ private clearBestFitWidths;
104
+ private getBestFitWidth;
105
+ private setBestFitWidth;
106
+ private getRowSizes;
107
+ private hasCustomRowHeights;
108
+ setRowHeight(rowIndex: number, height: number): void;
109
+ resetRowHeight(rowIndex: number): void;
110
+ resetAllRowHeights(): void;
111
+ setColumnWidth(columnKey: string, width: number): void;
112
+ resetColumnWidth(columnKey: string): void;
113
+ resetAllColumnWidths(): void;
114
+ getColumnOrder(): string[];
115
+ private applyColumnOrder;
116
+ moveColumn(columnKey: string, targetIndex: number): void;
117
+ setColumnOrder(columnKeys: string[]): void;
118
+ resetColumnOrder(): void;
119
+ setColumnVisible(columnKey: string, visible: boolean): void;
120
+ isColumnVisible(columnKey: string): boolean;
121
+ getVisibleColumnKeys(): string[];
122
+ getColumnState(): GridColumnState;
123
+ setColumnState(state: GridColumnState): void;
124
+ resetColumnState(): void;
125
+ private getColumnStateStorage;
126
+ private restorePersistedColumnState;
127
+ private persistColumnState;
128
+ private removePersistedColumnState;
129
+ private commitColumnState;
130
+ private dispatchColumnStateChange;
131
+ resetColumnVisibility(): void;
132
+ private toggleHeaderMenu;
133
+ private closeHeaderMenu;
134
+ private toggleColumnChooser;
135
+ private closeColumnChooser;
136
+ private focusHeaderMenu;
137
+ private handleShellKeyDown;
138
+ private handleViewportFocus;
139
+ private announceScreenReader;
140
+ private getScreenReaderDescription;
141
+ private getColumnLabel;
142
+ private getActiveCellAnnouncement;
143
+ private announceActiveCell;
144
+ private announceRowSelection;
145
+ private announceCellSelection;
146
+ private announceVisibleRowCount;
147
+ private handleSortAscending;
148
+ private handleSortDescending;
149
+ private handleClearSort;
150
+ private handleBestFit;
151
+ private handleBestFitAllColumns;
152
+ private getTextMeasureContext;
153
+ private measureTextWidth;
154
+ private formatBestFitValue;
155
+ private computeColumnBestFit;
156
+ private getFilterDraft;
157
+ private updateFilterDraft;
158
+ private isValueFreeFilter;
159
+ private resetVerticalScroll;
160
+ private clearQuickSearchDebounce;
161
+ private applyQuickSearch;
162
+ setQuickSearch(query: string): void;
163
+ clearQuickSearch(): void;
164
+ getQuickSearch(): string;
165
+ private toggleQuickSearch;
166
+ private handleQuickSearchInput;
167
+ setFilter(filter: GridFilter): void;
168
+ clearFilter(columnKey?: string): void;
169
+ getFilters(): GridFilter[];
170
+ setPage(pageIndex: number): void;
171
+ setPageSize(pageSize: number): void;
172
+ getPagination(): import("@tipolox/litgrid-core").GridPaginationState;
173
+ getTotalRowCount(): number;
174
+ selectRow(rowIndex: number, intent?: SelectionIntent): void;
175
+ selectAllRows(): void;
176
+ clearSelection(): void;
177
+ getSelection(): GridSelection;
178
+ isRowSelected(rowIndex: number): boolean;
179
+ isCellSelected(rowIndex: number, columnKey: string): boolean;
180
+ private getSelectedCellsClipboardText;
181
+ copySelectedCells(): Promise<boolean>;
182
+ private getSelectedRowsClipboardText;
183
+ copySelectedRows(): Promise<boolean>;
184
+ private applyHeaderFilter;
185
+ private clearHeaderFilter;
186
+ private isColumnFiltered;
187
+ bestFitColumn(columnKey: string): number | null;
188
+ bestFitAllColumns(): {
189
+ key: string;
190
+ width: number | null;
191
+ }[];
192
+ private startBodyResize;
193
+ private stopBodyResize;
194
+ private startColumnReorder;
195
+ private handleColumnReorder;
196
+ private updateColumnDragPreview;
197
+ private removeColumnDragPreview;
198
+ private stopColumnReorder;
199
+ private getGridCellId;
200
+ private getHeaderRowId;
201
+ private getHeaderMenuId;
202
+ private getRowHeaderColumnHeaderId;
203
+ private getAriaColumnIndex;
204
+ private getHeaderSortDirection;
205
+ private getHeaderCellClass;
206
+ private startColumnResize;
207
+ private handleColumnResize;
208
+ private stopColumnResize;
209
+ private startRowResize;
210
+ private handleRowResize;
211
+ private stopRowResize;
212
+ private getCellValue;
213
+ private formatCellValue;
214
+ private getSelectionMode;
215
+ private isRowSelectionMode;
216
+ private isCellSelectionMode;
217
+ private getRowClass;
218
+ private getCellClass;
219
+ private setActiveCell;
220
+ private focusActiveCell;
221
+ private getRowIndexAtOffset;
222
+ private getPageNavigationRowIndex;
223
+ private getTabNavigationCell;
224
+ private scrollActiveCellIntoView;
225
+ private handleKeyDown;
226
+ private getRowSelectionIntent;
227
+ private handleRowClick;
228
+ private handleRowMouseDown;
229
+ private handleCellClick;
230
+ private renderCell;
231
+ private renderRowHeader;
232
+ set data(value: unknown[]);
233
+ private handleRowCheckboxChange;
234
+ private getDisplayedSelectedRowCount;
235
+ private areAllDisplayedRowsSelected;
236
+ private hasPartiallySelectedDisplayedRows;
237
+ private handleSelectAllRows;
238
+ set columns(value: GridColumn[]);
239
+ get columnStateStorageKey(): string | null;
240
+ set columnStateStorageKey(value: string | null);
241
+ set config(value: GridConfig);
242
+ set viewportHeight(value: number);
243
+ set overscanCount(value: number);
244
+ set columnOverscanCount(value: number);
245
+ set virtualRowHeight(value: number);
246
+ private handleScroll;
247
+ render(): import("lit").TemplateResult<1>;
248
+ }
249
+ //# sourceMappingURL=DataGrid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../../src/components/DataGrid.ts"],"names":[],"mappings":"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"}