UNPKG

@tanstack/table-core

Version:

Headless UI for building powerful tables & datagrids for TS/JS.

81 lines (76 loc) 3.08 kB
/** * table-core * * Copyright (c) TanStack * * This source code is licensed under the MIT license found in the * LICENSE.md file in the root directory of this source tree. * * @license MIT */ 'use strict'; var utils = require('../utils.js'); function createColumn(table, columnDef, depth, parent) { var _ref, _resolvedColumnDef$id; const defaultColumn = table._getDefaultColumnDef(); const resolvedColumnDef = { ...defaultColumn, ...columnDef }; const accessorKey = resolvedColumnDef.accessorKey; let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined; let accessorFn; if (resolvedColumnDef.accessorFn) { accessorFn = resolvedColumnDef.accessorFn; } else if (accessorKey) { // Support deep accessor keys if (accessorKey.includes('.')) { accessorFn = originalRow => { let result = originalRow; for (const key of accessorKey.split('.')) { var _result; result = (_result = result) == null ? void 0 : _result[key]; if (process.env.NODE_ENV !== 'production' && result === undefined) { console.warn(`"${key}" in deeply nested key "${accessorKey}" returned undefined.`); } } return result; }; } else { accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey]; } } if (!id) { if (process.env.NODE_ENV !== 'production') { throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`); } throw new Error(); } let column = { id: `${String(id)}`, accessorFn, parent: parent, depth, columnDef: resolvedColumnDef, columns: [], getFlatColumns: utils.memo(() => [true], () => { var _column$columns; return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))]; }, utils.getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')), getLeafColumns: utils.memo(() => [table._getOrderColumnsFn()], orderColumns => { var _column$columns2; if ((_column$columns2 = column.columns) != null && _column$columns2.length) { let leafColumns = column.columns.flatMap(column => column.getLeafColumns()); return orderColumns(leafColumns); } return [column]; }, utils.getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns')) }; for (const feature of table._features) { feature.createColumn == null || feature.createColumn(column, table); } // Yes, we have to convert table to unknown, because we know more than the compiler here. return column; } exports.createColumn = createColumn; //# sourceMappingURL=column.js.map