ember-headless-table 1.4.2 → 1.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/-private/-type-tests/plugin-properties.test.js +1 -1
- package/dist/-private/-type-tests/plugin-properties.test.js.map +1 -1
- package/dist/-private/-type-tests/plugin-with.test.js +0 -1
- package/dist/-private/-type-tests/plugin-with.test.js.map +1 -1
- package/dist/-private/-type-tests/plugins-accessors.test.js +1 -2
- package/dist/-private/-type-tests/plugins-accessors.test.js.map +1 -1
- package/dist/-private/-type-tests/table-api.test.js +0 -1
- package/dist/-private/-type-tests/table-api.test.js.map +1 -1
- package/dist/-private/-type-tests/table-config.test.js +1 -2
- package/dist/-private/-type-tests/table-config.test.js.map +1 -1
- package/dist/-private/column.d.ts +3 -3
- package/dist/-private/column.js.map +1 -1
- package/dist/-private/interfaces/column.d.ts +5 -5
- package/dist/-private/interfaces/index.d.ts +7 -7
- package/dist/-private/interfaces/plugins.d.ts +3 -3
- package/dist/-private/interfaces/table.d.ts +5 -5
- package/dist/-private/js-helper.d.ts +2 -2
- package/dist/-private/js-helper.js +37 -1
- package/dist/-private/js-helper.js.map +1 -1
- package/dist/-private/preferences.d.ts +2 -2
- package/dist/-private/preferences.js +1 -1
- package/dist/-private/preferences.js.map +1 -1
- package/dist/-private/row.d.ts +1 -1
- package/dist/-private/row.js +1 -1
- package/dist/-private/row.js.map +1 -1
- package/dist/-private/table.js +2 -2
- package/dist/-private/utils.d.ts +1 -1
- package/dist/-private/utils.js.map +1 -1
- package/dist/applyDecoratedDescriptor-6b986a67.js.map +1 -1
- package/dist/{classPrivateFieldGet-b4d7d334.js → classPrivateFieldGet-0bfc0262.js} +2 -2
- package/dist/{classPrivateFieldGet-b4d7d334.js.map → classPrivateFieldGet-0bfc0262.js.map} +1 -1
- package/dist/defineProperty-4f0781e1.js +43 -0
- package/dist/defineProperty-4f0781e1.js.map +1 -0
- package/dist/index.d.ts +7 -7
- package/dist/plugins/-private/base.d.ts +6 -6
- package/dist/plugins/-private/base.js +51 -18
- package/dist/plugins/-private/base.js.map +1 -1
- package/dist/plugins/-private/utils.d.ts +2 -2
- package/dist/plugins/-private/utils.js.map +1 -1
- package/dist/plugins/column-reordering/helpers.d.ts +2 -2
- package/dist/plugins/column-reordering/helpers.js.map +1 -1
- package/dist/plugins/column-reordering/index.d.ts +3 -3
- package/dist/plugins/column-reordering/plugin.d.ts +3 -3
- package/dist/plugins/column-reordering/plugin.js +23 -26
- package/dist/plugins/column-reordering/plugin.js.map +1 -1
- package/dist/plugins/column-reordering/utils.d.ts +1 -1
- package/dist/plugins/column-reordering/utils.js.map +1 -1
- package/dist/plugins/column-resizing/handle.d.ts +2 -2
- package/dist/plugins/column-resizing/handle.js +4 -1
- package/dist/plugins/column-resizing/handle.js.map +1 -1
- package/dist/plugins/column-resizing/helpers.d.ts +1 -1
- package/dist/plugins/column-resizing/index.d.ts +4 -4
- package/dist/plugins/column-resizing/plugin.d.ts +3 -3
- package/dist/plugins/column-resizing/plugin.js +11 -3
- package/dist/plugins/column-resizing/plugin.js.map +1 -1
- package/dist/plugins/column-resizing/resize-observer.js.map +1 -1
- package/dist/plugins/column-visibility/helpers.d.ts +1 -1
- package/dist/plugins/column-visibility/index.d.ts +3 -3
- package/dist/plugins/column-visibility/plugin.d.ts +3 -3
- package/dist/plugins/column-visibility/plugin.js +1 -1
- package/dist/plugins/column-visibility/plugin.js.map +1 -1
- package/dist/plugins/data-sorting/helpers.d.ts +2 -2
- package/dist/plugins/data-sorting/index.d.ts +5 -5
- package/dist/plugins/data-sorting/plugin.d.ts +4 -4
- package/dist/plugins/data-sorting/plugin.js +1 -1
- package/dist/plugins/data-sorting/plugin.js.map +1 -1
- package/dist/plugins/data-sorting/types.d.ts +1 -1
- package/dist/plugins/data-sorting/types.js +6 -6
- package/dist/plugins/data-sorting/types.js.map +1 -1
- package/dist/plugins/index.d.ts +5 -5
- package/dist/plugins/metadata/helpers.d.ts +1 -1
- package/dist/plugins/metadata/helpers.js.map +1 -1
- package/dist/plugins/metadata/index.d.ts +3 -3
- package/dist/plugins/metadata/plugin.d.ts +1 -1
- package/dist/plugins/metadata/plugin.js +1 -1
- package/dist/plugins/metadata/plugin.js.map +1 -1
- package/dist/plugins/row-selection/helpers.d.ts +1 -1
- package/dist/plugins/row-selection/index.d.ts +3 -3
- package/dist/plugins/row-selection/plugin.d.ts +3 -3
- package/dist/plugins/row-selection/plugin.js +2 -2
- package/dist/plugins/row-selection/plugin.js.map +1 -1
- package/dist/plugins/sticky-columns/helpers.d.ts +1 -1
- package/dist/plugins/sticky-columns/helpers.js +2 -0
- package/dist/plugins/sticky-columns/helpers.js.map +1 -1
- package/dist/plugins/sticky-columns/index.d.ts +3 -3
- package/dist/plugins/sticky-columns/plugin.d.ts +3 -3
- package/dist/plugins/sticky-columns/plugin.js +13 -1
- package/dist/plugins/sticky-columns/plugin.js.map +1 -1
- package/dist/{table-0cbd2720.d.ts → table-443deac1.d.ts} +22 -7
- package/dist/{table-0cbd2720.js → table-443deac1.js} +56 -14
- package/dist/table-443deac1.js.map +1 -0
- package/dist/test-support/index.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
- package/dist/defineProperty-35ce617b.js +0 -16
- package/dist/defineProperty-35ce617b.js.map +0 -1
- package/dist/table-0cbd2720.js.map +0 -1
@@ -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 '[public-plugin-types]';\n\nimport { BasePlugin, columns, meta } from '../-private/base';\n\nimport type { PluginPreferences } from '[public-plugin-types]';\nimport type { Column, Table } from '[public-types]';\n\ninterface ColumnReorderingPreferences extends PluginPreferences {\n table: {\n order?: Record<string, number>;\n };\n}\n\ndeclare module 'ember-headless-table/plugins' {\n interface Registry {\n ColumnReordering?: 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 let tableMeta = meta.forTable(this.table, ColumnReordering);\n\n tableMeta.reset();\n }\n\n get columns() {\n return meta.forTable(this.table, ColumnReordering).columns;\n }\n}\n\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n get #tableMeta() {\n return meta.forTable(this.column.table, ColumnReordering);\n }\n\n get position() {\n return this.#tableMeta.getPosition(this.column);\n }\n\n set position(value: number) {\n this.#tableMeta.setPosition(this.column, value);\n }\n\n get canMoveLeft() {\n return this.#tableMeta.getPosition(this.column) !== 0;\n }\n\n get canMoveRight() {\n return this.#tableMeta.getPosition(this.column) !== this.#tableMeta.columns.length - 1;\n }\n\n get cannotMoveLeft() {\n return !this.canMoveLeft;\n }\n\n get cannotMoveRight() {\n return !this.canMoveRight;\n }\n\n /**\n * Move the column one spot to the left\n */\n moveLeft = () => {\n this.#tableMeta.columnOrder.moveLeft(this.column.key);\n };\n\n /**\n * Move the column one spot to the right\n */\n moveRight = () => {\n this.#tableMeta.columnOrder.moveRight(this.column.key);\n };\n}\n\nexport class TableMeta {\n constructor(private table: Table) {}\n\n /**\n * @private\n *\n * We want to maintain the instance of this ColumnOrder class because\n * we allow the consumer of the table to swap out columns at any time.\n * When they do this, we want to maintain the order of the table, best we can.\n * This is also why the order of the columns is maintained via column key\n */\n @tracked\n columnOrder = new ColumnOrder({\n columns: () => this.availableColumns,\n save: this.save,\n existingOrder: this.read(),\n });\n\n /**\n * Get the curret order/position of a column\n */\n @action\n getPosition(column: Column) {\n return this.columnOrder.get(column.key);\n }\n\n /**\n * Swap the column with the column at `newPosition`\n */\n @action\n setPosition(column: Column, newPosition: number) {\n return this.columnOrder.swapWith(column.key, newPosition);\n }\n\n /**\n * Using a `ColumnOrder` instance, set the order of all columns\n */\n setOrder = (order: ColumnOrder) => {\n this.columnOrder.setAll(order.map);\n };\n\n /**\n * Revert to default config, delete preferences,\n * and clear the columnOrder\n */\n @action\n reset() {\n preferences.forTable(this.table, ColumnReordering).delete('order');\n this.columnOrder = new ColumnOrder({\n columns: () => this.availableColumns,\n save: this.save,\n });\n }\n\n /**\n * @private\n */\n @action\n save(map: Map<string, number>) {\n let order: Record<string, number> = {};\n\n for (let [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 let order = preferences.forTable(this.table, ColumnReordering).get('order');\n\n if (!order) return;\n\n return new Map<string, number>(Object.entries(order));\n }\n\n get columns() {\n return this.columnOrder.orderedColumns;\n }\n\n /**\n * @private\n * This isn't our data to expose, but it is useful to alias\n */\n private get availableColumns() {\n return columns.for(this.table, ColumnReordering);\n }\n}\n\n/**\n * @private\n * Used for keeping track of and updating column order\n */\nexport class ColumnOrder {\n /**\n * This map will be empty until we re-order something.\n */\n map = new TrackedMap<string, number>();\n\n constructor(\n private args: {\n columns: () => Column[];\n save?: (order: Map<string, number>) => void;\n existingOrder?: Map<string, number>;\n }\n ) {\n if (args.existingOrder) {\n this.map = new TrackedMap(args.existingOrder);\n }\n }\n\n /**\n * To account for columnVisibilty, we need to:\n * - get the list of visible columns\n * - get the column order (which preserves the order of hidden columns)\n * - skip over non-visible columns when determining the previous \"index\"\n * - set the position to whatever that is.\n */\n @action\n moveLeft(key: string) {\n let orderedColumns = this.orderedColumns;\n\n let found = false;\n let nextColumn: { key: string } | undefined;\n\n for (let column of orderedColumns.reverse()) {\n if (found) {\n nextColumn = column;\n\n break;\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n if (!nextColumn) return;\n\n let nextPosition = this.get(nextColumn.key);\n\n this.swapWith(key, nextPosition);\n }\n\n setAll = (map: Map<string, number>) => {\n this.map.clear();\n\n for (let [key, value] of map.entries()) {\n this.map.set(key, value);\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 next \"index\"\n * - set the position to whatever that is.\n */\n @action\n moveRight(key: string) {\n let orderedColumns = this.orderedColumns;\n\n let found = false;\n let nextColumn: { key: string } | undefined;\n\n for (let column of orderedColumns) {\n if (found) {\n nextColumn = column;\n\n break;\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n if (!nextColumn) return;\n\n let nextPosition = this.get(nextColumn.key);\n\n this.swapWith(key, nextPosition);\n }\n\n /**\n * Performs a swap of the column's position with the column at position\n */\n @action\n swapWith(key: string, position: number) {\n let 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 let 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()].map((entry) => entry.join(' => ')).join(', ') +\n ` and the availableColumns are: ` +\n this.args.columns().map((column) => column.key) +\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 let keyByPosition = new Map<number, string>(\n [...this.orderedMap.entries()].map((entry) => entry.reverse() as [number, string])\n );\n\n for (let [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 (let [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 let result = this.orderedMap.get(key);\n\n assert(\n `No position found for ${key}. Is the column used within this table?`,\n /* 0 is falsey, but it's a valid value for position */\n undefined !== result\n );\n\n return result;\n }\n\n /**\n * The same as this.map, but with all the columns' information\n */\n @cached\n get orderedMap(): ReadonlyMap<string, number> {\n return orderOf(this.args.columns(), this.map);\n }\n\n @cached\n get orderedColumns(): Column[] {\n let availableColumns = this.args.columns();\n let availableByKey = availableColumns.reduce((keyMap, column) => {\n keyMap[column.key] = column;\n\n return keyMap;\n }, {} as Record<string, Column>);\n let mergedOrder = orderOf(availableColumns, this.map);\n\n let result: Column[] = Array.from({ length: availableColumns.length });\n\n for (let [key, position] of mergedOrder.entries()) {\n let column = availableByKey[key];\n\n assert(`Could not find column for pair: ${key} @ @{position}`, column);\n result[position] = column;\n }\n\n assert(\n `Generated orderedColumns' length (${result.filter(Boolean).length}) ` +\n `does not match the length of available columns (${availableColumns.length}). ` +\n `orderedColumns: ${result\n .filter(Boolean)\n .map((c) => c.key)\n .join(', ')} -- ` +\n `available columns: ${availableColumns.map((c) => c.key).join(', ')}`,\n result.filter(Boolean).length === availableColumns.length\n );\n\n return result.filter(Boolean);\n }\n}\n\n/**\n * @private\n *\n * Utility for helping determine the percieved order of a set of columns\n * given the original (default) ordering, and then user-configurations\n */\nexport function orderOf(\n columns: { key: string }[],\n currentOrder: Map<string, number>\n): Map<string, number> {\n let result = new Map<string, number>();\n let availableColumns = columns.map((column) => column.key);\n let availableSet = new Set(availableColumns);\n let current = new Map<number, string>(\n [...currentOrder.entries()].map(([key, position]) => [position, key])\n );\n\n /**\n * O(n * log(n)) ?\n */\n for (let i = 0; i < Math.max(columns.length, current.size); i++) {\n let orderedKey = current.get(i);\n\n if (orderedKey) {\n /**\n * If the currentOrder specifies columns not presently available,\n * ignore them\n */\n if (availableSet.has(orderedKey)) {\n result.set(orderedKey, i);\n continue;\n }\n }\n\n let availableKey: string | undefined;\n\n while ((availableKey = availableColumns.shift())) {\n if (result.has(availableKey) || currentOrder.has(availableKey)) {\n continue;\n }\n\n break;\n }\n\n if (!availableKey) {\n /**\n * The rest of our columns likely have their order set\n */\n continue;\n }\n\n result.set(availableKey, i);\n }\n\n return result;\n}\n"],"names":["ColumnReordering","BasePlugin","column","ColumnMeta","table","TableMeta","reset","tableMeta","meta","forTable","columns","constructor","columnOrder","moveLeft","key","moveRight","position","getPosition","value","setPosition","canMoveLeft","canMoveRight","length","cannotMoveLeft","cannotMoveRight","order","setAll","map","get","newPosition","swapWith","preferences","delete","ColumnOrder","availableColumns","save","entries","set","read","Map","Object","orderedColumns","for","tracked","existingOrder","action","args","TrackedMap","clear","found","nextColumn","reverse","nextPosition","validPositions","orderedMap","values","includes","currentPosition","assert","entry","join","size","undefined","keyByPosition","existingPosition","has","result","orderOf","availableByKey","reduce","keyMap","mergedOrder","Array","from","filter","Boolean","c","cached","currentOrder","availableSet","Set","current","i","Math","max","orderedKey","availableKey","shift"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-reordering/plugin.ts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\n\nimport { TrackedMap } from 'tracked-built-ins';\n\nimport { preferences } from '[public-plugin-types]';\n\nimport { BasePlugin, columns, meta } from '../-private/base';\n\nimport type { PluginPreferences } from '[public-plugin-types]';\nimport type { Column, Table } from '[public-types]';\n\ninterface ColumnReorderingPreferences extends PluginPreferences {\n table: {\n order?: Record<string, number>;\n };\n}\n\ndeclare module 'ember-headless-table/plugins' {\n interface Registry {\n ColumnReordering?: 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 let tableMeta = meta.forTable(this.table, ColumnReordering);\n\n tableMeta.reset();\n }\n\n get columns() {\n return meta.forTable(this.table, ColumnReordering).columns;\n }\n}\n\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n get #tableMeta() {\n return meta.forTable(this.column.table, ColumnReordering);\n }\n\n get position() {\n return this.#tableMeta.getPosition(this.column);\n }\n\n set position(value: number) {\n this.#tableMeta.setPosition(this.column, value);\n }\n\n get canMoveLeft() {\n return this.#tableMeta.getPosition(this.column) !== 0;\n }\n\n get canMoveRight() {\n return this.#tableMeta.getPosition(this.column) !== this.#tableMeta.columns.length - 1;\n }\n\n get cannotMoveLeft() {\n return !this.canMoveLeft;\n }\n\n get cannotMoveRight() {\n return !this.canMoveRight;\n }\n\n /**\n * Move the column one spot to the left\n */\n moveLeft = () => {\n this.#tableMeta.columnOrder.moveLeft(this.column.key);\n };\n\n /**\n * Move the column one spot to the right\n */\n moveRight = () => {\n this.#tableMeta.columnOrder.moveRight(this.column.key);\n };\n}\n\nexport class TableMeta {\n constructor(private table: Table) {}\n\n /**\n * @private\n *\n * We want to maintain the instance of this ColumnOrder class because\n * we allow the consumer of the table to swap out columns at any time.\n * When they do this, we want to maintain the order of the table, best we can.\n * This is also why the order of the columns is maintained via column key\n */\n @tracked\n columnOrder = new ColumnOrder({\n columns: () => this.availableColumns,\n save: this.save,\n existingOrder: this.read(),\n });\n\n /**\n * Get the curret order/position of a column\n */\n @action\n getPosition(column: Column) {\n return this.columnOrder.get(column.key);\n }\n\n /**\n * Swap the column with the column at `newPosition`\n */\n @action\n setPosition(column: Column, newPosition: number) {\n return this.columnOrder.swapWith(column.key, newPosition);\n }\n\n /**\n * Using a `ColumnOrder` instance, set the order of all columns\n */\n setOrder = (order: ColumnOrder) => {\n this.columnOrder.setAll(order.map);\n };\n\n /**\n * Revert to default config, delete preferences,\n * and clear the columnOrder\n */\n @action\n reset() {\n preferences.forTable(this.table, ColumnReordering).delete('order');\n this.columnOrder = new ColumnOrder({\n columns: () => this.availableColumns,\n save: this.save,\n });\n }\n\n /**\n * @private\n */\n @action\n save(map: Map<string, number>) {\n let order: Record<string, number> = {};\n\n for (let [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 let order = preferences.forTable(this.table, ColumnReordering).get('order');\n\n if (!order) return;\n\n return new Map<string, number>(Object.entries(order));\n }\n\n get columns() {\n return this.columnOrder.orderedColumns;\n }\n\n /**\n * @private\n * This isn't our data to expose, but it is useful to alias\n */\n private get availableColumns() {\n return columns.for(this.table, ColumnReordering);\n }\n}\n\n/**\n * @private\n * Used for keeping track of and updating column order\n */\nexport class ColumnOrder {\n /**\n * This map will be empty until we re-order something.\n */\n map = new TrackedMap<string, number>();\n\n constructor(\n private args: {\n columns: () => Column[];\n save?: (order: Map<string, number>) => void;\n existingOrder?: Map<string, number>;\n }\n ) {\n if (args.existingOrder) {\n this.map = new TrackedMap(args.existingOrder);\n }\n }\n\n /**\n * To account for columnVisibilty, we need to:\n * - get the list of visible columns\n * - get the column order (which preserves the order of hidden columns)\n * - skip over non-visible columns when determining the previous \"index\"\n * - set the position to whatever that is.\n */\n @action\n moveLeft(key: string) {\n let orderedColumns = this.orderedColumns;\n\n let found = false;\n let nextColumn: { key: string } | undefined;\n\n for (let column of orderedColumns.reverse()) {\n if (found) {\n nextColumn = column;\n\n break;\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n if (!nextColumn) return;\n\n let nextPosition = this.get(nextColumn.key);\n\n this.swapWith(key, nextPosition);\n }\n\n setAll = (map: Map<string, number>) => {\n this.map.clear();\n\n for (let [key, value] of map.entries()) {\n this.map.set(key, value);\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 next \"index\"\n * - set the position to whatever that is.\n */\n @action\n moveRight(key: string) {\n let orderedColumns = this.orderedColumns;\n\n let found = false;\n let nextColumn: { key: string } | undefined;\n\n for (let column of orderedColumns) {\n if (found) {\n nextColumn = column;\n\n break;\n }\n\n if (column.key === key) {\n found = true;\n }\n }\n\n if (!nextColumn) return;\n\n let nextPosition = this.get(nextColumn.key);\n\n this.swapWith(key, nextPosition);\n }\n\n /**\n * Performs a swap of the column's position with the column at position\n */\n @action\n swapWith(key: string, position: number) {\n let 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 let 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()].map((entry) => entry.join(' => ')).join(', ') +\n ` and the availableColumns are: ` +\n this.args.columns().map((column) => column.key) +\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 let keyByPosition = new Map<number, string>(\n [...this.orderedMap.entries()].map((entry) => entry.reverse() as [number, string])\n );\n\n for (let [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 (let [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 let result = this.orderedMap.get(key);\n\n assert(\n `No position found for ${key}. Is the column used within this table?`,\n /* 0 is falsey, but it's a valid value for position */\n undefined !== result\n );\n\n return result;\n }\n\n /**\n * The same as this.map, but with all the columns' information\n */\n @cached\n get orderedMap(): ReadonlyMap<string, number> {\n return orderOf(this.args.columns(), this.map);\n }\n\n @cached\n get orderedColumns(): Column[] {\n let availableColumns = this.args.columns();\n let availableByKey = availableColumns.reduce((keyMap, column) => {\n keyMap[column.key] = column;\n\n return keyMap;\n }, {} as Record<string, Column>);\n let mergedOrder = orderOf(availableColumns, this.map);\n\n let result: Column[] = Array.from({ length: availableColumns.length });\n\n for (let [key, position] of mergedOrder.entries()) {\n let column = availableByKey[key];\n\n assert(`Could not find column for pair: ${key} @ @{position}`, column);\n result[position] = column;\n }\n\n assert(\n `Generated orderedColumns' length (${result.filter(Boolean).length}) ` +\n `does not match the length of available columns (${availableColumns.length}). ` +\n `orderedColumns: ${result\n .filter(Boolean)\n .map((c) => c.key)\n .join(', ')} -- ` +\n `available columns: ${availableColumns.map((c) => c.key).join(', ')}`,\n result.filter(Boolean).length === availableColumns.length\n );\n\n return result.filter(Boolean);\n }\n}\n\n/**\n * @private\n *\n * Utility for helping determine the percieved order of a set of columns\n * given the original (default) ordering, and then user-configurations\n */\nexport function orderOf(\n columns: { key: string }[],\n currentOrder: Map<string, number>\n): Map<string, number> {\n let result = new Map<string, number>();\n let availableColumns = columns.map((column) => column.key);\n let availableSet = new Set(availableColumns);\n let current = new Map<number, string>(\n [...currentOrder.entries()].map(([key, position]) => [position, key])\n );\n\n /**\n * O(n * log(n)) ?\n */\n for (let i = 0; i < Math.max(columns.length, current.size); i++) {\n let orderedKey = current.get(i);\n\n if (orderedKey) {\n /**\n * If the currentOrder specifies columns not presently available,\n * ignore them\n */\n if (availableSet.has(orderedKey)) {\n result.set(orderedKey, i);\n continue;\n }\n }\n\n let availableKey: string | undefined;\n\n while ((availableKey = availableColumns.shift())) {\n if (result.has(availableKey) || currentOrder.has(availableKey)) {\n continue;\n }\n\n break;\n }\n\n if (!availableKey) {\n /**\n * The rest of our columns likely have their order set\n */\n continue;\n }\n\n result.set(availableKey, i);\n }\n\n return result;\n}\n"],"names":["cached","macroCondition","dependencySatisfies","importSync","ColumnReordering","BasePlugin","constructor","args","_defineProperty","column","ColumnMeta","table","TableMeta","reset","tableMeta","meta","forTable","columns","_tableMeta","WeakMap","_classPrivateFieldInitSpec","get","_get_tableMeta","set","_classPrivateFieldGet","columnOrder","moveLeft","key","moveRight","position","getPosition","value","setPosition","canMoveLeft","canMoveRight","length","cannotMoveLeft","cannotMoveRight","_class","_initializerDefineProperty","_descriptor","order","setAll","map","newPosition","swapWith","preferences","delete","ColumnOrder","availableColumns","save","entries","read","Map","Object","orderedColumns","for","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","existingOrder","action","getOwnPropertyDescriptor","_class3","TrackedMap","clear","found","nextColumn","reverse","nextPosition","validPositions","orderedMap","values","includes","currentPosition","assert","entry","join","size","undefined","keyByPosition","existingPosition","has","result","orderOf","availableByKey","reduce","keyMap","mergedOrder","Array","from","filter","Boolean","c","currentOrder","availableSet","Set","current","i","Math","max","orderedKey","availableKey","shift"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/plugins/column-reordering/utils.ts"],"sourcesContent":["import { meta } from '../-private/base';\nimport { ColumnReordering } from './plugin';\n\nimport type { Column } from '[public-types]';\n\ntype ColumnOrder = { key: string; position: number | undefined }[];\n\nexport function reorderColumns(columns: Column[], orderedColumns: ColumnOrder | undefined) {\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((orderedColumn) => column.key === orderedColumn.key);\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((column) => column !== undefined);\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,
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/plugins/column-reordering/utils.ts"],"sourcesContent":["import { meta } from '../-private/base';\nimport { ColumnReordering } from './plugin';\n\nimport type { Column } from '[public-types]';\n\ntype ColumnOrder = { key: string; position: number | undefined }[];\n\nexport function reorderColumns(columns: Column[], orderedColumns: ColumnOrder | undefined) {\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((orderedColumn) => column.key === orderedColumn.key);\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((column) => column !== undefined);\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,CAACC,OAAiB,EAAEC,cAAuC,EAAE;EACzF,IAAIA,cAAc,KAAKC,SAAS,EAAE;AAChC,IAAA,OAAOF,OAAO,CAAA;AAChB,GAAA;AAEA,EAAA,IAAIG,mBAA6B,GAAGC,KAAK,CAACC,IAAI,CAAC;IAC7CC,MAAM,EAAEN,OAAO,CAACM,MAAAA;AAClB,GAAC,CAAC,CAAA;AAEF,EAAA,KAAK,MAAMC,MAAM,IAAIP,OAAO,EAAE;AAC5B,IAAA,MAAMQ,aAAa,GAAGP,cAAc,CAACQ,IAAI,CAAED,aAAa,IAAKD,MAAM,CAACG,GAAG,KAAKF,aAAa,CAACE,GAAG,CAAC,CAAA;IAC9F,MAAMC,WAAW,GAAGC,IAAI,CAACC,SAAS,CAACN,MAAM,EAAEO,gBAAgB,CAAC,CAAA;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,CAAA;AACpD,OAAA;AAEA,MAAA,SAAA;AACF,KAAA;IAEA,MAAM;AAAEQ,MAAAA,QAAAA;AAAS,KAAC,GAAGP,aAAa,CAAA;IAElC,IAAIO,QAAQ,KAAKb,SAAS,IAAI,CAACC,mBAAmB,CAACY,QAAQ,CAAC,EAAE;AAC5DZ,MAAAA,mBAAmB,CAACY,QAAQ,CAAC,GAAGR,MAAM,CAAA;AACxC,KAAC,MAAM;AACLJ,MAAAA,mBAAmB,CAACa,IAAI,CAACT,MAAM,CAAC,CAAA;AAClC,KAAA;AACF,GAAA;EAEAJ,mBAAmB,GAAGA,mBAAmB,CAACc,MAAM,CAAEV,MAAM,IAAKA,MAAM,KAAKL,SAAS,CAAC,CAAA;AAElF,EAAA,OAAOC,mBAAmB,CAAA;AAC5B;;;;"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import Modifier from 'ember-modifier';
|
2
|
-
import { ColumnMeta } from "./plugin";
|
3
|
-
import { Column } from "../../-private/column";
|
2
|
+
import { ColumnMeta } from "./plugin.js";
|
3
|
+
import { Column } from "../../-private/column.js";
|
4
4
|
/**
|
5
5
|
* - why are mouse events used instead of drag events?
|
6
6
|
* - why not use the "draggable" attribute?
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { _ as _defineProperty } from '../../defineProperty-
|
1
|
+
import { _ as _defineProperty } from '../../defineProperty-4f0781e1.js';
|
2
2
|
import { registerDestructor } from '@ember/destroyable';
|
3
3
|
import { buildWaiter } from '@ember/test-waiters';
|
4
4
|
import Modifier from 'ember-modifier';
|
@@ -23,11 +23,14 @@ let waiter = buildWaiter('ColumnResizing#ResizeHandle');
|
|
23
23
|
class ResizeHandle extends Modifier {
|
24
24
|
constructor(...args) {
|
25
25
|
super(...args);
|
26
|
+
// Pointer
|
26
27
|
_defineProperty(this, "pointerStartX", 0);
|
27
28
|
_defineProperty(this, "pointerStartY", 0);
|
28
29
|
_defineProperty(this, "pointerX", 0);
|
29
30
|
_defineProperty(this, "pointerY", 0);
|
31
|
+
// Keyboard
|
30
32
|
_defineProperty(this, "keyDistance", 0);
|
33
|
+
// waiter
|
31
34
|
_defineProperty(this, "token", void 0);
|
32
35
|
_defineProperty(this, "isSetup", false);
|
33
36
|
_defineProperty(this, "setup", () => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"handle.js","sources":["../../../src/plugins/column-resizing/handle.ts"],"sourcesContent":["import { registerDestructor } from '@ember/destroyable';\nimport { buildWaiter } from '@ember/test-waiters';\n\nimport Modifier from 'ember-modifier';\n\nimport { meta } from '../-private/base';\nimport { ColumnResizing } from './plugin';\n\nimport type { ColumnMeta } from './plugin';\nimport type { Column } from '#/column';\n\nlet waiter = buildWaiter('ColumnResizing#ResizeHandle');\n\n/**\n * - why are mouse events used instead of drag events?\n * - why not use the \"draggable\" attribute?\n *\n * It seems drag events are more for files and/or moving images around on a page\n * dragging an image, for example, has a ghost of that image until it is dropped.\n * The same thing happens with text.\n * This prevents us from having total control of the styling of how dragging works.\n *\n *\n *\n */\n\nclass ResizeHandle extends Modifier<{ Args: { Positional: [Column] } }> {\n declare dragHandle: HTMLElement;\n declare column: Column;\n declare meta: ColumnMeta;\n\n // Pointer\n pointerStartX = 0;\n pointerStartY = 0;\n pointerX = 0;\n pointerY = 0;\n declare dragFrame: number;\n\n // Keyboard\n keyDistance = 0;\n declare keyFrame: number; // ha\n declare lastKey: number;\n\n // waiter\n token?: unknown;\n\n isSetup = false;\n modify(element: Element, [column]: [Column]) {\n this.column = column;\n this.meta = meta.forColumn(column, ColumnResizing);\n this.dragHandle = element as HTMLElement;\n\n if (!this.isSetup) {\n this.isSetup = true;\n this.setup();\n }\n }\n\n setup = () => {\n this.dragHandle.addEventListener('touchstart', this.dragStartHandler);\n this.dragHandle.addEventListener('mousedown', this.dragStartHandler);\n this.dragHandle.addEventListener('keydown', this.keyHandler);\n\n registerDestructor(this, () => {\n this.meta.isResizing = false;\n\n if (this.token) {\n waiter.endAsync(this.token);\n this.token = undefined;\n }\n\n this.dragHandle.removeEventListener('touchstart', this.dragStartHandler);\n this.dragHandle.removeEventListener('mousedown', this.dragStartHandler);\n window.removeEventListener('touchmove', this.dragMove);\n window.removeEventListener('touchend', this.dragEndHandler);\n window.removeEventListener('mousemove', this.dragMove);\n window.removeEventListener('mouseup', this.dragEndHandler);\n this.dragHandle.removeEventListener('keydown', this.keyHandler);\n });\n };\n\n setPosition = (event: Event) => {\n if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;\n\n if ('TouchEvent' in window && event instanceof TouchEvent) {\n let 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 let 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 queueUpdate = () => {\n cancelAnimationFrame(this.dragFrame);\n this.dragFrame = requestAnimationFrame(() => {\n this.meta.resize(this.pointerX - this.pointerStartX);\n this.pointerStartX = this.pointerX;\n });\n };\n\n dragEndHandler = () => {\n this.meta.isResizing = false;\n this.queueUpdate();\n\n if (this.token) {\n waiter.endAsync(this.token);\n this.token = undefined;\n }\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 let deltaT = new Date().getTime() - this.lastKey;\n let 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 'ember-headless-table/plugins';\n * import { resizeHandle, ColumnResizing } from 'ember-headless-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 'ember-headless-table/plugins';\n * import { resizeHandle, ColumnResizing } from 'ember-headless-table/plugins/column-resizing';\n *\n * export default class TableHead extends Component {\n * /* ✂️ *\\/\n *\n * isDragging = (column) => {\n * return meta.forColumn(column, ColumnResizing).isDragging;\n * }\n *\n * <template>\n * <thead>\n * <tr>\n * {{#each this.columns as |column|}}\n * <th class=\"header {{if (this.isDragging column) 'blue'}}\">\n * <span>{{column.name}}</span>\n * <button {{resizeHandle column}}></button>\n * </th>\n * {{/each}}\n * </tr>\n * </thead>\n * </template>\n * }\n * ```\n *\n *\n * @note\n * The logic here is copied from the drag slider in\n * https://limber.glimdown.com/\n * See: \"resize-handle\" on Limber's GitHub\n */\nexport const resizeHandle = ResizeHandle;\n"],"names":["waiter","buildWaiter","ResizeHandle","Modifier","dragHandle","addEventListener","dragStartHandler","keyHandler","registerDestructor","meta","isResizing","token","endAsync","undefined","removeEventListener","window","dragMove","dragEndHandler","event","PointerEvent","MouseEvent","TouchEvent","firstTouch","touches","pointerX","clientX","pointerY","clientY","pointerStartX","pointerStartY","cancelAnimationFrame","dragFrame","requestAnimationFrame","resize","queueUpdate","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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"}
|
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';\nimport { ColumnResizing } from './plugin';\n\nimport type { ColumnMeta } from './plugin';\nimport type { Column } from '#/column';\n\nlet waiter = buildWaiter('ColumnResizing#ResizeHandle');\n\n/**\n * - why are mouse events used instead of drag events?\n * - why not use the \"draggable\" attribute?\n *\n * It seems drag events are more for files and/or moving images around on a page\n * dragging an image, for example, has a ghost of that image until it is dropped.\n * The same thing happens with text.\n * This prevents us from having total control of the styling of how dragging works.\n *\n *\n *\n */\n\nclass ResizeHandle extends Modifier<{ Args: { Positional: [Column] } }> {\n declare dragHandle: HTMLElement;\n declare column: Column;\n declare meta: ColumnMeta;\n\n // Pointer\n pointerStartX = 0;\n pointerStartY = 0;\n pointerX = 0;\n pointerY = 0;\n declare dragFrame: number;\n\n // Keyboard\n keyDistance = 0;\n declare keyFrame: number; // ha\n declare lastKey: number;\n\n // waiter\n token?: unknown;\n\n isSetup = false;\n modify(element: Element, [column]: [Column]) {\n this.column = column;\n this.meta = meta.forColumn(column, ColumnResizing);\n this.dragHandle = element as HTMLElement;\n\n if (!this.isSetup) {\n this.isSetup = true;\n this.setup();\n }\n }\n\n setup = () => {\n this.dragHandle.addEventListener('touchstart', this.dragStartHandler);\n this.dragHandle.addEventListener('mousedown', this.dragStartHandler);\n this.dragHandle.addEventListener('keydown', this.keyHandler);\n\n registerDestructor(this, () => {\n this.meta.isResizing = false;\n\n if (this.token) {\n waiter.endAsync(this.token);\n this.token = undefined;\n }\n\n this.dragHandle.removeEventListener('touchstart', this.dragStartHandler);\n this.dragHandle.removeEventListener('mousedown', this.dragStartHandler);\n window.removeEventListener('touchmove', this.dragMove);\n window.removeEventListener('touchend', this.dragEndHandler);\n window.removeEventListener('mousemove', this.dragMove);\n window.removeEventListener('mouseup', this.dragEndHandler);\n this.dragHandle.removeEventListener('keydown', this.keyHandler);\n });\n };\n\n setPosition = (event: Event) => {\n if (!(event instanceof PointerEvent || event instanceof MouseEvent)) return;\n\n if ('TouchEvent' in window && event instanceof TouchEvent) {\n let 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 let 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 queueUpdate = () => {\n cancelAnimationFrame(this.dragFrame);\n this.dragFrame = requestAnimationFrame(() => {\n this.meta.resize(this.pointerX - this.pointerStartX);\n this.pointerStartX = this.pointerX;\n });\n };\n\n dragEndHandler = () => {\n this.meta.isResizing = false;\n this.queueUpdate();\n\n if (this.token) {\n waiter.endAsync(this.token);\n this.token = undefined;\n }\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 let deltaT = new Date().getTime() - this.lastKey;\n let 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 'ember-headless-table/plugins';\n * import { resizeHandle, ColumnResizing } from 'ember-headless-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 'ember-headless-table/plugins';\n * import { resizeHandle, ColumnResizing } from 'ember-headless-table/plugins/column-resizing';\n *\n * export default class TableHead extends Component {\n * /* ✂️ *\\/\n *\n * isDragging = (column) => {\n * return meta.forColumn(column, ColumnResizing).isDragging;\n * }\n *\n * <template>\n * <thead>\n * <tr>\n * {{#each this.columns as |column|}}\n * <th class=\"header {{if (this.isDragging column) 'blue'}}\">\n * <span>{{column.name}}</span>\n * <button {{resizeHandle column}}></button>\n * </th>\n * {{/each}}\n * </tr>\n * </thead>\n * </template>\n * }\n * ```\n *\n *\n * @note\n * The logic here is copied from the drag slider in\n * https://limber.glimdown.com/\n * See: \"resize-handle\" on Limber's GitHub\n */\nexport const resizeHandle = ResizeHandle;\n"],"names":["waiter","buildWaiter","ResizeHandle","Modifier","constructor","args","_defineProperty","dragHandle","addEventListener","dragStartHandler","keyHandler","registerDestructor","meta","isResizing","token","endAsync","undefined","removeEventListener","window","dragMove","dragEndHandler","event","PointerEvent","MouseEvent","TouchEvent","firstTouch","touches","pointerX","clientX","pointerY","clientY","pointerStartX","pointerStartY","cancelAnimationFrame","dragFrame","requestAnimationFrame","resize","queueUpdate","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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"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
export { resizeHandle } from "./handle";
|
2
|
-
export * from "./helpers";
|
3
|
-
export { ColumnResizing, ColumnResizing as Plugin } from "./plugin";
|
4
|
-
export type { ColumnOptions, TableOptions } from "./plugin";
|
1
|
+
export { resizeHandle } from "./handle.js";
|
2
|
+
export * from "./helpers.js";
|
3
|
+
export { ColumnResizing, ColumnResizing as Plugin } from "./plugin.js";
|
4
|
+
export type { ColumnOptions, TableOptions } from "./plugin.js";
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import { BasePlugin } from "../-private/base";
|
2
|
-
import { ColumnApi } from "../index";
|
3
|
-
import { Column, Table } from "../../index";
|
1
|
+
import { BasePlugin } from "../-private/base.js";
|
2
|
+
import { ColumnApi } from "../index.js";
|
3
|
+
import { Column, Table } from "../../index.js";
|
4
4
|
interface ColumnOptions {
|
5
5
|
/**
|
6
6
|
* Force a starting width
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import {
|
2
|
-
import { _ as _initializerDefineProperty } from '../../table-
|
1
|
+
import { _ as _classPrivateFieldGet } from '../../classPrivateFieldGet-0bfc0262.js';
|
2
|
+
import { _ as _initializerDefineProperty } from '../../table-443deac1.js';
|
3
3
|
import { _ as _applyDecoratedDescriptor } from '../../applyDecoratedDescriptor-6b986a67.js';
|
4
|
-
import { _ as _defineProperty } from '../../defineProperty-
|
4
|
+
import { _ as _defineProperty } from '../../defineProperty-4f0781e1.js';
|
5
5
|
import { macroCondition, dependencySatisfies, importSync } from '@embroider/macros';
|
6
6
|
import { tracked } from '@glimmer/tracking';
|
7
7
|
import { assert } from '@ember/debug';
|
@@ -33,6 +33,14 @@ class ColumnResizing extends BasePlugin {
|
|
33
33
|
element.setAttribute('data-test-is-resizable', `${columnMeta.isResizable}`);
|
34
34
|
applyStyles(element, columnMeta.style);
|
35
35
|
});
|
36
|
+
/**
|
37
|
+
* This is what ends up calling resize when the browesr changes
|
38
|
+
* (assuming that the containing element's styles stretch to fill the space)
|
39
|
+
*
|
40
|
+
* Later, when container queries are more broadly supported, we'll want to watch
|
41
|
+
* the container instead of the window to prevent unneeded updates (as a window can change
|
42
|
+
* size without the container changing size)
|
43
|
+
*/
|
36
44
|
_defineProperty(this, "containerModifier", resizeObserver);
|
37
45
|
}
|
38
46
|
reset() {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-resizing/plugin.ts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\n\nimport { BasePlugin, columns, meta, options } from '../-private/base';\nimport { applyStyles } from '../-private/utils';\nimport { getAccurateClientHeight, getAccurateClientWidth, totalGapOf } from './utils';\n\nimport type { ColumnApi } from '[public-plugin-types]';\nimport type { Column, Table } from '[public-types]';\n\nexport interface ColumnOptions {\n /**\n * Force a starting width\n * This may not be less than the minWidth\n */\n width?: number;\n /**\n * Default: 128px\n */\n minWidth?: number;\n /**\n * Flip if the column is resizable or not.\n * The default is whatever the table's plugin option is set to\n * (and then yet again true, if not set at all)\n */\n isResizable?: boolean;\n}\n\nexport interface TableOptions {\n /**\n * Toggle whether the table is able to be resized at all\n *\n * default :true\n */\n enabled?: boolean;\n\n /**\n * By default, each column's \"handle\" position is on the\n * left-hand side of the column.\n *\n * If, for style-reasons, you want to move it to the right,\n * this option should reflect that so that the calculations can be\n * updated to match the expected behavior of which column(s) grow/shrink\n *\n * Valid values are 'left' or 'right'\n */\n handlePosition?: string;\n}\n\ninterface Signature {\n Meta: {\n Column: ColumnMeta;\n Table: TableMeta;\n };\n Options: {\n Plugin: TableOptions;\n Column: ColumnOptions;\n };\n}\n\n/**\n * One instance of a plugin exists per table\n * but a plugin can have a \"Meta\" for each column\n */\nexport class ColumnResizing extends BasePlugin<Signature> {\n name = 'column-resizing';\n static features = ['columnWidth'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n };\n\n headerCellModifier = (element: HTMLElement, { column }: ColumnApi) => {\n let columnMeta = meta.forColumn(column, ColumnResizing);\n\n element.setAttribute('data-test-is-resizable', `${columnMeta.isResizable}`);\n\n applyStyles(element, columnMeta.style);\n };\n\n /**\n * This is what ends up calling resize when the browesr changes\n * (assuming that the containing element's styles stretch to fill the space)\n *\n * Later, when container queries are more broadly supported, we'll want to watch\n * the container instead of the window to prevent unneeded updates (as a window can change\n * size without the container changing size)\n */\n containerModifier = resizeObserver;\n\n reset() {\n let tableMeta = meta.forTable(this.table, ColumnResizing);\n\n tableMeta.reset();\n }\n}\n\nconst DEFAULT_COLUMN_OPTIONS = {\n minWidth: 128,\n};\n\nconst ALLOWED_COLUMN_OPTIONS = ['minWidth', 'width', 'isResizable'];\n\n/**\n * @private\n *\n * Contains resizable information for a particular column\n */\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n @tracked _width?: number;\n @tracked isResizing = false;\n\n get tableMeta() {\n return meta.forTable(this.column.table, ColumnResizing);\n }\n\n @cached\n get options() {\n let columnOptions = options.forColumn(this.column, ColumnResizing);\n let filteredOptions = Object.entries(columnOptions || {}).reduce((result, [k, v]) => {\n if (ALLOWED_COLUMN_OPTIONS.includes(k)) {\n result[k] = v;\n }\n\n return result;\n }, {} as Record<string, unknown>) as ColumnOptions;\n\n return {\n ...DEFAULT_COLUMN_OPTIONS,\n ...filteredOptions,\n };\n }\n\n get minWidth() {\n return this.options.minWidth;\n }\n\n get initialWidth() {\n return this.options.width;\n }\n\n get canShrink() {\n return this.width && this.width > this.minWidth;\n }\n\n get roomToShrink() {\n return this.width ? this.width - this.minWidth : 0;\n }\n\n get isResizable() {\n return this.options.isResizable ?? this.tableMeta.isResizable;\n }\n\n get hasResizeHandle() {\n let previous = columns.previous(this.column);\n\n if (!previous) return false;\n\n return this.isResizable && meta.forColumn(previous, ColumnResizing).isResizable;\n }\n\n get width() {\n let width = this._width ?? this.initialWidth;\n\n if (!width) {\n let { defaultColumnWidth } = this.tableMeta;\n\n width = defaultColumnWidth ? Math.max(defaultColumnWidth, this.minWidth) : this.minWidth;\n }\n\n return width;\n }\n\n set width(value) {\n this._width = value;\n }\n\n get style() {\n let styles: Partial<Pick<CSSStyleDeclaration, 'width' | 'minWidth'>> = {};\n\n if (this.width) styles.width = `${this.width}px`;\n if (this.minWidth) styles.minWidth = `${this.minWidth}px`;\n\n return styles;\n }\n\n @action\n resize(delta: number) {\n this.tableMeta.resizeColumn(this.column, delta);\n }\n}\n\n/**\n * @private\n *\n * individual column width must exclude:\n * - padding\n * - margin\n * - gap (partial)\n * - any other positioning offsets\n *\n * Otherwise the table will infinitely resize itself\n */\nfunction distributeDelta(delta: number, visibleColumns: Column[]) {\n if (delta === 0) return;\n\n let metas = visibleColumns.map((column) => meta.forColumn(column, ColumnResizing));\n\n let resizableMetas = metas.filter(\n (meta) => meta.isResizable && (delta < 0 ? meta.canShrink : true)\n );\n\n let columnDelta = delta / resizableMetas.length;\n\n for (let meta of resizableMetas) {\n assert('cannot resize a column that does not have a width', meta.width);\n meta.width = Math.max(meta.width + columnDelta, meta.minWidth);\n }\n}\n\n/**\n * @private\n *\n * Contains resizable and width information regarding the table as a whole\n */\nexport class TableMeta {\n constructor(private table: Table) {}\n\n @tracked scrollContainerHeight?: number;\n @tracked scrollContainerWidth?: number;\n\n get options() {\n return options.forTable(this.table, ColumnResizing);\n }\n\n get isResizable() {\n return this.options?.enabled ?? true;\n }\n\n get defaultColumnWidth() {\n if (!this.scrollContainerWidth) return;\n\n return (\n (this.scrollContainerWidth - this.totalInitialColumnWidths) /\n this.columnsWithoutInitialWidth.length\n );\n }\n\n get #availableColumns() {\n return columns.for(this.table, ColumnResizing);\n }\n\n get visibleColumnMetas() {\n return this.#availableColumns.map((column) => meta.forColumn(column, ColumnResizing));\n }\n\n get totalInitialColumnWidths() {\n return this.visibleColumnMetas.reduce((acc, meta) => (acc += meta.initialWidth ?? 0), 0);\n }\n\n get columnsWithoutInitialWidth() {\n return this.visibleColumnMetas.filter((meta) => !meta.initialWidth);\n }\n\n get totalVisibleColumnsWidth() {\n return this.visibleColumnMetas.reduce((acc, column) => (acc += column.width ?? 0), 0);\n }\n\n @action\n reset() {\n if (!this.scrollContainerWidth) return;\n\n for (let column of this.visibleColumnMetas) {\n column._width = undefined;\n }\n }\n\n @action\n onTableResize(entry: ResizeObserverEntry) {\n assert('scroll container element must be an HTMLElement', entry.target instanceof HTMLElement);\n\n this.scrollContainerWidth = getAccurateClientWidth(entry.target);\n this.scrollContainerHeight = getAccurateClientHeight(entry.target);\n\n // TODO: extract this to card-list and remove it from the plugin\n // card-list will provide its own column-resizing plugin\n // by sub-classing this one, and defining its own way of calculating the \"diff\"\n let totalGap = totalGapOf(entry.target.querySelector('[role=\"row\"]'));\n let diff = this.scrollContainerWidth - this.totalVisibleColumnsWidth - totalGap;\n\n distributeDelta(diff, this.#availableColumns);\n }\n\n @action\n resizeColumn(column: Column, delta: number) {\n if (delta === 0) return;\n\n /**\n * When the delta is negative, we are dragging to the next\n * when positive, we are dragging to the right\n * when dragging to the right, we want to grow the column\n * when dragging to the left, we grow the \"next\" column,\n * which shrinks the column we're dragging\n *\n * This assumes the resize handle for any column is on the right-hand\n * side of the column header\n *\n * If the resize handle were on the left-hand side of the column header\n * we'd want the column.next to be column.previous\n *\n * This is CSS dependent, and can be configured in plugin\n * options\n */\n let isDraggingRight = delta > 0;\n let position = this.options?.handlePosition ?? 'left';\n\n let growingColumn: Column | null | undefined;\n\n if (position === 'right') {\n growingColumn = isDraggingRight ? columns.next(column) : column;\n } else {\n growingColumn = isDraggingRight ? columns.previous(column) : column;\n }\n\n if (!growingColumn) return;\n\n let growingColumnMeta = meta.forColumn(growingColumn, ColumnResizing);\n\n assert('cannot resize a column that does not have a width', growingColumnMeta.width);\n\n let shrinkableColumns =\n delta > 0 ? columns.after(growingColumn) : columns.before(growingColumn).reverse();\n\n let shrinkableColumnsMetas = shrinkableColumns\n .map((column) => meta.forColumn(column, ColumnResizing))\n .filter((meta) => meta.canShrink);\n\n let remainder = Math.abs(delta);\n\n while (shrinkableColumnsMetas.length > 0) {\n let shrinkingColumnMeta = shrinkableColumnsMetas.shift();\n\n assert('cannot resize a column that does not have a width', shrinkingColumnMeta?.width);\n\n let actualDelta = Math.min(remainder, shrinkingColumnMeta.roomToShrink);\n\n growingColumnMeta.width += actualDelta;\n shrinkingColumnMeta.width -= actualDelta;\n remainder -= actualDelta;\n }\n }\n}\n\n/**\n * @private\n * included in the same file as the plugin due to circular dependency\n *\n * This goes on the containing element\n *\n * @example\n * ```hbs\n * <div {{resizeObserver @table}}>\n * <table>\n * ```\n */\nfunction resizeObserver(element: HTMLElement, table: Table) {\n let observer = getObserver(element, table);\n\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n };\n}\n\nlet CACHE = new WeakMap<HTMLElement, ResizeObserver>();\n\n/**\n * This is technically \"inefficient\" as you don't want too many resize\n * observers on a page, but tables are so big, that I don't see too many use cases\n * where you'd have 10+ tables on a page\n */\nfunction getObserver(element: HTMLElement, table: Table): ResizeObserver {\n let existing = CACHE.get(element);\n\n if (existing) return existing;\n\n existing = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n for (let entry of entries) {\n meta.forTable(table, ColumnResizing).onTableResize(entry);\n }\n });\n\n return existing;\n}\n"],"names":["ColumnResizing","BasePlugin","column","ColumnMeta","table","TableMeta","element","columnMeta","meta","forColumn","setAttribute","isResizable","applyStyles","style","resizeObserver","reset","tableMeta","forTable","DEFAULT_COLUMN_OPTIONS","minWidth","ALLOWED_COLUMN_OPTIONS","constructor","options","columnOptions","filteredOptions","Object","entries","reduce","result","k","v","includes","initialWidth","width","canShrink","roomToShrink","hasResizeHandle","previous","columns","_width","defaultColumnWidth","Math","max","value","styles","resize","delta","resizeColumn","tracked","cached","action","distributeDelta","visibleColumns","metas","map","resizableMetas","filter","columnDelta","length","assert","enabled","scrollContainerWidth","totalInitialColumnWidths","columnsWithoutInitialWidth","visibleColumnMetas","acc","totalVisibleColumnsWidth","undefined","onTableResize","entry","target","HTMLElement","getAccurateClientWidth","scrollContainerHeight","getAccurateClientHeight","totalGap","totalGapOf","querySelector","diff","isDraggingRight","position","handlePosition","growingColumn","next","growingColumnMeta","shrinkableColumns","after","before","reverse","shrinkableColumnsMetas","remainder","abs","shrinkingColumnMeta","shift","actualDelta","min","for","observer","getObserver","observe","unobserve","CACHE","WeakMap","existing","get","ResizeObserver"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-resizing/plugin.ts"],"sourcesContent":["import { cached, tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { action } from '@ember/object';\n\nimport { BasePlugin, columns, meta, options } from '../-private/base';\nimport { applyStyles } from '../-private/utils';\nimport { getAccurateClientHeight, getAccurateClientWidth, totalGapOf } from './utils';\n\nimport type { ColumnApi } from '[public-plugin-types]';\nimport type { Column, Table } from '[public-types]';\n\nexport interface ColumnOptions {\n /**\n * Force a starting width\n * This may not be less than the minWidth\n */\n width?: number;\n /**\n * Default: 128px\n */\n minWidth?: number;\n /**\n * Flip if the column is resizable or not.\n * The default is whatever the table's plugin option is set to\n * (and then yet again true, if not set at all)\n */\n isResizable?: boolean;\n}\n\nexport interface TableOptions {\n /**\n * Toggle whether the table is able to be resized at all\n *\n * default :true\n */\n enabled?: boolean;\n\n /**\n * By default, each column's \"handle\" position is on the\n * left-hand side of the column.\n *\n * If, for style-reasons, you want to move it to the right,\n * this option should reflect that so that the calculations can be\n * updated to match the expected behavior of which column(s) grow/shrink\n *\n * Valid values are 'left' or 'right'\n */\n handlePosition?: string;\n}\n\ninterface Signature {\n Meta: {\n Column: ColumnMeta;\n Table: TableMeta;\n };\n Options: {\n Plugin: TableOptions;\n Column: ColumnOptions;\n };\n}\n\n/**\n * One instance of a plugin exists per table\n * but a plugin can have a \"Meta\" for each column\n */\nexport class ColumnResizing extends BasePlugin<Signature> {\n name = 'column-resizing';\n static features = ['columnWidth'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n };\n\n headerCellModifier = (element: HTMLElement, { column }: ColumnApi) => {\n let columnMeta = meta.forColumn(column, ColumnResizing);\n\n element.setAttribute('data-test-is-resizable', `${columnMeta.isResizable}`);\n\n applyStyles(element, columnMeta.style);\n };\n\n /**\n * This is what ends up calling resize when the browesr changes\n * (assuming that the containing element's styles stretch to fill the space)\n *\n * Later, when container queries are more broadly supported, we'll want to watch\n * the container instead of the window to prevent unneeded updates (as a window can change\n * size without the container changing size)\n */\n containerModifier = resizeObserver;\n\n reset() {\n let tableMeta = meta.forTable(this.table, ColumnResizing);\n\n tableMeta.reset();\n }\n}\n\nconst DEFAULT_COLUMN_OPTIONS = {\n minWidth: 128,\n};\n\nconst ALLOWED_COLUMN_OPTIONS = ['minWidth', 'width', 'isResizable'];\n\n/**\n * @private\n *\n * Contains resizable information for a particular column\n */\nexport class ColumnMeta {\n constructor(private column: Column) {}\n\n @tracked _width?: number;\n @tracked isResizing = false;\n\n get tableMeta() {\n return meta.forTable(this.column.table, ColumnResizing);\n }\n\n @cached\n get options() {\n let columnOptions = options.forColumn(this.column, ColumnResizing);\n let filteredOptions = Object.entries(columnOptions || {}).reduce((result, [k, v]) => {\n if (ALLOWED_COLUMN_OPTIONS.includes(k)) {\n result[k] = v;\n }\n\n return result;\n }, {} as Record<string, unknown>) as ColumnOptions;\n\n return {\n ...DEFAULT_COLUMN_OPTIONS,\n ...filteredOptions,\n };\n }\n\n get minWidth() {\n return this.options.minWidth;\n }\n\n get initialWidth() {\n return this.options.width;\n }\n\n get canShrink() {\n return this.width && this.width > this.minWidth;\n }\n\n get roomToShrink() {\n return this.width ? this.width - this.minWidth : 0;\n }\n\n get isResizable() {\n return this.options.isResizable ?? this.tableMeta.isResizable;\n }\n\n get hasResizeHandle() {\n let previous = columns.previous(this.column);\n\n if (!previous) return false;\n\n return this.isResizable && meta.forColumn(previous, ColumnResizing).isResizable;\n }\n\n get width() {\n let width = this._width ?? this.initialWidth;\n\n if (!width) {\n let { defaultColumnWidth } = this.tableMeta;\n\n width = defaultColumnWidth ? Math.max(defaultColumnWidth, this.minWidth) : this.minWidth;\n }\n\n return width;\n }\n\n set width(value) {\n this._width = value;\n }\n\n get style() {\n let styles: Partial<Pick<CSSStyleDeclaration, 'width' | 'minWidth'>> = {};\n\n if (this.width) styles.width = `${this.width}px`;\n if (this.minWidth) styles.minWidth = `${this.minWidth}px`;\n\n return styles;\n }\n\n @action\n resize(delta: number) {\n this.tableMeta.resizeColumn(this.column, delta);\n }\n}\n\n/**\n * @private\n *\n * individual column width must exclude:\n * - padding\n * - margin\n * - gap (partial)\n * - any other positioning offsets\n *\n * Otherwise the table will infinitely resize itself\n */\nfunction distributeDelta(delta: number, visibleColumns: Column[]) {\n if (delta === 0) return;\n\n let metas = visibleColumns.map((column) => meta.forColumn(column, ColumnResizing));\n\n let resizableMetas = metas.filter(\n (meta) => meta.isResizable && (delta < 0 ? meta.canShrink : true)\n );\n\n let columnDelta = delta / resizableMetas.length;\n\n for (let meta of resizableMetas) {\n assert('cannot resize a column that does not have a width', meta.width);\n meta.width = Math.max(meta.width + columnDelta, meta.minWidth);\n }\n}\n\n/**\n * @private\n *\n * Contains resizable and width information regarding the table as a whole\n */\nexport class TableMeta {\n constructor(private table: Table) {}\n\n @tracked scrollContainerHeight?: number;\n @tracked scrollContainerWidth?: number;\n\n get options() {\n return options.forTable(this.table, ColumnResizing);\n }\n\n get isResizable() {\n return this.options?.enabled ?? true;\n }\n\n get defaultColumnWidth() {\n if (!this.scrollContainerWidth) return;\n\n return (\n (this.scrollContainerWidth - this.totalInitialColumnWidths) /\n this.columnsWithoutInitialWidth.length\n );\n }\n\n get #availableColumns() {\n return columns.for(this.table, ColumnResizing);\n }\n\n get visibleColumnMetas() {\n return this.#availableColumns.map((column) => meta.forColumn(column, ColumnResizing));\n }\n\n get totalInitialColumnWidths() {\n return this.visibleColumnMetas.reduce((acc, meta) => (acc += meta.initialWidth ?? 0), 0);\n }\n\n get columnsWithoutInitialWidth() {\n return this.visibleColumnMetas.filter((meta) => !meta.initialWidth);\n }\n\n get totalVisibleColumnsWidth() {\n return this.visibleColumnMetas.reduce((acc, column) => (acc += column.width ?? 0), 0);\n }\n\n @action\n reset() {\n if (!this.scrollContainerWidth) return;\n\n for (let column of this.visibleColumnMetas) {\n column._width = undefined;\n }\n }\n\n @action\n onTableResize(entry: ResizeObserverEntry) {\n assert('scroll container element must be an HTMLElement', entry.target instanceof HTMLElement);\n\n this.scrollContainerWidth = getAccurateClientWidth(entry.target);\n this.scrollContainerHeight = getAccurateClientHeight(entry.target);\n\n // TODO: extract this to card-list and remove it from the plugin\n // card-list will provide its own column-resizing plugin\n // by sub-classing this one, and defining its own way of calculating the \"diff\"\n let totalGap = totalGapOf(entry.target.querySelector('[role=\"row\"]'));\n let diff = this.scrollContainerWidth - this.totalVisibleColumnsWidth - totalGap;\n\n distributeDelta(diff, this.#availableColumns);\n }\n\n @action\n resizeColumn(column: Column, delta: number) {\n if (delta === 0) return;\n\n /**\n * When the delta is negative, we are dragging to the next\n * when positive, we are dragging to the right\n * when dragging to the right, we want to grow the column\n * when dragging to the left, we grow the \"next\" column,\n * which shrinks the column we're dragging\n *\n * This assumes the resize handle for any column is on the right-hand\n * side of the column header\n *\n * If the resize handle were on the left-hand side of the column header\n * we'd want the column.next to be column.previous\n *\n * This is CSS dependent, and can be configured in plugin\n * options\n */\n let isDraggingRight = delta > 0;\n let position = this.options?.handlePosition ?? 'left';\n\n let growingColumn: Column | null | undefined;\n\n if (position === 'right') {\n growingColumn = isDraggingRight ? columns.next(column) : column;\n } else {\n growingColumn = isDraggingRight ? columns.previous(column) : column;\n }\n\n if (!growingColumn) return;\n\n let growingColumnMeta = meta.forColumn(growingColumn, ColumnResizing);\n\n assert('cannot resize a column that does not have a width', growingColumnMeta.width);\n\n let shrinkableColumns =\n delta > 0 ? columns.after(growingColumn) : columns.before(growingColumn).reverse();\n\n let shrinkableColumnsMetas = shrinkableColumns\n .map((column) => meta.forColumn(column, ColumnResizing))\n .filter((meta) => meta.canShrink);\n\n let remainder = Math.abs(delta);\n\n while (shrinkableColumnsMetas.length > 0) {\n let shrinkingColumnMeta = shrinkableColumnsMetas.shift();\n\n assert('cannot resize a column that does not have a width', shrinkingColumnMeta?.width);\n\n let actualDelta = Math.min(remainder, shrinkingColumnMeta.roomToShrink);\n\n growingColumnMeta.width += actualDelta;\n shrinkingColumnMeta.width -= actualDelta;\n remainder -= actualDelta;\n }\n }\n}\n\n/**\n * @private\n * included in the same file as the plugin due to circular dependency\n *\n * This goes on the containing element\n *\n * @example\n * ```hbs\n * <div {{resizeObserver @table}}>\n * <table>\n * ```\n */\nfunction resizeObserver(element: HTMLElement, table: Table) {\n let observer = getObserver(element, table);\n\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n };\n}\n\nlet CACHE = new WeakMap<HTMLElement, ResizeObserver>();\n\n/**\n * This is technically \"inefficient\" as you don't want too many resize\n * observers on a page, but tables are so big, that I don't see too many use cases\n * where you'd have 10+ tables on a page\n */\nfunction getObserver(element: HTMLElement, table: Table): ResizeObserver {\n let existing = CACHE.get(element);\n\n if (existing) return existing;\n\n existing = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n for (let entry of entries) {\n meta.forTable(table, ColumnResizing).onTableResize(entry);\n }\n });\n\n return existing;\n}\n"],"names":["cached","macroCondition","dependencySatisfies","importSync","ColumnResizing","BasePlugin","constructor","args","_defineProperty","column","ColumnMeta","table","TableMeta","element","columnMeta","meta","forColumn","setAttribute","isResizable","applyStyles","style","resizeObserver","reset","tableMeta","forTable","DEFAULT_COLUMN_OPTIONS","minWidth","ALLOWED_COLUMN_OPTIONS","_class","_initializerDefineProperty","_descriptor","_descriptor2","options","columnOptions","filteredOptions","Object","entries","reduce","result","k","v","includes","initialWidth","width","canShrink","roomToShrink","hasResizeHandle","previous","columns","_width","defaultColumnWidth","Math","max","value","styles","resize","delta","resizeColumn","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","getOwnPropertyDescriptor","action","distributeDelta","visibleColumns","metas","map","resizableMetas","filter","columnDelta","length","assert","_class3","_availableColumns","WeakMap","_classPrivateFieldInitSpec","get","_get_availableColumns","set","_descriptor3","_descriptor4","enabled","scrollContainerWidth","totalInitialColumnWidths","columnsWithoutInitialWidth","visibleColumnMetas","_classPrivateFieldGet","acc","totalVisibleColumnsWidth","undefined","onTableResize","entry","target","HTMLElement","getAccurateClientWidth","scrollContainerHeight","getAccurateClientHeight","totalGap","totalGapOf","querySelector","diff","isDraggingRight","position","handlePosition","growingColumn","next","growingColumnMeta","shrinkableColumns","after","before","reverse","shrinkableColumnsMetas","remainder","abs","shrinkingColumnMeta","shift","actualDelta","min","for","observer","getObserver","observe","unobserve","CACHE","existing","ResizeObserver"],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resize-observer.js","sources":["../../../src/plugins/column-resizing/resize-observer.ts"],"sourcesContent":["import { isDestroyed, isDestroying } from '@ember/destroyable';\n\n/**\n * @private\n * included in the same file as the plugin due to circular dependency\n *\n * This goes on the containing element\n *\n * @example\n * ```hbs\n * <div {{resizeObserver @table}}>\n * <table>\n * ```\n */\nexport function resizeObserver(element: HTMLElement, table: any) {\n let observer = getObserver(element, table);\n\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n };\n}\n\nlet CACHE = new WeakMap<HTMLElement, ResizeObserver>();\n\n/**\n * This is technically \"inefficient\" as you don't want too many resize\n * observers on a page, but tables are so big, that I don't see too many use cases\n * where you'd have 10+ tables on a page\n */\nfunction getObserver(element: HTMLElement, table: any): ResizeObserver {\n let existing = CACHE.get(element);\n\n if (existing) return existing;\n\n existing = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n if (isDestroyed(table) || isDestroying(table)) {\n return;\n }\n\n for (let entry of entries) {\n table.handleScrollContainerResize(entry);\n }\n });\n\n return existing;\n}\n"],"names":["resizeObserver","element","table","observer","getObserver","observe","unobserve","CACHE","WeakMap","existing","get","ResizeObserver","entries","isDestroyed","isDestroying","entry","handleScrollContainerResize"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,
|
1
|
+
{"version":3,"file":"resize-observer.js","sources":["../../../src/plugins/column-resizing/resize-observer.ts"],"sourcesContent":["import { isDestroyed, isDestroying } from '@ember/destroyable';\n\n/**\n * @private\n * included in the same file as the plugin due to circular dependency\n *\n * This goes on the containing element\n *\n * @example\n * ```hbs\n * <div {{resizeObserver @table}}>\n * <table>\n * ```\n */\nexport function resizeObserver(element: HTMLElement, table: any) {\n let observer = getObserver(element, table);\n\n observer.observe(element);\n\n return () => {\n observer.unobserve(element);\n };\n}\n\nlet CACHE = new WeakMap<HTMLElement, ResizeObserver>();\n\n/**\n * This is technically \"inefficient\" as you don't want too many resize\n * observers on a page, but tables are so big, that I don't see too many use cases\n * where you'd have 10+ tables on a page\n */\nfunction getObserver(element: HTMLElement, table: any): ResizeObserver {\n let existing = CACHE.get(element);\n\n if (existing) return existing;\n\n existing = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n if (isDestroyed(table) || isDestroying(table)) {\n return;\n }\n\n for (let entry of entries) {\n table.handleScrollContainerResize(entry);\n }\n });\n\n return existing;\n}\n"],"names":["resizeObserver","element","table","observer","getObserver","observe","unobserve","CACHE","WeakMap","existing","get","ResizeObserver","entries","isDestroyed","isDestroying","entry","handleScrollContainerResize"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,cAAcA,CAACC,OAAoB,EAAEC,KAAU,EAAE;AAC/D,EAAA,IAAIC,QAAQ,GAAGC,WAAW,CAACH,OAAO,EAAEC,KAAK,CAAC,CAAA;AAE1CC,EAAAA,QAAQ,CAACE,OAAO,CAACJ,OAAO,CAAC,CAAA;AAEzB,EAAA,OAAO,MAAM;AACXE,IAAAA,QAAQ,CAACG,SAAS,CAACL,OAAO,CAAC,CAAA;GAC5B,CAAA;AACH,CAAA;AAEA,IAAIM,KAAK,GAAG,IAAIC,OAAO,EAA+B,CAAA;;AAEtD;AACA;AACA;AACA;AACA;AACA,SAASJ,WAAWA,CAACH,OAAoB,EAAEC,KAAU,EAAkB;AACrE,EAAA,IAAIO,QAAQ,GAAGF,KAAK,CAACG,GAAG,CAACT,OAAO,CAAC,CAAA;EAEjC,IAAIQ,QAAQ,EAAE,OAAOA,QAAQ,CAAA;AAE7BA,EAAAA,QAAQ,GAAG,IAAIE,cAAc,CAAEC,OAA8B,IAAK;IAChE,IAAIC,WAAW,CAACX,KAAK,CAAC,IAAIY,YAAY,CAACZ,KAAK,CAAC,EAAE;AAC7C,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,KAAK,IAAIa,KAAK,IAAIH,OAAO,EAAE;AACzBV,MAAAA,KAAK,CAACc,2BAA2B,CAACD,KAAK,CAAC,CAAA;AAC1C,KAAA;AACF,GAAC,CAAC,CAAA;AAEF,EAAA,OAAON,QAAQ,CAAA;AACjB;;;;"}
|
@@ -1,3 +1,3 @@
|
|
1
|
-
export * from "./helpers";
|
2
|
-
export { ColumnVisibility, ColumnVisibility as Plugin } from "./plugin";
|
3
|
-
export type { Signature } from "./plugin";
|
1
|
+
export * from "./helpers.js";
|
2
|
+
export { ColumnVisibility, ColumnVisibility as Plugin } from "./plugin.js";
|
3
|
+
export type { Signature } from "./plugin.js";
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import { BasePlugin } from "../-private/base";
|
2
|
-
import { Plugin, PluginPreferences } from "../index";
|
3
|
-
import { Column, Table } from "../../index";
|
1
|
+
import { BasePlugin } from "../-private/base.js";
|
2
|
+
import { Plugin, PluginPreferences } from "../index.js";
|
3
|
+
import { Column, Table } from "../../index.js";
|
4
4
|
interface ColumnVisibilityPreferences extends PluginPreferences {
|
5
5
|
columns: {
|
6
6
|
[columnKey: string]: {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { _ as _applyDecoratedDescriptor } from '../../applyDecoratedDescriptor-6b986a67.js';
|
2
|
-
import { _ as _defineProperty } from '../../defineProperty-
|
2
|
+
import { _ as _defineProperty } from '../../defineProperty-4f0781e1.js';
|
3
3
|
import { macroCondition, dependencySatisfies, importSync } from '@embroider/macros';
|
4
4
|
import '@glimmer/tracking';
|
5
5
|
import { action } from '@ember/object';
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-visibility/plugin.ts"],"sourcesContent":["import { cached } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nimport { BasePlugin, meta, options, preferences } from '../-private/base';\n\nimport type { Plugin, PluginPreferences } from '[public-plugin-types]';\nimport type { Column, Table } from '[public-types]';\n\ninterface ColumnVisibilityPreferences extends PluginPreferences {\n columns: {\n [columnKey: string]: {\n isVisible?: boolean;\n };\n };\n}\n\ndeclare module 'ember-headless-table/plugins' {\n interface Registry {\n ColumnVisibility?: ColumnVisibilityPreferences;\n }\n}\n\nexport interface Signature {\n Meta: {\n Table: TableMeta;\n Column: ColumnMeta;\n };\n Options: {\n Plugin: {\n enabled?: boolean;\n };\n Column: {\n /**\n * The default visibilty of the column, when rendered.\n * The column can still be toggled on and off.\n *\n * When interacting with preferences, the value stored in preferenced\n * will be the inverse of this value (to save space in storage).\n */\n isVisible?: boolean;\n };\n };\n}\n\nexport class ColumnVisibility extends BasePlugin<Signature> implements Plugin<Signature> {\n name = 'column-visibility';\n static features = ['columnVisibility'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n };\n\n reset() {\n /**\n * Global preference, not scoped to plugin\n */\n for (let column of this.table.columns) {\n let defaultValue = options.forColumn(column, ColumnVisibility)?.isVisible;\n let current = meta.forColumn(column, ColumnVisibility).isVisible;\n\n if (defaultValue !== current) {\n preferences.forColumn(column, ColumnVisibility).delete('isVisible');\n }\n }\n }\n\n get columns() {\n return meta.forTable(this.table, ColumnVisibility).visibleColumns;\n }\n}\n\nexport class ColumnMeta<Data = unknown> {\n constructor(private column: Column<Data>) {}\n\n get isVisible(): boolean {\n let columnPreferences = preferences.forColumn(this.column, ColumnVisibility);\n let columnOptions = options.forColumn(this.column, ColumnVisibility);\n\n return Boolean(columnPreferences.get('isVisible') ?? columnOptions?.isVisible ?? true);\n }\n\n get isHidden(): boolean {\n return !this.isVisible;\n }\n\n hide = () => {\n if (!this.isVisible) return;\n\n let myPreferences = preferences.forColumn(this.column, ColumnVisibility);\n let myOptions = options.forColumn(this.column, ColumnVisibility);\n let currentSaved = myPreferences.get('isVisible');\n let willBeDefault = Boolean(currentSaved) === !myOptions?.isVisible;\n\n if (willBeDefault) {\n myPreferences.set('isVisible', false);\n // TODO: open an issue about tracked-built-ins' delete not being reactive\n // myPreferences.delete('isVisible');\n\n return;\n }\n\n myPreferences.set('isVisible', false);\n };\n\n show = () => {\n if (this.isVisible) return;\n\n let myPreferences = preferences.forColumn(this.column, ColumnVisibility);\n let myOptions = options.forColumn(this.column, ColumnVisibility);\n let currentSaved = myPreferences.get('isVisible');\n let willBeDefault = currentSaved === !myOptions?.isVisible;\n\n if (willBeDefault) {\n myPreferences.set('isVisible', true);\n // TODO: open an issue about tracked-built-ins' delete not being reactive\n // myPreferences.delete('isVisible');\n\n return;\n }\n\n myPreferences.set('isVisible', true);\n };\n\n toggle = () => {\n if (this.isVisible) {\n this.hide();\n\n return;\n }\n\n this.show();\n };\n}\n\nexport class TableMeta<Data = unknown> {\n constructor(private table: Table<Data>) {}\n\n @cached\n get visibleColumns(): Column<Data>[] {\n let allColumns = this.table.columns.values();\n\n return allColumns.filter((column) => {\n let columnMeta = meta.forColumn(column, ColumnVisibility);\n\n return columnMeta.isVisible;\n });\n }\n\n @action\n toggleColumnVisibility(column: Column<Data>) {\n let columnMeta = meta.forColumn(column, ColumnVisibility);\n\n columnMeta.toggle();\n }\n}\n"],"names":["ColumnVisibility","BasePlugin","column","ColumnMeta","table","TableMeta","reset","columns","defaultValue","options","forColumn","isVisible","current","meta","preferences","delete","forTable","visibleColumns","
|
1
|
+
{"version":3,"file":"plugin.js","sources":["../../../src/plugins/column-visibility/plugin.ts"],"sourcesContent":["import { cached } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nimport { BasePlugin, meta, options, preferences } from '../-private/base';\n\nimport type { Plugin, PluginPreferences } from '[public-plugin-types]';\nimport type { Column, Table } from '[public-types]';\n\ninterface ColumnVisibilityPreferences extends PluginPreferences {\n columns: {\n [columnKey: string]: {\n isVisible?: boolean;\n };\n };\n}\n\ndeclare module 'ember-headless-table/plugins' {\n interface Registry {\n ColumnVisibility?: ColumnVisibilityPreferences;\n }\n}\n\nexport interface Signature {\n Meta: {\n Table: TableMeta;\n Column: ColumnMeta;\n };\n Options: {\n Plugin: {\n enabled?: boolean;\n };\n Column: {\n /**\n * The default visibilty of the column, when rendered.\n * The column can still be toggled on and off.\n *\n * When interacting with preferences, the value stored in preferenced\n * will be the inverse of this value (to save space in storage).\n */\n isVisible?: boolean;\n };\n };\n}\n\nexport class ColumnVisibility extends BasePlugin<Signature> implements Plugin<Signature> {\n name = 'column-visibility';\n static features = ['columnVisibility'];\n\n meta = {\n column: ColumnMeta,\n table: TableMeta,\n };\n\n reset() {\n /**\n * Global preference, not scoped to plugin\n */\n for (let column of this.table.columns) {\n let defaultValue = options.forColumn(column, ColumnVisibility)?.isVisible;\n let current = meta.forColumn(column, ColumnVisibility).isVisible;\n\n if (defaultValue !== current) {\n preferences.forColumn(column, ColumnVisibility).delete('isVisible');\n }\n }\n }\n\n get columns() {\n return meta.forTable(this.table, ColumnVisibility).visibleColumns;\n }\n}\n\nexport class ColumnMeta<Data = unknown> {\n constructor(private column: Column<Data>) {}\n\n get isVisible(): boolean {\n let columnPreferences = preferences.forColumn(this.column, ColumnVisibility);\n let columnOptions = options.forColumn(this.column, ColumnVisibility);\n\n return Boolean(columnPreferences.get('isVisible') ?? columnOptions?.isVisible ?? true);\n }\n\n get isHidden(): boolean {\n return !this.isVisible;\n }\n\n hide = () => {\n if (!this.isVisible) return;\n\n let myPreferences = preferences.forColumn(this.column, ColumnVisibility);\n let myOptions = options.forColumn(this.column, ColumnVisibility);\n let currentSaved = myPreferences.get('isVisible');\n let willBeDefault = Boolean(currentSaved) === !myOptions?.isVisible;\n\n if (willBeDefault) {\n myPreferences.set('isVisible', false);\n // TODO: open an issue about tracked-built-ins' delete not being reactive\n // myPreferences.delete('isVisible');\n\n return;\n }\n\n myPreferences.set('isVisible', false);\n };\n\n show = () => {\n if (this.isVisible) return;\n\n let myPreferences = preferences.forColumn(this.column, ColumnVisibility);\n let myOptions = options.forColumn(this.column, ColumnVisibility);\n let currentSaved = myPreferences.get('isVisible');\n let willBeDefault = currentSaved === !myOptions?.isVisible;\n\n if (willBeDefault) {\n myPreferences.set('isVisible', true);\n // TODO: open an issue about tracked-built-ins' delete not being reactive\n // myPreferences.delete('isVisible');\n\n return;\n }\n\n myPreferences.set('isVisible', true);\n };\n\n toggle = () => {\n if (this.isVisible) {\n this.hide();\n\n return;\n }\n\n this.show();\n };\n}\n\nexport class TableMeta<Data = unknown> {\n constructor(private table: Table<Data>) {}\n\n @cached\n get visibleColumns(): Column<Data>[] {\n let allColumns = this.table.columns.values();\n\n return allColumns.filter((column) => {\n let columnMeta = meta.forColumn(column, ColumnVisibility);\n\n return columnMeta.isVisible;\n });\n }\n\n @action\n toggleColumnVisibility(column: Column<Data>) {\n let columnMeta = meta.forColumn(column, ColumnVisibility);\n\n columnMeta.toggle();\n }\n}\n"],"names":["cached","macroCondition","dependencySatisfies","importSync","ColumnVisibility","BasePlugin","constructor","args","_defineProperty","column","ColumnMeta","table","TableMeta","reset","columns","defaultValue","options","forColumn","isVisible","current","meta","preferences","delete","forTable","visibleColumns","myPreferences","myOptions","currentSaved","get","willBeDefault","Boolean","set","hide","show","columnPreferences","columnOptions","isHidden","_class","allColumns","values","filter","columnMeta","toggleColumnVisibility","toggle","_applyDecoratedDescriptor","prototype","Object","getOwnPropertyDescriptor","action"],"mappings":"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"}
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import { Column } from "../../index";
|
1
|
+
import { Column } from "../../index.js";
|
2
2
|
/**
|
3
3
|
* Query a specific column's current sort direction
|
4
4
|
*/
|
5
|
-
declare const sortDirection: (column: Column) => import("./index").SortDirection;
|
5
|
+
declare const sortDirection: (column: Column) => import("./index.js").SortDirection;
|
6
6
|
/**
|
7
7
|
* Ask if a column is sortable
|
8
8
|
*/
|
@@ -1,5 +1,5 @@
|
|
1
|
-
export * from "./helpers";
|
2
|
-
export { Sorting as Plugin, Sorting as DataSorting } from "./plugin";
|
3
|
-
export { SortDirection } from "./types";
|
4
|
-
export type { Signature } from "./plugin";
|
5
|
-
export type { Sort, SortItem } from "./types";
|
1
|
+
export * from "./helpers.js";
|
2
|
+
export { Sorting as Plugin, Sorting as DataSorting } from "./plugin.js";
|
3
|
+
export { SortDirection } from "./types.js";
|
4
|
+
export type { Signature } from "./plugin.js";
|
5
|
+
export type { Sort, SortItem } from "./types.js";
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import { BasePlugin } from "../-private/base";
|
2
|
-
import { SortDirection, Sort, SortItem } from "./types";
|
3
|
-
import { ColumnApi, PluginPreferences } from "../index";
|
4
|
-
import { Column, Table } from "../../index";
|
1
|
+
import { BasePlugin } from "../-private/base.js";
|
2
|
+
import { SortDirection, Sort, SortItem } from "./types.js";
|
3
|
+
import { ColumnApi, PluginPreferences } from "../index.js";
|
4
|
+
import { Column, Table } from "../../index.js";
|
5
5
|
interface SortingPreferences extends PluginPreferences {
|
6
6
|
table: {
|
7
7
|
sorts?: Sort[];
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { _ as _applyDecoratedDescriptor } from '../../applyDecoratedDescriptor-6b986a67.js';
|
2
|
-
import { _ as _defineProperty } from '../../defineProperty-
|
2
|
+
import { _ as _defineProperty } from '../../defineProperty-4f0781e1.js';
|
3
3
|
import { macroCondition, dependencySatisfies, importSync } from '@embroider/macros';
|
4
4
|
import '@glimmer/tracking';
|
5
5
|
import { action } from '@ember/object';
|