@universal-ember/table 3.0.3 → 3.0.4

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 (34) hide show
  1. package/declarations/plugins/column-reordering/helpers.d.ts +9 -7
  2. package/declarations/plugins/column-reordering/helpers.d.ts.map +1 -1
  3. package/declarations/plugins/column-reordering/plugin.d.ts +2 -2
  4. package/declarations/plugins/column-reordering/plugin.d.ts.map +1 -1
  5. package/declarations/plugins/column-resizing/handle.d.ts +4 -4
  6. package/declarations/plugins/column-resizing/handle.d.ts.map +1 -1
  7. package/declarations/plugins/column-resizing/helpers.d.ts +3 -3
  8. package/declarations/plugins/column-resizing/helpers.d.ts.map +1 -1
  9. package/declarations/plugins/column-resizing/plugin.d.ts +1 -1
  10. package/declarations/plugins/column-resizing/plugin.d.ts.map +1 -1
  11. package/declarations/plugins/column-visibility/helpers.d.ts +4 -4
  12. package/declarations/plugins/column-visibility/helpers.d.ts.map +1 -1
  13. package/declarations/plugins/data-sorting/helpers.d.ts +8 -8
  14. package/declarations/plugins/data-sorting/helpers.d.ts.map +1 -1
  15. package/declarations/plugins/data-sorting/plugin.d.ts +3 -3
  16. package/declarations/plugins/data-sorting/plugin.d.ts.map +1 -1
  17. package/dist/plugins/column-reordering/helpers.js +11 -5
  18. package/dist/plugins/column-reordering/helpers.js.map +1 -1
  19. package/dist/plugins/column-reordering/plugin.js.map +1 -1
  20. package/dist/plugins/column-resizing/handle.js.map +1 -1
  21. package/dist/plugins/column-resizing/helpers.js.map +1 -1
  22. package/dist/plugins/column-resizing/plugin.js.map +1 -1
  23. package/dist/plugins/column-visibility/helpers.js.map +1 -1
  24. package/dist/plugins/data-sorting/helpers.js.map +1 -1
  25. package/dist/plugins/data-sorting/plugin.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/plugins/column-reordering/helpers.ts +18 -11
  28. package/src/plugins/column-reordering/plugin.ts +5 -2
  29. package/src/plugins/column-resizing/handle.ts +6 -4
  30. package/src/plugins/column-resizing/helpers.ts +3 -3
  31. package/src/plugins/column-resizing/plugin.ts +2 -2
  32. package/src/plugins/column-visibility/helpers.ts +4 -4
  33. package/src/plugins/data-sorting/helpers.ts +8 -8
  34. package/src/plugins/data-sorting/plugin.ts +3 -3
@@ -4,30 +4,32 @@ import type { Column, Table } from '../../index.ts';
4
4
  * Move the column one position to the left.
5
5
  * If the column is first, nothing will happen.
6
6
  */
7
- export declare const moveLeft: (column: Column) => void;
7
+ export declare const moveLeft: <DataType = unknown>(column: Column<DataType>) => void;
8
8
  /**
9
9
  * Move the column one position to the right.
10
10
  * If the column is last, nothing will happen.
11
11
  */
12
- export declare const moveRight: (column: Column) => void;
12
+ export declare const moveRight: <DataType = unknown>(column: Column<DataType>) => void;
13
13
  /**
14
14
  * Override all column positions at once.
15
15
  */
16
- export declare const setColumnOrder: (table: Table, order: ColumnOrder) => void;
16
+ export declare const setColumnOrder: <DataType = unknown>(table: Table<DataType>, order: ColumnOrder) => void;
17
17
  /**
18
18
  * Ask if the column cannot move to the left
19
19
  */
20
- export declare const cannotMoveLeft: (column: Column) => boolean;
20
+ export declare const cannotMoveLeft: <DataType = unknown>(column: Column<DataType>) => boolean;
21
21
  /**
22
22
  * Ask if the column cannot move to the right
23
23
  */
24
- export declare const cannotMoveRight: (column: Column) => boolean;
24
+ export declare const cannotMoveRight: <DataType = unknown>(column: Column<DataType>) => boolean;
25
25
  /**
26
26
  * Ask if the column can move to the left
27
+ * (If your plugin doesn't expose `canMoveLeft`, use `!cannotMoveLeft`.)
27
28
  */
28
- export declare const canMoveLeft: (column: Column) => boolean;
29
+ export declare const canMoveLeft: <DataType = unknown>(column: Column<DataType>) => boolean;
29
30
  /**
30
31
  * Ask if the column can move to the right
32
+ * (If your plugin doesn't expose `canMoveRight`, use `!cannotMoveRight`.)
31
33
  */
32
- export declare const canMoveRight: (column: Column) => boolean;
34
+ export declare const canMoveRight: <DataType = unknown>(column: Column<DataType>) => boolean;
33
35
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-reordering/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,SACc,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,SACc,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,EAAE,OAAO,WAAW,SAE9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,YACY,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,YACY,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,YACe,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,YACe,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-reordering/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,SAChB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,SAChB,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,GAAG,OAAO,EAC/C,OAAO,KAAK,CAAC,QAAQ,CAAC,EACtB,OAAO,WAAW,SACuC,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAClB,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAClB,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAGd,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAGd,CAAC"}
@@ -63,11 +63,11 @@ export declare class TableMeta {
63
63
  /**
64
64
  * Get the curret order/position of a column
65
65
  */
66
- getPosition(column: Column): number;
66
+ getPosition<DataType = unknown>(column: Column<DataType>): number;
67
67
  /**
68
68
  * Swap the column with the column at `newPosition`
69
69
  */
70
- setPosition(column: Column, newPosition: number): false | undefined;
70
+ setPosition<DataType = unknown>(column: Column<DataType>, newPosition: number): false | undefined;
71
71
  /**
72
72
  * Using a `ColumnOrder` instance, set the order of all columns
73
73
  */
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-reordering/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-reordering/plugin.ts"],"names":[],"mappings":"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"}
@@ -13,13 +13,13 @@ import type { Column } from '../../-private/column.ts';
13
13
  *
14
14
  *
15
15
  */
16
- declare class ResizeHandle extends Modifier<{
16
+ declare class ResizeHandle<DataType = unknown> extends Modifier<{
17
17
  Args: {
18
- Positional: [Column];
18
+ Positional: [Column<DataType>];
19
19
  };
20
20
  }> {
21
21
  dragHandle: HTMLElement;
22
- column: Column;
22
+ column: Column<DataType>;
23
23
  meta: ColumnMeta;
24
24
  pointerStartX: number;
25
25
  pointerStartY: number;
@@ -31,7 +31,7 @@ declare class ResizeHandle extends Modifier<{
31
31
  lastKey: number;
32
32
  token?: unknown;
33
33
  isSetup: boolean;
34
- modify(element: Element, [column]: [Column]): void;
34
+ modify(element: Element, [column]: [Column<DataType>]): void;
35
35
  setup: () => void;
36
36
  setPosition: (event: Event) => void;
37
37
  setStartPosition: (event: Event) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-resizing/handle.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAKtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIvD;;;;;;;;;;;GAWG;AAEH,cAAM,YAAa,SAAQ,QAAQ,CAAC;IAAE,IAAI,EAAE;QAAE,UAAU,EAAE,CAAC,MAAM,CAAC,CAAA;KAAE,CAAA;CAAE,CAAC;IAC7D,UAAU,EAAE,WAAW,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,UAAU,CAAC;IAGzB,aAAa,SAAK;IAClB,aAAa,SAAK;IAClB,QAAQ,SAAK;IACb,QAAQ,SAAK;IACL,SAAS,EAAE,MAAM,CAAC;IAG1B,WAAW,SAAK;IACR,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAGxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,OAAO,UAAS;IAChB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC;IAW3C,KAAK,aAqBH;IAEF,WAAW,GAAI,OAAO,KAAK,UAczB;IAEF,gBAAgB,GAAI,OAAO,KAAK,UAc9B;IAEF;;;;;;;;;;OAUG;IACH,WAAW,GAAI,WAAW,MAAM,IAAI,UAkBlC;IAEF,cAAc,aAYZ;IAEF,QAAQ,GAAI,OAAO,KAAK,UAItB;IAEF,gBAAgB,GAAI,OAAO,KAAK,UAmB9B;IAEF,UAAU,GAAI,OAAO,aAAa,UAoBhC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,eAAO,MAAM,YAAY,qBAAe,CAAC"}
1
+ {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-resizing/handle.ts"],"names":[],"mappings":"AAGA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAKtC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIvD;;;;;;;;;;;GAWG;AAEH,cAAM,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAE,SAAQ,QAAQ,CAAC;IACtD,IAAI,EAAE;QAAE,UAAU,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;KAAE,CAAC;CAC1C,CAAC;IACQ,UAAU,EAAE,WAAW,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzB,IAAI,EAAE,UAAU,CAAC;IAGzB,aAAa,SAAK;IAClB,aAAa,SAAK;IAClB,QAAQ,SAAK;IACb,QAAQ,SAAK;IACL,SAAS,EAAE,MAAM,CAAC;IAG1B,WAAW,SAAK;IACR,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAGxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,OAAO,UAAS;IAChB,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAWrD,KAAK,aAqBH;IAEF,WAAW,GAAI,OAAO,KAAK,UAczB;IAEF,gBAAgB,GAAI,OAAO,KAAK,UAc9B;IAEF;;;;;;;;;;OAUG;IACH,WAAW,GAAI,WAAW,MAAM,IAAI,UAkBlC;IAEF,cAAc,aAYZ;IAEF,QAAQ,GAAI,OAAO,KAAK,UAItB;IAEF,gBAAgB,GAAI,OAAO,KAAK,UAmB9B;IAEF,UAAU,GAAI,OAAO,aAAa,UAoBhC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,YAA2B,CAAC"}
@@ -10,11 +10,11 @@ import type { Column } from '../../index.ts';
10
10
  * be marked as isResizing, because this is a user-scoped question:
11
11
  * "Is the user directly resizing this column?"
12
12
  */
13
- export declare const isResizing: (column: Column) => boolean;
13
+ export declare const isResizing: <DataType = unknown>(column: Column<DataType>) => boolean;
14
14
  /**
15
15
  * Does the column have room to shrink?
16
16
  */
17
- export declare const canShrink: (column: Column) => boolean | 0;
17
+ export declare const canShrink: <DataType = unknown>(column: Column<DataType>) => boolean | 0;
18
18
  /**
19
19
  * Does the column have a resize handle?
20
20
  * The return value of this function can be determined by
@@ -22,7 +22,7 @@ export declare const canShrink: (column: Column) => boolean | 0;
22
22
  * - if resizing is enabled for the whole table
23
23
  * - or if we're asking about the first column (resize handles may only be "between" columns)
24
24
  */
25
- export declare const hasResizeHandle: (column: Column) => boolean;
25
+ export declare const hasResizeHandle: <DataType = unknown>(column: Column<DataType>) => boolean;
26
26
  /**
27
27
  * In this plugin (by default), styles are only applied to the headers automatically.
28
28
  * in <Table> UIs, the header cells control the widths of all cells in that column.
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-resizing/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAK3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,YACU,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,gBACU,CAAC;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,YACU,CAAC;AAEzD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,GAAG,OAAO,EAC/C,QAAQ,MAAM,CAAC,QAAQ,CAAC,KACvB,UAAU,CAAC,OAAO,QAAQ,CAiB5B,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-resizing/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAK3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,YACpB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,gBACpB,CAAC;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,YACpB,CAAC;AAEzD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,GAAG,OAAO,EAC/C,QAAQ,MAAM,CAAC,QAAQ,CAAC,KACvB,UAAU,CAAC,OAAO,QAAQ,CAiB5B,CAAC"}
@@ -141,7 +141,7 @@ export declare class TableMeta {
141
141
  saveColWidths(visibleColumnMetas: ColumnMeta[]): void;
142
142
  reset(): void;
143
143
  onTableResize(entry: ResizeObserverEntry): void;
144
- resizeColumn(column: Column, delta: number): void;
144
+ resizeColumn<DataType = unknown>(column: Column<DataType>, delta: number): void;
145
145
  }
146
146
  /**
147
147
  * @private
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-resizing/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-resizing/plugin.ts"],"names":[],"mappings":"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"}
@@ -2,17 +2,17 @@ import type { Column } from '../../index.ts';
2
2
  /**
3
3
  * Hide a column
4
4
  */
5
- export declare const hide: (column: Column) => void;
5
+ export declare const hide: <DataType = unknown>(column: Column<DataType>) => void;
6
6
  /**
7
7
  * Show a column
8
8
  */
9
- export declare const show: (column: Column) => void;
9
+ export declare const show: <DataType = unknown>(column: Column<DataType>) => void;
10
10
  /**
11
11
  * Ask if a column is presently supposed to be visible
12
12
  */
13
- export declare const isVisible: (column: Column) => boolean;
13
+ export declare const isVisible: <DataType = unknown>(column: Column<DataType>) => boolean;
14
14
  /**
15
15
  * Ask if a column is presently supposed to be hidden
16
16
  */
17
- export declare const isHidden: (column: Column) => boolean;
17
+ export declare const isHidden: <DataType = unknown>(column: Column<DataType>) => boolean;
18
18
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-visibility/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,SACc,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,SACc,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,YACY,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,YACY,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/plugins/column-visibility/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,SAChB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,IAAI,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,SAChB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAClB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAClB,CAAC"}
@@ -2,23 +2,23 @@ import type { Column } from '../../index.ts';
2
2
  /**
3
3
  * Query a specific column's current sort direction
4
4
  */
5
- export declare const sortDirection: (column: Column) => import("./types.ts").SortDirection;
5
+ export declare const sortDirection: <DataType = unknown>(column: Column<DataType>) => import("./types.ts").SortDirection;
6
6
  /**
7
7
  * Ask if a column is sortable
8
8
  */
9
- export declare const isSortable: (column: Column) => boolean;
9
+ export declare const isSortable: <DataType = unknown>(column: Column<DataType>) => boolean;
10
10
  /**
11
11
  * Ask if a column is ascending
12
12
  */
13
- export declare const isAscending: (column: Column) => boolean;
13
+ export declare const isAscending: <DataType = unknown>(column: Column<DataType>) => boolean;
14
14
  /**
15
15
  * Ask if a column is sorted descending
16
16
  */
17
- export declare const isDescending: (column: Column) => boolean;
17
+ export declare const isDescending: <DataType = unknown>(column: Column<DataType>) => boolean;
18
18
  /**
19
19
  * Ask if a column is not sorted
20
20
  */
21
- export declare const isUnsorted: (column: Column) => boolean;
21
+ export declare const isUnsorted: <DataType = unknown>(column: Column<DataType>) => boolean;
22
22
  /**
23
23
  * Sort the specified column's data using a tri-toggle.
24
24
  *
@@ -26,13 +26,13 @@ export declare const isUnsorted: (column: Column) => boolean;
26
26
  * Ascending => None => Descending
27
27
  * ⬑ ---------- <= ---------- ↲
28
28
  */
29
- export declare const sort: (column: Column) => void;
29
+ export declare const sort: <DataType = unknown>(column: Column<DataType>) => void;
30
30
  /**
31
31
  * Toggle a column between descending and not unsorted states
32
32
  */
33
- export declare const sortDescending: (column: Column) => void;
33
+ export declare const sortDescending: <DataType = unknown>(column: Column<DataType>) => void;
34
34
  /**
35
35
  * Toggle a column between ascending and not unsorted states
36
36
  */
37
- export declare const sortAscending: (column: Column) => void;
37
+ export declare const sortAscending: <DataType = unknown>(column: Column<DataType>) => void;
38
38
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/plugins/data-sorting/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,uCACG,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,YACG,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,YACG,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,YACG,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,YACG,CAAC;AAE7C;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,SACsB,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,SACkB,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,SACkB,CAAC"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/plugins/data-sorting/helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,uCAC3B,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAC3B,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAC3B,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAC3B,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,YAC3B,CAAC;AAE7C;;;;;;GAMG;AACH,eAAO,MAAM,IAAI,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,SACR,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,SACZ,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,GAAG,OAAO,EAAE,QAAQ,MAAM,CAAC,QAAQ,CAAC,SACZ,CAAC"}
@@ -94,9 +94,9 @@ export declare class TableMeta {
94
94
  get sorts(): SortItem<unknown>[];
95
95
  get isSortable(): boolean;
96
96
  get onSort(): ((sorts: SortItem<unknown>[]) => void) | undefined;
97
- handleSort(column: Column): void;
98
- toggleAscending(column: Column): void;
99
- toggleDescending(column: Column): void;
97
+ handleSort<DataType = unknown>(column: Column<DataType>): void;
98
+ toggleAscending<DataType = unknown>(column: Column<DataType>): void;
99
+ toggleDescending<DataType = unknown>(column: Column<DataType>): void;
100
100
  }
101
101
  export {};
102
102
  //# sourceMappingURL=plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/data-sorting/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEpD,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;KAChB,CAAC;CACH;AAED,OAAO,QAAQ,gCAAgC,CAAC;IAC9C,UAAU,QAAQ;QAChB,OAAO,CAAC,EAAE,kBAAkB,CAAC;QAC7B,OAAO,CAAC,EAAE,kBAAkB,CAAC;KAC9B;CACF;AAED,MAAM,WAAW,SAAS,CAAC,QAAQ,GAAG,OAAO;IAC3C,IAAI,EAAE;QACJ,MAAM,EAAE,UAAU,CAAC;QACnB,KAAK,EAAE,SAAS,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,EAAE,aAAa,CAAC;KACvB,CAAC;CACH;AAED,UAAU,OAAO,CAAC,QAAQ,GAAG,OAAO;IAClC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/C;;;;OAIG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC9B;AAED,UAAU,aAAa;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAE,SAAQ,UAAU,CACzD,SAAS,CAAC,QAAQ,CAAC,CACpB;IACC,IAAI,SAAkB;IAEtB,IAAI;;;MAGF;IAEF,kBAAkB,GAAI,SAAS,WAAW,EAAE,YAAY,SAAS,UAK/D;CACH;AAED,qBAAa,UAAU;IACT,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAElC,IACI,OAAO,2BAEV;IAED,IAAI,UAAU,YAEb;IAED,IAAI,SAAS,cAEZ;IAED,IAAI,aAAa,kBAMhB;IAED,IAAI,WAAW,YAEd;IAED,IAAI,YAAY,YAEf;IAED,IAAI,UAAU,YAEb;IAED,IAAI,YAAY,WAEf;CACF;AAED,qBAAa,SAAS;IACR,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEhC,IACI,OAAO,8BAEV;IAED,IAAI,KAAK,wBAER;IAED,IAAI,UAAU,YAEb;IAED,IAAI,MAAM,qCAhHgC,IAAI,cAkH7C;IAGD,UAAU,CAAC,MAAM,EAAE,MAAM;IA2BzB,eAAe,CAAC,MAAM,EAAE,MAAM;IAiB9B,gBAAgB,CAAC,MAAM,EAAE,MAAM;CAkBhC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/data-sorting/plugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEpD,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;KAChB,CAAC;CACH;AAED,OAAO,QAAQ,gCAAgC,CAAC;IAC9C,UAAU,QAAQ;QAChB,OAAO,CAAC,EAAE,kBAAkB,CAAC;QAC7B,OAAO,CAAC,EAAE,kBAAkB,CAAC;KAC9B;CACF;AAED,MAAM,WAAW,SAAS,CAAC,QAAQ,GAAG,OAAO;IAC3C,IAAI,EAAE;QACJ,MAAM,EAAE,UAAU,CAAC;QACnB,KAAK,EAAE,SAAS,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,EAAE,aAAa,CAAC;KACvB,CAAC;CACH;AAED,UAAU,OAAO,CAAC,QAAQ,GAAG,OAAO;IAClC;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/C;;;;OAIG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;CAC9B;AAED,UAAU,aAAa;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAE,SAAQ,UAAU,CACzD,SAAS,CAAC,QAAQ,CAAC,CACpB;IACC,IAAI,SAAkB;IAEtB,IAAI;;;MAGF;IAEF,kBAAkB,GAAI,SAAS,WAAW,EAAE,YAAY,SAAS,UAK/D;CACH;AAED,qBAAa,UAAU;IACT,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAElC,IACI,OAAO,2BAEV;IAED,IAAI,UAAU,YAEb;IAED,IAAI,SAAS,cAEZ;IAED,IAAI,aAAa,kBAMhB;IAED,IAAI,WAAW,YAEd;IAED,IAAI,YAAY,YAEf;IAED,IAAI,UAAU,YAEb;IAED,IAAI,YAAY,WAEf;CACF;AAED,qBAAa,SAAS;IACR,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAEhC,IACI,OAAO,8BAEV;IAED,IAAI,KAAK,wBAER;IAED,IAAI,UAAU,YAEb;IAED,IAAI,MAAM,qCAhHgC,IAAI,cAkH7C;IAGD,UAAU,CAAC,QAAQ,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;IA2BvD,eAAe,CAAC,QAAQ,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;IAiB5D,gBAAgB,CAAC,QAAQ,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;CAkB9D"}
@@ -16,9 +16,7 @@ const moveRight = column => meta.forColumn(column, ColumnReordering).moveRight()
16
16
  /**
17
17
  * Override all column positions at once.
18
18
  */
19
- const setColumnOrder = (table, order) => {
20
- return meta.forTable(table, ColumnReordering).setOrder(order);
21
- };
19
+ const setColumnOrder = (table, order) => meta.forTable(table, ColumnReordering).setOrder(order);
22
20
 
23
21
  /**
24
22
  * Ask if the column cannot move to the left
@@ -32,13 +30,21 @@ const cannotMoveRight = column => meta.forColumn(column, ColumnReordering).canno
32
30
 
33
31
  /**
34
32
  * Ask if the column can move to the left
33
+ * (If your plugin doesn't expose `canMoveLeft`, use `!cannotMoveLeft`.)
35
34
  */
36
- const canMoveLeft = column => meta.forColumn(column, ColumnReordering).cannotMoveLeft;
35
+ const canMoveLeft = column =>
36
+ // Prefer this if available:
37
+ // meta.forColumn(column, ColumnReordering).canMoveLeft
38
+ !meta.forColumn(column, ColumnReordering).cannotMoveLeft;
37
39
 
38
40
  /**
39
41
  * Ask if the column can move to the right
42
+ * (If your plugin doesn't expose `canMoveRight`, use `!cannotMoveRight`.)
40
43
  */
41
- const canMoveRight = column => meta.forColumn(column, ColumnReordering).cannotMoveRight;
44
+ const canMoveRight = column =>
45
+ // Prefer this if available:
46
+ // meta.forColumn(column, ColumnReordering).canMoveRight
47
+ !meta.forColumn(column, ColumnReordering).cannotMoveRight;
42
48
 
43
49
  export { canMoveLeft, canMoveRight, cannotMoveLeft, cannotMoveRight, moveLeft, moveRight, setColumnOrder };
44
50
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../src/plugins/column-reordering/helpers.ts"],"sourcesContent":["import { meta } from '../-private/base.ts';\nimport { ColumnReordering } from './plugin.ts';\n\nimport type { ColumnOrder } from './plugin.ts';\nimport type { Column, Table } from '../../index.ts';\n\n/**\n * Move the column one position to the left.\n * If the column is first, nothing will happen.\n */\nexport const moveLeft = (column: Column) =>\n meta.forColumn(column, ColumnReordering).moveLeft();\n\n/**\n * Move the column one position to the right.\n * If the column is last, nothing will happen.\n */\nexport const moveRight = (column: Column) =>\n meta.forColumn(column, ColumnReordering).moveRight();\n\n/**\n * Override all column positions at once.\n */\nexport const setColumnOrder = (table: Table, order: ColumnOrder) => {\n return meta.forTable(table, ColumnReordering).setOrder(order);\n};\n\n/**\n * Ask if the column cannot move to the left\n */\nexport const cannotMoveLeft = (column: Column) =>\n meta.forColumn(column, ColumnReordering).cannotMoveLeft;\n\n/**\n * Ask if the column cannot move to the right\n */\nexport const cannotMoveRight = (column: Column) =>\n meta.forColumn(column, ColumnReordering).cannotMoveRight;\n\n/**\n * Ask if the column can move to the left\n */\nexport const canMoveLeft = (column: Column) =>\n meta.forColumn(column, ColumnReordering).cannotMoveLeft;\n\n/**\n * Ask if the column can move to the right\n */\nexport const canMoveRight = (column: Column) =>\n meta.forColumn(column, ColumnReordering).cannotMoveRight;\n"],"names":["moveLeft","column","meta","forColumn","ColumnReordering","moveRight","setColumnOrder","table","order","forTable","setOrder","cannotMoveLeft","cannotMoveRight","canMoveLeft","canMoveRight"],"mappings":";;;AAMA;AACA;AACA;AACA;MACaA,QAAQ,GAAIC,MAAc,IACrCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACJ,QAAQ;;AAEnD;AACA;AACA;AACA;MACaK,SAAS,GAAIJ,MAAc,IACtCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACC,SAAS;;AAEpD;AACA;AACA;MACaC,cAAc,GAAGA,CAACC,KAAY,EAAEC,KAAkB,KAAK;AAClE,EAAA,OAAON,IAAI,CAACO,QAAQ,CAACF,KAAK,EAAEH,gBAAgB,CAAC,CAACM,QAAQ,CAACF,KAAK,CAAC;AAC/D;;AAEA;AACA;AACA;AACaG,MAAAA,cAAc,GAAIV,MAAc,IAC3CC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACO;;AAE3C;AACA;AACA;AACaC,MAAAA,eAAe,GAAIX,MAAc,IAC5CC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACQ;;AAE3C;AACA;AACA;AACaC,MAAAA,WAAW,GAAIZ,MAAc,IACxCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACO;;AAE3C;AACA;AACA;AACaG,MAAAA,YAAY,GAAIb,MAAc,IACzCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACQ;;;;"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/plugins/column-reordering/helpers.ts"],"sourcesContent":["import { meta } from '../-private/base.ts';\nimport { ColumnReordering } from './plugin.ts';\n\nimport type { ColumnOrder } from './plugin.ts';\nimport type { Column, Table } from '../../index.ts';\n\n/**\n * Move the column one position to the left.\n * If the column is first, nothing will happen.\n */\nexport const moveLeft = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, ColumnReordering).moveLeft();\n\n/**\n * Move the column one position to the right.\n * If the column is last, nothing will happen.\n */\nexport const moveRight = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, ColumnReordering).moveRight();\n\n/**\n * Override all column positions at once.\n */\nexport const setColumnOrder = <DataType = unknown>(\n table: Table<DataType>,\n order: ColumnOrder,\n) => meta.forTable(table, ColumnReordering).setOrder(order);\n\n/**\n * Ask if the column cannot move to the left\n */\nexport const cannotMoveLeft = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, ColumnReordering).cannotMoveLeft;\n\n/**\n * Ask if the column cannot move to the right\n */\nexport const cannotMoveRight = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, ColumnReordering).cannotMoveRight;\n\n/**\n * Ask if the column can move to the left\n * (If your plugin doesn't expose `canMoveLeft`, use `!cannotMoveLeft`.)\n */\nexport const canMoveLeft = <DataType = unknown>(column: Column<DataType>) =>\n // Prefer this if available:\n // meta.forColumn(column, ColumnReordering).canMoveLeft\n !meta.forColumn(column, ColumnReordering).cannotMoveLeft;\n\n/**\n * Ask if the column can move to the right\n * (If your plugin doesn't expose `canMoveRight`, use `!cannotMoveRight`.)\n */\nexport const canMoveRight = <DataType = unknown>(column: Column<DataType>) =>\n // Prefer this if available:\n // meta.forColumn(column, ColumnReordering).canMoveRight\n !meta.forColumn(column, ColumnReordering).cannotMoveRight;\n"],"names":["moveLeft","column","meta","forColumn","ColumnReordering","moveRight","setColumnOrder","table","order","forTable","setOrder","cannotMoveLeft","cannotMoveRight","canMoveLeft","canMoveRight"],"mappings":";;;AAMA;AACA;AACA;AACA;MACaA,QAAQ,GAAwBC,MAAwB,IACnEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACJ,QAAQ;;AAEnD;AACA;AACA;AACA;MACaK,SAAS,GAAwBJ,MAAwB,IACpEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACC,SAAS;;AAEpD;AACA;AACA;AACO,MAAMC,cAAc,GAAGA,CAC5BC,KAAsB,EACtBC,KAAkB,KACfN,IAAI,CAACO,QAAQ,CAACF,KAAK,EAAEH,gBAAgB,CAAC,CAACM,QAAQ,CAACF,KAAK;;AAE1D;AACA;AACA;AACaG,MAAAA,cAAc,GAAwBV,MAAwB,IACzEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACO;;AAE3C;AACA;AACA;AACaC,MAAAA,eAAe,GAAwBX,MAAwB,IAC1EC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACQ;;AAE3C;AACA;AACA;AACA;AACO,MAAMC,WAAW,GAAwBZ,MAAwB;AACtE;AACA;AACA,CAACC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACO;;AAE5C;AACA;AACA;AACA;AACO,MAAMG,YAAY,GAAwBb,MAAwB;AACvE;AACA;AACA,CAACC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACQ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-reordering/plugin.ts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\n\nimport { TrackedMap } from 'tracked-built-ins';\n\nimport { preferences } from '../../plugins/index.ts';\n\nimport { BasePlugin, columns, meta } from '../-private/base.ts';\n\nimport type { PluginPreferences } from '../../plugins/index.ts';\nimport type { Column, Table } from '../../index.ts';\n\ninterface ColumnReorderingPreferences extends PluginPreferences {\n table: {\n order?: Record<string, number>;\n };\n}\n\ndeclare module '@universal-ember/table/plugins' {\n interface Registry {\n ColumnReordering?: ColumnReorderingPreferences;\n 'column-reordering'?: ColumnReorderingPreferences;\n }\n}\n\nexport interface Signature {\n Meta: {\n Column: ColumnMeta;\n Table: TableMeta;\n };\n}\n\nexport class ColumnReordering extends BasePlugin<Signature> {\n name = 'column-reordering';\n static features = ['columnOrder'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n } as const;\n\n reset() {\n const tableMeta = meta.forTable(this.table, ColumnReordering);\n\n tableMeta.reset();\n }\n\n get columns() {\n return meta.forTable(this.table, ColumnReordering).columns;\n }\n}\n\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n get #tableMeta() {\n return meta.forTable(this.column.table, ColumnReordering);\n }\n\n get position() {\n return this.#tableMeta.getPosition(this.column);\n }\n\n set position(value: number) {\n this.#tableMeta.setPosition(this.column, value);\n }\n\n get canMoveLeft() {\n return this.#tableMeta.getPosition(this.column) !== 0;\n }\n\n get canMoveRight() {\n return (\n this.#tableMeta.getPosition(this.column) !==\n this.#tableMeta.columns.length - 1\n );\n }\n\n get cannotMoveLeft() {\n return !this.canMoveLeft;\n }\n\n get cannotMoveRight() {\n return !this.canMoveRight;\n }\n\n /**\n * Move the column one spot to the left\n */\n moveLeft = () => {\n this.#tableMeta.columnOrder.moveLeft(this.column.key);\n };\n\n /**\n * Move the column one spot to the right\n */\n moveRight = () => {\n this.#tableMeta.columnOrder.moveRight(this.column.key);\n };\n}\n\nexport class TableMeta {\n constructor(private table: Table) {}\n\n /**\n * @private\n *\n * We want to maintain the instance of this ColumnOrder class because\n * we allow the consumer of the table to swap out columns at any time.\n * When they do this, we want to maintain the order of the table, best we can.\n * This is also why the order of the columns is maintained via column key\n */\n @tracked\n columnOrder = new ColumnOrder({\n columns: () => this.availableColumns,\n save: this.save,\n existingOrder: this.read(),\n });\n\n /**\n * Get the curret order/position of a column\n */\n @action\n getPosition(column: Column) {\n return this.columnOrder.get(column.key);\n }\n\n /**\n * Swap the column with the column at `newPosition`\n */\n @action\n setPosition(column: Column, newPosition: number) {\n return this.columnOrder.swapWith(column.key, newPosition);\n }\n\n /**\n * Using a `ColumnOrder` instance, set the order of all columns\n */\n setOrder = (order: ColumnOrder) => {\n this.columnOrder.setAll(order.map);\n };\n\n /**\n * Revert to default config, delete preferences,\n * and clear the columnOrder\n */\n @action\n reset() {\n preferences.forTable(this.table, ColumnReordering).delete('order');\n this.columnOrder = new ColumnOrder({\n columns: () => this.availableColumns,\n save: this.save,\n });\n }\n\n /**\n * @private\n */\n @action\n save(map: Map<string, number>) {\n const order: Record<string, number> = {};\n\n for (const [key, position] of map.entries()) {\n order[key] = position;\n }\n\n preferences.forTable(this.table, ColumnReordering).set('order', order);\n }\n\n /**\n * @private\n */\n @action\n private read() {\n const order = preferences\n .forTable(this.table, ColumnReordering)\n .get('order');\n\n if (!order) return;\n\n return new Map<string, number>(Object.entries(order));\n }\n\n get columns() {\n return this.columnOrder.orderedColumns;\n }\n\n /**\n * @private\n * This isn't our data to expose, but it is useful to alias\n */\n private get availableColumns() {\n return columns.for(this.table, ColumnReordering);\n }\n}\n\n/**\n * @private\n * Used for keeping track of and updating column order\n */\nexport class ColumnOrder {\n /**\n * This map will be empty until we re-order something.\n */\n map = new TrackedMap<string, number>();\n\n constructor(\n private args: {\n columns: () => Column[];\n save?: (order: Map<string, number>) => void;\n existingOrder?: Map<string, number>;\n },\n ) {\n if (args.existingOrder) {\n this.map = new TrackedMap(args.existingOrder);\n }\n }\n\n /**\n * To account for columnVisibilty, we need to:\n * - get the list of visible columns\n * - get the column order (which preserves the order of hidden columns)\n * - skip over non-visible columns when determining the previous \"index\"\n * - set the position to whatever that is.\n */\n @action\n moveLeft(key: string) {\n const orderedColumns = this.orderedColumns;\n\n let found = false;\n let nextColumn: { key: string } | undefined;\n\n for (const column of orderedColumns.reverse()) {\n if (found) {\n nextColumn = column;\n\n break;\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n if (!nextColumn) return;\n\n const nextPosition = this.get(nextColumn.key);\n\n this.swapWith(key, nextPosition);\n }\n\n setAll = (map: Map<string, number>) => {\n this.map.clear();\n\n for (const [key, value] of map.entries()) {\n this.map.set(key, value);\n }\n\n this.args.save?.(map);\n };\n\n /**\n * To account for columnVisibilty, we need to:\n * - get the list of visible columns\n * - get the column order (which preserves the order of hidden columns)\n * - skip over non-visible columns when determining the next \"index\"\n * - set the position to whatever that is.\n */\n @action\n moveRight(key: string) {\n const orderedColumns = this.orderedColumns;\n\n let found = false;\n let nextColumn: { key: string } | undefined;\n\n for (const column of orderedColumns) {\n if (found) {\n nextColumn = column;\n\n break;\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n if (!nextColumn) return;\n\n const nextPosition = this.get(nextColumn.key);\n\n this.swapWith(key, nextPosition);\n }\n\n /**\n * Performs a swap of the column's position with the column at position\n */\n @action\n swapWith(key: string, position: number) {\n const validPositions = [...this.orderedMap.values()];\n\n /**\n * Position to swap to must exist\n */\n if (!validPositions.includes(position)) {\n return;\n }\n\n /**\n * Where did this column `key` come from? we can find out\n * by reading orderedMap\n */\n const currentPosition = this.orderedMap.get(key);\n\n assert(\n `Pre-existing position for ${key} could not be found. Does the column exist? ` +\n `The current positions are: ` +\n [...this.orderedMap.entries()]\n .map((entry) => entry.join(' => '))\n .join(', ') +\n ` and the availableColumns are: ` +\n this.args\n .columns()\n .map((column) => column.key)\n .join(', ') +\n ` and current \"map\" (${this.map.size}) is: ` +\n [...this.map.entries()].map((entry) => entry.join(' => ')).join(', '),\n undefined !== currentPosition,\n );\n\n /**\n * No need to change anything if the position is the same\n * This helps reduce @tracked invalidations, which in turn reduces DOM thrashing.\n */\n if (currentPosition === position) {\n return false;\n }\n\n const keyByPosition = new Map<number, string>(\n [...this.orderedMap.entries()].map(\n (entry) => entry.reverse() as [number, string],\n ),\n );\n\n for (const [existingPosition, key] of keyByPosition.entries()) {\n if (existingPosition === position) {\n /**\n * We swap positions because the positions are not incremental\n * meaning we can have gaps, intentionally, due to hidden columns\n */\n this.map.set(key, currentPosition);\n\n break;\n }\n }\n\n /**\n * Finally, set the position for the requested column\n */\n this.map.set(key, position);\n\n /**\n * Now that we've set the value for one column,\n * we need to make sure that all columns have a recorded position.\n */\n for (const [key, position] of this.orderedMap.entries()) {\n if (this.map.has(key)) continue;\n\n this.map.set(key, position);\n }\n\n this.args.save?.(this.map);\n }\n\n @action\n get(key: string) {\n const result = this.orderedMap.get(key);\n\n assert(\n `No position found for ${key}. Is the column used within this table?`,\n /* 0 is falsey, but it's a valid value for position */\n undefined !== result,\n );\n\n return result;\n }\n\n /**\n * The same as this.map, but with all the columns' information\n */\n @cached\n get orderedMap(): ReadonlyMap<string, number> {\n return orderOf(this.args.columns(), this.map);\n }\n\n @cached\n get orderedColumns(): Column[] {\n const availableColumns = this.args.columns();\n const availableByKey = availableColumns.reduce(\n (keyMap, column) => {\n keyMap[column.key] = column;\n\n return keyMap;\n },\n {} as Record<string, Column>,\n );\n const mergedOrder = orderOf(availableColumns, this.map);\n\n const result: Column[] = Array.from({ length: availableColumns.length });\n\n for (const [key, position] of mergedOrder.entries()) {\n const column = availableByKey[key];\n\n assert(`Could not find column for pair: ${key} @ @{position}`, column);\n result[position] = column;\n }\n\n assert(\n `Generated orderedColumns' length (${result.filter(Boolean).length}) ` +\n `does not match the length of available columns (${availableColumns.length}). ` +\n `orderedColumns: ${result\n .filter(Boolean)\n .map((c) => c.key)\n .join(', ')} -- ` +\n `available columns: ${availableColumns.map((c) => c.key).join(', ')}`,\n result.filter(Boolean).length === availableColumns.length,\n );\n\n return result.filter(Boolean);\n }\n}\n\n/**\n * @private\n *\n * Utility for helping determine the percieved order of a set of columns\n * given the original (default) ordering, and then user-configurations\n */\nexport function orderOf(\n columns: { key: string }[],\n currentOrder: Map<string, number>,\n): Map<string, number> {\n const result = new Map<string, number>();\n const availableColumns = columns.map((column) => column.key);\n const availableSet = new Set(availableColumns);\n const current = new Map<number, string>(\n [...currentOrder.entries()].map(([key, position]) => [position, key]),\n );\n\n /**\n * O(n * log(n)) ?\n */\n for (let i = 0; i < Math.max(columns.length, current.size); i++) {\n const orderedKey = current.get(i);\n\n if (orderedKey) {\n /**\n * If the currentOrder specifies columns not presently available,\n * ignore them\n */\n if (availableSet.has(orderedKey)) {\n result.set(orderedKey, i);\n continue;\n }\n }\n\n let availableKey: string | undefined;\n\n while ((availableKey = availableColumns.shift())) {\n if (result.has(availableKey) || currentOrder.has(availableKey)) {\n continue;\n }\n\n break;\n }\n\n if (!availableKey) {\n /**\n * The rest of our columns likely have their order set\n */\n continue;\n }\n\n result.set(availableKey, i);\n }\n\n return result;\n}\n"],"names":["ColumnReordering","BasePlugin","constructor","args","_defineProperty","column","ColumnMeta","table","TableMeta","reset","tableMeta","meta","forTable","columns","_ColumnMeta_brand","WeakSet","_classPrivateMethodInitSpec","_classPrivateGetter","_get_tableMeta","columnOrder","moveLeft","key","moveRight","position","getPosition","value","setPosition","canMoveLeft","canMoveRight","length","cannotMoveLeft","cannotMoveRight","_this","_class","_initializerDefineProperty","_descriptor","order","setAll","map","get","newPosition","swapWith","preferences","delete","ColumnOrder","availableColumns","save","entries","set","read","Map","Object","orderedColumns","for","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","existingOrder","action","getOwnPropertyDescriptor","_class2","TrackedMap","clear","found","nextColumn","reverse","nextPosition","validPositions","orderedMap","values","includes","currentPosition","assert","entry","join","size","undefined","keyByPosition","existingPosition","has","result","orderOf","availableByKey","reduce","keyMap","mergedOrder","Array","from","filter","Boolean","c","cached","currentOrder","availableSet","Set","current","i","Math","max","orderedKey","availableKey","shift"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-reordering/plugin.ts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\n\nimport { TrackedMap } from 'tracked-built-ins';\n\nimport { preferences } from '../../plugins/index.ts';\n\nimport { BasePlugin, columns, meta } from '../-private/base.ts';\n\nimport type { PluginPreferences } from '../../plugins/index.ts';\nimport type { Column, Table } from '../../index.ts';\n\ninterface ColumnReorderingPreferences extends PluginPreferences {\n table: {\n order?: Record<string, number>;\n };\n}\n\ndeclare module '@universal-ember/table/plugins' {\n interface Registry {\n ColumnReordering?: ColumnReorderingPreferences;\n 'column-reordering'?: ColumnReorderingPreferences;\n }\n}\n\nexport interface Signature {\n Meta: {\n Column: ColumnMeta;\n Table: TableMeta;\n };\n}\n\nexport class ColumnReordering extends BasePlugin<Signature> {\n name = 'column-reordering';\n static features = ['columnOrder'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n } as const;\n\n reset() {\n const tableMeta = meta.forTable(this.table, ColumnReordering);\n\n tableMeta.reset();\n }\n\n get columns() {\n return meta.forTable(this.table, ColumnReordering).columns;\n }\n}\n\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n get #tableMeta() {\n return meta.forTable(this.column.table, ColumnReordering);\n }\n\n get position() {\n return this.#tableMeta.getPosition(this.column);\n }\n\n set position(value: number) {\n this.#tableMeta.setPosition(this.column, value);\n }\n\n get canMoveLeft() {\n return this.#tableMeta.getPosition(this.column) !== 0;\n }\n\n get canMoveRight() {\n return (\n this.#tableMeta.getPosition(this.column) !==\n this.#tableMeta.columns.length - 1\n );\n }\n\n get cannotMoveLeft() {\n return !this.canMoveLeft;\n }\n\n get cannotMoveRight() {\n return !this.canMoveRight;\n }\n\n /**\n * Move the column one spot to the left\n */\n moveLeft = () => {\n this.#tableMeta.columnOrder.moveLeft(this.column.key);\n };\n\n /**\n * Move the column one spot to the right\n */\n moveRight = () => {\n this.#tableMeta.columnOrder.moveRight(this.column.key);\n };\n}\n\nexport class TableMeta {\n constructor(private table: Table) {}\n\n /**\n * @private\n *\n * We want to maintain the instance of this ColumnOrder class because\n * we allow the consumer of the table to swap out columns at any time.\n * When they do this, we want to maintain the order of the table, best we can.\n * This is also why the order of the columns is maintained via column key\n */\n @tracked\n columnOrder = new ColumnOrder({\n columns: () => this.availableColumns,\n save: this.save,\n existingOrder: this.read(),\n });\n\n /**\n * Get the curret order/position of a column\n */\n @action\n getPosition<DataType = unknown>(column: Column<DataType>) {\n return this.columnOrder.get(column.key);\n }\n\n /**\n * Swap the column with the column at `newPosition`\n */\n @action\n setPosition<DataType = unknown>(\n column: Column<DataType>,\n newPosition: number,\n ) {\n return this.columnOrder.swapWith(column.key, newPosition);\n }\n\n /**\n * Using a `ColumnOrder` instance, set the order of all columns\n */\n setOrder = (order: ColumnOrder) => {\n this.columnOrder.setAll(order.map);\n };\n\n /**\n * Revert to default config, delete preferences,\n * and clear the columnOrder\n */\n @action\n reset() {\n preferences.forTable(this.table, ColumnReordering).delete('order');\n this.columnOrder = new ColumnOrder({\n columns: () => this.availableColumns,\n save: this.save,\n });\n }\n\n /**\n * @private\n */\n @action\n save(map: Map<string, number>) {\n const order: Record<string, number> = {};\n\n for (const [key, position] of map.entries()) {\n order[key] = position;\n }\n\n preferences.forTable(this.table, ColumnReordering).set('order', order);\n }\n\n /**\n * @private\n */\n @action\n private read() {\n const order = preferences\n .forTable(this.table, ColumnReordering)\n .get('order');\n\n if (!order) return;\n\n return new Map<string, number>(Object.entries(order));\n }\n\n get columns() {\n return this.columnOrder.orderedColumns;\n }\n\n /**\n * @private\n * This isn't our data to expose, but it is useful to alias\n */\n private get availableColumns() {\n return columns.for(this.table, ColumnReordering);\n }\n}\n\n/**\n * @private\n * Used for keeping track of and updating column order\n */\nexport class ColumnOrder {\n /**\n * This map will be empty until we re-order something.\n */\n map = new TrackedMap<string, number>();\n\n constructor(\n private args: {\n columns: () => Column[];\n save?: (order: Map<string, number>) => void;\n existingOrder?: Map<string, number>;\n },\n ) {\n if (args.existingOrder) {\n this.map = new TrackedMap(args.existingOrder);\n }\n }\n\n /**\n * To account for columnVisibilty, we need to:\n * - get the list of visible columns\n * - get the column order (which preserves the order of hidden columns)\n * - skip over non-visible columns when determining the previous \"index\"\n * - set the position to whatever that is.\n */\n @action\n moveLeft(key: string) {\n const orderedColumns = this.orderedColumns;\n\n let found = false;\n let nextColumn: { key: string } | undefined;\n\n for (const column of orderedColumns.reverse()) {\n if (found) {\n nextColumn = column;\n\n break;\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n if (!nextColumn) return;\n\n const nextPosition = this.get(nextColumn.key);\n\n this.swapWith(key, nextPosition);\n }\n\n setAll = (map: Map<string, number>) => {\n this.map.clear();\n\n for (const [key, value] of map.entries()) {\n this.map.set(key, value);\n }\n\n this.args.save?.(map);\n };\n\n /**\n * To account for columnVisibilty, we need to:\n * - get the list of visible columns\n * - get the column order (which preserves the order of hidden columns)\n * - skip over non-visible columns when determining the next \"index\"\n * - set the position to whatever that is.\n */\n @action\n moveRight(key: string) {\n const orderedColumns = this.orderedColumns;\n\n let found = false;\n let nextColumn: { key: string } | undefined;\n\n for (const column of orderedColumns) {\n if (found) {\n nextColumn = column;\n\n break;\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n if (!nextColumn) return;\n\n const nextPosition = this.get(nextColumn.key);\n\n this.swapWith(key, nextPosition);\n }\n\n /**\n * Performs a swap of the column's position with the column at position\n */\n @action\n swapWith(key: string, position: number) {\n const validPositions = [...this.orderedMap.values()];\n\n /**\n * Position to swap to must exist\n */\n if (!validPositions.includes(position)) {\n return;\n }\n\n /**\n * Where did this column `key` come from? we can find out\n * by reading orderedMap\n */\n const currentPosition = this.orderedMap.get(key);\n\n assert(\n `Pre-existing position for ${key} could not be found. Does the column exist? ` +\n `The current positions are: ` +\n [...this.orderedMap.entries()]\n .map((entry) => entry.join(' => '))\n .join(', ') +\n ` and the availableColumns are: ` +\n this.args\n .columns()\n .map((column) => column.key)\n .join(', ') +\n ` and current \"map\" (${this.map.size}) is: ` +\n [...this.map.entries()].map((entry) => entry.join(' => ')).join(', '),\n undefined !== currentPosition,\n );\n\n /**\n * No need to change anything if the position is the same\n * This helps reduce @tracked invalidations, which in turn reduces DOM thrashing.\n */\n if (currentPosition === position) {\n return false;\n }\n\n const keyByPosition = new Map<number, string>(\n [...this.orderedMap.entries()].map(\n (entry) => entry.reverse() as [number, string],\n ),\n );\n\n for (const [existingPosition, key] of keyByPosition.entries()) {\n if (existingPosition === position) {\n /**\n * We swap positions because the positions are not incremental\n * meaning we can have gaps, intentionally, due to hidden columns\n */\n this.map.set(key, currentPosition);\n\n break;\n }\n }\n\n /**\n * Finally, set the position for the requested column\n */\n this.map.set(key, position);\n\n /**\n * Now that we've set the value for one column,\n * we need to make sure that all columns have a recorded position.\n */\n for (const [key, position] of this.orderedMap.entries()) {\n if (this.map.has(key)) continue;\n\n this.map.set(key, position);\n }\n\n this.args.save?.(this.map);\n }\n\n @action\n get(key: string) {\n const result = this.orderedMap.get(key);\n\n assert(\n `No position found for ${key}. Is the column used within this table?`,\n /* 0 is falsey, but it's a valid value for position */\n undefined !== result,\n );\n\n return result;\n }\n\n /**\n * The same as this.map, but with all the columns' information\n */\n @cached\n get orderedMap(): ReadonlyMap<string, number> {\n return orderOf(this.args.columns(), this.map);\n }\n\n @cached\n get orderedColumns(): Column[] {\n const availableColumns = this.args.columns();\n const availableByKey = availableColumns.reduce(\n (keyMap, column) => {\n keyMap[column.key] = column;\n\n return keyMap;\n },\n {} as Record<string, Column>,\n );\n const mergedOrder = orderOf(availableColumns, this.map);\n\n const result: Column[] = Array.from({ length: availableColumns.length });\n\n for (const [key, position] of mergedOrder.entries()) {\n const column = availableByKey[key];\n\n assert(`Could not find column for pair: ${key} @ @{position}`, column);\n result[position] = column;\n }\n\n assert(\n `Generated orderedColumns' length (${result.filter(Boolean).length}) ` +\n `does not match the length of available columns (${availableColumns.length}). ` +\n `orderedColumns: ${result\n .filter(Boolean)\n .map((c) => c.key)\n .join(', ')} -- ` +\n `available columns: ${availableColumns.map((c) => c.key).join(', ')}`,\n result.filter(Boolean).length === availableColumns.length,\n );\n\n return result.filter(Boolean);\n }\n}\n\n/**\n * @private\n *\n * Utility for helping determine the percieved order of a set of columns\n * given the original (default) ordering, and then user-configurations\n */\nexport function orderOf(\n columns: { key: string }[],\n currentOrder: Map<string, number>,\n): Map<string, number> {\n const result = new Map<string, number>();\n const availableColumns = columns.map((column) => column.key);\n const availableSet = new Set(availableColumns);\n const current = new Map<number, string>(\n [...currentOrder.entries()].map(([key, position]) => [position, key]),\n );\n\n /**\n * O(n * log(n)) ?\n */\n for (let i = 0; i < Math.max(columns.length, current.size); i++) {\n const orderedKey = current.get(i);\n\n if (orderedKey) {\n /**\n * If the currentOrder specifies columns not presently available,\n * ignore them\n */\n if (availableSet.has(orderedKey)) {\n result.set(orderedKey, i);\n continue;\n }\n }\n\n let availableKey: string | undefined;\n\n while ((availableKey = availableColumns.shift())) {\n if (result.has(availableKey) || currentOrder.has(availableKey)) {\n continue;\n }\n\n break;\n }\n\n if (!availableKey) {\n /**\n * The rest of our columns likely have their order set\n */\n continue;\n }\n\n result.set(availableKey, i);\n }\n\n return result;\n}\n"],"names":["ColumnReordering","BasePlugin","constructor","args","_defineProperty","column","ColumnMeta","table","TableMeta","reset","tableMeta","meta","forTable","columns","_ColumnMeta_brand","WeakSet","_classPrivateMethodInitSpec","_classPrivateGetter","_get_tableMeta","columnOrder","moveLeft","key","moveRight","position","getPosition","value","setPosition","canMoveLeft","canMoveRight","length","cannotMoveLeft","cannotMoveRight","_this","_class","_initializerDefineProperty","_descriptor","order","setAll","map","get","newPosition","swapWith","preferences","delete","ColumnOrder","availableColumns","save","entries","set","read","Map","Object","orderedColumns","for","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","existingOrder","action","getOwnPropertyDescriptor","_class2","TrackedMap","clear","found","nextColumn","reverse","nextPosition","validPositions","orderedMap","values","includes","currentPosition","assert","entry","join","size","undefined","keyByPosition","existingPosition","has","result","orderOf","availableByKey","reduce","keyMap","mergedOrder","Array","from","filter","Boolean","c","cached","currentOrder","availableSet","Set","current","i","Math","max","orderedKey","availableKey","shift"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handle.js","sources":["../../../src/plugins/column-resizing/handle.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { buildWaiter } from '@ember/test-waiters';\n\nimport Modifier from 'ember-modifier';\n\nimport { meta } from '../-private/base.ts';\nimport { ColumnResizing } from './plugin.ts';\n\nimport type { ColumnMeta } from './plugin.ts';\nimport type { Column } from '../../-private/column.ts';\n\nconst waiter = buildWaiter('ColumnResizing#ResizeHandle');\n\n/**\n * - why are mouse events used instead of drag events?\n * - why not use the \"draggable\" attribute?\n *\n * It seems drag events are more for files and/or moving images around on a page\n * dragging an image, for example, has a ghost of that image until it is dropped.\n * The same thing happens with text.\n * This prevents us from having total control of the styling of how dragging works.\n *\n *\n *\n */\n\nclass ResizeHandle extends Modifier<{ Args: { Positional: [Column] } }> {\n declare dragHandle: HTMLElement;\n declare column: Column;\n declare meta: ColumnMeta;\n\n // Pointer\n pointerStartX = 0;\n pointerStartY = 0;\n pointerX = 0;\n pointerY = 0;\n declare dragFrame: number;\n\n // Keyboard\n keyDistance = 0;\n declare keyFrame: number; // ha\n declare lastKey: number;\n\n // waiter\n token?: unknown;\n\n isSetup = false;\n modify(element: Element, [column]: [Column]) {\n this.column = column;\n this.meta = meta.forColumn(column, ColumnResizing);\n this.dragHandle = element as HTMLElement;\n\n if (!this.isSetup) {\n this.isSetup = true;\n this.setup();\n }\n }\n\n setup = () => {\n this.dragHandle.addEventListener('touchstart', this.dragStartHandler);\n this.dragHandle.addEventListener('mousedown', this.dragStartHandler);\n this.dragHandle.addEventListener('keydown', this.keyHandler);\n\n registerDestructor(this, () => {\n this.meta.isResizing = false;\n\n if (this.token) {\n waiter.endAsync(this.token);\n this.token = undefined;\n }\n\n this.dragHandle.removeEventListener('touchstart', this.dragStartHandler);\n this.dragHandle.removeEventListener('mousedown', this.dragStartHandler);\n window.removeEventListener('touchmove', this.dragMove);\n window.removeEventListener('touchend', this.dragEndHandler);\n window.removeEventListener('mousemove', this.dragMove);\n window.removeEventListener('mouseup', this.dragEndHandler);\n this.dragHandle.removeEventListener('keydown', this.keyHandler);\n });\n };\n\n setPosition = (event: Event) => {\n if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;\n\n if ('TouchEvent' in window && event instanceof TouchEvent) {\n const firstTouch = event.touches[0];\n\n if (!firstTouch) return;\n\n this.pointerX = firstTouch.clientX;\n this.pointerY = firstTouch.clientY;\n } else {\n this.pointerX = event.clientX;\n this.pointerY = event.clientY;\n }\n };\n\n setStartPosition = (event: Event) => {\n if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;\n\n if ('TouchEvent' in window && event instanceof TouchEvent) {\n const firstTouch = event.touches[0];\n\n if (!firstTouch) return;\n\n this.pointerStartX = firstTouch.clientX;\n this.pointerStartY = firstTouch.clientY;\n } else {\n this.pointerStartX = event.clientX;\n this.pointerStartY = event.clientY;\n }\n };\n\n /**\n * queueUpdate takes an optional function argument that is called\n * in the requestAnimationFrame callback _after_ the resize function.\n *\n * We can use this to ensure that preferences are only ever saved after\n * we have completed column resizing.\n *\n * Because the requestAnimationFrame 'hides' these function calls from the\n * the ember test waiter, we also ensure that we track them by also cancelling\n * the waiter in the requestAnimationFrame callback.\n */\n queueUpdate = (callback?: () => void) => {\n if (this.dragFrame) {\n cancelAnimationFrame(this.dragFrame);\n }\n\n this.dragFrame = requestAnimationFrame(() => {\n this.meta.resize(this.pointerX - this.pointerStartX);\n this.pointerStartX = this.pointerX;\n\n if (callback) {\n callback();\n }\n\n if (this.token) {\n waiter.endAsync(this.token);\n this.token = undefined;\n }\n });\n };\n\n dragEndHandler = () => {\n this.meta.isResizing = false;\n\n this.queueUpdate(this.meta.save);\n\n /**\n * No need to listen if we aren't dragging\n */\n window.removeEventListener('touchmove', this.dragMove);\n window.removeEventListener('touchend', this.dragEndHandler);\n window.removeEventListener('mousemove', this.dragMove);\n window.removeEventListener('mouseup', this.dragEndHandler);\n };\n\n dragMove = (event: Event) => {\n if (!this.meta.isResizing) return;\n this.setPosition(event);\n this.queueUpdate();\n };\n\n dragStartHandler = (event: Event) => {\n if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;\n\n this.meta.isResizing = true;\n if (event.target !== this.dragHandle) return;\n\n if (this.token) {\n waiter.endAsync(this.token);\n }\n\n this.token = waiter.beginAsync();\n\n this.setPosition(event);\n this.setStartPosition(event);\n\n window.addEventListener('touchend', this.dragEndHandler);\n window.addEventListener('touchmove', this.dragMove);\n window.addEventListener('mousemove', this.dragMove);\n window.addEventListener('mouseup', this.dragEndHandler);\n };\n\n keyHandler = (event: KeyboardEvent) => {\n const deltaT = new Date().getTime() - this.lastKey;\n const isRapid = deltaT < 50;\n\n if (event.code === 'ArrowDown' || event.code === 'ArrowRight') {\n this.keyDistance += isRapid ? 8 : 1;\n this.lastKey = new Date().getTime();\n }\n\n if (event.code === 'ArrowUp' || event.code === 'ArrowLeft') {\n this.keyDistance -= isRapid ? 8 : 1;\n this.lastKey = new Date().getTime();\n }\n\n cancelAnimationFrame(this.keyFrame);\n this.keyFrame = requestAnimationFrame(() => {\n this.meta.resize(this.keyDistance);\n\n this.keyDistance = 0;\n });\n };\n}\n\n/**\n * Modifier to attach to the column resize handles.\n * This provides both keyboard and mouse support for resizing columns.\n * (provided the resize handle element is focusable -- so consider using\n * a button for the resize element)\n *\n * @example\n * ```js\n * import Component from '@glimmer/component';\n * import { meta } from '@universal-ember/table/plugins';\n * import { resizeHandle, ColumnResizing } from '@universal-ember/table/plugins/column-resizing';\n *\n * export default class TableHead extends Component {\n * /* ✂️ *\\/\n *\n * <template>\n * <thead>\n * <tr>\n * {{#each this.columns as |column|}}\n * <th>\n * <span>{{column.name}}</span>\n * <button {{resizeHandle column}}></button>\n * </th>\n * {{/each}}\n * </tr>\n * </thead>\n * </template>\n * }\n * ```\n *\n * Width and isResizing state is maintained on the \"meta\"\n * class so that the users may choose per-column stylings for\n * isResizing and dragging behaviors.\n *\n * For example, while dragging, the user may add a class based on the\n * isDragging property.\n *\n * @example\n * ```js\n * import Component from '@glimmer/component';\n * import { meta } from '@universal-ember/table/plugins';\n * import { resizeHandle, ColumnResizing } from '@universal-ember/table/plugins/column-resizing';\n *\n * export default class TableHead extends Component {\n * /* ✂️ *\\/\n *\n * isDragging = (column) => {\n * return meta.forColumn(column, ColumnResizing).isDragging;\n * }\n *\n * <template>\n * <thead>\n * <tr>\n * {{#each this.columns as |column|}}\n * <th class=\"header {{if (this.isDragging column) 'blue'}}\">\n * <span>{{column.name}}</span>\n * <button {{resizeHandle column}}></button>\n * </th>\n * {{/each}}\n * </tr>\n * </thead>\n * </template>\n * }\n * ```\n *\n *\n * @note\n * The logic here is copied from the drag slider in\n * https://limber.glimdown.com/\n * See: \"resize-handle\" on Limber's GitHub\n */\nexport const resizeHandle = ResizeHandle;\n"],"names":["waiter","buildWaiter","ResizeHandle","Modifier","constructor","args","_defineProperty","dragHandle","addEventListener","dragStartHandler","keyHandler","registerDestructor","meta","isResizing","token","endAsync","undefined","removeEventListener","window","dragMove","dragEndHandler","event","PointerEvent","MouseEvent","TouchEvent","firstTouch","touches","pointerX","clientX","pointerY","clientY","pointerStartX","pointerStartY","callback","dragFrame","cancelAnimationFrame","requestAnimationFrame","resize","queueUpdate","save","setPosition","target","beginAsync","setStartPosition","deltaT","Date","getTime","lastKey","isRapid","code","keyDistance","keyFrame","modify","element","column","forColumn","ColumnResizing","isSetup","setup","resizeHandle"],"mappings":"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CAACD,OAAO,GAAG,IAAIF,IAAI,EAAE,CAACC,OAAO,EAAE;AACrC;AAEAX,MAAAA,oBAAoB,CAAC,IAAI,CAACgB,QAAQ,CAAC;AACnC,MAAA,IAAI,CAACA,QAAQ,GAAGf,qBAAqB,CAAC,MAAM;QAC1C,IAAI,CAACxB,IAAI,CAACyB,MAAM,CAAC,IAAI,CAACa,WAAW,CAAC;QAElC,IAAI,CAACA,WAAW,GAAG,CAAC;AACtB,OAAC,CAAC;KACH,CAAA;AAAA;AA9JDE,EAAAA,MAAMA,CAACC,OAAgB,EAAE,CAACC,MAAM,CAAW,EAAE;IAC3C,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAI,CAAC1C,IAAI,GAAGA,IAAI,CAAC2C,SAAS,CAACD,MAAM,EAAEE,cAAc,CAAC;IAClD,IAAI,CAACjD,UAAU,GAAG8C,OAAsB;AAExC,IAAA,IAAI,CAAC,IAAI,CAACI,OAAO,EAAE;MACjB,IAAI,CAACA,OAAO,GAAG,IAAI;MACnB,IAAI,CAACC,KAAK,EAAE;AACd;AACF;AAsJF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,GAAGzD;;;;"}
1
+ {"version":3,"file":"handle.js","sources":["../../../src/plugins/column-resizing/handle.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { buildWaiter } from '@ember/test-waiters';\n\nimport Modifier from 'ember-modifier';\n\nimport { meta } from '../-private/base.ts';\nimport { ColumnResizing } from './plugin.ts';\n\nimport type { ColumnMeta } from './plugin.ts';\nimport type { Column } from '../../-private/column.ts';\n\nconst waiter = buildWaiter('ColumnResizing#ResizeHandle');\n\n/**\n * - why are mouse events used instead of drag events?\n * - why not use the \"draggable\" attribute?\n *\n * It seems drag events are more for files and/or moving images around on a page\n * dragging an image, for example, has a ghost of that image until it is dropped.\n * The same thing happens with text.\n * This prevents us from having total control of the styling of how dragging works.\n *\n *\n *\n */\n\nclass ResizeHandle<DataType = unknown> extends Modifier<{\n Args: { Positional: [Column<DataType>] };\n}> {\n declare dragHandle: HTMLElement;\n declare column: Column<DataType>;\n declare meta: ColumnMeta;\n\n // Pointer\n pointerStartX = 0;\n pointerStartY = 0;\n pointerX = 0;\n pointerY = 0;\n declare dragFrame: number;\n\n // Keyboard\n keyDistance = 0;\n declare keyFrame: number; // ha\n declare lastKey: number;\n\n // waiter\n token?: unknown;\n\n isSetup = false;\n modify(element: Element, [column]: [Column<DataType>]) {\n this.column = column;\n this.meta = meta.forColumn(column, ColumnResizing);\n this.dragHandle = element as HTMLElement;\n\n if (!this.isSetup) {\n this.isSetup = true;\n this.setup();\n }\n }\n\n setup = () => {\n this.dragHandle.addEventListener('touchstart', this.dragStartHandler);\n this.dragHandle.addEventListener('mousedown', this.dragStartHandler);\n this.dragHandle.addEventListener('keydown', this.keyHandler);\n\n registerDestructor(this, () => {\n this.meta.isResizing = false;\n\n if (this.token) {\n waiter.endAsync(this.token);\n this.token = undefined;\n }\n\n this.dragHandle.removeEventListener('touchstart', this.dragStartHandler);\n this.dragHandle.removeEventListener('mousedown', this.dragStartHandler);\n window.removeEventListener('touchmove', this.dragMove);\n window.removeEventListener('touchend', this.dragEndHandler);\n window.removeEventListener('mousemove', this.dragMove);\n window.removeEventListener('mouseup', this.dragEndHandler);\n this.dragHandle.removeEventListener('keydown', this.keyHandler);\n });\n };\n\n setPosition = (event: Event) => {\n if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;\n\n if ('TouchEvent' in window && event instanceof TouchEvent) {\n const firstTouch = event.touches[0];\n\n if (!firstTouch) return;\n\n this.pointerX = firstTouch.clientX;\n this.pointerY = firstTouch.clientY;\n } else {\n this.pointerX = event.clientX;\n this.pointerY = event.clientY;\n }\n };\n\n setStartPosition = (event: Event) => {\n if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;\n\n if ('TouchEvent' in window && event instanceof TouchEvent) {\n const firstTouch = event.touches[0];\n\n if (!firstTouch) return;\n\n this.pointerStartX = firstTouch.clientX;\n this.pointerStartY = firstTouch.clientY;\n } else {\n this.pointerStartX = event.clientX;\n this.pointerStartY = event.clientY;\n }\n };\n\n /**\n * queueUpdate takes an optional function argument that is called\n * in the requestAnimationFrame callback _after_ the resize function.\n *\n * We can use this to ensure that preferences are only ever saved after\n * we have completed column resizing.\n *\n * Because the requestAnimationFrame 'hides' these function calls from the\n * the ember test waiter, we also ensure that we track them by also cancelling\n * the waiter in the requestAnimationFrame callback.\n */\n queueUpdate = (callback?: () => void) => {\n if (this.dragFrame) {\n cancelAnimationFrame(this.dragFrame);\n }\n\n this.dragFrame = requestAnimationFrame(() => {\n this.meta.resize(this.pointerX - this.pointerStartX);\n this.pointerStartX = this.pointerX;\n\n if (callback) {\n callback();\n }\n\n if (this.token) {\n waiter.endAsync(this.token);\n this.token = undefined;\n }\n });\n };\n\n dragEndHandler = () => {\n this.meta.isResizing = false;\n\n this.queueUpdate(this.meta.save);\n\n /**\n * No need to listen if we aren't dragging\n */\n window.removeEventListener('touchmove', this.dragMove);\n window.removeEventListener('touchend', this.dragEndHandler);\n window.removeEventListener('mousemove', this.dragMove);\n window.removeEventListener('mouseup', this.dragEndHandler);\n };\n\n dragMove = (event: Event) => {\n if (!this.meta.isResizing) return;\n this.setPosition(event);\n this.queueUpdate();\n };\n\n dragStartHandler = (event: Event) => {\n if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;\n\n this.meta.isResizing = true;\n if (event.target !== this.dragHandle) return;\n\n if (this.token) {\n waiter.endAsync(this.token);\n }\n\n this.token = waiter.beginAsync();\n\n this.setPosition(event);\n this.setStartPosition(event);\n\n window.addEventListener('touchend', this.dragEndHandler);\n window.addEventListener('touchmove', this.dragMove);\n window.addEventListener('mousemove', this.dragMove);\n window.addEventListener('mouseup', this.dragEndHandler);\n };\n\n keyHandler = (event: KeyboardEvent) => {\n const deltaT = new Date().getTime() - this.lastKey;\n const isRapid = deltaT < 50;\n\n if (event.code === 'ArrowDown' || event.code === 'ArrowRight') {\n this.keyDistance += isRapid ? 8 : 1;\n this.lastKey = new Date().getTime();\n }\n\n if (event.code === 'ArrowUp' || event.code === 'ArrowLeft') {\n this.keyDistance -= isRapid ? 8 : 1;\n this.lastKey = new Date().getTime();\n }\n\n cancelAnimationFrame(this.keyFrame);\n this.keyFrame = requestAnimationFrame(() => {\n this.meta.resize(this.keyDistance);\n\n this.keyDistance = 0;\n });\n };\n}\n\n/**\n * Modifier to attach to the column resize handles.\n * This provides both keyboard and mouse support for resizing columns.\n * (provided the resize handle element is focusable -- so consider using\n * a button for the resize element)\n *\n * @example\n * ```js\n * import Component from '@glimmer/component';\n * import { meta } from '@universal-ember/table/plugins';\n * import { resizeHandle, ColumnResizing } from '@universal-ember/table/plugins/column-resizing';\n *\n * export default class TableHead extends Component {\n * /* ✂️ *\\/\n *\n * <template>\n * <thead>\n * <tr>\n * {{#each this.columns as |column|}}\n * <th>\n * <span>{{column.name}}</span>\n * <button {{resizeHandle column}}></button>\n * </th>\n * {{/each}}\n * </tr>\n * </thead>\n * </template>\n * }\n * ```\n *\n * Width and isResizing state is maintained on the \"meta\"\n * class so that the users may choose per-column stylings for\n * isResizing and dragging behaviors.\n *\n * For example, while dragging, the user may add a class based on the\n * isDragging property.\n *\n * @example\n * ```js\n * import Component from '@glimmer/component';\n * import { meta } from '@universal-ember/table/plugins';\n * import { resizeHandle, ColumnResizing } from '@universal-ember/table/plugins/column-resizing';\n *\n * export default class TableHead extends Component {\n * /* ✂️ *\\/\n *\n * isDragging = (column) => {\n * return meta.forColumn(column, ColumnResizing).isDragging;\n * }\n *\n * <template>\n * <thead>\n * <tr>\n * {{#each this.columns as |column|}}\n * <th class=\"header {{if (this.isDragging column) 'blue'}}\">\n * <span>{{column.name}}</span>\n * <button {{resizeHandle column}}></button>\n * </th>\n * {{/each}}\n * </tr>\n * </thead>\n * </template>\n * }\n * ```\n *\n *\n * @note\n * The logic here is copied from the drag slider in\n * https://limber.glimdown.com/\n * See: \"resize-handle\" on Limber's GitHub\n */\nexport const resizeHandle: typeof ResizeHandle = ResizeHandle;\n"],"names":["waiter","buildWaiter","ResizeHandle","Modifier","constructor","args","_defineProperty","dragHandle","addEventListener","dragStartHandler","keyHandler","registerDestructor","meta","isResizing","token","endAsync","undefined","removeEventListener","window","dragMove","dragEndHandler","event","PointerEvent","MouseEvent","TouchEvent","firstTouch","touches","pointerX","clientX","pointerY","clientY","pointerStartX","pointerStartY","callback","dragFrame","cancelAnimationFrame","requestAnimationFrame","resize","queueUpdate","save","setPosition","target","beginAsync","setStartPosition","deltaT","Date","getTime","lastKey","isRapid","code","keyDistance","keyFrame","modify","element","column","forColumn","ColumnResizing","isSetup","setup","resizeHandle"],"mappings":"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CAACD,OAAO,GAAG,IAAIF,IAAI,EAAE,CAACC,OAAO,EAAE;AACrC;AAEAX,MAAAA,oBAAoB,CAAC,IAAI,CAACgB,QAAQ,CAAC;AACnC,MAAA,IAAI,CAACA,QAAQ,GAAGf,qBAAqB,CAAC,MAAM;QAC1C,IAAI,CAACxB,IAAI,CAACyB,MAAM,CAAC,IAAI,CAACa,WAAW,CAAC;QAElC,IAAI,CAACA,WAAW,GAAG,CAAC;AACtB,OAAC,CAAC;KACH,CAAA;AAAA;AA9JDE,EAAAA,MAAMA,CAACC,OAAgB,EAAE,CAACC,MAAM,CAAqB,EAAE;IACrD,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAI,CAAC1C,IAAI,GAAGA,IAAI,CAAC2C,SAAS,CAACD,MAAM,EAAEE,cAAc,CAAC;IAClD,IAAI,CAACjD,UAAU,GAAG8C,OAAsB;AAExC,IAAA,IAAI,CAAC,IAAI,CAACI,OAAO,EAAE;MACjB,IAAI,CAACA,OAAO,GAAG,IAAI;MACnB,IAAI,CAACC,KAAK,EAAE;AACd;AACF;AAsJF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAiC,GAAGzD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../src/plugins/column-resizing/helpers.ts"],"sourcesContent":["import { htmlSafe } from '@ember/template';\n\nimport { meta } from '../-private/base.ts';\nimport { ColumnResizing } from './plugin.ts';\n\nimport type { Column } from '../../index.ts';\n\n/**\n * The column actively being resized by the user.\n *\n * Note that during resizing, multiple columns are resized at once,\n * dependending on the boundaries of the resize events.\n *\n * The other columns being resized as a consequence of \"this\" column will not\n * be marked as isResizing, because this is a user-scoped question:\n * \"Is the user directly resizing this column?\"\n */\nexport const isResizing = (column: Column) =>\n meta.forColumn(column, ColumnResizing).isResizing;\n\n/**\n * Does the column have room to shrink?\n */\nexport const canShrink = (column: Column) =>\n meta.forColumn(column, ColumnResizing).canShrink;\n\n/**\n * Does the column have a resize handle?\n * The return value of this function can be determined by\n * - if resizing is enabled for the column\n * - if resizing is enabled for the whole table\n * - or if we're asking about the first column (resize handles may only be \"between\" columns)\n */\nexport const hasResizeHandle = (column: Column) =>\n meta.forColumn(column, ColumnResizing).hasResizeHandle;\n\n/**\n * In this plugin (by default), styles are only applied to the headers automatically.\n * in <Table> UIs, the header cells control the widths of all cells in that column.\n * There are other kinds of tabular-like markup that may want to grab the widths of columns,\n * because The Platform does not manage that automatically (like if divs and roles were used manually)\n *\n * This utility is meant to be applied to the `style` attribute of a particular td-like element.\n */\nexport const styleStringFor = <DataType = unknown>(\n column: Column<DataType>,\n): ReturnType<typeof htmlSafe> => {\n const columnMeta = meta.forColumn(column, ColumnResizing);\n\n let result = '';\n\n /**\n * Styles are applied regardless of the \"table\" being resizable or not\n * because in non-<table> UIs, we need to ensure that all cells in a column\n * have the same width\n */\n for (const [key, value] of Object.entries(columnMeta.style)) {\n result += `${toStyle(key)}:${value};`;\n }\n\n result = ';' + result;\n\n return htmlSafe(result);\n};\n\n/**\n * the JS API for styles is camel case,\n * but CSS is kebab-case. To save on complexity and\n * amount of code, we have a super small conversion function\n * for only the properties relevant to the sticky plugin.\n */\nconst toStyle = (key: string): string => {\n switch (key) {\n case 'minWidth':\n return 'min-width';\n default:\n return key;\n }\n};\n"],"names":["isResizing","column","meta","forColumn","ColumnResizing","canShrink","hasResizeHandle","styleStringFor","columnMeta","result","key","value","Object","entries","style","toStyle","htmlSafe"],"mappings":";;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaA,MAAAA,UAAU,GAAIC,MAAc,IACvCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACJ;;AAEzC;AACA;AACA;AACaK,MAAAA,SAAS,GAAIJ,MAAc,IACtCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,MAAAA,eAAe,GAAIL,MAAc,IAC5CC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACE;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,MAAAA,cAAc,GACzBN,MAAwB,IACQ;EAChC,MAAMO,UAAU,GAAGN,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC;EAEzD,IAAIK,MAAM,GAAG,EAAE;;AAEf;AACF;AACA;AACA;AACA;AACE,EAAA,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,UAAU,CAACM,KAAK,CAAC,EAAE;IAC3DL,MAAM,IAAI,GAAGM,OAAO,CAACL,GAAG,CAAC,CAAA,CAAA,EAAIC,KAAK,CAAG,CAAA,CAAA;AACvC;EAEAF,MAAM,GAAG,GAAG,GAAGA,MAAM;EAErB,OAAOO,QAAQ,CAACP,MAAM,CAAC;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMM,OAAO,GAAIL,GAAW,IAAa;AACvC,EAAA,QAAQA,GAAG;AACT,IAAA,KAAK,UAAU;AACb,MAAA,OAAO,WAAW;AACpB,IAAA;AACE,MAAA,OAAOA,GAAG;AACd;AACF,CAAC;;;;"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/plugins/column-resizing/helpers.ts"],"sourcesContent":["import { htmlSafe } from '@ember/template';\n\nimport { meta } from '../-private/base.ts';\nimport { ColumnResizing } from './plugin.ts';\n\nimport type { Column } from '../../index.ts';\n\n/**\n * The column actively being resized by the user.\n *\n * Note that during resizing, multiple columns are resized at once,\n * dependending on the boundaries of the resize events.\n *\n * The other columns being resized as a consequence of \"this\" column will not\n * be marked as isResizing, because this is a user-scoped question:\n * \"Is the user directly resizing this column?\"\n */\nexport const isResizing = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, ColumnResizing).isResizing;\n\n/**\n * Does the column have room to shrink?\n */\nexport const canShrink = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, ColumnResizing).canShrink;\n\n/**\n * Does the column have a resize handle?\n * The return value of this function can be determined by\n * - if resizing is enabled for the column\n * - if resizing is enabled for the whole table\n * - or if we're asking about the first column (resize handles may only be \"between\" columns)\n */\nexport const hasResizeHandle = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, ColumnResizing).hasResizeHandle;\n\n/**\n * In this plugin (by default), styles are only applied to the headers automatically.\n * in <Table> UIs, the header cells control the widths of all cells in that column.\n * There are other kinds of tabular-like markup that may want to grab the widths of columns,\n * because The Platform does not manage that automatically (like if divs and roles were used manually)\n *\n * This utility is meant to be applied to the `style` attribute of a particular td-like element.\n */\nexport const styleStringFor = <DataType = unknown>(\n column: Column<DataType>,\n): ReturnType<typeof htmlSafe> => {\n const columnMeta = meta.forColumn(column, ColumnResizing);\n\n let result = '';\n\n /**\n * Styles are applied regardless of the \"table\" being resizable or not\n * because in non-<table> UIs, we need to ensure that all cells in a column\n * have the same width\n */\n for (const [key, value] of Object.entries(columnMeta.style)) {\n result += `${toStyle(key)}:${value};`;\n }\n\n result = ';' + result;\n\n return htmlSafe(result);\n};\n\n/**\n * the JS API for styles is camel case,\n * but CSS is kebab-case. To save on complexity and\n * amount of code, we have a super small conversion function\n * for only the properties relevant to the sticky plugin.\n */\nconst toStyle = (key: string): string => {\n switch (key) {\n case 'minWidth':\n return 'min-width';\n default:\n return key;\n }\n};\n"],"names":["isResizing","column","meta","forColumn","ColumnResizing","canShrink","hasResizeHandle","styleStringFor","columnMeta","result","key","value","Object","entries","style","toStyle","htmlSafe"],"mappings":";;;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaA,MAAAA,UAAU,GAAwBC,MAAwB,IACrEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACJ;;AAEzC;AACA;AACA;AACaK,MAAAA,SAAS,GAAwBJ,MAAwB,IACpEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACC;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,MAAAA,eAAe,GAAwBL,MAAwB,IAC1EC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACE;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,MAAAA,cAAc,GACzBN,MAAwB,IACQ;EAChC,MAAMO,UAAU,GAAGN,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC;EAEzD,IAAIK,MAAM,GAAG,EAAE;;AAEf;AACF;AACA;AACA;AACA;AACE,EAAA,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,UAAU,CAACM,KAAK,CAAC,EAAE;IAC3DL,MAAM,IAAI,GAAGM,OAAO,CAACL,GAAG,CAAC,CAAA,CAAA,EAAIC,KAAK,CAAG,CAAA,CAAA;AACvC;EAEAF,MAAM,GAAG,GAAG,GAAGA,MAAM;EAErB,OAAOO,QAAQ,CAACP,MAAM,CAAC;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMM,OAAO,GAAIL,GAAW,IAAa;AACvC,EAAA,QAAQA,GAAG;AACT,IAAA,KAAK,UAAU;AACb,MAAA,OAAO,WAAW;AACpB,IAAA;AACE,MAAA,OAAOA,GAAG;AACd;AACF,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-resizing/plugin.ts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { isDestroyed, isDestroying } from '@ember/destroyable';\nimport { action } from '@ember/object';\n\nimport { preferences } from '../../plugins/index.ts';\n\nimport { BasePlugin, columns, meta, options } from '../-private/base.ts';\nimport { applyStyles } from '../-private/utils.ts';\nimport {\n getAccurateClientHeight,\n getAccurateClientWidth,\n totalGapOf,\n} from './utils.ts';\n\nimport type { ColumnApi, PluginPreferences } from '../../plugins/index.ts';\nimport type { Column, Table } from '../../index.ts';\n\ninterface ColumnResizePreferences extends PluginPreferences {\n columns: {\n [columnKey: string]: {\n width?: number;\n };\n };\n}\n\ndeclare module '@universal-ember/table/plugins' {\n interface Registry {\n ColumnResizing?: ColumnResizePreferences;\n }\n}\n\nexport interface ColumnOptions {\n /**\n * Force a starting width\n * This may not be less than the minWidth\n */\n width?: number;\n /**\n * Default: 128px\n */\n minWidth?: number;\n /**\n * Flip if the column is resizable or not.\n * The default is whatever the table's plugin option is set to\n * (and then yet again true, if not set at all)\n */\n isResizable?: boolean;\n}\n\nexport interface TableOptions {\n /**\n * Toggle whether the table is able to be resized at all\n *\n * default :true\n */\n enabled?: boolean;\n\n /**\n * By default, each column's \"handle\" position is on the\n * left-hand side of the column.\n *\n * If, for style-reasons, you want to move it to the right,\n * this option should reflect that so that the calculations can be\n * updated to match the expected behavior of which column(s) grow/shrink\n *\n * Valid values are 'left' or 'right'\n */\n handlePosition?: string;\n}\n\ninterface Signature {\n Meta: {\n Column: ColumnMeta;\n Table: TableMeta;\n };\n Options: {\n Plugin: TableOptions;\n Column: ColumnOptions;\n };\n}\n\n/**\n * One instance of a plugin exists per table\n * but a plugin can have a \"Meta\" for each column\n */\nexport class ColumnResizing extends BasePlugin<Signature> {\n name = 'column-resizing';\n static features = ['columnWidth'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n };\n\n headerCellModifier = (element: HTMLElement, { column }: ColumnApi) => {\n const columnMeta = meta.forColumn(column, ColumnResizing);\n\n element.setAttribute('data-test-is-resizable', `${columnMeta.isResizable}`);\n\n applyStyles(element, columnMeta.style);\n };\n\n /**\n * This is what ends up calling resize when the browser changes\n * (assuming that the containing element's styles stretch to fill the space)\n *\n * Later, when container queries are more broadly supported, we'll want to watch\n * the container instead of the window to prevent unneeded updates (as a window can change\n * size without the container changing size)\n */\n containerModifier = resizeObserver;\n\n reset() {\n preferences.forAllColumns(this.table, ColumnResizing).delete('width');\n }\n}\n\nconst DEFAULT_COLUMN_OPTIONS = {\n minWidth: 128,\n};\n\nconst ALLOWED_COLUMN_OPTIONS = ['minWidth', 'width', 'isResizable'];\n\n/**\n * @private\n *\n * Contains resizable information for a particular column\n */\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n @tracked _width?: number;\n @tracked isResizing = false;\n\n get tableMeta() {\n return meta.forTable(this.column.table, ColumnResizing);\n }\n\n @cached\n get options() {\n const columnOptions = options.forColumn(this.column, ColumnResizing);\n const filteredOptions = Object.entries(columnOptions || {}).reduce(\n (result, [k, v]) => {\n if (ALLOWED_COLUMN_OPTIONS.includes(k)) {\n result[k] = v;\n }\n\n return result;\n },\n {} as Record<string, unknown>,\n ) as ColumnOptions;\n\n return {\n ...DEFAULT_COLUMN_OPTIONS,\n ...filteredOptions,\n };\n }\n\n get key() {\n return this.column.key;\n }\n\n get minWidth() {\n return this.options.minWidth;\n }\n\n get initialWidth() {\n const savedWidth = preferences\n .forColumn(this.column, ColumnResizing)\n .get('width');\n\n if (!savedWidth) {\n return this.options.width;\n }\n\n if (typeof savedWidth !== 'string') {\n assert(\n 'saved width must be a number or string',\n typeof savedWidth === 'number',\n );\n return savedWidth;\n }\n\n return parseInt(savedWidth, 10);\n }\n\n get canShrink() {\n return this.width && this.width > this.minWidth;\n }\n\n get roomToShrink() {\n return this.width ? this.width - this.minWidth : 0;\n }\n\n get isResizable() {\n return this.options.isResizable ?? this.tableMeta.isResizable;\n }\n\n get hasResizeHandle() {\n const previous = columns.previous(this.column);\n\n if (!previous) return false;\n\n return (\n this.isResizable && meta.forColumn(previous, ColumnResizing).isResizable\n );\n }\n\n get width() {\n let width = this._width ?? this.initialWidth;\n\n if (!width) {\n const { defaultColumnWidth } = this.tableMeta;\n\n width = defaultColumnWidth\n ? Math.max(defaultColumnWidth, this.minWidth)\n : this.minWidth;\n }\n\n return width;\n }\n\n set width(value) {\n this._width = value;\n }\n\n get style() {\n const styles: Partial<Pick<CSSStyleDeclaration, 'width' | 'minWidth'>> = {};\n\n if (this.width) styles.width = `${this.width}px`;\n if (this.minWidth) styles.minWidth = `${this.minWidth}px`;\n\n return styles;\n }\n\n @action\n resize(delta: number) {\n this.tableMeta.resizeColumn(this.column, delta);\n }\n\n @action\n save() {\n this.tableMeta.saveColWidths(this.tableMeta.visibleColumnMetas);\n }\n}\n\n/**\n * @private\n *\n * individual column width must exclude:\n * - padding\n * - margin\n * - gap (partial)\n * - any other positioning offsets\n *\n * Otherwise the table will infinitely resize itself\n */\nfunction distributeDelta(delta: number, visibleColumns: Column[]) {\n if (delta === 0) return;\n\n const metas = visibleColumns.map((column) =>\n meta.forColumn(column, ColumnResizing),\n );\n\n const resizableMetas = metas.filter(\n (meta) => meta.isResizable && (delta < 0 ? meta.canShrink : true),\n );\n\n const columnDelta = delta / resizableMetas.length;\n\n for (const meta of resizableMetas) {\n assert('cannot resize a column that does not have a width', meta.width);\n meta.width = Math.max(meta.width + columnDelta, meta.minWidth);\n }\n}\n\n/**\n * @private\n *\n * Contains resizable and width information regarding the table as a whole\n */\nexport class TableMeta {\n constructor(private table: Table) {}\n\n @tracked scrollContainerHeight?: number;\n @tracked scrollContainerWidth?: number;\n\n get options() {\n return options.forTable(this.table, ColumnResizing);\n }\n\n get isResizable() {\n return this.options?.enabled ?? true;\n }\n\n get defaultColumnWidth() {\n if (!this.scrollContainerWidth) return;\n\n return (\n (this.scrollContainerWidth - this.totalInitialColumnWidths) /\n this.columnsWithoutInitialWidth.length\n );\n }\n\n get #availableColumns() {\n return columns.for(this.table, ColumnResizing);\n }\n\n get visibleColumnMetas() {\n return this.#availableColumns.map((column) =>\n meta.forColumn(column, ColumnResizing),\n );\n }\n\n get totalInitialColumnWidths() {\n return this.visibleColumnMetas.reduce(\n (acc, meta) => (acc += meta.initialWidth ?? 0),\n 0,\n );\n }\n\n get columnsWithoutInitialWidth() {\n return this.visibleColumnMetas.filter((meta) => !meta.initialWidth);\n }\n\n get totalVisibleColumnsWidth() {\n return this.visibleColumnMetas.reduce(\n (acc, column) => (acc += column.width ?? 0),\n 0,\n );\n }\n\n @action\n saveColWidths(visibleColumnMetas: ColumnMeta[]) {\n const tablePrefs = this.table.preferences;\n\n for (const column of visibleColumnMetas) {\n const existing = tablePrefs.storage.forPlugin('ColumnResizing');\n const columnPrefs = existing.forColumn(column.key);\n\n columnPrefs.set('width', column.width.toString());\n }\n\n tablePrefs.persist();\n }\n\n @action\n reset() {\n if (!this.scrollContainerWidth) return;\n\n for (const column of this.visibleColumnMetas) {\n column._width = undefined;\n }\n }\n\n @action\n onTableResize(entry: ResizeObserverEntry) {\n assert(\n 'scroll container element must be an HTMLElement',\n entry.target instanceof HTMLElement,\n );\n\n this.scrollContainerWidth = getAccurateClientWidth(entry.target);\n this.scrollContainerHeight = getAccurateClientHeight(entry.target);\n\n // TODO: extract this to card-list and remove it from the plugin\n // card-list will provide its own column-resizing plugin\n // by sub-classing this one, and defining its own way of calculating the \"diff\"\n const totalGap = totalGapOf(entry.target.querySelector('[role=\"row\"]'));\n const diff =\n this.scrollContainerWidth - this.totalVisibleColumnsWidth - totalGap;\n\n distributeDelta(diff, this.#availableColumns);\n }\n\n @action\n resizeColumn(column: Column, delta: number) {\n if (delta === 0) return;\n\n /**\n * When the delta is negative, we are dragging to the next\n * when positive, we are dragging to the right\n * when dragging to the right, we want to grow the column\n * when dragging to the left, we grow the \"next\" column,\n * which shrinks the column we're dragging\n *\n * This assumes the resize handle for any column is on the right-hand\n * side of the column header\n *\n * If the resize handle were on the left-hand side of the column header\n * we'd want the column.next to be column.previous\n *\n * This is CSS dependent, and can be configured in plugin\n * options\n */\n const isDraggingRight = delta > 0;\n const position = this.options?.handlePosition ?? 'left';\n\n let growingColumn: Column | null | undefined;\n\n if (position === 'right') {\n growingColumn = isDraggingRight ? columns.next(column) : column;\n } else {\n growingColumn = isDraggingRight ? columns.previous(column) : column;\n }\n\n if (!growingColumn) return;\n\n const growingColumnMeta = meta.forColumn(growingColumn, ColumnResizing);\n\n assert(\n 'cannot resize a column that does not have a width',\n growingColumnMeta.width,\n );\n\n const shrinkableColumns =\n delta > 0\n ? columns.after(growingColumn)\n : columns.before(growingColumn).reverse();\n\n const shrinkableColumnsMetas = shrinkableColumns\n .map((column) => meta.forColumn(column, ColumnResizing))\n .filter((meta) => meta.canShrink);\n\n let remainder = Math.abs(delta);\n\n while (shrinkableColumnsMetas.length > 0) {\n const shrinkingColumnMeta = shrinkableColumnsMetas.shift();\n\n assert(\n 'cannot resize a column that does not have a width',\n shrinkingColumnMeta?.width,\n );\n\n const actualDelta = Math.min(remainder, shrinkingColumnMeta.roomToShrink);\n\n growingColumnMeta.width += actualDelta;\n shrinkingColumnMeta.width -= actualDelta;\n remainder -= actualDelta;\n }\n }\n}\n\n/**\n * @private\n * included in the same file as the plugin due to circular dependency\n *\n * This goes on the containing element\n *\n * @example\n * ```hbs\n * <div {{resizeObserver @table}}>\n * <table>\n * ```\n */\nfunction resizeObserver(element: HTMLElement, table: Table) {\n const observer = getObserver(element, table);\n\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n };\n}\n\nconst CACHE = new WeakMap<HTMLElement, ResizeObserver>();\n\n/**\n * This is technically \"inefficient\" as you don't want too many resize\n * observers on a page, but tables are so big, that I don't see too many use cases\n * where you'd have 10+ tables on a page\n */\nfunction getObserver(element: HTMLElement, table: Table): ResizeObserver {\n let existing = CACHE.get(element);\n\n if (existing) return existing;\n\n existing = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n if (isDestroyed(table) || isDestroying(table)) {\n return;\n }\n\n for (const entry of entries) {\n meta.forTable(table, ColumnResizing).onTableResize(entry);\n }\n });\n\n return existing;\n}\n"],"names":["ColumnResizing","BasePlugin","constructor","args","_defineProperty","column","ColumnMeta","table","TableMeta","element","columnMeta","meta","forColumn","setAttribute","isResizable","applyStyles","style","resizeObserver","reset","preferences","forAllColumns","delete","DEFAULT_COLUMN_OPTIONS","minWidth","ALLOWED_COLUMN_OPTIONS","_class","_initializerDefineProperty","_descriptor","_descriptor2","tableMeta","forTable","options","columnOptions","filteredOptions","Object","entries","reduce","result","k","v","includes","key","initialWidth","savedWidth","get","width","assert","parseInt","canShrink","roomToShrink","hasResizeHandle","previous","columns","_width","defaultColumnWidth","Math","max","value","styles","resize","delta","resizeColumn","save","saveColWidths","visibleColumnMetas","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","cached","getOwnPropertyDescriptor","action","distributeDelta","visibleColumns","metas","map","resizableMetas","filter","columnDelta","length","_class2","_TableMeta_brand","WeakSet","_classPrivateMethodInitSpec","_descriptor3","_descriptor4","enabled","scrollContainerWidth","totalInitialColumnWidths","columnsWithoutInitialWidth","_classPrivateGetter","_get_availableColumns","acc","totalVisibleColumnsWidth","tablePrefs","existing","storage","forPlugin","columnPrefs","set","toString","persist","undefined","onTableResize","entry","target","HTMLElement","getAccurateClientWidth","scrollContainerHeight","getAccurateClientHeight","totalGap","totalGapOf","querySelector","diff","isDraggingRight","position","handlePosition","growingColumn","next","growingColumnMeta","shrinkableColumns","after","before","reverse","shrinkableColumnsMetas","remainder","abs","shrinkingColumnMeta","shift","actualDelta","min","_this","for","observer","getObserver","observe","unobserve","CACHE","WeakMap","ResizeObserver","isDestroyed","isDestroying"],"mappings":";;;;;;;;;;AAkFA;AACA;AACA;AACA;AACO,MAAMA,cAAc,SAASC,UAAU,CAAY;AAAAC,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;AAAAC,IAAAA,eAAA,eACjD,iBAAiB,CAAA;AAAAA,IAAAA,eAAA,CAGjB,IAAA,EAAA,MAAA,EAAA;AACLC,MAAAA,MAAM,EAAEC,UAAU;AAClBC,MAAAA,KAAK,EAAEC;KACR,CAAA;IAAAJ,eAAA,CAAA,IAAA,EAAA,oBAAA,EAEoB,CAACK,OAAoB,EAAE;AAAEJ,MAAAA;AAAkB,KAAC,KAAK;MACpE,MAAMK,UAAU,GAAGC,IAAI,CAACC,SAAS,CAACP,MAAM,EAAEL,cAAc,CAAC;MAEzDS,OAAO,CAACI,YAAY,CAAC,wBAAwB,EAAE,GAAGH,UAAU,CAACI,WAAW,CAAA,CAAE,CAAC;AAE3EC,MAAAA,WAAW,CAACN,OAAO,EAAEC,UAAU,CAACM,KAAK,CAAC;KACvC,CAAA;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AAPEZ,IAAAA,eAAA,4BAQoBa,cAAc,CAAA;AAAA;AAElCC,EAAAA,KAAKA,GAAG;AACNC,IAAAA,WAAW,CAACC,aAAa,CAAC,IAAI,CAACb,KAAK,EAAEP,cAAc,CAAC,CAACqB,MAAM,CAAC,OAAO,CAAC;AACvE;AACF;AAACjB,eAAA,CA9BYJ,cAAc,EAEP,UAAA,EAAA,CAAC,aAAa,CAAC,CAAA;AA8BnC,MAAMsB,sBAAsB,GAAG;AAC7BC,EAAAA,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMC,sBAAsB,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC;;AAEnE;AACA;AACA;AACA;AACA;AACA,IAAalB,UAAU,IAAAmB,MAAA,GAAhB,MAAMnB,UAAU,CAAC;EACtBJ,WAAWA,CAASG,MAAc,EAAE;AAAAqB,IAAAA,0BAAA,iBAAAC,WAAA,EAAA,IAAA,CAAA;AAAAD,IAAAA,0BAAA,qBAAAE,YAAA,EAAA,IAAA,CAAA;IAAA,IAAhBvB,CAAAA,MAAc,GAAdA,MAAc;AAAG;EAKrC,IAAIwB,SAASA,GAAG;IACd,OAAOlB,IAAI,CAACmB,QAAQ,CAAC,IAAI,CAACzB,MAAM,CAACE,KAAK,EAAEP,cAAc,CAAC;AACzD;EAEA,IACI+B,OAAOA,GAAG;IACZ,MAAMC,aAAa,GAAGD,OAAO,CAACnB,SAAS,CAAC,IAAI,CAACP,MAAM,EAAEL,cAAc,CAAC;IACpE,MAAMiC,eAAe,GAAGC,MAAM,CAACC,OAAO,CAACH,aAAa,IAAI,EAAE,CAAC,CAACI,MAAM,CAChE,CAACC,MAAM,EAAE,CAACC,CAAC,EAAEC,CAAC,CAAC,KAAK;AAClB,MAAA,IAAIf,sBAAsB,CAACgB,QAAQ,CAACF,CAAC,CAAC,EAAE;AACtCD,QAAAA,MAAM,CAACC,CAAC,CAAC,GAAGC,CAAC;AACf;AAEA,MAAA,OAAOF,MAAM;KACd,EACD,EACF,CAAkB;IAElB,OAAO;AACL,MAAA,GAAGf,sBAAsB;MACzB,GAAGW;KACJ;AACH;EAEA,IAAIQ,GAAGA,GAAG;AACR,IAAA,OAAO,IAAI,CAACpC,MAAM,CAACoC,GAAG;AACxB;EAEA,IAAIlB,QAAQA,GAAG;AACb,IAAA,OAAO,IAAI,CAACQ,OAAO,CAACR,QAAQ;AAC9B;EAEA,IAAImB,YAAYA,GAAG;AACjB,IAAA,MAAMC,UAAU,GAAGxB,WAAW,CAC3BP,SAAS,CAAC,IAAI,CAACP,MAAM,EAAEL,cAAc,CAAC,CACtC4C,GAAG,CAAC,OAAO,CAAC;IAEf,IAAI,CAACD,UAAU,EAAE;AACf,MAAA,OAAO,IAAI,CAACZ,OAAO,CAACc,KAAK;AAC3B;AAEA,IAAA,IAAI,OAAOF,UAAU,KAAK,QAAQ,EAAE;AAClCG,MAAAA,MAAM,CACJ,wCAAwC,EACxC,OAAOH,UAAU,KAAK,QACxB,CAAC;AACD,MAAA,OAAOA,UAAU;AACnB;AAEA,IAAA,OAAOI,QAAQ,CAACJ,UAAU,EAAE,EAAE,CAAC;AACjC;EAEA,IAAIK,SAASA,GAAG;IACd,OAAO,IAAI,CAACH,KAAK,IAAI,IAAI,CAACA,KAAK,GAAG,IAAI,CAACtB,QAAQ;AACjD;EAEA,IAAI0B,YAAYA,GAAG;AACjB,IAAA,OAAO,IAAI,CAACJ,KAAK,GAAG,IAAI,CAACA,KAAK,GAAG,IAAI,CAACtB,QAAQ,GAAG,CAAC;AACpD;EAEA,IAAIT,WAAWA,GAAG;IAChB,OAAO,IAAI,CAACiB,OAAO,CAACjB,WAAW,IAAI,IAAI,CAACe,SAAS,CAACf,WAAW;AAC/D;EAEA,IAAIoC,eAAeA,GAAG;IACpB,MAAMC,QAAQ,GAAGC,OAAO,CAACD,QAAQ,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAE9C,IAAA,IAAI,CAAC8C,QAAQ,EAAE,OAAO,KAAK;AAE3B,IAAA,OACE,IAAI,CAACrC,WAAW,IAAIH,IAAI,CAACC,SAAS,CAACuC,QAAQ,EAAEnD,cAAc,CAAC,CAACc,WAAW;AAE5E;EAEA,IAAI+B,KAAKA,GAAG;IACV,IAAIA,KAAK,GAAG,IAAI,CAACQ,MAAM,IAAI,IAAI,CAACX,YAAY;IAE5C,IAAI,CAACG,KAAK,EAAE;MACV,MAAM;AAAES,QAAAA;OAAoB,GAAG,IAAI,CAACzB,SAAS;AAE7CgB,MAAAA,KAAK,GAAGS,kBAAkB,GACtBC,IAAI,CAACC,GAAG,CAACF,kBAAkB,EAAE,IAAI,CAAC/B,QAAQ,CAAC,GAC3C,IAAI,CAACA,QAAQ;AACnB;AAEA,IAAA,OAAOsB,KAAK;AACd;EAEA,IAAIA,KAAKA,CAACY,KAAK,EAAE;IACf,IAAI,CAACJ,MAAM,GAAGI,KAAK;AACrB;EAEA,IAAIzC,KAAKA,GAAG;IACV,MAAM0C,MAAgE,GAAG,EAAE;AAE3E,IAAA,IAAI,IAAI,CAACb,KAAK,EAAEa,MAAM,CAACb,KAAK,GAAG,CAAG,EAAA,IAAI,CAACA,KAAK,CAAI,EAAA,CAAA;AAChD,IAAA,IAAI,IAAI,CAACtB,QAAQ,EAAEmC,MAAM,CAACnC,QAAQ,GAAG,CAAG,EAAA,IAAI,CAACA,QAAQ,CAAI,EAAA,CAAA;AAEzD,IAAA,OAAOmC,MAAM;AACf;EAGAC,MAAMA,CAACC,KAAa,EAAE;IACpB,IAAI,CAAC/B,SAAS,CAACgC,YAAY,CAAC,IAAI,CAACxD,MAAM,EAAEuD,KAAK,CAAC;AACjD;AAGAE,EAAAA,IAAIA,GAAG;IACL,IAAI,CAACjC,SAAS,CAACkC,aAAa,CAAC,IAAI,CAAClC,SAAS,CAACmC,kBAAkB,CAAC;AACjE;AACF,CAAC,EAAArC,WAAA,GAAAsC,yBAAA,CAAAxC,MAAA,CAAAyC,SAAA,EAAA,QAAA,EAAA,CAjHEC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;EAAAC,WAAA,EAAA;AAAA,CAAA3C,CAAAA,EAAAA,YAAA,GAAAqC,yBAAA,CAAAxC,MAAA,CAAAyC,SAAA,iBACPC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;AAAAC,EAAAA,WAAA,cAAA;AAAA,IAAA,OAAc,KAAK;AAAA;AAAA,CAAA,CAAA,EAAAN,yBAAA,CAAAxC,MAAA,CAAAyC,SAAA,EAAA,SAAA,EAAA,CAM1BM,MAAM,CAAA,EAAAtC,MAAA,CAAAuC,wBAAA,CAAAhD,MAAA,CAAAyC,SAAA,EAAA,SAAA,CAAA,EAAAzC,MAAA,CAAAyC,SAAA,CAAA,EAAAD,yBAAA,CAAAxC,MAAA,CAAAyC,SAAA,EAAA,QAAA,EAAA,CAiGNQ,MAAM,CAAA,EAAAxC,MAAA,CAAAuC,wBAAA,CAAAhD,MAAA,CAAAyC,SAAA,EAAA,QAAA,CAAA,EAAAzC,MAAA,CAAAyC,SAAA,CAAA,EAAAD,yBAAA,CAAAxC,MAAA,CAAAyC,SAAA,EAAA,MAAA,EAAA,CAKNQ,MAAM,CAAA,EAAAxC,MAAA,CAAAuC,wBAAA,CAAAhD,MAAA,CAAAyC,SAAA,EAAA,MAAA,CAAA,EAAAzC,MAAA,CAAAyC,SAAA,CAAA,EAAAzC,MAAA;;AAMT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkD,eAAeA,CAACf,KAAa,EAAEgB,cAAwB,EAAE;EAChE,IAAIhB,KAAK,KAAK,CAAC,EAAE;AAEjB,EAAA,MAAMiB,KAAK,GAAGD,cAAc,CAACE,GAAG,CAAEzE,MAAM,IACtCM,IAAI,CAACC,SAAS,CAACP,MAAM,EAAEL,cAAc,CACvC,CAAC;EAED,MAAM+E,cAAc,GAAGF,KAAK,CAACG,MAAM,CAChCrE,IAAI,IAAKA,IAAI,CAACG,WAAW,KAAK8C,KAAK,GAAG,CAAC,GAAGjD,IAAI,CAACqC,SAAS,GAAG,IAAI,CAClE,CAAC;AAED,EAAA,MAAMiC,WAAW,GAAGrB,KAAK,GAAGmB,cAAc,CAACG,MAAM;AAEjD,EAAA,KAAK,MAAMvE,IAAI,IAAIoE,cAAc,EAAE;AACjCjC,IAAAA,MAAM,CAAC,mDAAmD,EAAEnC,IAAI,CAACkC,KAAK,CAAC;AACvElC,IAAAA,IAAI,CAACkC,KAAK,GAAGU,IAAI,CAACC,GAAG,CAAC7C,IAAI,CAACkC,KAAK,GAAGoC,WAAW,EAAEtE,IAAI,CAACY,QAAQ,CAAC;AAChE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACaf,IAAAA,SAAS,IAAA2E,OAAA,IAAAC,gBAAA,oBAAAC,OAAA,EAAA,EAAf,MAAM7E,SAAS,CAAC;EACrBN,WAAWA,CAASK,KAAY,EAAE;AAAA+E,IAAAA,2BAAA,OAAAF,gBAAA,CAAA;AAAA1D,IAAAA,0BAAA,gCAAA6D,YAAA,EAAA,IAAA,CAAA;AAAA7D,IAAAA,0BAAA,+BAAA8D,YAAA,EAAA,IAAA,CAAA;IAAA,IAAdjF,CAAAA,KAAY,GAAZA,KAAY;AAAG;EAKnC,IAAIwB,OAAOA,GAAG;IACZ,OAAOA,OAAO,CAACD,QAAQ,CAAC,IAAI,CAACvB,KAAK,EAAEP,cAAc,CAAC;AACrD;EAEA,IAAIc,WAAWA,GAAG;AAChB,IAAA,OAAO,IAAI,CAACiB,OAAO,EAAE0D,OAAO,IAAI,IAAI;AACtC;EAEA,IAAInC,kBAAkBA,GAAG;AACvB,IAAA,IAAI,CAAC,IAAI,CAACoC,oBAAoB,EAAE;AAEhC,IAAA,OACE,CAAC,IAAI,CAACA,oBAAoB,GAAG,IAAI,CAACC,wBAAwB,IAC1D,IAAI,CAACC,0BAA0B,CAACV,MAAM;AAE1C;EAMA,IAAIlB,kBAAkBA,GAAG;IACvB,OAAO6B,mBAAA,CAAAT,gBAAA,EAAA,IAAI,EAACU,qBAAgB,CAAC,CAAChB,GAAG,CAAEzE,MAAM,IACvCM,IAAI,CAACC,SAAS,CAACP,MAAM,EAAEL,cAAc,CACvC,CAAC;AACH;EAEA,IAAI2F,wBAAwBA,GAAG;IAC7B,OAAO,IAAI,CAAC3B,kBAAkB,CAAC5B,MAAM,CACnC,CAAC2D,GAAG,EAAEpF,IAAI,KAAMoF,GAAG,IAAIpF,IAAI,CAAC+B,YAAY,IAAI,CAAE,EAC9C,CACF,CAAC;AACH;EAEA,IAAIkD,0BAA0BA,GAAG;AAC/B,IAAA,OAAO,IAAI,CAAC5B,kBAAkB,CAACgB,MAAM,CAAErE,IAAI,IAAK,CAACA,IAAI,CAAC+B,YAAY,CAAC;AACrE;EAEA,IAAIsD,wBAAwBA,GAAG;IAC7B,OAAO,IAAI,CAAChC,kBAAkB,CAAC5B,MAAM,CACnC,CAAC2D,GAAG,EAAE1F,MAAM,KAAM0F,GAAG,IAAI1F,MAAM,CAACwC,KAAK,IAAI,CAAE,EAC3C,CACF,CAAC;AACH;EAGAkB,aAAaA,CAACC,kBAAgC,EAAE;AAC9C,IAAA,MAAMiC,UAAU,GAAG,IAAI,CAAC1F,KAAK,CAACY,WAAW;AAEzC,IAAA,KAAK,MAAMd,MAAM,IAAI2D,kBAAkB,EAAE;MACvC,MAAMkC,QAAQ,GAAGD,UAAU,CAACE,OAAO,CAACC,SAAS,CAAC,gBAAgB,CAAC;MAC/D,MAAMC,WAAW,GAAGH,QAAQ,CAACtF,SAAS,CAACP,MAAM,CAACoC,GAAG,CAAC;AAElD4D,MAAAA,WAAW,CAACC,GAAG,CAAC,OAAO,EAAEjG,MAAM,CAACwC,KAAK,CAAC0D,QAAQ,EAAE,CAAC;AACnD;IAEAN,UAAU,CAACO,OAAO,EAAE;AACtB;AAGAtF,EAAAA,KAAKA,GAAG;AACN,IAAA,IAAI,CAAC,IAAI,CAACwE,oBAAoB,EAAE;AAEhC,IAAA,KAAK,MAAMrF,MAAM,IAAI,IAAI,CAAC2D,kBAAkB,EAAE;MAC5C3D,MAAM,CAACgD,MAAM,GAAGoD,SAAS;AAC3B;AACF;EAGAC,aAAaA,CAACC,KAA0B,EAAE;IACxC7D,MAAM,CACJ,iDAAiD,EACjD6D,KAAK,CAACC,MAAM,YAAYC,WAC1B,CAAC;IAED,IAAI,CAACnB,oBAAoB,GAAGoB,sBAAsB,CAACH,KAAK,CAACC,MAAM,CAAC;IAChE,IAAI,CAACG,qBAAqB,GAAGC,uBAAuB,CAACL,KAAK,CAACC,MAAM,CAAC;;AAElE;AACA;AACA;AACA,IAAA,MAAMK,QAAQ,GAAGC,UAAU,CAACP,KAAK,CAACC,MAAM,CAACO,aAAa,CAAC,cAAc,CAAC,CAAC;IACvE,MAAMC,IAAI,GACR,IAAI,CAAC1B,oBAAoB,GAAG,IAAI,CAACM,wBAAwB,GAAGiB,QAAQ;IAEtEtC,eAAe,CAACyC,IAAI,EAAEvB,mBAAA,CAAAT,gBAAA,EAAI,IAAA,EAACU,qBAAgB,CAAC,CAAC;AAC/C;AAGAjC,EAAAA,YAAYA,CAACxD,MAAc,EAAEuD,KAAa,EAAE;IAC1C,IAAIA,KAAK,KAAK,CAAC,EAAE;;AAEjB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI,IAAA,MAAMyD,eAAe,GAAGzD,KAAK,GAAG,CAAC;IACjC,MAAM0D,QAAQ,GAAG,IAAI,CAACvF,OAAO,EAAEwF,cAAc,IAAI,MAAM;AAEvD,IAAA,IAAIC,aAAwC;IAE5C,IAAIF,QAAQ,KAAK,OAAO,EAAE;MACxBE,aAAa,GAAGH,eAAe,GAAGjE,OAAO,CAACqE,IAAI,CAACpH,MAAM,CAAC,GAAGA,MAAM;AACjE,KAAC,MAAM;MACLmH,aAAa,GAAGH,eAAe,GAAGjE,OAAO,CAACD,QAAQ,CAAC9C,MAAM,CAAC,GAAGA,MAAM;AACrE;IAEA,IAAI,CAACmH,aAAa,EAAE;IAEpB,MAAME,iBAAiB,GAAG/G,IAAI,CAACC,SAAS,CAAC4G,aAAa,EAAExH,cAAc,CAAC;AAEvE8C,IAAAA,MAAM,CACJ,mDAAmD,EACnD4E,iBAAiB,CAAC7E,KACpB,CAAC;IAED,MAAM8E,iBAAiB,GACrB/D,KAAK,GAAG,CAAC,GACLR,OAAO,CAACwE,KAAK,CAACJ,aAAa,CAAC,GAC5BpE,OAAO,CAACyE,MAAM,CAACL,aAAa,CAAC,CAACM,OAAO,EAAE;IAE7C,MAAMC,sBAAsB,GAAGJ,iBAAiB,CAC7C7C,GAAG,CAAEzE,MAAM,IAAKM,IAAI,CAACC,SAAS,CAACP,MAAM,EAAEL,cAAc,CAAC,CAAC,CACvDgF,MAAM,CAAErE,IAAI,IAAKA,IAAI,CAACqC,SAAS,CAAC;AAEnC,IAAA,IAAIgF,SAAS,GAAGzE,IAAI,CAAC0E,GAAG,CAACrE,KAAK,CAAC;AAE/B,IAAA,OAAOmE,sBAAsB,CAAC7C,MAAM,GAAG,CAAC,EAAE;AACxC,MAAA,MAAMgD,mBAAmB,GAAGH,sBAAsB,CAACI,KAAK,EAAE;AAE1DrF,MAAAA,MAAM,CACJ,mDAAmD,EACnDoF,mBAAmB,EAAErF,KACvB,CAAC;MAED,MAAMuF,WAAW,GAAG7E,IAAI,CAAC8E,GAAG,CAACL,SAAS,EAAEE,mBAAmB,CAACjF,YAAY,CAAC;MAEzEyE,iBAAiB,CAAC7E,KAAK,IAAIuF,WAAW;MACtCF,mBAAmB,CAACrF,KAAK,IAAIuF,WAAW;AACxCJ,MAAAA,SAAS,IAAII,WAAW;AAC1B;AACF;AACF,CAAC,CAAA,EAAA7C,YAAA,GAAAtB,yBAAA,CAAAkB,OAAA,CAAAjB,SAAA,EAAA,uBAAA,EAAA,CA7JEC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;EAAAC,WAAA,EAAA;AAAA,CAAAiB,CAAAA,EAAAA,YAAA,GAAAvB,yBAAA,CAAAkB,OAAA,CAAAjB,SAAA,2BACPC,OAAO,CAAA,EAAA;EAAAC,YAAA,EAAA,IAAA;EAAAC,UAAA,EAAA,IAAA;EAAAC,QAAA,EAAA,IAAA;EAAAC,WAAA,EAAA;AAAA,CAAA,CAAA,EAAAN,yBAAA,CAAAkB,OAAA,CAAAjB,SAAA,oBA+CPQ,MAAM,CAAA,EAAAxC,MAAA,CAAAuC,wBAAA,CAAAU,OAAA,CAAAjB,SAAA,EAAA,eAAA,CAAA,EAAAiB,OAAA,CAAAjB,SAAA,CAAAD,EAAAA,yBAAA,CAAAkB,OAAA,CAAAjB,SAAA,EAAA,OAAA,EAAA,CAcNQ,MAAM,CAAAxC,EAAAA,MAAA,CAAAuC,wBAAA,CAAAU,OAAA,CAAAjB,SAAA,EAAAiB,OAAAA,CAAAA,EAAAA,OAAA,CAAAjB,SAAA,CAAA,EAAAD,yBAAA,CAAAkB,OAAA,CAAAjB,SAAA,EASNQ,eAAAA,EAAAA,CAAAA,MAAM,GAAAxC,MAAA,CAAAuC,wBAAA,CAAAU,OAAA,CAAAjB,SAAA,oBAAAiB,OAAA,CAAAjB,SAAA,CAAAD,EAAAA,yBAAA,CAAAkB,OAAA,CAAAjB,SAAA,EAAA,cAAA,EAAA,CAoBNQ,MAAM,CAAA,EAAAxC,MAAA,CAAAuC,wBAAA,CAAAU,OAAA,CAAAjB,SAAA,EAAA,cAAA,CAAA,EAAAiB,OAAA,CAAAjB,SAAA,GAAAiB,OAAA;;AAoET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA,SAAAW,qBAAAA,CAAAwC,KAAA,EA3I0B;EACtB,OAAOlF,OAAO,CAACmF,GAAG,CAACD,KAAA,CAAK/H,KAAK,EAAEP,cAAc,CAAC;AAChD;AAqJF,SAASiB,cAAcA,CAACR,OAAoB,EAAEF,KAAY,EAAE;AAC1D,EAAA,MAAMiI,QAAQ,GAAGC,WAAW,CAAChI,OAAO,EAAEF,KAAK,CAAC;AAE5CiI,EAAAA,QAAQ,CAACE,OAAO,CAACjI,OAAO,CAAC;AAEzB,EAAA,OAAO,MAAM;AACX+H,IAAAA,QAAQ,CAACG,SAAS,CAAClI,OAAO,CAAC;GAC5B;AACH;AAEA,MAAMmI,KAAK,GAAG,IAAIC,OAAO,EAA+B;;AAExD;AACA;AACA;AACA;AACA;AACA,SAASJ,WAAWA,CAAChI,OAAoB,EAAEF,KAAY,EAAkB;AACvE,EAAA,IAAI2F,QAAQ,GAAG0C,KAAK,CAAChG,GAAG,CAACnC,OAAO,CAAC;EAEjC,IAAIyF,QAAQ,EAAE,OAAOA,QAAQ;AAE7BA,EAAAA,QAAQ,GAAG,IAAI4C,cAAc,CAAE3G,OAA8B,IAAK;IAChE,IAAI4G,WAAW,CAACxI,KAAK,CAAC,IAAIyI,YAAY,CAACzI,KAAK,CAAC,EAAE;AAC7C,MAAA;AACF;AAEA,IAAA,KAAK,MAAMoG,KAAK,IAAIxE,OAAO,EAAE;MAC3BxB,IAAI,CAACmB,QAAQ,CAACvB,KAAK,EAAEP,cAAc,CAAC,CAAC0G,aAAa,CAACC,KAAK,CAAC;AAC3D;AACF,GAAC,CAAC;AAEF,EAAA,OAAOT,QAAQ;AACjB;;;;"}
1
+ {"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-resizing/plugin.ts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { isDestroyed, isDestroying } from '@ember/destroyable';\nimport { action } from '@ember/object';\n\nimport { preferences } from '../../plugins/index.ts';\n\nimport { BasePlugin, columns, meta, options } from '../-private/base.ts';\nimport { applyStyles } from '../-private/utils.ts';\nimport {\n getAccurateClientHeight,\n getAccurateClientWidth,\n totalGapOf,\n} from './utils.ts';\n\nimport type { ColumnApi, PluginPreferences } from '../../plugins/index.ts';\nimport type { Column, Table } from '../../index.ts';\n\ninterface ColumnResizePreferences extends PluginPreferences {\n columns: {\n [columnKey: string]: {\n width?: number;\n };\n };\n}\n\ndeclare module '@universal-ember/table/plugins' {\n interface Registry {\n ColumnResizing?: ColumnResizePreferences;\n }\n}\n\nexport interface ColumnOptions {\n /**\n * Force a starting width\n * This may not be less than the minWidth\n */\n width?: number;\n /**\n * Default: 128px\n */\n minWidth?: number;\n /**\n * Flip if the column is resizable or not.\n * The default is whatever the table's plugin option is set to\n * (and then yet again true, if not set at all)\n */\n isResizable?: boolean;\n}\n\nexport interface TableOptions {\n /**\n * Toggle whether the table is able to be resized at all\n *\n * default :true\n */\n enabled?: boolean;\n\n /**\n * By default, each column's \"handle\" position is on the\n * left-hand side of the column.\n *\n * If, for style-reasons, you want to move it to the right,\n * this option should reflect that so that the calculations can be\n * updated to match the expected behavior of which column(s) grow/shrink\n *\n * Valid values are 'left' or 'right'\n */\n handlePosition?: string;\n}\n\ninterface Signature {\n Meta: {\n Column: ColumnMeta;\n Table: TableMeta;\n };\n Options: {\n Plugin: TableOptions;\n Column: ColumnOptions;\n };\n}\n\n/**\n * One instance of a plugin exists per table\n * but a plugin can have a \"Meta\" for each column\n */\nexport class ColumnResizing extends BasePlugin<Signature> {\n name = 'column-resizing';\n static features = ['columnWidth'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n };\n\n headerCellModifier = (element: HTMLElement, { column }: ColumnApi) => {\n const columnMeta = meta.forColumn(column, ColumnResizing);\n\n element.setAttribute('data-test-is-resizable', `${columnMeta.isResizable}`);\n\n applyStyles(element, columnMeta.style);\n };\n\n /**\n * This is what ends up calling resize when the browser changes\n * (assuming that the containing element's styles stretch to fill the space)\n *\n * Later, when container queries are more broadly supported, we'll want to watch\n * the container instead of the window to prevent unneeded updates (as a window can change\n * size without the container changing size)\n */\n containerModifier = resizeObserver;\n\n reset() {\n preferences.forAllColumns(this.table, ColumnResizing).delete('width');\n }\n}\n\nconst DEFAULT_COLUMN_OPTIONS = {\n minWidth: 128,\n};\n\nconst ALLOWED_COLUMN_OPTIONS = ['minWidth', 'width', 'isResizable'];\n\n/**\n * @private\n *\n * Contains resizable information for a particular column\n */\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n @tracked _width?: number;\n @tracked isResizing = false;\n\n get tableMeta() {\n return meta.forTable(this.column.table, ColumnResizing);\n }\n\n @cached\n get options() {\n const columnOptions = options.forColumn(this.column, ColumnResizing);\n const filteredOptions = Object.entries(columnOptions || {}).reduce(\n (result, [k, v]) => {\n if (ALLOWED_COLUMN_OPTIONS.includes(k)) {\n result[k] = v;\n }\n\n return result;\n },\n {} as Record<string, unknown>,\n ) as ColumnOptions;\n\n return {\n ...DEFAULT_COLUMN_OPTIONS,\n ...filteredOptions,\n };\n }\n\n get key() {\n return this.column.key;\n }\n\n get minWidth() {\n return this.options.minWidth;\n }\n\n get initialWidth() {\n const savedWidth = preferences\n .forColumn(this.column, ColumnResizing)\n .get('width');\n\n if (!savedWidth) {\n return this.options.width;\n }\n\n if (typeof savedWidth !== 'string') {\n assert(\n 'saved width must be a number or string',\n typeof savedWidth === 'number',\n );\n return savedWidth;\n }\n\n return parseInt(savedWidth, 10);\n }\n\n get canShrink() {\n return this.width && this.width > this.minWidth;\n }\n\n get roomToShrink() {\n return this.width ? this.width - this.minWidth : 0;\n }\n\n get isResizable() {\n return this.options.isResizable ?? this.tableMeta.isResizable;\n }\n\n get hasResizeHandle() {\n const previous = columns.previous(this.column);\n\n if (!previous) return false;\n\n return (\n this.isResizable && meta.forColumn(previous, ColumnResizing).isResizable\n );\n }\n\n get width() {\n let width = this._width ?? this.initialWidth;\n\n if (!width) {\n const { defaultColumnWidth } = this.tableMeta;\n\n width = defaultColumnWidth\n ? Math.max(defaultColumnWidth, this.minWidth)\n : this.minWidth;\n }\n\n return width;\n }\n\n set width(value) {\n this._width = value;\n }\n\n get style() {\n const styles: Partial<Pick<CSSStyleDeclaration, 'width' | 'minWidth'>> = {};\n\n if (this.width) styles.width = `${this.width}px`;\n if (this.minWidth) styles.minWidth = `${this.minWidth}px`;\n\n return styles;\n }\n\n @action\n resize(delta: number) {\n this.tableMeta.resizeColumn(this.column, delta);\n }\n\n @action\n save() {\n this.tableMeta.saveColWidths(this.tableMeta.visibleColumnMetas);\n }\n}\n\n/**\n * @private\n *\n * individual column width must exclude:\n * - padding\n * - margin\n * - gap (partial)\n * - any other positioning offsets\n *\n * Otherwise the table will infinitely resize itself\n */\nfunction distributeDelta(delta: number, visibleColumns: Column[]) {\n if (delta === 0) return;\n\n const metas = visibleColumns.map((column) =>\n meta.forColumn(column, ColumnResizing),\n );\n\n const resizableMetas = metas.filter(\n (meta) => meta.isResizable && (delta < 0 ? meta.canShrink : true),\n );\n\n const columnDelta = delta / resizableMetas.length;\n\n for (const meta of resizableMetas) {\n assert('cannot resize a column that does not have a width', meta.width);\n meta.width = Math.max(meta.width + columnDelta, meta.minWidth);\n }\n}\n\n/**\n * @private\n *\n * Contains resizable and width information regarding the table as a whole\n */\nexport class TableMeta {\n constructor(private table: Table) {}\n\n @tracked scrollContainerHeight?: number;\n @tracked scrollContainerWidth?: number;\n\n get options() {\n return options.forTable(this.table, ColumnResizing);\n }\n\n get isResizable() {\n return this.options?.enabled ?? true;\n }\n\n get defaultColumnWidth() {\n if (!this.scrollContainerWidth) return;\n\n return (\n (this.scrollContainerWidth - this.totalInitialColumnWidths) /\n this.columnsWithoutInitialWidth.length\n );\n }\n\n get #availableColumns() {\n return columns.for(this.table, ColumnResizing);\n }\n\n get visibleColumnMetas() {\n return this.#availableColumns.map((column) =>\n meta.forColumn(column, ColumnResizing),\n );\n }\n\n get totalInitialColumnWidths() {\n return this.visibleColumnMetas.reduce(\n (acc, meta) => (acc += meta.initialWidth ?? 0),\n 0,\n );\n }\n\n get columnsWithoutInitialWidth() {\n return this.visibleColumnMetas.filter((meta) => !meta.initialWidth);\n }\n\n get totalVisibleColumnsWidth() {\n return this.visibleColumnMetas.reduce(\n (acc, column) => (acc += column.width ?? 0),\n 0,\n );\n }\n\n @action\n saveColWidths(visibleColumnMetas: ColumnMeta[]) {\n const tablePrefs = this.table.preferences;\n\n for (const column of visibleColumnMetas) {\n const existing = tablePrefs.storage.forPlugin('ColumnResizing');\n const columnPrefs = existing.forColumn(column.key);\n\n columnPrefs.set('width', column.width.toString());\n }\n\n tablePrefs.persist();\n }\n\n @action\n reset() {\n if (!this.scrollContainerWidth) return;\n\n for (const column of this.visibleColumnMetas) {\n column._width = undefined;\n }\n }\n\n @action\n onTableResize(entry: ResizeObserverEntry) {\n assert(\n 'scroll container element must be an HTMLElement',\n entry.target instanceof HTMLElement,\n );\n\n this.scrollContainerWidth = getAccurateClientWidth(entry.target);\n this.scrollContainerHeight = getAccurateClientHeight(entry.target);\n\n // TODO: extract this to card-list and remove it from the plugin\n // card-list will provide its own column-resizing plugin\n // by sub-classing this one, and defining its own way of calculating the \"diff\"\n const totalGap = totalGapOf(entry.target.querySelector('[role=\"row\"]'));\n const diff =\n this.scrollContainerWidth - this.totalVisibleColumnsWidth - totalGap;\n\n distributeDelta(diff, this.#availableColumns);\n }\n\n @action\n resizeColumn<DataType = unknown>(column: Column<DataType>, delta: number) {\n if (delta === 0) return;\n\n /**\n * When the delta is negative, we are dragging to the next\n * when positive, we are dragging to the right\n * when dragging to the right, we want to grow the column\n * when dragging to the left, we grow the \"next\" column,\n * which shrinks the column we're dragging\n *\n * This assumes the resize handle for any column is on the right-hand\n * side of the column header\n *\n * If the resize handle were on the left-hand side of the column header\n * we'd want the column.next to be column.previous\n *\n * This is CSS dependent, and can be configured in plugin\n * options\n */\n const isDraggingRight = delta > 0;\n const position = this.options?.handlePosition ?? 'left';\n\n let growingColumn: Column<DataType> | null | undefined;\n\n if (position === 'right') {\n growingColumn = isDraggingRight ? columns.next(column) : column;\n } else {\n growingColumn = isDraggingRight ? columns.previous(column) : column;\n }\n\n if (!growingColumn) return;\n\n const growingColumnMeta = meta.forColumn(growingColumn, ColumnResizing);\n\n assert(\n 'cannot resize a column that does not have a width',\n growingColumnMeta.width,\n );\n\n const shrinkableColumns =\n delta > 0\n ? columns.after(growingColumn)\n : columns.before(growingColumn).reverse();\n\n const shrinkableColumnsMetas = shrinkableColumns\n .map((column) => meta.forColumn(column, ColumnResizing))\n .filter((meta) => meta.canShrink);\n\n let remainder = Math.abs(delta);\n\n while (shrinkableColumnsMetas.length > 0) {\n const shrinkingColumnMeta = shrinkableColumnsMetas.shift();\n\n assert(\n 'cannot resize a column that does not have a width',\n shrinkingColumnMeta?.width,\n );\n\n const actualDelta = Math.min(remainder, shrinkingColumnMeta.roomToShrink);\n\n growingColumnMeta.width += actualDelta;\n shrinkingColumnMeta.width -= actualDelta;\n remainder -= actualDelta;\n }\n }\n}\n\n/**\n * @private\n * included in the same file as the plugin due to circular dependency\n *\n * This goes on the containing element\n *\n * @example\n * ```hbs\n * <div {{resizeObserver @table}}>\n * <table>\n * ```\n */\nfunction resizeObserver(element: HTMLElement, table: Table) {\n const observer = getObserver(element, table);\n\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n };\n}\n\nconst CACHE = new WeakMap<HTMLElement, ResizeObserver>();\n\n/**\n * This is technically \"inefficient\" as you don't want too many resize\n * observers on a page, but tables are so big, that I don't see too many use cases\n * where you'd have 10+ tables on a page\n */\nfunction getObserver(element: HTMLElement, table: Table): ResizeObserver {\n let existing = CACHE.get(element);\n\n if (existing) return existing;\n\n existing = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n if (isDestroyed(table) || isDestroying(table)) {\n return;\n }\n\n for (const entry of entries) {\n meta.forTable(table, ColumnResizing).onTableResize(entry);\n }\n });\n\n return existing;\n}\n"],"names":["ColumnResizing","BasePlugin","constructor","args","_defineProperty","column","ColumnMeta","table","TableMeta","element","columnMeta","meta","forColumn","setAttribute","isResizable","applyStyles","style","resizeObserver","reset","preferences","forAllColumns","delete","DEFAULT_COLUMN_OPTIONS","minWidth","ALLOWED_COLUMN_OPTIONS","_class","_initializerDefineProperty","_descriptor","_descriptor2","tableMeta","forTable","options","columnOptions","filteredOptions","Object","entries","reduce","result","k","v","includes","key","initialWidth","savedWidth","get","width","assert","parseInt","canShrink","roomToShrink","hasResizeHandle","previous","columns","_width","defaultColumnWidth","Math","max","value","styles","resize","delta","resizeColumn","save","saveColWidths","visibleColumnMetas","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","cached","getOwnPropertyDescriptor","action","distributeDelta","visibleColumns","metas","map","resizableMetas","filter","columnDelta","length","_class2","_TableMeta_brand","WeakSet","_classPrivateMethodInitSpec","_descriptor3","_descriptor4","enabled","scrollContainerWidth","totalInitialColumnWidths","columnsWithoutInitialWidth","_classPrivateGetter","_get_availableColumns","acc","totalVisibleColumnsWidth","tablePrefs","existing","storage","forPlugin","columnPrefs","set","toString","persist","undefined","onTableResize","entry","target","HTMLElement","getAccurateClientWidth","scrollContainerHeight","getAccurateClientHeight","totalGap","totalGapOf","querySelector","diff","isDraggingRight","position","handlePosition","growingColumn","next","growingColumnMeta","shrinkableColumns","after","before","reverse","shrinkableColumnsMetas","remainder","abs","shrinkingColumnMeta","shift","actualDelta","min","_this","for","observer","getObserver","observe","unobserve","CACHE","WeakMap","ResizeObserver","isDestroyed","isDestroying"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../src/plugins/column-visibility/helpers.ts"],"sourcesContent":["import { meta } from '../-private/base.ts';\nimport { ColumnVisibility } from './plugin.ts';\n\nimport type { Column } from '../../index.ts';\n\n/**\n * Hide a column\n */\nexport const hide = (column: Column) =>\n meta.forColumn(column, ColumnVisibility).hide();\n\n/**\n * Show a column\n */\nexport const show = (column: Column) =>\n meta.forColumn(column, ColumnVisibility).show();\n\n/**\n * Ask if a column is presently supposed to be visible\n */\nexport const isVisible = (column: Column) =>\n meta.forColumn(column, ColumnVisibility).isVisible;\n\n/**\n * Ask if a column is presently supposed to be hidden\n */\nexport const isHidden = (column: Column) =>\n meta.forColumn(column, ColumnVisibility).isHidden;\n"],"names":["hide","column","meta","forColumn","ColumnVisibility","show","isVisible","isHidden"],"mappings":";;;AAKA;AACA;AACA;MACaA,IAAI,GAAIC,MAAc,IACjCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACJ,IAAI;;AAE/C;AACA;AACA;MACaK,IAAI,GAAIJ,MAAc,IACjCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACC,IAAI;;AAE/C;AACA;AACA;AACaC,MAAAA,SAAS,GAAIL,MAAc,IACtCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACE;;AAE3C;AACA;AACA;AACaC,MAAAA,QAAQ,GAAIN,MAAc,IACrCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACG;;;;"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/plugins/column-visibility/helpers.ts"],"sourcesContent":["import { meta } from '../-private/base.ts';\nimport { ColumnVisibility } from './plugin.ts';\n\nimport type { Column } from '../../index.ts';\n\n/**\n * Hide a column\n */\nexport const hide = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, ColumnVisibility).hide();\n\n/**\n * Show a column\n */\nexport const show = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, ColumnVisibility).show();\n\n/**\n * Ask if a column is presently supposed to be visible\n */\nexport const isVisible = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, ColumnVisibility).isVisible;\n\n/**\n * Ask if a column is presently supposed to be hidden\n */\nexport const isHidden = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, ColumnVisibility).isHidden;\n"],"names":["hide","column","meta","forColumn","ColumnVisibility","show","isVisible","isHidden"],"mappings":";;;AAKA;AACA;AACA;MACaA,IAAI,GAAwBC,MAAwB,IAC/DC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACJ,IAAI;;AAE/C;AACA;AACA;MACaK,IAAI,GAAwBJ,MAAwB,IAC/DC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACC,IAAI;;AAE/C;AACA;AACA;AACaC,MAAAA,SAAS,GAAwBL,MAAwB,IACpEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACE;;AAE3C;AACA;AACA;AACaC,MAAAA,QAAQ,GAAwBN,MAAwB,IACnEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,gBAAgB,CAAC,CAACG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../src/plugins/data-sorting/helpers.ts"],"sourcesContent":["import { meta } from '../-private/base.ts';\nimport { Sorting } from './plugin.ts';\n\nimport type { Column } from '../../index.ts';\n\n/**\n * Query a specific column's current sort direction\n */\nexport const sortDirection = (column: Column) =>\n meta.forColumn(column, Sorting).sortDirection;\n\n/**\n * Ask if a column is sortable\n */\nexport const isSortable = (column: Column) =>\n meta.forColumn(column, Sorting).isSortable;\n\n/**\n * Ask if a column is ascending\n */\nexport const isAscending = (column: Column) =>\n meta.forColumn(column, Sorting).isAscending;\n\n/**\n * Ask if a column is sorted descending\n */\nexport const isDescending = (column: Column) =>\n meta.forColumn(column, Sorting).isDescending;\n\n/**\n * Ask if a column is not sorted\n */\nexport const isUnsorted = (column: Column) =>\n meta.forColumn(column, Sorting).isUnsorted;\n\n/**\n * Sort the specified column's data using a tri-toggle.\n *\n * States go in this order:\n * Ascending => None => Descending\n * ⬑ ---------- <= ---------- ↲\n */\nexport const sort = (column: Column) =>\n meta.forTable(column.table, Sorting).handleSort(column);\n\n/**\n * Toggle a column between descending and not unsorted states\n */\nexport const sortDescending = (column: Column) =>\n meta.forTable(column.table, Sorting).toggleDescending(column);\n\n/**\n * Toggle a column between ascending and not unsorted states\n */\nexport const sortAscending = (column: Column) =>\n meta.forTable(column.table, Sorting).toggleAscending(column);\n"],"names":["sortDirection","column","meta","forColumn","Sorting","isSortable","isAscending","isDescending","isUnsorted","sort","forTable","table","handleSort","sortDescending","toggleDescending","sortAscending","toggleAscending"],"mappings":";;;AAKA;AACA;AACA;AACaA,MAAAA,aAAa,GAAIC,MAAc,IAC1CC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACJ;;AAElC;AACA;AACA;AACaK,MAAAA,UAAU,GAAIJ,MAAc,IACvCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACC;;AAElC;AACA;AACA;AACaC,MAAAA,WAAW,GAAIL,MAAc,IACxCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACE;;AAElC;AACA;AACA;AACaC,MAAAA,YAAY,GAAIN,MAAc,IACzCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACG;;AAElC;AACA;AACA;AACaC,MAAAA,UAAU,GAAIP,MAAc,IACvCC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACI;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;MACaC,IAAI,GAAIR,MAAc,IACjCC,IAAI,CAACQ,QAAQ,CAACT,MAAM,CAACU,KAAK,EAAEP,OAAO,CAAC,CAACQ,UAAU,CAACX,MAAM;;AAExD;AACA;AACA;MACaY,cAAc,GAAIZ,MAAc,IAC3CC,IAAI,CAACQ,QAAQ,CAACT,MAAM,CAACU,KAAK,EAAEP,OAAO,CAAC,CAACU,gBAAgB,CAACb,MAAM;;AAE9D;AACA;AACA;MACac,aAAa,GAAId,MAAc,IAC1CC,IAAI,CAACQ,QAAQ,CAACT,MAAM,CAACU,KAAK,EAAEP,OAAO,CAAC,CAACY,eAAe,CAACf,MAAM;;;;"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/plugins/data-sorting/helpers.ts"],"sourcesContent":["import { meta } from '../-private/base.ts';\nimport { Sorting } from './plugin.ts';\n\nimport type { Column } from '../../index.ts';\n\n/**\n * Query a specific column's current sort direction\n */\nexport const sortDirection = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, Sorting).sortDirection;\n\n/**\n * Ask if a column is sortable\n */\nexport const isSortable = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, Sorting).isSortable;\n\n/**\n * Ask if a column is ascending\n */\nexport const isAscending = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, Sorting).isAscending;\n\n/**\n * Ask if a column is sorted descending\n */\nexport const isDescending = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, Sorting).isDescending;\n\n/**\n * Ask if a column is not sorted\n */\nexport const isUnsorted = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, Sorting).isUnsorted;\n\n/**\n * Sort the specified column's data using a tri-toggle.\n *\n * States go in this order:\n * Ascending => None => Descending\n * ⬑ ---------- <= ---------- ↲\n */\nexport const sort = <DataType = unknown>(column: Column<DataType>) =>\n meta.forTable(column.table, Sorting).handleSort(column);\n\n/**\n * Toggle a column between descending and not unsorted states\n */\nexport const sortDescending = <DataType = unknown>(column: Column<DataType>) =>\n meta.forTable(column.table, Sorting).toggleDescending(column);\n\n/**\n * Toggle a column between ascending and not unsorted states\n */\nexport const sortAscending = <DataType = unknown>(column: Column<DataType>) =>\n meta.forTable(column.table, Sorting).toggleAscending(column);\n"],"names":["sortDirection","column","meta","forColumn","Sorting","isSortable","isAscending","isDescending","isUnsorted","sort","forTable","table","handleSort","sortDescending","toggleDescending","sortAscending","toggleAscending"],"mappings":";;;AAKA;AACA;AACA;AACaA,MAAAA,aAAa,GAAwBC,MAAwB,IACxEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACJ;;AAElC;AACA;AACA;AACaK,MAAAA,UAAU,GAAwBJ,MAAwB,IACrEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACC;;AAElC;AACA;AACA;AACaC,MAAAA,WAAW,GAAwBL,MAAwB,IACtEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACE;;AAElC;AACA;AACA;AACaC,MAAAA,YAAY,GAAwBN,MAAwB,IACvEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACG;;AAElC;AACA;AACA;AACaC,MAAAA,UAAU,GAAwBP,MAAwB,IACrEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,OAAO,CAAC,CAACI;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;MACaC,IAAI,GAAwBR,MAAwB,IAC/DC,IAAI,CAACQ,QAAQ,CAACT,MAAM,CAACU,KAAK,EAAEP,OAAO,CAAC,CAACQ,UAAU,CAACX,MAAM;;AAExD;AACA;AACA;MACaY,cAAc,GAAwBZ,MAAwB,IACzEC,IAAI,CAACQ,QAAQ,CAACT,MAAM,CAACU,KAAK,EAAEP,OAAO,CAAC,CAACU,gBAAgB,CAACb,MAAM;;AAE9D;AACA;AACA;MACac,aAAa,GAAwBd,MAAwB,IACxEC,IAAI,CAACQ,QAAQ,CAACT,MAAM,CAACU,KAAK,EAAEP,OAAO,CAAC,CAACY,eAAe,CAACf,MAAM;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sources":["../../../src/plugins/data-sorting/plugin.ts"],"sourcesContent":["import { cached } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nimport { BasePlugin, meta, options } from '../-private/base.ts';\nimport { SortDirection } from './types.ts';\n\nimport type { Sort, SortItem } from './types.ts';\nimport type { ColumnApi, PluginPreferences } from '../../plugins/index.ts';\nimport type { Column, Table } from '../../index.ts';\n\ninterface SortingPreferences extends PluginPreferences {\n table: {\n sorts?: Sort[];\n };\n}\n\ndeclare module '@universal-ember/table/plugins' {\n interface Registry {\n Sorting?: SortingPreferences;\n sorting?: SortingPreferences;\n }\n}\n\nexport interface Signature<DataType = unknown> {\n Meta: {\n Column: ColumnMeta;\n Table: TableMeta;\n };\n Options: {\n Plugin: Options<DataType>;\n Column: ColumnOptions;\n };\n}\n\ninterface Options<DataType = unknown> {\n /**\n * Handler for interpreting sort requests from the headless table.\n *\n * Does not actually do the sorting.\n *\n * if omitted, the DataSorting plugin will disable itself\n */\n onSort?: (sorts: SortItem<DataType>[]) => void;\n /**\n * Provided sorts that the table should assume are true.\n *\n * if omitted, the DataSorting plugin will disable itself\n */\n sorts?: SortItem<DataType>[];\n}\n\ninterface ColumnOptions {\n /**\n * Opt in or out of sorting for a particular column.\n * Default is true.\n */\n isSortable?: boolean;\n /**\n * Use this key instead of the `key` on the column config.\n * This has no bearing on any behavior in the plugin, *other than*,\n * swapping out the `property`'s value on the `SortItem`s passed to\n * the table plugin config's `onSort` callback\n */\n sortProperty?: string;\n}\n\n/**\n * Manages basic data-sorting behaviors. Ascending -> Descending -> None\n *\n * This plugin requires a table plugin configuration, `onSort` for handling *how* sorting happens.\n * communicating back to the table that sorting has succeeded can be done by setting the `sorts`\n * property in the table plugin configuration.\n *\n * Note that this plugin doesn't actually sort the data, as data management is not the responsibility\n * of the table, but of the surrounding context providing the data to the table. So sorting can happen\n * client-side still, just in a component -- much the same way you'd handel sorting via API requests.\n *\n * This plugin is for *conveying* what the current sorts are, rather than _doing_ the sorting.\n */\nexport class Sorting<DataType = unknown> extends BasePlugin<\n Signature<DataType>\n> {\n name = 'data-sorting';\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n };\n\n headerCellModifier = (element: HTMLElement, { column }: ColumnApi) => {\n const columnMeta = meta.forColumn(column, Sorting);\n\n element.setAttribute('data-test-is-sortable', `${columnMeta.isSortable}`);\n element.setAttribute('aria-sort', `${columnMeta.sortDirection}`);\n };\n}\n\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n @cached\n get options() {\n return options.forColumn(this.column, Sorting);\n }\n\n get isSortable() {\n return this.options?.isSortable ?? this.tableMeta.isSortable;\n }\n\n get tableMeta() {\n return meta.forTable(this.column.table, Sorting);\n }\n\n get sortDirection() {\n const sort = this.tableMeta.sorts.find(\n (sort) => sort.property === this.sortProperty,\n );\n\n return sort?.direction ?? SortDirection.None;\n }\n\n get isAscending() {\n return this.sortDirection === SortDirection.Ascending;\n }\n\n get isDescending() {\n return this.sortDirection === SortDirection.Descending;\n }\n\n get isUnsorted() {\n return this.sortDirection === SortDirection.None;\n }\n\n get sortProperty() {\n return this.options?.sortProperty ?? this.column.config.key;\n }\n}\n\nexport class TableMeta {\n constructor(private table: Table) {}\n\n @cached\n get options() {\n return options.forTable(this.table, Sorting);\n }\n\n get sorts() {\n return this.options?.sorts ?? [];\n }\n\n get isSortable() {\n return Boolean(this.options?.onSort) && Boolean(this.options?.sorts);\n }\n\n get onSort() {\n return this.options?.onSort;\n }\n\n @action\n handleSort(column: Column) {\n const columnMeta = meta.forColumn(column, Sorting);\n\n if (!columnMeta.sortProperty) {\n return;\n }\n\n if (columnMeta.sortDirection === SortDirection.Ascending) {\n this.onSort?.([]);\n } else if (columnMeta.sortDirection === SortDirection.Descending) {\n this.onSort?.([\n {\n direction: SortDirection.Ascending,\n property: columnMeta.sortProperty,\n },\n ]);\n } else {\n this.onSort?.([\n {\n direction: SortDirection.Descending,\n property: columnMeta.sortProperty,\n },\n ]);\n }\n }\n\n @action\n toggleAscending(column: Column) {\n const columnMeta = meta.forColumn(column, Sorting);\n\n if (!columnMeta.sortProperty) {\n return;\n }\n\n if (columnMeta.sortDirection === SortDirection.Ascending) {\n return this.onSort?.([]);\n }\n\n this.onSort?.([\n { direction: SortDirection.Ascending, property: columnMeta.sortProperty },\n ]);\n }\n\n @action\n toggleDescending(column: Column) {\n const columnMeta = meta.forColumn(column, Sorting);\n\n if (!columnMeta.sortProperty) {\n return;\n }\n\n if (columnMeta.sortDirection === SortDirection.Descending) {\n return this.onSort?.([]);\n }\n\n this.onSort?.([\n {\n direction: SortDirection.Descending,\n property: columnMeta.sortProperty,\n },\n ]);\n }\n}\n"],"names":["Sorting","BasePlugin","constructor","args","_defineProperty","column","ColumnMeta","table","TableMeta","element","columnMeta","meta","forColumn","setAttribute","isSortable","sortDirection","_class","options","tableMeta","forTable","sort","sorts","find","property","sortProperty","direction","SortDirection","None","isAscending","Ascending","isDescending","Descending","isUnsorted","config","key","_applyDecoratedDescriptor","prototype","cached","Object","getOwnPropertyDescriptor","_class2","Boolean","onSort","handleSort","toggleAscending","toggleDescending","action"],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sources":["../../../src/plugins/data-sorting/plugin.ts"],"sourcesContent":["import { cached } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nimport { BasePlugin, meta, options } from '../-private/base.ts';\nimport { SortDirection } from './types.ts';\n\nimport type { Sort, SortItem } from './types.ts';\nimport type { ColumnApi, PluginPreferences } from '../../plugins/index.ts';\nimport type { Column, Table } from '../../index.ts';\n\ninterface SortingPreferences extends PluginPreferences {\n table: {\n sorts?: Sort[];\n };\n}\n\ndeclare module '@universal-ember/table/plugins' {\n interface Registry {\n Sorting?: SortingPreferences;\n sorting?: SortingPreferences;\n }\n}\n\nexport interface Signature<DataType = unknown> {\n Meta: {\n Column: ColumnMeta;\n Table: TableMeta;\n };\n Options: {\n Plugin: Options<DataType>;\n Column: ColumnOptions;\n };\n}\n\ninterface Options<DataType = unknown> {\n /**\n * Handler for interpreting sort requests from the headless table.\n *\n * Does not actually do the sorting.\n *\n * if omitted, the DataSorting plugin will disable itself\n */\n onSort?: (sorts: SortItem<DataType>[]) => void;\n /**\n * Provided sorts that the table should assume are true.\n *\n * if omitted, the DataSorting plugin will disable itself\n */\n sorts?: SortItem<DataType>[];\n}\n\ninterface ColumnOptions {\n /**\n * Opt in or out of sorting for a particular column.\n * Default is true.\n */\n isSortable?: boolean;\n /**\n * Use this key instead of the `key` on the column config.\n * This has no bearing on any behavior in the plugin, *other than*,\n * swapping out the `property`'s value on the `SortItem`s passed to\n * the table plugin config's `onSort` callback\n */\n sortProperty?: string;\n}\n\n/**\n * Manages basic data-sorting behaviors. Ascending -> Descending -> None\n *\n * This plugin requires a table plugin configuration, `onSort` for handling *how* sorting happens.\n * communicating back to the table that sorting has succeeded can be done by setting the `sorts`\n * property in the table plugin configuration.\n *\n * Note that this plugin doesn't actually sort the data, as data management is not the responsibility\n * of the table, but of the surrounding context providing the data to the table. So sorting can happen\n * client-side still, just in a component -- much the same way you'd handel sorting via API requests.\n *\n * This plugin is for *conveying* what the current sorts are, rather than _doing_ the sorting.\n */\nexport class Sorting<DataType = unknown> extends BasePlugin<\n Signature<DataType>\n> {\n name = 'data-sorting';\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n };\n\n headerCellModifier = (element: HTMLElement, { column }: ColumnApi) => {\n const columnMeta = meta.forColumn(column, Sorting);\n\n element.setAttribute('data-test-is-sortable', `${columnMeta.isSortable}`);\n element.setAttribute('aria-sort', `${columnMeta.sortDirection}`);\n };\n}\n\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n @cached\n get options() {\n return options.forColumn(this.column, Sorting);\n }\n\n get isSortable() {\n return this.options?.isSortable ?? this.tableMeta.isSortable;\n }\n\n get tableMeta() {\n return meta.forTable(this.column.table, Sorting);\n }\n\n get sortDirection() {\n const sort = this.tableMeta.sorts.find(\n (sort) => sort.property === this.sortProperty,\n );\n\n return sort?.direction ?? SortDirection.None;\n }\n\n get isAscending() {\n return this.sortDirection === SortDirection.Ascending;\n }\n\n get isDescending() {\n return this.sortDirection === SortDirection.Descending;\n }\n\n get isUnsorted() {\n return this.sortDirection === SortDirection.None;\n }\n\n get sortProperty() {\n return this.options?.sortProperty ?? this.column.config.key;\n }\n}\n\nexport class TableMeta {\n constructor(private table: Table) {}\n\n @cached\n get options() {\n return options.forTable(this.table, Sorting);\n }\n\n get sorts() {\n return this.options?.sorts ?? [];\n }\n\n get isSortable() {\n return Boolean(this.options?.onSort) && Boolean(this.options?.sorts);\n }\n\n get onSort() {\n return this.options?.onSort;\n }\n\n @action\n handleSort<DataType = unknown>(column: Column<DataType>) {\n const columnMeta = meta.forColumn(column, Sorting);\n\n if (!columnMeta.sortProperty) {\n return;\n }\n\n if (columnMeta.sortDirection === SortDirection.Ascending) {\n this.onSort?.([]);\n } else if (columnMeta.sortDirection === SortDirection.Descending) {\n this.onSort?.([\n {\n direction: SortDirection.Ascending,\n property: columnMeta.sortProperty,\n },\n ]);\n } else {\n this.onSort?.([\n {\n direction: SortDirection.Descending,\n property: columnMeta.sortProperty,\n },\n ]);\n }\n }\n\n @action\n toggleAscending<DataType = unknown>(column: Column<DataType>) {\n const columnMeta = meta.forColumn(column, Sorting);\n\n if (!columnMeta.sortProperty) {\n return;\n }\n\n if (columnMeta.sortDirection === SortDirection.Ascending) {\n return this.onSort?.([]);\n }\n\n this.onSort?.([\n { direction: SortDirection.Ascending, property: columnMeta.sortProperty },\n ]);\n }\n\n @action\n toggleDescending<DataType = unknown>(column: Column<DataType>) {\n const columnMeta = meta.forColumn(column, Sorting);\n\n if (!columnMeta.sortProperty) {\n return;\n }\n\n if (columnMeta.sortDirection === SortDirection.Descending) {\n return this.onSort?.([]);\n }\n\n this.onSort?.([\n {\n direction: SortDirection.Descending,\n property: columnMeta.sortProperty,\n },\n ]);\n }\n}\n"],"names":["Sorting","BasePlugin","constructor","args","_defineProperty","column","ColumnMeta","table","TableMeta","element","columnMeta","meta","forColumn","setAttribute","isSortable","sortDirection","_class","options","tableMeta","forTable","sort","sorts","find","property","sortProperty","direction","SortDirection","None","isAscending","Ascending","isDescending","Descending","isUnsorted","config","key","_applyDecoratedDescriptor","prototype","cached","Object","getOwnPropertyDescriptor","_class2","Boolean","onSort","handleSort","toggleAscending","toggleDescending","action"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@universal-ember/table",
3
- "version": "3.0.3",
3
+ "version": "3.0.4",
4
4
  "description": "An implementation of table behaviors for driving any table or table-like UI -- all without a UI (headless)",
5
5
  "keywords": [
6
6
  "ember-addon",
@@ -8,43 +8,50 @@ import type { Column, Table } from '../../index.ts';
8
8
  * Move the column one position to the left.
9
9
  * If the column is first, nothing will happen.
10
10
  */
11
- export const moveLeft = (column: Column) =>
11
+ export const moveLeft = <DataType = unknown>(column: Column<DataType>) =>
12
12
  meta.forColumn(column, ColumnReordering).moveLeft();
13
13
 
14
14
  /**
15
15
  * Move the column one position to the right.
16
16
  * If the column is last, nothing will happen.
17
17
  */
18
- export const moveRight = (column: Column) =>
18
+ export const moveRight = <DataType = unknown>(column: Column<DataType>) =>
19
19
  meta.forColumn(column, ColumnReordering).moveRight();
20
20
 
21
21
  /**
22
22
  * Override all column positions at once.
23
23
  */
24
- export const setColumnOrder = (table: Table, order: ColumnOrder) => {
25
- return meta.forTable(table, ColumnReordering).setOrder(order);
26
- };
24
+ export const setColumnOrder = <DataType = unknown>(
25
+ table: Table<DataType>,
26
+ order: ColumnOrder,
27
+ ) => meta.forTable(table, ColumnReordering).setOrder(order);
27
28
 
28
29
  /**
29
30
  * Ask if the column cannot move to the left
30
31
  */
31
- export const cannotMoveLeft = (column: Column) =>
32
+ export const cannotMoveLeft = <DataType = unknown>(column: Column<DataType>) =>
32
33
  meta.forColumn(column, ColumnReordering).cannotMoveLeft;
33
34
 
34
35
  /**
35
36
  * Ask if the column cannot move to the right
36
37
  */
37
- export const cannotMoveRight = (column: Column) =>
38
+ export const cannotMoveRight = <DataType = unknown>(column: Column<DataType>) =>
38
39
  meta.forColumn(column, ColumnReordering).cannotMoveRight;
39
40
 
40
41
  /**
41
42
  * Ask if the column can move to the left
43
+ * (If your plugin doesn't expose `canMoveLeft`, use `!cannotMoveLeft`.)
42
44
  */
43
- export const canMoveLeft = (column: Column) =>
44
- meta.forColumn(column, ColumnReordering).cannotMoveLeft;
45
+ export const canMoveLeft = <DataType = unknown>(column: Column<DataType>) =>
46
+ // Prefer this if available:
47
+ // meta.forColumn(column, ColumnReordering).canMoveLeft
48
+ !meta.forColumn(column, ColumnReordering).cannotMoveLeft;
45
49
 
46
50
  /**
47
51
  * Ask if the column can move to the right
52
+ * (If your plugin doesn't expose `canMoveRight`, use `!cannotMoveRight`.)
48
53
  */
49
- export const canMoveRight = (column: Column) =>
50
- meta.forColumn(column, ColumnReordering).cannotMoveRight;
54
+ export const canMoveRight = <DataType = unknown>(column: Column<DataType>) =>
55
+ // Prefer this if available:
56
+ // meta.forColumn(column, ColumnReordering).canMoveRight
57
+ !meta.forColumn(column, ColumnReordering).cannotMoveRight;
@@ -122,7 +122,7 @@ export class TableMeta {
122
122
  * Get the curret order/position of a column
123
123
  */
124
124
  @action
125
- getPosition(column: Column) {
125
+ getPosition<DataType = unknown>(column: Column<DataType>) {
126
126
  return this.columnOrder.get(column.key);
127
127
  }
128
128
 
@@ -130,7 +130,10 @@ export class TableMeta {
130
130
  * Swap the column with the column at `newPosition`
131
131
  */
132
132
  @action
133
- setPosition(column: Column, newPosition: number) {
133
+ setPosition<DataType = unknown>(
134
+ column: Column<DataType>,
135
+ newPosition: number,
136
+ ) {
134
137
  return this.columnOrder.swapWith(column.key, newPosition);
135
138
  }
136
139
 
@@ -24,9 +24,11 @@ const waiter = buildWaiter('ColumnResizing#ResizeHandle');
24
24
  *
25
25
  */
26
26
 
27
- class ResizeHandle extends Modifier<{ Args: { Positional: [Column] } }> {
27
+ class ResizeHandle<DataType = unknown> extends Modifier<{
28
+ Args: { Positional: [Column<DataType>] };
29
+ }> {
28
30
  declare dragHandle: HTMLElement;
29
- declare column: Column;
31
+ declare column: Column<DataType>;
30
32
  declare meta: ColumnMeta;
31
33
 
32
34
  // Pointer
@@ -45,7 +47,7 @@ class ResizeHandle extends Modifier<{ Args: { Positional: [Column] } }> {
45
47
  token?: unknown;
46
48
 
47
49
  isSetup = false;
48
- modify(element: Element, [column]: [Column]) {
50
+ modify(element: Element, [column]: [Column<DataType>]) {
49
51
  this.column = column;
50
52
  this.meta = meta.forColumn(column, ColumnResizing);
51
53
  this.dragHandle = element as HTMLElement;
@@ -277,4 +279,4 @@ class ResizeHandle extends Modifier<{ Args: { Positional: [Column] } }> {
277
279
  * https://limber.glimdown.com/
278
280
  * See: "resize-handle" on Limber's GitHub
279
281
  */
280
- export const resizeHandle = ResizeHandle;
282
+ export const resizeHandle: typeof ResizeHandle = ResizeHandle;
@@ -15,13 +15,13 @@ import type { Column } from '../../index.ts';
15
15
  * be marked as isResizing, because this is a user-scoped question:
16
16
  * "Is the user directly resizing this column?"
17
17
  */
18
- export const isResizing = (column: Column) =>
18
+ export const isResizing = <DataType = unknown>(column: Column<DataType>) =>
19
19
  meta.forColumn(column, ColumnResizing).isResizing;
20
20
 
21
21
  /**
22
22
  * Does the column have room to shrink?
23
23
  */
24
- export const canShrink = (column: Column) =>
24
+ export const canShrink = <DataType = unknown>(column: Column<DataType>) =>
25
25
  meta.forColumn(column, ColumnResizing).canShrink;
26
26
 
27
27
  /**
@@ -31,7 +31,7 @@ export const canShrink = (column: Column) =>
31
31
  * - if resizing is enabled for the whole table
32
32
  * - or if we're asking about the first column (resize handles may only be "between" columns)
33
33
  */
34
- export const hasResizeHandle = (column: Column) =>
34
+ export const hasResizeHandle = <DataType = unknown>(column: Column<DataType>) =>
35
35
  meta.forColumn(column, ColumnResizing).hasResizeHandle;
36
36
 
37
37
  /**
@@ -375,7 +375,7 @@ export class TableMeta {
375
375
  }
376
376
 
377
377
  @action
378
- resizeColumn(column: Column, delta: number) {
378
+ resizeColumn<DataType = unknown>(column: Column<DataType>, delta: number) {
379
379
  if (delta === 0) return;
380
380
 
381
381
  /**
@@ -397,7 +397,7 @@ export class TableMeta {
397
397
  const isDraggingRight = delta > 0;
398
398
  const position = this.options?.handlePosition ?? 'left';
399
399
 
400
- let growingColumn: Column | null | undefined;
400
+ let growingColumn: Column<DataType> | null | undefined;
401
401
 
402
402
  if (position === 'right') {
403
403
  growingColumn = isDraggingRight ? columns.next(column) : column;
@@ -6,23 +6,23 @@ import type { Column } from '../../index.ts';
6
6
  /**
7
7
  * Hide a column
8
8
  */
9
- export const hide = (column: Column) =>
9
+ export const hide = <DataType = unknown>(column: Column<DataType>) =>
10
10
  meta.forColumn(column, ColumnVisibility).hide();
11
11
 
12
12
  /**
13
13
  * Show a column
14
14
  */
15
- export const show = (column: Column) =>
15
+ export const show = <DataType = unknown>(column: Column<DataType>) =>
16
16
  meta.forColumn(column, ColumnVisibility).show();
17
17
 
18
18
  /**
19
19
  * Ask if a column is presently supposed to be visible
20
20
  */
21
- export const isVisible = (column: Column) =>
21
+ export const isVisible = <DataType = unknown>(column: Column<DataType>) =>
22
22
  meta.forColumn(column, ColumnVisibility).isVisible;
23
23
 
24
24
  /**
25
25
  * Ask if a column is presently supposed to be hidden
26
26
  */
27
- export const isHidden = (column: Column) =>
27
+ export const isHidden = <DataType = unknown>(column: Column<DataType>) =>
28
28
  meta.forColumn(column, ColumnVisibility).isHidden;
@@ -6,31 +6,31 @@ import type { Column } from '../../index.ts';
6
6
  /**
7
7
  * Query a specific column's current sort direction
8
8
  */
9
- export const sortDirection = (column: Column) =>
9
+ export const sortDirection = <DataType = unknown>(column: Column<DataType>) =>
10
10
  meta.forColumn(column, Sorting).sortDirection;
11
11
 
12
12
  /**
13
13
  * Ask if a column is sortable
14
14
  */
15
- export const isSortable = (column: Column) =>
15
+ export const isSortable = <DataType = unknown>(column: Column<DataType>) =>
16
16
  meta.forColumn(column, Sorting).isSortable;
17
17
 
18
18
  /**
19
19
  * Ask if a column is ascending
20
20
  */
21
- export const isAscending = (column: Column) =>
21
+ export const isAscending = <DataType = unknown>(column: Column<DataType>) =>
22
22
  meta.forColumn(column, Sorting).isAscending;
23
23
 
24
24
  /**
25
25
  * Ask if a column is sorted descending
26
26
  */
27
- export const isDescending = (column: Column) =>
27
+ export const isDescending = <DataType = unknown>(column: Column<DataType>) =>
28
28
  meta.forColumn(column, Sorting).isDescending;
29
29
 
30
30
  /**
31
31
  * Ask if a column is not sorted
32
32
  */
33
- export const isUnsorted = (column: Column) =>
33
+ export const isUnsorted = <DataType = unknown>(column: Column<DataType>) =>
34
34
  meta.forColumn(column, Sorting).isUnsorted;
35
35
 
36
36
  /**
@@ -40,17 +40,17 @@ export const isUnsorted = (column: Column) =>
40
40
  * Ascending => None => Descending
41
41
  * ⬑ ---------- <= ---------- ↲
42
42
  */
43
- export const sort = (column: Column) =>
43
+ export const sort = <DataType = unknown>(column: Column<DataType>) =>
44
44
  meta.forTable(column.table, Sorting).handleSort(column);
45
45
 
46
46
  /**
47
47
  * Toggle a column between descending and not unsorted states
48
48
  */
49
- export const sortDescending = (column: Column) =>
49
+ export const sortDescending = <DataType = unknown>(column: Column<DataType>) =>
50
50
  meta.forTable(column.table, Sorting).toggleDescending(column);
51
51
 
52
52
  /**
53
53
  * Toggle a column between ascending and not unsorted states
54
54
  */
55
- export const sortAscending = (column: Column) =>
55
+ export const sortAscending = <DataType = unknown>(column: Column<DataType>) =>
56
56
  meta.forTable(column.table, Sorting).toggleAscending(column);
@@ -157,7 +157,7 @@ export class TableMeta {
157
157
  }
158
158
 
159
159
  @action
160
- handleSort(column: Column) {
160
+ handleSort<DataType = unknown>(column: Column<DataType>) {
161
161
  const columnMeta = meta.forColumn(column, Sorting);
162
162
 
163
163
  if (!columnMeta.sortProperty) {
@@ -184,7 +184,7 @@ export class TableMeta {
184
184
  }
185
185
 
186
186
  @action
187
- toggleAscending(column: Column) {
187
+ toggleAscending<DataType = unknown>(column: Column<DataType>) {
188
188
  const columnMeta = meta.forColumn(column, Sorting);
189
189
 
190
190
  if (!columnMeta.sortProperty) {
@@ -201,7 +201,7 @@ export class TableMeta {
201
201
  }
202
202
 
203
203
  @action
204
- toggleDescending(column: Column) {
204
+ toggleDescending<DataType = unknown>(column: Column<DataType>) {
205
205
  const columnMeta = meta.forColumn(column, Sorting);
206
206
 
207
207
  if (!columnMeta.sortProperty) {