@universal-ember/table 3.6.0 → 3.6.2

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.
@@ -415,12 +415,10 @@ function orderOf(columns, currentOrder) {
415
415
  * @param map - A Map of `key` to position (as a zero based integer)
416
416
  */
417
417
  function addMissingColumnsToMap(columns, map) {
418
- if (map.size < columns.length) {
419
- let maxAssignedColumn = Math.max(...map.values());
420
- for (let column of columns) {
421
- if (map.get(column.key) === undefined) {
422
- map.set(column.key, ++maxAssignedColumn);
423
- }
418
+ let maxAssignedColumn = Math.max(...map.values());
419
+ for (let column of columns) {
420
+ if (map.get(column.key) === undefined) {
421
+ map.set(column.key, ++maxAssignedColumn);
424
422
  }
425
423
  }
426
424
  }
@@ -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<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
+ {"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 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 * @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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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@universal-ember/table",
3
- "version": "3.6.0",
4
- "description": "An implementation of table behaviors for driving any table or table-like UI -- all without a UI (headless)",
3
+ "version": "3.6.2",
4
+ "description": "An implementation of table behaviors for driving any table or table-like UI -- all without a UI or markup",
5
5
  "keywords": [
6
6
  "ember-addon",
7
7
  "headlessui",
@@ -593,13 +593,11 @@ function addMissingColumnsToMap(
593
593
  columns: { key: string }[],
594
594
  map: Map<string, number>,
595
595
  ): void {
596
- if (map.size < columns.length) {
597
- let maxAssignedColumn = Math.max(...map.values());
596
+ let maxAssignedColumn = Math.max(...map.values());
598
597
 
599
- for (let column of columns) {
600
- if (map.get(column.key) === undefined) {
601
- map.set(column.key, ++maxAssignedColumn);
602
- }
598
+ for (let column of columns) {
599
+ if (map.get(column.key) === undefined) {
600
+ map.set(column.key, ++maxAssignedColumn);
603
601
  }
604
602
  }
605
603
  }