102 lines
3.0 KiB
JavaScript
102 lines
3.0 KiB
JavaScript
/**
|
|
* 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
|