UNPKG

@tanstack/react-table

Version:

Headless UI for building powerful tables & datagrids for React.

102 lines (92 loc) 3.1 kB
/** * react-table * * 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 React = require('react'); var tableCore = require('@tanstack/table-core'); function _interopNamespaceDefault(e) { var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n.default = e; return Object.freeze(n); } var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React); // /** * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`. */ function flexRender(Comp, props) { return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React__namespace.createElement(Comp, props) : Comp; } function isReactComponent(component) { return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component); } function isClassComponent(component) { return typeof component === 'function' && (() => { const proto = Object.getPrototypeOf(component); return proto.prototype && proto.prototype.isReactComponent; })(); } function isExoticComponent(component) { return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description); } function useReactTable(options) { // Compose in the generic options to the user options const resolvedOptions = { state: {}, // Dummy state onStateChange: () => {}, // noop renderFallbackValue: null, ...options }; // Create a new table and store it in state const [tableRef] = React__namespace.useState(() => ({ current: tableCore.createTable(resolvedOptions) })); // By default, manage table state here using the table's initial state const [state, setState] = React__namespace.useState(() => tableRef.current.initialState); // Compose the default state above with any user state. This will allow the user // to only control a subset of the state if desired. tableRef.current.setOptions(prev => ({ ...prev, ...options, state: { ...state, ...options.state }, // Similarly, we'll maintain both our internal state and any user-provided // state. onStateChange: updater => { setState(updater); options.onStateChange == null || options.onStateChange(updater); } })); return tableRef.current; } exports.flexRender = flexRender; exports.useReactTable = useReactTable; Object.keys(tableCore).forEach(function (k) { if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, { enumerable: true, get: function () { return tableCore[k]; } }); }); //# sourceMappingURL=index.js.map