@universal-ember/table 3.6.0 → 3.6.1

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 (224) hide show
  1. package/package.json +1 -1
  2. package/src/plugins/column-reordering/plugin.ts +4 -6
  3. package/declarations/-private/-type-tests/plugin-properties.test.d.ts +0 -2
  4. package/declarations/-private/-type-tests/plugin-properties.test.d.ts.map +0 -1
  5. package/declarations/-private/-type-tests/plugin-with.test.d.ts +0 -2
  6. package/declarations/-private/-type-tests/plugin-with.test.d.ts.map +0 -1
  7. package/declarations/-private/-type-tests/plugins-accessors.test.d.ts +0 -2
  8. package/declarations/-private/-type-tests/plugins-accessors.test.d.ts.map +0 -1
  9. package/declarations/-private/-type-tests/plugins-signature-from.test.d.ts +0 -2
  10. package/declarations/-private/-type-tests/plugins-signature-from.test.d.ts.map +0 -1
  11. package/declarations/-private/-type-tests/plugins-signature-utils.test.d.ts +0 -2
  12. package/declarations/-private/-type-tests/plugins-signature-utils.test.d.ts.map +0 -1
  13. package/declarations/-private/-type-tests/table-api.test.d.ts +0 -2
  14. package/declarations/-private/-type-tests/table-api.test.d.ts.map +0 -1
  15. package/declarations/-private/-type-tests/table-config.test.d.ts +0 -2
  16. package/declarations/-private/-type-tests/table-config.test.d.ts.map +0 -1
  17. package/declarations/-private/column.d.ts +0 -18
  18. package/declarations/-private/column.d.ts.map +0 -1
  19. package/declarations/-private/ember-compat.d.ts +0 -8
  20. package/declarations/-private/ember-compat.d.ts.map +0 -1
  21. package/declarations/-private/interfaces/column.d.ts +0 -63
  22. package/declarations/-private/interfaces/column.d.ts.map +0 -1
  23. package/declarations/-private/interfaces/index.d.ts +0 -8
  24. package/declarations/-private/interfaces/index.d.ts.map +0 -1
  25. package/declarations/-private/interfaces/modifier.d.ts +0 -7
  26. package/declarations/-private/interfaces/modifier.d.ts.map +0 -1
  27. package/declarations/-private/interfaces/pagination.d.ts +0 -17
  28. package/declarations/-private/interfaces/pagination.d.ts.map +0 -1
  29. package/declarations/-private/interfaces/plugins.d.ts +0 -315
  30. package/declarations/-private/interfaces/plugins.d.ts.map +0 -1
  31. package/declarations/-private/interfaces/preferences.d.ts +0 -74
  32. package/declarations/-private/interfaces/preferences.d.ts.map +0 -1
  33. package/declarations/-private/interfaces/selection.d.ts +0 -36
  34. package/declarations/-private/interfaces/selection.d.ts.map +0 -1
  35. package/declarations/-private/interfaces/table.d.ts +0 -127
  36. package/declarations/-private/interfaces/table.d.ts.map +0 -1
  37. package/declarations/-private/js-helper.d.ts +0 -39
  38. package/declarations/-private/js-helper.d.ts.map +0 -1
  39. package/declarations/-private/preferences.d.ts +0 -47
  40. package/declarations/-private/preferences.d.ts.map +0 -1
  41. package/declarations/-private/private-types.d.ts +0 -6
  42. package/declarations/-private/private-types.d.ts.map +0 -1
  43. package/declarations/-private/row.d.ts +0 -12
  44. package/declarations/-private/row.d.ts.map +0 -1
  45. package/declarations/-private/table.d.ts +0 -136
  46. package/declarations/-private/table.d.ts.map +0 -1
  47. package/declarations/-private/utils.d.ts +0 -3
  48. package/declarations/-private/utils.d.ts.map +0 -1
  49. package/declarations/index.d.ts +0 -14
  50. package/declarations/index.d.ts.map +0 -1
  51. package/declarations/plugins/-private/base.d.ts +0 -281
  52. package/declarations/plugins/-private/base.d.ts.map +0 -1
  53. package/declarations/plugins/-private/utils.d.ts +0 -22
  54. package/declarations/plugins/-private/utils.d.ts.map +0 -1
  55. package/declarations/plugins/column-reordering/helpers.d.ts +0 -54
  56. package/declarations/plugins/column-reordering/helpers.d.ts.map +0 -1
  57. package/declarations/plugins/column-reordering/index.d.ts +0 -5
  58. package/declarations/plugins/column-reordering/index.d.ts.map +0 -1
  59. package/declarations/plugins/column-reordering/plugin.d.ts +0 -196
  60. package/declarations/plugins/column-reordering/plugin.d.ts.map +0 -1
  61. package/declarations/plugins/column-reordering/utils.d.ts +0 -8
  62. package/declarations/plugins/column-reordering/utils.d.ts.map +0 -1
  63. package/declarations/plugins/column-resizing/handle.d.ts +0 -128
  64. package/declarations/plugins/column-resizing/handle.d.ts.map +0 -1
  65. package/declarations/plugins/column-resizing/helpers.d.ts +0 -40
  66. package/declarations/plugins/column-resizing/helpers.d.ts.map +0 -1
  67. package/declarations/plugins/column-resizing/index.d.ts +0 -6
  68. package/declarations/plugins/column-resizing/index.d.ts.map +0 -1
  69. package/declarations/plugins/column-resizing/plugin.d.ts +0 -172
  70. package/declarations/plugins/column-resizing/plugin.d.ts.map +0 -1
  71. package/declarations/plugins/column-resizing/resize-observer.d.ts +0 -14
  72. package/declarations/plugins/column-resizing/resize-observer.d.ts.map +0 -1
  73. package/declarations/plugins/column-resizing/utils.d.ts +0 -22
  74. package/declarations/plugins/column-resizing/utils.d.ts.map +0 -1
  75. package/declarations/plugins/column-visibility/helpers.d.ts +0 -18
  76. package/declarations/plugins/column-visibility/helpers.d.ts.map +0 -1
  77. package/declarations/plugins/column-visibility/index.d.ts +0 -5
  78. package/declarations/plugins/column-visibility/index.d.ts.map +0 -1
  79. package/declarations/plugins/column-visibility/plugin.d.ts +0 -64
  80. package/declarations/plugins/column-visibility/plugin.d.ts.map +0 -1
  81. package/declarations/plugins/data-sorting/helpers.d.ts +0 -38
  82. package/declarations/plugins/data-sorting/helpers.d.ts.map +0 -1
  83. package/declarations/plugins/data-sorting/index.d.ts +0 -7
  84. package/declarations/plugins/data-sorting/index.d.ts.map +0 -1
  85. package/declarations/plugins/data-sorting/plugin.d.ts +0 -102
  86. package/declarations/plugins/data-sorting/plugin.d.ts.map +0 -1
  87. package/declarations/plugins/data-sorting/types.d.ts +0 -23
  88. package/declarations/plugins/data-sorting/types.d.ts.map +0 -1
  89. package/declarations/plugins/index.d.ts +0 -6
  90. package/declarations/plugins/index.d.ts.map +0 -1
  91. package/declarations/plugins/metadata/helpers.d.ts +0 -4
  92. package/declarations/plugins/metadata/helpers.d.ts.map +0 -1
  93. package/declarations/plugins/metadata/index.d.ts +0 -5
  94. package/declarations/plugins/metadata/index.d.ts.map +0 -1
  95. package/declarations/plugins/metadata/plugin.d.ts +0 -25
  96. package/declarations/plugins/metadata/plugin.d.ts.map +0 -1
  97. package/declarations/plugins/row-selection/helpers.d.ts +0 -6
  98. package/declarations/plugins/row-selection/helpers.d.ts.map +0 -1
  99. package/declarations/plugins/row-selection/index.d.ts +0 -5
  100. package/declarations/plugins/row-selection/index.d.ts.map +0 -1
  101. package/declarations/plugins/row-selection/plugin.d.ts +0 -80
  102. package/declarations/plugins/row-selection/plugin.d.ts.map +0 -1
  103. package/declarations/plugins/sticky-columns/helpers.d.ts +0 -17
  104. package/declarations/plugins/sticky-columns/helpers.d.ts.map +0 -1
  105. package/declarations/plugins/sticky-columns/index.d.ts +0 -5
  106. package/declarations/plugins/sticky-columns/index.d.ts.map +0 -1
  107. package/declarations/plugins/sticky-columns/plugin.d.ts +0 -70
  108. package/declarations/plugins/sticky-columns/plugin.d.ts.map +0 -1
  109. package/declarations/test-support/index.d.ts +0 -15
  110. package/declarations/test-support/index.d.ts.map +0 -1
  111. package/declarations/utils.d.ts +0 -26
  112. package/declarations/utils.d.ts.map +0 -1
  113. package/dist/-private/-type-tests/plugin-properties.test.js +0 -27
  114. package/dist/-private/-type-tests/plugin-properties.test.js.map +0 -1
  115. package/dist/-private/-type-tests/plugin-with.test.js +0 -20
  116. package/dist/-private/-type-tests/plugin-with.test.js.map +0 -1
  117. package/dist/-private/-type-tests/plugins-accessors.test.js +0 -36
  118. package/dist/-private/-type-tests/plugins-accessors.test.js.map +0 -1
  119. package/dist/-private/-type-tests/plugins-signature-from.test.js +0 -15
  120. package/dist/-private/-type-tests/plugins-signature-from.test.js.map +0 -1
  121. package/dist/-private/-type-tests/plugins-signature-utils.test.js +0 -36
  122. package/dist/-private/-type-tests/plugins-signature-utils.test.js.map +0 -1
  123. package/dist/-private/-type-tests/table-api.test.js +0 -17
  124. package/dist/-private/-type-tests/table-api.test.js.map +0 -1
  125. package/dist/-private/-type-tests/table-config.test.js +0 -55
  126. package/dist/-private/-type-tests/table-config.test.js.map +0 -1
  127. package/dist/-private/column.js +0 -62
  128. package/dist/-private/column.js.map +0 -1
  129. package/dist/-private/ember-compat.js +0 -17
  130. package/dist/-private/ember-compat.js.map +0 -1
  131. package/dist/-private/interfaces/column.js +0 -2
  132. package/dist/-private/interfaces/column.js.map +0 -1
  133. package/dist/-private/interfaces/index.js +0 -2
  134. package/dist/-private/interfaces/index.js.map +0 -1
  135. package/dist/-private/interfaces/modifier.js +0 -2
  136. package/dist/-private/interfaces/modifier.js.map +0 -1
  137. package/dist/-private/interfaces/pagination.js +0 -2
  138. package/dist/-private/interfaces/pagination.js.map +0 -1
  139. package/dist/-private/interfaces/plugins.js +0 -2
  140. package/dist/-private/interfaces/plugins.js.map +0 -1
  141. package/dist/-private/interfaces/preferences.js +0 -2
  142. package/dist/-private/interfaces/preferences.js.map +0 -1
  143. package/dist/-private/interfaces/selection.js +0 -2
  144. package/dist/-private/interfaces/selection.js.map +0 -1
  145. package/dist/-private/interfaces/table.js +0 -2
  146. package/dist/-private/interfaces/table.js.map +0 -1
  147. package/dist/-private/js-helper.js +0 -55
  148. package/dist/-private/js-helper.js.map +0 -1
  149. package/dist/-private/preferences.js +0 -149
  150. package/dist/-private/preferences.js.map +0 -1
  151. package/dist/-private/private-types.js +0 -2
  152. package/dist/-private/private-types.js.map +0 -1
  153. package/dist/-private/row.js +0 -51
  154. package/dist/-private/row.js.map +0 -1
  155. package/dist/-private/table.js +0 -276
  156. package/dist/-private/table.js.map +0 -1
  157. package/dist/-private/utils.js +0 -15
  158. package/dist/-private/utils.js.map +0 -1
  159. package/dist/_rollupPluginBabelHelpers-CjaRjJZX.js +0 -63
  160. package/dist/_rollupPluginBabelHelpers-CjaRjJZX.js.map +0 -1
  161. package/dist/index.js +0 -4
  162. package/dist/index.js.map +0 -1
  163. package/dist/plugins/-private/base.js +0 -532
  164. package/dist/plugins/-private/base.js.map +0 -1
  165. package/dist/plugins/-private/utils.js +0 -103
  166. package/dist/plugins/-private/utils.js.map +0 -1
  167. package/dist/plugins/column-reordering/helpers.js +0 -81
  168. package/dist/plugins/column-reordering/helpers.js.map +0 -1
  169. package/dist/plugins/column-reordering/index.js +0 -3
  170. package/dist/plugins/column-reordering/index.js.map +0 -1
  171. package/dist/plugins/column-reordering/plugin.js +0 -453
  172. package/dist/plugins/column-reordering/plugin.js.map +0 -1
  173. package/dist/plugins/column-reordering/utils.js +0 -34
  174. package/dist/plugins/column-reordering/utils.js.map +0 -1
  175. package/dist/plugins/column-resizing/handle.js +0 -243
  176. package/dist/plugins/column-resizing/handle.js.map +0 -1
  177. package/dist/plugins/column-resizing/helpers.js +0 -77
  178. package/dist/plugins/column-resizing/helpers.js.map +0 -1
  179. package/dist/plugins/column-resizing/index.js +0 -4
  180. package/dist/plugins/column-resizing/index.js.map +0 -1
  181. package/dist/plugins/column-resizing/plugin.js +0 -365
  182. package/dist/plugins/column-resizing/plugin.js.map +0 -1
  183. package/dist/plugins/column-resizing/resize-observer.js +0 -44
  184. package/dist/plugins/column-resizing/resize-observer.js.map +0 -1
  185. package/dist/plugins/column-resizing/utils.js +0 -44
  186. package/dist/plugins/column-resizing/utils.js.map +0 -1
  187. package/dist/plugins/column-visibility/helpers.js +0 -25
  188. package/dist/plugins/column-visibility/helpers.js.map +0 -1
  189. package/dist/plugins/column-visibility/index.js +0 -3
  190. package/dist/plugins/column-visibility/index.js.map +0 -1
  191. package/dist/plugins/column-visibility/plugin.js +0 -92
  192. package/dist/plugins/column-visibility/plugin.js.map +0 -1
  193. package/dist/plugins/data-sorting/helpers.js +0 -49
  194. package/dist/plugins/data-sorting/helpers.js.map +0 -1
  195. package/dist/plugins/data-sorting/index.js +0 -4
  196. package/dist/plugins/data-sorting/index.js.map +0 -1
  197. package/dist/plugins/data-sorting/plugin.js +0 -132
  198. package/dist/plugins/data-sorting/plugin.js.map +0 -1
  199. package/dist/plugins/data-sorting/types.js +0 -14
  200. package/dist/plugins/data-sorting/types.js.map +0 -1
  201. package/dist/plugins/index.js +0 -3
  202. package/dist/plugins/index.js.map +0 -1
  203. package/dist/plugins/metadata/helpers.js +0 -12
  204. package/dist/plugins/metadata/helpers.js.map +0 -1
  205. package/dist/plugins/metadata/index.js +0 -3
  206. package/dist/plugins/metadata/index.js.map +0 -1
  207. package/dist/plugins/metadata/plugin.js +0 -25
  208. package/dist/plugins/metadata/plugin.js.map +0 -1
  209. package/dist/plugins/row-selection/helpers.js +0 -10
  210. package/dist/plugins/row-selection/helpers.js.map +0 -1
  211. package/dist/plugins/row-selection/index.js +0 -3
  212. package/dist/plugins/row-selection/index.js.map +0 -1
  213. package/dist/plugins/row-selection/plugin.js +0 -118
  214. package/dist/plugins/row-selection/plugin.js.map +0 -1
  215. package/dist/plugins/sticky-columns/helpers.js +0 -49
  216. package/dist/plugins/sticky-columns/helpers.js.map +0 -1
  217. package/dist/plugins/sticky-columns/index.js +0 -3
  218. package/dist/plugins/sticky-columns/index.js.map +0 -1
  219. package/dist/plugins/sticky-columns/plugin.js +0 -139
  220. package/dist/plugins/sticky-columns/plugin.js.map +0 -1
  221. package/dist/test-support/index.js +0 -62
  222. package/dist/test-support/index.js.map +0 -1
  223. package/dist/utils.js +0 -77
  224. package/dist/utils.js.map +0 -1
@@ -1 +0,0 @@
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<DataType = unknown> {\n constructor(private column: Column<DataType>) {}\n\n get #tableMeta(): TableMeta<DataType> {\n return meta.forTable(\n this.column.table,\n ColumnReordering,\n ) as TableMeta<DataType>;\n }\n\n get position() {\n return this.#tableMeta.getPosition(this.column);\n }\n\n // Swaps this column with the column in the new position\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<DataType = unknown> {\n constructor(private table: Table<DataType>) {}\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<DataType>({\n columns: () => this.allColumns,\n visibleColumns: () => this.visibleColumns,\n save: this.save,\n read: () => this.read(),\n });\n\n /**\n * Get the curret order/position of a column\n */\n @action\n getPosition(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(column: Column<DataType>, 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<DataType>) => {\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<DataType>({\n columns: () => this.allColumns,\n visibleColumns: () => this.visibleColumns,\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.filter(\n (column) => this.visibleColumns[column.key],\n );\n }\n\n /**\n * @private\n * This isn't our data to expose, but it is useful to alias\n */\n private get visibleColumns() {\n return columns\n .for(this.table, ColumnReordering)\n .reduce<Record<string, boolean>>((acc, column) => {\n acc[column.key] = true;\n\n return acc;\n }, {});\n }\n\n private get allColumns() {\n return this.table.columns.values();\n }\n}\n\n/**\n * @private\n * Used for keeping track of and updating column order\n */\nexport class ColumnOrder<DataType = unknown> {\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 /**\n * All columns to track in the ordering.\n *\n * Backwards compatible usage (without ColumnVisibility):\n * - Pass only the columns you want to display\n * - All columns are treated as visible\n *\n * New usage (with ColumnVisibility):\n * - Pass ALL columns (including hidden ones)\n * - Provide `visibleColumns` to indicate which are visible\n * - Hidden columns maintain their position when toggled\n */\n columns: () => Column<DataType>[];\n /**\n * Optional: Record of which columns are currently visible.\n * When provided, moveLeft/moveRight will skip over hidden columns.\n * When omitted, all columns from `columns` are treated as visible (backwards compatible).\n *\n * Example when using ColumnVisibility:\n * ```ts\n * visibleColumns: () => columns.reduce((acc, col) => {\n * acc[col.key] = meta(col).ColumnVisibility?.isVisible !== false;\n * return acc;\n * }, {})\n * ```\n */\n visibleColumns?: () => Record<string, boolean>;\n /**\n * Optional: Callback to persist the column order (e.g., to localStorage).\n */\n save?: (order: Map<string, number>) => void;\n /**\n * Optional: Callback to read the current saved order from preferences.\n * Called reactively - when preferences change, order updates automatically.\n */\n read?: () => Map<string, number> | undefined;\n /**\n * @deprecated Use `read` instead for reactive preferences support.\n * Optional: Previously saved column order to restore.\n */\n existingOrder?: Map<string, number>;\n },\n ) {\n // Initialize map from existingOrder for backwards compatibility\n // The reactive `read` callback will override this in orderedMap\n let allColumns = this.args.columns();\n const initialOrder = args.existingOrder ?? args.read?.();\n\n if (initialOrder) {\n let newOrder = new Map(initialOrder.entries());\n\n addMissingColumnsToMap(allColumns, newOrder);\n removeExtraColumnsFromMap(allColumns, newOrder);\n this.map = new TrackedMap(newOrder);\n } else {\n this.map = new TrackedMap(allColumns.map((column, i) => [column.key, i]));\n }\n }\n\n /**\n * @private\n * Helper to get visible columns, defaulting to all columns if not specified\n */\n private getVisibleColumns(): Record<string, boolean> {\n if (this.args.visibleColumns) {\n return this.args.visibleColumns();\n }\n\n // Default: all columns are visible\n return this.args.columns().reduce(\n (acc, col) => {\n acc[col.key] = true;\n return acc;\n },\n {} as Record<string, boolean>,\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 if (this.map.get(key) === 0) {\n return;\n }\n\n let found = false;\n\n for (const column of orderedColumns.reverse()) {\n if (found) {\n // Shift moved column left\n let currentPosition = this.map.get(key);\n\n assert('current key must exist in map', currentPosition !== undefined);\n this.map.set(key, currentPosition - 1);\n\n // Shift displayed column right\n let displayedColumnPosition = this.map.get(column.key);\n\n assert(\n 'displaced key must exist in map',\n displayedColumnPosition !== undefined,\n );\n this.map.set(column.key, displayedColumnPosition + 1);\n\n if (this.getVisibleColumns()[column.key]) {\n break;\n }\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n this.args.save?.(this.map);\n }\n\n setAll = (map: Map<string, number>) => {\n let allColumns = this.args.columns();\n\n addMissingColumnsToMap(allColumns, map);\n removeExtraColumnsFromMap(allColumns, map);\n\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 let found = false;\n\n for (const column of orderedColumns) {\n if (found) {\n // Shift moved column right\n let currentPosition = this.map.get(key);\n\n assert('current key must exist in map', currentPosition !== undefined);\n this.map.set(key, currentPosition + 1);\n\n // Shift displaced column left\n let displayedColumnPosition = this.map.get(column.key);\n\n assert(\n 'displaced key must exist in map',\n displayedColumnPosition !== undefined,\n );\n this.map.set(column.key, displayedColumnPosition - 1);\n\n if (this.getVisibleColumns()[column.key]) {\n break;\n }\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n this.args.save?.(this.map);\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 visibleColumns are: ` +\n Object.keys(this.getVisibleColumns()).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 * Prefers preferences (via read callback) when available for reactivity.\n */\n @cached\n get orderedMap(): ReadonlyMap<string, number> {\n // Prefer preferences for reactivity, fall back to local map\n const savedOrder = this.args.read?.();\n const baseMap = savedOrder ?? this.map;\n return orderOf(this.args.columns(), baseMap);\n }\n\n @cached\n get orderedColumns(): Column<DataType>[] {\n const allColumns = this.args.columns();\n const columnsByKey = allColumns.reduce(\n (keyMap, column) => {\n keyMap[column.key] = column;\n return keyMap;\n },\n {} as Record<string, Column<DataType>>,\n );\n // Use orderedMap which is reactive to preferences\n const mergedOrder = this.orderedMap;\n\n const result: Column<DataType>[] = Array.from({\n length: allColumns.length,\n });\n\n for (const [key, position] of mergedOrder.entries()) {\n const column = columnsByKey[key];\n\n // Skip columns that no longer exist (they've been removed from the columns array)\n if (!column) {\n continue;\n }\n\n result[position] = column;\n }\n\n // Filter out undefined entries (from removed columns or gaps in positions)\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 *\n * This function adds missing columns but preserves extra columns in the map\n * (they might be hidden, not deleted).\n */\nexport function orderOf(\n columns: { key: string }[],\n currentOrder: Map<string, number>,\n): Map<string, number> {\n // Create a copy to avoid mutating the input\n let workingOrder = new Map(currentOrder);\n\n // Add any missing columns to the end\n addMissingColumnsToMap(columns, workingOrder);\n\n // DON'T remove extra columns - they might be hidden columns, not deleted ones\n // The ColumnOrder constructor handles removal of truly deleted columns\n\n // Ensure positions are consecutive and zero based\n let inOrder = Array.from(workingOrder.entries()).sort(\n ([_keyA, positionA], [_keyB, positionB]) => positionA - positionB,\n );\n\n let orderedColumns = new Map<string, number>();\n\n let position = 0;\n\n for (let [key] of inOrder) {\n orderedColumns.set(key, position++);\n }\n\n return orderedColumns;\n}\n\n/**\n * @private\n *\n * Utility to add any missing columns to the position map. By calling this whenever\n * data is passed in to the system we can simplify the code within the system because\n * we know we are dealing with a full set of positions.\n *\n * @param columns - A list of all columns available to the table\n * @param map - A Map of `key` to position (as a zero based integer)\n */\nfunction addMissingColumnsToMap(\n columns: { key: string }[],\n map: Map<string, number>,\n): void {\n if (map.size < columns.length) {\n let maxAssignedColumn = Math.max(...map.values());\n\n for (let column of columns) {\n if (map.get(column.key) === undefined) {\n map.set(column.key, ++maxAssignedColumn);\n }\n }\n }\n}\n\n/**\n * @private\n *\n * Utility to remove any extra columns from the position map. By calling this whenever\n * data is passed in to the system we can simplify the code within the system because\n * we know we are dealing with a full set of positions.\n *\n * @param columns - A list of all columns available to the table\n * @param map - A Map of `key` to position (as a zero based integer)\n */\nfunction removeExtraColumnsFromMap(\n columns: { key: string }[],\n map: Map<string, number>,\n): void {\n let columnsLookup = columns.reduce(\n function (acc, { key }) {\n acc[key] = true;\n\n return acc;\n },\n {} as Record<string, boolean>,\n );\n\n for (let key of map.keys()) {\n if (!columnsLookup[key]) {\n map.delete(key);\n }\n }\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","allColumns","visibleColumns","save","entries","set","read","Map","Object","orderedColumns","filter","for","reduce","acc","values","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","getOwnPropertyDescriptor","_class2","TrackedMap","addMissingColumnsToMap","removeExtraColumnsFromMap","clear","initialOrder","existingOrder","newOrder","i","getVisibleColumns","col","found","reverse","currentPosition","assert","undefined","displayedColumnPosition","validPositions","orderedMap","includes","entry","join","keys","size","keyByPosition","existingPosition","has","result","savedOrder","baseMap","orderOf","columnsByKey","keyMap","mergedOrder","Array","from","Boolean","cached","currentOrder","workingOrder","inOrder","sort","_keyA","positionA","_keyB","positionB","maxAssignedColumn","Math","max","columnsLookup"],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { meta } from '../-private/base.js';
2
- import { ColumnReordering } from './plugin.js';
3
-
4
- function reorderColumns(columns, orderedColumns) {
5
- if (orderedColumns === undefined) {
6
- return columns;
7
- }
8
- let repositionedColumns = Array.from({
9
- length: columns.length
10
- });
11
- for (const column of columns) {
12
- const orderedColumn = orderedColumns.find(orderedColumn => column.key === orderedColumn.key);
13
- const currentMeta = meta.forColumn(column, ColumnReordering);
14
- if (orderedColumn === undefined) {
15
- if (currentMeta.position !== undefined && currentMeta.position >= 0) {
16
- repositionedColumns[currentMeta.position] = column;
17
- }
18
- continue;
19
- }
20
- const {
21
- position
22
- } = orderedColumn;
23
- if (position !== undefined && !repositionedColumns[position]) {
24
- repositionedColumns[position] = column;
25
- } else {
26
- repositionedColumns.push(column);
27
- }
28
- }
29
- repositionedColumns = repositionedColumns.filter(column => column !== undefined);
30
- return repositionedColumns;
31
- }
32
-
33
- export { reorderColumns };
34
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sources":["../../../src/plugins/column-reordering/utils.ts"],"sourcesContent":["import { meta } from '../-private/base.ts';\nimport { ColumnReordering } from './plugin.ts';\n\nimport type { Column } from '../../index.ts';\n\ntype ColumnOrder = { key: string; position: number | undefined }[];\n\nexport function reorderColumns(\n columns: Column[],\n orderedColumns: ColumnOrder | undefined,\n) {\n if (orderedColumns === undefined) {\n return columns;\n }\n\n let repositionedColumns: Column[] = Array.from({\n length: columns.length,\n });\n\n for (const column of columns) {\n const orderedColumn = orderedColumns.find(\n (orderedColumn) => column.key === orderedColumn.key,\n );\n const currentMeta = meta.forColumn(column, ColumnReordering);\n\n if (orderedColumn === undefined) {\n if (currentMeta.position !== undefined && currentMeta.position >= 0) {\n repositionedColumns[currentMeta.position] = column;\n }\n\n continue;\n }\n\n const { position } = orderedColumn;\n\n if (position !== undefined && !repositionedColumns[position]) {\n repositionedColumns[position] = column;\n } else {\n repositionedColumns.push(column);\n }\n }\n\n repositionedColumns = repositionedColumns.filter(\n (column) => column !== undefined,\n );\n\n return repositionedColumns;\n}\n"],"names":["reorderColumns","columns","orderedColumns","undefined","repositionedColumns","Array","from","length","column","orderedColumn","find","key","currentMeta","meta","forColumn","ColumnReordering","position","push","filter"],"mappings":";;;AAOO,SAASA,cAAcA,CAC5BC,OAAiB,EACjBC,cAAuC,EACvC;EACA,IAAIA,cAAc,KAAKC,SAAS,EAAE;AAChC,IAAA,OAAOF,OAAO;AAChB;AAEA,EAAA,IAAIG,mBAA6B,GAAGC,KAAK,CAACC,IAAI,CAAC;IAC7CC,MAAM,EAAEN,OAAO,CAACM;AAClB,GAAC,CAAC;AAEF,EAAA,KAAK,MAAMC,MAAM,IAAIP,OAAO,EAAE;AAC5B,IAAA,MAAMQ,aAAa,GAAGP,cAAc,CAACQ,IAAI,CACtCD,aAAa,IAAKD,MAAM,CAACG,GAAG,KAAKF,aAAa,CAACE,GAClD,CAAC;IACD,MAAMC,WAAW,GAAGC,IAAI,CAACC,SAAS,CAACN,MAAM,EAAEO,gBAAgB,CAAC;IAE5D,IAAIN,aAAa,KAAKN,SAAS,EAAE;MAC/B,IAAIS,WAAW,CAACI,QAAQ,KAAKb,SAAS,IAAIS,WAAW,CAACI,QAAQ,IAAI,CAAC,EAAE;AACnEZ,QAAAA,mBAAmB,CAACQ,WAAW,CAACI,QAAQ,CAAC,GAAGR,MAAM;AACpD;AAEA,MAAA;AACF;IAEA,MAAM;AAAEQ,MAAAA;AAAS,KAAC,GAAGP,aAAa;IAElC,IAAIO,QAAQ,KAAKb,SAAS,IAAI,CAACC,mBAAmB,CAACY,QAAQ,CAAC,EAAE;AAC5DZ,MAAAA,mBAAmB,CAACY,QAAQ,CAAC,GAAGR,MAAM;AACxC,KAAC,MAAM;AACLJ,MAAAA,mBAAmB,CAACa,IAAI,CAACT,MAAM,CAAC;AAClC;AACF;EAEAJ,mBAAmB,GAAGA,mBAAmB,CAACc,MAAM,CAC7CV,MAAM,IAAKA,MAAM,KAAKL,SACzB,CAAC;AAED,EAAA,OAAOC,mBAAmB;AAC5B;;;;"}
@@ -1,243 +0,0 @@
1
- import { _ as _defineProperty } from '../../_rollupPluginBabelHelpers-CjaRjJZX.js';
2
- import { registerDestructor } from '@ember/destroyable';
3
- import { buildWaiter } from '@ember/test-waiters';
4
- import Modifier from 'ember-modifier';
5
- import { meta } from '../-private/base.js';
6
- import { ColumnResizing } from './plugin.js';
7
-
8
- const waiter = buildWaiter('ColumnResizing#ResizeHandle');
9
-
10
- /**
11
- * - why are mouse events used instead of drag events?
12
- * - why not use the "draggable" attribute?
13
- *
14
- * It seems drag events are more for files and/or moving images around on a page
15
- * dragging an image, for example, has a ghost of that image until it is dropped.
16
- * The same thing happens with text.
17
- * This prevents us from having total control of the styling of how dragging works.
18
- *
19
- *
20
- *
21
- */
22
-
23
- class ResizeHandle extends Modifier {
24
- constructor(...args) {
25
- super(...args);
26
- // Pointer
27
- _defineProperty(this, "pointerStartX", 0);
28
- _defineProperty(this, "pointerStartY", 0);
29
- _defineProperty(this, "pointerX", 0);
30
- _defineProperty(this, "pointerY", 0);
31
- // Keyboard
32
- _defineProperty(this, "keyDistance", 0);
33
- // waiter
34
- _defineProperty(this, "token", void 0);
35
- _defineProperty(this, "isSetup", false);
36
- _defineProperty(this, "setup", () => {
37
- this.dragHandle.addEventListener('touchstart', this.dragStartHandler, {
38
- passive: true
39
- });
40
- this.dragHandle.addEventListener('mousedown', this.dragStartHandler);
41
- this.dragHandle.addEventListener('keydown', this.keyHandler);
42
- registerDestructor(this, () => {
43
- this.meta.isResizing = false;
44
- if (this.token) {
45
- waiter.endAsync(this.token);
46
- this.token = undefined;
47
- }
48
- this.dragHandle.removeEventListener('touchstart', this.dragStartHandler);
49
- this.dragHandle.removeEventListener('mousedown', this.dragStartHandler);
50
- window.removeEventListener('touchmove', this.dragMove);
51
- window.removeEventListener('touchend', this.dragEndHandler);
52
- window.removeEventListener('mousemove', this.dragMove);
53
- window.removeEventListener('mouseup', this.dragEndHandler);
54
- this.dragHandle.removeEventListener('keydown', this.keyHandler);
55
- });
56
- });
57
- _defineProperty(this, "setPosition", event => {
58
- if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;
59
- if ('TouchEvent' in window && event instanceof TouchEvent) {
60
- const firstTouch = event.touches[0];
61
- if (!firstTouch) return;
62
- this.pointerX = firstTouch.clientX;
63
- this.pointerY = firstTouch.clientY;
64
- } else {
65
- this.pointerX = event.clientX;
66
- this.pointerY = event.clientY;
67
- }
68
- });
69
- _defineProperty(this, "setStartPosition", event => {
70
- if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;
71
- if ('TouchEvent' in window && event instanceof TouchEvent) {
72
- const firstTouch = event.touches[0];
73
- if (!firstTouch) return;
74
- this.pointerStartX = firstTouch.clientX;
75
- this.pointerStartY = firstTouch.clientY;
76
- } else {
77
- this.pointerStartX = event.clientX;
78
- this.pointerStartY = event.clientY;
79
- }
80
- });
81
- /**
82
- * queueUpdate takes an optional function argument that is called
83
- * in the requestAnimationFrame callback _after_ the resize function.
84
- *
85
- * We can use this to ensure that preferences are only ever saved after
86
- * we have completed column resizing.
87
- *
88
- * Because the requestAnimationFrame 'hides' these function calls from the
89
- * the ember test waiter, we also ensure that we track them by also cancelling
90
- * the waiter in the requestAnimationFrame callback.
91
- */
92
- _defineProperty(this, "queueUpdate", callback => {
93
- if (this.dragFrame) {
94
- cancelAnimationFrame(this.dragFrame);
95
- }
96
- this.dragFrame = requestAnimationFrame(() => {
97
- this.meta.resize(this.pointerX - this.pointerStartX);
98
- this.pointerStartX = this.pointerX;
99
- if (callback) {
100
- callback();
101
- }
102
- if (this.token) {
103
- waiter.endAsync(this.token);
104
- this.token = undefined;
105
- }
106
- });
107
- });
108
- _defineProperty(this, "dragEndHandler", () => {
109
- this.meta.isResizing = false;
110
- this.queueUpdate(this.meta.save);
111
-
112
- /**
113
- * No need to listen if we aren't dragging
114
- */
115
- window.removeEventListener('touchmove', this.dragMove);
116
- window.removeEventListener('touchend', this.dragEndHandler);
117
- window.removeEventListener('mousemove', this.dragMove);
118
- window.removeEventListener('mouseup', this.dragEndHandler);
119
- });
120
- _defineProperty(this, "dragMove", event => {
121
- if (!this.meta.isResizing) return;
122
- this.setPosition(event);
123
- this.queueUpdate();
124
- });
125
- _defineProperty(this, "dragStartHandler", event => {
126
- if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;
127
- this.meta.isResizing = true;
128
- if (event.target !== this.dragHandle) return;
129
- if (this.token) {
130
- waiter.endAsync(this.token);
131
- }
132
- this.token = waiter.beginAsync();
133
- this.setPosition(event);
134
- this.setStartPosition(event);
135
- window.addEventListener('touchend', this.dragEndHandler);
136
- window.addEventListener('touchmove', this.dragMove);
137
- window.addEventListener('mousemove', this.dragMove);
138
- window.addEventListener('mouseup', this.dragEndHandler);
139
- });
140
- _defineProperty(this, "keyHandler", event => {
141
- const deltaT = new Date().getTime() - this.lastKey;
142
- const isRapid = deltaT < 50;
143
- if (event.code === 'ArrowDown' || event.code === 'ArrowRight') {
144
- this.keyDistance += isRapid ? 8 : 1;
145
- this.lastKey = new Date().getTime();
146
- }
147
- if (event.code === 'ArrowUp' || event.code === 'ArrowLeft') {
148
- this.keyDistance -= isRapid ? 8 : 1;
149
- this.lastKey = new Date().getTime();
150
- }
151
- cancelAnimationFrame(this.keyFrame);
152
- this.keyFrame = requestAnimationFrame(() => {
153
- this.meta.resize(this.keyDistance);
154
- this.keyDistance = 0;
155
- });
156
- });
157
- }
158
- modify(element, [column]) {
159
- this.column = column;
160
- this.meta = meta.forColumn(column, ColumnResizing);
161
- this.dragHandle = element;
162
- if (!this.isSetup) {
163
- this.isSetup = true;
164
- this.setup();
165
- }
166
- }
167
- }
168
-
169
- /**
170
- * Modifier to attach to the column resize handles.
171
- * This provides both keyboard and mouse support for resizing columns.
172
- * (provided the resize handle element is focusable -- so consider using
173
- * a button for the resize element)
174
- *
175
- * @example
176
- * ```js
177
- * import Component from '@glimmer/component';
178
- * import { meta } from '@universal-ember/table/plugins';
179
- * import { resizeHandle, ColumnResizing } from '@universal-ember/table/plugins/column-resizing';
180
- *
181
- * export default class TableHead extends Component {
182
- * /* ✂️ *\/
183
- *
184
- * <template>
185
- * <thead>
186
- * <tr>
187
- * {{#each this.columns as |column|}}
188
- * <th>
189
- * <span>{{column.name}}</span>
190
- * <button {{resizeHandle column}}></button>
191
- * </th>
192
- * {{/each}}
193
- * </tr>
194
- * </thead>
195
- * </template>
196
- * }
197
- * ```
198
- *
199
- * Width and isResizing state is maintained on the "meta"
200
- * class so that the users may choose per-column stylings for
201
- * isResizing and dragging behaviors.
202
- *
203
- * For example, while dragging, the user may add a class based on the
204
- * isDragging property.
205
- *
206
- * @example
207
- * ```js
208
- * import Component from '@glimmer/component';
209
- * import { meta } from '@universal-ember/table/plugins';
210
- * import { resizeHandle, ColumnResizing } from '@universal-ember/table/plugins/column-resizing';
211
- *
212
- * export default class TableHead extends Component {
213
- * /* ✂️ *\/
214
- *
215
- * isDragging = (column) => {
216
- * return meta.forColumn(column, ColumnResizing).isDragging;
217
- * }
218
- *
219
- * <template>
220
- * <thead>
221
- * <tr>
222
- * {{#each this.columns as |column|}}
223
- * <th class="header {{if (this.isDragging column) 'blue'}}">
224
- * <span>{{column.name}}</span>
225
- * <button {{resizeHandle column}}></button>
226
- * </th>
227
- * {{/each}}
228
- * </tr>
229
- * </thead>
230
- * </template>
231
- * }
232
- * ```
233
- *
234
- *
235
- * @note
236
- * The logic here is copied from the drag slider in
237
- * https://limber.glimdown.com/
238
- * See: "resize-handle" on Limber's GitHub
239
- */
240
- const resizeHandle = ResizeHandle;
241
-
242
- export { resizeHandle };
243
- //# sourceMappingURL=handle.js.map
@@ -1 +0,0 @@
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 passive: true,\n });\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","passive","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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AW,IAAIF,OAAO,GAAG,CAAC,GAAG,CAAC;QACnC,IAAI,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;AAhKDE,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,CAAClD,UAAU,GAAG+C,OAAsB;AAExC,IAAA,IAAI,CAAC,IAAI,CAACI,OAAO,EAAE;MACjB,IAAI,CAACA,OAAO,GAAG,IAAI;MACnB,IAAI,CAACC,KAAK,EAAE;AACd;AACF;AAwJF;;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,GAAG1D;;;;"}
@@ -1,77 +0,0 @@
1
- import { htmlSafe } from '@ember/template';
2
- import { meta } from '../-private/base.js';
3
- import { ColumnResizing } from './plugin.js';
4
-
5
- /**
6
- * Is the column resizable?
7
- * This checks if resizing is enabled for this specific column,
8
- */
9
- const isResizable = column => meta.forColumn(column, ColumnResizing).isResizable;
10
-
11
- /**
12
- * The column actively being resized by the user.
13
- *
14
- * Note that during resizing, multiple columns are resized at once,
15
- * dependending on the boundaries of the resize events.
16
- *
17
- * The other columns being resized as a consequence of "this" column will not
18
- * be marked as isResizing, because this is a user-scoped question:
19
- * "Is the user directly resizing this column?"
20
- */
21
- const isResizing = column => meta.forColumn(column, ColumnResizing).isResizing;
22
-
23
- /**
24
- * Does the column have room to shrink?
25
- */
26
- const canShrink = column => meta.forColumn(column, ColumnResizing).canShrink;
27
-
28
- /**
29
- * Does the column have a resize handle?
30
- * The return value of this function can be determined by
31
- * - if resizing is enabled for the column
32
- * - if resizing is enabled for the whole table
33
- * - or if we're asking about the first column (resize handles may only be "between" columns)
34
- */
35
- const hasResizeHandle = column => meta.forColumn(column, ColumnResizing).hasResizeHandle;
36
-
37
- /**
38
- * In this plugin (by default), styles are only applied to the headers automatically.
39
- * in <Table> UIs, the header cells control the widths of all cells in that column.
40
- * There are other kinds of tabular-like markup that may want to grab the widths of columns,
41
- * because The Platform does not manage that automatically (like if divs and roles were used manually)
42
- *
43
- * This utility is meant to be applied to the `style` attribute of a particular td-like element.
44
- */
45
- const styleStringFor = column => {
46
- const columnMeta = meta.forColumn(column, ColumnResizing);
47
- let result = '';
48
-
49
- /**
50
- * Styles are applied regardless of the "table" being resizable or not
51
- * because in non-<table> UIs, we need to ensure that all cells in a column
52
- * have the same width
53
- */
54
- for (const [key, value] of Object.entries(columnMeta.style)) {
55
- result += `${toStyle(key)}:${value};`;
56
- }
57
- result = ';' + result;
58
- return htmlSafe(result);
59
- };
60
-
61
- /**
62
- * the JS API for styles is camel case,
63
- * but CSS is kebab-case. To save on complexity and
64
- * amount of code, we have a super small conversion function
65
- * for only the properties relevant to the sticky plugin.
66
- */
67
- const toStyle = key => {
68
- switch (key) {
69
- case 'minWidth':
70
- return 'min-width';
71
- default:
72
- return key;
73
- }
74
- };
75
-
76
- export { canShrink, hasResizeHandle, isResizable, isResizing, styleStringFor };
77
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
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 * Is the column resizable?\n * This checks if resizing is enabled for this specific column,\n */\nexport const isResizable = <DataType = unknown>(column: Column<DataType>) =>\n meta.forColumn(column, ColumnResizing).isResizable;\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":["isResizable","column","meta","forColumn","ColumnResizing","isResizing","canShrink","hasResizeHandle","styleStringFor","columnMeta","result","key","value","Object","entries","style","toStyle","htmlSafe"],"mappings":";;;;AAOA;AACA;AACA;AACA;AACaA,MAAAA,WAAW,GAAwBC,MAAwB,IACtEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACJ;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaK,MAAAA,UAAU,GAAwBJ,MAAwB,IACrEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACC;;AAEzC;AACA;AACA;AACaC,MAAAA,SAAS,GAAwBL,MAAwB,IACpEC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACE;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,MAAAA,eAAe,GAAwBN,MAAwB,IAC1EC,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC,CAACG;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,MAAAA,cAAc,GACzBP,MAAwB,IACQ;EAChC,MAAMQ,UAAU,GAAGP,IAAI,CAACC,SAAS,CAACF,MAAM,EAAEG,cAAc,CAAC;EAEzD,IAAIM,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,4 +0,0 @@
1
- export { resizeHandle } from './handle.js';
2
- export { canShrink, hasResizeHandle, isResizable, isResizing, styleStringFor } from './helpers.js';
3
- export { ColumnResizing, ColumnResizing as Plugin } from './plugin.js';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}