@tanstack/table-core 9.0.0-beta.26 → 9.0.0-beta.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/features/column-ordering/columnOrderingFeature.cjs +2 -1
  2. package/dist/features/column-ordering/columnOrderingFeature.cjs.map +1 -1
  3. package/dist/features/column-ordering/columnOrderingFeature.js +2 -1
  4. package/dist/features/column-ordering/columnOrderingFeature.js.map +1 -1
  5. package/dist/features/column-pinning/columnPinningFeature.cjs +24 -12
  6. package/dist/features/column-pinning/columnPinningFeature.cjs.map +1 -1
  7. package/dist/features/column-pinning/columnPinningFeature.js +24 -12
  8. package/dist/features/column-pinning/columnPinningFeature.js.map +1 -1
  9. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +62 -24
  10. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  11. package/dist/features/column-resizing/columnResizingFeature.utils.js +62 -24
  12. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  13. package/dist/features/column-sizing/columnSizingFeature.cjs +35 -45
  14. package/dist/features/column-sizing/columnSizingFeature.cjs.map +1 -1
  15. package/dist/features/column-sizing/columnSizingFeature.js +36 -46
  16. package/dist/features/column-sizing/columnSizingFeature.js.map +1 -1
  17. package/dist/features/column-sizing/columnSizingFeature.types.d.cts +38 -1
  18. package/dist/features/column-sizing/columnSizingFeature.types.d.ts +38 -1
  19. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +49 -10
  20. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  21. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +18 -4
  22. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +18 -4
  23. package/dist/features/column-sizing/columnSizingFeature.utils.js +49 -11
  24. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  25. package/dist/features/column-visibility/columnVisibilityFeature.cjs +8 -4
  26. package/dist/features/column-visibility/columnVisibilityFeature.cjs.map +1 -1
  27. package/dist/features/column-visibility/columnVisibilityFeature.js +8 -4
  28. package/dist/features/column-visibility/columnVisibilityFeature.js.map +1 -1
  29. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +3 -2
  30. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  31. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +3 -2
  32. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  33. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +1 -1
  34. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  35. package/dist/features/row-selection/rowSelectionFeature.utils.js +1 -1
  36. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  37. package/dist/index.d.cts +2 -2
  38. package/dist/index.d.ts +2 -2
  39. package/dist/static-functions.cjs +1 -0
  40. package/dist/static-functions.d.cts +2 -2
  41. package/dist/static-functions.d.ts +2 -2
  42. package/dist/static-functions.js +2 -2
  43. package/package.json +1 -1
  44. package/src/features/column-ordering/columnOrderingFeature.ts +1 -0
  45. package/src/features/column-pinning/columnPinningFeature.ts +12 -0
  46. package/src/features/column-resizing/columnResizingFeature.utils.ts +96 -44
  47. package/src/features/column-sizing/columnSizingFeature.ts +18 -18
  48. package/src/features/column-sizing/columnSizingFeature.types.ts +39 -0
  49. package/src/features/column-sizing/columnSizingFeature.utils.ts +94 -39
  50. package/src/features/column-visibility/columnVisibilityFeature.ts +4 -0
  51. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +4 -2
  52. package/src/features/row-selection/rowSelectionFeature.utils.ts +5 -1
@@ -79,34 +79,72 @@ function header_getResizeHandler(header, _contextDocument) {
79
79
  const newColumnSizing = makeObjectMap();
80
80
  const updateOffset = (eventType, clientXPos) => {
81
81
  if (typeof clientXPos !== "number") return;
82
- table_setColumnResizing(column.table, (old) => {
83
- const deltaDirection = column.table.options.columnResizeDirection === "rtl" ? -1 : 1;
84
- const deltaOffset = (clientXPos - (old.startOffset ?? 0)) * deltaDirection;
85
- const startSize = old.startSize ?? 0;
86
- const deltaPercentage = Math.max(startSize > 0 ? deltaOffset / startSize : 0, -.999999);
87
- old.columnSizingStart.forEach(([columnId, headerSize]) => {
88
- newColumnSizing[columnId] = Math.round(Math.max(headerSize > 0 ? headerSize + headerSize * deltaPercentage : deltaOffset / old.columnSizingStart.length, 0) * 100) / 100;
82
+ const table = column.table;
83
+ const isCommit = table.options.columnResizeMode === "onChange" || eventType === "end";
84
+ table._reactivity.batch(() => {
85
+ table_setColumnResizing(table, (old) => {
86
+ const deltaDirection = table.options.columnResizeDirection === "rtl" ? -1 : 1;
87
+ const deltaOffset = (clientXPos - (old.startOffset ?? 0)) * deltaDirection;
88
+ const startSize = old.startSize ?? 0;
89
+ const deltaPercentage = Math.max(startSize > 0 ? deltaOffset / startSize : 0, -.999999);
90
+ if (isCommit) {
91
+ const columnSizingStart = old.columnSizingStart;
92
+ for (let i = 0; i < columnSizingStart.length; i++) {
93
+ const entry = columnSizingStart[i];
94
+ const headerSize = entry[1];
95
+ newColumnSizing[entry[0]] = Math.round(Math.max(headerSize > 0 ? headerSize + headerSize * deltaPercentage : deltaOffset / columnSizingStart.length, 0) * 100) / 100;
96
+ }
97
+ }
98
+ return {
99
+ ...old,
100
+ deltaOffset,
101
+ deltaPercentage
102
+ };
89
103
  });
90
- return {
91
- ...old,
92
- deltaOffset,
93
- deltaPercentage
94
- };
104
+ if (isCommit) table_setColumnSizing(table, (old) => Object.assign(makeObjectMap(), old, newColumnSizing));
95
105
  });
96
- if (column.table.options.columnResizeMode === "onChange" || eventType === "end") table_setColumnSizing(column.table, (old) => Object.assign(makeObjectMap(), old, newColumnSizing));
97
106
  };
98
- const onMove = (clientXPos) => updateOffset("move", clientXPos);
107
+ let moveRafId = null;
108
+ let hasPendingMove = false;
109
+ let latestMoveX;
110
+ const flushMove = () => {
111
+ if (hasPendingMove) {
112
+ hasPendingMove = false;
113
+ updateOffset("move", latestMoveX);
114
+ moveRafId = requestAnimationFrame(flushMove);
115
+ } else moveRafId = null;
116
+ };
117
+ const onMove = (clientXPos) => {
118
+ latestMoveX = clientXPos;
119
+ if (typeof requestAnimationFrame !== "function") {
120
+ updateOffset("move", clientXPos);
121
+ return;
122
+ }
123
+ if (moveRafId !== null) {
124
+ hasPendingMove = true;
125
+ return;
126
+ }
127
+ updateOffset("move", clientXPos);
128
+ moveRafId = requestAnimationFrame(flushMove);
129
+ };
99
130
  const onEnd = (clientXPos) => {
100
- updateOffset("end", clientXPos);
101
- table_setColumnResizing(column.table, (old) => ({
102
- ...old,
103
- isResizingColumn: false,
104
- startOffset: null,
105
- startSize: null,
106
- deltaOffset: null,
107
- deltaPercentage: null,
108
- columnSizingStart: []
109
- }));
131
+ if (moveRafId !== null) {
132
+ cancelAnimationFrame(moveRafId);
133
+ moveRafId = null;
134
+ hasPendingMove = false;
135
+ }
136
+ column.table._reactivity.batch(() => {
137
+ updateOffset("end", clientXPos ?? latestMoveX);
138
+ table_setColumnResizing(column.table, (old) => ({
139
+ ...old,
140
+ isResizingColumn: false,
141
+ startOffset: null,
142
+ startSize: null,
143
+ deltaOffset: null,
144
+ deltaPercentage: null,
145
+ columnSizingStart: []
146
+ }));
147
+ });
110
148
  };
111
149
  const contextDocument = _contextDocument || typeof document !== "undefined" ? document : null;
112
150
  const mouseEvents = {
@@ -1 +1 @@
1
- {"version":3,"file":"columnResizingFeature.utils.js","names":[],"sources":["../../../src/features/column-resizing/columnResizingFeature.utils.ts"],"sourcesContent":["import {\n column_getSize,\n header_getSize,\n table_setColumnSizing,\n} from '../column-sizing/columnSizingFeature.utils'\nimport { cloneState, makeObjectMap } from '../../utils'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Header } from '../../types/Header'\nimport type { Column_Internal } from '../../types/Column'\nimport type { ColumnSizingState } from '../column-sizing/columnSizingFeature.types'\nimport type { columnResizingState } from './columnResizingFeature.types'\n\n/**\n * Creates the default transient column resizing state.\n *\n * The feature default represents no active drag interaction. Reset APIs use\n * this value when `defaultState` is `true`.\n *\n * @example\n * ```ts\n * const resizeInfo = getDefaultColumnResizingState()\n * ```\n */\nexport function getDefaultColumnResizingState(): columnResizingState {\n return {\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: [],\n }\n}\n\n/**\n * Checks whether this column can start a resize interaction.\n *\n * Both `columnDef.enableResizing` and table `enableColumnResizing` default to\n * `true`.\n *\n * @example\n * ```ts\n * const canResize = column_getCanResize(column)\n * ```\n */\nexport function column_getCanResize<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableResizing ?? true) &&\n (column.table.options.enableColumnResizing ?? true)\n )\n}\n\n/**\n * Checks whether this column is the active column resize target.\n *\n * The value is read from `state.columnResizing.isResizingColumn`.\n *\n * @example\n * ```ts\n * const isResizing = column_getIsResizing(column)\n * ```\n */\nexport function column_getIsResizing<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n column.table.atoms.columnResizing?.get()?.isResizingColumn === column.id\n )\n}\n\n/**\n * Creates the pointer/touch start handler for resizing a header.\n *\n * The handler records starting sizes for all leaf headers, tracks drag deltas,\n * writes transient resize info, and commits column sizes on change or drag end\n * depending on `columnResizeMode`.\n *\n * @example\n * ```ts\n * const onMouseDown = header_getResizeHandler(header)\n * ```\n */\nexport function header_getResizeHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(header: Header<TFeatures, TData, TValue>, _contextDocument?: Document) {\n const column = header.table.getColumn(header.column.id)!\n const canResize = column_getCanResize(column)\n\n return (event: unknown) => {\n if (!canResize) {\n return\n }\n\n ;(event as any).persist?.()\n\n if (isTouchStartEvent(event)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (event.touches.length > 1) {\n return\n }\n }\n\n const startSize = header_getSize(header)\n\n const columnSizingStart: Array<[string, number]> = header\n .getLeafHeaders()\n .map((leafHeader) => [\n leafHeader.column.id,\n column_getSize(leafHeader.column),\n ])\n\n const clientX = isTouchStartEvent(event)\n ? Math.round(event.touches[0]!.clientX)\n : (event as MouseEvent).clientX\n\n const newColumnSizing: ColumnSizingState = makeObjectMap()\n\n const updateOffset = (eventType: 'move' | 'end', clientXPos?: number) => {\n if (typeof clientXPos !== 'number') {\n return\n }\n\n table_setColumnResizing(column.table, (old) => {\n const deltaDirection =\n column.table.options.columnResizeDirection === 'rtl' ? -1 : 1\n const deltaOffset =\n (clientXPos - (old.startOffset ?? 0)) * deltaDirection\n const startSize = old.startSize ?? 0\n const deltaPercentage = Math.max(\n startSize > 0 ? deltaOffset / startSize : 0,\n -0.999999,\n )\n\n old.columnSizingStart.forEach(([columnId, headerSize]) => {\n newColumnSizing[columnId] =\n Math.round(\n Math.max(\n headerSize > 0\n ? headerSize + headerSize * deltaPercentage\n : deltaOffset / old.columnSizingStart.length,\n 0,\n ) * 100,\n ) / 100\n })\n\n return {\n ...old,\n deltaOffset,\n deltaPercentage,\n }\n })\n\n if (\n column.table.options.columnResizeMode === 'onChange' ||\n eventType === 'end'\n ) {\n table_setColumnSizing(column.table, (old) =>\n Object.assign(makeObjectMap<number>(), old, newColumnSizing),\n )\n }\n }\n\n const onMove = (clientXPos?: number) => updateOffset('move', clientXPos)\n\n const onEnd = (clientXPos?: number) => {\n updateOffset('end', clientXPos)\n\n table_setColumnResizing(column.table, (old) => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: [],\n }))\n }\n\n const contextDocument =\n _contextDocument || typeof document !== 'undefined' ? document : null\n\n const mouseEvents = {\n moveHandler: (e: MouseEvent) => onMove(e.clientX),\n upHandler: (e: MouseEvent) => {\n contextDocument?.removeEventListener(\n 'mousemove',\n mouseEvents.moveHandler,\n )\n contextDocument?.removeEventListener('mouseup', mouseEvents.upHandler)\n onEnd(e.clientX)\n },\n }\n\n const touchEvents = {\n moveHandler: (touchEvent: TouchEvent) => {\n if (touchEvent.cancelable) {\n touchEvent.preventDefault()\n touchEvent.stopPropagation()\n }\n onMove(touchEvent.touches[0]!.clientX)\n return false\n },\n upHandler: (e: TouchEvent) => {\n contextDocument?.removeEventListener(\n 'touchmove',\n touchEvents.moveHandler,\n )\n contextDocument?.removeEventListener('touchend', touchEvents.upHandler)\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onEnd(e.touches[0]?.clientX)\n },\n }\n\n const passiveIfSupported = passiveEventSupported()\n ? { passive: false }\n : false\n\n if (isTouchStartEvent(event)) {\n contextDocument?.addEventListener(\n 'touchmove',\n touchEvents.moveHandler,\n passiveIfSupported,\n )\n contextDocument?.addEventListener(\n 'touchend',\n touchEvents.upHandler,\n passiveIfSupported,\n )\n } else {\n contextDocument?.addEventListener(\n 'mousemove',\n mouseEvents.moveHandler,\n passiveIfSupported,\n )\n contextDocument?.addEventListener(\n 'mouseup',\n mouseEvents.upHandler,\n passiveIfSupported,\n )\n }\n\n table_setColumnResizing(column.table, (old) => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id,\n }))\n }\n}\n\n/**\n * Routes a transient column resizing updater through the table's resize handler.\n *\n * This state tracks the active drag interaction; committed widths live in\n * `columnSizing`.\n *\n * @example\n * ```ts\n * table_setColumnResizing(table, (old) => ({ ...old, deltaOffset: 12 }))\n * ```\n */\nexport function table_setColumnResizing<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<columnResizingState>,\n) {\n table.options.onColumnResizingChange?.(updater)\n}\n\n/**\n * Resets `columnResizing` to the configured initial state or feature default.\n *\n * With no argument, the reset clones `table.initialState.columnResizing` when\n * it exists. Passing `true` ignores initial state and resets to the no-drag\n * default state.\n *\n * @example\n * ```ts\n * table_resetHeaderSizeInfo(table)\n * table_resetHeaderSizeInfo(table, true)\n * ```\n */\nexport function table_resetHeaderSizeInfo<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setColumnResizing(\n table,\n defaultState\n ? getDefaultColumnResizingState()\n : cloneState(\n table.initialState.columnResizing ?? getDefaultColumnResizingState(),\n ),\n )\n}\n\nlet passiveSupported: boolean | null = null\n/**\n * Detects whether the current environment supports passive event listeners.\n *\n * Column resizing uses this to register pointer and touch listeners with\n * `passive: false` only when the environment understands passive options.\n *\n * @example\n * ```ts\n * const canUsePassiveListeners = passiveEventSupported()\n * ```\n */\nexport function passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported\n\n let supported = false\n try {\n const options = {\n get passive() {\n supported = true\n return false\n },\n }\n\n const noop = () => {}\n\n window.addEventListener('test', noop, options)\n window.removeEventListener('test', noop)\n } catch (err) {\n supported = false\n }\n passiveSupported = supported\n return passiveSupported\n}\n\n/**\n * Narrows an unknown event to a `touchstart` event.\n *\n * Column resizing uses this before reading touch coordinates and installing\n * touch-specific listeners.\n *\n * @example\n * ```ts\n * const isTouch = isTouchStartEvent(event)\n * ```\n */\nexport function isTouchStartEvent(e: unknown): e is TouchEvent {\n return (e as TouchEvent).type === 'touchstart'\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"columnResizingFeature.utils.js","names":[],"sources":["../../../src/features/column-resizing/columnResizingFeature.utils.ts"],"sourcesContent":["import {\n column_getSize,\n header_getSize,\n table_setColumnSizing,\n} from '../column-sizing/columnSizingFeature.utils'\nimport { cloneState, makeObjectMap } from '../../utils'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Header } from '../../types/Header'\nimport type { Column_Internal } from '../../types/Column'\nimport type { ColumnSizingState } from '../column-sizing/columnSizingFeature.types'\nimport type { columnResizingState } from './columnResizingFeature.types'\n\n/**\n * Creates the default transient column resizing state.\n *\n * The feature default represents no active drag interaction. Reset APIs use\n * this value when `defaultState` is `true`.\n *\n * @example\n * ```ts\n * const resizeInfo = getDefaultColumnResizingState()\n * ```\n */\nexport function getDefaultColumnResizingState(): columnResizingState {\n return {\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: [],\n }\n}\n\n/**\n * Checks whether this column can start a resize interaction.\n *\n * Both `columnDef.enableResizing` and table `enableColumnResizing` default to\n * `true`.\n *\n * @example\n * ```ts\n * const canResize = column_getCanResize(column)\n * ```\n */\nexport function column_getCanResize<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableResizing ?? true) &&\n (column.table.options.enableColumnResizing ?? true)\n )\n}\n\n/**\n * Checks whether this column is the active column resize target.\n *\n * The value is read from `state.columnResizing.isResizingColumn`.\n *\n * @example\n * ```ts\n * const isResizing = column_getIsResizing(column)\n * ```\n */\nexport function column_getIsResizing<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n column.table.atoms.columnResizing?.get()?.isResizingColumn === column.id\n )\n}\n\n/**\n * Creates the pointer/touch start handler for resizing a header.\n *\n * The handler records starting sizes for all leaf headers, tracks drag deltas,\n * writes transient resize info, and commits column sizes on change or drag end\n * depending on `columnResizeMode`.\n *\n * @example\n * ```ts\n * const onMouseDown = header_getResizeHandler(header)\n * ```\n */\nexport function header_getResizeHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(header: Header<TFeatures, TData, TValue>, _contextDocument?: Document) {\n const column = header.table.getColumn(header.column.id)!\n const canResize = column_getCanResize(column)\n\n return (event: unknown) => {\n if (!canResize) {\n return\n }\n\n ;(event as any).persist?.()\n\n if (isTouchStartEvent(event)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (event.touches.length > 1) {\n return\n }\n }\n\n const startSize = header_getSize(header)\n\n const columnSizingStart: Array<[string, number]> = header\n .getLeafHeaders()\n .map((leafHeader) => [\n leafHeader.column.id,\n column_getSize(leafHeader.column),\n ])\n\n const clientX = isTouchStartEvent(event)\n ? Math.round(event.touches[0]!.clientX)\n : (event as MouseEvent).clientX\n\n const newColumnSizing: ColumnSizingState = makeObjectMap()\n\n const updateOffset = (eventType: 'move' | 'end', clientXPos?: number) => {\n if (typeof clientXPos !== 'number') {\n return\n }\n\n const table = column.table\n const isCommit =\n table.options.columnResizeMode === 'onChange' || eventType === 'end'\n\n // one notification flush per tick instead of two\n table._reactivity.batch(() => {\n table_setColumnResizing(table, (old) => {\n const deltaDirection =\n table.options.columnResizeDirection === 'rtl' ? -1 : 1\n const deltaOffset =\n (clientXPos - (old.startOffset ?? 0)) * deltaDirection\n const startSize = old.startSize ?? 0\n const deltaPercentage = Math.max(\n startSize > 0 ? deltaOffset / startSize : 0,\n -0.999999,\n )\n\n // new sizes are only read at commit and are recomputed from\n // absolute positions each time, so skip them on onEnd-mode moves\n if (isCommit) {\n const columnSizingStart = old.columnSizingStart\n for (let i = 0; i < columnSizingStart.length; i++) {\n const entry = columnSizingStart[i]!\n const headerSize = entry[1]\n newColumnSizing[entry[0]] =\n Math.round(\n Math.max(\n headerSize > 0\n ? headerSize + headerSize * deltaPercentage\n : deltaOffset / columnSizingStart.length,\n 0,\n ) * 100,\n ) / 100\n }\n }\n\n return {\n ...old,\n deltaOffset,\n deltaPercentage,\n }\n })\n\n if (isCommit) {\n table_setColumnSizing(table, (old) =>\n Object.assign(makeObjectMap<number>(), old, newColumnSizing),\n )\n }\n })\n }\n\n // Pointer devices can report at several times the display refresh rate,\n // and every update between frames is overwritten by the next one. Apply\n // the first move of a frame immediately, then coalesce the rest into one\n // update per animation frame.\n let moveRafId: number | null = null\n let hasPendingMove = false\n let latestMoveX: number | undefined\n\n const flushMove = () => {\n if (hasPendingMove) {\n hasPendingMove = false\n updateOffset('move', latestMoveX)\n moveRafId = requestAnimationFrame(flushMove)\n } else {\n moveRafId = null\n }\n }\n\n const onMove = (clientXPos?: number) => {\n latestMoveX = clientXPos\n if (typeof requestAnimationFrame !== 'function') {\n updateOffset('move', clientXPos)\n return\n }\n if (moveRafId !== null) {\n hasPendingMove = true\n return\n }\n updateOffset('move', clientXPos)\n moveRafId = requestAnimationFrame(flushMove)\n }\n\n const onEnd = (clientXPos?: number) => {\n if (moveRafId !== null) {\n cancelAnimationFrame(moveRafId)\n moveRafId = null\n hasPendingMove = false\n }\n\n // batch the 'end' commit and the reset into one notification flush\n column.table._reactivity.batch(() => {\n // touchend events carry no touch position, so fall back to the last\n // observed move position for the final commit\n updateOffset('end', clientXPos ?? latestMoveX)\n\n table_setColumnResizing(column.table, (old) => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: [],\n }))\n })\n }\n\n const contextDocument =\n _contextDocument || typeof document !== 'undefined' ? document : null\n\n const mouseEvents = {\n moveHandler: (e: MouseEvent) => onMove(e.clientX),\n upHandler: (e: MouseEvent) => {\n contextDocument?.removeEventListener(\n 'mousemove',\n mouseEvents.moveHandler,\n )\n contextDocument?.removeEventListener('mouseup', mouseEvents.upHandler)\n onEnd(e.clientX)\n },\n }\n\n const touchEvents = {\n moveHandler: (touchEvent: TouchEvent) => {\n if (touchEvent.cancelable) {\n touchEvent.preventDefault()\n touchEvent.stopPropagation()\n }\n onMove(touchEvent.touches[0]!.clientX)\n return false\n },\n upHandler: (e: TouchEvent) => {\n contextDocument?.removeEventListener(\n 'touchmove',\n touchEvents.moveHandler,\n )\n contextDocument?.removeEventListener('touchend', touchEvents.upHandler)\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onEnd(e.touches[0]?.clientX)\n },\n }\n\n const passiveIfSupported = passiveEventSupported()\n ? { passive: false }\n : false\n\n if (isTouchStartEvent(event)) {\n contextDocument?.addEventListener(\n 'touchmove',\n touchEvents.moveHandler,\n passiveIfSupported,\n )\n contextDocument?.addEventListener(\n 'touchend',\n touchEvents.upHandler,\n passiveIfSupported,\n )\n } else {\n contextDocument?.addEventListener(\n 'mousemove',\n mouseEvents.moveHandler,\n passiveIfSupported,\n )\n contextDocument?.addEventListener(\n 'mouseup',\n mouseEvents.upHandler,\n passiveIfSupported,\n )\n }\n\n table_setColumnResizing(column.table, (old) => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id,\n }))\n }\n}\n\n/**\n * Routes a transient column resizing updater through the table's resize handler.\n *\n * This state tracks the active drag interaction; committed widths live in\n * `columnSizing`.\n *\n * @example\n * ```ts\n * table_setColumnResizing(table, (old) => ({ ...old, deltaOffset: 12 }))\n * ```\n */\nexport function table_setColumnResizing<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<columnResizingState>,\n) {\n table.options.onColumnResizingChange?.(updater)\n}\n\n/**\n * Resets `columnResizing` to the configured initial state or feature default.\n *\n * With no argument, the reset clones `table.initialState.columnResizing` when\n * it exists. Passing `true` ignores initial state and resets to the no-drag\n * default state.\n *\n * @example\n * ```ts\n * table_resetHeaderSizeInfo(table)\n * table_resetHeaderSizeInfo(table, true)\n * ```\n */\nexport function table_resetHeaderSizeInfo<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setColumnResizing(\n table,\n defaultState\n ? getDefaultColumnResizingState()\n : cloneState(\n table.initialState.columnResizing ?? getDefaultColumnResizingState(),\n ),\n )\n}\n\nlet passiveSupported: boolean | null = null\n/**\n * Detects whether the current environment supports passive event listeners.\n *\n * Column resizing uses this to register pointer and touch listeners with\n * `passive: false` only when the environment understands passive options.\n *\n * @example\n * ```ts\n * const canUsePassiveListeners = passiveEventSupported()\n * ```\n */\nexport function passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported\n\n let supported = false\n try {\n const options = {\n get passive() {\n supported = true\n return false\n },\n }\n\n const noop = () => {}\n\n window.addEventListener('test', noop, options)\n window.removeEventListener('test', noop)\n } catch (err) {\n supported = false\n }\n passiveSupported = supported\n return passiveSupported\n}\n\n/**\n * Narrows an unknown event to a `touchstart` event.\n *\n * Column resizing uses this before reading touch coordinates and installing\n * touch-specific listeners.\n *\n * @example\n * ```ts\n * const isTouch = isTouchStartEvent(event)\n * ```\n */\nexport function isTouchStartEvent(e: unknown): e is TouchEvent {\n return (e as TouchEvent).type === 'touchstart'\n}\n"],"mappings":"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"}
@@ -27,34 +27,8 @@ const columnSizingFeature = {
27
27
  return [table.options.columns, (_table$atoms$columnSi = table.atoms.columnSizing) === null || _table$atoms$columnSi === void 0 || (_table$atoms$columnSi = _table$atoms$columnSi.get()) === null || _table$atoms$columnSi === void 0 ? void 0 : _table$atoms$columnSi[column.id]];
28
28
  }
29
29
  },
30
- column_getStart: {
31
- fn: (column, position) => require_columnSizingFeature_utils.column_getStart(column, position),
32
- memoDeps: (column, position) => {
33
- var _table$atoms$columnSi2, _table$atoms$columnOr, _table$atoms$columnPi, _table$atoms$columnVi;
34
- return [
35
- position,
36
- table.options.columns,
37
- (_table$atoms$columnSi2 = table.atoms.columnSizing) === null || _table$atoms$columnSi2 === void 0 ? void 0 : _table$atoms$columnSi2.get(),
38
- (_table$atoms$columnOr = table.atoms.columnOrder) === null || _table$atoms$columnOr === void 0 ? void 0 : _table$atoms$columnOr.get(),
39
- (_table$atoms$columnPi = table.atoms.columnPinning) === null || _table$atoms$columnPi === void 0 ? void 0 : _table$atoms$columnPi.get(),
40
- (_table$atoms$columnVi = table.atoms.columnVisibility) === null || _table$atoms$columnVi === void 0 ? void 0 : _table$atoms$columnVi.get()
41
- ];
42
- }
43
- },
44
- column_getAfter: {
45
- fn: (column, position) => require_columnSizingFeature_utils.column_getAfter(column, position),
46
- memoDeps: (column, position) => {
47
- var _table$atoms$columnSi3, _table$atoms$columnOr2, _table$atoms$columnPi2, _table$atoms$columnVi2;
48
- return [
49
- position,
50
- table.options.columns,
51
- (_table$atoms$columnSi3 = table.atoms.columnSizing) === null || _table$atoms$columnSi3 === void 0 ? void 0 : _table$atoms$columnSi3.get(),
52
- (_table$atoms$columnOr2 = table.atoms.columnOrder) === null || _table$atoms$columnOr2 === void 0 ? void 0 : _table$atoms$columnOr2.get(),
53
- (_table$atoms$columnPi2 = table.atoms.columnPinning) === null || _table$atoms$columnPi2 === void 0 ? void 0 : _table$atoms$columnPi2.get(),
54
- (_table$atoms$columnVi2 = table.atoms.columnVisibility) === null || _table$atoms$columnVi2 === void 0 ? void 0 : _table$atoms$columnVi2.get()
55
- ];
56
- }
57
- },
30
+ column_getStart: { fn: (column, position) => require_columnSizingFeature_utils.column_getStart(column, position) },
31
+ column_getAfter: { fn: (column, position) => require_columnSizingFeature_utils.column_getAfter(column, position) },
58
32
  column_resetSize: { fn: (column) => require_columnSizingFeature_utils.column_resetSize(column) }
59
33
  });
60
34
  },
@@ -63,21 +37,22 @@ const columnSizingFeature = {
63
37
  header_getSize: {
64
38
  fn: (header) => require_columnSizingFeature_utils.header_getSize(header),
65
39
  memoDeps: (header) => {
66
- var _table$atoms$columnSi4, _table$atoms$columnSi5;
67
- return [table.options.columns, header.column.columns.length > 0 ? (_table$atoms$columnSi4 = table.atoms.columnSizing) === null || _table$atoms$columnSi4 === void 0 ? void 0 : _table$atoms$columnSi4.get() : (_table$atoms$columnSi5 = table.atoms.columnSizing) === null || _table$atoms$columnSi5 === void 0 || (_table$atoms$columnSi5 = _table$atoms$columnSi5.get()) === null || _table$atoms$columnSi5 === void 0 ? void 0 : _table$atoms$columnSi5[header.column.id]];
40
+ var _table$atoms$columnSi2, _table$atoms$columnSi3;
41
+ return [table.options.columns, header.column.columns.length > 0 ? (_table$atoms$columnSi2 = table.atoms.columnSizing) === null || _table$atoms$columnSi2 === void 0 ? void 0 : _table$atoms$columnSi2.get() : (_table$atoms$columnSi3 = table.atoms.columnSizing) === null || _table$atoms$columnSi3 === void 0 || (_table$atoms$columnSi3 = _table$atoms$columnSi3.get()) === null || _table$atoms$columnSi3 === void 0 ? void 0 : _table$atoms$columnSi3[header.column.id]];
68
42
  }
69
43
  },
70
44
  header_getStart: {
71
45
  fn: (header) => require_columnSizingFeature_utils.header_getStart(header),
72
- memoDeps: (header, position) => {
73
- var _table$atoms$columnSi6, _table$atoms$columnOr3, _table$atoms$columnPi3, _table$atoms$columnVi3;
46
+ memoDeps: () => {
47
+ var _table$atoms$columnSi4, _table$atoms$columnOr, _table$atoms$columnPi, _table$atoms$columnVi, _table$atoms$grouping;
74
48
  return [
75
- position,
76
49
  table.options.columns,
77
- (_table$atoms$columnSi6 = table.atoms.columnSizing) === null || _table$atoms$columnSi6 === void 0 ? void 0 : _table$atoms$columnSi6.get(),
78
- (_table$atoms$columnOr3 = table.atoms.columnOrder) === null || _table$atoms$columnOr3 === void 0 ? void 0 : _table$atoms$columnOr3.get(),
79
- (_table$atoms$columnPi3 = table.atoms.columnPinning) === null || _table$atoms$columnPi3 === void 0 ? void 0 : _table$atoms$columnPi3.get(),
80
- (_table$atoms$columnVi3 = table.atoms.columnVisibility) === null || _table$atoms$columnVi3 === void 0 ? void 0 : _table$atoms$columnVi3.get()
50
+ (_table$atoms$columnSi4 = table.atoms.columnSizing) === null || _table$atoms$columnSi4 === void 0 ? void 0 : _table$atoms$columnSi4.get(),
51
+ (_table$atoms$columnOr = table.atoms.columnOrder) === null || _table$atoms$columnOr === void 0 ? void 0 : _table$atoms$columnOr.get(),
52
+ (_table$atoms$columnPi = table.atoms.columnPinning) === null || _table$atoms$columnPi === void 0 ? void 0 : _table$atoms$columnPi.get(),
53
+ (_table$atoms$columnVi = table.atoms.columnVisibility) === null || _table$atoms$columnVi === void 0 ? void 0 : _table$atoms$columnVi.get(),
54
+ (_table$atoms$grouping = table.atoms.grouping) === null || _table$atoms$grouping === void 0 ? void 0 : _table$atoms$grouping.get(),
55
+ table.options.groupedColumnMode
81
56
  ];
82
57
  }
83
58
  }
@@ -85,34 +60,49 @@ const columnSizingFeature = {
85
60
  },
86
61
  constructTableAPIs: (table) => {
87
62
  require_utils.assignTableAPIs("columnSizingFeature", table, {
63
+ table_getColumnOffsets: {
64
+ fn: () => require_columnSizingFeature_utils.table_getColumnOffsets(table),
65
+ memoDeps: () => {
66
+ var _table$atoms$columnSi5, _table$atoms$columnOr2, _table$atoms$columnPi2, _table$atoms$columnVi2, _table$atoms$grouping2;
67
+ return [
68
+ table.options.columns,
69
+ (_table$atoms$columnSi5 = table.atoms.columnSizing) === null || _table$atoms$columnSi5 === void 0 ? void 0 : _table$atoms$columnSi5.get(),
70
+ (_table$atoms$columnOr2 = table.atoms.columnOrder) === null || _table$atoms$columnOr2 === void 0 ? void 0 : _table$atoms$columnOr2.get(),
71
+ (_table$atoms$columnPi2 = table.atoms.columnPinning) === null || _table$atoms$columnPi2 === void 0 ? void 0 : _table$atoms$columnPi2.get(),
72
+ (_table$atoms$columnVi2 = table.atoms.columnVisibility) === null || _table$atoms$columnVi2 === void 0 ? void 0 : _table$atoms$columnVi2.get(),
73
+ (_table$atoms$grouping2 = table.atoms.grouping) === null || _table$atoms$grouping2 === void 0 ? void 0 : _table$atoms$grouping2.get(),
74
+ table.options.groupedColumnMode
75
+ ];
76
+ }
77
+ },
88
78
  table_setColumnSizing: { fn: (updater) => require_columnSizingFeature_utils.table_setColumnSizing(table, updater) },
89
79
  table_resetColumnSizing: { fn: (defaultState) => require_columnSizingFeature_utils.table_resetColumnSizing(table, defaultState) },
90
80
  table_getTotalSize: {
91
81
  fn: () => require_columnSizingFeature_utils.table_getTotalSize(table),
92
82
  memoDeps: () => {
93
- var _table$atoms$columnSi7;
94
- return [(_table$atoms$columnSi7 = table.atoms.columnSizing) === null || _table$atoms$columnSi7 === void 0 ? void 0 : _table$atoms$columnSi7.get(), table.getHeaderGroups()];
83
+ var _table$atoms$columnSi6;
84
+ return [(_table$atoms$columnSi6 = table.atoms.columnSizing) === null || _table$atoms$columnSi6 === void 0 ? void 0 : _table$atoms$columnSi6.get(), table.getHeaderGroups()];
95
85
  }
96
86
  },
97
87
  table_getLeftTotalSize: {
98
88
  fn: () => require_columnSizingFeature_utils.table_getLeftTotalSize(table),
99
89
  memoDeps: () => {
100
- var _table$atoms$columnSi8;
101
- return [(_table$atoms$columnSi8 = table.atoms.columnSizing) === null || _table$atoms$columnSi8 === void 0 ? void 0 : _table$atoms$columnSi8.get(), table.getHeaderGroups()];
90
+ var _table$atoms$columnSi7;
91
+ return [(_table$atoms$columnSi7 = table.atoms.columnSizing) === null || _table$atoms$columnSi7 === void 0 ? void 0 : _table$atoms$columnSi7.get(), table.getHeaderGroups()];
102
92
  }
103
93
  },
104
94
  table_getCenterTotalSize: {
105
95
  fn: () => require_columnSizingFeature_utils.table_getCenterTotalSize(table),
106
96
  memoDeps: () => {
107
- var _table$atoms$columnSi9;
108
- return [(_table$atoms$columnSi9 = table.atoms.columnSizing) === null || _table$atoms$columnSi9 === void 0 ? void 0 : _table$atoms$columnSi9.get(), table.getHeaderGroups()];
97
+ var _table$atoms$columnSi8;
98
+ return [(_table$atoms$columnSi8 = table.atoms.columnSizing) === null || _table$atoms$columnSi8 === void 0 ? void 0 : _table$atoms$columnSi8.get(), table.getHeaderGroups()];
109
99
  }
110
100
  },
111
101
  table_getRightTotalSize: {
112
102
  fn: () => require_columnSizingFeature_utils.table_getRightTotalSize(table),
113
103
  memoDeps: () => {
114
- var _table$atoms$columnSi10;
115
- return [(_table$atoms$columnSi10 = table.atoms.columnSizing) === null || _table$atoms$columnSi10 === void 0 ? void 0 : _table$atoms$columnSi10.get(), table.getHeaderGroups()];
104
+ var _table$atoms$columnSi9;
105
+ return [(_table$atoms$columnSi9 = table.atoms.columnSizing) === null || _table$atoms$columnSi9 === void 0 ? void 0 : _table$atoms$columnSi9.get(), table.getHeaderGroups()];
116
106
  }
117
107
  }
118
108
  });
@@ -1 +1 @@
1
- {"version":3,"file":"columnSizingFeature.cjs","names":["getDefaultColumnSizingState","getDefaultColumnSizingColumnDef","makeStateUpdater","column_getSize","column_getStart","column_getAfter","column_resetSize","header_getSize","header_getStart","table_setColumnSizing","table_resetColumnSizing","table_getTotalSize","table_getLeftTotalSize","table_getCenterTotalSize","table_getRightTotalSize"],"sources":["../../../src/features/column-sizing/columnSizingFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getAfter,\n column_getSize,\n column_getStart,\n column_resetSize,\n getDefaultColumnSizingColumnDef,\n getDefaultColumnSizingState,\n header_getSize,\n header_getStart,\n table_getCenterTotalSize,\n table_getLeftTotalSize,\n table_getRightTotalSize,\n table_getTotalSize,\n table_resetColumnSizing,\n table_setColumnSizing,\n} from './columnSizingFeature.utils'\nimport type { TableFeature } from '../../types/TableFeatures'\n\n/**\n * Feature that adds column sizing state, defaults, and size measurement APIs.\n */\nexport const columnSizingFeature: TableFeature = {\n getInitialState: (initialState) => {\n return {\n columnSizing: getDefaultColumnSizingState(),\n ...initialState,\n }\n },\n\n getDefaultColumnDef: () => {\n return getDefaultColumnSizingColumnDef()\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnSizingFeature', prototype, table, {\n column_getSize: {\n fn: (column) => column_getSize(column),\n memoDeps: (column) => [\n table.options.columns,\n table.atoms.columnSizing?.get()?.[column.id], // just this column's size state\n ],\n },\n column_getStart: {\n fn: (column, position) => column_getStart(column, position),\n memoDeps: (column, position) => [\n position,\n table.options.columns,\n table.atoms.columnSizing?.get(),\n table.atoms.columnOrder?.get(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n ],\n },\n column_getAfter: {\n fn: (column, position) => column_getAfter(column, position),\n memoDeps: (column, position) => [\n position,\n table.options.columns,\n table.atoms.columnSizing?.get(),\n table.atoms.columnOrder?.get(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n ],\n },\n column_resetSize: {\n fn: (column) => column_resetSize(column),\n },\n })\n },\n\n assignHeaderPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnSizingFeature', prototype, table, {\n header_getSize: {\n fn: (header) => header_getSize(header),\n memoDeps: (header) => [\n table.options.columns,\n header.column.columns.length > 0\n ? table.atoms.columnSizing?.get() // must be all columns (sum child columns)\n : table.atoms.columnSizing?.get()?.[header.column.id], // can just check it's associated column size state\n ],\n },\n header_getStart: {\n fn: (header) => header_getStart(header),\n memoDeps: (header, position) => [\n position,\n table.options.columns,\n table.atoms.columnSizing?.get(),\n table.atoms.columnOrder?.get(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n ],\n },\n })\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnSizingFeature', table, {\n table_setColumnSizing: {\n fn: (updater) => table_setColumnSizing(table, updater),\n },\n table_resetColumnSizing: {\n fn: (defaultState) => table_resetColumnSizing(table, defaultState),\n },\n table_getTotalSize: {\n fn: () => table_getTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n table_getLeftTotalSize: {\n fn: () => table_getLeftTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n table_getCenterTotalSize: {\n fn: () => table_getCenterTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n table_getRightTotalSize: {\n fn: () => table_getRightTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n })\n },\n}\n"],"mappings":";;;;;;;AA0BA,MAAa,sBAAoC;CAC/C,kBAAkB,iBAAiB;EACjC,OAAO;GACL,cAAcA,8DAA4B;GAC1C,GAAG;EACL;CACF;CAEA,2BAA2B;EACzB,OAAOC,kEAAgC;CACzC;CAEA,yBAAyB,UAAU;EACjC,OAAO,EACL,sBAAsBC,+BAAiB,gBAAgB,KAAK,EAC9D;CACF;CAEA,wBAAwB,WAAW,UAAU;EAC3C,kCAAoB,uBAAuB,WAAW,OAAO;GAC3D,gBAAgB;IACd,KAAK,WAAWC,iDAAe,MAAM;IACrC,WAAW,WAAW;;aACpB,MAAM,QAAQ,kCACd,MAAM,MAAM,6GAAc,IAAI,iFAAI,OAAO,GAC3C;;GACF;GACA,iBAAiB;IACf,KAAK,QAAQ,aAAaC,kDAAgB,QAAQ,QAAQ;IAC1D,WAAW,QAAQ,aAAa;;;MAC9B;MACA,MAAM,QAAQ;gCACd,MAAM,MAAM,8FAAc,IAAI;+BAC9B,MAAM,MAAM,2FAAa,IAAI;+BAC7B,MAAM,MAAM,6FAAe,IAAI;+BAC/B,MAAM,MAAM,gGAAkB,IAAI;KACpC;;GACF;GACA,iBAAiB;IACf,KAAK,QAAQ,aAAaC,kDAAgB,QAAQ,QAAQ;IAC1D,WAAW,QAAQ,aAAa;;;MAC9B;MACA,MAAM,QAAQ;gCACd,MAAM,MAAM,8FAAc,IAAI;gCAC9B,MAAM,MAAM,6FAAa,IAAI;gCAC7B,MAAM,MAAM,+FAAe,IAAI;gCAC/B,MAAM,MAAM,kGAAkB,IAAI;KACpC;;GACF;GACA,kBAAkB,EAChB,KAAK,WAAWC,mDAAiB,MAAM,EACzC;EACF,CAAC;CACH;CAEA,wBAAwB,WAAW,UAAU;EAC3C,kCAAoB,uBAAuB,WAAW,OAAO;GAC3D,gBAAgB;IACd,KAAK,WAAWC,iDAAe,MAAM;IACrC,WAAW,WAAW;;aACpB,MAAM,QAAQ,SACd,OAAO,OAAO,QAAQ,SAAS,8BAC3B,MAAM,MAAM,8FAAc,IAAI,8BAC9B,MAAM,MAAM,gHAAc,IAAI,mFAAI,OAAO,OAAO,GACtD;;GACF;GACA,iBAAiB;IACf,KAAK,WAAWC,kDAAgB,MAAM;IACtC,WAAW,QAAQ,aAAa;;;MAC9B;MACA,MAAM,QAAQ;gCACd,MAAM,MAAM,8FAAc,IAAI;gCAC9B,MAAM,MAAM,6FAAa,IAAI;gCAC7B,MAAM,MAAM,+FAAe,IAAI;gCAC/B,MAAM,MAAM,kGAAkB,IAAI;KACpC;;GACF;EACF,CAAC;CACH;CAEA,qBAAqB,UAAU;EAC7B,8BAAgB,uBAAuB,OAAO;GAC5C,uBAAuB,EACrB,KAAK,YAAYC,wDAAsB,OAAO,OAAO,EACvD;GACA,yBAAyB,EACvB,KAAK,iBAAiBC,0DAAwB,OAAO,YAAY,EACnE;GACA,oBAAoB;IAClB,UAAUC,qDAAmB,KAAK;IAClC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;GACA,wBAAwB;IACtB,UAAUC,yDAAuB,KAAK;IACtC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;GACA,0BAA0B;IACxB,UAAUC,2DAAyB,KAAK;IACxC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;GACA,yBAAyB;IACvB,UAAUC,0DAAwB,KAAK;IACvC,gBAAgB;;wCACd,MAAM,MAAM,gGAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;EACF,CAAC;CACH;AACF"}
1
+ {"version":3,"file":"columnSizingFeature.cjs","names":["getDefaultColumnSizingState","getDefaultColumnSizingColumnDef","makeStateUpdater","column_getSize","column_getStart","column_getAfter","column_resetSize","header_getSize","header_getStart","table_getColumnOffsets","table_setColumnSizing","table_resetColumnSizing","table_getTotalSize","table_getLeftTotalSize","table_getCenterTotalSize","table_getRightTotalSize"],"sources":["../../../src/features/column-sizing/columnSizingFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getAfter,\n column_getSize,\n column_getStart,\n column_resetSize,\n getDefaultColumnSizingColumnDef,\n getDefaultColumnSizingState,\n header_getSize,\n header_getStart,\n table_getCenterTotalSize,\n table_getColumnOffsets,\n table_getLeftTotalSize,\n table_getRightTotalSize,\n table_getTotalSize,\n table_resetColumnSizing,\n table_setColumnSizing,\n} from './columnSizingFeature.utils'\nimport type { TableFeature } from '../../types/TableFeatures'\n\n/**\n * Feature that adds column sizing state, defaults, and size measurement APIs.\n */\nexport const columnSizingFeature: TableFeature = {\n getInitialState: (initialState) => {\n return {\n columnSizing: getDefaultColumnSizingState(),\n ...initialState,\n }\n },\n\n getDefaultColumnDef: () => {\n return getDefaultColumnSizingColumnDef()\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnSizingFeature', prototype, table, {\n column_getSize: {\n fn: (column) => column_getSize(column),\n memoDeps: (column) => [\n table.options.columns,\n table.atoms.columnSizing?.get()?.[column.id], // just this column's size state\n ],\n },\n // O(1) lookups into the memoized table-level offsets, so no per-column\n // memos here\n column_getStart: {\n fn: (column, position) => column_getStart(column, position),\n },\n column_getAfter: {\n fn: (column, position) => column_getAfter(column, position),\n },\n column_resetSize: {\n fn: (column) => column_resetSize(column),\n },\n })\n },\n\n assignHeaderPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnSizingFeature', prototype, table, {\n header_getSize: {\n fn: (header) => header_getSize(header),\n memoDeps: (header) => [\n table.options.columns,\n header.column.columns.length > 0\n ? table.atoms.columnSizing?.get() // must be all columns (sum child columns)\n : table.atoms.columnSizing?.get()?.[header.column.id], // can just check it's associated column size state\n ],\n },\n header_getStart: {\n fn: (header) => header_getStart(header),\n memoDeps: () => [\n table.options.columns,\n table.atoms.columnSizing?.get(),\n table.atoms.columnOrder?.get(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n table.atoms.grouping?.get(),\n table.options.groupedColumnMode,\n ],\n },\n })\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnSizingFeature', table, {\n table_getColumnOffsets: {\n fn: () => table_getColumnOffsets(table),\n memoDeps: () => [\n table.options.columns,\n table.atoms.columnSizing?.get(),\n table.atoms.columnOrder?.get(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n table.atoms.grouping?.get(),\n table.options.groupedColumnMode,\n ],\n },\n table_setColumnSizing: {\n fn: (updater) => table_setColumnSizing(table, updater),\n },\n table_resetColumnSizing: {\n fn: (defaultState) => table_resetColumnSizing(table, defaultState),\n },\n table_getTotalSize: {\n fn: () => table_getTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n table_getLeftTotalSize: {\n fn: () => table_getLeftTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n table_getCenterTotalSize: {\n fn: () => table_getCenterTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n table_getRightTotalSize: {\n fn: () => table_getRightTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n })\n },\n}\n"],"mappings":";;;;;;;AA2BA,MAAa,sBAAoC;CAC/C,kBAAkB,iBAAiB;EACjC,OAAO;GACL,cAAcA,8DAA4B;GAC1C,GAAG;EACL;CACF;CAEA,2BAA2B;EACzB,OAAOC,kEAAgC;CACzC;CAEA,yBAAyB,UAAU;EACjC,OAAO,EACL,sBAAsBC,+BAAiB,gBAAgB,KAAK,EAC9D;CACF;CAEA,wBAAwB,WAAW,UAAU;EAC3C,kCAAoB,uBAAuB,WAAW,OAAO;GAC3D,gBAAgB;IACd,KAAK,WAAWC,iDAAe,MAAM;IACrC,WAAW,WAAW;;aACpB,MAAM,QAAQ,kCACd,MAAM,MAAM,6GAAc,IAAI,iFAAI,OAAO,GAC3C;;GACF;GAGA,iBAAiB,EACf,KAAK,QAAQ,aAAaC,kDAAgB,QAAQ,QAAQ,EAC5D;GACA,iBAAiB,EACf,KAAK,QAAQ,aAAaC,kDAAgB,QAAQ,QAAQ,EAC5D;GACA,kBAAkB,EAChB,KAAK,WAAWC,mDAAiB,MAAM,EACzC;EACF,CAAC;CACH;CAEA,wBAAwB,WAAW,UAAU;EAC3C,kCAAoB,uBAAuB,WAAW,OAAO;GAC3D,gBAAgB;IACd,KAAK,WAAWC,iDAAe,MAAM;IACrC,WAAW,WAAW;;aACpB,MAAM,QAAQ,SACd,OAAO,OAAO,QAAQ,SAAS,8BAC3B,MAAM,MAAM,8FAAc,IAAI,8BAC9B,MAAM,MAAM,gHAAc,IAAI,mFAAI,OAAO,OAAO,GACtD;;GACF;GACA,iBAAiB;IACf,KAAK,WAAWC,kDAAgB,MAAM;IACtC,gBAAgB;;;MACd,MAAM,QAAQ;gCACd,MAAM,MAAM,8FAAc,IAAI;+BAC9B,MAAM,MAAM,2FAAa,IAAI;+BAC7B,MAAM,MAAM,6FAAe,IAAI;+BAC/B,MAAM,MAAM,gGAAkB,IAAI;+BAClC,MAAM,MAAM,wFAAU,IAAI;MAC1B,MAAM,QAAQ;KAChB;;GACF;EACF,CAAC;CACH;CAEA,qBAAqB,UAAU;EAC7B,8BAAgB,uBAAuB,OAAO;GAC5C,wBAAwB;IACtB,UAAUC,yDAAuB,KAAK;IACtC,gBAAgB;;;MACd,MAAM,QAAQ;gCACd,MAAM,MAAM,8FAAc,IAAI;gCAC9B,MAAM,MAAM,6FAAa,IAAI;gCAC7B,MAAM,MAAM,+FAAe,IAAI;gCAC/B,MAAM,MAAM,kGAAkB,IAAI;gCAClC,MAAM,MAAM,0FAAU,IAAI;MAC1B,MAAM,QAAQ;KAChB;;GACF;GACA,uBAAuB,EACrB,KAAK,YAAYC,wDAAsB,OAAO,OAAO,EACvD;GACA,yBAAyB,EACvB,KAAK,iBAAiBC,0DAAwB,OAAO,YAAY,EACnE;GACA,oBAAoB;IAClB,UAAUC,qDAAmB,KAAK;IAClC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;GACA,wBAAwB;IACtB,UAAUC,yDAAuB,KAAK;IACtC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;GACA,0BAA0B;IACxB,UAAUC,2DAAyB,KAAK;IACxC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;GACA,yBAAyB;IACvB,UAAUC,0DAAwB,KAAK;IACvC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;EACF,CAAC;CACH;AACF"}
@@ -1,5 +1,5 @@
1
1
  import { assignPrototypeAPIs, assignTableAPIs, makeStateUpdater } from "../../utils.js";
2
- import { column_getAfter, column_getSize, column_getStart, column_resetSize, getDefaultColumnSizingColumnDef, getDefaultColumnSizingState, header_getSize, header_getStart, table_getCenterTotalSize, table_getLeftTotalSize, table_getRightTotalSize, table_getTotalSize, table_resetColumnSizing, table_setColumnSizing } from "./columnSizingFeature.utils.js";
2
+ import { column_getAfter, column_getSize, column_getStart, column_resetSize, getDefaultColumnSizingColumnDef, getDefaultColumnSizingState, header_getSize, header_getStart, table_getCenterTotalSize, table_getColumnOffsets, table_getLeftTotalSize, table_getRightTotalSize, table_getTotalSize, table_resetColumnSizing, table_setColumnSizing } from "./columnSizingFeature.utils.js";
3
3
 
4
4
  //#region src/features/column-sizing/columnSizingFeature.ts
5
5
  /**
@@ -27,34 +27,8 @@ const columnSizingFeature = {
27
27
  return [table.options.columns, (_table$atoms$columnSi = table.atoms.columnSizing) === null || _table$atoms$columnSi === void 0 || (_table$atoms$columnSi = _table$atoms$columnSi.get()) === null || _table$atoms$columnSi === void 0 ? void 0 : _table$atoms$columnSi[column.id]];
28
28
  }
29
29
  },
30
- column_getStart: {
31
- fn: (column, position) => column_getStart(column, position),
32
- memoDeps: (column, position) => {
33
- var _table$atoms$columnSi2, _table$atoms$columnOr, _table$atoms$columnPi, _table$atoms$columnVi;
34
- return [
35
- position,
36
- table.options.columns,
37
- (_table$atoms$columnSi2 = table.atoms.columnSizing) === null || _table$atoms$columnSi2 === void 0 ? void 0 : _table$atoms$columnSi2.get(),
38
- (_table$atoms$columnOr = table.atoms.columnOrder) === null || _table$atoms$columnOr === void 0 ? void 0 : _table$atoms$columnOr.get(),
39
- (_table$atoms$columnPi = table.atoms.columnPinning) === null || _table$atoms$columnPi === void 0 ? void 0 : _table$atoms$columnPi.get(),
40
- (_table$atoms$columnVi = table.atoms.columnVisibility) === null || _table$atoms$columnVi === void 0 ? void 0 : _table$atoms$columnVi.get()
41
- ];
42
- }
43
- },
44
- column_getAfter: {
45
- fn: (column, position) => column_getAfter(column, position),
46
- memoDeps: (column, position) => {
47
- var _table$atoms$columnSi3, _table$atoms$columnOr2, _table$atoms$columnPi2, _table$atoms$columnVi2;
48
- return [
49
- position,
50
- table.options.columns,
51
- (_table$atoms$columnSi3 = table.atoms.columnSizing) === null || _table$atoms$columnSi3 === void 0 ? void 0 : _table$atoms$columnSi3.get(),
52
- (_table$atoms$columnOr2 = table.atoms.columnOrder) === null || _table$atoms$columnOr2 === void 0 ? void 0 : _table$atoms$columnOr2.get(),
53
- (_table$atoms$columnPi2 = table.atoms.columnPinning) === null || _table$atoms$columnPi2 === void 0 ? void 0 : _table$atoms$columnPi2.get(),
54
- (_table$atoms$columnVi2 = table.atoms.columnVisibility) === null || _table$atoms$columnVi2 === void 0 ? void 0 : _table$atoms$columnVi2.get()
55
- ];
56
- }
57
- },
30
+ column_getStart: { fn: (column, position) => column_getStart(column, position) },
31
+ column_getAfter: { fn: (column, position) => column_getAfter(column, position) },
58
32
  column_resetSize: { fn: (column) => column_resetSize(column) }
59
33
  });
60
34
  },
@@ -63,21 +37,22 @@ const columnSizingFeature = {
63
37
  header_getSize: {
64
38
  fn: (header) => header_getSize(header),
65
39
  memoDeps: (header) => {
66
- var _table$atoms$columnSi4, _table$atoms$columnSi5;
67
- return [table.options.columns, header.column.columns.length > 0 ? (_table$atoms$columnSi4 = table.atoms.columnSizing) === null || _table$atoms$columnSi4 === void 0 ? void 0 : _table$atoms$columnSi4.get() : (_table$atoms$columnSi5 = table.atoms.columnSizing) === null || _table$atoms$columnSi5 === void 0 || (_table$atoms$columnSi5 = _table$atoms$columnSi5.get()) === null || _table$atoms$columnSi5 === void 0 ? void 0 : _table$atoms$columnSi5[header.column.id]];
40
+ var _table$atoms$columnSi2, _table$atoms$columnSi3;
41
+ return [table.options.columns, header.column.columns.length > 0 ? (_table$atoms$columnSi2 = table.atoms.columnSizing) === null || _table$atoms$columnSi2 === void 0 ? void 0 : _table$atoms$columnSi2.get() : (_table$atoms$columnSi3 = table.atoms.columnSizing) === null || _table$atoms$columnSi3 === void 0 || (_table$atoms$columnSi3 = _table$atoms$columnSi3.get()) === null || _table$atoms$columnSi3 === void 0 ? void 0 : _table$atoms$columnSi3[header.column.id]];
68
42
  }
69
43
  },
70
44
  header_getStart: {
71
45
  fn: (header) => header_getStart(header),
72
- memoDeps: (header, position) => {
73
- var _table$atoms$columnSi6, _table$atoms$columnOr3, _table$atoms$columnPi3, _table$atoms$columnVi3;
46
+ memoDeps: () => {
47
+ var _table$atoms$columnSi4, _table$atoms$columnOr, _table$atoms$columnPi, _table$atoms$columnVi, _table$atoms$grouping;
74
48
  return [
75
- position,
76
49
  table.options.columns,
77
- (_table$atoms$columnSi6 = table.atoms.columnSizing) === null || _table$atoms$columnSi6 === void 0 ? void 0 : _table$atoms$columnSi6.get(),
78
- (_table$atoms$columnOr3 = table.atoms.columnOrder) === null || _table$atoms$columnOr3 === void 0 ? void 0 : _table$atoms$columnOr3.get(),
79
- (_table$atoms$columnPi3 = table.atoms.columnPinning) === null || _table$atoms$columnPi3 === void 0 ? void 0 : _table$atoms$columnPi3.get(),
80
- (_table$atoms$columnVi3 = table.atoms.columnVisibility) === null || _table$atoms$columnVi3 === void 0 ? void 0 : _table$atoms$columnVi3.get()
50
+ (_table$atoms$columnSi4 = table.atoms.columnSizing) === null || _table$atoms$columnSi4 === void 0 ? void 0 : _table$atoms$columnSi4.get(),
51
+ (_table$atoms$columnOr = table.atoms.columnOrder) === null || _table$atoms$columnOr === void 0 ? void 0 : _table$atoms$columnOr.get(),
52
+ (_table$atoms$columnPi = table.atoms.columnPinning) === null || _table$atoms$columnPi === void 0 ? void 0 : _table$atoms$columnPi.get(),
53
+ (_table$atoms$columnVi = table.atoms.columnVisibility) === null || _table$atoms$columnVi === void 0 ? void 0 : _table$atoms$columnVi.get(),
54
+ (_table$atoms$grouping = table.atoms.grouping) === null || _table$atoms$grouping === void 0 ? void 0 : _table$atoms$grouping.get(),
55
+ table.options.groupedColumnMode
81
56
  ];
82
57
  }
83
58
  }
@@ -85,34 +60,49 @@ const columnSizingFeature = {
85
60
  },
86
61
  constructTableAPIs: (table) => {
87
62
  assignTableAPIs("columnSizingFeature", table, {
63
+ table_getColumnOffsets: {
64
+ fn: () => table_getColumnOffsets(table),
65
+ memoDeps: () => {
66
+ var _table$atoms$columnSi5, _table$atoms$columnOr2, _table$atoms$columnPi2, _table$atoms$columnVi2, _table$atoms$grouping2;
67
+ return [
68
+ table.options.columns,
69
+ (_table$atoms$columnSi5 = table.atoms.columnSizing) === null || _table$atoms$columnSi5 === void 0 ? void 0 : _table$atoms$columnSi5.get(),
70
+ (_table$atoms$columnOr2 = table.atoms.columnOrder) === null || _table$atoms$columnOr2 === void 0 ? void 0 : _table$atoms$columnOr2.get(),
71
+ (_table$atoms$columnPi2 = table.atoms.columnPinning) === null || _table$atoms$columnPi2 === void 0 ? void 0 : _table$atoms$columnPi2.get(),
72
+ (_table$atoms$columnVi2 = table.atoms.columnVisibility) === null || _table$atoms$columnVi2 === void 0 ? void 0 : _table$atoms$columnVi2.get(),
73
+ (_table$atoms$grouping2 = table.atoms.grouping) === null || _table$atoms$grouping2 === void 0 ? void 0 : _table$atoms$grouping2.get(),
74
+ table.options.groupedColumnMode
75
+ ];
76
+ }
77
+ },
88
78
  table_setColumnSizing: { fn: (updater) => table_setColumnSizing(table, updater) },
89
79
  table_resetColumnSizing: { fn: (defaultState) => table_resetColumnSizing(table, defaultState) },
90
80
  table_getTotalSize: {
91
81
  fn: () => table_getTotalSize(table),
92
82
  memoDeps: () => {
93
- var _table$atoms$columnSi7;
94
- return [(_table$atoms$columnSi7 = table.atoms.columnSizing) === null || _table$atoms$columnSi7 === void 0 ? void 0 : _table$atoms$columnSi7.get(), table.getHeaderGroups()];
83
+ var _table$atoms$columnSi6;
84
+ return [(_table$atoms$columnSi6 = table.atoms.columnSizing) === null || _table$atoms$columnSi6 === void 0 ? void 0 : _table$atoms$columnSi6.get(), table.getHeaderGroups()];
95
85
  }
96
86
  },
97
87
  table_getLeftTotalSize: {
98
88
  fn: () => table_getLeftTotalSize(table),
99
89
  memoDeps: () => {
100
- var _table$atoms$columnSi8;
101
- return [(_table$atoms$columnSi8 = table.atoms.columnSizing) === null || _table$atoms$columnSi8 === void 0 ? void 0 : _table$atoms$columnSi8.get(), table.getHeaderGroups()];
90
+ var _table$atoms$columnSi7;
91
+ return [(_table$atoms$columnSi7 = table.atoms.columnSizing) === null || _table$atoms$columnSi7 === void 0 ? void 0 : _table$atoms$columnSi7.get(), table.getHeaderGroups()];
102
92
  }
103
93
  },
104
94
  table_getCenterTotalSize: {
105
95
  fn: () => table_getCenterTotalSize(table),
106
96
  memoDeps: () => {
107
- var _table$atoms$columnSi9;
108
- return [(_table$atoms$columnSi9 = table.atoms.columnSizing) === null || _table$atoms$columnSi9 === void 0 ? void 0 : _table$atoms$columnSi9.get(), table.getHeaderGroups()];
97
+ var _table$atoms$columnSi8;
98
+ return [(_table$atoms$columnSi8 = table.atoms.columnSizing) === null || _table$atoms$columnSi8 === void 0 ? void 0 : _table$atoms$columnSi8.get(), table.getHeaderGroups()];
109
99
  }
110
100
  },
111
101
  table_getRightTotalSize: {
112
102
  fn: () => table_getRightTotalSize(table),
113
103
  memoDeps: () => {
114
- var _table$atoms$columnSi10;
115
- return [(_table$atoms$columnSi10 = table.atoms.columnSizing) === null || _table$atoms$columnSi10 === void 0 ? void 0 : _table$atoms$columnSi10.get(), table.getHeaderGroups()];
104
+ var _table$atoms$columnSi9;
105
+ return [(_table$atoms$columnSi9 = table.atoms.columnSizing) === null || _table$atoms$columnSi9 === void 0 ? void 0 : _table$atoms$columnSi9.get(), table.getHeaderGroups()];
116
106
  }
117
107
  }
118
108
  });
@@ -1 +1 @@
1
- {"version":3,"file":"columnSizingFeature.js","names":[],"sources":["../../../src/features/column-sizing/columnSizingFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getAfter,\n column_getSize,\n column_getStart,\n column_resetSize,\n getDefaultColumnSizingColumnDef,\n getDefaultColumnSizingState,\n header_getSize,\n header_getStart,\n table_getCenterTotalSize,\n table_getLeftTotalSize,\n table_getRightTotalSize,\n table_getTotalSize,\n table_resetColumnSizing,\n table_setColumnSizing,\n} from './columnSizingFeature.utils'\nimport type { TableFeature } from '../../types/TableFeatures'\n\n/**\n * Feature that adds column sizing state, defaults, and size measurement APIs.\n */\nexport const columnSizingFeature: TableFeature = {\n getInitialState: (initialState) => {\n return {\n columnSizing: getDefaultColumnSizingState(),\n ...initialState,\n }\n },\n\n getDefaultColumnDef: () => {\n return getDefaultColumnSizingColumnDef()\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnSizingFeature', prototype, table, {\n column_getSize: {\n fn: (column) => column_getSize(column),\n memoDeps: (column) => [\n table.options.columns,\n table.atoms.columnSizing?.get()?.[column.id], // just this column's size state\n ],\n },\n column_getStart: {\n fn: (column, position) => column_getStart(column, position),\n memoDeps: (column, position) => [\n position,\n table.options.columns,\n table.atoms.columnSizing?.get(),\n table.atoms.columnOrder?.get(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n ],\n },\n column_getAfter: {\n fn: (column, position) => column_getAfter(column, position),\n memoDeps: (column, position) => [\n position,\n table.options.columns,\n table.atoms.columnSizing?.get(),\n table.atoms.columnOrder?.get(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n ],\n },\n column_resetSize: {\n fn: (column) => column_resetSize(column),\n },\n })\n },\n\n assignHeaderPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnSizingFeature', prototype, table, {\n header_getSize: {\n fn: (header) => header_getSize(header),\n memoDeps: (header) => [\n table.options.columns,\n header.column.columns.length > 0\n ? table.atoms.columnSizing?.get() // must be all columns (sum child columns)\n : table.atoms.columnSizing?.get()?.[header.column.id], // can just check it's associated column size state\n ],\n },\n header_getStart: {\n fn: (header) => header_getStart(header),\n memoDeps: (header, position) => [\n position,\n table.options.columns,\n table.atoms.columnSizing?.get(),\n table.atoms.columnOrder?.get(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n ],\n },\n })\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnSizingFeature', table, {\n table_setColumnSizing: {\n fn: (updater) => table_setColumnSizing(table, updater),\n },\n table_resetColumnSizing: {\n fn: (defaultState) => table_resetColumnSizing(table, defaultState),\n },\n table_getTotalSize: {\n fn: () => table_getTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n table_getLeftTotalSize: {\n fn: () => table_getLeftTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n table_getCenterTotalSize: {\n fn: () => table_getCenterTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n table_getRightTotalSize: {\n fn: () => table_getRightTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n })\n },\n}\n"],"mappings":";;;;;;;AA0BA,MAAa,sBAAoC;CAC/C,kBAAkB,iBAAiB;EACjC,OAAO;GACL,cAAc,4BAA4B;GAC1C,GAAG;EACL;CACF;CAEA,2BAA2B;EACzB,OAAO,gCAAgC;CACzC;CAEA,yBAAyB,UAAU;EACjC,OAAO,EACL,sBAAsB,iBAAiB,gBAAgB,KAAK,EAC9D;CACF;CAEA,wBAAwB,WAAW,UAAU;EAC3C,oBAAoB,uBAAuB,WAAW,OAAO;GAC3D,gBAAgB;IACd,KAAK,WAAW,eAAe,MAAM;IACrC,WAAW,WAAW;;aACpB,MAAM,QAAQ,kCACd,MAAM,MAAM,6GAAc,IAAI,iFAAI,OAAO,GAC3C;;GACF;GACA,iBAAiB;IACf,KAAK,QAAQ,aAAa,gBAAgB,QAAQ,QAAQ;IAC1D,WAAW,QAAQ,aAAa;;;MAC9B;MACA,MAAM,QAAQ;gCACd,MAAM,MAAM,8FAAc,IAAI;+BAC9B,MAAM,MAAM,2FAAa,IAAI;+BAC7B,MAAM,MAAM,6FAAe,IAAI;+BAC/B,MAAM,MAAM,gGAAkB,IAAI;KACpC;;GACF;GACA,iBAAiB;IACf,KAAK,QAAQ,aAAa,gBAAgB,QAAQ,QAAQ;IAC1D,WAAW,QAAQ,aAAa;;;MAC9B;MACA,MAAM,QAAQ;gCACd,MAAM,MAAM,8FAAc,IAAI;gCAC9B,MAAM,MAAM,6FAAa,IAAI;gCAC7B,MAAM,MAAM,+FAAe,IAAI;gCAC/B,MAAM,MAAM,kGAAkB,IAAI;KACpC;;GACF;GACA,kBAAkB,EAChB,KAAK,WAAW,iBAAiB,MAAM,EACzC;EACF,CAAC;CACH;CAEA,wBAAwB,WAAW,UAAU;EAC3C,oBAAoB,uBAAuB,WAAW,OAAO;GAC3D,gBAAgB;IACd,KAAK,WAAW,eAAe,MAAM;IACrC,WAAW,WAAW;;aACpB,MAAM,QAAQ,SACd,OAAO,OAAO,QAAQ,SAAS,8BAC3B,MAAM,MAAM,8FAAc,IAAI,8BAC9B,MAAM,MAAM,gHAAc,IAAI,mFAAI,OAAO,OAAO,GACtD;;GACF;GACA,iBAAiB;IACf,KAAK,WAAW,gBAAgB,MAAM;IACtC,WAAW,QAAQ,aAAa;;;MAC9B;MACA,MAAM,QAAQ;gCACd,MAAM,MAAM,8FAAc,IAAI;gCAC9B,MAAM,MAAM,6FAAa,IAAI;gCAC7B,MAAM,MAAM,+FAAe,IAAI;gCAC/B,MAAM,MAAM,kGAAkB,IAAI;KACpC;;GACF;EACF,CAAC;CACH;CAEA,qBAAqB,UAAU;EAC7B,gBAAgB,uBAAuB,OAAO;GAC5C,uBAAuB,EACrB,KAAK,YAAY,sBAAsB,OAAO,OAAO,EACvD;GACA,yBAAyB,EACvB,KAAK,iBAAiB,wBAAwB,OAAO,YAAY,EACnE;GACA,oBAAoB;IAClB,UAAU,mBAAmB,KAAK;IAClC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;GACA,wBAAwB;IACtB,UAAU,uBAAuB,KAAK;IACtC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;GACA,0BAA0B;IACxB,UAAU,yBAAyB,KAAK;IACxC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;GACA,yBAAyB;IACvB,UAAU,wBAAwB,KAAK;IACvC,gBAAgB;;wCACd,MAAM,MAAM,gGAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;EACF,CAAC;CACH;AACF"}
1
+ {"version":3,"file":"columnSizingFeature.js","names":[],"sources":["../../../src/features/column-sizing/columnSizingFeature.ts"],"sourcesContent":["import {\n assignPrototypeAPIs,\n assignTableAPIs,\n makeStateUpdater,\n} from '../../utils'\nimport {\n column_getAfter,\n column_getSize,\n column_getStart,\n column_resetSize,\n getDefaultColumnSizingColumnDef,\n getDefaultColumnSizingState,\n header_getSize,\n header_getStart,\n table_getCenterTotalSize,\n table_getColumnOffsets,\n table_getLeftTotalSize,\n table_getRightTotalSize,\n table_getTotalSize,\n table_resetColumnSizing,\n table_setColumnSizing,\n} from './columnSizingFeature.utils'\nimport type { TableFeature } from '../../types/TableFeatures'\n\n/**\n * Feature that adds column sizing state, defaults, and size measurement APIs.\n */\nexport const columnSizingFeature: TableFeature = {\n getInitialState: (initialState) => {\n return {\n columnSizing: getDefaultColumnSizingState(),\n ...initialState,\n }\n },\n\n getDefaultColumnDef: () => {\n return getDefaultColumnSizingColumnDef()\n },\n\n getDefaultTableOptions: (table) => {\n return {\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n }\n },\n\n assignColumnPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnSizingFeature', prototype, table, {\n column_getSize: {\n fn: (column) => column_getSize(column),\n memoDeps: (column) => [\n table.options.columns,\n table.atoms.columnSizing?.get()?.[column.id], // just this column's size state\n ],\n },\n // O(1) lookups into the memoized table-level offsets, so no per-column\n // memos here\n column_getStart: {\n fn: (column, position) => column_getStart(column, position),\n },\n column_getAfter: {\n fn: (column, position) => column_getAfter(column, position),\n },\n column_resetSize: {\n fn: (column) => column_resetSize(column),\n },\n })\n },\n\n assignHeaderPrototype: (prototype, table) => {\n assignPrototypeAPIs('columnSizingFeature', prototype, table, {\n header_getSize: {\n fn: (header) => header_getSize(header),\n memoDeps: (header) => [\n table.options.columns,\n header.column.columns.length > 0\n ? table.atoms.columnSizing?.get() // must be all columns (sum child columns)\n : table.atoms.columnSizing?.get()?.[header.column.id], // can just check it's associated column size state\n ],\n },\n header_getStart: {\n fn: (header) => header_getStart(header),\n memoDeps: () => [\n table.options.columns,\n table.atoms.columnSizing?.get(),\n table.atoms.columnOrder?.get(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n table.atoms.grouping?.get(),\n table.options.groupedColumnMode,\n ],\n },\n })\n },\n\n constructTableAPIs: (table) => {\n assignTableAPIs('columnSizingFeature', table, {\n table_getColumnOffsets: {\n fn: () => table_getColumnOffsets(table),\n memoDeps: () => [\n table.options.columns,\n table.atoms.columnSizing?.get(),\n table.atoms.columnOrder?.get(),\n table.atoms.columnPinning?.get(),\n table.atoms.columnVisibility?.get(),\n table.atoms.grouping?.get(),\n table.options.groupedColumnMode,\n ],\n },\n table_setColumnSizing: {\n fn: (updater) => table_setColumnSizing(table, updater),\n },\n table_resetColumnSizing: {\n fn: (defaultState) => table_resetColumnSizing(table, defaultState),\n },\n table_getTotalSize: {\n fn: () => table_getTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n table_getLeftTotalSize: {\n fn: () => table_getLeftTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n table_getCenterTotalSize: {\n fn: () => table_getCenterTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n table_getRightTotalSize: {\n fn: () => table_getRightTotalSize(table),\n memoDeps: () => [\n table.atoms.columnSizing?.get(),\n table.getHeaderGroups(),\n ],\n },\n })\n },\n}\n"],"mappings":";;;;;;;AA2BA,MAAa,sBAAoC;CAC/C,kBAAkB,iBAAiB;EACjC,OAAO;GACL,cAAc,4BAA4B;GAC1C,GAAG;EACL;CACF;CAEA,2BAA2B;EACzB,OAAO,gCAAgC;CACzC;CAEA,yBAAyB,UAAU;EACjC,OAAO,EACL,sBAAsB,iBAAiB,gBAAgB,KAAK,EAC9D;CACF;CAEA,wBAAwB,WAAW,UAAU;EAC3C,oBAAoB,uBAAuB,WAAW,OAAO;GAC3D,gBAAgB;IACd,KAAK,WAAW,eAAe,MAAM;IACrC,WAAW,WAAW;;aACpB,MAAM,QAAQ,kCACd,MAAM,MAAM,6GAAc,IAAI,iFAAI,OAAO,GAC3C;;GACF;GAGA,iBAAiB,EACf,KAAK,QAAQ,aAAa,gBAAgB,QAAQ,QAAQ,EAC5D;GACA,iBAAiB,EACf,KAAK,QAAQ,aAAa,gBAAgB,QAAQ,QAAQ,EAC5D;GACA,kBAAkB,EAChB,KAAK,WAAW,iBAAiB,MAAM,EACzC;EACF,CAAC;CACH;CAEA,wBAAwB,WAAW,UAAU;EAC3C,oBAAoB,uBAAuB,WAAW,OAAO;GAC3D,gBAAgB;IACd,KAAK,WAAW,eAAe,MAAM;IACrC,WAAW,WAAW;;aACpB,MAAM,QAAQ,SACd,OAAO,OAAO,QAAQ,SAAS,8BAC3B,MAAM,MAAM,8FAAc,IAAI,8BAC9B,MAAM,MAAM,gHAAc,IAAI,mFAAI,OAAO,OAAO,GACtD;;GACF;GACA,iBAAiB;IACf,KAAK,WAAW,gBAAgB,MAAM;IACtC,gBAAgB;;;MACd,MAAM,QAAQ;gCACd,MAAM,MAAM,8FAAc,IAAI;+BAC9B,MAAM,MAAM,2FAAa,IAAI;+BAC7B,MAAM,MAAM,6FAAe,IAAI;+BAC/B,MAAM,MAAM,gGAAkB,IAAI;+BAClC,MAAM,MAAM,wFAAU,IAAI;MAC1B,MAAM,QAAQ;KAChB;;GACF;EACF,CAAC;CACH;CAEA,qBAAqB,UAAU;EAC7B,gBAAgB,uBAAuB,OAAO;GAC5C,wBAAwB;IACtB,UAAU,uBAAuB,KAAK;IACtC,gBAAgB;;;MACd,MAAM,QAAQ;gCACd,MAAM,MAAM,8FAAc,IAAI;gCAC9B,MAAM,MAAM,6FAAa,IAAI;gCAC7B,MAAM,MAAM,+FAAe,IAAI;gCAC/B,MAAM,MAAM,kGAAkB,IAAI;gCAClC,MAAM,MAAM,0FAAU,IAAI;MAC1B,MAAM,QAAQ;KAChB;;GACF;GACA,uBAAuB,EACrB,KAAK,YAAY,sBAAsB,OAAO,OAAO,EACvD;GACA,yBAAyB,EACvB,KAAK,iBAAiB,wBAAwB,OAAO,YAAY,EACnE;GACA,oBAAoB;IAClB,UAAU,mBAAmB,KAAK;IAClC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;GACA,wBAAwB;IACtB,UAAU,uBAAuB,KAAK;IACtC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;GACA,0BAA0B;IACxB,UAAU,yBAAyB,KAAK;IACxC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;GACA,yBAAyB;IACvB,UAAU,wBAAwB,KAAK;IACvC,gBAAgB;;uCACd,MAAM,MAAM,8FAAc,IAAI,GAC9B,MAAM,gBAAgB,CACxB;;GACF;EACF,CAAC;CACH;AACF"}
@@ -6,6 +6,36 @@ interface TableState_ColumnSizing {
6
6
  columnSizing: ColumnSizingState;
7
7
  }
8
8
  type ColumnSizingState = Record<string, number>;
9
+ interface ColumnOffsets {
10
+ /**
11
+ * Offset from the start edge of the region to each column's start edge,
12
+ * keyed by column id.
13
+ */
14
+ starts: Record<string, number>;
15
+ /**
16
+ * Offset from the end edge of the region to each column's end edge, keyed by
17
+ * column id.
18
+ */
19
+ afters: Record<string, number>;
20
+ }
21
+ interface ColumnOffsetsByPosition {
22
+ /**
23
+ * Offsets across all visible leaf columns, ignoring pinning regions.
24
+ */
25
+ all: ColumnOffsets;
26
+ /**
27
+ * Offsets within the center (unpinned) region.
28
+ */
29
+ center: ColumnOffsets;
30
+ /**
31
+ * Offsets within the left pinned region.
32
+ */
33
+ left: ColumnOffsets;
34
+ /**
35
+ * Offsets within the right pinned region.
36
+ */
37
+ right: ColumnOffsets;
38
+ }
9
39
  interface TableOptions_ColumnSizing {
10
40
  /**
11
41
  * Called with an updater when committed column sizing state changes. Pair
@@ -20,6 +50,13 @@ interface Table_ColumnSizing {
20
50
  * Sums the current sizes of visible center-region leaf columns.
21
51
  */
22
52
  getCenterTotalSize: () => number;
53
+ /**
54
+ * Returns memoized column offset maps (start and after offsets keyed by
55
+ * column id) for each pinning region plus the full visible leaf column list.
56
+ *
57
+ * Backs `column.getStart()` and `column.getAfter()` with O(1) lookups.
58
+ */
59
+ getColumnOffsets: () => ColumnOffsetsByPosition;
23
60
  /**
24
61
  * Sums the current sizes of visible left-pinned leaf columns.
25
62
  */
@@ -92,5 +129,5 @@ interface Header_ColumnSizing {
92
129
  getStart: (position?: ColumnPinningPosition) => number;
93
130
  }
94
131
  //#endregion
95
- export { ColumnDef_ColumnSizing, ColumnSizingDefaultOptions, ColumnSizingState, Column_ColumnSizing, Header_ColumnSizing, TableOptions_ColumnSizing, TableState_ColumnSizing, Table_ColumnSizing };
132
+ export { ColumnDef_ColumnSizing, ColumnOffsets, ColumnOffsetsByPosition, ColumnSizingDefaultOptions, ColumnSizingState, Column_ColumnSizing, Header_ColumnSizing, TableOptions_ColumnSizing, TableState_ColumnSizing, Table_ColumnSizing };
96
133
  //# sourceMappingURL=columnSizingFeature.types.d.cts.map
@@ -6,6 +6,36 @@ interface TableState_ColumnSizing {
6
6
  columnSizing: ColumnSizingState;
7
7
  }
8
8
  type ColumnSizingState = Record<string, number>;
9
+ interface ColumnOffsets {
10
+ /**
11
+ * Offset from the start edge of the region to each column's start edge,
12
+ * keyed by column id.
13
+ */
14
+ starts: Record<string, number>;
15
+ /**
16
+ * Offset from the end edge of the region to each column's end edge, keyed by
17
+ * column id.
18
+ */
19
+ afters: Record<string, number>;
20
+ }
21
+ interface ColumnOffsetsByPosition {
22
+ /**
23
+ * Offsets across all visible leaf columns, ignoring pinning regions.
24
+ */
25
+ all: ColumnOffsets;
26
+ /**
27
+ * Offsets within the center (unpinned) region.
28
+ */
29
+ center: ColumnOffsets;
30
+ /**
31
+ * Offsets within the left pinned region.
32
+ */
33
+ left: ColumnOffsets;
34
+ /**
35
+ * Offsets within the right pinned region.
36
+ */
37
+ right: ColumnOffsets;
38
+ }
9
39
  interface TableOptions_ColumnSizing {
10
40
  /**
11
41
  * Called with an updater when committed column sizing state changes. Pair
@@ -20,6 +50,13 @@ interface Table_ColumnSizing {
20
50
  * Sums the current sizes of visible center-region leaf columns.
21
51
  */
22
52
  getCenterTotalSize: () => number;
53
+ /**
54
+ * Returns memoized column offset maps (start and after offsets keyed by
55
+ * column id) for each pinning region plus the full visible leaf column list.
56
+ *
57
+ * Backs `column.getStart()` and `column.getAfter()` with O(1) lookups.
58
+ */
59
+ getColumnOffsets: () => ColumnOffsetsByPosition;
23
60
  /**
24
61
  * Sums the current sizes of visible left-pinned leaf columns.
25
62
  */
@@ -92,5 +129,5 @@ interface Header_ColumnSizing {
92
129
  getStart: (position?: ColumnPinningPosition) => number;
93
130
  }
94
131
  //#endregion
95
- export { ColumnDef_ColumnSizing, ColumnSizingDefaultOptions, ColumnSizingState, Column_ColumnSizing, Header_ColumnSizing, TableOptions_ColumnSizing, TableState_ColumnSizing, Table_ColumnSizing };
132
+ export { ColumnDef_ColumnSizing, ColumnOffsets, ColumnOffsetsByPosition, ColumnSizingDefaultOptions, ColumnSizingState, Column_ColumnSizing, Header_ColumnSizing, TableOptions_ColumnSizing, TableState_ColumnSizing, Table_ColumnSizing };
96
133
  //# sourceMappingURL=columnSizingFeature.types.d.ts.map