diff --git a/.gitignore b/.gitignore index 43ae0e1b45..feec39ac30 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ node_modules lib -dist es docs/build react-table.js diff --git a/dist/index.es.js b/dist/index.es.js new file mode 100644 index 0000000000..66198b7d8b --- /dev/null +++ b/dist/index.es.js @@ -0,0 +1,3410 @@ +import React, { useMemo } from 'react' +import PropTypes from 'prop-types' + +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true, + }) + } else { + obj[key] = value + } + + return obj +} + +function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object) + + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object) + if (enumerableOnly) + symbols = symbols.filter(function(sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable + }) + keys.push.apply(keys, symbols) + } + + return keys +} + +function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {} + + if (i % 2) { + ownKeys(source, true).forEach(function(key) { + _defineProperty(target, key, source[key]) + }) + } else if (Object.getOwnPropertyDescriptors) { + Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) + } else { + ownKeys(source).forEach(function(key) { + Object.defineProperty( + target, + key, + Object.getOwnPropertyDescriptor(source, key) + ) + }) + } + } + + return target +} + +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {} + var target = {} + var sourceKeys = Object.keys(source) + var key, i + + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i] + if (excluded.indexOf(key) >= 0) continue + target[key] = source[key] + } + + return target +} + +function _objectWithoutProperties(source, excluded) { + if (source == null) return {} + + var target = _objectWithoutPropertiesLoose(source, excluded) + + var key, i + + if (Object.getOwnPropertySymbols) { + var sourceSymbolKeys = Object.getOwnPropertySymbols(source) + + for (i = 0; i < sourceSymbolKeys.length; i++) { + key = sourceSymbolKeys[i] + if (excluded.indexOf(key) >= 0) continue + if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue + target[key] = source[key] + } + } + + return target +} + +function _slicedToArray(arr, i) { + return ( + _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest() + ) +} + +function _toConsumableArray(arr) { + return ( + _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread() + ) +} + +function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) + arr2[i] = arr[i] + + return arr2 + } +} + +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr +} + +function _iterableToArray(iter) { + if ( + Symbol.iterator in Object(iter) || + Object.prototype.toString.call(iter) === '[object Arguments]' + ) + return Array.from(iter) +} + +function _iterableToArrayLimit(arr, i) { + if ( + !( + Symbol.iterator in Object(arr) || + Object.prototype.toString.call(arr) === '[object Arguments]' + ) + ) { + return + } + + var _arr = [] + var _n = true + var _d = false + var _e = undefined + + try { + for ( + var _i = arr[Symbol.iterator](), _s; + !(_n = (_s = _i.next()).done); + _n = true + ) { + _arr.push(_s.value) + + if (i && _arr.length === i) break + } + } catch (err) { + _d = true + _e = err + } finally { + try { + if (!_n && _i['return'] != null) _i['return']() + } finally { + if (_d) throw _e + } + } + + return _arr +} + +function _nonIterableSpread() { + throw new TypeError('Invalid attempt to spread non-iterable instance') +} + +function _nonIterableRest() { + throw new TypeError('Invalid attempt to destructure non-iterable instance') +} + +function _toPrimitive(input, hint) { + if (typeof input !== 'object' || input === null) return input + var prim = input[Symbol.toPrimitive] + + if (prim !== undefined) { + var res = prim.call(input, hint || 'default') + if (typeof res !== 'object') return res + throw new TypeError('@@toPrimitive must return a primitive value.') + } + + return (hint === 'string' ? String : Number)(input) +} + +function _toPropertyKey(arg) { + var key = _toPrimitive(arg, 'string') + + return typeof key === 'symbol' ? key : String(key) +} + +var defaultColumn = { + Cell: function Cell(_ref) { + var _ref$cell$value = _ref.cell.value, + value = _ref$cell$value === void 0 ? '' : _ref$cell$value + return String(value) + }, + show: true, + width: 150, + minWidth: 0, + maxWidth: Number.MAX_SAFE_INTEGER, +} // SSR has issues with useLayoutEffect still, so use useEffect during SSR + +var safeUseLayoutEffect = + typeof window !== 'undefined' && process.env.NODE_ENV === 'production' + ? React.useLayoutEffect + : React.useEffect // Find the depth of the columns + +function findMaxDepth(columns) { + var depth = + arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0 + return columns.reduce(function(prev, curr) { + if (curr.columns) { + return Math.max(prev, findMaxDepth(curr.columns, depth + 1)) + } + + return depth + }, 0) +} +function decorateColumn(column, userDefaultColumn, parent, depth, index) { + // Apply the userDefaultColumn + column = _objectSpread2({}, defaultColumn, {}, userDefaultColumn, {}, column) // First check for string accessor + + var _column = column, + id = _column.id, + accessor = _column.accessor, + Header = _column.Header + + if (typeof accessor === 'string') { + id = id || accessor + var accessorPath = accessor.split('.') + + accessor = function accessor(row) { + return getBy(row, accessorPath) + } + } + + if (!id && typeof Header === 'string' && Header) { + id = Header + } + + if (!id && column.columns) { + console.error(column) + throw new Error('A column ID (or unique "Header" value) is required!') + } + + if (!id) { + console.error(column) + throw new Error('A column ID (or string accessor) is required!') + } + + column = _objectSpread2( + { + // Make sure there is a fallback header, just in case + Header: function Header() { + return React.createElement(React.Fragment, null, '\xA0') + }, + }, + column, + { + // Materialize and override this stuff + id: id, + accessor: accessor, + parent: parent, + depth: depth, + index: index, + } + ) + return column +} // Build the visible columns, headers and flat column list + +function decorateColumnTree(columns, defaultColumn, parent) { + var depth = + arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0 + return columns.map(function(column, columnIndex) { + column = decorateColumn(column, defaultColumn, parent, depth, columnIndex) + + if (column.columns) { + column.columns = decorateColumnTree( + column.columns, + defaultColumn, + column, + depth + 1 + ) + } + + return column + }) +} // Build the header groups from the bottom up + +function makeHeaderGroups(flatColumns, defaultColumn) { + var headerGroups = [] // Build each header group from the bottom up + + var buildGroup = function buildGroup(columns, depth) { + var headerGroup = { + headers: [], + } + var parentColumns = [] // Do any of these columns have parents? + + var hasParents = columns.some(function(col) { + return col.parent + }) + columns.forEach(function(column) { + // Are we the first column in this group? + var isFirst = !parentColumns.length // What is the latest (last) parent column? + + var latestParentColumn = [].concat(parentColumns).reverse()[0] // If the column has a parent, add it if necessary + + if (column.parent) { + var similarParentColumns = parentColumns.filter(function(d) { + return d.originalID === column.parent.id + }) + + if (isFirst || latestParentColumn.originalID !== column.parent.id) { + parentColumns.push( + _objectSpread2({}, column.parent, { + originalID: column.parent.id, + id: [column.parent.id, similarParentColumns.length].join('_'), + }) + ) + } + } else if (hasParents) { + // If other columns have parents, we'll need to add a place holder if necessary + var originalID = [column.id, 'placeholder'].join('_') + + var _similarParentColumns = parentColumns.filter(function(d) { + return d.originalID === originalID + }) + + var placeholderColumn = decorateColumn( + { + originalID: originalID, + id: [column.id, 'placeholder', _similarParentColumns.length].join( + '_' + ), + placeholderOf: column, + }, + defaultColumn + ) + + if ( + isFirst || + latestParentColumn.originalID !== placeholderColumn.originalID + ) { + parentColumns.push(placeholderColumn) + } + } // Establish the new headers[] relationship on the parent + + if (column.parent || hasParents) { + latestParentColumn = [].concat(parentColumns).reverse()[0] + latestParentColumn.headers = latestParentColumn.headers || [] + + if (!latestParentColumn.headers.includes(column)) { + latestParentColumn.headers.push(column) + } + } + + column.totalHeaderCount = column.headers + ? column.headers.reduce(function(sum, header) { + return sum + header.totalHeaderCount + }, 0) + : 1 // Leaf node columns take up at least one count + + headerGroup.headers.push(column) + }) + headerGroups.push(headerGroup) + + if (parentColumns.length) { + buildGroup(parentColumns, depth + 1) + } + } + + buildGroup(flatColumns, 0) + return headerGroups.reverse() +} +function determineHeaderVisibility(instance) { + var headers = instance.headers + + var handleColumn = function handleColumn(column, parentVisible) { + column.isVisible = parentVisible + ? typeof column.show === 'function' + ? column.show(instance) + : !!column.show + : false + var totalVisibleHeaderCount = 0 + + if (column.headers && column.headers.length) { + column.headers.forEach(function(subColumn) { + return (totalVisibleHeaderCount += handleColumn( + subColumn, + column.isVisible + )) + }) + } else { + totalVisibleHeaderCount = column.isVisible ? 1 : 0 + } + + column.totalVisibleHeaderCount = totalVisibleHeaderCount + return totalVisibleHeaderCount + } + + var totalVisibleHeaderCount = 0 + headers.forEach(function(subHeader) { + return (totalVisibleHeaderCount += handleColumn(subHeader, true)) + }) +} +function getBy(obj, path, def) { + if (!path) { + return obj + } + + var pathObj = makePathArray(path) + var val + + try { + val = pathObj.reduce(function(cursor, pathPart) { + return cursor[pathPart] + }, obj) + } catch (e) { + // continue regardless of error + } + + return typeof val !== 'undefined' ? val : def +} +function defaultOrderByFn(arr, funcs, dirs) { + return _toConsumableArray(arr).sort(function(rowA, rowB) { + for (var i = 0; i < funcs.length; i += 1) { + var sortFn = funcs[i] + var desc = dirs[i] === false || dirs[i] === 'desc' + var sortInt = sortFn(rowA, rowB) + + if (sortInt !== 0) { + return desc ? -sortInt : sortInt + } + } + + return dirs[0] ? rowA.index - rowB.index : rowB.index - rowA.index + }) +} +function getFirstDefined() { + for ( + var _len = arguments.length, args = new Array(_len), _key = 0; + _key < _len; + _key++ + ) { + args[_key] = arguments[_key] + } + + for (var i = 0; i < args.length; i += 1) { + if (typeof args[i] !== 'undefined') { + return args[i] + } + } +} +function defaultGroupByFn(rows, columnID) { + return rows.reduce(function(prev, row, i) { + // TODO: Might want to implement a key serializer here so + // irregular column values can still be grouped if needed? + var resKey = ''.concat(row.values[columnID]) + prev[resKey] = Array.isArray(prev[resKey]) ? prev[resKey] : [] + prev[resKey].push(row) + return prev + }, {}) +} +function getElementDimensions(element) { + var rect = element.getBoundingClientRect() + var style = window.getComputedStyle(element) + var margins = { + left: parseInt(style.marginLeft), + right: parseInt(style.marginRight), + } + var padding = { + left: parseInt(style.paddingLeft), + right: parseInt(style.paddingRight), + } + return { + left: Math.ceil(rect.left), + width: Math.ceil(rect.width), + outerWidth: Math.ceil( + rect.width + margins.left + margins.right + padding.left + padding.right + ), + marginLeft: margins.left, + marginRight: margins.right, + paddingLeft: padding.left, + paddingRight: padding.right, + scrollWidth: element.scrollWidth, + } +} +function flexRender(Comp, props) { + return isReactComponent(Comp) ? React.createElement(Comp, props) : Comp +} + +function isClassComponent(component) { + return ( + typeof component === 'function' && + !!(function() { + var proto = Object.getPrototypeOf(component) + return proto.prototype && proto.prototype.isReactComponent + })() + ) +} + +function isFunctionComponent(component) { + return typeof component === 'function' +} + +function isReactComponent(component) { + return isClassComponent(component) || isFunctionComponent(component) +} + +var mergeProps = function mergeProps() { + var props = {} + + for ( + var _len2 = arguments.length, groups = new Array(_len2), _key2 = 0; + _key2 < _len2; + _key2++ + ) { + groups[_key2] = arguments[_key2] + } + + groups.forEach(function() { + var _ref2 = + arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref2$style = _ref2.style, + style = _ref2$style === void 0 ? {} : _ref2$style, + className = _ref2.className, + rest = _objectWithoutProperties(_ref2, ['style', 'className']) + + props = _objectSpread2({}, props, {}, rest, { + style: _objectSpread2({}, props.style || {}, {}, style), + className: [props.className, className].filter(Boolean).join(' '), + }) + }) + return props +} +var applyHooks = function applyHooks(hooks, initial) { + for ( + var _len3 = arguments.length, + args = new Array(_len3 > 2 ? _len3 - 2 : 0), + _key3 = 2; + _key3 < _len3; + _key3++ + ) { + args[_key3 - 2] = arguments[_key3] + } + + return hooks.reduce(function(prev, next) { + var nextValue = next.apply(void 0, [prev].concat(args)) + + if (typeof nextValue === 'undefined') { + throw new Error( + 'React Table: A hook just returned undefined! This is not allowed.' + ) + } + + return nextValue + }, initial) +} +var applyPropHooks = function applyPropHooks(hooks) { + for ( + var _len4 = arguments.length, + args = new Array(_len4 > 1 ? _len4 - 1 : 0), + _key4 = 1; + _key4 < _len4; + _key4++ + ) { + args[_key4 - 1] = arguments[_key4] + } + + return hooks.reduce(function(prev, next) { + return mergeProps(prev, next.apply(void 0, args)) + }, {}) +} +var warnUnknownProps = function warnUnknownProps(props) { + if (Object.keys(props).length) { + throw new Error( + 'Unknown options passed to useReactTable:\n\n'.concat( + JSON.stringify(props, null, 2) + ) + ) + } +} +function sum(arr) { + return arr.reduce(function(prev, curr) { + return prev + curr + }, 0) +} +function isFunction(a) { + if (typeof a === 'function') { + return a + } +} +function flattenBy(columns, childKey) { + var flatColumns = [] + + var recurse = function recurse(columns) { + columns.forEach(function(d) { + if (!d[childKey]) { + flatColumns.push(d) + } else { + recurse(d[childKey]) + } + }) + } + + recurse(columns) + return flatColumns +} +function ensurePluginOrder(plugins, befores, pluginName, afters) { + var pluginIndex = plugins.findIndex(function(plugin) { + return plugin.pluginName === pluginName + }) + + if (pluginIndex === -1) { + throw new Error( + 'The plugin ' + .concat( + pluginName, + " was not found in the plugin list!\nThis usually means you need to need to name your plugin hook by setting the 'pluginName' property of the hook function, eg:\n\n " + ) + .concat(pluginName, ".pluginName = '") + .concat(pluginName, "'\n") + ) + } + + befores.forEach(function(before) { + var beforeIndex = plugins.findIndex(function(plugin) { + return plugin.pluginName === before + }) + + if (beforeIndex > -1 && beforeIndex > pluginIndex) { + throw new Error( + 'React Table: The ' + .concat(pluginName, ' plugin hook must be placed after the ') + .concat(before, ' plugin hook!') + ) + } + }) + afters.forEach(function(after) { + var afterIndex = plugins.findIndex(function(plugin) { + return plugin.pluginName === after + }) + + if (afterIndex > -1 && afterIndex < pluginIndex) { + throw new Error( + 'React Table: The ' + .concat(pluginName, ' plugin hook must be placed before the ') + .concat(after, ' plugin hook!') + ) + } + }) +} +function expandRows(rows, _ref3) { + var manualExpandedKey = _ref3.manualExpandedKey, + expanded = _ref3.expanded, + _ref3$expandSubRows = _ref3.expandSubRows, + expandSubRows = _ref3$expandSubRows === void 0 ? true : _ref3$expandSubRows + var expandedRows = [] + + var handleRow = function handleRow(row) { + var key = row.path.join('.') + row.isExpanded = + (row.original && row.original[manualExpandedKey]) || + expanded.includes(key) + row.canExpand = row.subRows && !!row.subRows.length + expandedRows.push(row) + + if (expandSubRows && row.subRows && row.subRows.length && row.isExpanded) { + row.subRows.forEach(handleRow) + } + } + + rows.forEach(handleRow) + return expandedRows +} // + +function makePathArray(obj) { + return flattenDeep(obj) // remove all periods in parts + .map(function(d) { + return String(d).replace('.', '_') + }) // join parts using period + .join('.') // replace brackets with periods + .replace(/\[/g, '.') + .replace(/\]/g, '') // split it back out on periods + .split('.') +} + +function flattenDeep(arr) { + var newArr = + arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [] + + if (!Array.isArray(arr)) { + newArr.push(arr) + } else { + for (var i = 0; i < arr.length; i += 1) { + flattenDeep(arr[i], newArr) + } + } + + return newArr +} + +var utils = /*#__PURE__*/ Object.freeze({ + defaultColumn: defaultColumn, + safeUseLayoutEffect: safeUseLayoutEffect, + findMaxDepth: findMaxDepth, + decorateColumn: decorateColumn, + decorateColumnTree: decorateColumnTree, + makeHeaderGroups: makeHeaderGroups, + determineHeaderVisibility: determineHeaderVisibility, + getBy: getBy, + defaultOrderByFn: defaultOrderByFn, + getFirstDefined: getFirstDefined, + defaultGroupByFn: defaultGroupByFn, + getElementDimensions: getElementDimensions, + flexRender: flexRender, + mergeProps: mergeProps, + applyHooks: applyHooks, + applyPropHooks: applyPropHooks, + warnUnknownProps: warnUnknownProps, + sum: sum, + isFunction: isFunction, + flattenBy: flattenBy, + ensurePluginOrder: ensurePluginOrder, + expandRows: expandRows, +}) + +var propTypes = { + // General + data: PropTypes.array.isRequired, + columns: PropTypes.arrayOf(PropTypes.object).isRequired, + defaultColumn: PropTypes.object, + getSubRows: PropTypes.func, + getRowID: PropTypes.func, + debug: PropTypes.bool, +} +var renderErr = + 'You must specify a valid render component. This could be "column.Cell", "column.Header", "column.Filter", "column.Aggregated" or any other custom renderer component.' +var defaultState = {} +var defaultInitialState = {} +var defaultColumnInstance = {} + +var defaultReducer = function defaultReducer(old, newState) { + return newState +} + +var defaultGetSubRows = function defaultGetSubRows(row, index) { + if (row !== null && row.subRows) { + return row.subRows + } else { + return [] + } +} + +var defaultGetRowID = function defaultGetRowID(row, index) { + return index +} + +var useTable = function useTable(props) { + // Validate props + PropTypes.checkPropTypes(propTypes, props, 'property', 'useTable') // Destructure props + + var data = props.data, + userColumns = props.columns, + _props$initialState = props.initialState, + initialState = + _props$initialState === void 0 + ? defaultInitialState + : _props$initialState, + userState = props.state, + _props$defaultColumn = props.defaultColumn, + defaultColumn$$1 = + _props$defaultColumn === void 0 + ? defaultColumnInstance + : _props$defaultColumn, + _props$getSubRows = props.getSubRows, + getSubRows = + _props$getSubRows === void 0 ? defaultGetSubRows : _props$getSubRows, + _props$getRowID = props.getRowID, + getRowID = _props$getRowID === void 0 ? defaultGetRowID : _props$getRowID, + _props$reducer = props.reducer, + reducer = _props$reducer === void 0 ? defaultReducer : _props$reducer, + debug = props.debug + debug = process.env.NODE_ENV === 'production' ? false : debug // But use the users table state if provided + + var _React$useState = React.useState( + _objectSpread2({}, defaultState, {}, initialState) + ), + _React$useState2 = _slicedToArray(_React$useState, 2), + originalState = _React$useState2[0], + originalSetState = _React$useState2[1] + + var state = React.useMemo( + function() { + if (userState) { + var newState = _objectSpread2({}, originalState) + + Object.keys(userState).forEach(function(key) { + newState[key] = userState[key] + }) + return newState + } + + return originalState + }, + [originalState, userState] + ) + var setState = React.useCallback( + function(updater, type) { + return originalSetState(function(old) { + var newState = typeof updater === 'function' ? updater(old) : updater + return reducer(old, newState, type) + }) + }, + [reducer] + ) // The table instance ref + + var instanceRef = React.useRef({}) + + for ( + var _len = arguments.length, + plugins = new Array(_len > 1 ? _len - 1 : 0), + _key = 1; + _key < _len; + _key++ + ) { + plugins[_key - 1] = arguments[_key] + } + + Object.assign( + instanceRef.current, + _objectSpread2({}, props, { + data: data, + // The raw data + state: state, + setState: setState, + // The resolved table state + plugins: plugins, + // All resolved plugins + hooks: { + columnsBeforeHeaderGroups: [], + columnsBeforeHeaderGroupsDeps: [], + useBeforeDimensions: [], + useMain: [], + useRows: [], + prepareRow: [], + getTableProps: [], + getTableBodyProps: [], + getRowProps: [], + getHeaderGroupProps: [], + getHeaderProps: [], + getCellProps: [], + }, + }) + ) // Allow plugins to register hooks + + if (process.env.NODE_ENV === 'development' && debug) console.time('plugins') + plugins.filter(Boolean).forEach(function(plugin) { + plugin(instanceRef.current.hooks) + }) + if (process.env.NODE_ENV === 'development' && debug) + console.timeEnd('plugins') // Decorate All the columns + + var columns = React.useMemo( + function() { + return decorateColumnTree(userColumns, defaultColumn$$1) + }, + [defaultColumn$$1, userColumns] + ) // Get the flat list of all columns andllow hooks to decorate + // those columns (and trigger this memoization via deps) + + var flatColumns = React.useMemo(function() { + if (process.env.NODE_ENV === 'development' && debug) + console.time('hooks.columnsBeforeHeaderGroups') + var newColumns = applyHooks( + instanceRef.current.hooks.columnsBeforeHeaderGroups, + flattenBy(columns, 'columns'), + instanceRef.current + ) + if (process.env.NODE_ENV === 'development' && debug) + console.timeEnd('hooks.columnsBeforeHeaderGroups') + return newColumns + }, [columns, debug].concat( + _toConsumableArray( + applyHooks( + instanceRef.current.hooks.columnsBeforeHeaderGroupsDeps, + [], + instanceRef.current + ) + ) + )) // Make the headerGroups + + var headerGroups = React.useMemo( + function() { + return makeHeaderGroups(flatColumns, defaultColumn$$1) + }, + [defaultColumn$$1, flatColumns] + ) + var headers = React.useMemo( + function() { + return headerGroups[0].headers + }, + [headerGroups] + ) + Object.assign(instanceRef.current, { + columns: columns, + flatColumns: flatColumns, + headerGroups: headerGroups, + headers: headers, + }) // Access the row model + + var _React$useMemo = React.useMemo( + function() { + if (process.env.NODE_ENV === 'development' && debug) + console.time('getAccessedRows') + var flatRows = [] // Access the row's data + + var accessRow = function accessRow(originalRow, i) { + var depth = + arguments.length > 2 && arguments[2] !== undefined + ? arguments[2] + : 0 + var parentPath = + arguments.length > 3 && arguments[3] !== undefined + ? arguments[3] + : [] + // Keep the original reference around + var original = originalRow + var rowID = getRowID(originalRow, i) // Make the new path for the row + + var path = [].concat(_toConsumableArray(parentPath), [rowID]) + var row = { + original: original, + index: i, + path: path, + // used to create a key for each row even if not nested + depth: depth, + cells: [{}], // This is a dummy cell + } + flatRows.push(row) // Process any subRows + + var subRows = getSubRows(originalRow, i) + + if (subRows) { + row.subRows = subRows.map(function(d, i) { + return accessRow(d, i, depth + 1, path) + }) + } // Override common array functions (and the dummy cell's getCellProps function) + // to show an error if it is accessed without calling prepareRow + + var unpreparedAccessWarning = function unpreparedAccessWarning() { + throw new Error( + 'React-Table: You have not called prepareRow(row) one or more rows you are attempting to render.' + ) + } + + row.cells.map = unpreparedAccessWarning + row.cells.filter = unpreparedAccessWarning + row.cells.forEach = unpreparedAccessWarning + row.cells[0].getCellProps = unpreparedAccessWarning // Create the cells and values + + row.values = {} + flatColumns.forEach(function(column) { + row.values[column.id] = column.accessor + ? column.accessor(originalRow, i, { + subRows: subRows, + depth: depth, + data: data, + }) + : undefined + }) + return row + } // Use the resolved data + + var accessedData = data.map(function(d, i) { + return accessRow(d, i) + }) + if (process.env.NODE_ENV === 'development' && debug) + console.timeEnd('getAccessedRows') + return [accessedData, flatRows] + }, + [debug, data, getRowID, getSubRows, flatColumns] + ), + _React$useMemo2 = _slicedToArray(_React$useMemo, 2), + rows = _React$useMemo2[0], + flatRows = _React$useMemo2[1] + + instanceRef.current.rows = rows + instanceRef.current.flatRows = flatRows // Determine column visibility + + determineHeaderVisibility(instanceRef.current) // Provide a flat header list for utilities + + instanceRef.current.flatHeaders = headerGroups.reduce(function( + all, + headerGroup + ) { + return [].concat( + _toConsumableArray(all), + _toConsumableArray(headerGroup.headers) + ) + }, + []) + if (process.env.NODE_ENV === 'development' && debug) + console.time('hooks.useBeforeDimensions') + instanceRef.current = applyHooks( + instanceRef.current.hooks.useBeforeDimensions, + instanceRef.current + ) + if (process.env.NODE_ENV === 'development' && debug) + console.timeEnd('hooks.useBeforeDimensions') + calculateDimensions(instanceRef.current) + if (process.env.NODE_ENV === 'development' && debug) + console.time('hooks.useMain') + instanceRef.current = applyHooks( + instanceRef.current.hooks.useMain, + instanceRef.current + ) + if (process.env.NODE_ENV === 'development' && debug) + console.timeEnd('hooks.useMain') // Each materialized header needs to be assigned a render function and other + // prop getter properties here. + + instanceRef.current.flatHeaders.forEach(function(column) { + // Give columns/headers rendering power + column.render = function(type) { + var userProps = + arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {} + var Comp = typeof type === 'string' ? column[type] : type + + if (typeof Comp === 'undefined') { + throw new Error(renderErr) + } + + return flexRender( + Comp, + _objectSpread2( + {}, + instanceRef.current, + { + column: column, + }, + userProps + ) + ) + } // Give columns/headers a default getHeaderProps + + column.getHeaderProps = function(props) { + return mergeProps( + { + key: ['header', column.id].join('_'), + colSpan: column.totalVisibleHeaderCount, + }, + applyPropHooks( + instanceRef.current.hooks.getHeaderProps, + column, + instanceRef.current + ), + props + ) + } + }) + instanceRef.current.headerGroups.forEach(function(headerGroup, i) { + // Filter out any headers and headerGroups that don't have visible columns + headerGroup.headers = headerGroup.headers.filter(function(header) { + var recurse = function recurse(headers) { + return headers.filter(function(header) { + if (header.headers) { + return recurse(header.headers) + } + + return header.isVisible + }).length + } + + if (header.headers) { + return recurse(header.headers) + } + + return header.isVisible + }) // Give headerGroups getRowProps + + if (headerGroup.headers.length) { + headerGroup.getHeaderGroupProps = function() { + var props = + arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {} + return mergeProps( + { + key: ['header'.concat(i)].join('_'), + }, + applyPropHooks( + instanceRef.current.hooks.getHeaderGroupProps, + headerGroup, + instanceRef.current + ), + props + ) + } + + return true + } + }) // Run the rows (this could be a dangerous hook with a ton of data) + + if (process.env.NODE_ENV === 'development' && debug) + console.time('hooks.useRows') + instanceRef.current.rows = applyHooks( + instanceRef.current.hooks.useRows, + instanceRef.current.rows, + instanceRef.current + ) + if (process.env.NODE_ENV === 'development' && debug) + console.timeEnd('hooks.useRows') // The prepareRow function is absolutely necessary and MUST be called on + // any rows the user wishes to be displayed. + + instanceRef.current.prepareRow = React.useCallback(function(row) { + row.getRowProps = function(props) { + return mergeProps( + { + key: ['row'].concat(_toConsumableArray(row.path)).join('_'), + }, + applyPropHooks( + instanceRef.current.hooks.getRowProps, + row, + instanceRef.current + ), + props + ) + } // Build the visible cells for each row + + row.cells = instanceRef.current.flatColumns + .filter(function(d) { + return d.isVisible + }) + .map(function(column) { + var cell = { + column: column, + row: row, + value: row.values[column.id], + } // Give each cell a getCellProps base + + cell.getCellProps = function(props) { + var columnPathStr = [] + .concat(_toConsumableArray(row.path), [column.id]) + .join('_') + return mergeProps( + { + key: ['cell', columnPathStr].join('_'), + }, + applyPropHooks( + instanceRef.current.hooks.getCellProps, + cell, + instanceRef.current + ), + props + ) + } // Give each cell a renderer function (supports multiple renderers) + + cell.render = function(type) { + var userProps = + arguments.length > 1 && arguments[1] !== undefined + ? arguments[1] + : {} + var Comp = typeof type === 'string' ? column[type] : type + + if (typeof Comp === 'undefined') { + throw new Error(renderErr) + } + + return flexRender( + Comp, + _objectSpread2( + {}, + instanceRef.current, + { + column: column, + row: row, + cell: cell, + }, + userProps + ) + ) + } + + return cell + }) // need to apply any row specific hooks (useExpanded requires this) + + applyHooks(instanceRef.current.hooks.prepareRow, row, instanceRef.current) + }, []) + + instanceRef.current.getTableProps = function(userProps) { + return mergeProps( + applyPropHooks( + instanceRef.current.hooks.getTableProps, + instanceRef.current + ), + userProps + ) + } + + instanceRef.current.getTableBodyProps = function(userProps) { + return mergeProps( + applyPropHooks( + instanceRef.current.hooks.getTableBodyProps, + instanceRef.current + ), + userProps + ) + } + + return instanceRef.current +} + +function calculateDimensions(instance) { + var headers = instance.headers + instance.totalColumnsWidth = calculateHeaderWidths(headers) +} + +function calculateHeaderWidths(headers) { + var left = + arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0 + var sumTotalWidth = 0 + headers.forEach(function(header) { + var subHeaders = header.headers + header.totalLeft = left + + if (subHeaders && subHeaders.length) { + header.totalWidth = calculateHeaderWidths(subHeaders, left) + } else { + header.totalWidth = Math.min( + Math.max(header.minWidth, header.width), + header.maxWidth + ) + } + + if (header.isVisible) { + left += header.totalWidth + sumTotalWidth += header.totalWidth + } + }) + return sumTotalWidth +} + +var actions = {} +var addActions = function addActions() { + for ( + var _len = arguments.length, acts = new Array(_len), _key = 0; + _key < _len; + _key++ + ) { + acts[_key] = arguments[_key] + } + + acts.forEach(function(action) { + // Action values are formatted this way to discourage + // you (the dev) from interacting with them in any way + // other than importing `{ actions } from 'react-table'` + // and referencing an action via `actions[actionName]` + actions[action] = 'React Table Action: '.concat(action) + }) +} + +defaultState.expanded = [] +addActions('toggleExpanded', 'useExpanded') +var propTypes$1 = { + manualExpandedKey: PropTypes.string, + paginateExpandedRows: PropTypes.bool, +} +var useExpanded = function useExpanded(hooks) { + hooks.getExpandedToggleProps = [] + hooks.useMain.push(useMain) +} +useExpanded.pluginName = 'useExpanded' + +function useMain(instance) { + PropTypes.checkPropTypes(propTypes$1, instance, 'property', 'useExpanded') + var debug = instance.debug, + rows = instance.rows, + _instance$manualExpan = instance.manualExpandedKey, + manualExpandedKey = + _instance$manualExpan === void 0 ? 'expanded' : _instance$manualExpan, + _instance$paginateExp = instance.paginateExpandedRows, + paginateExpandedRows = + _instance$paginateExp === void 0 ? true : _instance$paginateExp, + _instance$expandSubRo = instance.expandSubRows, + expandSubRows = + _instance$expandSubRo === void 0 ? true : _instance$expandSubRo, + hooks = instance.hooks, + expanded = instance.state.expanded, + setState = instance.setState + + var toggleExpandedByPath = function toggleExpandedByPath(path, set) { + var key = path.join('.') + return setState(function(old) { + var exists = old.expanded.includes(key) + var shouldExist = typeof set !== 'undefined' ? set : !exists + var newExpanded = new Set(old.expanded) + + if (!exists && shouldExist) { + newExpanded.add(key) + } else if (exists && !shouldExist) { + newExpanded.delete(key) + } else { + return old + } + + return _objectSpread2({}, old, { + expanded: _toConsumableArray(newExpanded.values()), + }) + }, actions.toggleExpanded) + } + + hooks.prepareRow.push(function(row, instance) { + row.toggleExpanded = function(set) { + return toggleExpandedByPath(row.path, set) + } + + var propsFromHooks = applyPropHooks( + instance.hooks.getExpandedToggleProps, + row, + instance + ) + + row.getExpandedToggleProps = function(props) { + return mergeProps( + { + onClick: function onClick(e) { + e.persist() + row.toggleExpanded() + }, + style: { + cursor: 'pointer', + }, + title: 'Toggle Expanded', + }, + propsFromHooks, + props + ) + } + + return row + }) + var expandedRows = useMemo( + function() { + if (process.env.NODE_ENV === 'development' && debug) + console.info('getExpandedRows') + + if (paginateExpandedRows) { + return expandRows(rows, { + manualExpandedKey: manualExpandedKey, + expanded: expanded, + expandSubRows: expandSubRows, + }) + } + + return rows + }, + [ + debug, + paginateExpandedRows, + rows, + manualExpandedKey, + expanded, + expandSubRows, + ] + ) + var expandedDepth = findExpandedDepth(expanded) + return _objectSpread2({}, instance, { + toggleExpandedByPath: toggleExpandedByPath, + expandedDepth: expandedDepth, + rows: expandedRows, + }) +} + +function findExpandedDepth(expanded) { + var maxDepth = 0 + expanded.forEach(function(key) { + var path = key.split('.') + maxDepth = Math.max(maxDepth, path.length) + }) + return maxDepth +} + +var text = function text(rows, id, filterValue) { + rows = rows.filter(function(row) { + var rowValue = row.values[id] + return String(rowValue) + .toLowerCase() + .includes(String(filterValue).toLowerCase()) + }) + return rows +} + +text.autoRemove = function(val) { + return !val +} + +var exactText = function exactText(rows, id, filterValue) { + return rows.filter(function(row) { + var rowValue = row.values[id] + return rowValue !== undefined + ? String(rowValue).toLowerCase() === String(filterValue).toLowerCase() + : true + }) +} + +exactText.autoRemove = function(val) { + return !val +} + +var exactTextCase = function exactTextCase(rows, id, filterValue) { + return rows.filter(function(row) { + var rowValue = row.values[id] + return rowValue !== undefined + ? String(rowValue) === String(filterValue) + : true + }) +} + +exactTextCase.autoRemove = function(val) { + return !val +} + +var includes = function includes(rows, id, filterValue) { + return rows.filter(function(row) { + var rowValue = row.values[id] + return filterValue.includes(rowValue) + }) +} + +includes.autoRemove = function(val) { + return !val || !val.length +} + +var includesAll = function includesAll(rows, id, filterValue) { + return rows.filter(function(row) { + var rowValue = row.values[id] + return ( + rowValue && + rowValue.length && + filterValue.every(function(val) { + return rowValue.includes(val) + }) + ) + }) +} + +includesAll.autoRemove = function(val) { + return !val || !val.length +} + +var exact = function exact(rows, id, filterValue) { + return rows.filter(function(row) { + var rowValue = row.values[id] + return rowValue === filterValue + }) +} + +exact.autoRemove = function(val) { + return typeof val === 'undefined' +} + +var equals = function equals(rows, id, filterValue) { + return rows.filter(function(row) { + var rowValue = row.values[id] // eslint-disable-next-line eqeqeq + + return rowValue == filterValue + }) +} + +equals.autoRemove = function(val) { + return val == null +} + +var between = function between(rows, id, filterValue) { + var _ref = filterValue || [], + _ref2 = _slicedToArray(_ref, 2), + min = _ref2[0], + max = _ref2[1] + + min = typeof min === 'number' ? min : -Infinity + max = typeof max === 'number' ? max : Infinity + + if (min > max) { + var temp = min + min = max + max = temp + } + + return rows.filter(function(row) { + var rowValue = row.values[id] + return rowValue >= min && rowValue <= max + }) +} + +between.autoRemove = function(val) { + return !val || (typeof val[0] !== 'number' && typeof val[1] !== 'number') +} + +var filterTypes = /*#__PURE__*/ Object.freeze({ + text: text, + exactText: exactText, + exactTextCase: exactTextCase, + includes: includes, + includesAll: includesAll, + exact: exact, + equals: equals, + between: between, +}) + +defaultState.filters = {} +addActions('setFilter', 'setAllFilters') +var propTypes$2 = { + columns: PropTypes.arrayOf( + PropTypes.shape({ + disableFilters: PropTypes.bool, + Filter: PropTypes.any, + }) + ), + manualFilters: PropTypes.bool, +} +var useFilters = function useFilters(hooks) { + hooks.useMain.push(useMain$1) +} +useFilters.pluginName = 'useFilters' + +function useMain$1(instance) { + PropTypes.checkPropTypes(propTypes$2, instance, 'property', 'useFilters') + var debug = instance.debug, + rows = instance.rows, + flatRows = instance.flatRows, + flatColumns = instance.flatColumns, + userFilterTypes = instance.filterTypes, + manualFilters = instance.manualFilters, + disableFilters = instance.disableFilters, + filters = instance.state.filters, + setState = instance.setState + var preFilteredRows = rows + var preFilteredFlatRows = flatRows + + var setFilter = function setFilter(id, updater) { + var column = flatColumns.find(function(d) { + return d.id === id + }) + + if (!column) { + throw new Error( + 'React-Table: Could not find a column with id: '.concat(id) + ) + } + + var filterMethod = getFilterMethod( + column.filter, + userFilterTypes || {}, + filterTypes + ) + return setState(function(old) { + var newFilter = + typeof updater === 'function' ? updater(old.filters[id]) : updater // + + if (shouldAutoRemove(filterMethod.autoRemove, newFilter)) { + var _old$filters = old.filters, + remove = _old$filters[id], + newFilters = _objectWithoutProperties( + _old$filters, + [id].map(_toPropertyKey) + ) + + return _objectSpread2({}, old, { + filters: newFilters, + }) + } + + return _objectSpread2({}, old, { + filters: _objectSpread2( + {}, + old.filters, + _defineProperty({}, id, newFilter) + ), + }) + }, actions.setFilter) + } + + var setAllFilters = function setAllFilters(updater) { + return setState(function(old) { + var newFilters = typeof updater === 'function' ? updater(old) : updater // Filter out undefined values + + Object.keys(newFilters).forEach(function(id) { + var newFilter = newFilters[id] + var column = flatColumns.find(function(d) { + return d.id === id + }) + var filterMethod = getFilterMethod( + column.filter, + userFilterTypes || {}, + filterTypes + ) + + if (shouldAutoRemove(filterMethod.autoRemove, newFilter)) { + delete newFilters[id] + } + }) + return _objectSpread2({}, old, { + filters: newFilters, + }) + }, actions.setAllFilters) + } + + flatColumns.forEach(function(column) { + var id = column.id, + accessor = column.accessor, + columnDisableFilters = column.disableFilters // Determine if a column is filterable + + column.canFilter = accessor + ? getFirstDefined( + columnDisableFilters === true ? false : undefined, + disableFilters === true ? false : undefined, + true + ) + : false // Provide the column a way of updating the filter value + + column.setFilter = function(val) { + return setFilter(column.id, val) + } // Provide the current filter value to the column for + // convenience + + column.filterValue = filters[id] + }) // TODO: Create a filter cache for incremental high speed multi-filtering + // This gets pretty complicated pretty fast, since you have to maintain a + // cache for each row group (top-level rows, and each row's recursive subrows) + // This would make multi-filtering a lot faster though. Too far? + + var _React$useMemo = React.useMemo( + function() { + if (manualFilters || !Object.keys(filters).length) { + return { + filteredRows: rows, + filteredFlatRows: flatRows, + } + } + + var filteredFlatRows = [] + if (process.env.NODE_ENV === 'development' && debug) + console.info('getFilteredRows') // Filters top level and nested rows + + var filterRows = function filterRows(rows) { + var depth = + arguments.length > 1 && arguments[1] !== undefined + ? arguments[1] + : 0 + var filteredRows = rows + filteredRows = Object.entries(filters).reduce(function( + filteredSoFar, + _ref + ) { + var _ref2 = _slicedToArray(_ref, 2), + columnID = _ref2[0], + filterValue = _ref2[1] + + // Find the filters column + var column = flatColumns.find(function(d) { + return d.id === columnID + }) + + if (!column) { + return filteredSoFar + } + + if (depth === 0) { + column.preFilteredRows = filteredSoFar + } + + var filterMethod = getFilterMethod( + column.filter, + userFilterTypes || {}, + filterTypes + ) + + if (!filterMethod) { + console.warn( + "Could not find a valid 'column.filter' for column with the ID: ".concat( + column.id, + '.' + ) + ) + return filteredSoFar + } // Pass the rows, id, filterValue and column to the filterMethod + // to get the filtered rows back + + column.filteredRows = filterMethod( + filteredSoFar, + columnID, + filterValue, + column + ) + return column.filteredRows + }, + rows) // Apply the filter to any subRows + // We technically could do this recursively in the above loop, + // but that would severely hinder the API for the user, since they + // would be required to do that recursion in some scenarios + + filteredRows = filteredRows.map(function(row) { + filteredFlatRows.push(row) + + if (!row.subRows) { + return row + } + + return _objectSpread2({}, row, { + subRows: + row.subRows && row.subRows.length > 0 + ? filterRows(row.subRows, depth + 1) + : row.subRows, + }) + }) + return filteredRows + } + + return { + filteredRows: filterRows(rows), + filteredFlatRows: filteredFlatRows, + } + }, + [ + manualFilters, + filters, + debug, + rows, + flatRows, + flatColumns, + userFilterTypes, + ] + ), + filteredRows = _React$useMemo.filteredRows, + filteredFlatRows = _React$useMemo.filteredFlatRows + + React.useMemo( + function() { + // Now that each filtered column has it's partially filtered rows, + // lets assign the final filtered rows to all of the other columns + var nonFilteredColumns = flatColumns.filter(function(column) { + return !Object.keys(filters).includes(column.id) + }) // This essentially enables faceted filter options to be built easily + // using every column's preFilteredRows value + + nonFilteredColumns.forEach(function(column) { + column.preFilteredRows = filteredRows + column.filteredRows = filteredRows + }) + }, + [filteredRows, filters, flatColumns] + ) + return _objectSpread2({}, instance, { + setFilter: setFilter, + setAllFilters: setAllFilters, + preFilteredRows: preFilteredRows, + preFilteredFlatRows: preFilteredFlatRows, + rows: filteredRows, + flatRows: filteredFlatRows, + }) +} + +function shouldAutoRemove(autoRemove, value) { + return autoRemove ? autoRemove(value) : typeof value === 'undefined' +} + +function getFilterMethod(filter, userFilterTypes, filterTypes) { + return ( + isFunction(filter) || + userFilterTypes[filter] || + filterTypes[filter] || + filterTypes.text + ) +} + +function sum$1(values, rows) { + return values.reduce(function(sum, next) { + return sum + next + }, 0) +} +function average(values, rows) { + return Math.round((sum$1(values, rows) / values.length) * 100) / 100 +} +function median(values) { + var min = values[0] || '' + var max = values[0] || '' + values.forEach(function(value) { + min = Math.min(min, value) + max = Math.max(max, value) + }) + return (min + max) / 2 +} +function uniqueCount(values) { + return new Set(values).size +} +function count(values) { + return values.length +} + +var aggregations = /*#__PURE__*/ Object.freeze({ + sum: sum$1, + average: average, + median: median, + uniqueCount: uniqueCount, + count: count, +}) + +defaultState.groupBy = [] +addActions('toggleGroupBy') +var propTypes$3 = { + // General + columns: PropTypes.arrayOf( + PropTypes.shape({ + aggregate: PropTypes.oneOfType([ + PropTypes.func, + PropTypes.string, + PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.func, PropTypes.string]) + ), + ]), + disableGrouping: PropTypes.bool, + Aggregated: PropTypes.any, + }) + ), + groupByFn: PropTypes.func, + manualGrouping: PropTypes.bool, + disableGrouping: PropTypes.bool, + aggregations: PropTypes.object, +} +var useGroupBy = function useGroupBy(hooks) { + hooks.getGroupByToggleProps = [] + hooks.columnsBeforeHeaderGroups.push(columnsBeforeHeaderGroups) + hooks.columnsBeforeHeaderGroupsDeps.push(function(deps, instance) { + deps.push(instance.state.groupBy) + return deps + }) + hooks.useMain.push(useMain$2) +} +useGroupBy.pluginName = 'useGroupBy' + +function columnsBeforeHeaderGroups(flatColumns, _ref) { + var groupBy = _ref.state.groupBy + // Sort grouped columns to the start of the column list + // before the headers are built + var groupByColumns = groupBy.map(function(g) { + return flatColumns.find(function(col) { + return col.id === g + }) + }) + var nonGroupByColumns = flatColumns.filter(function(col) { + return !groupBy.includes(col.id) + }) // If a groupByBoundary column is found, place the groupBy's after it + + var groupByBoundaryColumnIndex = + flatColumns.findIndex(function(column) { + return column.groupByBoundary + }) + 1 + return [].concat( + _toConsumableArray(nonGroupByColumns.slice(0, groupByBoundaryColumnIndex)), + _toConsumableArray(groupByColumns), + _toConsumableArray(nonGroupByColumns.slice(groupByBoundaryColumnIndex)) + ) +} + +function useMain$2(instance) { + PropTypes.checkPropTypes(propTypes$3, instance, 'property', 'useGroupBy') + var debug = instance.debug, + rows = instance.rows, + flatColumns = instance.flatColumns, + flatHeaders = instance.flatHeaders, + _instance$groupByFn = instance.groupByFn, + groupByFn = + _instance$groupByFn === void 0 ? defaultGroupByFn : _instance$groupByFn, + manualGroupBy = instance.manualGroupBy, + disableGrouping = instance.disableGrouping, + _instance$aggregation = instance.aggregations, + userAggregations = + _instance$aggregation === void 0 ? {} : _instance$aggregation, + hooks = instance.hooks, + plugins = instance.plugins, + groupBy = instance.state.groupBy, + setState = instance.setState + ensurePluginOrder(plugins, [], 'useGroupBy', ['useSortBy', 'useExpanded']) + flatColumns.forEach(function(column) { + var id = column.id, + accessor = column.accessor, + columnDisableGrouping = column.disableGrouping + column.isGrouped = groupBy.includes(id) + column.groupedIndex = groupBy.indexOf(id) + column.canGroupBy = accessor + ? getFirstDefined( + columnDisableGrouping === true ? false : undefined, + disableGrouping === true ? false : undefined, + true + ) + : false + + if (column.canGroupBy) { + column.toggleGroupBy = function() { + return toggleGroupBy(column.id) + } + } + + column.Aggregated = column.Aggregated || column.Cell + }) + + var toggleGroupBy = function toggleGroupBy(id, toggle) { + return setState(function(old) { + var resolvedToggle = + typeof toggle !== 'undefined' ? toggle : !groupBy.includes(id) + + if (resolvedToggle) { + return _objectSpread2({}, old, { + groupBy: [].concat(_toConsumableArray(groupBy), [id]), + }) + } + + return _objectSpread2({}, old, { + groupBy: groupBy.filter(function(d) { + return d !== id + }), + }) + }, actions.toggleGroupBy) + } + + flatHeaders.forEach( + // avoid sharing instance in contexts of other functions + (function(instance) { + return function(header) { + var canGroupBy = header.canGroupBy + var groupByTogglePropsFromHooks = applyPropHooks( + instance.hooks.getGroupByToggleProps, + header, + instance + ) + + header.getGroupByToggleProps = function(props) { + return mergeProps( + { + onClick: canGroupBy + ? function(e) { + e.persist() + header.toggleGroupBy() + } + : undefined, + style: { + cursor: canGroupBy ? 'pointer' : undefined, + }, + title: 'Toggle GroupBy', + }, + groupByTogglePropsFromHooks, + props + ) + } + } + })(instance) + ) + hooks.prepareRow.push(function(row) { + row.cells.forEach(function(cell) { + // Grouped cells are in the groupBy and the pivot cell for the row + cell.isGrouped = cell.column.isGrouped && cell.column.id === row.groupByID // Repeated cells are any columns in the groupBy that are not grouped + + cell.isRepeatedValue = !cell.isGrouped && cell.column.isGrouped // Aggregated cells are not grouped, not repeated, but still have subRows + + cell.isAggregated = + !cell.isGrouped && !cell.isRepeatedValue && row.canExpand + }) + return row + }) + var groupedRows = useMemo( + function() { + if (manualGroupBy || !groupBy.length) { + return rows + } + + if (process.env.NODE_ENV === 'development' && debug) + console.info('getGroupedRows') // Find the columns that can or are aggregating + // Uses each column to aggregate rows into a single value + + var aggregateRowsToValues = function aggregateRowsToValues( + rows, + isSourceRows + ) { + var values = {} + flatColumns.forEach(function(column) { + // Don't aggregate columns that are in the groupBy + if (groupBy.includes(column.id)) { + values[column.id] = rows[0] ? rows[0].values[column.id] : null + return + } + + var columnValues = rows.map(function(d) { + return d.values[column.id] + }) + var aggregator = column.aggregate + + if (Array.isArray(aggregator)) { + if (aggregator.length !== 2) { + console.info({ + column: column, + }) + throw new Error( + "React Table: Complex aggregators must have 2 values, eg. aggregate: ['sum', 'count']. More info above..." + ) + } + + if (isSourceRows) { + aggregator = aggregator[1] + } else { + aggregator = aggregator[0] + } + } + + var aggregateFn = + typeof aggregator === 'function' + ? aggregator + : userAggregations[aggregator] || aggregations[aggregator] + + if (aggregateFn) { + values[column.id] = aggregateFn(columnValues, rows) + } else if (aggregator) { + console.info({ + column: column, + }) + throw new Error( + 'React Table: Invalid aggregate option for column listed above' + ) + } else { + values[column.id] = null + } + }) + return values + } // Recursively group the data + + var groupRecursively = function groupRecursively(rows) { + var depth = + arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0 + var parentPath = + arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [] + + // This is the last level, just return the rows + if (depth >= groupBy.length) { + return rows + } + + var columnID = groupBy[depth] // Group the rows together for this level + + var groupedRows = groupByFn(rows, columnID) // Recurse to sub rows before aggregation + + groupedRows = Object.entries(groupedRows).map(function(_ref2, index) { + var _ref3 = _slicedToArray(_ref2, 2), + groupByVal = _ref3[0], + subRows = _ref3[1] + + var path = [].concat(_toConsumableArray(parentPath), [ + ''.concat(columnID, ':').concat(groupByVal), + ]) + subRows = groupRecursively(subRows, depth + 1, path) + var values = aggregateRowsToValues( + subRows, + depth + 1 >= groupBy.length + ) + var row = { + isAggregated: true, + groupByID: columnID, + groupByVal: groupByVal, + values: values, + subRows: subRows, + depth: depth, + index: index, + path: path, + } + return row + }) + return groupedRows + } // Assign the new data + + return groupRecursively(rows) + }, + [ + manualGroupBy, + groupBy, + debug, + rows, + flatColumns, + userAggregations, + groupByFn, + ] + ) + return _objectSpread2({}, instance, { + toggleGroupBy: toggleGroupBy, + rows: groupedRows, + preGroupedRows: rows, + }) +} + +var reSplitAlphaNumeric = /([0-9]+)/gm // Mixed sorting is slow, but very inclusive of many edge cases. +// It handles numbers, mixed alphanumeric combinations, and even +// null, undefined, and Infinity + +var alphanumeric = function alphanumeric(rowA, rowB, columnID) { + var a = getRowValueByColumnID(rowA, columnID) + var b = getRowValueByColumnID(rowB, columnID) // Force to strings (or "" for unsupported types) + + a = toString(a) + b = toString(b) // Split on number groups, but keep the delimiter + // Then remove falsey split values + + a = a.split(reSplitAlphaNumeric).filter(Boolean) + b = b.split(reSplitAlphaNumeric).filter(Boolean) // While + + while (a.length && b.length) { + var aa = a.shift() + var bb = b.shift() + var an = parseInt(aa, 10) + var bn = parseInt(bb, 10) + var combo = [an, bn].sort() // Both are string + + if (isNaN(combo[0])) { + if (aa > bb) { + return 1 + } + + if (bb > aa) { + return -1 + } + + continue + } // One is a string, one is a number + + if (isNaN(combo[1])) { + return isNaN(an) ? -1 : 1 + } // Both are numbers + + if (an > bn) { + return 1 + } + + if (bn > an) { + return -1 + } + } + + return a.length - b.length +} +function datetime(rowA, rowB, columnID) { + var a = getRowValueByColumnID(rowA, columnID) + var b = getRowValueByColumnID(rowB, columnID) + a = a.getTime() + b = b.getTime() + return compareBasic(a, b) +} +function basic(rowA, rowB, columnID) { + var a = getRowValueByColumnID(rowA, columnID) + var b = getRowValueByColumnID(rowB, columnID) + return compareBasic(a, b) +} // Utils + +function compareBasic(a, b) { + return a === b ? 0 : a > b ? 1 : -1 +} + +function getRowValueByColumnID(row, columnID) { + return row.values[columnID] +} + +function toString(a) { + if (typeof a === 'number') { + if (isNaN(a) || a === Infinity || a === -Infinity) { + return '' + } + + return String(a) + } + + if (typeof a === 'string') { + return a + } + + return '' +} + +var sortTypes = /*#__PURE__*/ Object.freeze({ + alphanumeric: alphanumeric, + datetime: datetime, + basic: basic, +}) + +defaultState.sortBy = [] +defaultColumn.sortType = 'alphanumeric' +defaultColumn.sortDescFirst = false +addActions('sortByChange') +var propTypes$4 = { + // General + columns: PropTypes.arrayOf( + PropTypes.shape({ + sortType: PropTypes.oneOfType([PropTypes.string, PropTypes.func]), + sortDescFirst: PropTypes.bool, + disableSorting: PropTypes.bool, + }) + ), + orderByFn: PropTypes.func, + sortTypes: PropTypes.object, + manualSorting: PropTypes.bool, + disableSorting: PropTypes.bool, + disableMultiSort: PropTypes.bool, + isMultiSortEvent: PropTypes.func, + maxMultiSortColCount: PropTypes.number, + disableSortRemove: PropTypes.bool, + disableMultiRemove: PropTypes.bool, +} +var useSortBy = function useSortBy(hooks) { + hooks.useMain.push(useMain$3) // Add custom hooks + + hooks.getSortByToggleProps = [] +} +useSortBy.pluginName = 'useSortBy' + +function useMain$3(instance) { + PropTypes.checkPropTypes(propTypes$4, instance, 'property', 'useSortBy') + var debug = instance.debug, + rows = instance.rows, + flatColumns = instance.flatColumns, + _instance$orderByFn = instance.orderByFn, + orderByFn = + _instance$orderByFn === void 0 ? defaultOrderByFn : _instance$orderByFn, + userSortTypes = instance.sortTypes, + manualSorting = instance.manualSorting, + disableSorting = instance.disableSorting, + disableSortRemove = instance.disableSortRemove, + disableMultiRemove = instance.disableMultiRemove, + disableMultiSort = instance.disableMultiSort, + _instance$isMultiSort = instance.isMultiSortEvent, + isMultiSortEvent = + _instance$isMultiSort === void 0 + ? function(e) { + return e.shiftKey + } + : _instance$isMultiSort, + _instance$maxMultiSor = instance.maxMultiSortColCount, + maxMultiSortColCount = + _instance$maxMultiSor === void 0 + ? Number.MAX_SAFE_INTEGER + : _instance$maxMultiSor, + flatHeaders = instance.flatHeaders, + sortBy = instance.state.sortBy, + setState = instance.setState, + plugins = instance.plugins + ensurePluginOrder(plugins, ['useFilters'], 'useSortBy', []) // Updates sorting based on a columnID, desc flag and multi flag + + var toggleSortBy = function toggleSortBy(columnID, desc, multi) { + return setState(function(old) { + var sortBy = old.sortBy // Find the column for this columnID + + var column = flatColumns.find(function(d) { + return d.id === columnID + }) + var sortDescFirst = column.sortDescFirst // Find any existing sortBy for this column + + var existingSortBy = sortBy.find(function(d) { + return d.id === columnID + }) + var existingIndex = sortBy.findIndex(function(d) { + return d.id === columnID + }) + var hasDescDefined = typeof desc !== 'undefined' && desc !== null + var newSortBy = [] // What should we do with this sort action? + + var action + + if (!disableMultiSort && multi) { + if (existingSortBy) { + action = 'toggle' + } else { + action = 'add' + } + } else { + // Normal mode + if (existingIndex !== sortBy.length - 1) { + action = 'replace' + } else if (existingSortBy) { + action = 'toggle' + } else { + action = 'replace' + } + } // Handle toggle states that will remove the sortBy + + if ( + action === 'toggle' && // Must be toggling + !disableSortRemove && // If disableSortRemove, disable in general + !hasDescDefined && // Must not be setting desc + (multi ? !disableMultiRemove : true) && // If multi, don't allow if disableMultiRemove + ((existingSortBy && // Finally, detect if it should indeed be removed + existingSortBy.desc && + !sortDescFirst) || + (!existingSortBy.desc && sortDescFirst)) + ) { + action = 'remove' + } + + if (action === 'replace') { + newSortBy = [ + { + id: columnID, + desc: hasDescDefined ? desc : sortDescFirst, + }, + ] + } else if (action === 'add') { + newSortBy = [].concat(_toConsumableArray(sortBy), [ + { + id: columnID, + desc: hasDescDefined ? desc : sortDescFirst, + }, + ]) // Take latest n columns + + newSortBy.splice(0, newSortBy.length - maxMultiSortColCount) + } else if (action === 'toggle') { + // This flips (or sets) the + newSortBy = sortBy.map(function(d) { + if (d.id === columnID) { + return _objectSpread2({}, d, { + desc: hasDescDefined ? desc : !existingSortBy.desc, + }) + } + + return d + }) + } else if (action === 'remove') { + newSortBy = sortBy.filter(function(d) { + return d.id !== columnID + }) + } + + return _objectSpread2({}, old, { + sortBy: newSortBy, + }) + }, actions.sortByChange) + } // Add the getSortByToggleProps method to columns and headers + + flatHeaders.forEach( + // avoid sharing instance in contexts of other functions + (function(instance) { + return function(column) { + var accessor = column.accessor, + columnDisableSorting = column.disableSorting, + id = column.id + var canSort = accessor + ? getFirstDefined( + columnDisableSorting === true ? false : undefined, + disableSorting === true ? false : undefined, + true + ) + : false + column.canSort = canSort + + if (column.canSort) { + column.toggleSortBy = function(desc, multi) { + return toggleSortBy(column.id, desc, multi) + } + + column.clearSorting = function() { + return setState(function(old) { + var sortBy = old.sortBy + var newSortBy = sortBy.filter(function(d) { + return d.id !== column.id + }) + return _objectSpread2({}, old, { + sortBy: newSortBy, + }) + }, actions.sortByChange) + } + } + + var sortByTogglePropsFromHooks = applyPropHooks( + instance.hooks.getSortByToggleProps, + column, + instance + ) + + column.getSortByToggleProps = function(props) { + return mergeProps( + { + onClick: canSort + ? function(e) { + e.persist() + column.toggleSortBy( + undefined, + !disableMultiSort && isMultiSortEvent(e) + ) + } + : undefined, + style: { + cursor: canSort ? 'pointer' : undefined, + }, + title: 'Toggle SortBy', + }, + sortByTogglePropsFromHooks, + props + ) + } + + var columnSort = sortBy.find(function(d) { + return d.id === id + }) + column.isSorted = !!columnSort + column.sortedIndex = sortBy.findIndex(function(d) { + return d.id === id + }) + column.isSortedDesc = column.isSorted ? columnSort.desc : undefined + } + })(instance) + ) + var sortedRows = React.useMemo( + function() { + if (manualSorting || !sortBy.length) { + return rows + } + + if (process.env.NODE_ENV === 'development' && debug) + console.time('getSortedRows') // Filter out sortBys that correspond to non existing columns + + var availableSortBy = sortBy.filter(function(sort) { + return flatColumns.find(function(col) { + return col.id === sort.id + }) + }) + + var sortData = function sortData(rows) { + // Use the orderByFn to compose multiple sortBy's together. + // This will also perform a stable sorting using the row index + // if needed. + var sortedData = orderByFn( + rows, + availableSortBy.map(function(sort) { + // Support custom sorting methods for each column + var column = flatColumns.find(function(d) { + return d.id === sort.id + }) + + if (!column) { + throw new Error( + 'React-Table: Could not find a column with id: '.concat( + sort.id, + ' while sorting' + ) + ) + } + + var sortType = column.sortType // Look up sortBy functions in this order: + // column function + // column string lookup on user sortType + // column string lookup on built-in sortType + // default function + // default string lookup on user sortType + // default string lookup on built-in sortType + + var sortMethod = + isFunction(sortType) || + (userSortTypes || {})[sortType] || + sortTypes[sortType] + + if (!sortMethod) { + throw new Error( + "React-Table: Could not find a valid sortType of '" + .concat(sortType, "' for column '") + .concat(sort.id, "'.") + ) + } // Return the correct sortFn. + // This function should always return in ascending order + + return function(a, b) { + return sortMethod(a, b, sort.id) + } + }), // Map the directions + availableSortBy.map(function(sort) { + // Detect and use the sortInverted option + var column = flatColumns.find(function(d) { + return d.id === sort.id + }) + + if (column && column.sortInverted) { + return sort.desc + } + + return !sort.desc + }) + ) // If there are sub-rows, sort them + + sortedData.forEach(function(row) { + if (!row.subRows || row.subRows.length <= 1) { + return + } + + row.subRows = sortData(row.subRows) + }) + return sortedData + } + + if (process.env.NODE_ENV === 'development' && debug) + console.timeEnd('getSortedRows') + return sortData(rows) + }, + [manualSorting, sortBy, debug, rows, flatColumns, orderByFn, userSortTypes] + ) + return _objectSpread2({}, instance, { + toggleSortBy: toggleSortBy, + rows: sortedRows, + preSortedRows: rows, + }) +} + +defaultState.pageSize = 10 +defaultState.pageIndex = 0 +addActions('pageChange', 'pageSizeChange') +var propTypes$5 = { + // General + manualPagination: PropTypes.bool, + paginateExpandedRows: PropTypes.bool, +} +var usePagination = function usePagination(hooks) { + hooks.useMain.push(useMain$4) +} +usePagination.pluginName = 'usePagination' + +function useMain$4(instance) { + PropTypes.checkPropTypes(propTypes$5, instance, 'property', 'usePagination') + var data = instance.data, + rows = instance.rows, + manualPagination = instance.manualPagination, + disablePageResetOnDataChange = instance.disablePageResetOnDataChange, + _instance$manualExpan = instance.manualExpandedKey, + manualExpandedKey = + _instance$manualExpan === void 0 ? 'expanded' : _instance$manualExpan, + debug = instance.debug, + plugins = instance.plugins, + userPageCount = instance.pageCount, + _instance$paginateExp = instance.paginateExpandedRows, + paginateExpandedRows = + _instance$paginateExp === void 0 ? true : _instance$paginateExp, + _instance$expandSubRo = instance.expandSubRows, + expandSubRows = + _instance$expandSubRo === void 0 ? true : _instance$expandSubRo, + _instance$state = instance.state, + pageSize = _instance$state.pageSize, + pageIndex = _instance$state.pageIndex, + filters = _instance$state.filters, + groupBy = _instance$state.groupBy, + sortBy = _instance$state.sortBy, + expanded = _instance$state.expanded, + setState = instance.setState + ensurePluginOrder( + plugins, + ['useFilters', 'useGroupBy', 'useSortBy', 'useExpanded'], + 'usePagination', + [] + ) + var rowDep = manualPagination ? null : data + var isPageIndexMountedRef = React.useRef() // Bypass any effects from firing when this changes + + var disablePageResetOnDataChangeRef = React.useRef() + disablePageResetOnDataChangeRef.current = disablePageResetOnDataChange + safeUseLayoutEffect( + function() { + if ( + isPageIndexMountedRef.current && + !disablePageResetOnDataChangeRef.current + ) { + setState(function(old) { + return _objectSpread2({}, old, { + pageIndex: 0, + }) + }, actions.pageChange) + } + + isPageIndexMountedRef.current = true + }, + [setState, rowDep, filters, groupBy, sortBy] + ) + var pageCount = manualPagination + ? userPageCount + : Math.ceil(rows.length / pageSize) + var pageOptions = React.useMemo( + function() { + return pageCount > 0 + ? _toConsumableArray(new Array(pageCount)).map(function(d, i) { + return i + }) + : [] + }, + [pageCount] + ) + var page = React.useMemo( + function() { + var page + + if (manualPagination) { + page = rows + } else { + if (process.env.NODE_ENV === 'development' && debug) + console.info('getPage') + var pageStart = pageSize * pageIndex + var pageEnd = pageStart + pageSize + page = rows.slice(pageStart, pageEnd) + } + + if (paginateExpandedRows) { + return page + } + + return expandRows(page, { + manualExpandedKey: manualExpandedKey, + expanded: expanded, + expandSubRows: expandSubRows, + }) + }, + [ + debug, + expandSubRows, + expanded, + manualExpandedKey, + manualPagination, + pageIndex, + pageSize, + paginateExpandedRows, + rows, + ] + ) + var canPreviousPage = pageIndex > 0 + var canNextPage = pageCount === -1 || pageIndex < pageCount - 1 + var gotoPage = React.useCallback( + function(updater) { + if (process.env.NODE_ENV === 'development' && debug) + console.info('gotoPage') + return setState(function(old) { + var newPageIndex = + typeof updater === 'function' ? updater(old.pageIndex) : updater + + if (newPageIndex < 0 || newPageIndex > pageCount - 1) { + return old + } + + return _objectSpread2({}, old, { + pageIndex: newPageIndex, + }) + }, actions.pageChange) + }, + [debug, pageCount, setState] + ) + var previousPage = React.useCallback( + function() { + return gotoPage(function(old) { + return old - 1 + }) + }, + [gotoPage] + ) + var nextPage = React.useCallback( + function() { + return gotoPage(function(old) { + return old + 1 + }) + }, + [gotoPage] + ) + var setPageSize = React.useCallback( + function(pageSize) { + setState(function(old) { + var topRowIndex = old.pageSize * old.pageIndex + var pageIndex = Math.floor(topRowIndex / pageSize) + return _objectSpread2({}, old, { + pageIndex: pageIndex, + pageSize: pageSize, + }) + }, actions.pageSizeChange) + }, + [setState] + ) + return _objectSpread2({}, instance, { + pageOptions: pageOptions, + pageCount: pageCount, + page: page, + canPreviousPage: canPreviousPage, + canNextPage: canNextPage, + gotoPage: gotoPage, + previousPage: previousPage, + nextPage: nextPage, + setPageSize: setPageSize, + pageIndex: pageIndex, + pageSize: pageSize, + }) +} + +defaultState.selectedRowPaths = [] +addActions('toggleRowSelected', 'toggleRowSelectedAll') +var propTypes$6 = { + manualRowSelectedKey: PropTypes.string, +} +var useRowSelect = function useRowSelect(hooks) { + hooks.getToggleRowSelectedProps = [] + hooks.getToggleAllRowsSelectedProps = [] + hooks.useRows.push(useRows) + hooks.useMain.push(useMain$5) +} +useRowSelect.pluginName = 'useRowSelect' + +function useRows(rows, instance) { + PropTypes.checkPropTypes(propTypes$6, instance, 'property', 'useRowSelect') + var selectedRowPaths = instance.state.selectedRowPaths + instance.selectedFlatRows = React.useMemo( + function() { + var selectedFlatRows = [] + rows.forEach(function(row) { + if (row.isAggregated) { + var subRowPaths = row.subRows.map(function(row) { + return row.path + }) + row.isSelected = subRowPaths.every(function(path) { + return selectedRowPaths.includes(path.join('.')) + }) + } else { + row.isSelected = selectedRowPaths.includes(row.path.join('.')) + } + + if (row.isSelected) { + selectedFlatRows.push(row) + } + }) + return selectedFlatRows + }, + [rows, selectedRowPaths] + ) + return rows +} + +function useMain$5(instance) { + PropTypes.checkPropTypes(propTypes$6, instance, 'property', 'useRowSelect') + var hooks = instance.hooks, + _instance$manualRowSe = instance.manualRowSelectedKey, + manualRowSelectedKey = + _instance$manualRowSe === void 0 ? 'isSelected' : _instance$manualRowSe, + disableSelectedRowsResetOnDataChange = + instance.disableSelectedRowsResetOnDataChange, + plugins = instance.plugins, + flatRows = instance.flatRows, + data = instance.data, + selectedRowPaths = instance.state.selectedRowPaths, + setState = instance.setState + ensurePluginOrder( + plugins, + ['useFilters', 'useGroupBy', 'useSortBy'], + 'useRowSelect', + [] + ) + var flatRowPaths = flatRows.map(function(d) { + return d.path.join('.') + }) + var isAllRowsSelected = !!flatRowPaths.length && !!selectedRowPaths.length + + if (isAllRowsSelected) { + if ( + flatRowPaths.some(function(d) { + return !selectedRowPaths.includes(d) + }) + ) { + isAllRowsSelected = false + } + } + + var isRowSelectedMountedRef = React.useRef() // Bypass any effects from firing when this changes + + var disableSelectedRowsResetOnDataChangeRef = React.useRef() + disableSelectedRowsResetOnDataChangeRef.current = disableSelectedRowsResetOnDataChange + safeUseLayoutEffect( + function() { + if ( + isRowSelectedMountedRef.current && + !disableSelectedRowsResetOnDataChangeRef.current + ) { + setState(function(old) { + return _objectSpread2({}, old, { + selectedRowPaths: [], + }) + }, actions.pageChange) + } + + isRowSelectedMountedRef.current = true + }, + [setState, data] + ) + + var toggleRowSelectedAll = function toggleRowSelectedAll(set) { + setState(function(old) { + var selectAll = typeof set !== 'undefined' ? set : !isAllRowsSelected + return _objectSpread2({}, old, { + selectedRowPaths: selectAll ? flatRowPaths : [], + }) + }, actions.toggleRowSelectedAll) + } + + var updateParentRow = function updateParentRow(selectedRowPaths, path) { + var parentPath = path.slice(0, path.length - 1) + var parentKey = parentPath.join('.') + var selected = + flatRowPaths.filter(function(rowPath) { + var path = rowPath + return ( + path !== parentKey && + path.startsWith(parentKey) && + !selectedRowPaths.has(path) + ) + }).length === 0 + + if (selected) { + selectedRowPaths.add(parentKey) + } else { + selectedRowPaths.delete(parentKey) + } + + if (parentPath.length > 1) updateParentRow(selectedRowPaths, parentPath) + } + + var toggleRowSelected = function toggleRowSelected(path, set) { + var key = path.join('.') + var childRowPrefixKey = [key, '.'].join('') + return setState(function(old) { + // Join the paths of deep rows + // to make a key, then manage all of the keys + // in a flat object + var exists = old.selectedRowPaths.includes(key) + var shouldExist = typeof set !== 'undefined' ? set : !exists + var newSelectedRows = new Set(old.selectedRowPaths) + + if (!exists && shouldExist) { + flatRowPaths.forEach(function(rowPath) { + if (rowPath === key || rowPath.startsWith(childRowPrefixKey)) { + newSelectedRows.add(rowPath) + } + }) + } else if (exists && !shouldExist) { + flatRowPaths.forEach(function(rowPath) { + if (rowPath === key || rowPath.startsWith(childRowPrefixKey)) { + newSelectedRows.delete(rowPath) + } + }) + } else { + return old + } // If the row is a subRow update + // its parent row to reflect changes + + if (path.length > 1) updateParentRow(newSelectedRows, path) + return _objectSpread2({}, old, { + selectedRowPaths: _toConsumableArray(newSelectedRows.values()), + }) + }, actions.toggleRowSelected) + } + + var toggleAllRowsSelectedPropsFromHooks = applyPropHooks( + instance.hooks.getToggleAllRowsSelectedProps, + instance + ) + + var getToggleAllRowsSelectedProps = function getToggleAllRowsSelectedProps( + props + ) { + return mergeProps( + { + onChange: function onChange(e) { + toggleRowSelectedAll(e.target.checked) + }, + style: { + cursor: 'pointer', + }, + checked: isAllRowsSelected, + title: 'Toggle All Rows Selected', + }, + toggleAllRowsSelectedPropsFromHooks, + props + ) + } + + hooks.prepareRow.push(function(row, instance) { + var toggleRowSelectedPropsFromHooks = applyPropHooks( + instance.hooks.getToggleRowSelectedProps, + row, + instance + ) // Aggregate rows have entirely different select logic + + if (row.isAggregated) { + var subRowPaths = row.subRows.map(function(row) { + return row.path + }) + + row.toggleRowSelected = function(set) { + set = typeof set !== 'undefined' ? set : !row.isSelected + subRowPaths.forEach(function(path) { + toggleRowSelected(path, set) + }) + } + + row.getToggleRowSelectedProps = function(props) { + var checked = false + + if (row.original && row.original[manualRowSelectedKey]) { + checked = true + } else { + checked = row.isSelected + } + + return mergeProps( + { + onChange: function onChange(e) { + row.toggleRowSelected(e.target.checked) + }, + style: { + cursor: 'pointer', + }, + checked: checked, + title: 'Toggle Row Selected', + }, + toggleRowSelectedPropsFromHooks, + props + ) + } + } else { + row.toggleRowSelected = function(set) { + return toggleRowSelected(row.path, set) + } + + row.getToggleRowSelectedProps = function(props) { + var checked = false + + if (row.original && row.original[manualRowSelectedKey]) { + checked = true + } else { + checked = row.isSelected + } + + return mergeProps( + { + onChange: function onChange(e) { + row.toggleRowSelected(e.target.checked) + }, + style: { + cursor: 'pointer', + }, + checked: checked, + title: 'Toggle Row Selected', + }, + toggleRowSelectedPropsFromHooks, + props + ) + } + } + + return row + }) + return _objectSpread2({}, instance, { + toggleRowSelected: toggleRowSelected, + toggleRowSelectedAll: toggleRowSelectedAll, + getToggleAllRowsSelectedProps: getToggleAllRowsSelectedProps, + isAllRowsSelected: isAllRowsSelected, + }) +} + +defaultState.rowState = {} +addActions('setRowState', 'setCellState') +var propTypes$7 = { + initialRowStateAccessor: PropTypes.func, +} +var useRowState = function useRowState(hooks) { + hooks.useMain.push(useMain$6) +} +useRowState.pluginName = 'useRowState' + +function useMain$6(instance) { + PropTypes.checkPropTypes(propTypes$7, instance, 'property', 'useRowState') + var hooks = instance.hooks, + rows = instance.rows, + initialRowStateAccessor = instance.initialRowStateAccessor, + rowState = instance.state.rowState, + setState = instance.setState + var setRowState = React.useCallback( + function(path, updater) { + var action = + arguments.length > 2 && arguments[2] !== undefined + ? arguments[2] + : actions.setRowState + var pathKey = path.join('.') + return setState(function(old) { + return _objectSpread2({}, old, { + rowState: _objectSpread2( + {}, + old.rowState, + _defineProperty( + {}, + pathKey, + typeof updater === 'function' + ? updater(old.rowState[pathKey]) + : updater + ) + ), + }) + }, action) + }, + [setState] + ) + var setCellState = React.useCallback( + function(rowPath, columnID, updater) { + return setRowState( + rowPath, + function(old) { + return _objectSpread2({}, old, { + cellState: _objectSpread2( + {}, + old.cellState, + _defineProperty( + {}, + columnID, + typeof updater === 'function' + ? updater(old.cellState[columnID]) + : updater + ) + ), + }) + }, + actions.setCellState + ) + }, + [setRowState] + ) + var rowsMountedRef = React.useRef() // When data changes, reset row and cell state + + React.useEffect( + function() { + if (rowsMountedRef.current) { + setState(function(old) { + return _objectSpread2({}, old, { + rowState: {}, + }) + }, actions.setRowState) + } + + rowsMountedRef.current = true + }, + [rows, setState] + ) + hooks.prepareRow.push(function(row) { + var pathKey = row.path.join('.') + + if (row.original) { + row.state = + (typeof rowState[pathKey] !== 'undefined' + ? rowState[pathKey] + : initialRowStateAccessor && initialRowStateAccessor(row)) || {} + + row.setState = function(updater) { + return setRowState(row.path, updater) + } + + row.cells.forEach(function(cell) { + cell.state = row.state.cellState || {} + + cell.setState = function(updater) { + return setCellState(row.path, cell.column.id, updater) + } + }) + } + + return row + }) + return _objectSpread2({}, instance, { + setRowState: setRowState, + setCellState: setCellState, + }) +} + +defaultState.columnOrder = [] +addActions('setColumnOrder') +var propTypes$8 = { + initialRowStateAccessor: PropTypes.func, +} +var useColumnOrder = function useColumnOrder(hooks) { + hooks.columnsBeforeHeaderGroupsDeps.push(function(deps, instance) { + return [].concat(_toConsumableArray(deps), [instance.state.columnOrder]) + }) + hooks.columnsBeforeHeaderGroups.push(columnsBeforeHeaderGroups$1) + hooks.useMain.push(useMain$7) +} +useColumnOrder.pluginName = 'useColumnOrder' + +function columnsBeforeHeaderGroups$1(columns, instance) { + var columnOrder = instance.state.columnOrder // If there is no order, return the normal columns + + if (!columnOrder || !columnOrder.length) { + return columns + } + + var columnOrderCopy = _toConsumableArray(columnOrder) // If there is an order, make a copy of the columns + + var columnsCopy = _toConsumableArray(columns) // And make a new ordered array of the columns + + var columnsInOrder = [] // Loop over the columns and place them in order into the new array + + var _loop = function _loop() { + var targetColumnID = columnOrderCopy.shift() + var foundIndex = columnsCopy.findIndex(function(d) { + return d.id === targetColumnID + }) + + if (foundIndex > -1) { + columnsInOrder.push(columnsCopy.splice(foundIndex, 1)[0]) + } + } + + while (columnsCopy.length && columnOrderCopy.length) { + _loop() + } // If there are any columns left, add them to the end + + return [].concat(columnsInOrder, _toConsumableArray(columnsCopy)) +} + +function useMain$7(instance) { + PropTypes.checkPropTypes(propTypes$8, instance, 'property', 'useColumnOrder') + var setState = instance.setState + var setColumnOrder = React.useCallback( + function(updater) { + return setState(function(old) { + return _objectSpread2({}, old, { + columnOrder: + typeof updater === 'function' ? updater(old.columnOrder) : updater, + }) + }, actions.setColumnOrder) + }, + [setState] + ) + return _objectSpread2({}, instance, { + setColumnOrder: setColumnOrder, + }) +} + +defaultState.columnResizing = { + columnWidths: {}, +} +defaultColumn.canResize = true +var propTypes$9 = {} +var useResizeColumns = function useResizeColumns(hooks) { + hooks.getResizerProps = [] + hooks.useBeforeDimensions.push(useBeforeDimensions) +} +useResizeColumns.pluginName = 'useResizeColumns' + +var useBeforeDimensions = function useBeforeDimensions(instance) { + PropTypes.checkPropTypes( + propTypes$9, + instance, + 'property', + 'useResizeColumns' + ) + var flatHeaders = instance.flatHeaders, + disableResizing = instance.disableResizing, + getHeaderProps = instance.hooks.getHeaderProps, + columnResizing = instance.state.columnResizing, + setState = instance.setState + getHeaderProps.push(function() { + return { + style: { + position: 'relative', + }, + } + }) + + var _onMouseDown = function onMouseDown(e, header) { + var headersToResize = getLeafHeaders(header) + var startWidths = headersToResize.map(function(header) { + return header.totalWidth + }) + var startX = e.clientX + + var onMouseMove = function onMouseMove(e) { + var currentX = e.clientX + var deltaX = currentX - startX + var percentageDeltaX = deltaX / headersToResize.length + var newColumnWidths = {} + headersToResize.forEach(function(header, index) { + newColumnWidths[header.id] = Math.max( + startWidths[index] + percentageDeltaX, + 0 + ) + }) + setState(function(old) { + return _objectSpread2({}, old, { + columnResizing: _objectSpread2({}, old.columnResizing, { + columnWidths: _objectSpread2( + {}, + old.columnResizing.columnWidths, + {}, + newColumnWidths + ), + }), + }) + }) + } + + var onMouseUp = function onMouseUp(e) { + document.removeEventListener('mousemove', onMouseMove) + document.removeEventListener('mouseup', onMouseUp) + setState(function(old) { + return _objectSpread2({}, old, { + columnResizing: _objectSpread2({}, old.columnResizing, { + startX: null, + isResizingColumn: null, + }), + }) + }) + } + + document.addEventListener('mousemove', onMouseMove) + document.addEventListener('mouseup', onMouseUp) + setState(function(old) { + return _objectSpread2({}, old, { + columnResizing: _objectSpread2({}, old.columnResizing, { + startX: startX, + isResizingColumn: header.id, + }), + }) + }) + } + + flatHeaders.forEach( + (function(instance) { + return function(header) { + var canResize = getFirstDefined( + header.disableResizing === true ? false : undefined, + disableResizing === true ? false : undefined, + true + ) + header.canResize = canResize + header.width = columnResizing.columnWidths[header.id] || header.width + header.isResizing = columnResizing.isResizingColumn === header.id + + if (canResize) { + var resizerPropsFromHooks = applyPropHooks( + instance.hooks.getResizerProps, + header, + instance + ) + + header.getResizerProps = function(userProps) { + return mergeProps( + { + onMouseDown: function onMouseDown(e) { + return e.persist() || _onMouseDown(e, header) + }, + style: { + cursor: 'ew-resize', + }, + draggable: false, + }, + resizerPropsFromHooks, + userProps + ) + } + } + } + })(instance) + ) + return instance +} + +function getLeafHeaders(header) { + var leafHeaders = [] + + var recurseHeader = function recurseHeader(header) { + if (header.columns && header.columns.length) { + header.columns.map(recurseHeader) + } + + leafHeaders.push(header) + } + + recurseHeader(header) + return leafHeaders +} + +var propTypes$a = {} +var useAbsoluteLayout = function useAbsoluteLayout(hooks) { + hooks.useMain.push(useMain$8) +} +useAbsoluteLayout.pluginName = 'useAbsoluteLayout' + +var useMain$8 = function useMain(instance) { + PropTypes.checkPropTypes( + propTypes$a, + instance, + 'property', + 'useAbsoluteLayout' + ) + var totalColumnsWidth = instance.totalColumnsWidth, + _instance$hooks = instance.hooks, + getRowProps = _instance$hooks.getRowProps, + getTableBodyProps = _instance$hooks.getTableBodyProps, + getHeaderGroupProps = _instance$hooks.getHeaderGroupProps, + getHeaderProps = _instance$hooks.getHeaderProps, + getCellProps = _instance$hooks.getCellProps + var rowStyles = { + style: { + position: 'relative', + width: ''.concat(totalColumnsWidth, 'px'), + }, + } + getTableBodyProps.push(function() { + return rowStyles + }) + getRowProps.push(function() { + return rowStyles + }) + getHeaderGroupProps.push(function() { + return rowStyles + }) // Calculating column/cells widths + + var cellStyles = { + position: 'absolute', + top: 0, + } + getHeaderProps.push(function(header) { + return { + style: _objectSpread2({}, cellStyles, { + left: ''.concat(header.totalLeft, 'px'), + width: ''.concat(header.totalWidth, 'px'), + }), + } + }) + getCellProps.push(function(cell) { + return { + style: _objectSpread2({}, cellStyles, { + left: ''.concat(cell.column.totalLeft, 'px'), + width: ''.concat(cell.column.totalWidth, 'px'), + }), + } + }) + return instance +} + +var propTypes$b = {} +var useBlockLayout = function useBlockLayout(hooks) { + hooks.useMain.push(useMain$9) +} +useBlockLayout.pluginName = 'useBlockLayout' + +var useMain$9 = function useMain(instance) { + PropTypes.checkPropTypes(propTypes$b, instance, 'property', 'useBlockLayout') + var totalColumnsWidth = instance.totalColumnsWidth, + _instance$hooks = instance.hooks, + getRowProps = _instance$hooks.getRowProps, + getHeaderGroupProps = _instance$hooks.getHeaderGroupProps, + getHeaderProps = _instance$hooks.getHeaderProps, + getCellProps = _instance$hooks.getCellProps + var rowStyles = { + style: { + display: 'flex', + width: ''.concat(totalColumnsWidth, 'px'), + }, + } + getRowProps.push(function() { + return rowStyles + }) + getHeaderGroupProps.push(function() { + return rowStyles + }) + var cellStyles = { + display: 'inline-block', + boxSizing: 'border-box', + } + getHeaderProps.push(function(header) { + return { + style: _objectSpread2({}, cellStyles, { + width: ''.concat(header.totalWidth, 'px'), + }), + } + }) + getCellProps.push(function(cell) { + return { + style: _objectSpread2({}, cellStyles, { + width: ''.concat(cell.column.totalWidth, 'px'), + }), + } + }) + return instance +} + +export { + utils, + defaultColumn, + useTable, + defaultState, + useExpanded, + useFilters, + useGroupBy, + useSortBy, + usePagination, + useRowSelect, + useRowState, + useColumnOrder, + useResizeColumns, + useAbsoluteLayout, + useBlockLayout, + actions, + addActions, +} +//# sourceMappingURL=index.es.js.map diff --git a/dist/index.es.js.map b/dist/index.es.js.map new file mode 100644 index 0000000000..dc520a455d --- /dev/null +++ b/dist/index.es.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.es.js","sources":["../src/utils.js","../src/hooks/useTable.js","../src/actions.js","../src/plugin-hooks/useExpanded.js","../src/filterTypes.js","../src/plugin-hooks/useFilters.js","../src/aggregations.js","../src/plugin-hooks/useGroupBy.js","../src/sortTypes.js","../src/plugin-hooks/useSortBy.js","../src/plugin-hooks/usePagination.js","../src/plugin-hooks/useRowSelect.js","../src/plugin-hooks/useRowState.js","../src/plugin-hooks/useColumnOrder.js","../src/plugin-hooks/useResizeColumns.js","../src/plugin-hooks/useAbsoluteLayout.js","../src/plugin-hooks/useBlockLayout.js"],"sourcesContent":["import React from 'react'\n\nexport const defaultColumn = {\n Cell: ({ cell: { value = '' } }) => String(value),\n show: true,\n width: 150,\n minWidth: 0,\n maxWidth: Number.MAX_SAFE_INTEGER,\n}\n\n// SSR has issues with useLayoutEffect still, so use useEffect during SSR\nexport const safeUseLayoutEffect =\n typeof window !== 'undefined' && process.env.NODE_ENV === 'production'\n ? React.useLayoutEffect\n : React.useEffect\n\n// Find the depth of the columns\nexport function findMaxDepth(columns, depth = 0) {\n return columns.reduce((prev, curr) => {\n if (curr.columns) {\n return Math.max(prev, findMaxDepth(curr.columns, depth + 1))\n }\n return depth\n }, 0)\n}\n\nexport function decorateColumn(\n column,\n userDefaultColumn,\n parent,\n depth,\n index\n) {\n // Apply the userDefaultColumn\n column = { ...defaultColumn, ...userDefaultColumn, ...column }\n\n // First check for string accessor\n let { id, accessor, Header } = column\n\n if (typeof accessor === 'string') {\n id = id || accessor\n const accessorPath = accessor.split('.')\n accessor = row => getBy(row, accessorPath)\n }\n\n if (!id && typeof Header === 'string' && Header) {\n id = Header\n }\n\n if (!id && column.columns) {\n console.error(column)\n throw new Error('A column ID (or unique \"Header\" value) is required!')\n }\n\n if (!id) {\n console.error(column)\n throw new Error('A column ID (or string accessor) is required!')\n }\n\n column = {\n // Make sure there is a fallback header, just in case\n Header: () => <> ,\n ...column,\n // Materialize and override this stuff\n id,\n accessor,\n parent,\n depth,\n index,\n }\n\n return column\n}\n\n// Build the visible columns, headers and flat column list\nexport function decorateColumnTree(columns, defaultColumn, parent, depth = 0) {\n return columns.map((column, columnIndex) => {\n column = decorateColumn(column, defaultColumn, parent, depth, columnIndex)\n if (column.columns) {\n column.columns = decorateColumnTree(\n column.columns,\n defaultColumn,\n column,\n depth + 1\n )\n }\n return column\n })\n}\n\n// Build the header groups from the bottom up\nexport function makeHeaderGroups(flatColumns, defaultColumn) {\n const headerGroups = []\n\n // Build each header group from the bottom up\n const buildGroup = (columns, depth) => {\n const headerGroup = {\n headers: [],\n }\n\n const parentColumns = []\n\n // Do any of these columns have parents?\n const hasParents = columns.some(col => col.parent)\n\n columns.forEach(column => {\n // Are we the first column in this group?\n const isFirst = !parentColumns.length\n\n // What is the latest (last) parent column?\n let latestParentColumn = [...parentColumns].reverse()[0]\n\n // If the column has a parent, add it if necessary\n if (column.parent) {\n const similarParentColumns = parentColumns.filter(\n d => d.originalID === column.parent.id\n )\n if (isFirst || latestParentColumn.originalID !== column.parent.id) {\n parentColumns.push({\n ...column.parent,\n originalID: column.parent.id,\n id: [column.parent.id, similarParentColumns.length].join('_'),\n })\n }\n } else if (hasParents) {\n // If other columns have parents, we'll need to add a place holder if necessary\n const originalID = [column.id, 'placeholder'].join('_')\n const similarParentColumns = parentColumns.filter(\n d => d.originalID === originalID\n )\n const placeholderColumn = decorateColumn(\n {\n originalID,\n id: [column.id, 'placeholder', similarParentColumns.length].join(\n '_'\n ),\n placeholderOf: column,\n },\n defaultColumn\n )\n if (\n isFirst ||\n latestParentColumn.originalID !== placeholderColumn.originalID\n ) {\n parentColumns.push(placeholderColumn)\n }\n }\n\n // Establish the new headers[] relationship on the parent\n if (column.parent || hasParents) {\n latestParentColumn = [...parentColumns].reverse()[0]\n latestParentColumn.headers = latestParentColumn.headers || []\n if (!latestParentColumn.headers.includes(column)) {\n latestParentColumn.headers.push(column)\n }\n }\n\n column.totalHeaderCount = column.headers\n ? column.headers.reduce(\n (sum, header) => sum + header.totalHeaderCount,\n 0\n )\n : 1 // Leaf node columns take up at least one count\n headerGroup.headers.push(column)\n })\n\n headerGroups.push(headerGroup)\n\n if (parentColumns.length) {\n buildGroup(parentColumns, depth + 1)\n }\n }\n\n buildGroup(flatColumns, 0)\n\n return headerGroups.reverse()\n}\n\nexport function determineHeaderVisibility(instance) {\n const { headers } = instance\n\n const handleColumn = (column, parentVisible) => {\n column.isVisible = parentVisible\n ? typeof column.show === 'function'\n ? column.show(instance)\n : !!column.show\n : false\n\n let totalVisibleHeaderCount = 0\n\n if (column.headers && column.headers.length) {\n column.headers.forEach(\n subColumn =>\n (totalVisibleHeaderCount += handleColumn(subColumn, column.isVisible))\n )\n } else {\n totalVisibleHeaderCount = column.isVisible ? 1 : 0\n }\n\n column.totalVisibleHeaderCount = totalVisibleHeaderCount\n\n return totalVisibleHeaderCount\n }\n\n let totalVisibleHeaderCount = 0\n\n headers.forEach(\n subHeader => (totalVisibleHeaderCount += handleColumn(subHeader, true))\n )\n}\n\nexport function getBy(obj, path, def) {\n if (!path) {\n return obj\n }\n const pathObj = makePathArray(path)\n let val\n try {\n val = pathObj.reduce((cursor, pathPart) => cursor[pathPart], obj)\n } catch (e) {\n // continue regardless of error\n }\n return typeof val !== 'undefined' ? val : def\n}\n\nexport function defaultOrderByFn(arr, funcs, dirs) {\n return [...arr].sort((rowA, rowB) => {\n for (let i = 0; i < funcs.length; i += 1) {\n const sortFn = funcs[i]\n const desc = dirs[i] === false || dirs[i] === 'desc'\n const sortInt = sortFn(rowA, rowB)\n if (sortInt !== 0) {\n return desc ? -sortInt : sortInt\n }\n }\n return dirs[0] ? rowA.index - rowB.index : rowB.index - rowA.index\n })\n}\n\nexport function getFirstDefined(...args) {\n for (let i = 0; i < args.length; i += 1) {\n if (typeof args[i] !== 'undefined') {\n return args[i]\n }\n }\n}\n\nexport function defaultGroupByFn(rows, columnID) {\n return rows.reduce((prev, row, i) => {\n // TODO: Might want to implement a key serializer here so\n // irregular column values can still be grouped if needed?\n const resKey = `${row.values[columnID]}`\n prev[resKey] = Array.isArray(prev[resKey]) ? prev[resKey] : []\n prev[resKey].push(row)\n return prev\n }, {})\n}\n\nexport function getElementDimensions(element) {\n const rect = element.getBoundingClientRect()\n const style = window.getComputedStyle(element)\n const margins = {\n left: parseInt(style.marginLeft),\n right: parseInt(style.marginRight),\n }\n const padding = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight),\n }\n return {\n left: Math.ceil(rect.left),\n width: Math.ceil(rect.width),\n outerWidth: Math.ceil(\n rect.width + margins.left + margins.right + padding.left + padding.right\n ),\n marginLeft: margins.left,\n marginRight: margins.right,\n paddingLeft: padding.left,\n paddingRight: padding.right,\n scrollWidth: element.scrollWidth,\n }\n}\n\nexport function flexRender(Comp, props) {\n return isReactComponent(Comp) ? : Comp\n}\n\nfunction isClassComponent(component) {\n return (\n typeof component === 'function' &&\n !!(() => {\n let proto = Object.getPrototypeOf(component)\n return proto.prototype && proto.prototype.isReactComponent\n })()\n )\n}\n\nfunction isFunctionComponent(component) {\n return typeof component === 'function'\n}\n\nfunction isReactComponent(component) {\n return isClassComponent(component) || isFunctionComponent(component)\n}\n\nexport const mergeProps = (...groups) => {\n let props = {}\n groups.forEach(({ style = {}, className, ...rest } = {}) => {\n props = {\n ...props,\n ...rest,\n style: {\n ...(props.style || {}),\n ...style,\n },\n className: [props.className, className].filter(Boolean).join(' '),\n }\n })\n return props\n}\n\nexport const applyHooks = (hooks, initial, ...args) =>\n hooks.reduce((prev, next) => {\n const nextValue = next(prev, ...args)\n if (typeof nextValue === 'undefined') {\n throw new Error(\n 'React Table: A hook just returned undefined! This is not allowed.'\n )\n }\n return nextValue\n }, initial)\n\nexport const applyPropHooks = (hooks, ...args) =>\n hooks.reduce((prev, next) => mergeProps(prev, next(...args)), {})\n\nexport const warnUnknownProps = props => {\n if (Object.keys(props).length) {\n throw new Error(\n `Unknown options passed to useReactTable:\n\n${JSON.stringify(props, null, 2)}`\n )\n }\n}\n\nexport function sum(arr) {\n return arr.reduce((prev, curr) => prev + curr, 0)\n}\n\nexport function isFunction(a) {\n if (typeof a === 'function') {\n return a\n }\n}\n\nexport function flattenBy(columns, childKey) {\n const flatColumns = []\n\n const recurse = columns => {\n columns.forEach(d => {\n if (!d[childKey]) {\n flatColumns.push(d)\n } else {\n recurse(d[childKey])\n }\n })\n }\n\n recurse(columns)\n\n return flatColumns\n}\n\nexport function ensurePluginOrder(plugins, befores, pluginName, afters) {\n const pluginIndex = plugins.findIndex(\n plugin => plugin.pluginName === pluginName\n )\n\n if (pluginIndex === -1) {\n throw new Error(`The plugin ${pluginName} was not found in the plugin list!\nThis usually means you need to need to name your plugin hook by setting the 'pluginName' property of the hook function, eg:\n\n ${pluginName}.pluginName = '${pluginName}'\n`)\n }\n\n befores.forEach(before => {\n const beforeIndex = plugins.findIndex(\n plugin => plugin.pluginName === before\n )\n if (beforeIndex > -1 && beforeIndex > pluginIndex) {\n throw new Error(\n `React Table: The ${pluginName} plugin hook must be placed after the ${before} plugin hook!`\n )\n }\n })\n\n afters.forEach(after => {\n const afterIndex = plugins.findIndex(plugin => plugin.pluginName === after)\n if (afterIndex > -1 && afterIndex < pluginIndex) {\n throw new Error(\n `React Table: The ${pluginName} plugin hook must be placed before the ${after} plugin hook!`\n )\n }\n })\n}\n\nexport function expandRows(\n rows,\n { manualExpandedKey, expanded, expandSubRows = true }\n) {\n const expandedRows = []\n\n const handleRow = row => {\n const key = row.path.join('.')\n\n row.isExpanded =\n (row.original && row.original[manualExpandedKey]) ||\n expanded.includes(key)\n\n row.canExpand = row.subRows && !!row.subRows.length\n\n expandedRows.push(row)\n\n if (expandSubRows && row.subRows && row.subRows.length && row.isExpanded) {\n row.subRows.forEach(handleRow)\n }\n }\n\n rows.forEach(handleRow)\n\n return expandedRows\n}\n\n//\n\nfunction makePathArray(obj) {\n return (\n flattenDeep(obj)\n // remove all periods in parts\n .map(d => String(d).replace('.', '_'))\n // join parts using period\n .join('.')\n // replace brackets with periods\n .replace(/\\[/g, '.')\n .replace(/\\]/g, '')\n // split it back out on periods\n .split('.')\n )\n}\n\nfunction flattenDeep(arr, newArr = []) {\n if (!Array.isArray(arr)) {\n newArr.push(arr)\n } else {\n for (let i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], newArr)\n }\n }\n return newArr\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n//\nimport {\n applyHooks,\n applyPropHooks,\n mergeProps,\n flexRender,\n decorateColumnTree,\n makeHeaderGroups,\n flattenBy,\n determineHeaderVisibility,\n} from '../utils'\n\nconst propTypes = {\n // General\n data: PropTypes.array.isRequired,\n columns: PropTypes.arrayOf(PropTypes.object).isRequired,\n defaultColumn: PropTypes.object,\n getSubRows: PropTypes.func,\n getRowID: PropTypes.func,\n debug: PropTypes.bool,\n}\n\nconst renderErr =\n 'You must specify a valid render component. This could be \"column.Cell\", \"column.Header\", \"column.Filter\", \"column.Aggregated\" or any other custom renderer component.'\n\nexport const defaultState = {}\n\nconst defaultInitialState = {}\nconst defaultColumnInstance = {}\nconst defaultReducer = (old, newState) => newState\nconst defaultGetSubRows = (row, index) => {\n if (row !== null && row.subRows) {\n return row.subRows\n } else {\n return []\n }\n}\nconst defaultGetRowID = (row, index) => index\n\nexport const useTable = (props, ...plugins) => {\n // Validate props\n PropTypes.checkPropTypes(propTypes, props, 'property', 'useTable')\n\n // Destructure props\n let {\n data,\n columns: userColumns,\n initialState = defaultInitialState,\n state: userState,\n defaultColumn = defaultColumnInstance,\n getSubRows = defaultGetSubRows,\n getRowID = defaultGetRowID,\n reducer = defaultReducer,\n debug,\n } = props\n\n debug = process.env.NODE_ENV === 'production' ? false : debug\n\n // But use the users table state if provided\n let [originalState, originalSetState] = React.useState({\n ...defaultState,\n ...initialState,\n })\n\n const state = React.useMemo(() => {\n if (userState) {\n const newState = {\n ...originalState,\n }\n Object.keys(userState).forEach(key => {\n newState[key] = userState[key]\n })\n return newState\n }\n return originalState\n }, [originalState, userState])\n\n const setState = React.useCallback(\n (updater, type) => {\n return originalSetState(old => {\n const newState = typeof updater === 'function' ? updater(old) : updater\n return reducer(old, newState, type)\n })\n },\n [reducer]\n )\n\n // The table instance ref\n let instanceRef = React.useRef({})\n\n Object.assign(instanceRef.current, {\n ...props,\n data, // The raw data\n state,\n setState, // The resolved table state\n plugins, // All resolved plugins\n hooks: {\n columnsBeforeHeaderGroups: [],\n columnsBeforeHeaderGroupsDeps: [],\n useBeforeDimensions: [],\n useMain: [],\n useRows: [],\n prepareRow: [],\n getTableProps: [],\n getTableBodyProps: [],\n getRowProps: [],\n getHeaderGroupProps: [],\n getHeaderProps: [],\n getCellProps: [],\n },\n })\n\n // Allow plugins to register hooks\n if (process.env.NODE_ENV === 'development' && debug) console.time('plugins')\n\n plugins.filter(Boolean).forEach(plugin => {\n plugin(instanceRef.current.hooks)\n })\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('plugins')\n\n // Decorate All the columns\n let columns = React.useMemo(\n () => decorateColumnTree(userColumns, defaultColumn),\n [defaultColumn, userColumns]\n )\n\n // Get the flat list of all columns andllow hooks to decorate\n // those columns (and trigger this memoization via deps)\n let flatColumns = React.useMemo(() => {\n if (process.env.NODE_ENV === 'development' && debug)\n console.time('hooks.columnsBeforeHeaderGroups')\n\n let newColumns = applyHooks(\n instanceRef.current.hooks.columnsBeforeHeaderGroups,\n flattenBy(columns, 'columns'),\n instanceRef.current\n )\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('hooks.columnsBeforeHeaderGroups')\n return newColumns\n }, [\n columns,\n debug,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...applyHooks(\n instanceRef.current.hooks.columnsBeforeHeaderGroupsDeps,\n [],\n instanceRef.current\n ),\n ])\n\n // Make the headerGroups\n const headerGroups = React.useMemo(\n () => makeHeaderGroups(flatColumns, defaultColumn),\n [defaultColumn, flatColumns]\n )\n\n const headers = React.useMemo(() => headerGroups[0].headers, [headerGroups])\n\n Object.assign(instanceRef.current, {\n columns,\n flatColumns,\n headerGroups,\n headers,\n })\n\n // Access the row model\n const [rows, flatRows] = React.useMemo(() => {\n if (process.env.NODE_ENV === 'development' && debug)\n console.time('getAccessedRows')\n\n let flatRows = []\n\n // Access the row's data\n const accessRow = (originalRow, i, depth = 0, parentPath = []) => {\n // Keep the original reference around\n const original = originalRow\n\n const rowID = getRowID(originalRow, i)\n\n // Make the new path for the row\n const path = [...parentPath, rowID]\n\n const row = {\n original,\n index: i,\n path, // used to create a key for each row even if not nested\n depth,\n cells: [{}], // This is a dummy cell\n }\n\n flatRows.push(row)\n\n // Process any subRows\n let subRows = getSubRows(originalRow, i)\n\n if (subRows) {\n row.subRows = subRows.map((d, i) => accessRow(d, i, depth + 1, path))\n }\n\n // Override common array functions (and the dummy cell's getCellProps function)\n // to show an error if it is accessed without calling prepareRow\n const unpreparedAccessWarning = () => {\n throw new Error(\n 'React-Table: You have not called prepareRow(row) one or more rows you are attempting to render.'\n )\n }\n row.cells.map = unpreparedAccessWarning\n row.cells.filter = unpreparedAccessWarning\n row.cells.forEach = unpreparedAccessWarning\n row.cells[0].getCellProps = unpreparedAccessWarning\n\n // Create the cells and values\n row.values = {}\n flatColumns.forEach(column => {\n row.values[column.id] = column.accessor\n ? column.accessor(originalRow, i, { subRows, depth, data })\n : undefined\n })\n\n return row\n }\n\n // Use the resolved data\n const accessedData = data.map((d, i) => accessRow(d, i))\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('getAccessedRows')\n return [accessedData, flatRows]\n }, [debug, data, getRowID, getSubRows, flatColumns])\n\n instanceRef.current.rows = rows\n instanceRef.current.flatRows = flatRows\n\n // Determine column visibility\n determineHeaderVisibility(instanceRef.current)\n\n // Provide a flat header list for utilities\n instanceRef.current.flatHeaders = headerGroups.reduce(\n (all, headerGroup) => [...all, ...headerGroup.headers],\n []\n )\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.time('hooks.useBeforeDimensions')\n instanceRef.current = applyHooks(\n instanceRef.current.hooks.useBeforeDimensions,\n instanceRef.current\n )\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('hooks.useBeforeDimensions')\n\n calculateDimensions(instanceRef.current)\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.time('hooks.useMain')\n instanceRef.current = applyHooks(\n instanceRef.current.hooks.useMain,\n instanceRef.current\n )\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('hooks.useMain')\n\n // Each materialized header needs to be assigned a render function and other\n // prop getter properties here.\n instanceRef.current.flatHeaders.forEach(column => {\n // Give columns/headers rendering power\n column.render = (type, userProps = {}) => {\n const Comp = typeof type === 'string' ? column[type] : type\n\n if (typeof Comp === 'undefined') {\n throw new Error(renderErr)\n }\n\n return flexRender(Comp, {\n ...instanceRef.current,\n column,\n ...userProps,\n })\n }\n\n // Give columns/headers a default getHeaderProps\n column.getHeaderProps = props =>\n mergeProps(\n {\n key: ['header', column.id].join('_'),\n colSpan: column.totalVisibleHeaderCount,\n },\n applyPropHooks(\n instanceRef.current.hooks.getHeaderProps,\n column,\n instanceRef.current\n ),\n props\n )\n })\n\n instanceRef.current.headerGroups.forEach((headerGroup, i) => {\n // Filter out any headers and headerGroups that don't have visible columns\n headerGroup.headers = headerGroup.headers.filter(header => {\n const recurse = headers =>\n headers.filter(header => {\n if (header.headers) {\n return recurse(header.headers)\n }\n return header.isVisible\n }).length\n if (header.headers) {\n return recurse(header.headers)\n }\n return header.isVisible\n })\n\n // Give headerGroups getRowProps\n if (headerGroup.headers.length) {\n headerGroup.getHeaderGroupProps = (props = {}) =>\n mergeProps(\n {\n key: [`header${i}`].join('_'),\n },\n applyPropHooks(\n instanceRef.current.hooks.getHeaderGroupProps,\n headerGroup,\n instanceRef.current\n ),\n props\n )\n\n return true\n }\n })\n\n // Run the rows (this could be a dangerous hook with a ton of data)\n if (process.env.NODE_ENV === 'development' && debug)\n console.time('hooks.useRows')\n instanceRef.current.rows = applyHooks(\n instanceRef.current.hooks.useRows,\n instanceRef.current.rows,\n instanceRef.current\n )\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('hooks.useRows')\n\n // The prepareRow function is absolutely necessary and MUST be called on\n // any rows the user wishes to be displayed.\n\n instanceRef.current.prepareRow = React.useCallback(row => {\n row.getRowProps = props =>\n mergeProps(\n { key: ['row', ...row.path].join('_') },\n applyPropHooks(\n instanceRef.current.hooks.getRowProps,\n row,\n instanceRef.current\n ),\n props\n )\n\n // Build the visible cells for each row\n row.cells = instanceRef.current.flatColumns\n .filter(d => d.isVisible)\n .map(column => {\n const cell = {\n column,\n row,\n value: row.values[column.id],\n }\n\n // Give each cell a getCellProps base\n cell.getCellProps = props => {\n const columnPathStr = [...row.path, column.id].join('_')\n return mergeProps(\n {\n key: ['cell', columnPathStr].join('_'),\n },\n applyPropHooks(\n instanceRef.current.hooks.getCellProps,\n cell,\n instanceRef.current\n ),\n props\n )\n }\n\n // Give each cell a renderer function (supports multiple renderers)\n cell.render = (type, userProps = {}) => {\n const Comp = typeof type === 'string' ? column[type] : type\n\n if (typeof Comp === 'undefined') {\n throw new Error(renderErr)\n }\n\n return flexRender(Comp, {\n ...instanceRef.current,\n column,\n row,\n cell,\n ...userProps,\n })\n }\n\n return cell\n })\n\n // need to apply any row specific hooks (useExpanded requires this)\n applyHooks(instanceRef.current.hooks.prepareRow, row, instanceRef.current)\n }, [])\n\n instanceRef.current.getTableProps = userProps =>\n mergeProps(\n applyPropHooks(\n instanceRef.current.hooks.getTableProps,\n instanceRef.current\n ),\n userProps\n )\n\n instanceRef.current.getTableBodyProps = userProps =>\n mergeProps(\n applyPropHooks(\n instanceRef.current.hooks.getTableBodyProps,\n instanceRef.current\n ),\n userProps\n )\n\n return instanceRef.current\n}\n\nfunction calculateDimensions(instance) {\n const { headers } = instance\n\n instance.totalColumnsWidth = calculateHeaderWidths(headers)\n}\n\nfunction calculateHeaderWidths(headers, left = 0) {\n let sumTotalWidth = 0\n\n headers.forEach(header => {\n let { headers: subHeaders } = header\n\n header.totalLeft = left\n\n if (subHeaders && subHeaders.length) {\n header.totalWidth = calculateHeaderWidths(subHeaders, left)\n } else {\n header.totalWidth = Math.min(\n Math.max(header.minWidth, header.width),\n header.maxWidth\n )\n }\n if (header.isVisible) {\n left += header.totalWidth\n sumTotalWidth += header.totalWidth\n }\n })\n\n return sumTotalWidth\n}\n","const actions = {}\nconst types = {}\n\nexport { actions, types }\n\nexport const addActions = (...acts) => {\n acts.forEach(action => {\n // Action values are formatted this way to discourage\n // you (the dev) from interacting with them in any way\n // other than importing `{ actions } from 'react-table'`\n // and referencing an action via `actions[actionName]`\n actions[action] = `React Table Action: ${action}`\n types[actions[action]] = true\n })\n}\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { mergeProps, applyPropHooks, expandRows } from '../utils'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\n\ndefaultState.expanded = []\n\naddActions('toggleExpanded', 'useExpanded')\n\nconst propTypes = {\n manualExpandedKey: PropTypes.string,\n paginateExpandedRows: PropTypes.bool,\n}\n\nexport const useExpanded = hooks => {\n hooks.getExpandedToggleProps = []\n hooks.useMain.push(useMain)\n}\n\nuseExpanded.pluginName = 'useExpanded'\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useExpanded')\n\n const {\n debug,\n rows,\n manualExpandedKey = 'expanded',\n paginateExpandedRows = true,\n expandSubRows = true,\n hooks,\n state: { expanded },\n setState,\n } = instance\n\n const toggleExpandedByPath = (path, set) => {\n const key = path.join('.')\n\n return setState(old => {\n const exists = old.expanded.includes(key)\n const shouldExist = typeof set !== 'undefined' ? set : !exists\n let newExpanded = new Set(old.expanded)\n\n if (!exists && shouldExist) {\n newExpanded.add(key)\n } else if (exists && !shouldExist) {\n newExpanded.delete(key)\n } else {\n return old\n }\n\n return {\n ...old,\n expanded: [...newExpanded.values()],\n }\n }, actions.toggleExpanded)\n }\n\n hooks.prepareRow.push((row, instance) => {\n row.toggleExpanded = set => toggleExpandedByPath(row.path, set)\n const propsFromHooks = applyPropHooks(\n instance.hooks.getExpandedToggleProps,\n row,\n instance\n )\n row.getExpandedToggleProps = props => {\n return mergeProps(\n {\n onClick: e => {\n e.persist()\n row.toggleExpanded()\n },\n style: {\n cursor: 'pointer',\n },\n title: 'Toggle Expanded',\n },\n propsFromHooks,\n props\n )\n }\n return row\n })\n\n const expandedRows = useMemo(() => {\n if (process.env.NODE_ENV === 'development' && debug)\n console.info('getExpandedRows')\n\n if (paginateExpandedRows) {\n return expandRows(rows, { manualExpandedKey, expanded, expandSubRows })\n }\n\n return rows\n }, [\n debug,\n paginateExpandedRows,\n rows,\n manualExpandedKey,\n expanded,\n expandSubRows,\n ])\n\n const expandedDepth = findExpandedDepth(expanded)\n\n return {\n ...instance,\n toggleExpandedByPath,\n expandedDepth,\n rows: expandedRows,\n }\n}\n\nfunction findExpandedDepth(expanded) {\n let maxDepth = 0\n\n expanded.forEach(key => {\n const path = key.split('.')\n maxDepth = Math.max(maxDepth, path.length)\n })\n\n return maxDepth\n}","export const text = (rows, id, filterValue) => {\n rows = rows.filter(row => {\n const rowValue = row.values[id]\n return String(rowValue)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase())\n })\n return rows\n}\n\ntext.autoRemove = val => !val\n\nexport const exactText = (rows, id, filterValue) => {\n return rows.filter(row => {\n const rowValue = row.values[id]\n return rowValue !== undefined\n ? String(rowValue).toLowerCase() === String(filterValue).toLowerCase()\n : true\n })\n}\n\nexactText.autoRemove = val => !val\n\nexport const exactTextCase = (rows, id, filterValue) => {\n return rows.filter(row => {\n const rowValue = row.values[id]\n return rowValue !== undefined\n ? String(rowValue) === String(filterValue)\n : true\n })\n}\n\nexactTextCase.autoRemove = val => !val\n\nexport const includes = (rows, id, filterValue) => {\n return rows.filter(row => {\n const rowValue = row.values[id]\n return filterValue.includes(rowValue)\n })\n}\n\nincludes.autoRemove = val => !val || !val.length\n\nexport const includesAll = (rows, id, filterValue) => {\n return rows.filter(row => {\n const rowValue = row.values[id]\n return (\n rowValue &&\n rowValue.length &&\n filterValue.every(val => rowValue.includes(val))\n )\n })\n}\n\nincludesAll.autoRemove = val => !val || !val.length\n\nexport const exact = (rows, id, filterValue) => {\n return rows.filter(row => {\n const rowValue = row.values[id]\n return rowValue === filterValue\n })\n}\n\nexact.autoRemove = val => typeof val === 'undefined'\n\nexport const equals = (rows, id, filterValue) => {\n return rows.filter(row => {\n const rowValue = row.values[id]\n // eslint-disable-next-line eqeqeq\n return rowValue == filterValue\n })\n}\n\nequals.autoRemove = val => val == null\n\nexport const between = (rows, id, filterValue) => {\n let [min, max] = filterValue || []\n\n min = typeof min === 'number' ? min : -Infinity\n max = typeof max === 'number' ? max : Infinity\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return rows.filter(row => {\n const rowValue = row.values[id]\n return rowValue >= min && rowValue <= max\n })\n}\n\nbetween.autoRemove = val =>\n !val || (typeof val[0] !== 'number' && typeof val[1] !== 'number')\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { getFirstDefined, isFunction } from '../utils'\nimport * as filterTypes from '../filterTypes'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\n\ndefaultState.filters = {}\n\naddActions('setFilter', 'setAllFilters')\n\nconst propTypes = {\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n disableFilters: PropTypes.bool,\n Filter: PropTypes.any,\n })\n ),\n\n manualFilters: PropTypes.bool,\n}\n\nexport const useFilters = hooks => {\n hooks.useMain.push(useMain)\n}\n\nuseFilters.pluginName = 'useFilters'\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useFilters')\n\n const {\n debug,\n rows,\n flatRows,\n flatColumns,\n filterTypes: userFilterTypes,\n manualFilters,\n disableFilters,\n state: { filters },\n setState,\n } = instance\n\n const preFilteredRows = rows\n const preFilteredFlatRows = flatRows\n\n const setFilter = (id, updater) => {\n const column = flatColumns.find(d => d.id === id)\n\n if (!column) {\n throw new Error(`React-Table: Could not find a column with id: ${id}`)\n }\n\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n return setState(old => {\n const newFilter =\n typeof updater === 'function' ? updater(old.filters[id]) : updater\n\n //\n if (shouldAutoRemove(filterMethod.autoRemove, newFilter)) {\n const { [id]: remove, ...newFilters } = old.filters\n return {\n ...old,\n filters: newFilters,\n }\n }\n\n return {\n ...old,\n filters: {\n ...old.filters,\n [id]: newFilter,\n },\n }\n }, actions.setFilter)\n }\n\n const setAllFilters = updater => {\n return setState(old => {\n const newFilters = typeof updater === 'function' ? updater(old) : updater\n\n // Filter out undefined values\n Object.keys(newFilters).forEach(id => {\n const newFilter = newFilters[id]\n const column = flatColumns.find(d => d.id === id)\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (shouldAutoRemove(filterMethod.autoRemove, newFilter)) {\n delete newFilters[id]\n }\n })\n\n return {\n ...old,\n filters: newFilters,\n }\n }, actions.setAllFilters)\n }\n\n flatColumns.forEach(column => {\n const { id, accessor, disableFilters: columnDisableFilters } = column\n\n // Determine if a column is filterable\n column.canFilter = accessor\n ? getFirstDefined(\n columnDisableFilters === true ? false : undefined,\n disableFilters === true ? false : undefined,\n true\n )\n : false\n\n // Provide the column a way of updating the filter value\n column.setFilter = val => setFilter(column.id, val)\n\n // Provide the current filter value to the column for\n // convenience\n column.filterValue = filters[id]\n })\n\n // TODO: Create a filter cache for incremental high speed multi-filtering\n // This gets pretty complicated pretty fast, since you have to maintain a\n // cache for each row group (top-level rows, and each row's recursive subrows)\n // This would make multi-filtering a lot faster though. Too far?\n\n const { filteredRows, filteredFlatRows } = React.useMemo(() => {\n if (manualFilters || !Object.keys(filters).length) {\n return {\n filteredRows: rows,\n filteredFlatRows: flatRows,\n }\n }\n\n const filteredFlatRows = []\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.info('getFilteredRows')\n\n // Filters top level and nested rows\n const filterRows = (rows, depth = 0) => {\n let filteredRows = rows\n\n filteredRows = Object.entries(filters).reduce(\n (filteredSoFar, [columnID, filterValue]) => {\n // Find the filters column\n const column = flatColumns.find(d => d.id === columnID)\n\n if (!column) {\n return filteredSoFar\n }\n\n if (depth === 0) {\n column.preFilteredRows = filteredSoFar\n }\n\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (!filterMethod) {\n console.warn(\n `Could not find a valid 'column.filter' for column with the ID: ${column.id}.`\n )\n return filteredSoFar\n }\n\n // Pass the rows, id, filterValue and column to the filterMethod\n // to get the filtered rows back\n column.filteredRows = filterMethod(\n filteredSoFar,\n columnID,\n filterValue,\n column\n )\n\n return column.filteredRows\n },\n rows\n )\n\n // Apply the filter to any subRows\n // We technically could do this recursively in the above loop,\n // but that would severely hinder the API for the user, since they\n // would be required to do that recursion in some scenarios\n filteredRows = filteredRows.map(row => {\n filteredFlatRows.push(row)\n if (!row.subRows) {\n return row\n }\n return {\n ...row,\n subRows:\n row.subRows && row.subRows.length > 0\n ? filterRows(row.subRows, depth + 1)\n : row.subRows,\n }\n })\n\n return filteredRows\n }\n\n return {\n filteredRows: filterRows(rows),\n filteredFlatRows,\n }\n }, [\n manualFilters,\n filters,\n debug,\n rows,\n flatRows,\n flatColumns,\n userFilterTypes,\n ])\n\n React.useMemo(() => {\n // Now that each filtered column has it's partially filtered rows,\n // lets assign the final filtered rows to all of the other columns\n const nonFilteredColumns = flatColumns.filter(\n column => !Object.keys(filters).includes(column.id)\n )\n\n // This essentially enables faceted filter options to be built easily\n // using every column's preFilteredRows value\n nonFilteredColumns.forEach(column => {\n column.preFilteredRows = filteredRows\n column.filteredRows = filteredRows\n })\n }, [filteredRows, filters, flatColumns])\n\n return {\n ...instance,\n setFilter,\n setAllFilters,\n preFilteredRows,\n preFilteredFlatRows,\n rows: filteredRows,\n flatRows: filteredFlatRows,\n }\n}\n\nfunction shouldAutoRemove(autoRemove, value) {\n return autoRemove ? autoRemove(value) : typeof value === 'undefined'\n}\n\nfunction getFilterMethod(filter, userFilterTypes, filterTypes) {\n return (\n isFunction(filter) ||\n userFilterTypes[filter] ||\n filterTypes[filter] ||\n filterTypes.text\n )\n}\n","export function sum(values, rows) {\n return values.reduce((sum, next) => sum + next, 0)\n}\n\nexport function average(values, rows) {\n return Math.round((sum(values, rows) / values.length) * 100) / 100\n}\n\nexport function median(values) {\n let min = values[0] || ''\n let max = values[0] || ''\n\n values.forEach(value => {\n min = Math.min(min, value)\n max = Math.max(max, value)\n })\n\n return (min + max) / 2\n}\n\nexport function uniqueCount(values) {\n return new Set(values).size\n}\n\nexport function count(values) {\n return values.length\n}\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport * as aggregations from '../aggregations'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\nimport {\n mergeProps,\n applyPropHooks,\n defaultGroupByFn,\n getFirstDefined,\n ensurePluginOrder,\n} from '../utils'\n\ndefaultState.groupBy = []\n\naddActions('toggleGroupBy')\n\nconst propTypes = {\n // General\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n aggregate: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.string,\n PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.func, PropTypes.string])\n ),\n ]),\n disableGrouping: PropTypes.bool,\n Aggregated: PropTypes.any,\n })\n ),\n groupByFn: PropTypes.func,\n manualGrouping: PropTypes.bool,\n disableGrouping: PropTypes.bool,\n aggregations: PropTypes.object,\n}\n\nexport const useGroupBy = hooks => {\n hooks.getGroupByToggleProps = []\n hooks.columnsBeforeHeaderGroups.push(columnsBeforeHeaderGroups)\n hooks.columnsBeforeHeaderGroupsDeps.push((deps, instance) => {\n deps.push(instance.state.groupBy)\n return deps\n })\n hooks.useMain.push(useMain)\n}\n\nuseGroupBy.pluginName = 'useGroupBy'\n\nfunction columnsBeforeHeaderGroups(flatColumns, { state: { groupBy } }) {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n\n const groupByColumns = groupBy.map(g => flatColumns.find(col => col.id === g))\n const nonGroupByColumns = flatColumns.filter(col => !groupBy.includes(col.id))\n\n // If a groupByBoundary column is found, place the groupBy's after it\n const groupByBoundaryColumnIndex =\n flatColumns.findIndex(column => column.groupByBoundary) + 1\n\n return [\n ...nonGroupByColumns.slice(0, groupByBoundaryColumnIndex),\n ...groupByColumns,\n ...nonGroupByColumns.slice(groupByBoundaryColumnIndex),\n ]\n}\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useGroupBy')\n\n const {\n debug,\n rows,\n flatColumns,\n flatHeaders,\n groupByFn = defaultGroupByFn,\n manualGroupBy,\n disableGrouping,\n aggregations: userAggregations = {},\n hooks,\n plugins,\n state: { groupBy },\n setState,\n } = instance\n\n ensurePluginOrder(plugins, [], 'useGroupBy', ['useSortBy', 'useExpanded'])\n\n flatColumns.forEach(column => {\n const { id, accessor, disableGrouping: columnDisableGrouping } = column\n column.isGrouped = groupBy.includes(id)\n column.groupedIndex = groupBy.indexOf(id)\n\n column.canGroupBy = accessor\n ? getFirstDefined(\n columnDisableGrouping === true ? false : undefined,\n disableGrouping === true ? false : undefined,\n true\n )\n : false\n\n if (column.canGroupBy) {\n column.toggleGroupBy = () => toggleGroupBy(column.id)\n }\n\n column.Aggregated = column.Aggregated || column.Cell\n })\n\n const toggleGroupBy = (id, toggle) => {\n return setState(old => {\n const resolvedToggle =\n typeof toggle !== 'undefined' ? toggle : !groupBy.includes(id)\n if (resolvedToggle) {\n return {\n ...old,\n groupBy: [...groupBy, id],\n }\n }\n return {\n ...old,\n groupBy: groupBy.filter(d => d !== id),\n }\n }, actions.toggleGroupBy)\n }\n\n flatHeaders.forEach(\n // avoid sharing instance in contexts of other functions\n (instance => header => {\n const { canGroupBy } = header\n const groupByTogglePropsFromHooks = applyPropHooks(\n instance.hooks.getGroupByToggleProps,\n header,\n instance\n )\n header.getGroupByToggleProps = props => {\n return mergeProps(\n {\n onClick: canGroupBy\n ? e => {\n e.persist()\n header.toggleGroupBy()\n }\n : undefined,\n style: {\n cursor: canGroupBy ? 'pointer' : undefined,\n },\n title: 'Toggle GroupBy',\n },\n groupByTogglePropsFromHooks,\n props\n )\n }\n })(instance)\n )\n\n hooks.prepareRow.push(row => {\n row.cells.forEach(cell => {\n // Grouped cells are in the groupBy and the pivot cell for the row\n cell.isGrouped = cell.column.isGrouped && cell.column.id === row.groupByID\n // Repeated cells are any columns in the groupBy that are not grouped\n cell.isRepeatedValue = !cell.isGrouped && cell.column.isGrouped\n // Aggregated cells are not grouped, not repeated, but still have subRows\n cell.isAggregated =\n !cell.isGrouped && !cell.isRepeatedValue && row.canExpand\n })\n return row\n })\n\n const groupedRows = useMemo(() => {\n if (manualGroupBy || !groupBy.length) {\n return rows\n }\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.info('getGroupedRows')\n // Find the columns that can or are aggregating\n\n // Uses each column to aggregate rows into a single value\n const aggregateRowsToValues = (rows, isSourceRows) => {\n const values = {}\n\n flatColumns.forEach(column => {\n // Don't aggregate columns that are in the groupBy\n if (groupBy.includes(column.id)) {\n values[column.id] = rows[0] ? rows[0].values[column.id] : null\n return\n }\n\n const columnValues = rows.map(d => d.values[column.id])\n\n let aggregator = column.aggregate\n\n if (Array.isArray(aggregator)) {\n if (aggregator.length !== 2) {\n console.info({ column })\n throw new Error(\n `React Table: Complex aggregators must have 2 values, eg. aggregate: ['sum', 'count']. More info above...`\n )\n }\n if (isSourceRows) {\n aggregator = aggregator[1]\n } else {\n aggregator = aggregator[0]\n }\n }\n\n let aggregateFn =\n typeof aggregator === 'function'\n ? aggregator\n : userAggregations[aggregator] || aggregations[aggregator]\n\n if (aggregateFn) {\n values[column.id] = aggregateFn(columnValues, rows)\n } else if (aggregator) {\n console.info({ column })\n throw new Error(\n `React Table: Invalid aggregate option for column listed above`\n )\n } else {\n values[column.id] = null\n }\n })\n return values\n }\n\n // Recursively group the data\n const groupRecursively = (rows, depth = 0, parentPath = []) => {\n // This is the last level, just return the rows\n if (depth >= groupBy.length) {\n return rows\n }\n\n const columnID = groupBy[depth]\n\n // Group the rows together for this level\n let groupedRows = groupByFn(rows, columnID)\n\n // Recurse to sub rows before aggregation\n groupedRows = Object.entries(groupedRows).map(\n ([groupByVal, subRows], index) => {\n const path = [...parentPath, `${columnID}:${groupByVal}`]\n\n subRows = groupRecursively(subRows, depth + 1, path)\n\n const values = aggregateRowsToValues(\n subRows,\n depth + 1 >= groupBy.length\n )\n\n const row = {\n isAggregated: true,\n groupByID: columnID,\n groupByVal,\n values,\n subRows,\n depth,\n index,\n path,\n }\n\n return row\n }\n )\n\n return groupedRows\n }\n\n // Assign the new data\n return groupRecursively(rows)\n }, [\n manualGroupBy,\n groupBy,\n debug,\n rows,\n flatColumns,\n userAggregations,\n groupByFn,\n ])\n\n return {\n ...instance,\n toggleGroupBy,\n rows: groupedRows,\n preGroupedRows: rows,\n }\n}\n","const reSplitAlphaNumeric = /([0-9]+)/gm\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nexport const alphanumeric = (rowA, rowB, columnID) => {\n let a = getRowValueByColumnID(rowA, columnID)\n let b = getRowValueByColumnID(rowB, columnID)\n // Force to strings (or \"\" for unsupported types)\n a = toString(a)\n b = toString(b)\n\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n a = a.split(reSplitAlphaNumeric).filter(Boolean)\n b = b.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n let aa = a.shift()\n let bb = b.shift()\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\nexport function datetime(rowA, rowB, columnID) {\n let a = getRowValueByColumnID(rowA, columnID)\n let b = getRowValueByColumnID(rowB, columnID)\n\n a = a.getTime()\n b = b.getTime()\n\n return compareBasic(a, b)\n}\n\nexport function basic(rowA, rowB, columnID) {\n let a = getRowValueByColumnID(rowA, columnID)\n let b = getRowValueByColumnID(rowB, columnID)\n\n return compareBasic(a, b)\n}\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction getRowValueByColumnID(row, columnID) {\n return row.values[columnID]\n}\n\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { ensurePluginOrder, defaultColumn } from '../utils'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\nimport * as sortTypes from '../sortTypes'\nimport {\n mergeProps,\n applyPropHooks,\n getFirstDefined,\n defaultOrderByFn,\n isFunction,\n} from '../utils'\n\ndefaultState.sortBy = []\ndefaultColumn.sortType = 'alphanumeric'\ndefaultColumn.sortDescFirst = false\n\naddActions('sortByChange')\n\nconst propTypes = {\n // General\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n sortType: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n sortDescFirst: PropTypes.bool,\n disableSorting: PropTypes.bool,\n })\n ),\n orderByFn: PropTypes.func,\n sortTypes: PropTypes.object,\n manualSorting: PropTypes.bool,\n disableSorting: PropTypes.bool,\n disableMultiSort: PropTypes.bool,\n isMultiSortEvent: PropTypes.func,\n maxMultiSortColCount: PropTypes.number,\n disableSortRemove: PropTypes.bool,\n disableMultiRemove: PropTypes.bool,\n}\n\nexport const useSortBy = hooks => {\n hooks.useMain.push(useMain)\n // Add custom hooks\n hooks.getSortByToggleProps = []\n}\n\nuseSortBy.pluginName = 'useSortBy'\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useSortBy')\n\n const {\n debug,\n rows,\n flatColumns,\n orderByFn = defaultOrderByFn,\n sortTypes: userSortTypes,\n manualSorting,\n disableSorting,\n disableSortRemove,\n disableMultiRemove,\n disableMultiSort,\n isMultiSortEvent = e => e.shiftKey,\n maxMultiSortColCount = Number.MAX_SAFE_INTEGER,\n flatHeaders,\n state: { sortBy },\n setState,\n plugins,\n } = instance\n\n ensurePluginOrder(plugins, ['useFilters'], 'useSortBy', [])\n\n // Updates sorting based on a columnID, desc flag and multi flag\n const toggleSortBy = (columnID, desc, multi) => {\n return setState(old => {\n const { sortBy } = old\n\n // Find the column for this columnID\n const column = flatColumns.find(d => d.id === columnID)\n const { sortDescFirst } = column\n\n // Find any existing sortBy for this column\n const existingSortBy = sortBy.find(d => d.id === columnID)\n const existingIndex = sortBy.findIndex(d => d.id === columnID)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSortBy = []\n\n // What should we do with this sort action?\n let action\n\n if (!disableMultiSort && multi) {\n if (existingSortBy) {\n action = 'toggle'\n } else {\n action = 'add'\n }\n } else {\n // Normal mode\n if (existingIndex !== sortBy.length - 1) {\n action = 'replace'\n } else if (existingSortBy) {\n action = 'toggle'\n } else {\n action = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sortBy\n if (\n action === 'toggle' && // Must be toggling\n !disableSortRemove && // If disableSortRemove, disable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? !disableMultiRemove : true) && // If multi, don't allow if disableMultiRemove\n ((existingSortBy && // Finally, detect if it should indeed be removed\n (existingSortBy.desc && !sortDescFirst)) ||\n (!existingSortBy.desc && sortDescFirst))\n ) {\n action = 'remove'\n }\n\n if (action === 'replace') {\n newSortBy = [\n {\n id: columnID,\n desc: hasDescDefined ? desc : sortDescFirst,\n },\n ]\n } else if (action === 'add') {\n newSortBy = [\n ...sortBy,\n {\n id: columnID,\n desc: hasDescDefined ? desc : sortDescFirst,\n },\n ]\n // Take latest n columns\n newSortBy.splice(0, newSortBy.length - maxMultiSortColCount)\n } else if (action === 'toggle') {\n // This flips (or sets) the\n newSortBy = sortBy.map(d => {\n if (d.id === columnID) {\n return {\n ...d,\n desc: hasDescDefined ? desc : !existingSortBy.desc,\n }\n }\n return d\n })\n } else if (action === 'remove') {\n newSortBy = sortBy.filter(d => d.id !== columnID)\n }\n\n return {\n ...old,\n sortBy: newSortBy,\n }\n }, actions.sortByChange)\n }\n\n // Add the getSortByToggleProps method to columns and headers\n flatHeaders.forEach(\n // avoid sharing instance in contexts of other functions\n (instance => column => {\n const { accessor, disableSorting: columnDisableSorting, id } = column\n\n const canSort = accessor\n ? getFirstDefined(\n columnDisableSorting === true ? false : undefined,\n disableSorting === true ? false : undefined,\n true\n )\n : false\n\n column.canSort = canSort\n\n if (column.canSort) {\n column.toggleSortBy = (desc, multi) =>\n toggleSortBy(column.id, desc, multi)\n\n column.clearSorting = () => {\n return setState(old => {\n const { sortBy } = old\n const newSortBy = sortBy.filter(d => d.id !== column.id)\n return {\n ...old,\n sortBy: newSortBy,\n }\n }, actions.sortByChange)\n }\n }\n\n const sortByTogglePropsFromHooks = applyPropHooks(\n instance.hooks.getSortByToggleProps,\n column,\n instance\n )\n column.getSortByToggleProps = props => {\n return mergeProps(\n {\n onClick: canSort\n ? e => {\n e.persist()\n column.toggleSortBy(\n undefined,\n !disableMultiSort && isMultiSortEvent(e)\n )\n }\n : undefined,\n style: {\n cursor: canSort ? 'pointer' : undefined,\n },\n title: 'Toggle SortBy',\n },\n sortByTogglePropsFromHooks,\n props\n )\n }\n\n const columnSort = sortBy.find(d => d.id === id)\n column.isSorted = !!columnSort\n column.sortedIndex = sortBy.findIndex(d => d.id === id)\n column.isSortedDesc = column.isSorted ? columnSort.desc : undefined\n })(instance)\n )\n\n const sortedRows = React.useMemo(() => {\n if (manualSorting || !sortBy.length) {\n return rows\n }\n if (process.env.NODE_ENV === 'development' && debug)\n console.time('getSortedRows')\n\n // Filter out sortBys that correspond to non existing columns\n const availableSortBy = sortBy.filter(sort =>\n flatColumns.find(col => col.id === sort.id)\n )\n\n const sortData = rows => {\n // Use the orderByFn to compose multiple sortBy's together.\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = orderByFn(\n rows,\n availableSortBy.map(sort => {\n // Support custom sorting methods for each column\n const column = flatColumns.find(d => d.id === sort.id)\n\n if (!column) {\n throw new Error(\n `React-Table: Could not find a column with id: ${sort.id} while sorting`\n )\n }\n\n const { sortType } = column\n\n // Look up sortBy functions in this order:\n // column function\n // column string lookup on user sortType\n // column string lookup on built-in sortType\n // default function\n // default string lookup on user sortType\n // default string lookup on built-in sortType\n const sortMethod =\n isFunction(sortType) ||\n (userSortTypes || {})[sortType] ||\n sortTypes[sortType]\n\n if (!sortMethod) {\n throw new Error(\n `React-Table: Could not find a valid sortType of '${sortType}' for column '${sort.id}'.`\n )\n }\n\n // Return the correct sortFn.\n // This function should always return in ascending order\n return (a, b) => sortMethod(a, b, sort.id)\n }),\n // Map the directions\n availableSortBy.map(sort => {\n // Detect and use the sortInverted option\n const column = flatColumns.find(d => d.id === sort.id)\n\n if (column && column.sortInverted) {\n return sort.desc\n }\n\n return !sort.desc\n })\n )\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n if (!row.subRows || row.subRows.length <= 1) {\n return\n }\n row.subRows = sortData(row.subRows)\n })\n\n return sortedData\n }\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('getSortedRows')\n\n return sortData(rows)\n }, [\n manualSorting,\n sortBy,\n debug,\n rows,\n flatColumns,\n orderByFn,\n userSortTypes,\n ])\n\n return {\n ...instance,\n toggleSortBy,\n rows: sortedRows,\n preSortedRows: rows,\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\n//\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\nimport { ensurePluginOrder, safeUseLayoutEffect, expandRows } from '../utils'\n\ndefaultState.pageSize = 10\ndefaultState.pageIndex = 0\n\naddActions('pageChange', 'pageSizeChange')\n\nconst propTypes = {\n // General\n manualPagination: PropTypes.bool,\n paginateExpandedRows: PropTypes.bool,\n}\n\nexport const usePagination = hooks => {\n hooks.useMain.push(useMain)\n}\n\nusePagination.pluginName = 'usePagination'\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'usePagination')\n\n const {\n data,\n rows,\n manualPagination,\n disablePageResetOnDataChange,\n manualExpandedKey = 'expanded',\n debug,\n plugins,\n pageCount: userPageCount,\n paginateExpandedRows = true,\n expandSubRows = true,\n state: { pageSize, pageIndex, filters, groupBy, sortBy, expanded },\n setState,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useFilters', 'useGroupBy', 'useSortBy', 'useExpanded'],\n 'usePagination',\n []\n )\n\n const rowDep = manualPagination ? null : data\n\n const isPageIndexMountedRef = React.useRef()\n\n // Bypass any effects from firing when this changes\n const disablePageResetOnDataChangeRef = React.useRef()\n disablePageResetOnDataChangeRef.current = disablePageResetOnDataChange\n\n safeUseLayoutEffect(() => {\n if (\n isPageIndexMountedRef.current &&\n !disablePageResetOnDataChangeRef.current\n ) {\n setState(\n old => ({\n ...old,\n pageIndex: 0,\n }),\n actions.pageChange\n )\n }\n isPageIndexMountedRef.current = true\n }, [setState, rowDep, filters, groupBy, sortBy])\n\n const pageCount = manualPagination\n ? userPageCount\n : Math.ceil(rows.length / pageSize)\n\n const pageOptions = React.useMemo(\n () => (pageCount > 0 ? [...new Array(pageCount)].map((d, i) => i) : []),\n [pageCount]\n )\n\n const page = React.useMemo(() => {\n let page\n\n if (manualPagination) {\n page = rows\n } else {\n if (process.env.NODE_ENV === 'development' && debug)\n console.info('getPage')\n\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n page = rows.slice(pageStart, pageEnd)\n }\n\n if (paginateExpandedRows) {\n return page\n }\n\n return expandRows(page, { manualExpandedKey, expanded, expandSubRows })\n }, [\n debug,\n expandSubRows,\n expanded,\n manualExpandedKey,\n manualPagination,\n pageIndex,\n pageSize,\n paginateExpandedRows,\n rows,\n ])\n\n const canPreviousPage = pageIndex > 0\n const canNextPage = pageCount === -1 || pageIndex < pageCount - 1\n\n const gotoPage = React.useCallback(\n updater => {\n if (process.env.NODE_ENV === 'development' && debug)\n console.info('gotoPage')\n return setState(old => {\n const newPageIndex =\n typeof updater === 'function' ? updater(old.pageIndex) : updater\n\n if (newPageIndex < 0 || newPageIndex > pageCount - 1) {\n return old\n }\n return {\n ...old,\n pageIndex: newPageIndex,\n }\n }, actions.pageChange)\n },\n [debug, pageCount, setState]\n )\n\n const previousPage = React.useCallback(() => {\n return gotoPage(old => old - 1)\n }, [gotoPage])\n\n const nextPage = React.useCallback(() => {\n return gotoPage(old => old + 1)\n }, [gotoPage])\n\n const setPageSize = React.useCallback(\n pageSize => {\n setState(old => {\n const topRowIndex = old.pageSize * old.pageIndex\n const pageIndex = Math.floor(topRowIndex / pageSize)\n return {\n ...old,\n pageIndex,\n pageSize,\n }\n }, actions.pageSizeChange)\n },\n [setState]\n )\n\n return {\n ...instance,\n pageOptions,\n pageCount,\n page,\n canPreviousPage,\n canNextPage,\n gotoPage,\n previousPage,\n nextPage,\n setPageSize,\n pageIndex,\n pageSize,\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport {\n mergeProps,\n applyPropHooks,\n ensurePluginOrder,\n safeUseLayoutEffect,\n} from '../utils'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\n\ndefaultState.selectedRowPaths = []\n\naddActions('toggleRowSelected', 'toggleRowSelectedAll')\n\nconst propTypes = {\n manualRowSelectedKey: PropTypes.string,\n}\n\nexport const useRowSelect = hooks => {\n hooks.getToggleRowSelectedProps = []\n hooks.getToggleAllRowsSelectedProps = []\n hooks.useRows.push(useRows)\n hooks.useMain.push(useMain)\n}\n\nuseRowSelect.pluginName = 'useRowSelect'\n\nfunction useRows(rows, instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useRowSelect')\n\n const {\n state: { selectedRowPaths },\n } = instance\n\n instance.selectedFlatRows = React.useMemo(() => {\n const selectedFlatRows = []\n rows.forEach(row => {\n if (row.isAggregated) {\n const subRowPaths = row.subRows.map(row => row.path)\n row.isSelected = subRowPaths.every(path =>\n selectedRowPaths.includes(path.join('.'))\n )\n } else {\n row.isSelected = selectedRowPaths.includes(row.path.join('.'))\n }\n if (row.isSelected) {\n selectedFlatRows.push(row)\n }\n })\n\n return selectedFlatRows\n }, [rows, selectedRowPaths])\n\n return rows\n}\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useRowSelect')\n\n const {\n hooks,\n manualRowSelectedKey = 'isSelected',\n disableSelectedRowsResetOnDataChange,\n plugins,\n flatRows,\n data,\n state: { selectedRowPaths },\n setState,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useFilters', 'useGroupBy', 'useSortBy'],\n 'useRowSelect',\n []\n )\n\n const flatRowPaths = flatRows.map(d => d.path.join('.'))\n\n let isAllRowsSelected = !!flatRowPaths.length && !!selectedRowPaths.length\n\n if (isAllRowsSelected) {\n if (flatRowPaths.some(d => !selectedRowPaths.includes(d))) {\n isAllRowsSelected = false\n }\n }\n\n const isRowSelectedMountedRef = React.useRef()\n\n // Bypass any effects from firing when this changes\n const disableSelectedRowsResetOnDataChangeRef = React.useRef()\n disableSelectedRowsResetOnDataChangeRef.current = disableSelectedRowsResetOnDataChange\n\n safeUseLayoutEffect(() => {\n if (\n isRowSelectedMountedRef.current &&\n !disableSelectedRowsResetOnDataChangeRef.current\n ) {\n setState(\n old => ({\n ...old,\n selectedRowPaths: [],\n }),\n actions.pageChange\n )\n }\n isRowSelectedMountedRef.current = true\n }, [setState, data])\n\n const toggleRowSelectedAll = set => {\n setState(old => {\n const selectAll = typeof set !== 'undefined' ? set : !isAllRowsSelected\n return {\n ...old,\n selectedRowPaths: selectAll ? flatRowPaths : [],\n }\n }, actions.toggleRowSelectedAll)\n }\n\n const updateParentRow = (selectedRowPaths, path) => {\n const parentPath = path.slice(0, path.length - 1)\n const parentKey = parentPath.join('.')\n const selected =\n flatRowPaths.filter(rowPath => {\n const path = rowPath\n return (\n path !== parentKey &&\n path.startsWith(parentKey) &&\n !selectedRowPaths.has(path)\n )\n }).length === 0\n if (selected) {\n selectedRowPaths.add(parentKey)\n } else {\n selectedRowPaths.delete(parentKey)\n }\n if (parentPath.length > 1) updateParentRow(selectedRowPaths, parentPath)\n }\n\n const toggleRowSelected = (path, set) => {\n const key = path.join('.')\n const childRowPrefixKey = [key, '.'].join('')\n\n return setState(old => {\n // Join the paths of deep rows\n // to make a key, then manage all of the keys\n // in a flat object\n const exists = old.selectedRowPaths.includes(key)\n const shouldExist = typeof set !== 'undefined' ? set : !exists\n let newSelectedRows = new Set(old.selectedRowPaths)\n\n if (!exists && shouldExist) {\n flatRowPaths.forEach(rowPath => {\n if (rowPath === key || rowPath.startsWith(childRowPrefixKey)) {\n newSelectedRows.add(rowPath)\n }\n })\n } else if (exists && !shouldExist) {\n flatRowPaths.forEach(rowPath => {\n if (rowPath === key || rowPath.startsWith(childRowPrefixKey)) {\n newSelectedRows.delete(rowPath)\n }\n })\n } else {\n return old\n }\n\n // If the row is a subRow update\n // its parent row to reflect changes\n if (path.length > 1) updateParentRow(newSelectedRows, path)\n\n return {\n ...old,\n selectedRowPaths: [...newSelectedRows.values()],\n }\n }, actions.toggleRowSelected)\n }\n\n const toggleAllRowsSelectedPropsFromHooks = applyPropHooks(\n instance.hooks.getToggleAllRowsSelectedProps,\n instance\n )\n const getToggleAllRowsSelectedProps = props => {\n return mergeProps(\n {\n onChange: e => {\n toggleRowSelectedAll(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: isAllRowsSelected,\n title: 'Toggle All Rows Selected',\n },\n toggleAllRowsSelectedPropsFromHooks,\n props\n )\n }\n\n hooks.prepareRow.push((row, instance) => {\n const toggleRowSelectedPropsFromHooks = applyPropHooks(\n instance.hooks.getToggleRowSelectedProps,\n row,\n instance\n )\n // Aggregate rows have entirely different select logic\n if (row.isAggregated) {\n const subRowPaths = row.subRows.map(row => row.path)\n row.toggleRowSelected = set => {\n set = typeof set !== 'undefined' ? set : !row.isSelected\n subRowPaths.forEach(path => {\n toggleRowSelected(path, set)\n })\n }\n row.getToggleRowSelectedProps = props => {\n let checked = false\n\n if (row.original && row.original[manualRowSelectedKey]) {\n checked = true\n } else {\n checked = row.isSelected\n }\n\n return mergeProps(\n {\n onChange: e => {\n row.toggleRowSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked,\n title: 'Toggle Row Selected',\n },\n toggleRowSelectedPropsFromHooks,\n props\n )\n }\n } else {\n row.toggleRowSelected = set => toggleRowSelected(row.path, set)\n row.getToggleRowSelectedProps = props => {\n let checked = false\n\n if (row.original && row.original[manualRowSelectedKey]) {\n checked = true\n } else {\n checked = row.isSelected\n }\n\n return mergeProps(\n {\n onChange: e => {\n row.toggleRowSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked,\n title: 'Toggle Row Selected',\n },\n toggleRowSelectedPropsFromHooks,\n props\n )\n }\n }\n\n return row\n })\n\n return {\n ...instance,\n toggleRowSelected,\n toggleRowSelectedAll,\n getToggleAllRowsSelectedProps,\n isAllRowsSelected,\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\n\ndefaultState.rowState = {}\n\naddActions('setRowState', 'setCellState')\n\nconst propTypes = {\n initialRowStateAccessor: PropTypes.func,\n}\n\nexport const useRowState = hooks => {\n hooks.useMain.push(useMain)\n}\n\nuseRowState.pluginName = 'useRowState'\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useRowState')\n\n const {\n hooks,\n rows,\n initialRowStateAccessor,\n state: { rowState },\n setState,\n } = instance\n\n const setRowState = React.useCallback(\n (path, updater, action = actions.setRowState) => {\n const pathKey = path.join('.')\n return setState(old => {\n return {\n ...old,\n rowState: {\n ...old.rowState,\n [pathKey]:\n typeof updater === 'function'\n ? updater(old.rowState[pathKey])\n : updater,\n },\n }\n }, action)\n },\n [setState]\n )\n\n const setCellState = React.useCallback(\n (rowPath, columnID, updater) => {\n return setRowState(\n rowPath,\n old => {\n return {\n ...old,\n cellState: {\n ...old.cellState,\n [columnID]:\n typeof updater === 'function'\n ? updater(old.cellState[columnID])\n : updater,\n },\n }\n },\n actions.setCellState\n )\n },\n [setRowState]\n )\n\n const rowsMountedRef = React.useRef()\n\n // When data changes, reset row and cell state\n React.useEffect(() => {\n if (rowsMountedRef.current) {\n setState(old => {\n return {\n ...old,\n rowState: {},\n }\n }, actions.setRowState)\n }\n\n rowsMountedRef.current = true\n }, [rows, setState])\n\n hooks.prepareRow.push(row => {\n const pathKey = row.path.join('.')\n\n if (row.original) {\n row.state =\n (typeof rowState[pathKey] !== 'undefined'\n ? rowState[pathKey]\n : initialRowStateAccessor && initialRowStateAccessor(row)) || {}\n\n row.setState = updater => {\n return setRowState(row.path, updater)\n }\n\n row.cells.forEach(cell => {\n cell.state = row.state.cellState || {}\n\n cell.setState = updater => {\n return setCellState(row.path, cell.column.id, updater)\n }\n })\n }\n\n return row\n })\n\n return {\n ...instance,\n setRowState,\n setCellState,\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\n\ndefaultState.columnOrder = []\n\naddActions('setColumnOrder')\n\nconst propTypes = {\n initialRowStateAccessor: PropTypes.func,\n}\n\nexport const useColumnOrder = hooks => {\n hooks.columnsBeforeHeaderGroupsDeps.push((deps, instance) => {\n return [...deps, instance.state.columnOrder]\n })\n hooks.columnsBeforeHeaderGroups.push(columnsBeforeHeaderGroups)\n hooks.useMain.push(useMain)\n}\n\nuseColumnOrder.pluginName = 'useColumnOrder'\n\nfunction columnsBeforeHeaderGroups(columns, instance) {\n const {\n state: { columnOrder },\n } = instance\n\n // If there is no order, return the normal columns\n if (!columnOrder || !columnOrder.length) {\n return columns\n }\n\n const columnOrderCopy = [...columnOrder]\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns]\n\n // And make a new ordered array of the columns\n const columnsInOrder = []\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnID = columnOrderCopy.shift()\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnID)\n if (foundIndex > -1) {\n columnsInOrder.push(columnsCopy.splice(foundIndex, 1)[0])\n }\n }\n\n // If there are any columns left, add them to the end\n return [...columnsInOrder, ...columnsCopy]\n}\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useColumnOrder')\n\n const { setState } = instance\n\n const setColumnOrder = React.useCallback(\n updater => {\n return setState(old => {\n return {\n ...old,\n columnOrder:\n typeof updater === 'function' ? updater(old.columnOrder) : updater,\n }\n }, actions.setColumnOrder)\n },\n [setState]\n )\n\n return {\n ...instance,\n setColumnOrder,\n }\n}\n","import PropTypes from 'prop-types'\n\n//\n\nimport { defaultState } from '../hooks/useTable'\nimport { defaultColumn, getFirstDefined } from '../utils'\nimport { mergeProps, applyPropHooks } from '../utils'\n\ndefaultState.columnResizing = {\n columnWidths: {},\n}\n\ndefaultColumn.canResize = true\n\nconst propTypes = {}\n\nexport const useResizeColumns = hooks => {\n hooks.getResizerProps = []\n hooks.useBeforeDimensions.push(useBeforeDimensions)\n}\n\nuseResizeColumns.pluginName = 'useResizeColumns'\n\nconst useBeforeDimensions = instance => {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useResizeColumns')\n\n const {\n flatHeaders,\n disableResizing,\n hooks: { getHeaderProps },\n state: { columnResizing },\n setState,\n } = instance\n\n getHeaderProps.push(() => {\n return {\n style: {\n position: 'relative',\n },\n }\n })\n\n const onMouseDown = (e, header) => {\n const headersToResize = getLeafHeaders(header)\n const startWidths = headersToResize.map(header => header.totalWidth)\n const startX = e.clientX\n\n const onMouseMove = e => {\n const currentX = e.clientX\n const deltaX = currentX - startX\n\n const percentageDeltaX = deltaX / headersToResize.length\n\n const newColumnWidths = {}\n headersToResize.forEach((header, index) => {\n newColumnWidths[header.id] = Math.max(\n startWidths[index] + percentageDeltaX,\n 0\n )\n })\n\n setState(old => ({\n ...old,\n columnResizing: {\n ...old.columnResizing,\n columnWidths: {\n ...old.columnResizing.columnWidths,\n ...newColumnWidths,\n },\n },\n }))\n }\n\n const onMouseUp = e => {\n document.removeEventListener('mousemove', onMouseMove)\n document.removeEventListener('mouseup', onMouseUp)\n\n setState(old => ({\n ...old,\n columnResizing: {\n ...old.columnResizing,\n startX: null,\n isResizingColumn: null,\n },\n }))\n }\n\n document.addEventListener('mousemove', onMouseMove)\n document.addEventListener('mouseup', onMouseUp)\n\n setState(old => ({\n ...old,\n columnResizing: {\n ...old.columnResizing,\n startX,\n isResizingColumn: header.id,\n },\n }))\n }\n\n flatHeaders.forEach(\n (instance => header => {\n const canResize = getFirstDefined(\n header.disableResizing === true ? false : undefined,\n disableResizing === true ? false : undefined,\n true\n )\n\n header.canResize = canResize\n header.width = columnResizing.columnWidths[header.id] || header.width\n header.isResizing = columnResizing.isResizingColumn === header.id\n\n if (canResize) {\n const resizerPropsFromHooks = applyPropHooks(\n instance.hooks.getResizerProps,\n header,\n instance\n )\n header.getResizerProps = userProps => {\n return mergeProps(\n {\n onMouseDown: e => e.persist() || onMouseDown(e, header),\n style: {\n cursor: 'ew-resize',\n },\n draggable: false,\n },\n resizerPropsFromHooks,\n userProps\n )\n }\n }\n })(instance)\n )\n\n return instance\n}\n\nfunction getLeafHeaders(header) {\n const leafHeaders = []\n const recurseHeader = header => {\n if (header.columns && header.columns.length) {\n header.columns.map(recurseHeader)\n }\n leafHeaders.push(header)\n }\n recurseHeader(header)\n return leafHeaders\n}\n","import PropTypes from 'prop-types'\n\nconst propTypes = {}\n\nexport const useAbsoluteLayout = hooks => {\n hooks.useMain.push(useMain)\n}\n\nuseAbsoluteLayout.pluginName = 'useAbsoluteLayout'\n\nconst useMain = instance => {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useAbsoluteLayout')\n\n const {\n totalColumnsWidth,\n hooks: {\n getRowProps,\n getTableBodyProps,\n getHeaderGroupProps,\n getHeaderProps,\n getCellProps,\n },\n } = instance\n\n const rowStyles = {\n style: {\n position: 'relative',\n width: `${totalColumnsWidth}px`,\n },\n }\n\n getTableBodyProps.push(() => rowStyles)\n getRowProps.push(() => rowStyles)\n getHeaderGroupProps.push(() => rowStyles)\n\n // Calculating column/cells widths\n const cellStyles = {\n position: 'absolute',\n top: 0,\n }\n\n getHeaderProps.push(header => {\n return {\n style: {\n ...cellStyles,\n left: `${header.totalLeft}px`,\n width: `${header.totalWidth}px`,\n },\n }\n })\n\n getCellProps.push(cell => {\n return {\n style: {\n ...cellStyles,\n left: `${cell.column.totalLeft}px`,\n width: `${cell.column.totalWidth}px`,\n },\n }\n })\n\n return instance\n}\n","import PropTypes from 'prop-types'\n\nconst propTypes = {}\n\nexport const useBlockLayout = hooks => {\n hooks.useMain.push(useMain)\n}\n\nuseBlockLayout.pluginName = 'useBlockLayout'\n\nconst useMain = instance => {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useBlockLayout')\n\n const {\n totalColumnsWidth,\n hooks: { getRowProps, getHeaderGroupProps, getHeaderProps, getCellProps },\n } = instance\n\n const rowStyles = {\n style: {\n display: 'flex',\n width: `${totalColumnsWidth}px`,\n },\n }\n\n getRowProps.push(() => rowStyles)\n getHeaderGroupProps.push(() => rowStyles)\n\n const cellStyles = {\n display: 'inline-block',\n boxSizing: 'border-box',\n }\n\n getHeaderProps.push(header => {\n return {\n style: {\n ...cellStyles,\n width: `${header.totalWidth}px`,\n },\n }\n })\n\n getCellProps.push(cell => {\n return {\n style: {\n ...cellStyles,\n width: `${cell.column.totalWidth}px`,\n },\n }\n })\n\n return instance\n}\n"],"names":["defaultColumn","Cell","cell","value","String","show","width","minWidth","maxWidth","Number","MAX_SAFE_INTEGER","safeUseLayoutEffect","window","process","env","NODE_ENV","React","useLayoutEffect","useEffect","findMaxDepth","columns","depth","reduce","prev","curr","Math","max","decorateColumn","column","userDefaultColumn","parent","index","id","accessor","Header","accessorPath","split","row","getBy","console","error","Error","decorateColumnTree","map","columnIndex","makeHeaderGroups","flatColumns","headerGroups","buildGroup","headerGroup","headers","parentColumns","hasParents","some","col","forEach","isFirst","length","latestParentColumn","reverse","similarParentColumns","filter","d","originalID","push","join","placeholderColumn","placeholderOf","includes","totalHeaderCount","sum","header","determineHeaderVisibility","instance","handleColumn","parentVisible","isVisible","totalVisibleHeaderCount","subColumn","subHeader","obj","path","def","pathObj","makePathArray","val","cursor","pathPart","e","defaultOrderByFn","arr","funcs","dirs","sort","rowA","rowB","i","sortFn","desc","sortInt","getFirstDefined","args","defaultGroupByFn","rows","columnID","resKey","values","Array","isArray","getElementDimensions","element","rect","getBoundingClientRect","style","getComputedStyle","margins","left","parseInt","marginLeft","right","marginRight","padding","paddingLeft","paddingRight","ceil","outerWidth","scrollWidth","flexRender","Comp","props","isReactComponent","isClassComponent","component","proto","Object","getPrototypeOf","prototype","isFunctionComponent","mergeProps","groups","className","rest","Boolean","applyHooks","hooks","initial","next","nextValue","applyPropHooks","warnUnknownProps","keys","JSON","stringify","isFunction","a","flattenBy","childKey","recurse","ensurePluginOrder","plugins","befores","pluginName","afters","pluginIndex","findIndex","plugin","before","beforeIndex","after","afterIndex","expandRows","manualExpandedKey","expanded","expandSubRows","expandedRows","handleRow","key","isExpanded","original","canExpand","subRows","flattenDeep","replace","newArr","propTypes","data","PropTypes","array","isRequired","arrayOf","object","getSubRows","func","getRowID","debug","bool","renderErr","defaultState","defaultInitialState","defaultColumnInstance","defaultReducer","old","newState","defaultGetSubRows","defaultGetRowID","useTable","checkPropTypes","userColumns","initialState","userState","state","reducer","useState","originalState","originalSetState","useMemo","setState","useCallback","updater","type","instanceRef","useRef","assign","current","columnsBeforeHeaderGroups","columnsBeforeHeaderGroupsDeps","useBeforeDimensions","useMain","useRows","prepareRow","getTableProps","getTableBodyProps","getRowProps","getHeaderGroupProps","getHeaderProps","getCellProps","time","timeEnd","newColumns","flatRows","accessRow","originalRow","parentPath","rowID","cells","unpreparedAccessWarning","undefined","accessedData","flatHeaders","all","calculateDimensions","render","userProps","colSpan","columnPathStr","totalColumnsWidth","calculateHeaderWidths","sumTotalWidth","subHeaders","totalLeft","totalWidth","min","actions","addActions","acts","action","types","string","paginateExpandedRows","useExpanded","getExpandedToggleProps","toggleExpandedByPath","set","exists","shouldExist","newExpanded","Set","add","delete","toggleExpanded","propsFromHooks","onClick","persist","title","info","expandedDepth","findExpandedDepth","maxDepth","text","filterValue","rowValue","toLowerCase","autoRemove","exactText","exactTextCase","includesAll","every","exact","equals","between","Infinity","temp","filters","shape","disableFilters","Filter","any","manualFilters","useFilters","userFilterTypes","filterTypes","preFilteredRows","preFilteredFlatRows","setFilter","find","filterMethod","getFilterMethod","newFilter","shouldAutoRemove","remove","newFilters","setAllFilters","columnDisableFilters","canFilter","filteredRows","filteredFlatRows","filterRows","entries","filteredSoFar","warn","nonFilteredColumns","average","round","median","uniqueCount","size","count","groupBy","aggregate","oneOfType","disableGrouping","Aggregated","groupByFn","manualGrouping","aggregations","useGroupBy","getGroupByToggleProps","deps","groupByColumns","g","nonGroupByColumns","groupByBoundaryColumnIndex","groupByBoundary","slice","manualGroupBy","userAggregations","columnDisableGrouping","isGrouped","groupedIndex","indexOf","canGroupBy","toggleGroupBy","toggle","resolvedToggle","groupByTogglePropsFromHooks","groupByID","isRepeatedValue","isAggregated","groupedRows","aggregateRowsToValues","isSourceRows","columnValues","aggregator","aggregateFn","groupRecursively","groupByVal","preGroupedRows","reSplitAlphaNumeric","alphanumeric","getRowValueByColumnID","b","toString","aa","shift","bb","an","bn","combo","isNaN","datetime","getTime","compareBasic","basic","sortBy","sortType","sortDescFirst","disableSorting","orderByFn","sortTypes","manualSorting","disableMultiSort","isMultiSortEvent","maxMultiSortColCount","number","disableSortRemove","disableMultiRemove","useSortBy","getSortByToggleProps","userSortTypes","shiftKey","toggleSortBy","multi","existingSortBy","existingIndex","hasDescDefined","newSortBy","splice","sortByChange","columnDisableSorting","canSort","clearSorting","sortByTogglePropsFromHooks","columnSort","isSorted","sortedIndex","isSortedDesc","sortedRows","availableSortBy","sortData","sortedData","sortMethod","sortInverted","preSortedRows","pageSize","pageIndex","manualPagination","usePagination","disablePageResetOnDataChange","userPageCount","pageCount","rowDep","isPageIndexMountedRef","disablePageResetOnDataChangeRef","pageChange","pageOptions","page","pageStart","pageEnd","canPreviousPage","canNextPage","gotoPage","newPageIndex","previousPage","nextPage","setPageSize","topRowIndex","floor","pageSizeChange","selectedRowPaths","manualRowSelectedKey","useRowSelect","getToggleRowSelectedProps","getToggleAllRowsSelectedProps","selectedFlatRows","subRowPaths","isSelected","disableSelectedRowsResetOnDataChange","flatRowPaths","isAllRowsSelected","isRowSelectedMountedRef","disableSelectedRowsResetOnDataChangeRef","toggleRowSelectedAll","selectAll","updateParentRow","parentKey","selected","rowPath","startsWith","has","toggleRowSelected","childRowPrefixKey","newSelectedRows","toggleAllRowsSelectedPropsFromHooks","onChange","target","checked","toggleRowSelectedPropsFromHooks","rowState","initialRowStateAccessor","useRowState","setRowState","pathKey","setCellState","cellState","rowsMountedRef","columnOrder","useColumnOrder","columnOrderCopy","columnsCopy","columnsInOrder","targetColumnID","foundIndex","setColumnOrder","columnResizing","columnWidths","canResize","useResizeColumns","getResizerProps","disableResizing","position","onMouseDown","headersToResize","getLeafHeaders","startWidths","startX","clientX","onMouseMove","currentX","deltaX","percentageDeltaX","newColumnWidths","onMouseUp","document","removeEventListener","isResizingColumn","addEventListener","isResizing","resizerPropsFromHooks","draggable","leafHeaders","recurseHeader","useAbsoluteLayout","rowStyles","cellStyles","top","useBlockLayout","display","boxSizing"],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js new file mode 100644 index 0000000000..6858fbea5f --- /dev/null +++ b/dist/index.js @@ -0,0 +1,2450 @@ +'use strict' +function _interopDefault(e) { + return e && 'object' == typeof e && 'default' in e ? e.default : e +} +Object.defineProperty(exports, '__esModule', { value: !0 }) +var React = require('react'), + React__default = _interopDefault(React), + PropTypes = _interopDefault(require('prop-types')) +function _defineProperty(e, t, r) { + return ( + t in e + ? Object.defineProperty(e, t, { + value: r, + enumerable: !0, + configurable: !0, + writable: !0, + }) + : (e[t] = r), + e + ) +} +function ownKeys(e, t) { + var r = Object.keys(e) + if (Object.getOwnPropertySymbols) { + var o = Object.getOwnPropertySymbols(e) + t && + (o = o.filter(function(t) { + return Object.getOwnPropertyDescriptor(e, t).enumerable + })), + r.push.apply(r, o) + } + return r +} +function _objectSpread2(e) { + for (var t = 1; t < arguments.length; t++) { + var r = null != arguments[t] ? arguments[t] : {} + t % 2 + ? ownKeys(r, !0).forEach(function(t) { + _defineProperty(e, t, r[t]) + }) + : Object.getOwnPropertyDescriptors + ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) + : ownKeys(r).forEach(function(t) { + Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(r, t)) + }) + } + return e +} +function _objectWithoutPropertiesLoose(e, t) { + if (null == e) return {} + var r, + o, + n = {}, + u = Object.keys(e) + for (o = 0; o < u.length; o++) (r = u[o]), t.indexOf(r) >= 0 || (n[r] = e[r]) + return n +} +function _objectWithoutProperties(e, t) { + if (null == e) return {} + var r, + o, + n = _objectWithoutPropertiesLoose(e, t) + if (Object.getOwnPropertySymbols) { + var u = Object.getOwnPropertySymbols(e) + for (o = 0; o < u.length; o++) + (r = u[o]), + t.indexOf(r) >= 0 || + (Object.prototype.propertyIsEnumerable.call(e, r) && (n[r] = e[r])) + } + return n +} +function _slicedToArray(e, t) { + return _arrayWithHoles(e) || _iterableToArrayLimit(e, t) || _nonIterableRest() +} +function _toConsumableArray(e) { + return _arrayWithoutHoles(e) || _iterableToArray(e) || _nonIterableSpread() +} +function _arrayWithoutHoles(e) { + if (Array.isArray(e)) { + for (var t = 0, r = new Array(e.length); t < e.length; t++) r[t] = e[t] + return r + } +} +function _arrayWithHoles(e) { + if (Array.isArray(e)) return e +} +function _iterableToArray(e) { + if ( + Symbol.iterator in Object(e) || + '[object Arguments]' === Object.prototype.toString.call(e) + ) + return Array.from(e) +} +function _iterableToArrayLimit(e, t) { + if ( + Symbol.iterator in Object(e) || + '[object Arguments]' === Object.prototype.toString.call(e) + ) { + var r = [], + o = !0, + n = !1, + u = void 0 + try { + for ( + var a, s = e[Symbol.iterator](); + !(o = (a = s.next()).done) && (r.push(a.value), !t || r.length !== t); + o = !0 + ); + } catch (e) { + ;(n = !0), (u = e) + } finally { + try { + o || null == s.return || s.return() + } finally { + if (n) throw u + } + } + return r + } +} +function _nonIterableSpread() { + throw new TypeError('Invalid attempt to spread non-iterable instance') +} +function _nonIterableRest() { + throw new TypeError('Invalid attempt to destructure non-iterable instance') +} +function _toPrimitive(e, t) { + if ('object' != typeof e || null === e) return e + var r = e[Symbol.toPrimitive] + if (void 0 !== r) { + var o = r.call(e, t || 'default') + if ('object' != typeof o) return o + throw new TypeError('@@toPrimitive must return a primitive value.') + } + return ('string' === t ? String : Number)(e) +} +function _toPropertyKey(e) { + var t = _toPrimitive(e, 'string') + return 'symbol' == typeof t ? t : String(t) +} +var defaultColumn = { + Cell: function(e) { + var t = e.cell.value + return String(void 0 === t ? '' : t) + }, + show: !0, + width: 150, + minWidth: 0, + maxWidth: Number.MAX_SAFE_INTEGER, + }, + safeUseLayoutEffect = + 'undefined' != typeof window && 'production' === process.env.NODE_ENV + ? React__default.useLayoutEffect + : React__default.useEffect +function findMaxDepth(e) { + var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0 + return e.reduce(function(e, r) { + return r.columns ? Math.max(e, findMaxDepth(r.columns, t + 1)) : t + }, 0) +} +function decorateColumn(e, t, r, o, n) { + var u = (e = _objectSpread2({}, defaultColumn, {}, t, {}, e)), + a = u.id, + s = u.accessor, + i = u.Header + if ('string' == typeof s) { + a = a || s + var c = s.split('.') + s = function(e) { + return getBy(e, c) + } + } + if ((!a && 'string' == typeof i && i && (a = i), !a && e.columns)) + throw (console.error(e), + new Error('A column ID (or unique "Header" value) is required!')) + if (!a) + throw (console.error(e), + new Error('A column ID (or string accessor) is required!')) + return (e = _objectSpread2( + { + Header: function() { + return React__default.createElement(React__default.Fragment, null, ' ') + }, + }, + e, + { id: a, accessor: s, parent: r, depth: o, index: n } + )) +} +function decorateColumnTree(e, t, r) { + var o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0 + return e.map(function(e, n) { + return ( + (e = decorateColumn(e, t, r, o, n)).columns && + (e.columns = decorateColumnTree(e.columns, t, e, o + 1)), + e + ) + }) +} +function makeHeaderGroups(e, t) { + var r = [] + return ( + (function e(o, n) { + var u = { headers: [] }, + a = [], + s = o.some(function(e) { + return e.parent + }) + o.forEach(function(e) { + var r = !a.length, + o = [].concat(a).reverse()[0] + if (e.parent) { + var n = a.filter(function(t) { + return t.originalID === e.parent.id + }) + ;(r || o.originalID !== e.parent.id) && + a.push( + _objectSpread2({}, e.parent, { + originalID: e.parent.id, + id: [e.parent.id, n.length].join('_'), + }) + ) + } else if (s) { + var i = [e.id, 'placeholder'].join('_'), + c = a.filter(function(e) { + return e.originalID === i + }), + l = decorateColumn( + { + originalID: i, + id: [e.id, 'placeholder', c.length].join('_'), + placeholderOf: e, + }, + t + ) + ;(r || o.originalID !== l.originalID) && a.push(l) + } + ;(e.parent || s) && + (((o = [].concat(a).reverse()[0]).headers = o.headers || []), + o.headers.includes(e) || o.headers.push(e)), + (e.totalHeaderCount = e.headers + ? e.headers.reduce(function(e, t) { + return e + t.totalHeaderCount + }, 0) + : 1), + u.headers.push(e) + }), + r.push(u), + a.length && e(a, n + 1) + })(e, 0), + r.reverse() + ) +} +function determineHeaderVisibility(e) { + var t = e.headers, + r = 0 + t.forEach(function(t) { + return (r += (function t(r, o) { + r.isVisible = !!o && ('function' == typeof r.show ? r.show(e) : !!r.show) + var n = 0 + return ( + r.headers && r.headers.length + ? r.headers.forEach(function(e) { + return (n += t(e, r.isVisible)) + }) + : (n = r.isVisible ? 1 : 0), + (r.totalVisibleHeaderCount = n), + n + ) + })(t, !0)) + }) +} +function getBy(e, t, r) { + if (!t) return e + var o, + n = makePathArray(t) + try { + o = n.reduce(function(e, t) { + return e[t] + }, e) + } catch (e) {} + return void 0 !== o ? o : r +} +function defaultOrderByFn(e, t, r) { + return _toConsumableArray(e).sort(function(e, o) { + for (var n = 0; n < t.length; n += 1) { + var u = t[n], + a = !1 === r[n] || 'desc' === r[n], + s = u(e, o) + if (0 !== s) return a ? -s : s + } + return r[0] ? e.index - o.index : o.index - e.index + }) +} +function getFirstDefined() { + for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) + t[r] = arguments[r] + for (var o = 0; o < t.length; o += 1) if (void 0 !== t[o]) return t[o] +} +function defaultGroupByFn(e, t) { + return e.reduce(function(e, r, o) { + var n = ''.concat(r.values[t]) + return (e[n] = Array.isArray(e[n]) ? e[n] : []), e[n].push(r), e + }, {}) +} +function getElementDimensions(e) { + var t = e.getBoundingClientRect(), + r = window.getComputedStyle(e), + o = { left: parseInt(r.marginLeft), right: parseInt(r.marginRight) }, + n = { left: parseInt(r.paddingLeft), right: parseInt(r.paddingRight) } + return { + left: Math.ceil(t.left), + width: Math.ceil(t.width), + outerWidth: Math.ceil(t.width + o.left + o.right + n.left + n.right), + marginLeft: o.left, + marginRight: o.right, + paddingLeft: n.left, + paddingRight: n.right, + scrollWidth: e.scrollWidth, + } +} +function flexRender(e, t) { + return isReactComponent(e) ? React__default.createElement(e, t) : e +} +function isClassComponent(e) { + return ( + 'function' == typeof e && + !( + !(t = Object.getPrototypeOf(e)).prototype || !t.prototype.isReactComponent + ) + ) + var t +} +function isFunctionComponent(e) { + return 'function' == typeof e +} +function isReactComponent(e) { + return isClassComponent(e) || isFunctionComponent(e) +} +var mergeProps = function() { + for (var e = {}, t = arguments.length, r = new Array(t), o = 0; o < t; o++) + r[o] = arguments[o] + return ( + r.forEach(function() { + var t = + arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, + r = t.style, + o = void 0 === r ? {} : r, + n = t.className, + u = _objectWithoutProperties(t, ['style', 'className']) + e = _objectSpread2({}, e, {}, u, { + style: _objectSpread2({}, e.style || {}, {}, o), + className: [e.className, n].filter(Boolean).join(' '), + }) + }), + e + ) + }, + applyHooks = function(e, t) { + for ( + var r = arguments.length, o = new Array(r > 2 ? r - 2 : 0), n = 2; + n < r; + n++ + ) + o[n - 2] = arguments[n] + return e.reduce(function(e, t) { + var r = t.apply(void 0, [e].concat(o)) + if (void 0 === r) + throw new Error( + 'React Table: A hook just returned undefined! This is not allowed.' + ) + return r + }, t) + }, + applyPropHooks = function(e) { + for ( + var t = arguments.length, r = new Array(t > 1 ? t - 1 : 0), o = 1; + o < t; + o++ + ) + r[o - 1] = arguments[o] + return e.reduce(function(e, t) { + return mergeProps(e, t.apply(void 0, r)) + }, {}) + }, + warnUnknownProps = function(e) { + if (Object.keys(e).length) + throw new Error( + 'Unknown options passed to useReactTable:\n\n'.concat( + JSON.stringify(e, null, 2) + ) + ) + } +function sum(e) { + return e.reduce(function(e, t) { + return e + t + }, 0) +} +function isFunction(e) { + if ('function' == typeof e) return e +} +function flattenBy(e, t) { + var r = [] + return ( + (function e(o) { + o.forEach(function(o) { + o[t] ? e(o[t]) : r.push(o) + }) + })(e), + r + ) +} +function ensurePluginOrder(e, t, r, o) { + var n = e.findIndex(function(e) { + return e.pluginName === r + }) + if (-1 === n) + throw new Error( + 'The plugin ' + .concat( + r, + " was not found in the plugin list!\nThis usually means you need to need to name your plugin hook by setting the 'pluginName' property of the hook function, eg:\n\n " + ) + .concat(r, ".pluginName = '") + .concat(r, "'\n") + ) + t.forEach(function(t) { + var o = e.findIndex(function(e) { + return e.pluginName === t + }) + if (o > -1 && o > n) + throw new Error( + 'React Table: The ' + .concat(r, ' plugin hook must be placed after the ') + .concat(t, ' plugin hook!') + ) + }), + o.forEach(function(t) { + var o = e.findIndex(function(e) { + return e.pluginName === t + }) + if (o > -1 && o < n) + throw new Error( + 'React Table: The ' + .concat(r, ' plugin hook must be placed before the ') + .concat(t, ' plugin hook!') + ) + }) +} +function expandRows(e, t) { + var r = t.manualExpandedKey, + o = t.expanded, + n = t.expandSubRows, + u = void 0 === n || n, + a = [] + return ( + e.forEach(function e(t) { + var n = t.path.join('.') + ;(t.isExpanded = (t.original && t.original[r]) || o.includes(n)), + (t.canExpand = t.subRows && !!t.subRows.length), + a.push(t), + u && + t.subRows && + t.subRows.length && + t.isExpanded && + t.subRows.forEach(e) + }), + a + ) +} +function makePathArray(e) { + return flattenDeep(e) + .map(function(e) { + return String(e).replace('.', '_') + }) + .join('.') + .replace(/\[/g, '.') + .replace(/\]/g, '') + .split('.') +} +function flattenDeep(e) { + var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [] + if (Array.isArray(e)) + for (var r = 0; r < e.length; r += 1) flattenDeep(e[r], t) + else t.push(e) + return t +} +var utils = Object.freeze({ + defaultColumn: defaultColumn, + safeUseLayoutEffect: safeUseLayoutEffect, + findMaxDepth: findMaxDepth, + decorateColumn: decorateColumn, + decorateColumnTree: decorateColumnTree, + makeHeaderGroups: makeHeaderGroups, + determineHeaderVisibility: determineHeaderVisibility, + getBy: getBy, + defaultOrderByFn: defaultOrderByFn, + getFirstDefined: getFirstDefined, + defaultGroupByFn: defaultGroupByFn, + getElementDimensions: getElementDimensions, + flexRender: flexRender, + mergeProps: mergeProps, + applyHooks: applyHooks, + applyPropHooks: applyPropHooks, + warnUnknownProps: warnUnknownProps, + sum: sum, + isFunction: isFunction, + flattenBy: flattenBy, + ensurePluginOrder: ensurePluginOrder, + expandRows: expandRows, + }), + propTypes = { + data: PropTypes.array.isRequired, + columns: PropTypes.arrayOf(PropTypes.object).isRequired, + defaultColumn: PropTypes.object, + getSubRows: PropTypes.func, + getRowID: PropTypes.func, + debug: PropTypes.bool, + }, + renderErr = + 'You must specify a valid render component. This could be "column.Cell", "column.Header", "column.Filter", "column.Aggregated" or any other custom renderer component.', + defaultState = {}, + defaultInitialState = {}, + defaultColumnInstance = {}, + defaultReducer = function(e, t) { + return t + }, + defaultGetSubRows = function(e, t) { + return null !== e && e.subRows ? e.subRows : [] + }, + defaultGetRowID = function(e, t) { + return t + }, + useTable = function(e) { + PropTypes.checkPropTypes(propTypes, e, 'property', 'useTable') + var t = e.data, + r = e.columns, + o = e.initialState, + n = void 0 === o ? defaultInitialState : o, + u = e.state, + a = e.defaultColumn, + s = void 0 === a ? defaultColumnInstance : a, + i = e.getSubRows, + c = void 0 === i ? defaultGetSubRows : i, + l = e.getRowID, + p = void 0 === l ? defaultGetRowID : l, + d = e.reducer, + f = void 0 === d ? defaultReducer : d, + g = e.debug + g = 'production' !== process.env.NODE_ENV && g + for ( + var y = React__default.useState(_objectSpread2({}, defaultState, {}, n)), + h = _slicedToArray(y, 2), + m = h[0], + v = h[1], + b = React__default.useMemo( + function() { + if (u) { + var e = _objectSpread2({}, m) + return ( + Object.keys(u).forEach(function(t) { + e[t] = u[t] + }), + e + ) + } + return m + }, + [m, u] + ), + w = React__default.useCallback( + function(e, t) { + return v(function(r) { + var o = 'function' == typeof e ? e(r) : e + return f(r, o, t) + }) + }, + [f] + ), + R = React__default.useRef({}), + S = arguments.length, + P = new Array(S > 1 ? S - 1 : 0), + _ = 1; + _ < S; + _++ + ) + P[_ - 1] = arguments[_] + Object.assign( + R.current, + _objectSpread2({}, e, { + data: t, + state: b, + setState: w, + plugins: P, + hooks: { + columnsBeforeHeaderGroups: [], + columnsBeforeHeaderGroupsDeps: [], + useBeforeDimensions: [], + useMain: [], + useRows: [], + prepareRow: [], + getTableProps: [], + getTableBodyProps: [], + getRowProps: [], + getHeaderGroupProps: [], + getHeaderProps: [], + getCellProps: [], + }, + }) + ), + 'development' === process.env.NODE_ENV && g && console.time('plugins'), + P.filter(Boolean).forEach(function(e) { + e(R.current.hooks) + }), + 'development' === process.env.NODE_ENV && g && console.timeEnd('plugins') + var T = React__default.useMemo( + function() { + return decorateColumnTree(r, s) + }, + [s, r] + ), + E = React__default.useMemo(function() { + 'development' === process.env.NODE_ENV && + g && + console.time('hooks.columnsBeforeHeaderGroups') + var e = applyHooks( + R.current.hooks.columnsBeforeHeaderGroups, + flattenBy(T, 'columns'), + R.current + ) + return ( + 'development' === process.env.NODE_ENV && + g && + console.timeEnd('hooks.columnsBeforeHeaderGroups'), + e + ) + }, [T, g].concat( + _toConsumableArray( + applyHooks( + R.current.hooks.columnsBeforeHeaderGroupsDeps, + [], + R.current + ) + ) + )), + x = React__default.useMemo( + function() { + return makeHeaderGroups(E, s) + }, + [s, E] + ), + C = React__default.useMemo( + function() { + return x[0].headers + }, + [x] + ) + Object.assign(R.current, { + columns: T, + flatColumns: E, + headerGroups: x, + headers: C, + }) + var B = React__default.useMemo( + function() { + 'development' === process.env.NODE_ENV && + g && + console.time('getAccessedRows') + var e = [], + r = t.map(function(r, o) { + return (function r(o, n) { + var u = + arguments.length > 2 && void 0 !== arguments[2] + ? arguments[2] + : 0, + a = + arguments.length > 3 && void 0 !== arguments[3] + ? arguments[3] + : [], + s = o, + i = p(o, n), + l = [].concat(_toConsumableArray(a), [i]), + d = { original: s, index: n, path: l, depth: u, cells: [{}] } + e.push(d) + var f = c(o, n) + f && + (d.subRows = f.map(function(e, t) { + return r(e, t, u + 1, l) + })) + var g = function() { + throw new Error( + 'React-Table: You have not called prepareRow(row) one or more rows you are attempting to render.' + ) + } + return ( + (d.cells.map = g), + (d.cells.filter = g), + (d.cells.forEach = g), + (d.cells[0].getCellProps = g), + (d.values = {}), + E.forEach(function(e) { + d.values[e.id] = e.accessor + ? e.accessor(o, n, { subRows: f, depth: u, data: t }) + : void 0 + }), + d + ) + })(r, o) + }) + return ( + 'development' === process.env.NODE_ENV && + g && + console.timeEnd('getAccessedRows'), + [r, e] + ) + }, + [g, t, p, c, E] + ), + k = _slicedToArray(B, 2), + j = k[0], + A = k[1] + return ( + (R.current.rows = j), + (R.current.flatRows = A), + determineHeaderVisibility(R.current), + (R.current.flatHeaders = x.reduce(function(e, t) { + return [].concat(_toConsumableArray(e), _toConsumableArray(t.headers)) + }, [])), + 'development' === process.env.NODE_ENV && + g && + console.time('hooks.useBeforeDimensions'), + (R.current = applyHooks(R.current.hooks.useBeforeDimensions, R.current)), + 'development' === process.env.NODE_ENV && + g && + console.timeEnd('hooks.useBeforeDimensions'), + calculateDimensions(R.current), + 'development' === process.env.NODE_ENV && + g && + console.time('hooks.useMain'), + (R.current = applyHooks(R.current.hooks.useMain, R.current)), + 'development' === process.env.NODE_ENV && + g && + console.timeEnd('hooks.useMain'), + R.current.flatHeaders.forEach(function(e) { + ;(e.render = function(t) { + var r = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : {}, + o = 'string' == typeof t ? e[t] : t + if (void 0 === o) throw new Error(renderErr) + return flexRender(o, _objectSpread2({}, R.current, { column: e }, r)) + }), + (e.getHeaderProps = function(t) { + return mergeProps( + { + key: ['header', e.id].join('_'), + colSpan: e.totalVisibleHeaderCount, + }, + applyPropHooks(R.current.hooks.getHeaderProps, e, R.current), + t + ) + }) + }), + R.current.headerGroups.forEach(function(e, t) { + if ( + ((e.headers = e.headers.filter(function(e) { + return e.headers + ? (function e(t) { + return t.filter(function(t) { + return t.headers ? e(t.headers) : t.isVisible + }).length + })(e.headers) + : e.isVisible + })), + e.headers.length) + ) + return ( + (e.getHeaderGroupProps = function() { + var r = + arguments.length > 0 && void 0 !== arguments[0] + ? arguments[0] + : {} + return mergeProps( + { key: ['header'.concat(t)].join('_') }, + applyPropHooks( + R.current.hooks.getHeaderGroupProps, + e, + R.current + ), + r + ) + }), + !0 + ) + }), + 'development' === process.env.NODE_ENV && + g && + console.time('hooks.useRows'), + (R.current.rows = applyHooks( + R.current.hooks.useRows, + R.current.rows, + R.current + )), + 'development' === process.env.NODE_ENV && + g && + console.timeEnd('hooks.useRows'), + (R.current.prepareRow = React__default.useCallback(function(e) { + ;(e.getRowProps = function(t) { + return mergeProps( + { key: ['row'].concat(_toConsumableArray(e.path)).join('_') }, + applyPropHooks(R.current.hooks.getRowProps, e, R.current), + t + ) + }), + (e.cells = R.current.flatColumns + .filter(function(e) { + return e.isVisible + }) + .map(function(t) { + var r = { + column: t, + row: e, + value: e.values[t.id], + getCellProps: function(o) { + var n = [] + .concat(_toConsumableArray(e.path), [t.id]) + .join('_') + return mergeProps( + { key: ['cell', n].join('_') }, + applyPropHooks(R.current.hooks.getCellProps, r, R.current), + o + ) + }, + render: function(o) { + var n = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : {}, + u = 'string' == typeof o ? t[o] : o + if (void 0 === u) throw new Error(renderErr) + return flexRender( + u, + _objectSpread2( + {}, + R.current, + { column: t, row: e, cell: r }, + n + ) + ) + }, + } + return r + })), + applyHooks(R.current.hooks.prepareRow, e, R.current) + }, [])), + (R.current.getTableProps = function(e) { + return mergeProps( + applyPropHooks(R.current.hooks.getTableProps, R.current), + e + ) + }), + (R.current.getTableBodyProps = function(e) { + return mergeProps( + applyPropHooks(R.current.hooks.getTableBodyProps, R.current), + e + ) + }), + R.current + ) + } +function calculateDimensions(e) { + var t = e.headers + e.totalColumnsWidth = calculateHeaderWidths(t) +} +function calculateHeaderWidths(e) { + var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, + r = 0 + return ( + e.forEach(function(e) { + var o = e.headers + ;(e.totalLeft = t), + o && o.length + ? (e.totalWidth = calculateHeaderWidths(o, t)) + : (e.totalWidth = Math.min( + Math.max(e.minWidth, e.width), + e.maxWidth + )), + e.isVisible && ((t += e.totalWidth), (r += e.totalWidth)) + }), + r + ) +} +var actions = {}, + addActions = function() { + for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) + t[r] = arguments[r] + t.forEach(function(e) { + actions[e] = 'React Table Action: '.concat(e) + }) + } +;(defaultState.expanded = []), addActions('toggleExpanded', 'useExpanded') +var propTypes$1 = { + manualExpandedKey: PropTypes.string, + paginateExpandedRows: PropTypes.bool, + }, + useExpanded = function(e) { + ;(e.getExpandedToggleProps = []), e.useMain.push(useMain) + } +function useMain(e) { + PropTypes.checkPropTypes(propTypes$1, e, 'property', 'useExpanded') + var t = e.debug, + r = e.rows, + o = e.manualExpandedKey, + n = void 0 === o ? 'expanded' : o, + u = e.paginateExpandedRows, + a = void 0 === u || u, + s = e.expandSubRows, + i = void 0 === s || s, + c = e.hooks, + l = e.state.expanded, + p = e.setState, + d = function(e, t) { + var r = e.join('.') + return p(function(e) { + var o = e.expanded.includes(r), + n = void 0 !== t ? t : !o, + u = new Set(e.expanded) + if (!o && n) u.add(r) + else { + if (!o || n) return e + u.delete(r) + } + return _objectSpread2({}, e, { + expanded: _toConsumableArray(u.values()), + }) + }, actions.toggleExpanded) + } + c.prepareRow.push(function(e, t) { + e.toggleExpanded = function(t) { + return d(e.path, t) + } + var r = applyPropHooks(t.hooks.getExpandedToggleProps, e, t) + return ( + (e.getExpandedToggleProps = function(t) { + return mergeProps( + { + onClick: function(t) { + t.persist(), e.toggleExpanded() + }, + style: { cursor: 'pointer' }, + title: 'Toggle Expanded', + }, + r, + t + ) + }), + e + ) + }) + var f = React.useMemo( + function() { + return ( + 'development' === process.env.NODE_ENV && + t && + console.info('getExpandedRows'), + a + ? expandRows(r, { + manualExpandedKey: n, + expanded: l, + expandSubRows: i, + }) + : r + ) + }, + [t, a, r, n, l, i] + ), + g = findExpandedDepth(l) + return _objectSpread2({}, e, { + toggleExpandedByPath: d, + expandedDepth: g, + rows: f, + }) +} +function findExpandedDepth(e) { + var t = 0 + return ( + e.forEach(function(e) { + var r = e.split('.') + t = Math.max(t, r.length) + }), + t + ) +} +useExpanded.pluginName = 'useExpanded' +var text = function(e, t, r) { + return (e = e.filter(function(e) { + var o = e.values[t] + return String(o) + .toLowerCase() + .includes(String(r).toLowerCase()) + })) +} +text.autoRemove = function(e) { + return !e +} +var exactText = function(e, t, r) { + return e.filter(function(e) { + var o = e.values[t] + return void 0 === o || String(o).toLowerCase() === String(r).toLowerCase() + }) +} +exactText.autoRemove = function(e) { + return !e +} +var exactTextCase = function(e, t, r) { + return e.filter(function(e) { + var o = e.values[t] + return void 0 === o || String(o) === String(r) + }) +} +exactTextCase.autoRemove = function(e) { + return !e +} +var includes = function(e, t, r) { + return e.filter(function(e) { + var o = e.values[t] + return r.includes(o) + }) +} +includes.autoRemove = function(e) { + return !e || !e.length +} +var includesAll = function(e, t, r) { + return e.filter(function(e) { + var o = e.values[t] + return ( + o && + o.length && + r.every(function(e) { + return o.includes(e) + }) + ) + }) +} +includesAll.autoRemove = function(e) { + return !e || !e.length +} +var exact = function(e, t, r) { + return e.filter(function(e) { + return e.values[t] === r + }) +} +exact.autoRemove = function(e) { + return void 0 === e +} +var equals = function(e, t, r) { + return e.filter(function(e) { + return e.values[t] == r + }) +} +equals.autoRemove = function(e) { + return null == e +} +var between = function(e, t, r) { + var o = _slicedToArray(r || [], 2), + n = o[0], + u = o[1] + if ( + (n = 'number' == typeof n ? n : -1 / 0) > + (u = 'number' == typeof u ? u : 1 / 0) + ) { + var a = n + ;(n = u), (u = a) + } + return e.filter(function(e) { + var r = e.values[t] + return r >= n && r <= u + }) +} +between.autoRemove = function(e) { + return !e || ('number' != typeof e[0] && 'number' != typeof e[1]) +} +var filterTypes = Object.freeze({ + text: text, + exactText: exactText, + exactTextCase: exactTextCase, + includes: includes, + includesAll: includesAll, + exact: exact, + equals: equals, + between: between, +}) +;(defaultState.filters = {}), addActions('setFilter', 'setAllFilters') +var propTypes$2 = { + columns: PropTypes.arrayOf( + PropTypes.shape({ disableFilters: PropTypes.bool, Filter: PropTypes.any }) + ), + manualFilters: PropTypes.bool, + }, + useFilters = function(e) { + e.useMain.push(useMain$1) + } +function useMain$1(e) { + PropTypes.checkPropTypes(propTypes$2, e, 'property', 'useFilters') + var t = e.debug, + r = e.rows, + o = e.flatRows, + n = e.flatColumns, + u = e.filterTypes, + a = e.manualFilters, + s = e.disableFilters, + i = e.state.filters, + c = e.setState, + l = r, + p = o, + d = function(e, t) { + var r = n.find(function(t) { + return t.id === e + }) + if (!r) + throw new Error( + 'React-Table: Could not find a column with id: '.concat(e) + ) + var o = getFilterMethod(r.filter, u || {}, filterTypes) + return c(function(r) { + var n = 'function' == typeof t ? t(r.filters[e]) : t + if (shouldAutoRemove(o.autoRemove, n)) { + var u = r.filters + u[e] + return _objectSpread2({}, r, { + filters: _objectWithoutProperties(u, [e].map(_toPropertyKey)), + }) + } + return _objectSpread2({}, r, { + filters: _objectSpread2({}, r.filters, _defineProperty({}, e, n)), + }) + }, actions.setFilter) + } + n.forEach(function(e) { + var t = e.id, + r = e.accessor, + o = e.disableFilters + ;(e.canFilter = + !!r && getFirstDefined(!0 !== o && void 0, !0 !== s && void 0, !0)), + (e.setFilter = function(t) { + return d(e.id, t) + }), + (e.filterValue = i[t]) + }) + var f = React__default.useMemo( + function() { + if (a || !Object.keys(i).length) + return { filteredRows: r, filteredFlatRows: o } + var e = [] + 'development' === process.env.NODE_ENV && + t && + console.info('getFilteredRows') + return { + filteredRows: (function t(r) { + var o = + arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0 + return Object.entries(i) + .reduce(function(e, t) { + var r = _slicedToArray(t, 2), + a = r[0], + s = r[1], + i = n.find(function(e) { + return e.id === a + }) + if (!i) return e + 0 === o && (i.preFilteredRows = e) + var c = getFilterMethod(i.filter, u || {}, filterTypes) + return c + ? ((i.filteredRows = c(e, a, s, i)), i.filteredRows) + : (console.warn( + "Could not find a valid 'column.filter' for column with the ID: ".concat( + i.id, + '.' + ) + ), + e) + }, r) + .map(function(r) { + return ( + e.push(r), + r.subRows + ? _objectSpread2({}, r, { + subRows: + r.subRows && r.subRows.length > 0 + ? t(r.subRows, o + 1) + : r.subRows, + }) + : r + ) + }) + })(r), + filteredFlatRows: e, + } + }, + [a, i, t, r, o, n, u] + ), + g = f.filteredRows, + y = f.filteredFlatRows + return ( + React__default.useMemo( + function() { + n.filter(function(e) { + return !Object.keys(i).includes(e.id) + }).forEach(function(e) { + ;(e.preFilteredRows = g), (e.filteredRows = g) + }) + }, + [g, i, n] + ), + _objectSpread2({}, e, { + setFilter: d, + setAllFilters: function(e) { + return c(function(t) { + var r = 'function' == typeof e ? e(t) : e + return ( + Object.keys(r).forEach(function(e) { + var t = r[e] + shouldAutoRemove( + getFilterMethod( + n.find(function(t) { + return t.id === e + }).filter, + u || {}, + filterTypes + ).autoRemove, + t + ) && delete r[e] + }), + _objectSpread2({}, t, { filters: r }) + ) + }, actions.setAllFilters) + }, + preFilteredRows: l, + preFilteredFlatRows: p, + rows: g, + flatRows: y, + }) + ) +} +function shouldAutoRemove(e, t) { + return e ? e(t) : void 0 === t +} +function getFilterMethod(e, t, r) { + return isFunction(e) || t[e] || r[e] || r.text +} +function sum$1(e, t) { + return e.reduce(function(e, t) { + return e + t + }, 0) +} +function average(e, t) { + return Math.round((sum$1(e, t) / e.length) * 100) / 100 +} +function median(e) { + var t = e[0] || '', + r = e[0] || '' + return ( + e.forEach(function(e) { + ;(t = Math.min(t, e)), (r = Math.max(r, e)) + }), + (t + r) / 2 + ) +} +function uniqueCount(e) { + return new Set(e).size +} +function count(e) { + return e.length +} +useFilters.pluginName = 'useFilters' +var aggregations = Object.freeze({ + sum: sum$1, + average: average, + median: median, + uniqueCount: uniqueCount, + count: count, +}) +;(defaultState.groupBy = []), addActions('toggleGroupBy') +var propTypes$3 = { + columns: PropTypes.arrayOf( + PropTypes.shape({ + aggregate: PropTypes.oneOfType([ + PropTypes.func, + PropTypes.string, + PropTypes.arrayOf( + PropTypes.oneOfType([PropTypes.func, PropTypes.string]) + ), + ]), + disableGrouping: PropTypes.bool, + Aggregated: PropTypes.any, + }) + ), + groupByFn: PropTypes.func, + manualGrouping: PropTypes.bool, + disableGrouping: PropTypes.bool, + aggregations: PropTypes.object, + }, + useGroupBy = function(e) { + ;(e.getGroupByToggleProps = []), + e.columnsBeforeHeaderGroups.push(columnsBeforeHeaderGroups), + e.columnsBeforeHeaderGroupsDeps.push(function(e, t) { + return e.push(t.state.groupBy), e + }), + e.useMain.push(useMain$2) + } +function columnsBeforeHeaderGroups(e, t) { + var r = t.state.groupBy, + o = r.map(function(t) { + return e.find(function(e) { + return e.id === t + }) + }), + n = e.filter(function(e) { + return !r.includes(e.id) + }), + u = + e.findIndex(function(e) { + return e.groupByBoundary + }) + 1 + return [].concat( + _toConsumableArray(n.slice(0, u)), + _toConsumableArray(o), + _toConsumableArray(n.slice(u)) + ) +} +function useMain$2(e) { + PropTypes.checkPropTypes(propTypes$3, e, 'property', 'useGroupBy') + var t = e.debug, + r = e.rows, + o = e.flatColumns, + n = e.flatHeaders, + u = e.groupByFn, + a = void 0 === u ? defaultGroupByFn : u, + s = e.manualGroupBy, + i = e.disableGrouping, + c = e.aggregations, + l = void 0 === c ? {} : c, + p = e.hooks, + d = e.plugins, + f = e.state.groupBy, + g = e.setState + ensurePluginOrder(d, [], 'useGroupBy', ['useSortBy', 'useExpanded']), + o.forEach(function(e) { + var t = e.id, + r = e.accessor, + o = e.disableGrouping + ;(e.isGrouped = f.includes(t)), + (e.groupedIndex = f.indexOf(t)), + (e.canGroupBy = + !!r && getFirstDefined(!0 !== o && void 0, !0 !== i && void 0, !0)), + e.canGroupBy && + (e.toggleGroupBy = function() { + return y(e.id) + }), + (e.Aggregated = e.Aggregated || e.Cell) + }) + var y = function(e, t) { + return g(function(r) { + return _objectSpread2( + {}, + r, + (void 0 !== t + ? t + : !f.includes(e)) + ? { groupBy: [].concat(_toConsumableArray(f), [e]) } + : { + groupBy: f.filter(function(t) { + return t !== e + }), + } + ) + }, actions.toggleGroupBy) + } + n.forEach( + (function(e) { + return function(t) { + var r = t.canGroupBy, + o = applyPropHooks(e.hooks.getGroupByToggleProps, t, e) + t.getGroupByToggleProps = function(e) { + return mergeProps( + { + onClick: r + ? function(e) { + e.persist(), t.toggleGroupBy() + } + : void 0, + style: { cursor: r ? 'pointer' : void 0 }, + title: 'Toggle GroupBy', + }, + o, + e + ) + } + } + })(e) + ), + p.prepareRow.push(function(e) { + return ( + e.cells.forEach(function(t) { + ;(t.isGrouped = t.column.isGrouped && t.column.id === e.groupByID), + (t.isRepeatedValue = !t.isGrouped && t.column.isGrouped), + (t.isAggregated = !t.isGrouped && !t.isRepeatedValue && e.canExpand) + }), + e + ) + }) + var h = React.useMemo( + function() { + if (s || !f.length) return r + 'development' === process.env.NODE_ENV && + t && + console.info('getGroupedRows') + var e = function(e, t) { + var r = {} + return ( + o.forEach(function(o) { + if (f.includes(o.id)) r[o.id] = e[0] ? e[0].values[o.id] : null + else { + var n = e.map(function(e) { + return e.values[o.id] + }), + u = o.aggregate + if (Array.isArray(u)) { + if (2 !== u.length) + throw (console.info({ column: o }), + new Error( + "React Table: Complex aggregators must have 2 values, eg. aggregate: ['sum', 'count']. More info above..." + )) + u = t ? u[1] : u[0] + } + var a = 'function' == typeof u ? u : l[u] || aggregations[u] + if (a) r[o.id] = a(n, e) + else { + if (u) + throw (console.info({ column: o }), + new Error( + 'React Table: Invalid aggregate option for column listed above' + )) + r[o.id] = null + } + } + }), + r + ) + } + return (function t(r) { + var o = + arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, + n = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [] + if (o >= f.length) return r + var u = f[o], + s = a(r, u) + return (s = Object.entries(s).map(function(r, a) { + var s = _slicedToArray(r, 2), + i = s[0], + c = s[1], + l = [].concat(_toConsumableArray(n), [''.concat(u, ':').concat(i)]) + c = t(c, o + 1, l) + var p = e(c, o + 1 >= f.length) + return { + isAggregated: !0, + groupByID: u, + groupByVal: i, + values: p, + subRows: c, + depth: o, + index: a, + path: l, + } + })) + })(r) + }, + [s, f, t, r, o, l, a] + ) + return _objectSpread2({}, e, { toggleGroupBy: y, rows: h, preGroupedRows: r }) +} +useGroupBy.pluginName = 'useGroupBy' +var reSplitAlphaNumeric = /([0-9]+)/gm, + alphanumeric = function(e, t, r) { + var o = getRowValueByColumnID(e, r), + n = getRowValueByColumnID(t, r) + for ( + o = toString(o), + n = toString(n), + o = o.split(reSplitAlphaNumeric).filter(Boolean), + n = n.split(reSplitAlphaNumeric).filter(Boolean); + o.length && n.length; + + ) { + var u = o.shift(), + a = n.shift(), + s = parseInt(u, 10), + i = parseInt(a, 10), + c = [s, i].sort() + if (isNaN(c[0])) { + if (u > a) return 1 + if (a > u) return -1 + } else { + if (isNaN(c[1])) return isNaN(s) ? -1 : 1 + if (s > i) return 1 + if (i > s) return -1 + } + } + return o.length - n.length + } +function datetime(e, t, r) { + var o = getRowValueByColumnID(e, r), + n = getRowValueByColumnID(t, r) + return compareBasic((o = o.getTime()), (n = n.getTime())) +} +function basic(e, t, r) { + return compareBasic(getRowValueByColumnID(e, r), getRowValueByColumnID(t, r)) +} +function compareBasic(e, t) { + return e === t ? 0 : e > t ? 1 : -1 +} +function getRowValueByColumnID(e, t) { + return e.values[t] +} +function toString(e) { + return 'number' == typeof e + ? isNaN(e) || e === 1 / 0 || e === -1 / 0 + ? '' + : String(e) + : 'string' == typeof e + ? e + : '' +} +var sortTypes = Object.freeze({ + alphanumeric: alphanumeric, + datetime: datetime, + basic: basic, +}) +;(defaultState.sortBy = []), + (defaultColumn.sortType = 'alphanumeric'), + (defaultColumn.sortDescFirst = !1), + addActions('sortByChange') +var propTypes$4 = { + columns: PropTypes.arrayOf( + PropTypes.shape({ + sortType: PropTypes.oneOfType([PropTypes.string, PropTypes.func]), + sortDescFirst: PropTypes.bool, + disableSorting: PropTypes.bool, + }) + ), + orderByFn: PropTypes.func, + sortTypes: PropTypes.object, + manualSorting: PropTypes.bool, + disableSorting: PropTypes.bool, + disableMultiSort: PropTypes.bool, + isMultiSortEvent: PropTypes.func, + maxMultiSortColCount: PropTypes.number, + disableSortRemove: PropTypes.bool, + disableMultiRemove: PropTypes.bool, + }, + useSortBy = function(e) { + e.useMain.push(useMain$3), (e.getSortByToggleProps = []) + } +function useMain$3(e) { + PropTypes.checkPropTypes(propTypes$4, e, 'property', 'useSortBy') + var t = e.debug, + r = e.rows, + o = e.flatColumns, + n = e.orderByFn, + u = void 0 === n ? defaultOrderByFn : n, + a = e.sortTypes, + s = e.manualSorting, + i = e.disableSorting, + c = e.disableSortRemove, + l = e.disableMultiRemove, + p = e.disableMultiSort, + d = e.isMultiSortEvent, + f = + void 0 === d + ? function(e) { + return e.shiftKey + } + : d, + g = e.maxMultiSortColCount, + y = void 0 === g ? Number.MAX_SAFE_INTEGER : g, + h = e.flatHeaders, + m = e.state.sortBy, + v = e.setState + ensurePluginOrder(e.plugins, ['useFilters'], 'useSortBy', []) + var b = function(e, t, r) { + return v(function(n) { + var u, + a = n.sortBy, + s = o.find(function(t) { + return t.id === e + }).sortDescFirst, + i = a.find(function(t) { + return t.id === e + }), + d = a.findIndex(function(t) { + return t.id === e + }), + f = null != t, + g = [] + return ( + 'toggle' !== + (u = + !p && r + ? i + ? 'toggle' + : 'add' + : d !== a.length - 1 + ? 'replace' + : i + ? 'toggle' + : 'replace') || + c || + f || + (r && l) || + !((i && i.desc && !s) || (!i.desc && s)) || + (u = 'remove'), + 'replace' === u + ? (g = [{ id: e, desc: f ? t : s }]) + : 'add' === u + ? (g = [].concat(_toConsumableArray(a), [ + { id: e, desc: f ? t : s }, + ])).splice(0, g.length - y) + : 'toggle' === u + ? (g = a.map(function(r) { + return r.id === e + ? _objectSpread2({}, r, { desc: f ? t : !i.desc }) + : r + })) + : 'remove' === u && + (g = a.filter(function(t) { + return t.id !== e + })), + _objectSpread2({}, n, { sortBy: g }) + ) + }, actions.sortByChange) + } + h.forEach( + (function(e) { + return function(t) { + var r = t.accessor, + o = t.disableSorting, + n = t.id, + u = !!r && getFirstDefined(!0 !== o && void 0, !0 !== i && void 0, !0) + ;(t.canSort = u), + t.canSort && + ((t.toggleSortBy = function(e, r) { + return b(t.id, e, r) + }), + (t.clearSorting = function() { + return v(function(e) { + return _objectSpread2({}, e, { + sortBy: e.sortBy.filter(function(e) { + return e.id !== t.id + }), + }) + }, actions.sortByChange) + })) + var a = applyPropHooks(e.hooks.getSortByToggleProps, t, e) + t.getSortByToggleProps = function(e) { + return mergeProps( + { + onClick: u + ? function(e) { + e.persist(), t.toggleSortBy(void 0, !p && f(e)) + } + : void 0, + style: { cursor: u ? 'pointer' : void 0 }, + title: 'Toggle SortBy', + }, + a, + e + ) + } + var s = m.find(function(e) { + return e.id === n + }) + ;(t.isSorted = !!s), + (t.sortedIndex = m.findIndex(function(e) { + return e.id === n + })), + (t.isSortedDesc = t.isSorted ? s.desc : void 0) + } + })(e) + ) + var w = React__default.useMemo( + function() { + if (s || !m.length) return r + 'development' === process.env.NODE_ENV && + t && + console.time('getSortedRows') + var e = m.filter(function(e) { + return o.find(function(t) { + return t.id === e.id + }) + }) + return ( + 'development' === process.env.NODE_ENV && + t && + console.timeEnd('getSortedRows'), + (function t(r) { + var n = u( + r, + e.map(function(e) { + var t = o.find(function(t) { + return t.id === e.id + }) + if (!t) + throw new Error( + 'React-Table: Could not find a column with id: '.concat( + e.id, + ' while sorting' + ) + ) + var r = t.sortType, + n = isFunction(r) || (a || {})[r] || sortTypes[r] + if (!n) + throw new Error( + "React-Table: Could not find a valid sortType of '" + .concat(r, "' for column '") + .concat(e.id, "'.") + ) + return function(t, r) { + return n(t, r, e.id) + } + }), + e.map(function(e) { + var t = o.find(function(t) { + return t.id === e.id + }) + return t && t.sortInverted ? e.desc : !e.desc + }) + ) + return ( + n.forEach(function(e) { + !e.subRows || e.subRows.length <= 1 || (e.subRows = t(e.subRows)) + }), + n + ) + })(r) + ) + }, + [s, m, t, r, o, u, a] + ) + return _objectSpread2({}, e, { toggleSortBy: b, rows: w, preSortedRows: r }) +} +;(useSortBy.pluginName = 'useSortBy'), + (defaultState.pageSize = 10), + (defaultState.pageIndex = 0), + addActions('pageChange', 'pageSizeChange') +var propTypes$5 = { + manualPagination: PropTypes.bool, + paginateExpandedRows: PropTypes.bool, + }, + usePagination = function(e) { + e.useMain.push(useMain$4) + } +function useMain$4(e) { + PropTypes.checkPropTypes(propTypes$5, e, 'property', 'usePagination') + var t = e.data, + r = e.rows, + o = e.manualPagination, + n = e.disablePageResetOnDataChange, + u = e.manualExpandedKey, + a = void 0 === u ? 'expanded' : u, + s = e.debug, + i = e.plugins, + c = e.pageCount, + l = e.paginateExpandedRows, + p = void 0 === l || l, + d = e.expandSubRows, + f = void 0 === d || d, + g = e.state, + y = g.pageSize, + h = g.pageIndex, + m = g.filters, + v = g.groupBy, + b = g.sortBy, + w = g.expanded, + R = e.setState + ensurePluginOrder( + i, + ['useFilters', 'useGroupBy', 'useSortBy', 'useExpanded'], + 'usePagination', + [] + ) + var S = o ? null : t, + P = React__default.useRef(), + _ = React__default.useRef() + ;(_.current = n), + safeUseLayoutEffect( + function() { + P.current && + !_.current && + R(function(e) { + return _objectSpread2({}, e, { pageIndex: 0 }) + }, actions.pageChange), + (P.current = !0) + }, + [R, S, m, v, b] + ) + var T = o ? c : Math.ceil(r.length / y), + E = React__default.useMemo( + function() { + return T > 0 + ? _toConsumableArray(new Array(T)).map(function(e, t) { + return t + }) + : [] + }, + [T] + ), + x = React__default.useMemo( + function() { + var e + if (o) e = r + else { + 'development' === process.env.NODE_ENV && s && console.info('getPage') + var t = y * h, + n = t + y + e = r.slice(t, n) + } + return p + ? e + : expandRows(e, { + manualExpandedKey: a, + expanded: w, + expandSubRows: f, + }) + }, + [s, f, w, a, o, h, y, p, r] + ), + C = h > 0, + B = -1 === T || h < T - 1, + k = React__default.useCallback( + function(e) { + return ( + 'development' === process.env.NODE_ENV && + s && + console.info('gotoPage'), + R(function(t) { + var r = 'function' == typeof e ? e(t.pageIndex) : e + return r < 0 || r > T - 1 + ? t + : _objectSpread2({}, t, { pageIndex: r }) + }, actions.pageChange) + ) + }, + [s, T, R] + ), + j = React__default.useCallback( + function() { + return k(function(e) { + return e - 1 + }) + }, + [k] + ), + A = React__default.useCallback( + function() { + return k(function(e) { + return e + 1 + }) + }, + [k] + ), + O = React__default.useCallback( + function(e) { + R(function(t) { + var r = t.pageSize * t.pageIndex + return _objectSpread2({}, t, { + pageIndex: Math.floor(r / e), + pageSize: e, + }) + }, actions.pageSizeChange) + }, + [R] + ) + return _objectSpread2({}, e, { + pageOptions: E, + pageCount: T, + page: x, + canPreviousPage: C, + canNextPage: B, + gotoPage: k, + previousPage: j, + nextPage: A, + setPageSize: O, + pageIndex: h, + pageSize: y, + }) +} +;(usePagination.pluginName = 'usePagination'), + (defaultState.selectedRowPaths = []), + addActions('toggleRowSelected', 'toggleRowSelectedAll') +var propTypes$6 = { manualRowSelectedKey: PropTypes.string }, + useRowSelect = function(e) { + ;(e.getToggleRowSelectedProps = []), + (e.getToggleAllRowsSelectedProps = []), + e.useRows.push(useRows), + e.useMain.push(useMain$5) + } +function useRows(e, t) { + PropTypes.checkPropTypes(propTypes$6, t, 'property', 'useRowSelect') + var r = t.state.selectedRowPaths + return ( + (t.selectedFlatRows = React__default.useMemo( + function() { + var t = [] + return ( + e.forEach(function(e) { + if (e.isAggregated) { + var o = e.subRows.map(function(e) { + return e.path + }) + e.isSelected = o.every(function(e) { + return r.includes(e.join('.')) + }) + } else e.isSelected = r.includes(e.path.join('.')) + e.isSelected && t.push(e) + }), + t + ) + }, + [e, r] + )), + e + ) +} +function useMain$5(e) { + PropTypes.checkPropTypes(propTypes$6, e, 'property', 'useRowSelect') + var t = e.hooks, + r = e.manualRowSelectedKey, + o = void 0 === r ? 'isSelected' : r, + n = e.disableSelectedRowsResetOnDataChange, + u = e.plugins, + a = e.flatRows, + s = e.data, + i = e.state.selectedRowPaths, + c = e.setState + ensurePluginOrder( + u, + ['useFilters', 'useGroupBy', 'useSortBy'], + 'useRowSelect', + [] + ) + var l = a.map(function(e) { + return e.path.join('.') + }), + p = !!l.length && !!i.length + p && + l.some(function(e) { + return !i.includes(e) + }) && + (p = !1) + var d = React__default.useRef(), + f = React__default.useRef() + ;(f.current = n), + safeUseLayoutEffect( + function() { + d.current && + !f.current && + c(function(e) { + return _objectSpread2({}, e, { selectedRowPaths: [] }) + }, actions.pageChange), + (d.current = !0) + }, + [c, s] + ) + var g = function(e) { + c(function(t) { + return _objectSpread2({}, t, { + selectedRowPaths: (void 0 !== e ? e : !p) ? l : [], + }) + }, actions.toggleRowSelectedAll) + }, + y = function(e, t) { + var r = e.join('.'), + o = [r, '.'].join('') + return c(function(n) { + var u = n.selectedRowPaths.includes(r), + a = void 0 !== t ? t : !u, + s = new Set(n.selectedRowPaths) + if (!u && a) + l.forEach(function(e) { + ;(e === r || e.startsWith(o)) && s.add(e) + }) + else { + if (!u || a) return n + l.forEach(function(e) { + ;(e === r || e.startsWith(o)) && s.delete(e) + }) + } + return ( + e.length > 1 && + (function e(t, r) { + var o = r.slice(0, r.length - 1), + n = o.join('.') + 0 === + l.filter(function(e) { + var r = e + return r !== n && r.startsWith(n) && !t.has(r) + }).length + ? t.add(n) + : t.delete(n), + o.length > 1 && e(t, o) + })(s, e), + _objectSpread2({}, n, { + selectedRowPaths: _toConsumableArray(s.values()), + }) + ) + }, actions.toggleRowSelected) + }, + h = applyPropHooks(e.hooks.getToggleAllRowsSelectedProps, e) + return ( + t.prepareRow.push(function(e, t) { + var r = applyPropHooks(t.hooks.getToggleRowSelectedProps, e, t) + if (e.isAggregated) { + var n = e.subRows.map(function(e) { + return e.path + }) + ;(e.toggleRowSelected = function(t) { + ;(t = void 0 !== t ? t : !e.isSelected), + n.forEach(function(e) { + y(e, t) + }) + }), + (e.getToggleRowSelectedProps = function(t) { + var n = !1 + return ( + (n = !(!e.original || !e.original[o]) || e.isSelected), + mergeProps( + { + onChange: function(t) { + e.toggleRowSelected(t.target.checked) + }, + style: { cursor: 'pointer' }, + checked: n, + title: 'Toggle Row Selected', + }, + r, + t + ) + ) + }) + } else + (e.toggleRowSelected = function(t) { + return y(e.path, t) + }), + (e.getToggleRowSelectedProps = function(t) { + var n = !1 + return ( + (n = !(!e.original || !e.original[o]) || e.isSelected), + mergeProps( + { + onChange: function(t) { + e.toggleRowSelected(t.target.checked) + }, + style: { cursor: 'pointer' }, + checked: n, + title: 'Toggle Row Selected', + }, + r, + t + ) + ) + }) + return e + }), + _objectSpread2({}, e, { + toggleRowSelected: y, + toggleRowSelectedAll: g, + getToggleAllRowsSelectedProps: function(e) { + return mergeProps( + { + onChange: function(e) { + g(e.target.checked) + }, + style: { cursor: 'pointer' }, + checked: p, + title: 'Toggle All Rows Selected', + }, + h, + e + ) + }, + isAllRowsSelected: p, + }) + ) +} +;(useRowSelect.pluginName = 'useRowSelect'), + (defaultState.rowState = {}), + addActions('setRowState', 'setCellState') +var propTypes$7 = { initialRowStateAccessor: PropTypes.func }, + useRowState = function(e) { + e.useMain.push(useMain$6) + } +function useMain$6(e) { + PropTypes.checkPropTypes(propTypes$7, e, 'property', 'useRowState') + var t = e.hooks, + r = e.rows, + o = e.initialRowStateAccessor, + n = e.state.rowState, + u = e.setState, + a = React__default.useCallback( + function(e, t) { + var r = + arguments.length > 2 && void 0 !== arguments[2] + ? arguments[2] + : actions.setRowState, + o = e.join('.') + return u(function(e) { + return _objectSpread2({}, e, { + rowState: _objectSpread2( + {}, + e.rowState, + _defineProperty( + {}, + o, + 'function' == typeof t ? t(e.rowState[o]) : t + ) + ), + }) + }, r) + }, + [u] + ), + s = React__default.useCallback( + function(e, t, r) { + return a( + e, + function(e) { + return _objectSpread2({}, e, { + cellState: _objectSpread2( + {}, + e.cellState, + _defineProperty( + {}, + t, + 'function' == typeof r ? r(e.cellState[t]) : r + ) + ), + }) + }, + actions.setCellState + ) + }, + [a] + ), + i = React__default.useRef() + return ( + React__default.useEffect( + function() { + i.current && + u(function(e) { + return _objectSpread2({}, e, { rowState: {} }) + }, actions.setRowState), + (i.current = !0) + }, + [r, u] + ), + t.prepareRow.push(function(e) { + var t = e.path.join('.') + return ( + e.original && + ((e.state = (void 0 !== n[t] ? n[t] : o && o(e)) || {}), + (e.setState = function(t) { + return a(e.path, t) + }), + e.cells.forEach(function(t) { + ;(t.state = e.state.cellState || {}), + (t.setState = function(r) { + return s(e.path, t.column.id, r) + }) + })), + e + ) + }), + _objectSpread2({}, e, { setRowState: a, setCellState: s }) + ) +} +;(useRowState.pluginName = 'useRowState'), + (defaultState.columnOrder = []), + addActions('setColumnOrder') +var propTypes$8 = { initialRowStateAccessor: PropTypes.func }, + useColumnOrder = function(e) { + e.columnsBeforeHeaderGroupsDeps.push(function(e, t) { + return [].concat(_toConsumableArray(e), [t.state.columnOrder]) + }), + e.columnsBeforeHeaderGroups.push(columnsBeforeHeaderGroups$1), + e.useMain.push(useMain$7) + } +function columnsBeforeHeaderGroups$1(e, t) { + var r = t.state.columnOrder + if (!r || !r.length) return e + for ( + var o = _toConsumableArray(r), + n = _toConsumableArray(e), + u = [], + a = function() { + var e = o.shift(), + t = n.findIndex(function(t) { + return t.id === e + }) + t > -1 && u.push(n.splice(t, 1)[0]) + }; + n.length && o.length; + + ) + a() + return [].concat(u, _toConsumableArray(n)) +} +function useMain$7(e) { + PropTypes.checkPropTypes(propTypes$8, e, 'property', 'useColumnOrder') + var t = e.setState, + r = React__default.useCallback( + function(e) { + return t(function(t) { + return _objectSpread2({}, t, { + columnOrder: 'function' == typeof e ? e(t.columnOrder) : e, + }) + }, actions.setColumnOrder) + }, + [t] + ) + return _objectSpread2({}, e, { setColumnOrder: r }) +} +;(useColumnOrder.pluginName = 'useColumnOrder'), + (defaultState.columnResizing = { columnWidths: {} }), + (defaultColumn.canResize = !0) +var propTypes$9 = {}, + useResizeColumns = function(e) { + ;(e.getResizerProps = []), e.useBeforeDimensions.push(useBeforeDimensions) + } +useResizeColumns.pluginName = 'useResizeColumns' +var useBeforeDimensions = function(e) { + PropTypes.checkPropTypes(propTypes$9, e, 'property', 'useResizeColumns') + var t = e.flatHeaders, + r = e.disableResizing, + o = e.hooks.getHeaderProps, + n = e.state.columnResizing, + u = e.setState + o.push(function() { + return { style: { position: 'relative' } } + }) + return ( + t.forEach( + (function(e) { + return function(t) { + var o = getFirstDefined( + !0 !== t.disableResizing && void 0, + !0 !== r && void 0, + !0 + ) + if ( + ((t.canResize = o), + (t.width = n.columnWidths[t.id] || t.width), + (t.isResizing = n.isResizingColumn === t.id), + o) + ) { + var a = applyPropHooks(e.hooks.getResizerProps, t, e) + t.getResizerProps = function(e) { + return mergeProps( + { + onMouseDown: function(e) { + return ( + e.persist() || + (function(e, t) { + var r = getLeafHeaders(t), + o = r.map(function(e) { + return e.totalWidth + }), + n = e.clientX, + a = function(e) { + var t = (e.clientX - n) / r.length, + a = {} + r.forEach(function(e, r) { + a[e.id] = Math.max(o[r] + t, 0) + }), + u(function(e) { + return _objectSpread2({}, e, { + columnResizing: _objectSpread2( + {}, + e.columnResizing, + { + columnWidths: _objectSpread2( + {}, + e.columnResizing.columnWidths, + {}, + a + ), + } + ), + }) + }) + } + document.addEventListener('mousemove', a), + document.addEventListener('mouseup', function e(t) { + document.removeEventListener('mousemove', a), + document.removeEventListener('mouseup', e), + u(function(e) { + return _objectSpread2({}, e, { + columnResizing: _objectSpread2( + {}, + e.columnResizing, + { startX: null, isResizingColumn: null } + ), + }) + }) + }), + u(function(e) { + return _objectSpread2({}, e, { + columnResizing: _objectSpread2( + {}, + e.columnResizing, + { startX: n, isResizingColumn: t.id } + ), + }) + }) + })(e, t) + ) + }, + style: { cursor: 'ew-resize' }, + draggable: !1, + }, + a, + e + ) + } + } + } + })(e) + ), + e + ) +} +function getLeafHeaders(e) { + var t = [] + return ( + (function e(r) { + r.columns && r.columns.length && r.columns.map(e), t.push(r) + })(e), + t + ) +} +var propTypes$a = {}, + useAbsoluteLayout = function(e) { + e.useMain.push(useMain$8) + } +useAbsoluteLayout.pluginName = 'useAbsoluteLayout' +var useMain$8 = function(e) { + PropTypes.checkPropTypes(propTypes$a, e, 'property', 'useAbsoluteLayout') + var t = e.totalColumnsWidth, + r = e.hooks, + o = r.getRowProps, + n = r.getTableBodyProps, + u = r.getHeaderGroupProps, + a = r.getHeaderProps, + s = r.getCellProps, + i = { style: { position: 'relative', width: ''.concat(t, 'px') } } + n.push(function() { + return i + }), + o.push(function() { + return i + }), + u.push(function() { + return i + }) + var c = { position: 'absolute', top: 0 } + return ( + a.push(function(e) { + return { + style: _objectSpread2({}, c, { + left: ''.concat(e.totalLeft, 'px'), + width: ''.concat(e.totalWidth, 'px'), + }), + } + }), + s.push(function(e) { + return { + style: _objectSpread2({}, c, { + left: ''.concat(e.column.totalLeft, 'px'), + width: ''.concat(e.column.totalWidth, 'px'), + }), + } + }), + e + ) + }, + propTypes$b = {}, + useBlockLayout = function(e) { + e.useMain.push(useMain$9) + } +useBlockLayout.pluginName = 'useBlockLayout' +var useMain$9 = function(e) { + PropTypes.checkPropTypes(propTypes$b, e, 'property', 'useBlockLayout') + var t = e.totalColumnsWidth, + r = e.hooks, + o = r.getRowProps, + n = r.getHeaderGroupProps, + u = r.getHeaderProps, + a = r.getCellProps, + s = { style: { display: 'flex', width: ''.concat(t, 'px') } } + o.push(function() { + return s + }), + n.push(function() { + return s + }) + var i = { display: 'inline-block', boxSizing: 'border-box' } + return ( + u.push(function(e) { + return { + style: _objectSpread2({}, i, { width: ''.concat(e.totalWidth, 'px') }), + } + }), + a.push(function(e) { + return { + style: _objectSpread2({}, i, { + width: ''.concat(e.column.totalWidth, 'px'), + }), + } + }), + e + ) +} +;(exports.utils = utils), + (exports.defaultColumn = defaultColumn), + (exports.useTable = useTable), + (exports.defaultState = defaultState), + (exports.useExpanded = useExpanded), + (exports.useFilters = useFilters), + (exports.useGroupBy = useGroupBy), + (exports.useSortBy = useSortBy), + (exports.usePagination = usePagination), + (exports.useRowSelect = useRowSelect), + (exports.useRowState = useRowState), + (exports.useColumnOrder = useColumnOrder), + (exports.useResizeColumns = useResizeColumns), + (exports.useAbsoluteLayout = useAbsoluteLayout), + (exports.useBlockLayout = useBlockLayout), + (exports.actions = actions), + (exports.addActions = addActions) +//# sourceMappingURL=index.js.map diff --git a/dist/index.js.map b/dist/index.js.map new file mode 100644 index 0000000000..b173584caa --- /dev/null +++ b/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../src/utils.js","../src/hooks/useTable.js","../src/actions.js","../src/plugin-hooks/useExpanded.js","../src/filterTypes.js","../src/plugin-hooks/useFilters.js","../src/aggregations.js","../src/plugin-hooks/useGroupBy.js","../src/sortTypes.js","../src/plugin-hooks/useSortBy.js","../src/plugin-hooks/usePagination.js","../src/plugin-hooks/useRowSelect.js","../src/plugin-hooks/useRowState.js","../src/plugin-hooks/useColumnOrder.js","../src/plugin-hooks/useResizeColumns.js","../src/plugin-hooks/useAbsoluteLayout.js","../src/plugin-hooks/useBlockLayout.js"],"sourcesContent":["import React from 'react'\n\nexport const defaultColumn = {\n Cell: ({ cell: { value = '' } }) => String(value),\n show: true,\n width: 150,\n minWidth: 0,\n maxWidth: Number.MAX_SAFE_INTEGER,\n}\n\n// SSR has issues with useLayoutEffect still, so use useEffect during SSR\nexport const safeUseLayoutEffect =\n typeof window !== 'undefined' && process.env.NODE_ENV === 'production'\n ? React.useLayoutEffect\n : React.useEffect\n\n// Find the depth of the columns\nexport function findMaxDepth(columns, depth = 0) {\n return columns.reduce((prev, curr) => {\n if (curr.columns) {\n return Math.max(prev, findMaxDepth(curr.columns, depth + 1))\n }\n return depth\n }, 0)\n}\n\nexport function decorateColumn(\n column,\n userDefaultColumn,\n parent,\n depth,\n index\n) {\n // Apply the userDefaultColumn\n column = { ...defaultColumn, ...userDefaultColumn, ...column }\n\n // First check for string accessor\n let { id, accessor, Header } = column\n\n if (typeof accessor === 'string') {\n id = id || accessor\n const accessorPath = accessor.split('.')\n accessor = row => getBy(row, accessorPath)\n }\n\n if (!id && typeof Header === 'string' && Header) {\n id = Header\n }\n\n if (!id && column.columns) {\n console.error(column)\n throw new Error('A column ID (or unique \"Header\" value) is required!')\n }\n\n if (!id) {\n console.error(column)\n throw new Error('A column ID (or string accessor) is required!')\n }\n\n column = {\n // Make sure there is a fallback header, just in case\n Header: () => <> ,\n ...column,\n // Materialize and override this stuff\n id,\n accessor,\n parent,\n depth,\n index,\n }\n\n return column\n}\n\n// Build the visible columns, headers and flat column list\nexport function decorateColumnTree(columns, defaultColumn, parent, depth = 0) {\n return columns.map((column, columnIndex) => {\n column = decorateColumn(column, defaultColumn, parent, depth, columnIndex)\n if (column.columns) {\n column.columns = decorateColumnTree(\n column.columns,\n defaultColumn,\n column,\n depth + 1\n )\n }\n return column\n })\n}\n\n// Build the header groups from the bottom up\nexport function makeHeaderGroups(flatColumns, defaultColumn) {\n const headerGroups = []\n\n // Build each header group from the bottom up\n const buildGroup = (columns, depth) => {\n const headerGroup = {\n headers: [],\n }\n\n const parentColumns = []\n\n // Do any of these columns have parents?\n const hasParents = columns.some(col => col.parent)\n\n columns.forEach(column => {\n // Are we the first column in this group?\n const isFirst = !parentColumns.length\n\n // What is the latest (last) parent column?\n let latestParentColumn = [...parentColumns].reverse()[0]\n\n // If the column has a parent, add it if necessary\n if (column.parent) {\n const similarParentColumns = parentColumns.filter(\n d => d.originalID === column.parent.id\n )\n if (isFirst || latestParentColumn.originalID !== column.parent.id) {\n parentColumns.push({\n ...column.parent,\n originalID: column.parent.id,\n id: [column.parent.id, similarParentColumns.length].join('_'),\n })\n }\n } else if (hasParents) {\n // If other columns have parents, we'll need to add a place holder if necessary\n const originalID = [column.id, 'placeholder'].join('_')\n const similarParentColumns = parentColumns.filter(\n d => d.originalID === originalID\n )\n const placeholderColumn = decorateColumn(\n {\n originalID,\n id: [column.id, 'placeholder', similarParentColumns.length].join(\n '_'\n ),\n placeholderOf: column,\n },\n defaultColumn\n )\n if (\n isFirst ||\n latestParentColumn.originalID !== placeholderColumn.originalID\n ) {\n parentColumns.push(placeholderColumn)\n }\n }\n\n // Establish the new headers[] relationship on the parent\n if (column.parent || hasParents) {\n latestParentColumn = [...parentColumns].reverse()[0]\n latestParentColumn.headers = latestParentColumn.headers || []\n if (!latestParentColumn.headers.includes(column)) {\n latestParentColumn.headers.push(column)\n }\n }\n\n column.totalHeaderCount = column.headers\n ? column.headers.reduce(\n (sum, header) => sum + header.totalHeaderCount,\n 0\n )\n : 1 // Leaf node columns take up at least one count\n headerGroup.headers.push(column)\n })\n\n headerGroups.push(headerGroup)\n\n if (parentColumns.length) {\n buildGroup(parentColumns, depth + 1)\n }\n }\n\n buildGroup(flatColumns, 0)\n\n return headerGroups.reverse()\n}\n\nexport function determineHeaderVisibility(instance) {\n const { headers } = instance\n\n const handleColumn = (column, parentVisible) => {\n column.isVisible = parentVisible\n ? typeof column.show === 'function'\n ? column.show(instance)\n : !!column.show\n : false\n\n let totalVisibleHeaderCount = 0\n\n if (column.headers && column.headers.length) {\n column.headers.forEach(\n subColumn =>\n (totalVisibleHeaderCount += handleColumn(subColumn, column.isVisible))\n )\n } else {\n totalVisibleHeaderCount = column.isVisible ? 1 : 0\n }\n\n column.totalVisibleHeaderCount = totalVisibleHeaderCount\n\n return totalVisibleHeaderCount\n }\n\n let totalVisibleHeaderCount = 0\n\n headers.forEach(\n subHeader => (totalVisibleHeaderCount += handleColumn(subHeader, true))\n )\n}\n\nexport function getBy(obj, path, def) {\n if (!path) {\n return obj\n }\n const pathObj = makePathArray(path)\n let val\n try {\n val = pathObj.reduce((cursor, pathPart) => cursor[pathPart], obj)\n } catch (e) {\n // continue regardless of error\n }\n return typeof val !== 'undefined' ? val : def\n}\n\nexport function defaultOrderByFn(arr, funcs, dirs) {\n return [...arr].sort((rowA, rowB) => {\n for (let i = 0; i < funcs.length; i += 1) {\n const sortFn = funcs[i]\n const desc = dirs[i] === false || dirs[i] === 'desc'\n const sortInt = sortFn(rowA, rowB)\n if (sortInt !== 0) {\n return desc ? -sortInt : sortInt\n }\n }\n return dirs[0] ? rowA.index - rowB.index : rowB.index - rowA.index\n })\n}\n\nexport function getFirstDefined(...args) {\n for (let i = 0; i < args.length; i += 1) {\n if (typeof args[i] !== 'undefined') {\n return args[i]\n }\n }\n}\n\nexport function defaultGroupByFn(rows, columnID) {\n return rows.reduce((prev, row, i) => {\n // TODO: Might want to implement a key serializer here so\n // irregular column values can still be grouped if needed?\n const resKey = `${row.values[columnID]}`\n prev[resKey] = Array.isArray(prev[resKey]) ? prev[resKey] : []\n prev[resKey].push(row)\n return prev\n }, {})\n}\n\nexport function getElementDimensions(element) {\n const rect = element.getBoundingClientRect()\n const style = window.getComputedStyle(element)\n const margins = {\n left: parseInt(style.marginLeft),\n right: parseInt(style.marginRight),\n }\n const padding = {\n left: parseInt(style.paddingLeft),\n right: parseInt(style.paddingRight),\n }\n return {\n left: Math.ceil(rect.left),\n width: Math.ceil(rect.width),\n outerWidth: Math.ceil(\n rect.width + margins.left + margins.right + padding.left + padding.right\n ),\n marginLeft: margins.left,\n marginRight: margins.right,\n paddingLeft: padding.left,\n paddingRight: padding.right,\n scrollWidth: element.scrollWidth,\n }\n}\n\nexport function flexRender(Comp, props) {\n return isReactComponent(Comp) ? : Comp\n}\n\nfunction isClassComponent(component) {\n return (\n typeof component === 'function' &&\n !!(() => {\n let proto = Object.getPrototypeOf(component)\n return proto.prototype && proto.prototype.isReactComponent\n })()\n )\n}\n\nfunction isFunctionComponent(component) {\n return typeof component === 'function'\n}\n\nfunction isReactComponent(component) {\n return isClassComponent(component) || isFunctionComponent(component)\n}\n\nexport const mergeProps = (...groups) => {\n let props = {}\n groups.forEach(({ style = {}, className, ...rest } = {}) => {\n props = {\n ...props,\n ...rest,\n style: {\n ...(props.style || {}),\n ...style,\n },\n className: [props.className, className].filter(Boolean).join(' '),\n }\n })\n return props\n}\n\nexport const applyHooks = (hooks, initial, ...args) =>\n hooks.reduce((prev, next) => {\n const nextValue = next(prev, ...args)\n if (typeof nextValue === 'undefined') {\n throw new Error(\n 'React Table: A hook just returned undefined! This is not allowed.'\n )\n }\n return nextValue\n }, initial)\n\nexport const applyPropHooks = (hooks, ...args) =>\n hooks.reduce((prev, next) => mergeProps(prev, next(...args)), {})\n\nexport const warnUnknownProps = props => {\n if (Object.keys(props).length) {\n throw new Error(\n `Unknown options passed to useReactTable:\n\n${JSON.stringify(props, null, 2)}`\n )\n }\n}\n\nexport function sum(arr) {\n return arr.reduce((prev, curr) => prev + curr, 0)\n}\n\nexport function isFunction(a) {\n if (typeof a === 'function') {\n return a\n }\n}\n\nexport function flattenBy(columns, childKey) {\n const flatColumns = []\n\n const recurse = columns => {\n columns.forEach(d => {\n if (!d[childKey]) {\n flatColumns.push(d)\n } else {\n recurse(d[childKey])\n }\n })\n }\n\n recurse(columns)\n\n return flatColumns\n}\n\nexport function ensurePluginOrder(plugins, befores, pluginName, afters) {\n const pluginIndex = plugins.findIndex(\n plugin => plugin.pluginName === pluginName\n )\n\n if (pluginIndex === -1) {\n throw new Error(`The plugin ${pluginName} was not found in the plugin list!\nThis usually means you need to need to name your plugin hook by setting the 'pluginName' property of the hook function, eg:\n\n ${pluginName}.pluginName = '${pluginName}'\n`)\n }\n\n befores.forEach(before => {\n const beforeIndex = plugins.findIndex(\n plugin => plugin.pluginName === before\n )\n if (beforeIndex > -1 && beforeIndex > pluginIndex) {\n throw new Error(\n `React Table: The ${pluginName} plugin hook must be placed after the ${before} plugin hook!`\n )\n }\n })\n\n afters.forEach(after => {\n const afterIndex = plugins.findIndex(plugin => plugin.pluginName === after)\n if (afterIndex > -1 && afterIndex < pluginIndex) {\n throw new Error(\n `React Table: The ${pluginName} plugin hook must be placed before the ${after} plugin hook!`\n )\n }\n })\n}\n\nexport function expandRows(\n rows,\n { manualExpandedKey, expanded, expandSubRows = true }\n) {\n const expandedRows = []\n\n const handleRow = row => {\n const key = row.path.join('.')\n\n row.isExpanded =\n (row.original && row.original[manualExpandedKey]) ||\n expanded.includes(key)\n\n row.canExpand = row.subRows && !!row.subRows.length\n\n expandedRows.push(row)\n\n if (expandSubRows && row.subRows && row.subRows.length && row.isExpanded) {\n row.subRows.forEach(handleRow)\n }\n }\n\n rows.forEach(handleRow)\n\n return expandedRows\n}\n\n//\n\nfunction makePathArray(obj) {\n return (\n flattenDeep(obj)\n // remove all periods in parts\n .map(d => String(d).replace('.', '_'))\n // join parts using period\n .join('.')\n // replace brackets with periods\n .replace(/\\[/g, '.')\n .replace(/\\]/g, '')\n // split it back out on periods\n .split('.')\n )\n}\n\nfunction flattenDeep(arr, newArr = []) {\n if (!Array.isArray(arr)) {\n newArr.push(arr)\n } else {\n for (let i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], newArr)\n }\n }\n return newArr\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n//\nimport {\n applyHooks,\n applyPropHooks,\n mergeProps,\n flexRender,\n decorateColumnTree,\n makeHeaderGroups,\n flattenBy,\n determineHeaderVisibility,\n} from '../utils'\n\nconst propTypes = {\n // General\n data: PropTypes.array.isRequired,\n columns: PropTypes.arrayOf(PropTypes.object).isRequired,\n defaultColumn: PropTypes.object,\n getSubRows: PropTypes.func,\n getRowID: PropTypes.func,\n debug: PropTypes.bool,\n}\n\nconst renderErr =\n 'You must specify a valid render component. This could be \"column.Cell\", \"column.Header\", \"column.Filter\", \"column.Aggregated\" or any other custom renderer component.'\n\nexport const defaultState = {}\n\nconst defaultInitialState = {}\nconst defaultColumnInstance = {}\nconst defaultReducer = (old, newState) => newState\nconst defaultGetSubRows = (row, index) => {\n if (row !== null && row.subRows) {\n return row.subRows\n } else {\n return []\n }\n}\nconst defaultGetRowID = (row, index) => index\n\nexport const useTable = (props, ...plugins) => {\n // Validate props\n PropTypes.checkPropTypes(propTypes, props, 'property', 'useTable')\n\n // Destructure props\n let {\n data,\n columns: userColumns,\n initialState = defaultInitialState,\n state: userState,\n defaultColumn = defaultColumnInstance,\n getSubRows = defaultGetSubRows,\n getRowID = defaultGetRowID,\n reducer = defaultReducer,\n debug,\n } = props\n\n debug = process.env.NODE_ENV === 'production' ? false : debug\n\n // But use the users table state if provided\n let [originalState, originalSetState] = React.useState({\n ...defaultState,\n ...initialState,\n })\n\n const state = React.useMemo(() => {\n if (userState) {\n const newState = {\n ...originalState,\n }\n Object.keys(userState).forEach(key => {\n newState[key] = userState[key]\n })\n return newState\n }\n return originalState\n }, [originalState, userState])\n\n const setState = React.useCallback(\n (updater, type) => {\n return originalSetState(old => {\n const newState = typeof updater === 'function' ? updater(old) : updater\n return reducer(old, newState, type)\n })\n },\n [reducer]\n )\n\n // The table instance ref\n let instanceRef = React.useRef({})\n\n Object.assign(instanceRef.current, {\n ...props,\n data, // The raw data\n state,\n setState, // The resolved table state\n plugins, // All resolved plugins\n hooks: {\n columnsBeforeHeaderGroups: [],\n columnsBeforeHeaderGroupsDeps: [],\n useBeforeDimensions: [],\n useMain: [],\n useRows: [],\n prepareRow: [],\n getTableProps: [],\n getTableBodyProps: [],\n getRowProps: [],\n getHeaderGroupProps: [],\n getHeaderProps: [],\n getCellProps: [],\n },\n })\n\n // Allow plugins to register hooks\n if (process.env.NODE_ENV === 'development' && debug) console.time('plugins')\n\n plugins.filter(Boolean).forEach(plugin => {\n plugin(instanceRef.current.hooks)\n })\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('plugins')\n\n // Decorate All the columns\n let columns = React.useMemo(\n () => decorateColumnTree(userColumns, defaultColumn),\n [defaultColumn, userColumns]\n )\n\n // Get the flat list of all columns andllow hooks to decorate\n // those columns (and trigger this memoization via deps)\n let flatColumns = React.useMemo(() => {\n if (process.env.NODE_ENV === 'development' && debug)\n console.time('hooks.columnsBeforeHeaderGroups')\n\n let newColumns = applyHooks(\n instanceRef.current.hooks.columnsBeforeHeaderGroups,\n flattenBy(columns, 'columns'),\n instanceRef.current\n )\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('hooks.columnsBeforeHeaderGroups')\n return newColumns\n }, [\n columns,\n debug,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n ...applyHooks(\n instanceRef.current.hooks.columnsBeforeHeaderGroupsDeps,\n [],\n instanceRef.current\n ),\n ])\n\n // Make the headerGroups\n const headerGroups = React.useMemo(\n () => makeHeaderGroups(flatColumns, defaultColumn),\n [defaultColumn, flatColumns]\n )\n\n const headers = React.useMemo(() => headerGroups[0].headers, [headerGroups])\n\n Object.assign(instanceRef.current, {\n columns,\n flatColumns,\n headerGroups,\n headers,\n })\n\n // Access the row model\n const [rows, flatRows] = React.useMemo(() => {\n if (process.env.NODE_ENV === 'development' && debug)\n console.time('getAccessedRows')\n\n let flatRows = []\n\n // Access the row's data\n const accessRow = (originalRow, i, depth = 0, parentPath = []) => {\n // Keep the original reference around\n const original = originalRow\n\n const rowID = getRowID(originalRow, i)\n\n // Make the new path for the row\n const path = [...parentPath, rowID]\n\n const row = {\n original,\n index: i,\n path, // used to create a key for each row even if not nested\n depth,\n cells: [{}], // This is a dummy cell\n }\n\n flatRows.push(row)\n\n // Process any subRows\n let subRows = getSubRows(originalRow, i)\n\n if (subRows) {\n row.subRows = subRows.map((d, i) => accessRow(d, i, depth + 1, path))\n }\n\n // Override common array functions (and the dummy cell's getCellProps function)\n // to show an error if it is accessed without calling prepareRow\n const unpreparedAccessWarning = () => {\n throw new Error(\n 'React-Table: You have not called prepareRow(row) one or more rows you are attempting to render.'\n )\n }\n row.cells.map = unpreparedAccessWarning\n row.cells.filter = unpreparedAccessWarning\n row.cells.forEach = unpreparedAccessWarning\n row.cells[0].getCellProps = unpreparedAccessWarning\n\n // Create the cells and values\n row.values = {}\n flatColumns.forEach(column => {\n row.values[column.id] = column.accessor\n ? column.accessor(originalRow, i, { subRows, depth, data })\n : undefined\n })\n\n return row\n }\n\n // Use the resolved data\n const accessedData = data.map((d, i) => accessRow(d, i))\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('getAccessedRows')\n return [accessedData, flatRows]\n }, [debug, data, getRowID, getSubRows, flatColumns])\n\n instanceRef.current.rows = rows\n instanceRef.current.flatRows = flatRows\n\n // Determine column visibility\n determineHeaderVisibility(instanceRef.current)\n\n // Provide a flat header list for utilities\n instanceRef.current.flatHeaders = headerGroups.reduce(\n (all, headerGroup) => [...all, ...headerGroup.headers],\n []\n )\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.time('hooks.useBeforeDimensions')\n instanceRef.current = applyHooks(\n instanceRef.current.hooks.useBeforeDimensions,\n instanceRef.current\n )\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('hooks.useBeforeDimensions')\n\n calculateDimensions(instanceRef.current)\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.time('hooks.useMain')\n instanceRef.current = applyHooks(\n instanceRef.current.hooks.useMain,\n instanceRef.current\n )\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('hooks.useMain')\n\n // Each materialized header needs to be assigned a render function and other\n // prop getter properties here.\n instanceRef.current.flatHeaders.forEach(column => {\n // Give columns/headers rendering power\n column.render = (type, userProps = {}) => {\n const Comp = typeof type === 'string' ? column[type] : type\n\n if (typeof Comp === 'undefined') {\n throw new Error(renderErr)\n }\n\n return flexRender(Comp, {\n ...instanceRef.current,\n column,\n ...userProps,\n })\n }\n\n // Give columns/headers a default getHeaderProps\n column.getHeaderProps = props =>\n mergeProps(\n {\n key: ['header', column.id].join('_'),\n colSpan: column.totalVisibleHeaderCount,\n },\n applyPropHooks(\n instanceRef.current.hooks.getHeaderProps,\n column,\n instanceRef.current\n ),\n props\n )\n })\n\n instanceRef.current.headerGroups.forEach((headerGroup, i) => {\n // Filter out any headers and headerGroups that don't have visible columns\n headerGroup.headers = headerGroup.headers.filter(header => {\n const recurse = headers =>\n headers.filter(header => {\n if (header.headers) {\n return recurse(header.headers)\n }\n return header.isVisible\n }).length\n if (header.headers) {\n return recurse(header.headers)\n }\n return header.isVisible\n })\n\n // Give headerGroups getRowProps\n if (headerGroup.headers.length) {\n headerGroup.getHeaderGroupProps = (props = {}) =>\n mergeProps(\n {\n key: [`header${i}`].join('_'),\n },\n applyPropHooks(\n instanceRef.current.hooks.getHeaderGroupProps,\n headerGroup,\n instanceRef.current\n ),\n props\n )\n\n return true\n }\n })\n\n // Run the rows (this could be a dangerous hook with a ton of data)\n if (process.env.NODE_ENV === 'development' && debug)\n console.time('hooks.useRows')\n instanceRef.current.rows = applyHooks(\n instanceRef.current.hooks.useRows,\n instanceRef.current.rows,\n instanceRef.current\n )\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('hooks.useRows')\n\n // The prepareRow function is absolutely necessary and MUST be called on\n // any rows the user wishes to be displayed.\n\n instanceRef.current.prepareRow = React.useCallback(row => {\n row.getRowProps = props =>\n mergeProps(\n { key: ['row', ...row.path].join('_') },\n applyPropHooks(\n instanceRef.current.hooks.getRowProps,\n row,\n instanceRef.current\n ),\n props\n )\n\n // Build the visible cells for each row\n row.cells = instanceRef.current.flatColumns\n .filter(d => d.isVisible)\n .map(column => {\n const cell = {\n column,\n row,\n value: row.values[column.id],\n }\n\n // Give each cell a getCellProps base\n cell.getCellProps = props => {\n const columnPathStr = [...row.path, column.id].join('_')\n return mergeProps(\n {\n key: ['cell', columnPathStr].join('_'),\n },\n applyPropHooks(\n instanceRef.current.hooks.getCellProps,\n cell,\n instanceRef.current\n ),\n props\n )\n }\n\n // Give each cell a renderer function (supports multiple renderers)\n cell.render = (type, userProps = {}) => {\n const Comp = typeof type === 'string' ? column[type] : type\n\n if (typeof Comp === 'undefined') {\n throw new Error(renderErr)\n }\n\n return flexRender(Comp, {\n ...instanceRef.current,\n column,\n row,\n cell,\n ...userProps,\n })\n }\n\n return cell\n })\n\n // need to apply any row specific hooks (useExpanded requires this)\n applyHooks(instanceRef.current.hooks.prepareRow, row, instanceRef.current)\n }, [])\n\n instanceRef.current.getTableProps = userProps =>\n mergeProps(\n applyPropHooks(\n instanceRef.current.hooks.getTableProps,\n instanceRef.current\n ),\n userProps\n )\n\n instanceRef.current.getTableBodyProps = userProps =>\n mergeProps(\n applyPropHooks(\n instanceRef.current.hooks.getTableBodyProps,\n instanceRef.current\n ),\n userProps\n )\n\n return instanceRef.current\n}\n\nfunction calculateDimensions(instance) {\n const { headers } = instance\n\n instance.totalColumnsWidth = calculateHeaderWidths(headers)\n}\n\nfunction calculateHeaderWidths(headers, left = 0) {\n let sumTotalWidth = 0\n\n headers.forEach(header => {\n let { headers: subHeaders } = header\n\n header.totalLeft = left\n\n if (subHeaders && subHeaders.length) {\n header.totalWidth = calculateHeaderWidths(subHeaders, left)\n } else {\n header.totalWidth = Math.min(\n Math.max(header.minWidth, header.width),\n header.maxWidth\n )\n }\n if (header.isVisible) {\n left += header.totalWidth\n sumTotalWidth += header.totalWidth\n }\n })\n\n return sumTotalWidth\n}\n","const actions = {}\nconst types = {}\n\nexport { actions, types }\n\nexport const addActions = (...acts) => {\n acts.forEach(action => {\n // Action values are formatted this way to discourage\n // you (the dev) from interacting with them in any way\n // other than importing `{ actions } from 'react-table'`\n // and referencing an action via `actions[actionName]`\n actions[action] = `React Table Action: ${action}`\n types[actions[action]] = true\n })\n}\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { mergeProps, applyPropHooks, expandRows } from '../utils'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\n\ndefaultState.expanded = []\n\naddActions('toggleExpanded', 'useExpanded')\n\nconst propTypes = {\n manualExpandedKey: PropTypes.string,\n paginateExpandedRows: PropTypes.bool,\n}\n\nexport const useExpanded = hooks => {\n hooks.getExpandedToggleProps = []\n hooks.useMain.push(useMain)\n}\n\nuseExpanded.pluginName = 'useExpanded'\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useExpanded')\n\n const {\n debug,\n rows,\n manualExpandedKey = 'expanded',\n paginateExpandedRows = true,\n expandSubRows = true,\n hooks,\n state: { expanded },\n setState,\n } = instance\n\n const toggleExpandedByPath = (path, set) => {\n const key = path.join('.')\n\n return setState(old => {\n const exists = old.expanded.includes(key)\n const shouldExist = typeof set !== 'undefined' ? set : !exists\n let newExpanded = new Set(old.expanded)\n\n if (!exists && shouldExist) {\n newExpanded.add(key)\n } else if (exists && !shouldExist) {\n newExpanded.delete(key)\n } else {\n return old\n }\n\n return {\n ...old,\n expanded: [...newExpanded.values()],\n }\n }, actions.toggleExpanded)\n }\n\n hooks.prepareRow.push((row, instance) => {\n row.toggleExpanded = set => toggleExpandedByPath(row.path, set)\n const propsFromHooks = applyPropHooks(\n instance.hooks.getExpandedToggleProps,\n row,\n instance\n )\n row.getExpandedToggleProps = props => {\n return mergeProps(\n {\n onClick: e => {\n e.persist()\n row.toggleExpanded()\n },\n style: {\n cursor: 'pointer',\n },\n title: 'Toggle Expanded',\n },\n propsFromHooks,\n props\n )\n }\n return row\n })\n\n const expandedRows = useMemo(() => {\n if (process.env.NODE_ENV === 'development' && debug)\n console.info('getExpandedRows')\n\n if (paginateExpandedRows) {\n return expandRows(rows, { manualExpandedKey, expanded, expandSubRows })\n }\n\n return rows\n }, [\n debug,\n paginateExpandedRows,\n rows,\n manualExpandedKey,\n expanded,\n expandSubRows,\n ])\n\n const expandedDepth = findExpandedDepth(expanded)\n\n return {\n ...instance,\n toggleExpandedByPath,\n expandedDepth,\n rows: expandedRows,\n }\n}\n\nfunction findExpandedDepth(expanded) {\n let maxDepth = 0\n\n expanded.forEach(key => {\n const path = key.split('.')\n maxDepth = Math.max(maxDepth, path.length)\n })\n\n return maxDepth\n}","export const text = (rows, id, filterValue) => {\n rows = rows.filter(row => {\n const rowValue = row.values[id]\n return String(rowValue)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase())\n })\n return rows\n}\n\ntext.autoRemove = val => !val\n\nexport const exactText = (rows, id, filterValue) => {\n return rows.filter(row => {\n const rowValue = row.values[id]\n return rowValue !== undefined\n ? String(rowValue).toLowerCase() === String(filterValue).toLowerCase()\n : true\n })\n}\n\nexactText.autoRemove = val => !val\n\nexport const exactTextCase = (rows, id, filterValue) => {\n return rows.filter(row => {\n const rowValue = row.values[id]\n return rowValue !== undefined\n ? String(rowValue) === String(filterValue)\n : true\n })\n}\n\nexactTextCase.autoRemove = val => !val\n\nexport const includes = (rows, id, filterValue) => {\n return rows.filter(row => {\n const rowValue = row.values[id]\n return filterValue.includes(rowValue)\n })\n}\n\nincludes.autoRemove = val => !val || !val.length\n\nexport const includesAll = (rows, id, filterValue) => {\n return rows.filter(row => {\n const rowValue = row.values[id]\n return (\n rowValue &&\n rowValue.length &&\n filterValue.every(val => rowValue.includes(val))\n )\n })\n}\n\nincludesAll.autoRemove = val => !val || !val.length\n\nexport const exact = (rows, id, filterValue) => {\n return rows.filter(row => {\n const rowValue = row.values[id]\n return rowValue === filterValue\n })\n}\n\nexact.autoRemove = val => typeof val === 'undefined'\n\nexport const equals = (rows, id, filterValue) => {\n return rows.filter(row => {\n const rowValue = row.values[id]\n // eslint-disable-next-line eqeqeq\n return rowValue == filterValue\n })\n}\n\nequals.autoRemove = val => val == null\n\nexport const between = (rows, id, filterValue) => {\n let [min, max] = filterValue || []\n\n min = typeof min === 'number' ? min : -Infinity\n max = typeof max === 'number' ? max : Infinity\n\n if (min > max) {\n const temp = min\n min = max\n max = temp\n }\n\n return rows.filter(row => {\n const rowValue = row.values[id]\n return rowValue >= min && rowValue <= max\n })\n}\n\nbetween.autoRemove = val =>\n !val || (typeof val[0] !== 'number' && typeof val[1] !== 'number')\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { getFirstDefined, isFunction } from '../utils'\nimport * as filterTypes from '../filterTypes'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\n\ndefaultState.filters = {}\n\naddActions('setFilter', 'setAllFilters')\n\nconst propTypes = {\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n disableFilters: PropTypes.bool,\n Filter: PropTypes.any,\n })\n ),\n\n manualFilters: PropTypes.bool,\n}\n\nexport const useFilters = hooks => {\n hooks.useMain.push(useMain)\n}\n\nuseFilters.pluginName = 'useFilters'\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useFilters')\n\n const {\n debug,\n rows,\n flatRows,\n flatColumns,\n filterTypes: userFilterTypes,\n manualFilters,\n disableFilters,\n state: { filters },\n setState,\n } = instance\n\n const preFilteredRows = rows\n const preFilteredFlatRows = flatRows\n\n const setFilter = (id, updater) => {\n const column = flatColumns.find(d => d.id === id)\n\n if (!column) {\n throw new Error(`React-Table: Could not find a column with id: ${id}`)\n }\n\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n return setState(old => {\n const newFilter =\n typeof updater === 'function' ? updater(old.filters[id]) : updater\n\n //\n if (shouldAutoRemove(filterMethod.autoRemove, newFilter)) {\n const { [id]: remove, ...newFilters } = old.filters\n return {\n ...old,\n filters: newFilters,\n }\n }\n\n return {\n ...old,\n filters: {\n ...old.filters,\n [id]: newFilter,\n },\n }\n }, actions.setFilter)\n }\n\n const setAllFilters = updater => {\n return setState(old => {\n const newFilters = typeof updater === 'function' ? updater(old) : updater\n\n // Filter out undefined values\n Object.keys(newFilters).forEach(id => {\n const newFilter = newFilters[id]\n const column = flatColumns.find(d => d.id === id)\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (shouldAutoRemove(filterMethod.autoRemove, newFilter)) {\n delete newFilters[id]\n }\n })\n\n return {\n ...old,\n filters: newFilters,\n }\n }, actions.setAllFilters)\n }\n\n flatColumns.forEach(column => {\n const { id, accessor, disableFilters: columnDisableFilters } = column\n\n // Determine if a column is filterable\n column.canFilter = accessor\n ? getFirstDefined(\n columnDisableFilters === true ? false : undefined,\n disableFilters === true ? false : undefined,\n true\n )\n : false\n\n // Provide the column a way of updating the filter value\n column.setFilter = val => setFilter(column.id, val)\n\n // Provide the current filter value to the column for\n // convenience\n column.filterValue = filters[id]\n })\n\n // TODO: Create a filter cache for incremental high speed multi-filtering\n // This gets pretty complicated pretty fast, since you have to maintain a\n // cache for each row group (top-level rows, and each row's recursive subrows)\n // This would make multi-filtering a lot faster though. Too far?\n\n const { filteredRows, filteredFlatRows } = React.useMemo(() => {\n if (manualFilters || !Object.keys(filters).length) {\n return {\n filteredRows: rows,\n filteredFlatRows: flatRows,\n }\n }\n\n const filteredFlatRows = []\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.info('getFilteredRows')\n\n // Filters top level and nested rows\n const filterRows = (rows, depth = 0) => {\n let filteredRows = rows\n\n filteredRows = Object.entries(filters).reduce(\n (filteredSoFar, [columnID, filterValue]) => {\n // Find the filters column\n const column = flatColumns.find(d => d.id === columnID)\n\n if (!column) {\n return filteredSoFar\n }\n\n if (depth === 0) {\n column.preFilteredRows = filteredSoFar\n }\n\n const filterMethod = getFilterMethod(\n column.filter,\n userFilterTypes || {},\n filterTypes\n )\n\n if (!filterMethod) {\n console.warn(\n `Could not find a valid 'column.filter' for column with the ID: ${column.id}.`\n )\n return filteredSoFar\n }\n\n // Pass the rows, id, filterValue and column to the filterMethod\n // to get the filtered rows back\n column.filteredRows = filterMethod(\n filteredSoFar,\n columnID,\n filterValue,\n column\n )\n\n return column.filteredRows\n },\n rows\n )\n\n // Apply the filter to any subRows\n // We technically could do this recursively in the above loop,\n // but that would severely hinder the API for the user, since they\n // would be required to do that recursion in some scenarios\n filteredRows = filteredRows.map(row => {\n filteredFlatRows.push(row)\n if (!row.subRows) {\n return row\n }\n return {\n ...row,\n subRows:\n row.subRows && row.subRows.length > 0\n ? filterRows(row.subRows, depth + 1)\n : row.subRows,\n }\n })\n\n return filteredRows\n }\n\n return {\n filteredRows: filterRows(rows),\n filteredFlatRows,\n }\n }, [\n manualFilters,\n filters,\n debug,\n rows,\n flatRows,\n flatColumns,\n userFilterTypes,\n ])\n\n React.useMemo(() => {\n // Now that each filtered column has it's partially filtered rows,\n // lets assign the final filtered rows to all of the other columns\n const nonFilteredColumns = flatColumns.filter(\n column => !Object.keys(filters).includes(column.id)\n )\n\n // This essentially enables faceted filter options to be built easily\n // using every column's preFilteredRows value\n nonFilteredColumns.forEach(column => {\n column.preFilteredRows = filteredRows\n column.filteredRows = filteredRows\n })\n }, [filteredRows, filters, flatColumns])\n\n return {\n ...instance,\n setFilter,\n setAllFilters,\n preFilteredRows,\n preFilteredFlatRows,\n rows: filteredRows,\n flatRows: filteredFlatRows,\n }\n}\n\nfunction shouldAutoRemove(autoRemove, value) {\n return autoRemove ? autoRemove(value) : typeof value === 'undefined'\n}\n\nfunction getFilterMethod(filter, userFilterTypes, filterTypes) {\n return (\n isFunction(filter) ||\n userFilterTypes[filter] ||\n filterTypes[filter] ||\n filterTypes.text\n )\n}\n","export function sum(values, rows) {\n return values.reduce((sum, next) => sum + next, 0)\n}\n\nexport function average(values, rows) {\n return Math.round((sum(values, rows) / values.length) * 100) / 100\n}\n\nexport function median(values) {\n let min = values[0] || ''\n let max = values[0] || ''\n\n values.forEach(value => {\n min = Math.min(min, value)\n max = Math.max(max, value)\n })\n\n return (min + max) / 2\n}\n\nexport function uniqueCount(values) {\n return new Set(values).size\n}\n\nexport function count(values) {\n return values.length\n}\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport * as aggregations from '../aggregations'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\nimport {\n mergeProps,\n applyPropHooks,\n defaultGroupByFn,\n getFirstDefined,\n ensurePluginOrder,\n} from '../utils'\n\ndefaultState.groupBy = []\n\naddActions('toggleGroupBy')\n\nconst propTypes = {\n // General\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n aggregate: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.string,\n PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.func, PropTypes.string])\n ),\n ]),\n disableGrouping: PropTypes.bool,\n Aggregated: PropTypes.any,\n })\n ),\n groupByFn: PropTypes.func,\n manualGrouping: PropTypes.bool,\n disableGrouping: PropTypes.bool,\n aggregations: PropTypes.object,\n}\n\nexport const useGroupBy = hooks => {\n hooks.getGroupByToggleProps = []\n hooks.columnsBeforeHeaderGroups.push(columnsBeforeHeaderGroups)\n hooks.columnsBeforeHeaderGroupsDeps.push((deps, instance) => {\n deps.push(instance.state.groupBy)\n return deps\n })\n hooks.useMain.push(useMain)\n}\n\nuseGroupBy.pluginName = 'useGroupBy'\n\nfunction columnsBeforeHeaderGroups(flatColumns, { state: { groupBy } }) {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n\n const groupByColumns = groupBy.map(g => flatColumns.find(col => col.id === g))\n const nonGroupByColumns = flatColumns.filter(col => !groupBy.includes(col.id))\n\n // If a groupByBoundary column is found, place the groupBy's after it\n const groupByBoundaryColumnIndex =\n flatColumns.findIndex(column => column.groupByBoundary) + 1\n\n return [\n ...nonGroupByColumns.slice(0, groupByBoundaryColumnIndex),\n ...groupByColumns,\n ...nonGroupByColumns.slice(groupByBoundaryColumnIndex),\n ]\n}\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useGroupBy')\n\n const {\n debug,\n rows,\n flatColumns,\n flatHeaders,\n groupByFn = defaultGroupByFn,\n manualGroupBy,\n disableGrouping,\n aggregations: userAggregations = {},\n hooks,\n plugins,\n state: { groupBy },\n setState,\n } = instance\n\n ensurePluginOrder(plugins, [], 'useGroupBy', ['useSortBy', 'useExpanded'])\n\n flatColumns.forEach(column => {\n const { id, accessor, disableGrouping: columnDisableGrouping } = column\n column.isGrouped = groupBy.includes(id)\n column.groupedIndex = groupBy.indexOf(id)\n\n column.canGroupBy = accessor\n ? getFirstDefined(\n columnDisableGrouping === true ? false : undefined,\n disableGrouping === true ? false : undefined,\n true\n )\n : false\n\n if (column.canGroupBy) {\n column.toggleGroupBy = () => toggleGroupBy(column.id)\n }\n\n column.Aggregated = column.Aggregated || column.Cell\n })\n\n const toggleGroupBy = (id, toggle) => {\n return setState(old => {\n const resolvedToggle =\n typeof toggle !== 'undefined' ? toggle : !groupBy.includes(id)\n if (resolvedToggle) {\n return {\n ...old,\n groupBy: [...groupBy, id],\n }\n }\n return {\n ...old,\n groupBy: groupBy.filter(d => d !== id),\n }\n }, actions.toggleGroupBy)\n }\n\n flatHeaders.forEach(\n // avoid sharing instance in contexts of other functions\n (instance => header => {\n const { canGroupBy } = header\n const groupByTogglePropsFromHooks = applyPropHooks(\n instance.hooks.getGroupByToggleProps,\n header,\n instance\n )\n header.getGroupByToggleProps = props => {\n return mergeProps(\n {\n onClick: canGroupBy\n ? e => {\n e.persist()\n header.toggleGroupBy()\n }\n : undefined,\n style: {\n cursor: canGroupBy ? 'pointer' : undefined,\n },\n title: 'Toggle GroupBy',\n },\n groupByTogglePropsFromHooks,\n props\n )\n }\n })(instance)\n )\n\n hooks.prepareRow.push(row => {\n row.cells.forEach(cell => {\n // Grouped cells are in the groupBy and the pivot cell for the row\n cell.isGrouped = cell.column.isGrouped && cell.column.id === row.groupByID\n // Repeated cells are any columns in the groupBy that are not grouped\n cell.isRepeatedValue = !cell.isGrouped && cell.column.isGrouped\n // Aggregated cells are not grouped, not repeated, but still have subRows\n cell.isAggregated =\n !cell.isGrouped && !cell.isRepeatedValue && row.canExpand\n })\n return row\n })\n\n const groupedRows = useMemo(() => {\n if (manualGroupBy || !groupBy.length) {\n return rows\n }\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.info('getGroupedRows')\n // Find the columns that can or are aggregating\n\n // Uses each column to aggregate rows into a single value\n const aggregateRowsToValues = (rows, isSourceRows) => {\n const values = {}\n\n flatColumns.forEach(column => {\n // Don't aggregate columns that are in the groupBy\n if (groupBy.includes(column.id)) {\n values[column.id] = rows[0] ? rows[0].values[column.id] : null\n return\n }\n\n const columnValues = rows.map(d => d.values[column.id])\n\n let aggregator = column.aggregate\n\n if (Array.isArray(aggregator)) {\n if (aggregator.length !== 2) {\n console.info({ column })\n throw new Error(\n `React Table: Complex aggregators must have 2 values, eg. aggregate: ['sum', 'count']. More info above...`\n )\n }\n if (isSourceRows) {\n aggregator = aggregator[1]\n } else {\n aggregator = aggregator[0]\n }\n }\n\n let aggregateFn =\n typeof aggregator === 'function'\n ? aggregator\n : userAggregations[aggregator] || aggregations[aggregator]\n\n if (aggregateFn) {\n values[column.id] = aggregateFn(columnValues, rows)\n } else if (aggregator) {\n console.info({ column })\n throw new Error(\n `React Table: Invalid aggregate option for column listed above`\n )\n } else {\n values[column.id] = null\n }\n })\n return values\n }\n\n // Recursively group the data\n const groupRecursively = (rows, depth = 0, parentPath = []) => {\n // This is the last level, just return the rows\n if (depth >= groupBy.length) {\n return rows\n }\n\n const columnID = groupBy[depth]\n\n // Group the rows together for this level\n let groupedRows = groupByFn(rows, columnID)\n\n // Recurse to sub rows before aggregation\n groupedRows = Object.entries(groupedRows).map(\n ([groupByVal, subRows], index) => {\n const path = [...parentPath, `${columnID}:${groupByVal}`]\n\n subRows = groupRecursively(subRows, depth + 1, path)\n\n const values = aggregateRowsToValues(\n subRows,\n depth + 1 >= groupBy.length\n )\n\n const row = {\n isAggregated: true,\n groupByID: columnID,\n groupByVal,\n values,\n subRows,\n depth,\n index,\n path,\n }\n\n return row\n }\n )\n\n return groupedRows\n }\n\n // Assign the new data\n return groupRecursively(rows)\n }, [\n manualGroupBy,\n groupBy,\n debug,\n rows,\n flatColumns,\n userAggregations,\n groupByFn,\n ])\n\n return {\n ...instance,\n toggleGroupBy,\n rows: groupedRows,\n preGroupedRows: rows,\n }\n}\n","const reSplitAlphaNumeric = /([0-9]+)/gm\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nexport const alphanumeric = (rowA, rowB, columnID) => {\n let a = getRowValueByColumnID(rowA, columnID)\n let b = getRowValueByColumnID(rowB, columnID)\n // Force to strings (or \"\" for unsupported types)\n a = toString(a)\n b = toString(b)\n\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n a = a.split(reSplitAlphaNumeric).filter(Boolean)\n b = b.split(reSplitAlphaNumeric).filter(Boolean)\n\n // While\n while (a.length && b.length) {\n let aa = a.shift()\n let bb = b.shift()\n\n const an = parseInt(aa, 10)\n const bn = parseInt(bb, 10)\n\n const combo = [an, bn].sort()\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1\n }\n if (bb > aa) {\n return -1\n }\n continue\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1\n }\n\n // Both are numbers\n if (an > bn) {\n return 1\n }\n if (bn > an) {\n return -1\n }\n }\n\n return a.length - b.length\n}\n\nexport function datetime(rowA, rowB, columnID) {\n let a = getRowValueByColumnID(rowA, columnID)\n let b = getRowValueByColumnID(rowB, columnID)\n\n a = a.getTime()\n b = b.getTime()\n\n return compareBasic(a, b)\n}\n\nexport function basic(rowA, rowB, columnID) {\n let a = getRowValueByColumnID(rowA, columnID)\n let b = getRowValueByColumnID(rowB, columnID)\n\n return compareBasic(a, b)\n}\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1\n}\n\nfunction getRowValueByColumnID(row, columnID) {\n return row.values[columnID]\n}\n\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return ''\n }\n return String(a)\n }\n if (typeof a === 'string') {\n return a\n }\n return ''\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { ensurePluginOrder, defaultColumn } from '../utils'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\nimport * as sortTypes from '../sortTypes'\nimport {\n mergeProps,\n applyPropHooks,\n getFirstDefined,\n defaultOrderByFn,\n isFunction,\n} from '../utils'\n\ndefaultState.sortBy = []\ndefaultColumn.sortType = 'alphanumeric'\ndefaultColumn.sortDescFirst = false\n\naddActions('sortByChange')\n\nconst propTypes = {\n // General\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n sortType: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n sortDescFirst: PropTypes.bool,\n disableSorting: PropTypes.bool,\n })\n ),\n orderByFn: PropTypes.func,\n sortTypes: PropTypes.object,\n manualSorting: PropTypes.bool,\n disableSorting: PropTypes.bool,\n disableMultiSort: PropTypes.bool,\n isMultiSortEvent: PropTypes.func,\n maxMultiSortColCount: PropTypes.number,\n disableSortRemove: PropTypes.bool,\n disableMultiRemove: PropTypes.bool,\n}\n\nexport const useSortBy = hooks => {\n hooks.useMain.push(useMain)\n // Add custom hooks\n hooks.getSortByToggleProps = []\n}\n\nuseSortBy.pluginName = 'useSortBy'\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useSortBy')\n\n const {\n debug,\n rows,\n flatColumns,\n orderByFn = defaultOrderByFn,\n sortTypes: userSortTypes,\n manualSorting,\n disableSorting,\n disableSortRemove,\n disableMultiRemove,\n disableMultiSort,\n isMultiSortEvent = e => e.shiftKey,\n maxMultiSortColCount = Number.MAX_SAFE_INTEGER,\n flatHeaders,\n state: { sortBy },\n setState,\n plugins,\n } = instance\n\n ensurePluginOrder(plugins, ['useFilters'], 'useSortBy', [])\n\n // Updates sorting based on a columnID, desc flag and multi flag\n const toggleSortBy = (columnID, desc, multi) => {\n return setState(old => {\n const { sortBy } = old\n\n // Find the column for this columnID\n const column = flatColumns.find(d => d.id === columnID)\n const { sortDescFirst } = column\n\n // Find any existing sortBy for this column\n const existingSortBy = sortBy.find(d => d.id === columnID)\n const existingIndex = sortBy.findIndex(d => d.id === columnID)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSortBy = []\n\n // What should we do with this sort action?\n let action\n\n if (!disableMultiSort && multi) {\n if (existingSortBy) {\n action = 'toggle'\n } else {\n action = 'add'\n }\n } else {\n // Normal mode\n if (existingIndex !== sortBy.length - 1) {\n action = 'replace'\n } else if (existingSortBy) {\n action = 'toggle'\n } else {\n action = 'replace'\n }\n }\n\n // Handle toggle states that will remove the sortBy\n if (\n action === 'toggle' && // Must be toggling\n !disableSortRemove && // If disableSortRemove, disable in general\n !hasDescDefined && // Must not be setting desc\n (multi ? !disableMultiRemove : true) && // If multi, don't allow if disableMultiRemove\n ((existingSortBy && // Finally, detect if it should indeed be removed\n (existingSortBy.desc && !sortDescFirst)) ||\n (!existingSortBy.desc && sortDescFirst))\n ) {\n action = 'remove'\n }\n\n if (action === 'replace') {\n newSortBy = [\n {\n id: columnID,\n desc: hasDescDefined ? desc : sortDescFirst,\n },\n ]\n } else if (action === 'add') {\n newSortBy = [\n ...sortBy,\n {\n id: columnID,\n desc: hasDescDefined ? desc : sortDescFirst,\n },\n ]\n // Take latest n columns\n newSortBy.splice(0, newSortBy.length - maxMultiSortColCount)\n } else if (action === 'toggle') {\n // This flips (or sets) the\n newSortBy = sortBy.map(d => {\n if (d.id === columnID) {\n return {\n ...d,\n desc: hasDescDefined ? desc : !existingSortBy.desc,\n }\n }\n return d\n })\n } else if (action === 'remove') {\n newSortBy = sortBy.filter(d => d.id !== columnID)\n }\n\n return {\n ...old,\n sortBy: newSortBy,\n }\n }, actions.sortByChange)\n }\n\n // Add the getSortByToggleProps method to columns and headers\n flatHeaders.forEach(\n // avoid sharing instance in contexts of other functions\n (instance => column => {\n const { accessor, disableSorting: columnDisableSorting, id } = column\n\n const canSort = accessor\n ? getFirstDefined(\n columnDisableSorting === true ? false : undefined,\n disableSorting === true ? false : undefined,\n true\n )\n : false\n\n column.canSort = canSort\n\n if (column.canSort) {\n column.toggleSortBy = (desc, multi) =>\n toggleSortBy(column.id, desc, multi)\n\n column.clearSorting = () => {\n return setState(old => {\n const { sortBy } = old\n const newSortBy = sortBy.filter(d => d.id !== column.id)\n return {\n ...old,\n sortBy: newSortBy,\n }\n }, actions.sortByChange)\n }\n }\n\n const sortByTogglePropsFromHooks = applyPropHooks(\n instance.hooks.getSortByToggleProps,\n column,\n instance\n )\n column.getSortByToggleProps = props => {\n return mergeProps(\n {\n onClick: canSort\n ? e => {\n e.persist()\n column.toggleSortBy(\n undefined,\n !disableMultiSort && isMultiSortEvent(e)\n )\n }\n : undefined,\n style: {\n cursor: canSort ? 'pointer' : undefined,\n },\n title: 'Toggle SortBy',\n },\n sortByTogglePropsFromHooks,\n props\n )\n }\n\n const columnSort = sortBy.find(d => d.id === id)\n column.isSorted = !!columnSort\n column.sortedIndex = sortBy.findIndex(d => d.id === id)\n column.isSortedDesc = column.isSorted ? columnSort.desc : undefined\n })(instance)\n )\n\n const sortedRows = React.useMemo(() => {\n if (manualSorting || !sortBy.length) {\n return rows\n }\n if (process.env.NODE_ENV === 'development' && debug)\n console.time('getSortedRows')\n\n // Filter out sortBys that correspond to non existing columns\n const availableSortBy = sortBy.filter(sort =>\n flatColumns.find(col => col.id === sort.id)\n )\n\n const sortData = rows => {\n // Use the orderByFn to compose multiple sortBy's together.\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = orderByFn(\n rows,\n availableSortBy.map(sort => {\n // Support custom sorting methods for each column\n const column = flatColumns.find(d => d.id === sort.id)\n\n if (!column) {\n throw new Error(\n `React-Table: Could not find a column with id: ${sort.id} while sorting`\n )\n }\n\n const { sortType } = column\n\n // Look up sortBy functions in this order:\n // column function\n // column string lookup on user sortType\n // column string lookup on built-in sortType\n // default function\n // default string lookup on user sortType\n // default string lookup on built-in sortType\n const sortMethod =\n isFunction(sortType) ||\n (userSortTypes || {})[sortType] ||\n sortTypes[sortType]\n\n if (!sortMethod) {\n throw new Error(\n `React-Table: Could not find a valid sortType of '${sortType}' for column '${sort.id}'.`\n )\n }\n\n // Return the correct sortFn.\n // This function should always return in ascending order\n return (a, b) => sortMethod(a, b, sort.id)\n }),\n // Map the directions\n availableSortBy.map(sort => {\n // Detect and use the sortInverted option\n const column = flatColumns.find(d => d.id === sort.id)\n\n if (column && column.sortInverted) {\n return sort.desc\n }\n\n return !sort.desc\n })\n )\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n if (!row.subRows || row.subRows.length <= 1) {\n return\n }\n row.subRows = sortData(row.subRows)\n })\n\n return sortedData\n }\n\n if (process.env.NODE_ENV === 'development' && debug)\n console.timeEnd('getSortedRows')\n\n return sortData(rows)\n }, [\n manualSorting,\n sortBy,\n debug,\n rows,\n flatColumns,\n orderByFn,\n userSortTypes,\n ])\n\n return {\n ...instance,\n toggleSortBy,\n rows: sortedRows,\n preSortedRows: rows,\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\n//\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\nimport { ensurePluginOrder, safeUseLayoutEffect, expandRows } from '../utils'\n\ndefaultState.pageSize = 10\ndefaultState.pageIndex = 0\n\naddActions('pageChange', 'pageSizeChange')\n\nconst propTypes = {\n // General\n manualPagination: PropTypes.bool,\n paginateExpandedRows: PropTypes.bool,\n}\n\nexport const usePagination = hooks => {\n hooks.useMain.push(useMain)\n}\n\nusePagination.pluginName = 'usePagination'\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'usePagination')\n\n const {\n data,\n rows,\n manualPagination,\n disablePageResetOnDataChange,\n manualExpandedKey = 'expanded',\n debug,\n plugins,\n pageCount: userPageCount,\n paginateExpandedRows = true,\n expandSubRows = true,\n state: { pageSize, pageIndex, filters, groupBy, sortBy, expanded },\n setState,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useFilters', 'useGroupBy', 'useSortBy', 'useExpanded'],\n 'usePagination',\n []\n )\n\n const rowDep = manualPagination ? null : data\n\n const isPageIndexMountedRef = React.useRef()\n\n // Bypass any effects from firing when this changes\n const disablePageResetOnDataChangeRef = React.useRef()\n disablePageResetOnDataChangeRef.current = disablePageResetOnDataChange\n\n safeUseLayoutEffect(() => {\n if (\n isPageIndexMountedRef.current &&\n !disablePageResetOnDataChangeRef.current\n ) {\n setState(\n old => ({\n ...old,\n pageIndex: 0,\n }),\n actions.pageChange\n )\n }\n isPageIndexMountedRef.current = true\n }, [setState, rowDep, filters, groupBy, sortBy])\n\n const pageCount = manualPagination\n ? userPageCount\n : Math.ceil(rows.length / pageSize)\n\n const pageOptions = React.useMemo(\n () => (pageCount > 0 ? [...new Array(pageCount)].map((d, i) => i) : []),\n [pageCount]\n )\n\n const page = React.useMemo(() => {\n let page\n\n if (manualPagination) {\n page = rows\n } else {\n if (process.env.NODE_ENV === 'development' && debug)\n console.info('getPage')\n\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n page = rows.slice(pageStart, pageEnd)\n }\n\n if (paginateExpandedRows) {\n return page\n }\n\n return expandRows(page, { manualExpandedKey, expanded, expandSubRows })\n }, [\n debug,\n expandSubRows,\n expanded,\n manualExpandedKey,\n manualPagination,\n pageIndex,\n pageSize,\n paginateExpandedRows,\n rows,\n ])\n\n const canPreviousPage = pageIndex > 0\n const canNextPage = pageCount === -1 || pageIndex < pageCount - 1\n\n const gotoPage = React.useCallback(\n updater => {\n if (process.env.NODE_ENV === 'development' && debug)\n console.info('gotoPage')\n return setState(old => {\n const newPageIndex =\n typeof updater === 'function' ? updater(old.pageIndex) : updater\n\n if (newPageIndex < 0 || newPageIndex > pageCount - 1) {\n return old\n }\n return {\n ...old,\n pageIndex: newPageIndex,\n }\n }, actions.pageChange)\n },\n [debug, pageCount, setState]\n )\n\n const previousPage = React.useCallback(() => {\n return gotoPage(old => old - 1)\n }, [gotoPage])\n\n const nextPage = React.useCallback(() => {\n return gotoPage(old => old + 1)\n }, [gotoPage])\n\n const setPageSize = React.useCallback(\n pageSize => {\n setState(old => {\n const topRowIndex = old.pageSize * old.pageIndex\n const pageIndex = Math.floor(topRowIndex / pageSize)\n return {\n ...old,\n pageIndex,\n pageSize,\n }\n }, actions.pageSizeChange)\n },\n [setState]\n )\n\n return {\n ...instance,\n pageOptions,\n pageCount,\n page,\n canPreviousPage,\n canNextPage,\n gotoPage,\n previousPage,\n nextPage,\n setPageSize,\n pageIndex,\n pageSize,\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport {\n mergeProps,\n applyPropHooks,\n ensurePluginOrder,\n safeUseLayoutEffect,\n} from '../utils'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\n\ndefaultState.selectedRowPaths = []\n\naddActions('toggleRowSelected', 'toggleRowSelectedAll')\n\nconst propTypes = {\n manualRowSelectedKey: PropTypes.string,\n}\n\nexport const useRowSelect = hooks => {\n hooks.getToggleRowSelectedProps = []\n hooks.getToggleAllRowsSelectedProps = []\n hooks.useRows.push(useRows)\n hooks.useMain.push(useMain)\n}\n\nuseRowSelect.pluginName = 'useRowSelect'\n\nfunction useRows(rows, instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useRowSelect')\n\n const {\n state: { selectedRowPaths },\n } = instance\n\n instance.selectedFlatRows = React.useMemo(() => {\n const selectedFlatRows = []\n rows.forEach(row => {\n if (row.isAggregated) {\n const subRowPaths = row.subRows.map(row => row.path)\n row.isSelected = subRowPaths.every(path =>\n selectedRowPaths.includes(path.join('.'))\n )\n } else {\n row.isSelected = selectedRowPaths.includes(row.path.join('.'))\n }\n if (row.isSelected) {\n selectedFlatRows.push(row)\n }\n })\n\n return selectedFlatRows\n }, [rows, selectedRowPaths])\n\n return rows\n}\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useRowSelect')\n\n const {\n hooks,\n manualRowSelectedKey = 'isSelected',\n disableSelectedRowsResetOnDataChange,\n plugins,\n flatRows,\n data,\n state: { selectedRowPaths },\n setState,\n } = instance\n\n ensurePluginOrder(\n plugins,\n ['useFilters', 'useGroupBy', 'useSortBy'],\n 'useRowSelect',\n []\n )\n\n const flatRowPaths = flatRows.map(d => d.path.join('.'))\n\n let isAllRowsSelected = !!flatRowPaths.length && !!selectedRowPaths.length\n\n if (isAllRowsSelected) {\n if (flatRowPaths.some(d => !selectedRowPaths.includes(d))) {\n isAllRowsSelected = false\n }\n }\n\n const isRowSelectedMountedRef = React.useRef()\n\n // Bypass any effects from firing when this changes\n const disableSelectedRowsResetOnDataChangeRef = React.useRef()\n disableSelectedRowsResetOnDataChangeRef.current = disableSelectedRowsResetOnDataChange\n\n safeUseLayoutEffect(() => {\n if (\n isRowSelectedMountedRef.current &&\n !disableSelectedRowsResetOnDataChangeRef.current\n ) {\n setState(\n old => ({\n ...old,\n selectedRowPaths: [],\n }),\n actions.pageChange\n )\n }\n isRowSelectedMountedRef.current = true\n }, [setState, data])\n\n const toggleRowSelectedAll = set => {\n setState(old => {\n const selectAll = typeof set !== 'undefined' ? set : !isAllRowsSelected\n return {\n ...old,\n selectedRowPaths: selectAll ? flatRowPaths : [],\n }\n }, actions.toggleRowSelectedAll)\n }\n\n const updateParentRow = (selectedRowPaths, path) => {\n const parentPath = path.slice(0, path.length - 1)\n const parentKey = parentPath.join('.')\n const selected =\n flatRowPaths.filter(rowPath => {\n const path = rowPath\n return (\n path !== parentKey &&\n path.startsWith(parentKey) &&\n !selectedRowPaths.has(path)\n )\n }).length === 0\n if (selected) {\n selectedRowPaths.add(parentKey)\n } else {\n selectedRowPaths.delete(parentKey)\n }\n if (parentPath.length > 1) updateParentRow(selectedRowPaths, parentPath)\n }\n\n const toggleRowSelected = (path, set) => {\n const key = path.join('.')\n const childRowPrefixKey = [key, '.'].join('')\n\n return setState(old => {\n // Join the paths of deep rows\n // to make a key, then manage all of the keys\n // in a flat object\n const exists = old.selectedRowPaths.includes(key)\n const shouldExist = typeof set !== 'undefined' ? set : !exists\n let newSelectedRows = new Set(old.selectedRowPaths)\n\n if (!exists && shouldExist) {\n flatRowPaths.forEach(rowPath => {\n if (rowPath === key || rowPath.startsWith(childRowPrefixKey)) {\n newSelectedRows.add(rowPath)\n }\n })\n } else if (exists && !shouldExist) {\n flatRowPaths.forEach(rowPath => {\n if (rowPath === key || rowPath.startsWith(childRowPrefixKey)) {\n newSelectedRows.delete(rowPath)\n }\n })\n } else {\n return old\n }\n\n // If the row is a subRow update\n // its parent row to reflect changes\n if (path.length > 1) updateParentRow(newSelectedRows, path)\n\n return {\n ...old,\n selectedRowPaths: [...newSelectedRows.values()],\n }\n }, actions.toggleRowSelected)\n }\n\n const toggleAllRowsSelectedPropsFromHooks = applyPropHooks(\n instance.hooks.getToggleAllRowsSelectedProps,\n instance\n )\n const getToggleAllRowsSelectedProps = props => {\n return mergeProps(\n {\n onChange: e => {\n toggleRowSelectedAll(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked: isAllRowsSelected,\n title: 'Toggle All Rows Selected',\n },\n toggleAllRowsSelectedPropsFromHooks,\n props\n )\n }\n\n hooks.prepareRow.push((row, instance) => {\n const toggleRowSelectedPropsFromHooks = applyPropHooks(\n instance.hooks.getToggleRowSelectedProps,\n row,\n instance\n )\n // Aggregate rows have entirely different select logic\n if (row.isAggregated) {\n const subRowPaths = row.subRows.map(row => row.path)\n row.toggleRowSelected = set => {\n set = typeof set !== 'undefined' ? set : !row.isSelected\n subRowPaths.forEach(path => {\n toggleRowSelected(path, set)\n })\n }\n row.getToggleRowSelectedProps = props => {\n let checked = false\n\n if (row.original && row.original[manualRowSelectedKey]) {\n checked = true\n } else {\n checked = row.isSelected\n }\n\n return mergeProps(\n {\n onChange: e => {\n row.toggleRowSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked,\n title: 'Toggle Row Selected',\n },\n toggleRowSelectedPropsFromHooks,\n props\n )\n }\n } else {\n row.toggleRowSelected = set => toggleRowSelected(row.path, set)\n row.getToggleRowSelectedProps = props => {\n let checked = false\n\n if (row.original && row.original[manualRowSelectedKey]) {\n checked = true\n } else {\n checked = row.isSelected\n }\n\n return mergeProps(\n {\n onChange: e => {\n row.toggleRowSelected(e.target.checked)\n },\n style: {\n cursor: 'pointer',\n },\n checked,\n title: 'Toggle Row Selected',\n },\n toggleRowSelectedPropsFromHooks,\n props\n )\n }\n }\n\n return row\n })\n\n return {\n ...instance,\n toggleRowSelected,\n toggleRowSelectedAll,\n getToggleAllRowsSelectedProps,\n isAllRowsSelected,\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\n\ndefaultState.rowState = {}\n\naddActions('setRowState', 'setCellState')\n\nconst propTypes = {\n initialRowStateAccessor: PropTypes.func,\n}\n\nexport const useRowState = hooks => {\n hooks.useMain.push(useMain)\n}\n\nuseRowState.pluginName = 'useRowState'\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useRowState')\n\n const {\n hooks,\n rows,\n initialRowStateAccessor,\n state: { rowState },\n setState,\n } = instance\n\n const setRowState = React.useCallback(\n (path, updater, action = actions.setRowState) => {\n const pathKey = path.join('.')\n return setState(old => {\n return {\n ...old,\n rowState: {\n ...old.rowState,\n [pathKey]:\n typeof updater === 'function'\n ? updater(old.rowState[pathKey])\n : updater,\n },\n }\n }, action)\n },\n [setState]\n )\n\n const setCellState = React.useCallback(\n (rowPath, columnID, updater) => {\n return setRowState(\n rowPath,\n old => {\n return {\n ...old,\n cellState: {\n ...old.cellState,\n [columnID]:\n typeof updater === 'function'\n ? updater(old.cellState[columnID])\n : updater,\n },\n }\n },\n actions.setCellState\n )\n },\n [setRowState]\n )\n\n const rowsMountedRef = React.useRef()\n\n // When data changes, reset row and cell state\n React.useEffect(() => {\n if (rowsMountedRef.current) {\n setState(old => {\n return {\n ...old,\n rowState: {},\n }\n }, actions.setRowState)\n }\n\n rowsMountedRef.current = true\n }, [rows, setState])\n\n hooks.prepareRow.push(row => {\n const pathKey = row.path.join('.')\n\n if (row.original) {\n row.state =\n (typeof rowState[pathKey] !== 'undefined'\n ? rowState[pathKey]\n : initialRowStateAccessor && initialRowStateAccessor(row)) || {}\n\n row.setState = updater => {\n return setRowState(row.path, updater)\n }\n\n row.cells.forEach(cell => {\n cell.state = row.state.cellState || {}\n\n cell.setState = updater => {\n return setCellState(row.path, cell.column.id, updater)\n }\n })\n }\n\n return row\n })\n\n return {\n ...instance,\n setRowState,\n setCellState,\n }\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { addActions, actions } from '../actions'\nimport { defaultState } from '../hooks/useTable'\n\ndefaultState.columnOrder = []\n\naddActions('setColumnOrder')\n\nconst propTypes = {\n initialRowStateAccessor: PropTypes.func,\n}\n\nexport const useColumnOrder = hooks => {\n hooks.columnsBeforeHeaderGroupsDeps.push((deps, instance) => {\n return [...deps, instance.state.columnOrder]\n })\n hooks.columnsBeforeHeaderGroups.push(columnsBeforeHeaderGroups)\n hooks.useMain.push(useMain)\n}\n\nuseColumnOrder.pluginName = 'useColumnOrder'\n\nfunction columnsBeforeHeaderGroups(columns, instance) {\n const {\n state: { columnOrder },\n } = instance\n\n // If there is no order, return the normal columns\n if (!columnOrder || !columnOrder.length) {\n return columns\n }\n\n const columnOrderCopy = [...columnOrder]\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns]\n\n // And make a new ordered array of the columns\n const columnsInOrder = []\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnID = columnOrderCopy.shift()\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnID)\n if (foundIndex > -1) {\n columnsInOrder.push(columnsCopy.splice(foundIndex, 1)[0])\n }\n }\n\n // If there are any columns left, add them to the end\n return [...columnsInOrder, ...columnsCopy]\n}\n\nfunction useMain(instance) {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useColumnOrder')\n\n const { setState } = instance\n\n const setColumnOrder = React.useCallback(\n updater => {\n return setState(old => {\n return {\n ...old,\n columnOrder:\n typeof updater === 'function' ? updater(old.columnOrder) : updater,\n }\n }, actions.setColumnOrder)\n },\n [setState]\n )\n\n return {\n ...instance,\n setColumnOrder,\n }\n}\n","import PropTypes from 'prop-types'\n\n//\n\nimport { defaultState } from '../hooks/useTable'\nimport { defaultColumn, getFirstDefined } from '../utils'\nimport { mergeProps, applyPropHooks } from '../utils'\n\ndefaultState.columnResizing = {\n columnWidths: {},\n}\n\ndefaultColumn.canResize = true\n\nconst propTypes = {}\n\nexport const useResizeColumns = hooks => {\n hooks.getResizerProps = []\n hooks.useBeforeDimensions.push(useBeforeDimensions)\n}\n\nuseResizeColumns.pluginName = 'useResizeColumns'\n\nconst useBeforeDimensions = instance => {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useResizeColumns')\n\n const {\n flatHeaders,\n disableResizing,\n hooks: { getHeaderProps },\n state: { columnResizing },\n setState,\n } = instance\n\n getHeaderProps.push(() => {\n return {\n style: {\n position: 'relative',\n },\n }\n })\n\n const onMouseDown = (e, header) => {\n const headersToResize = getLeafHeaders(header)\n const startWidths = headersToResize.map(header => header.totalWidth)\n const startX = e.clientX\n\n const onMouseMove = e => {\n const currentX = e.clientX\n const deltaX = currentX - startX\n\n const percentageDeltaX = deltaX / headersToResize.length\n\n const newColumnWidths = {}\n headersToResize.forEach((header, index) => {\n newColumnWidths[header.id] = Math.max(\n startWidths[index] + percentageDeltaX,\n 0\n )\n })\n\n setState(old => ({\n ...old,\n columnResizing: {\n ...old.columnResizing,\n columnWidths: {\n ...old.columnResizing.columnWidths,\n ...newColumnWidths,\n },\n },\n }))\n }\n\n const onMouseUp = e => {\n document.removeEventListener('mousemove', onMouseMove)\n document.removeEventListener('mouseup', onMouseUp)\n\n setState(old => ({\n ...old,\n columnResizing: {\n ...old.columnResizing,\n startX: null,\n isResizingColumn: null,\n },\n }))\n }\n\n document.addEventListener('mousemove', onMouseMove)\n document.addEventListener('mouseup', onMouseUp)\n\n setState(old => ({\n ...old,\n columnResizing: {\n ...old.columnResizing,\n startX,\n isResizingColumn: header.id,\n },\n }))\n }\n\n flatHeaders.forEach(\n (instance => header => {\n const canResize = getFirstDefined(\n header.disableResizing === true ? false : undefined,\n disableResizing === true ? false : undefined,\n true\n )\n\n header.canResize = canResize\n header.width = columnResizing.columnWidths[header.id] || header.width\n header.isResizing = columnResizing.isResizingColumn === header.id\n\n if (canResize) {\n const resizerPropsFromHooks = applyPropHooks(\n instance.hooks.getResizerProps,\n header,\n instance\n )\n header.getResizerProps = userProps => {\n return mergeProps(\n {\n onMouseDown: e => e.persist() || onMouseDown(e, header),\n style: {\n cursor: 'ew-resize',\n },\n draggable: false,\n },\n resizerPropsFromHooks,\n userProps\n )\n }\n }\n })(instance)\n )\n\n return instance\n}\n\nfunction getLeafHeaders(header) {\n const leafHeaders = []\n const recurseHeader = header => {\n if (header.columns && header.columns.length) {\n header.columns.map(recurseHeader)\n }\n leafHeaders.push(header)\n }\n recurseHeader(header)\n return leafHeaders\n}\n","import PropTypes from 'prop-types'\n\nconst propTypes = {}\n\nexport const useAbsoluteLayout = hooks => {\n hooks.useMain.push(useMain)\n}\n\nuseAbsoluteLayout.pluginName = 'useAbsoluteLayout'\n\nconst useMain = instance => {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useAbsoluteLayout')\n\n const {\n totalColumnsWidth,\n hooks: {\n getRowProps,\n getTableBodyProps,\n getHeaderGroupProps,\n getHeaderProps,\n getCellProps,\n },\n } = instance\n\n const rowStyles = {\n style: {\n position: 'relative',\n width: `${totalColumnsWidth}px`,\n },\n }\n\n getTableBodyProps.push(() => rowStyles)\n getRowProps.push(() => rowStyles)\n getHeaderGroupProps.push(() => rowStyles)\n\n // Calculating column/cells widths\n const cellStyles = {\n position: 'absolute',\n top: 0,\n }\n\n getHeaderProps.push(header => {\n return {\n style: {\n ...cellStyles,\n left: `${header.totalLeft}px`,\n width: `${header.totalWidth}px`,\n },\n }\n })\n\n getCellProps.push(cell => {\n return {\n style: {\n ...cellStyles,\n left: `${cell.column.totalLeft}px`,\n width: `${cell.column.totalWidth}px`,\n },\n }\n })\n\n return instance\n}\n","import PropTypes from 'prop-types'\n\nconst propTypes = {}\n\nexport const useBlockLayout = hooks => {\n hooks.useMain.push(useMain)\n}\n\nuseBlockLayout.pluginName = 'useBlockLayout'\n\nconst useMain = instance => {\n PropTypes.checkPropTypes(propTypes, instance, 'property', 'useBlockLayout')\n\n const {\n totalColumnsWidth,\n hooks: { getRowProps, getHeaderGroupProps, getHeaderProps, getCellProps },\n } = instance\n\n const rowStyles = {\n style: {\n display: 'flex',\n width: `${totalColumnsWidth}px`,\n },\n }\n\n getRowProps.push(() => rowStyles)\n getHeaderGroupProps.push(() => rowStyles)\n\n const cellStyles = {\n display: 'inline-block',\n boxSizing: 'border-box',\n }\n\n getHeaderProps.push(header => {\n return {\n style: {\n ...cellStyles,\n width: `${header.totalWidth}px`,\n },\n }\n })\n\n getCellProps.push(cell => {\n return {\n style: {\n ...cellStyles,\n width: `${cell.column.totalWidth}px`,\n },\n }\n })\n\n return instance\n}\n"],"names":["defaultColumn","Cell","cell","value","String","show","width","minWidth","maxWidth","Number","MAX_SAFE_INTEGER","safeUseLayoutEffect","window","process","env","NODE_ENV","React","useLayoutEffect","useEffect","findMaxDepth","columns","depth","reduce","prev","curr","Math","max","decorateColumn","column","userDefaultColumn","parent","index","id","accessor","Header","accessorPath","split","row","getBy","console","error","Error","decorateColumnTree","map","columnIndex","makeHeaderGroups","flatColumns","headerGroups","buildGroup","headerGroup","headers","parentColumns","hasParents","some","col","forEach","isFirst","length","latestParentColumn","reverse","similarParentColumns","filter","d","originalID","push","join","placeholderColumn","placeholderOf","includes","totalHeaderCount","sum","header","determineHeaderVisibility","instance","totalVisibleHeaderCount","subHeader","handleColumn","parentVisible","isVisible","subColumn","obj","path","def","val","pathObj","makePathArray","cursor","pathPart","e","defaultOrderByFn","arr","funcs","dirs","_toConsumableArray","sort","rowA","rowB","i","sortFn","desc","sortInt","getFirstDefined","args","defaultGroupByFn","rows","columnID","resKey","values","Array","isArray","getElementDimensions","element","rect","getBoundingClientRect","style","getComputedStyle","margins","left","parseInt","marginLeft","right","marginRight","padding","paddingLeft","paddingRight","ceil","outerWidth","scrollWidth","flexRender","Comp","props","isReactComponent","isClassComponent","component","proto","Object","getPrototypeOf","prototype","isFunctionComponent","mergeProps","groups","className","rest","Boolean","applyHooks","hooks","initial","next","nextValue","applyPropHooks","warnUnknownProps","keys","JSON","stringify","isFunction","a","flattenBy","childKey","recurse","ensurePluginOrder","plugins","befores","pluginName","afters","pluginIndex","findIndex","plugin","before","beforeIndex","after","afterIndex","expandRows","manualExpandedKey","expanded","expandSubRows","expandedRows","handleRow","key","isExpanded","original","canExpand","subRows","flattenDeep","replace","newArr","propTypes","data","PropTypes","array","isRequired","arrayOf","object","getSubRows","func","getRowID","debug","bool","renderErr","defaultState","defaultInitialState","defaultColumnInstance","defaultReducer","old","newState","defaultGetSubRows","defaultGetRowID","useTable","checkPropTypes","userColumns","initialState","userState","state","reducer","useState","originalState","originalSetState","useMemo","setState","useCallback","updater","type","instanceRef","useRef","assign","current","columnsBeforeHeaderGroups","columnsBeforeHeaderGroupsDeps","useBeforeDimensions","useMain","useRows","prepareRow","getTableProps","getTableBodyProps","getRowProps","getHeaderGroupProps","getHeaderProps","getCellProps","time","timeEnd","newColumns","flatRows","accessedData","accessRow","originalRow","parentPath","rowID","cells","unpreparedAccessWarning","undefined","flatHeaders","all","calculateDimensions","render","userProps","colSpan","columnPathStr","totalColumnsWidth","calculateHeaderWidths","sumTotalWidth","subHeaders","totalLeft","totalWidth","min","actions","addActions","acts","action","string","paginateExpandedRows","useExpanded","getExpandedToggleProps","toggleExpandedByPath","set","exists","shouldExist","newExpanded","Set","add","delete","toggleExpanded","propsFromHooks","onClick","persist","title","info","expandedDepth","findExpandedDepth","maxDepth","text","filterValue","rowValue","toLowerCase","autoRemove","exactText","exactTextCase","includesAll","every","exact","equals","between","Infinity","temp","filters","shape","disableFilters","Filter","any","manualFilters","useFilters","userFilterTypes","filterTypes","preFilteredRows","preFilteredFlatRows","setFilter","find","filterMethod","getFilterMethod","newFilter","shouldAutoRemove","columnDisableFilters","canFilter","filteredRows","filteredFlatRows","filterRows","entries","filteredSoFar","warn","setAllFilters","newFilters","average","round","median","uniqueCount","size","count","groupBy","aggregate","oneOfType","disableGrouping","Aggregated","groupByFn","manualGrouping","aggregations","useGroupBy","getGroupByToggleProps","deps","groupByColumns","g","nonGroupByColumns","groupByBoundaryColumnIndex","groupByBoundary","slice","manualGroupBy","userAggregations","columnDisableGrouping","isGrouped","groupedIndex","indexOf","canGroupBy","toggleGroupBy","toggle","groupByTogglePropsFromHooks","groupByID","isRepeatedValue","isAggregated","groupedRows","aggregateRowsToValues","isSourceRows","columnValues","aggregator","aggregateFn","groupRecursively","groupByVal","preGroupedRows","reSplitAlphaNumeric","alphanumeric","getRowValueByColumnID","b","toString","aa","shift","bb","an","bn","combo","isNaN","datetime","compareBasic","getTime","basic","sortBy","sortType","sortDescFirst","disableSorting","orderByFn","sortTypes","manualSorting","disableMultiSort","isMultiSortEvent","maxMultiSortColCount","number","disableSortRemove","disableMultiRemove","useSortBy","getSortByToggleProps","userSortTypes","shiftKey","toggleSortBy","multi","existingSortBy","existingIndex","hasDescDefined","newSortBy","splice","sortByChange","columnDisableSorting","canSort","clearSorting","sortByTogglePropsFromHooks","columnSort","isSorted","sortedIndex","isSortedDesc","sortedRows","availableSortBy","sortData","sortedData","sortMethod","sortInverted","preSortedRows","pageSize","pageIndex","manualPagination","usePagination","disablePageResetOnDataChange","userPageCount","pageCount","rowDep","isPageIndexMountedRef","disablePageResetOnDataChangeRef","pageChange","pageOptions","page","pageStart","pageEnd","canPreviousPage","canNextPage","gotoPage","newPageIndex","previousPage","nextPage","setPageSize","topRowIndex","floor","pageSizeChange","selectedRowPaths","manualRowSelectedKey","useRowSelect","getToggleRowSelectedProps","getToggleAllRowsSelectedProps","selectedFlatRows","subRowPaths","isSelected","disableSelectedRowsResetOnDataChange","flatRowPaths","isAllRowsSelected","isRowSelectedMountedRef","disableSelectedRowsResetOnDataChangeRef","toggleRowSelectedAll","toggleRowSelected","childRowPrefixKey","newSelectedRows","rowPath","startsWith","updateParentRow","parentKey","has","toggleAllRowsSelectedPropsFromHooks","toggleRowSelectedPropsFromHooks","checked","onChange","target","rowState","initialRowStateAccessor","useRowState","setRowState","pathKey","setCellState","cellState","rowsMountedRef","columnOrder","useColumnOrder","columnOrderCopy","columnsCopy","columnsInOrder","targetColumnID","foundIndex","setColumnOrder","columnResizing","columnWidths","canResize","useResizeColumns","getResizerProps","disableResizing","position","isResizing","isResizingColumn","resizerPropsFromHooks","onMouseDown","headersToResize","getLeafHeaders","startWidths","startX","clientX","onMouseMove","percentageDeltaX","newColumnWidths","document","addEventListener","onMouseUp","removeEventListener","draggable","leafHeaders","recurseHeader","useAbsoluteLayout","rowStyles","cellStyles","top","useBlockLayout","display","boxSizing"],"mappings":"i2FAEaA,cAAgB,CAC3BC,KAAM,oBAAGC,KAAQC,aAAmBC,kBAAX,OACzBC,MAAM,EACNC,MAAO,IACPC,SAAU,EACVC,SAAUC,OAAOC,kBAINC,oBACO,oBAAXC,QAAmD,eAAzBC,QAAQC,IAAIC,SACzCC,eAAMC,gBACND,eAAME,UAGL,SAASC,aAAaC,OAASC,yDAAQ,SACrCD,EAAQE,QAAO,SAACC,EAAMC,UACvBA,EAAKJ,QACAK,KAAKC,IAAIH,EAAMJ,aAAaK,EAAKJ,QAASC,EAAQ,IAEpDA,IACN,GAGE,SAASM,eACdC,EACAC,EACAC,EACAT,EACAU,SAGAH,oBAAc5B,iBAAkB6B,KAAsBD,GAGhDI,IAAAA,GAAIC,IAAAA,SAAUC,IAAAA,UAEI,iBAAbD,EAAuB,CAChCD,EAAKA,GAAMC,MACLE,EAAeF,EAASG,MAAM,KACpCH,EAAW,SAAAI,UAAOC,MAAMD,EAAKF,QAG1BH,GAAwB,iBAAXE,GAAuBA,IACvCF,EAAKE,IAGFF,GAAMJ,EAAOR,cAChBmB,QAAQC,MAAMZ,GACR,IAAIa,MAAM,2DAGbT,QACHO,QAAQC,MAAMZ,GACR,IAAIa,MAAM,wDAGlBb,kBAEEM,OAAQ,kBAAMlB,iEACXY,GAEHI,GAAAA,EACAC,SAAAA,EACAH,OAAAA,EACAT,MAAAA,EACAU,MAAAA,IAOJ,SAAgBW,mBAAmBtB,EAASpB,EAAe8B,OAAQT,yDAAQ,SAClED,EAAQuB,KAAI,SAACf,EAAQgB,UAC1BhB,EAASD,eAAeC,EAAQ5B,EAAe8B,EAAQT,EAAOuB,IACnDxB,UACTQ,EAAOR,QAAUsB,mBACfd,EAAOR,QACPpB,EACA4B,EACAP,EAAQ,IAGLO,KAKJ,SAASiB,iBAAiBC,EAAa9C,OACtC+C,EAAe,UAGF,SAAbC,EAAc5B,EAASC,OACrB4B,EAAc,CAClBC,QAAS,IAGLC,EAAgB,GAGhBC,EAAahC,EAAQiC,MAAK,SAAAC,UAAOA,EAAIxB,UAE3CV,EAAQmC,SAAQ,SAAA3B,OAER4B,GAAWL,EAAcM,OAG3BC,EAAqB,UAAIP,GAAeQ,UAAU,MAGlD/B,EAAOE,OAAQ,KACX8B,EAAuBT,EAAcU,QACzC,SAAAC,UAAKA,EAAEC,aAAenC,EAAOE,OAAOE,OAElCwB,GAAWE,EAAmBK,aAAenC,EAAOE,OAAOE,KAC7DmB,EAAca,uBACTpC,EAAOE,QACViC,WAAYnC,EAAOE,OAAOE,GAC1BA,GAAI,CAACJ,EAAOE,OAAOE,GAAI4B,EAAqBH,QAAQQ,KAAK,aAGxD,GAAIb,EAAY,KAEfW,EAAa,CAACnC,EAAOI,GAAI,eAAeiC,KAAK,KAC7CL,EAAuBT,EAAcU,QACzC,SAAAC,UAAKA,EAAEC,aAAeA,KAElBG,EAAoBvC,eACxB,CACEoC,WAAAA,EACA/B,GAAI,CAACJ,EAAOI,GAAI,cAAe4B,EAAqBH,QAAQQ,KAC1D,KAEFE,cAAevC,GAEjB5B,IAGAwD,GACAE,EAAmBK,aAAeG,EAAkBH,aAEpDZ,EAAca,KAAKE,IAKnBtC,EAAOE,QAAUsB,MACnBM,EAAqB,UAAIP,GAAeQ,UAAU,IAC/BT,QAAUQ,EAAmBR,SAAW,GACtDQ,EAAmBR,QAAQkB,SAASxC,IACvC8B,EAAmBR,QAAQc,KAAKpC,IAIpCA,EAAOyC,iBAAmBzC,EAAOsB,QAC7BtB,EAAOsB,QAAQ5B,QACb,SAACgD,EAAKC,UAAWD,EAAMC,EAAOF,mBAC9B,GAEF,EACJpB,EAAYC,QAAQc,KAAKpC,MAG3BmB,EAAaiB,KAAKf,GAEdE,EAAcM,QAChBT,EAAWG,EAAe9B,EAAQ,GAItC2B,CAAWF,EAAa,GAEjBC,EAAaY,UAGf,SAASa,0BAA0BC,OAChCvB,EAAYuB,EAAZvB,QAyBJwB,EAA0B,EAE9BxB,EAAQK,SACN,SAAAoB,UAAcD,GA1BK,SAAfE,EAAgBhD,EAAQiD,GAC5BjD,EAAOkD,YAAYD,IACQ,mBAAhBjD,EAAOvB,KACZuB,EAAOvB,KAAKoE,KACV7C,EAAOvB,UAGXqE,EAA0B,SAE1B9C,EAAOsB,SAAWtB,EAAOsB,QAAQO,OACnC7B,EAAOsB,QAAQK,SACb,SAAAwB,UACGL,GAA2BE,EAAaG,EAAWnD,EAAOkD,cAG/DJ,EAA0B9C,EAAOkD,UAAY,EAAI,EAGnDlD,EAAO8C,wBAA0BA,EAE1BA,EAMkCE,CAAaD,GAAW,MAIrE,SAAgBrC,MAAM0C,EAAKC,EAAMC,OAC1BD,SACID,MAGLG,EADEC,EAAUC,cAAcJ,OAG5BE,EAAMC,EAAQ9D,QAAO,SAACgE,EAAQC,UAAaD,EAAOC,KAAWP,GAC7D,MAAOQ,gBAGa,IAARL,EAAsBA,EAAMD,EAG5C,SAAgBO,iBAAiBC,EAAKC,EAAOC,UACpCC,mBAAIH,GAAKI,MAAK,SAACC,EAAMC,OACrB,IAAIC,EAAI,EAAGA,EAAIN,EAAMlC,OAAQwC,GAAK,EAAG,KAClCC,EAASP,EAAMM,GACfE,GAAmB,IAAZP,EAAKK,IAA4B,SAAZL,EAAKK,GACjCG,EAAUF,EAAOH,EAAMC,MACb,IAAZI,SACKD,GAAQC,EAAUA,SAGtBR,EAAK,GAAKG,EAAKhE,MAAQiE,EAAKjE,MAAQiE,EAAKjE,MAAQgE,EAAKhE,SAIjE,SAAgBsE,6CAAmBC,2BAAAA,sBAC5B,IAAIL,EAAI,EAAGA,EAAIK,EAAK7C,OAAQwC,GAAK,UACb,IAAZK,EAAKL,UACPK,EAAKL,GAKX,SAASM,iBAAiBC,EAAMC,UAC9BD,EAAKlF,QAAO,SAACC,EAAMc,EAAK4D,OAGvBS,YAAYrE,EAAIsE,OAAOF,WAC7BlF,EAAKmF,GAAUE,MAAMC,QAAQtF,EAAKmF,IAAWnF,EAAKmF,GAAU,GAC5DnF,EAAKmF,GAAQ1C,KAAK3B,GACXd,IACN,IAGE,SAASuF,qBAAqBC,OAC7BC,EAAOD,EAAQE,wBACfC,EAAQtG,OAAOuG,iBAAiBJ,GAChCK,EAAU,CACdC,KAAMC,SAASJ,EAAMK,YACrBC,MAAOF,SAASJ,EAAMO,cAElBC,EAAU,CACdL,KAAMC,SAASJ,EAAMS,aACrBH,MAAOF,SAASJ,EAAMU,qBAEjB,CACLP,KAAM5F,KAAKoG,KAAKb,EAAKK,MACrB/G,MAAOmB,KAAKoG,KAAKb,EAAK1G,OACtBwH,WAAYrG,KAAKoG,KACfb,EAAK1G,MAAQ8G,EAAQC,KAAOD,EAAQI,MAAQE,EAAQL,KAAOK,EAAQF,OAErED,WAAYH,EAAQC,KACpBI,YAAaL,EAAQI,MACrBG,YAAaD,EAAQL,KACrBO,aAAcF,EAAQF,MACtBO,YAAahB,EAAQgB,aAIlB,SAASC,WAAWC,EAAMC,UACxBC,iBAAiBF,GAAQjH,6BAACiH,EAASC,GAAYD,EAGxD,SAASG,iBAAiBC,SAED,mBAAdA,OAEDC,EAAQC,OAAOC,eAAeH,IACrBI,YAAaH,EAAMG,UAAUN,kBAFzC,IACGG,EAMV,SAASI,oBAAoBL,SACC,mBAAdA,EAGhB,SAASF,iBAAiBE,UACjBD,iBAAiBC,IAAcK,oBAAoBL,GAGrD,IAAMM,WAAa,mBACpBT,EAAQ,sBADgBU,2BAAAA,yBAE5BA,EAAOrF,SAAQ,wEAAsC,OAAnC2D,MAAAA,aAAQ,KAAI2B,IAAAA,UAAcC,oDAC1CZ,oBACKA,KACAY,GACH5B,wBACMgB,EAAMhB,OAAS,MAChBA,GAEL2B,UAAW,CAACX,EAAMW,UAAWA,GAAWhF,OAAOkF,SAAS9E,KAAK,UAG1DiE,GAGIc,WAAa,SAACC,EAAOC,8BAAY5C,mCAAAA,2BAC5C2C,EAAM3H,QAAO,SAACC,EAAM4H,OACZC,EAAYD,gBAAK5H,UAAS+E,YACP,IAAd8C,QACH,IAAI3G,MACR,4EAGG2G,IACNF,IAEQG,eAAiB,SAACJ,8BAAU3C,mCAAAA,2BACvC2C,EAAM3H,QAAO,SAACC,EAAM4H,UAASR,WAAWpH,EAAM4H,eAAQ7C,MAAQ,KAEnDgD,iBAAmB,SAAApB,MAC1BK,OAAOgB,KAAKrB,GAAOzE,aACf,IAAIhB,4DAGZ+G,KAAKC,UAAUvB,EAAO,KAAM,MAKvB,SAAS5D,IAAIoB,UACXA,EAAIpE,QAAO,SAACC,EAAMC,UAASD,EAAOC,IAAM,GAG1C,SAASkI,WAAWC,MACR,mBAANA,SACFA,EAIJ,SAASC,UAAUxI,EAASyI,OAC3B/G,EAAc,UAEJ,SAAVgH,EAAU1I,GACdA,EAAQmC,SAAQ,SAAAO,GACTA,EAAE+F,GAGLC,EAAQhG,EAAE+F,IAFV/G,EAAYkB,KAAKF,MAOvBgG,CAAQ1I,GAED0B,EAGT,SAAgBiH,kBAAkBC,EAASC,EAASC,EAAYC,OACxDC,EAAcJ,EAAQK,WAC1B,SAAAC,UAAUA,EAAOJ,aAAeA,SAGb,IAAjBE,QACI,IAAI3H,2BAAoByH,kLAG9BA,4BAA4BA,UAI9BD,EAAQ1G,SAAQ,SAAAgH,OACRC,EAAcR,EAAQK,WAC1B,SAAAC,UAAUA,EAAOJ,aAAeK,QAE9BC,GAAe,GAAKA,EAAcJ,QAC9B,IAAI3H,iCACYyH,mDAAmDK,uBAK7EJ,EAAO5G,SAAQ,SAAAkH,OACPC,EAAaV,EAAQK,WAAU,SAAAC,UAAUA,EAAOJ,aAAeO,QACjEC,GAAc,GAAKA,EAAaN,QAC5B,IAAI3H,iCACYyH,oDAAoDO,uBAMzE,SAASE,WACdnE,SACEoE,IAAAA,kBAAmBC,IAAAA,aAAUC,cAAAA,gBAEzBC,EAAe,UAkBrBvE,EAAKjD,SAhBa,SAAZyH,EAAY3I,OACV4I,EAAM5I,EAAI4C,KAAKhB,KAAK,KAE1B5B,EAAI6I,WACD7I,EAAI8I,UAAY9I,EAAI8I,SAASP,IAC9BC,EAASzG,SAAS6G,GAEpB5I,EAAI+I,UAAY/I,EAAIgJ,WAAahJ,EAAIgJ,QAAQ5H,OAE7CsH,EAAa/G,KAAK3B,GAEdyI,GAAiBzI,EAAIgJ,SAAWhJ,EAAIgJ,QAAQ5H,QAAUpB,EAAI6I,YAC5D7I,EAAIgJ,QAAQ9H,QAAQyH,MAMjBD,EAKT,SAAS1F,cAAcL,UAEnBsG,YAAYtG,GAETrC,KAAI,SAAAmB,UAAK1D,OAAO0D,GAAGyH,QAAQ,IAAK,QAEhCtH,KAAK,KAELsH,QAAQ,MAAO,KACfA,QAAQ,MAAO,IAEfnJ,MAAM,KAIb,SAASkJ,YAAY5F,OAAK8F,yDAAS,MAC5B5E,MAAMC,QAAQnB,OAGZ,IAAIO,EAAI,EAAGA,EAAIP,EAAIjC,OAAQwC,GAAK,EACnCqF,YAAY5F,EAAIO,GAAIuF,QAHtBA,EAAOxH,KAAK0B,UAMP8F,6pBC7bHC,UAAY,CAEhBC,KAAMC,UAAUC,MAAMC,WACtBzK,QAASuK,UAAUG,QAAQH,UAAUI,QAAQF,WAC7C7L,cAAe2L,UAAUI,OACzBC,WAAYL,UAAUM,KACtBC,SAAUP,UAAUM,KACpBE,MAAOR,UAAUS,MAGbC,UACJ,wKAEWC,aAAe,GAEtBC,oBAAsB,GACtBC,sBAAwB,GACxBC,eAAiB,SAACC,EAAKC,UAAaA,GACpCC,kBAAoB,SAACvK,EAAKN,UAClB,OAARM,GAAgBA,EAAIgJ,QACfhJ,EAAIgJ,QAEJ,IAGLwB,gBAAkB,SAACxK,EAAKN,UAAUA,GAE3B+K,SAAW,SAAC5E,GAEvByD,UAAUoB,eAAetB,UAAWvD,EAAO,WAAY,gBAIrDwD,EASExD,EATFwD,KACSsB,EAQP9E,EARF9G,UAQE8G,EAPF+E,aAAAA,aAAeV,sBACRW,EAMLhF,EANFiF,QAMEjF,EALFlI,cAAAA,aAAgBwM,0BAKdtE,EAJF8D,WAAAA,aAAaY,sBAIX1E,EAHFgE,SAAAA,aAAWW,oBAGT3E,EAFFkF,QAAAA,aAAUX,iBACVN,EACEjE,EADFiE,MAGFA,EAAiC,eAAzBtL,QAAQC,IAAIC,UAAoCoL,YAGhBnL,eAAMqM,2BACzCf,gBACAW,0BAFAK,OAAeC,OAKdJ,EAAQnM,eAAMwM,SAAQ,cACtBN,EAAW,KACPP,oBACDW,UAEL/E,OAAOgB,KAAK2D,GAAW3J,SAAQ,SAAA0H,GAC7B0B,EAAS1B,GAAOiC,EAAUjC,MAErB0B,SAEFW,IACN,CAACA,EAAeJ,IAEbO,EAAWzM,eAAM0M,aACrB,SAACC,EAASC,UACDL,GAAiB,SAAAb,OAChBC,EAA8B,mBAAZgB,EAAyBA,EAAQjB,GAAOiB,SACzDP,EAAQV,EAAKC,EAAUiB,QAGlC,CAACR,IAICS,EAAc7M,eAAM8M,OAAO,uBAjDE9D,mCAAAA,oBAmDjCzB,OAAOwF,OAAOF,EAAYG,0BACrB9F,GACHwD,KAAAA,EACAyB,MAAAA,EACAM,SAAAA,EACAzD,QAAAA,EACAf,MAAO,CACLgF,0BAA2B,GAC3BC,8BAA+B,GAC/BC,oBAAqB,GACrBC,QAAS,GACTC,QAAS,GACTC,WAAY,GACZC,cAAe,GACfC,kBAAmB,GACnBC,YAAa,GACbC,oBAAqB,GACrBC,eAAgB,GAChBC,aAAc,OAKW,gBAAzB/N,QAAQC,IAAIC,UAA8BoL,GAAO5J,QAAQsM,KAAK,WAElE7E,EAAQnG,OAAOkF,SAASxF,SAAQ,SAAA+G,GAC9BA,EAAOuD,EAAYG,QAAQ/E,UAGA,gBAAzBpI,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQuM,QAAQ,eAGd1N,EAAUJ,eAAMwM,SAClB,kBAAM9K,mBAAmBsK,EAAahN,KACtC,CAACA,EAAegN,IAKdlK,EAAc9B,eAAMwM,SAAQ,WACD,gBAAzB3M,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQsM,KAAK,uCAEXE,EAAa/F,WACf6E,EAAYG,QAAQ/E,MAAMgF,0BAC1BrE,UAAUxI,EAAS,WACnByM,EAAYG,eAGe,gBAAzBnN,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQuM,QAAQ,mCACXC,KAEP3N,EACA+K,6BAEGnD,WACD6E,EAAYG,QAAQ/E,MAAMiF,8BAC1B,GACAL,EAAYG,YAKVjL,EAAe/B,eAAMwM,SACzB,kBAAM3K,iBAAiBC,EAAa9C,KACpC,CAACA,EAAe8C,IAGZI,EAAUlC,eAAMwM,SAAQ,kBAAMzK,EAAa,GAAGG,UAAS,CAACH,IAE9DwF,OAAOwF,OAAOF,EAAYG,QAAS,CACjC5M,QAAAA,EACA0B,YAAAA,EACAC,aAAAA,EACAG,QAAAA,UAIuBlC,eAAMwM,SAAQ,WACR,gBAAzB3M,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQsM,KAAK,uBAEXG,EAAW,GAqDTC,EAAevD,EAAK/I,KAAI,SAACmB,EAAGmC,UAlDhB,SAAZiJ,EAAaC,EAAalJ,OAAG5E,yDAAQ,EAAG+N,yDAAa,GAEnDjE,EAAWgE,EAEXE,EAAQnD,EAASiD,EAAalJ,GAG9BhB,+BAAWmK,IAAYC,IAEvBhN,EAAM,CACV8I,SAAAA,EACApJ,MAAOkE,EACPhB,KAAAA,EACA5D,MAAAA,EACAiO,MAAO,CAAC,KAGVN,EAAShL,KAAK3B,OAGVgJ,EAAUW,EAAWmD,EAAalJ,GAElCoF,IACFhJ,EAAIgJ,QAAUA,EAAQ1I,KAAI,SAACmB,EAAGmC,UAAMiJ,EAAUpL,EAAGmC,EAAG5E,EAAQ,EAAG4D,WAK3DsK,EAA0B,iBACxB,IAAI9M,MACR,2GAGJJ,EAAIiN,MAAM3M,IAAM4M,EAChBlN,EAAIiN,MAAMzL,OAAS0L,EACnBlN,EAAIiN,MAAM/L,QAAUgM,EACpBlN,EAAIiN,MAAM,GAAGV,aAAeW,EAG5BlN,EAAIsE,OAAS,GACb7D,EAAYS,SAAQ,SAAA3B,GAClBS,EAAIsE,OAAO/E,EAAOI,IAAMJ,EAAOK,SAC3BL,EAAOK,SAASkN,EAAalJ,EAAG,CAAEoF,QAAAA,EAAShK,MAAAA,EAAOqK,KAAAA,SAClD8D,KAGCnN,EAI+B6M,CAAUpL,EAAGmC,YACxB,gBAAzBpF,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQuM,QAAQ,mBACX,CAACG,EAAcD,KACrB,CAAC7C,EAAOT,EAAMQ,EAAUF,EAAYlJ,0BA7DhC0D,OAAMwI,cA+DbnB,EAAYG,QAAQxH,KAAOA,EAC3BqH,EAAYG,QAAQgB,SAAWA,EAG/BxK,0BAA0BqJ,EAAYG,SAGtCH,EAAYG,QAAQyB,YAAc1M,EAAazB,QAC7C,SAACoO,EAAKzM,sCAAoByM,sBAAQzM,EAAYC,YAC9C,IAG2B,gBAAzBrC,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQsM,KAAK,6BACfhB,EAAYG,QAAUhF,WACpB6E,EAAYG,QAAQ/E,MAAMkF,oBAC1BN,EAAYG,SAEe,gBAAzBnN,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQuM,QAAQ,6BAElBa,oBAAoB9B,EAAYG,SAEH,gBAAzBnN,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQsM,KAAK,iBACfhB,EAAYG,QAAUhF,WACpB6E,EAAYG,QAAQ/E,MAAMmF,QAC1BP,EAAYG,SAEe,gBAAzBnN,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQuM,QAAQ,iBAIlBjB,EAAYG,QAAQyB,YAAYlM,SAAQ,SAAA3B,GAEtCA,EAAOgO,OAAS,SAAChC,OAAMiC,yDAAY,GAC3B5H,EAAuB,iBAAT2F,EAAoBhM,EAAOgM,GAAQA,UAEnC,IAAT3F,QACH,IAAIxF,MAAM4J,kBAGXrE,WAAWC,oBACb4F,EAAYG,SACfpM,OAAAA,GACGiO,KAKPjO,EAAO+M,eAAiB,SAAAzG,UACtBS,WACE,CACEsC,IAAK,CAAC,SAAUrJ,EAAOI,IAAIiC,KAAK,KAChC6L,QAASlO,EAAO8C,yBAElB2E,eACEwE,EAAYG,QAAQ/E,MAAM0F,eAC1B/M,EACAiM,EAAYG,SAEd9F,OAIN2F,EAAYG,QAAQjL,aAAaQ,SAAQ,SAACN,EAAagD,MAErDhD,EAAYC,QAAUD,EAAYC,QAAQW,QAAO,SAAAU,UAQ3CA,EAAOrB,QAPK,SAAV4G,EAAU5G,UACdA,EAAQW,QAAO,SAAAU,UACTA,EAAOrB,QACF4G,EAAQvF,EAAOrB,SAEjBqB,EAAOO,aACbrB,OAEIqG,CAAQvF,EAAOrB,SAEjBqB,EAAOO,aAIZ7B,EAAYC,QAAQO,cACtBR,EAAYyL,oBAAsB,eAACxG,yDAAQ,UACzCS,WACE,CACEsC,IAAK,iBAAUhF,IAAKhC,KAAK,MAE3BoF,eACEwE,EAAYG,QAAQ/E,MAAMyF,oBAC1BzL,EACA4K,EAAYG,SAEd9F,KAGG,KAKkB,gBAAzBrH,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQsM,KAAK,iBACfhB,EAAYG,QAAQxH,KAAOwC,WACzB6E,EAAYG,QAAQ/E,MAAMoF,QAC1BR,EAAYG,QAAQxH,KACpBqH,EAAYG,SAEe,gBAAzBnN,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQuM,QAAQ,iBAKlBjB,EAAYG,QAAQM,WAAatN,eAAM0M,aAAY,SAAArL,GACjDA,EAAIoM,YAAc,SAAAvG,UAChBS,WACE,CAAEsC,IAAK,CAAC,iCAAU5I,EAAI4C,OAAMhB,KAAK,MACjCoF,eACEwE,EAAYG,QAAQ/E,MAAMwF,YAC1BpM,EACAwL,EAAYG,SAEd9F,IAIJ7F,EAAIiN,MAAQzB,EAAYG,QAAQlL,YAC7Be,QAAO,SAAAC,UAAKA,EAAEgB,aACdnC,KAAI,SAAAf,OACG1B,EAAO,CACX0B,OAAAA,EACAS,IAAAA,EACAlC,MAAOkC,EAAIsE,OAAO/E,EAAOI,IAI3B9B,aAAoB,SAAAgI,OACZ6H,EAAgB,6BAAI1N,EAAI4C,OAAMrD,EAAOI,KAAIiC,KAAK,YAC7C0E,WACL,CACEsC,IAAK,CAAC,OAAQ8E,GAAe9L,KAAK,MAEpCoF,eACEwE,EAAYG,QAAQ/E,MAAM2F,aAC1B1O,EACA2N,EAAYG,SAEd9F,IAKJhI,OAAc,SAAC0N,OAAMiC,yDAAY,GACzB5H,EAAuB,iBAAT2F,EAAoBhM,EAAOgM,GAAQA,UAEnC,IAAT3F,QACH,IAAIxF,MAAM4J,kBAGXrE,WAAWC,oBACb4F,EAAYG,SACfpM,OAAAA,EACAS,IAAAA,EACAnC,KAAAA,GACG2P,aAIA3P,KAIX8I,WAAW6E,EAAYG,QAAQ/E,MAAMqF,WAAYjM,EAAKwL,EAAYG,WACjE,IAEHH,EAAYG,QAAQO,cAAgB,SAAAsB,UAClClH,WACEU,eACEwE,EAAYG,QAAQ/E,MAAMsF,cAC1BV,EAAYG,SAEd6B,IAGJhC,EAAYG,QAAQQ,kBAAoB,SAAAqB,UACtClH,WACEU,eACEwE,EAAYG,QAAQ/E,MAAMuF,kBAC1BX,EAAYG,SAEd6B,IAGGhC,EAAYG,SAGrB,SAAS2B,oBAAoBlL,OACnBvB,EAAYuB,EAAZvB,QAERuB,EAASuL,kBAAoBC,sBAAsB/M,GAGrD,SAAS+M,sBAAsB/M,OAASmE,yDAAO,EACzC6I,EAAgB,SAEpBhN,EAAQK,SAAQ,SAAAgB,OACC4L,EAAe5L,EAAxBrB,QAENqB,EAAO6L,UAAY/I,EAEf8I,GAAcA,EAAW1M,OAC3Bc,EAAO8L,WAAaJ,sBAAsBE,EAAY9I,GAEtD9C,EAAO8L,WAAa5O,KAAK6O,IACvB7O,KAAKC,IAAI6C,EAAOhE,SAAUgE,EAAOjE,OACjCiE,EAAO/D,UAGP+D,EAAOO,YACTuC,GAAQ9C,EAAO8L,WACfH,GAAiB3L,EAAO8L,eAIrBH,MC7cHK,QAAU,GAKHC,WAAa,sCAAIC,2BAAAA,kBAC5BA,EAAKlN,SAAQ,SAAAmN,GAKXH,QAAQG,iCAAiCA,OCJ7CpE,aAAazB,SAAW,GAExB2F,WAAW,iBAAkB,eAE7B,IAAM/E,YAAY,CAChBb,kBAAmBe,UAAUgF,OAC7BC,qBAAsBjF,UAAUS,MAGrByE,YAAc,SAAA5H,GACzBA,EAAM6H,uBAAyB,GAC/B7H,EAAMmF,QAAQpK,KAAKoK,UAKrB,SAASA,QAAQ3J,GACfkH,UAAUoB,eAAetB,YAAWhH,EAAU,WAAY,mBAGxD0H,EAQE1H,EARF0H,MACA3F,EAOE/B,EAPF+B,OAOE/B,EANFmG,kBAAAA,aAAoB,eAMlBnG,EALFmM,qBAAAA,kBAKEnM,EAJFqG,cAAAA,gBACA7B,EAGExE,EAHFwE,MACS4B,EAEPpG,EAFF0I,MAAStC,SACT4C,EACEhJ,EADFgJ,SAGIsD,EAAuB,SAAC9L,EAAM+L,OAC5B/F,EAAMhG,EAAKhB,KAAK,YAEfwJ,GAAS,SAAAf,OACRuE,EAASvE,EAAI7B,SAASzG,SAAS6G,GAC/BiG,OAA6B,IAARF,EAAsBA,GAAOC,EACpDE,EAAc,IAAIC,IAAI1E,EAAI7B,cAEzBoG,GAAUC,EACbC,EAAYE,IAAIpG,OACX,CAAA,IAAIgG,GAAWC,SAGbxE,EAFPyE,EAAYG,OAAOrG,4BAMhByB,GACH7B,4BAAcsG,EAAYxK,cAE3B4J,QAAQgB,iBAGbtI,EAAMqF,WAAWtK,MAAK,SAAC3B,EAAKoC,GAC1BpC,EAAIkP,eAAiB,SAAAP,UAAOD,EAAqB1O,EAAI4C,KAAM+L,QACrDQ,EAAiBnI,eACrB5E,EAASwE,MAAM6H,uBACfzO,EACAoC,UAEFpC,EAAIyO,uBAAyB,SAAA5I,UACpBS,WACL,CACE8I,QAAS,SAAAjM,GACPA,EAAEkM,UACFrP,EAAIkP,kBAENrK,MAAO,CACL5B,OAAQ,WAEVqM,MAAO,mBAETH,EACAtJ,IAGG7F,SAGH0I,EAAeyC,eAAQ,iBACE,gBAAzB3M,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQqP,KAAK,mBAEXhB,EACKjG,WAAWnE,EAAM,CAAEoE,kBAAAA,EAAmBC,SAAAA,EAAUC,cAAAA,IAGlDtE,IACN,CACD2F,EACAyE,EACApK,EACAoE,EACAC,EACAC,IAGI+G,EAAgBC,kBAAkBjH,4BAGnCpG,GACHsM,qBAAAA,EACAc,cAAAA,EACArL,KAAMuE,IAIV,SAAS+G,kBAAkBjH,OACrBkH,EAAW,SAEflH,EAAStH,SAAQ,SAAA0H,OACThG,EAAOgG,EAAI7I,MAAM,KACvB2P,EAAWtQ,KAAKC,IAAIqQ,EAAU9M,EAAKxB,WAG9BsO,EArGTlB,YAAY3G,WAAa,kBCrBZ8H,KAAO,SAACxL,EAAMxE,EAAIiQ,UAC7BzL,EAAOA,EAAK3C,QAAO,SAAAxB,OACX6P,EAAW7P,EAAIsE,OAAO3E,UACrB5B,OAAO8R,GACXC,cACA/N,SAAShE,OAAO6R,GAAaE,mBAKpCH,KAAKI,WAAa,SAAAjN,UAAQA,GAE1B,IAAakN,UAAY,SAAC7L,EAAMxE,EAAIiQ,UAC3BzL,EAAK3C,QAAO,SAAAxB,OACX6P,EAAW7P,EAAIsE,OAAO3E,eACRwN,IAAb0C,GACH9R,OAAO8R,GAAUC,gBAAkB/R,OAAO6R,GAAaE,kBAK/DE,UAAUD,WAAa,SAAAjN,UAAQA,GAE/B,IAAamN,cAAgB,SAAC9L,EAAMxE,EAAIiQ,UAC/BzL,EAAK3C,QAAO,SAAAxB,OACX6P,EAAW7P,EAAIsE,OAAO3E,eACRwN,IAAb0C,GACH9R,OAAO8R,KAAc9R,OAAO6R,OAKpCK,cAAcF,WAAa,SAAAjN,UAAQA,GAEnC,IAAaf,SAAW,SAACoC,EAAMxE,EAAIiQ,UAC1BzL,EAAK3C,QAAO,SAAAxB,OACX6P,EAAW7P,EAAIsE,OAAO3E,UACrBiQ,EAAY7N,SAAS8N,OAIhC9N,SAASgO,WAAa,SAAAjN,UAAQA,IAAQA,EAAI1B,QAE1C,IAAa8O,YAAc,SAAC/L,EAAMxE,EAAIiQ,UAC7BzL,EAAK3C,QAAO,SAAAxB,OACX6P,EAAW7P,EAAIsE,OAAO3E,UAE1BkQ,GACAA,EAASzO,QACTwO,EAAYO,OAAM,SAAArN,UAAO+M,EAAS9N,SAASe,UAKjDoN,YAAYH,WAAa,SAAAjN,UAAQA,IAAQA,EAAI1B,QAE7C,IAAagP,MAAQ,SAACjM,EAAMxE,EAAIiQ,UACvBzL,EAAK3C,QAAO,SAAAxB,UACAA,EAAIsE,OAAO3E,KACRiQ,MAIxBQ,MAAML,WAAa,SAAAjN,eAAsB,IAARA,GAEjC,IAAauN,OAAS,SAAClM,EAAMxE,EAAIiQ,UACxBzL,EAAK3C,QAAO,SAAAxB,UACAA,EAAIsE,OAAO3E,IAETiQ,MAIvBS,OAAON,WAAa,SAAAjN,UAAc,MAAPA,GAE3B,IAAawN,QAAU,SAACnM,EAAMxE,EAAIiQ,wBACfA,GAAe,MAA3B3B,OAAK5O,WAEV4O,EAAqB,iBAARA,EAAmBA,GAAOsC,EAAAA,IACvClR,EAAqB,iBAARA,EAAmBA,EAAMkR,EAAAA,GAEvB,KACPC,EAAOvC,EACbA,EAAM5O,EACNA,EAAMmR,SAGDrM,EAAK3C,QAAO,SAAAxB,OACX6P,EAAW7P,EAAIsE,OAAO3E,UACrBkQ,GAAY5B,GAAO4B,GAAYxQ,MAI1CiR,QAAQP,WAAa,SAAAjN,UAClBA,GAA0B,iBAAXA,EAAI,IAAqC,iBAAXA,EAAI,mLCtFpDmH,aAAawG,QAAU,GAEvBtC,WAAW,YAAa,iBAExB,IAAM/E,YAAY,CAChBrK,QAASuK,UAAUG,QACjBH,UAAUoH,MAAM,CACdC,eAAgBrH,UAAUS,KAC1B6G,OAAQtH,UAAUuH,OAItBC,cAAexH,UAAUS,MAGdgH,WAAa,SAAAnK,GACxBA,EAAMmF,QAAQpK,KAAKoK,YAKrB,SAASA,UAAQ3J,GACfkH,UAAUoB,eAAetB,YAAWhH,EAAU,WAAY,kBAGxD0H,EASE1H,EATF0H,MACA3F,EAQE/B,EARF+B,KACAwI,EAOEvK,EAPFuK,SACAlM,EAME2B,EANF3B,YACauQ,EAKX5O,EALF6O,YACAH,EAIE1O,EAJF0O,cACAH,EAGEvO,EAHFuO,eACSF,EAEPrO,EAFF0I,MAAS2F,QACTrF,EACEhJ,EADFgJ,SAGI8F,EAAkB/M,EAClBgN,EAAsBxE,EAEtByE,EAAY,SAACzR,EAAI2L,OACf/L,EAASkB,EAAY4Q,MAAK,SAAA5P,UAAKA,EAAE9B,KAAOA,SAEzCJ,QACG,IAAIa,8DAAuDT,QAG7D2R,EAAeC,gBACnBhS,EAAOiC,OACPwP,GAAmB,GACnBC,oBAGK7F,GAAS,SAAAf,OACRmH,EACe,mBAAZlG,EAAyBA,EAAQjB,EAAIoG,QAAQ9Q,IAAO2L,KAGzDmG,iBAAiBH,EAAavB,WAAYyB,GAAY,OAChBnH,EAAIoG,UAAnC9Q,4BAEJ0K,GACHoG,oCAHO9Q,mDAQN0K,GACHoG,0BACKpG,EAAIoG,2BACN9Q,EAAK6R,QAGTtD,QAAQkD,YA6Bb3Q,EAAYS,SAAQ,SAAA3B,OACVI,EAAuDJ,EAAvDI,GAAIC,EAAmDL,EAAnDK,SAA0B8R,EAAyBnS,EAAzCoR,eAGtBpR,EAAOoS,YAAY/R,GACfoE,iBAC2B,IAAzB0N,QAAwCvE,GACrB,IAAnBwD,QAAkCxD,GAClC,GAKN5N,EAAO6R,UAAY,SAAAtO,UAAOsO,EAAU7R,EAAOI,GAAImD,IAI/CvD,EAAOqQ,YAAca,EAAQ9Q,YAQYhB,eAAMwM,SAAQ,cACnD2F,IAAkB5K,OAAOgB,KAAKuJ,GAASrP,aAClC,CACLwQ,aAAczN,EACd0N,iBAAkBlF,OAIhBkF,EAAmB,GAEI,gBAAzBrT,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQqP,KAAK,yBAmER,CACLqC,aAjEiB,SAAbE,EAAc3N,OAAMnF,yDAAQ,SAGjBkH,OAAO6L,QAAQtB,GAASxR,QACrC,SAAC+S,+BAAgB5N,OAAUwL,OAEnBrQ,EAASkB,EAAY4Q,MAAK,SAAA5P,UAAKA,EAAE9B,KAAOyE,SAEzC7E,SACIyS,EAGK,IAAVhT,IACFO,EAAO2R,gBAAkBc,OAGrBV,EAAeC,gBACnBhS,EAAOiC,OACPwP,GAAmB,GACnBC,oBAGGK,GASL/R,EAAOqS,aAAeN,EACpBU,EACA5N,EACAwL,EACArQ,GAGKA,EAAOqS,eAfZ1R,QAAQ+R,8EAC4D1S,EAAOI,SAEpEqS,KAcX7N,GAO0B7D,KAAI,SAAAN,UAC9B6R,EAAiBlQ,KAAK3B,GACjBA,EAAIgJ,0BAIJhJ,GACHgJ,QACEhJ,EAAIgJ,SAAWhJ,EAAIgJ,QAAQ5H,OAAS,EAChC0Q,EAAW9R,EAAIgJ,QAAShK,EAAQ,GAChCgB,EAAIgJ,UAPHhJ,KAeG8R,CAAW3N,GACzB0N,iBAAAA,KAED,CACDf,EACAL,EACA3G,EACA3F,EACAwI,EACAlM,EACAuQ,IAzFMY,IAAAA,aAAcC,IAAAA,wBA4FtBlT,eAAMwM,SAAQ,WAGe1K,EAAYe,QACrC,SAAAjC,UAAW2G,OAAOgB,KAAKuJ,GAAS1O,SAASxC,EAAOI,OAK/BuB,SAAQ,SAAA3B,GACzBA,EAAO2R,gBAAkBU,EACzBrS,EAAOqS,aAAeA,OAEvB,CAACA,EAAcnB,EAAShQ,sBAGtB2B,GACHgP,UAAAA,EACAc,cAjKoB,SAAA5G,UACbF,GAAS,SAAAf,OACR8H,EAAgC,mBAAZ7G,EAAyBA,EAAQjB,GAAOiB,SAGlEpF,OAAOgB,KAAKiL,GAAYjR,SAAQ,SAAAvB,OACxB6R,EAAYW,EAAWxS,GAQzB8R,iBANiBF,gBADN9Q,EAAY4Q,MAAK,SAAA5P,UAAKA,EAAE9B,KAAOA,KAErC6B,OACPwP,GAAmB,GACnBC,aAGgClB,WAAYyB,WACrCW,EAAWxS,wBAKjB0K,GACHoG,QAAS0B,MAEVjE,QAAQgE,gBA2IXhB,gBAAAA,EACAC,oBAAAA,EACAhN,KAAMyN,EACNjF,SAAUkF,IAId,SAASJ,iBAAiB1B,EAAYjS,UAC7BiS,EAAaA,EAAWjS,QAA0B,IAAVA,EAGjD,SAASyT,gBAAgB/P,EAAQwP,EAAiBC,UAE9C5J,WAAW7F,IACXwP,EAAgBxP,IAChByP,EAAYzP,IACZyP,EAAYtB,KCrQT,SAAS1N,MAAIqC,EAAQH,UACnBG,EAAOrF,QAAO,SAACgD,EAAK6E,UAAS7E,EAAM6E,IAAM,GAG3C,SAASsL,QAAQ9N,EAAQH,UACvB/E,KAAKiT,MAAOpQ,MAAIqC,EAAQH,GAAQG,EAAOlD,OAAU,KAAO,IAG1D,SAASkR,OAAOhO,OACjB2J,EAAM3J,EAAO,IAAM,GACnBjF,EAAMiF,EAAO,IAAM,UAEvBA,EAAOpD,SAAQ,SAAApD,GACbmQ,EAAM7O,KAAK6O,IAAIA,EAAKnQ,GACpBuB,EAAMD,KAAKC,IAAIA,EAAKvB,OAGdmQ,EAAM5O,GAAO,EAGhB,SAASkT,YAAYjO,UACnB,IAAIyK,IAAIzK,GAAQkO,KAGlB,SAASC,MAAMnO,UACbA,EAAOlD,ODEhB2P,WAAWlJ,WAAa,2HEbxBoC,aAAayI,QAAU,GAEvBvE,WAAW,iBAEX,IAAM/E,YAAY,CAEhBrK,QAASuK,UAAUG,QACjBH,UAAUoH,MAAM,CACdiC,UAAWrJ,UAAUsJ,UAAU,CAC7BtJ,UAAUM,KACVN,UAAUgF,OACVhF,UAAUG,QACRH,UAAUsJ,UAAU,CAACtJ,UAAUM,KAAMN,UAAUgF,YAGnDuE,gBAAiBvJ,UAAUS,KAC3B+I,WAAYxJ,UAAUuH,OAG1BkC,UAAWzJ,UAAUM,KACrBoJ,eAAgB1J,UAAUS,KAC1B8I,gBAAiBvJ,UAAUS,KAC3BkJ,aAAc3J,UAAUI,QAGbwJ,WAAa,SAAAtM,GACxBA,EAAMuM,sBAAwB,GAC9BvM,EAAMgF,0BAA0BjK,KAAKiK,2BACrChF,EAAMiF,8BAA8BlK,MAAK,SAACyR,EAAMhR,UAC9CgR,EAAKzR,KAAKS,EAAS0I,MAAM4H,SAClBU,KAETxM,EAAMmF,QAAQpK,KAAKoK,YAKrB,SAASH,0BAA0BnL,SAAwBiS,IAAT5H,MAAS4H,QAInDW,EAAiBX,EAAQpS,KAAI,SAAAgT,UAAK7S,EAAY4Q,MAAK,SAAApQ,UAAOA,EAAItB,KAAO2T,QACrEC,EAAoB9S,EAAYe,QAAO,SAAAP,UAAQyR,EAAQ3Q,SAASd,EAAItB,OAGpE6T,EACJ/S,EAAYuH,WAAU,SAAAzI,UAAUA,EAAOkU,mBAAmB,qCAGvDF,EAAkBG,MAAM,EAAGF,uBAC3BH,sBACAE,EAAkBG,MAAMF,KAI/B,SAASzH,UAAQ3J,GACfkH,UAAUoB,eAAetB,YAAWhH,EAAU,WAAY,kBAGxD0H,EAYE1H,EAZF0H,MACA3F,EAWE/B,EAXF+B,KACA1D,EAUE2B,EAVF3B,YACA2M,EASEhL,EATFgL,cASEhL,EARF2Q,UAAAA,aAAY7O,mBACZyP,EAOEvR,EAPFuR,cACAd,EAMEzQ,EANFyQ,kBAMEzQ,EALF6Q,aAAcW,aAAmB,KACjChN,EAIExE,EAJFwE,MACAe,EAGEvF,EAHFuF,QACS+K,EAEPtQ,EAFF0I,MAAS4H,QACTtH,EACEhJ,EADFgJ,SAGF1D,kBAAkBC,EAAS,GAAI,aAAc,CAAC,YAAa,gBAE3DlH,EAAYS,SAAQ,SAAA3B,OACVI,EAAyDJ,EAAzDI,GAAIC,EAAqDL,EAArDK,SAA2BiU,EAA0BtU,EAA3CsT,gBACtBtT,EAAOuU,UAAYpB,EAAQ3Q,SAASpC,GACpCJ,EAAOwU,aAAerB,EAAQsB,QAAQrU,GAEtCJ,EAAO0U,aAAarU,GAChBoE,iBAC4B,IAA1B6P,QAAyC1G,GACrB,IAApB0F,QAAmC1F,GACnC,GAIF5N,EAAO0U,aACT1U,EAAO2U,cAAgB,kBAAMA,EAAc3U,EAAOI,MAGpDJ,EAAOuT,WAAavT,EAAOuT,YAAcvT,EAAO3B,YAG5CsW,EAAgB,SAACvU,EAAIwU,UAClB/I,GAAS,SAAAf,4BAKPA,QAHa,IAAX8J,EAAyBA,GAAUzB,EAAQ3Q,SAASpC,KAIzD+S,qCAAaA,IAAS/S,MAKxB+S,QAASA,EAAQlR,QAAO,SAAAC,UAAKA,IAAM9B,SAEpCuO,QAAQgG,gBAGb9G,EAAYlM,iBAETkB,UAAY,SAAAF,OACH+R,EAAe/R,EAAf+R,WACFG,EAA8BpN,eAClC5E,EAASwE,MAAMuM,sBACfjR,EACAE,GAEFF,EAAOiR,sBAAwB,SAAAtN,UACtBS,WACL,CACE8I,QAAS6E,EACL,SAAA9Q,GACEA,EAAEkM,UACFnN,EAAOgS,sBAET/G,EACJtI,MAAO,CACL5B,OAAQgR,EAAa,eAAY9G,GAEnCmC,MAAO,kBAET8E,EACAvO,MAGHzD,IAGLwE,EAAMqF,WAAWtK,MAAK,SAAA3B,UACpBA,EAAIiN,MAAM/L,SAAQ,SAAArD,GAEhBA,EAAKiW,UAAYjW,EAAK0B,OAAOuU,WAAajW,EAAK0B,OAAOI,KAAOK,EAAIqU,UAEjExW,EAAKyW,iBAAmBzW,EAAKiW,WAAajW,EAAK0B,OAAOuU,UAEtDjW,EAAK0W,cACF1W,EAAKiW,YAAcjW,EAAKyW,iBAAmBtU,EAAI+I,aAE7C/I,SAGHwU,EAAcrJ,eAAQ,cACtBwI,IAAkBjB,EAAQtR,cACrB+C,EAGoB,gBAAzB3F,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQqP,KAAK,sBAITkF,EAAwB,SAACtQ,EAAMuQ,OAC7BpQ,EAAS,UAEf7D,EAAYS,SAAQ,SAAA3B,MAEdmT,EAAQ3Q,SAASxC,EAAOI,IAC1B2E,EAAO/E,EAAOI,IAAMwE,EAAK,GAAKA,EAAK,GAAGG,OAAO/E,EAAOI,IAAM,cAItDgV,EAAexQ,EAAK7D,KAAI,SAAAmB,UAAKA,EAAE6C,OAAO/E,EAAOI,OAE/CiV,EAAarV,EAAOoT,aAEpBpO,MAAMC,QAAQoQ,GAAa,IACH,IAAtBA,EAAWxT,aACblB,QAAQqP,KAAK,CAAEhQ,OAAAA,IACT,IAAIa,kHAKVwU,EADEF,EACWE,EAAW,GAEXA,EAAW,OAIxBC,EACoB,mBAAfD,EACHA,EACAhB,EAAiBgB,IAAe3B,aAAa2B,MAE/CC,EACFvQ,EAAO/E,EAAOI,IAAMkV,EAAYF,EAAcxQ,OACzC,CAAA,GAAIyQ,QACT1U,QAAQqP,KAAK,CAAEhQ,OAAAA,IACT,IAAIa,uEAIVkE,EAAO/E,EAAOI,IAAM,UAGjB2E,UAIgB,SAAnBwQ,EAAoB3Q,OAAMnF,yDAAQ,EAAG+N,yDAAa,MAElD/N,GAAS0T,EAAQtR,cACZ+C,MAGHC,EAAWsO,EAAQ1T,GAGrBwV,EAAczB,EAAU5O,EAAMC,UAGlCoQ,EAActO,OAAO6L,QAAQyC,GAAalU,KACxC,WAAwBZ,6BAAtBqV,OAAY/L,OACNpG,+BAAWmK,cAAe3I,cAAY2Q,KAE5C/L,EAAU8L,EAAiB9L,EAAShK,EAAQ,EAAG4D,OAEzC0B,EAASmQ,EACbzL,EACAhK,EAAQ,GAAK0T,EAAQtR,cAGX,CACVmT,cAAc,EACdF,UAAWjQ,EACX2Q,WAAAA,EACAzQ,OAAAA,EACA0E,QAAAA,EACAhK,MAAAA,EACAU,MAAAA,EACAkD,KAAAA,MAWDkS,CAAiB3Q,KACvB,CACDwP,EACAjB,EACA5I,EACA3F,EACA1D,EACAmT,EACAb,6BAIG3Q,GACH8R,cAAAA,EACA/P,KAAMqQ,EACNQ,eAAgB7Q,IA3OpB+O,WAAWrL,WAAa,aCjDxB,IAAMoN,oBAAsB,aAKfC,aAAe,SAACxR,EAAMC,EAAMS,OACnCkD,EAAI6N,sBAAsBzR,EAAMU,GAChCgR,EAAID,sBAAsBxR,EAAMS,OAEpCkD,EAAI+N,SAAS/N,GACb8N,EAAIC,SAASD,GAIb9N,EAAIA,EAAEvH,MAAMkV,qBAAqBzT,OAAOkF,SACxC0O,EAAIA,EAAErV,MAAMkV,qBAAqBzT,OAAOkF,SAGjCY,EAAElG,QAAUgU,EAAEhU,QAAQ,KACvBkU,EAAKhO,EAAEiO,QACPC,EAAKJ,EAAEG,QAELE,EAAKxQ,SAASqQ,EAAI,IAClBI,EAAKzQ,SAASuQ,EAAI,IAElBG,EAAQ,CAACF,EAAIC,GAAIjS,UAGnBmS,MAAMD,EAAM,QACVL,EAAKE,SACA,KAELA,EAAKF,SACC,UAMRM,MAAMD,EAAM,WACPC,MAAMH,IAAO,EAAI,KAItBA,EAAKC,SACA,KAELA,EAAKD,SACC,UAILnO,EAAElG,OAASgU,EAAEhU,QAGtB,SAAgByU,SAASnS,EAAMC,EAAMS,OAC/BkD,EAAI6N,sBAAsBzR,EAAMU,GAChCgR,EAAID,sBAAsBxR,EAAMS,UAK7B0R,aAHPxO,EAAIA,EAAEyO,UACNX,EAAIA,EAAEW,WAKR,SAAgBC,MAAMtS,EAAMC,EAAMS,UAIzB0R,aAHCX,sBAAsBzR,EAAMU,GAC5B+Q,sBAAsBxR,EAAMS,IAOtC,SAAS0R,aAAaxO,EAAG8N,UAChB9N,IAAM8N,EAAI,EAAI9N,EAAI8N,EAAI,GAAK,EAGpC,SAASD,sBAAsBnV,EAAKoE,UAC3BpE,EAAIsE,OAAOF,GAGpB,SAASiR,SAAS/N,SACC,iBAANA,EACLsO,MAAMtO,IAAMA,IAAMiJ,EAAAA,GAAYjJ,KAAOiJ,EAAAA,EAChC,GAEFxS,OAAOuJ,GAEC,iBAANA,EACFA,EAEF,0FC7ET2C,aAAagM,OAAS,GACtBtY,cAAcuY,SAAW,eACzBvY,cAAcwY,eAAgB,EAE9BhI,WAAW,gBAEX,IAAM/E,YAAY,CAEhBrK,QAASuK,UAAUG,QACjBH,UAAUoH,MAAM,CACdwF,SAAU5M,UAAUsJ,UAAU,CAACtJ,UAAUgF,OAAQhF,UAAUM,OAC3DuM,cAAe7M,UAAUS,KACzBqM,eAAgB9M,UAAUS,QAG9BsM,UAAW/M,UAAUM,KACrB0M,UAAWhN,UAAUI,OACrB6M,cAAejN,UAAUS,KACzBqM,eAAgB9M,UAAUS,KAC1ByM,iBAAkBlN,UAAUS,KAC5B0M,iBAAkBnN,UAAUM,KAC5B8M,qBAAsBpN,UAAUqN,OAChCC,kBAAmBtN,UAAUS,KAC7B8M,mBAAoBvN,UAAUS,MAGnB+M,UAAY,SAAAlQ,GACvBA,EAAMmF,QAAQpK,KAAKoK,WAEnBnF,EAAMmQ,qBAAuB,IAK/B,SAAShL,UAAQ3J,GACfkH,UAAUoB,eAAetB,YAAWhH,EAAU,WAAY,iBAGxD0H,EAgBE1H,EAhBF0H,MACA3F,EAeE/B,EAfF+B,KACA1D,EAcE2B,EAdF3B,cAcE2B,EAbFiU,UAAAA,aAAYjT,mBACD4T,EAYT5U,EAZFkU,UACAC,EAWEnU,EAXFmU,cACAH,EAUEhU,EAVFgU,eACAQ,EASExU,EATFwU,kBACAC,EAQEzU,EARFyU,mBACAL,EAOEpU,EAPFoU,mBAOEpU,EANFqU,iBAAAA,aAAmB,SAAAtT,UAAKA,EAAE8T,cAMxB7U,EALFsU,qBAAAA,aAAuBtY,OAAOC,mBAC9B+O,EAIEhL,EAJFgL,YACS6I,EAGP7T,EAHF0I,MAASmL,OACT7K,EAEEhJ,EAFFgJ,SAIF1D,kBAFItF,EADFuF,QAGyB,CAAC,cAAe,YAAa,QAGlDuP,EAAe,SAAC9S,EAAUN,EAAMqT,UAC7B/L,GAAS,SAAAf,OAeVgE,EAdI4H,EAAW5L,EAAX4L,OAIAE,EADO1V,EAAY4Q,MAAK,SAAA5P,UAAKA,EAAE9B,KAAOyE,KACtC+R,cAGFiB,EAAiBnB,EAAO5E,MAAK,SAAA5P,UAAKA,EAAE9B,KAAOyE,KAC3CiT,EAAgBpB,EAAOjO,WAAU,SAAAvG,UAAKA,EAAE9B,KAAOyE,KAC/CkT,EAAiB,MAAOxT,EAE1ByT,EAAY,SAwBH,YAjBTlJ,GAFCmI,GAAoBW,EACnBC,EACO,SAEA,MAIPC,IAAkBpB,EAAO7U,OAAS,EAC3B,UACAgW,EACA,SAEA,YAOVR,GACAU,GACAH,GAASN,KACRO,GACCA,EAAetT,OAASqS,IACvBiB,EAAetT,MAAQqS,KAE3B9H,EAAS,UAGI,YAAXA,EACFkJ,EAAY,CACV,CACE5X,GAAIyE,EACJN,KAAMwT,EAAiBxT,EAAOqS,IAGd,QAAX9H,GACTkJ,+BACKtB,IACH,CACEtW,GAAIyE,EACJN,KAAMwT,EAAiBxT,EAAOqS,MAIxBqB,OAAO,EAAGD,EAAUnW,OAASsV,GACnB,WAAXrI,EAETkJ,EAAYtB,EAAO3V,KAAI,SAAAmB,UACjBA,EAAE9B,KAAOyE,oBAEN3C,GACHqC,KAAMwT,EAAiBxT,GAAQsT,EAAetT,OAG3CrC,KAEW,WAAX4M,IACTkJ,EAAYtB,EAAOzU,QAAO,SAAAC,UAAKA,EAAE9B,KAAOyE,wBAIrCiG,GACH4L,OAAQsB,MAETrJ,QAAQuJ,eAIbrK,EAAYlM,iBAETkB,UAAY,SAAA7C,OACHK,EAAuDL,EAAvDK,SAA0B8X,EAA6BnY,EAA7C6W,eAAsCzW,EAAOJ,EAAPI,GAElDgY,IAAU/X,GACZoE,iBAC2B,IAAzB0T,QAAwCvK,GACrB,IAAnBiJ,QAAkCjJ,GAClC,GAIN5N,EAAOoY,QAAUA,EAEbpY,EAAOoY,UACTpY,EAAO2X,aAAe,SAACpT,EAAMqT,UAC3BD,EAAa3X,EAAOI,GAAImE,EAAMqT,IAEhC5X,EAAOqY,aAAe,kBACbxM,GAAS,SAAAf,4BAITA,GACH4L,OAJiB5L,EAAX4L,OACiBzU,QAAO,SAAAC,UAAKA,EAAE9B,KAAOJ,EAAOI,UAKpDuO,QAAQuJ,oBAITI,EAA6B7Q,eACjC5E,EAASwE,MAAMmQ,qBACfxX,EACA6C,GAEF7C,EAAOwX,qBAAuB,SAAAlR,UACrBS,WACL,CACE8I,QAASuI,EACL,SAAAxU,GACEA,EAAEkM,UACF9P,EAAO2X,kBACL/J,GACCqJ,GAAoBC,EAAiBtT,UAG1CgK,EACJtI,MAAO,CACL5B,OAAQ0U,EAAU,eAAYxK,GAEhCmC,MAAO,iBAETuI,EACAhS,QAIEiS,EAAa7B,EAAO5E,MAAK,SAAA5P,UAAKA,EAAE9B,KAAOA,KAC7CJ,EAAOwY,WAAaD,EACpBvY,EAAOyY,YAAc/B,EAAOjO,WAAU,SAAAvG,UAAKA,EAAE9B,KAAOA,KACpDJ,EAAO0Y,aAAe1Y,EAAOwY,SAAWD,EAAWhU,UAAOqJ,IACzD/K,QAGC8V,EAAavZ,eAAMwM,SAAQ,cAC3BoL,IAAkBN,EAAO7U,cACpB+C,EAEoB,gBAAzB3F,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQsM,KAAK,qBAGT2L,EAAkBlC,EAAOzU,QAAO,SAAAiC,UACpChD,EAAY4Q,MAAK,SAAApQ,UAAOA,EAAItB,KAAO8D,EAAK9D,eAmEb,gBAAzBnB,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQuM,QAAQ,iBAjED,SAAX2L,EAAWjU,OAITkU,EAAahC,EACjBlS,EACAgU,EAAgB7X,KAAI,SAAAmD,OAEZlE,EAASkB,EAAY4Q,MAAK,SAAA5P,UAAKA,EAAE9B,KAAO8D,EAAK9D,UAE9CJ,QACG,IAAIa,8DACyCqD,EAAK9D,0BAIlDuW,EAAa3W,EAAb2W,SASFoC,EACJjR,WAAW6O,KACVc,GAAiB,IAAId,IACtBI,UAAUJ,OAEPoC,QACG,IAAIlY,iEAC4C8V,2BAAyBzS,EAAK9D,iBAM/E,SAAC2H,EAAG8N,UAAMkD,EAAWhR,EAAG8N,EAAG3R,EAAK9D,QAGzCwY,EAAgB7X,KAAI,SAAAmD,OAEZlE,EAASkB,EAAY4Q,MAAK,SAAA5P,UAAKA,EAAE9B,KAAO8D,EAAK9D,aAE/CJ,GAAUA,EAAOgZ,aACZ9U,EAAKK,MAGNL,EAAKK,gBAKjBuU,EAAWnX,SAAQ,SAAAlB,IACZA,EAAIgJ,SAAWhJ,EAAIgJ,QAAQ5H,QAAU,IAG1CpB,EAAIgJ,QAAUoP,EAASpY,EAAIgJ,aAGtBqP,EAMFD,CAASjU,KACf,CACDoS,EACAN,EACAnM,EACA3F,EACA1D,EACA4V,EACAW,6BAIG5U,GACH8U,aAAAA,EACA/S,KAAM+T,EACNM,cAAerU,IAlRnB2S,UAAUjP,WAAa,YCvCvBoC,aAAawO,SAAW,GACxBxO,aAAayO,UAAY,EAEzBvK,WAAW,aAAc,kBAEzB,IAAM/E,YAAY,CAEhBuP,iBAAkBrP,UAAUS,KAC5BwE,qBAAsBjF,UAAUS,MAGrB6O,cAAgB,SAAAhS,GAC3BA,EAAMmF,QAAQpK,KAAKoK,YAKrB,SAASA,UAAQ3J,GACfkH,UAAUoB,eAAetB,YAAWhH,EAAU,WAAY,qBAGxDiH,EAYEjH,EAZFiH,KACAlF,EAWE/B,EAXF+B,KACAwU,EAUEvW,EAVFuW,iBACAE,EASEzW,EATFyW,+BASEzW,EARFmG,kBAAAA,aAAoB,aACpBuB,EAOE1H,EAPF0H,MACAnC,EAMEvF,EANFuF,QACWmR,EAKT1W,EALF2W,YAKE3W,EAJFmM,qBAAAA,kBAIEnM,EAHFqG,cAAAA,kBAGErG,EAFF0I,MAAS2N,IAAAA,SAAUC,IAAAA,UAAWjI,IAAAA,QAASiC,IAAAA,QAASuD,IAAAA,OAAQzN,IAAAA,SACxD4C,EACEhJ,EADFgJ,SAGF1D,kBACEC,EACA,CAAC,aAAc,aAAc,YAAa,eAC1C,gBACA,QAGIqR,EAASL,EAAmB,KAAOtP,EAEnC4P,EAAwBta,eAAM8M,SAG9ByN,EAAkCva,eAAM8M,SAC9CyN,EAAgCvN,QAAUkN,EAE1Cva,qBAAoB,WAEhB2a,EAAsBtN,UACrBuN,EAAgCvN,SAEjCP,GACE,SAAAf,4BACKA,GACHqO,UAAW,MAEbxK,QAAQiL,YAGZF,EAAsBtN,SAAU,IAC/B,CAACP,EAAU4N,EAAQvI,EAASiC,EAASuD,QAElC8C,EAAYJ,EACdG,EACA1Z,KAAKoG,KAAKrB,EAAK/C,OAASqX,GAEtBW,EAAcza,eAAMwM,SACxB,kBAAO4N,EAAY,EAAIvV,mBAAI,IAAIe,MAAMwU,IAAYzY,KAAI,SAACmB,EAAGmC,UAAMA,KAAK,KACpE,CAACmV,IAGGM,EAAO1a,eAAMwM,SAAQ,eACrBkO,KAEAV,EACFU,EAAOlV,MACF,CACwB,gBAAzB3F,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQqP,KAAK,eAET+J,EAAYb,EAAWC,EACvBa,EAAUD,EAAYb,EAE5BY,EAAOlV,EAAKuP,MAAM4F,EAAWC,UAG3BhL,EACK8K,EAGF/Q,WAAW+Q,EAAM,CAAE9Q,kBAAAA,EAAmBC,SAAAA,EAAUC,cAAAA,MACtD,CACDqB,EACArB,EACAD,EACAD,EACAoQ,EACAD,EACAD,EACAlK,EACApK,IAGIqV,EAAkBd,EAAY,EAC9Be,GAA6B,IAAfV,GAAoBL,EAAYK,EAAY,EAE1DW,EAAW/a,eAAM0M,aACrB,SAAAC,SAC+B,gBAAzB9M,QAAQC,IAAIC,UAA8BoL,GAC5C5J,QAAQqP,KAAK,YACRnE,GAAS,SAAAf,OACRsP,EACe,mBAAZrO,EAAyBA,EAAQjB,EAAIqO,WAAapN,SAEvDqO,EAAe,GAAKA,EAAeZ,EAAY,EAC1C1O,oBAGJA,GACHqO,UAAWiB,MAEZzL,QAAQiL,cAEb,CAACrP,EAAOiP,EAAW3N,IAGfwO,EAAejb,eAAM0M,aAAY,kBAC9BqO,GAAS,SAAArP,UAAOA,EAAM,OAC5B,CAACqP,IAEEG,EAAWlb,eAAM0M,aAAY,kBAC1BqO,GAAS,SAAArP,UAAOA,EAAM,OAC5B,CAACqP,IAEEI,EAAcnb,eAAM0M,aACxB,SAAAoN,GACErN,GAAS,SAAAf,OACD0P,EAAc1P,EAAIoO,SAAWpO,EAAIqO,mCAGlCrO,GACHqO,UAHgBtZ,KAAK4a,MAAMD,EAActB,GAIzCA,SAAAA,MAEDvK,QAAQ+L,kBAEb,CAAC7O,6BAIEhJ,GACHgX,YAAAA,EACAL,UAAAA,EACAM,KAAAA,EACAG,gBAAAA,EACAC,YAAAA,EACAC,SAAAA,EACAE,aAAAA,EACAC,SAAAA,EACAC,YAAAA,EACApB,UAAAA,EACAD,SAAAA,IAtJJG,cAAc/Q,WAAa,gBCX3BoC,aAAaiQ,iBAAmB,GAEhC/L,WAAW,oBAAqB,wBAEhC,IAAM/E,YAAY,CAChB+Q,qBAAsB7Q,UAAUgF,QAGrB8L,aAAe,SAAAxT,GAC1BA,EAAMyT,0BAA4B,GAClCzT,EAAM0T,8BAAgC,GACtC1T,EAAMoF,QAAQrK,KAAKqK,SACnBpF,EAAMmF,QAAQpK,KAAKoK,YAKrB,SAASC,QAAQ7H,EAAM/B,GACrBkH,UAAUoB,eAAetB,YAAWhH,EAAU,WAAY,oBAG/C8X,EACP9X,EADF0I,MAASoP,wBAGX9X,EAASmY,iBAAmB5b,eAAMwM,SAAQ,eAClCoP,EAAmB,UACzBpW,EAAKjD,SAAQ,SAAAlB,MACPA,EAAIuU,aAAc,KACdiG,EAAcxa,EAAIgJ,QAAQ1I,KAAI,SAAAN,UAAOA,EAAI4C,QAC/C5C,EAAIya,WAAaD,EAAYrK,OAAM,SAAAvN,UACjCsX,EAAiBnY,SAASa,EAAKhB,KAAK,cAGtC5B,EAAIya,WAAaP,EAAiBnY,SAAS/B,EAAI4C,KAAKhB,KAAK,MAEvD5B,EAAIya,YACNF,EAAiB5Y,KAAK3B,MAInBua,IACN,CAACpW,EAAM+V,IAEH/V,EAGT,SAAS4H,UAAQ3J,GACfkH,UAAUoB,eAAetB,YAAWhH,EAAU,WAAY,oBAGxDwE,EAQExE,EARFwE,QAQExE,EAPF+X,qBAAAA,aAAuB,eACvBO,EAMEtY,EANFsY,qCACA/S,EAKEvF,EALFuF,QACAgF,EAIEvK,EAJFuK,SACAtD,EAGEjH,EAHFiH,KACS6Q,EAEP9X,EAFF0I,MAASoP,iBACT9O,EACEhJ,EADFgJ,SAGF1D,kBACEC,EACA,CAAC,aAAc,aAAc,aAC7B,eACA,QAGIgT,EAAehO,EAASrM,KAAI,SAAAmB,UAAKA,EAAEmB,KAAKhB,KAAK,QAE/CgZ,IAAsBD,EAAavZ,UAAY8Y,EAAiB9Y,OAEhEwZ,GACED,EAAa3Z,MAAK,SAAAS,UAAMyY,EAAiBnY,SAASN,QACpDmZ,GAAoB,OAIlBC,EAA0Blc,eAAM8M,SAGhCqP,EAA0Cnc,eAAM8M,SACtDqP,EAAwCnP,QAAU+O,EAElDpc,qBAAoB,WAEhBuc,EAAwBlP,UACvBmP,EAAwCnP,SAEzCP,GACE,SAAAf,4BACKA,GACH6P,iBAAkB,OAEpBhM,QAAQiL,YAGZ0B,EAAwBlP,SAAU,IACjC,CAACP,EAAU/B,QAER0R,EAAuB,SAAApM,GAC3BvD,GAAS,SAAAf,4BAGFA,GACH6P,uBAH+B,IAARvL,EAAsBA,GAAOiM,GAGtBD,EAAe,OAE9CzM,QAAQ6M,uBAuBPC,EAAoB,SAACpY,EAAM+L,OACzB/F,EAAMhG,EAAKhB,KAAK,KAChBqZ,EAAoB,CAACrS,EAAK,KAAKhH,KAAK,WAEnCwJ,GAAS,SAAAf,OAIRuE,EAASvE,EAAI6P,iBAAiBnY,SAAS6G,GACvCiG,OAA6B,IAARF,EAAsBA,GAAOC,EACpDsM,EAAkB,IAAInM,IAAI1E,EAAI6P,sBAE7BtL,GAAUC,EACb8L,EAAazZ,SAAQ,SAAAia,IACfA,IAAYvS,GAAOuS,EAAQC,WAAWH,KACxCC,EAAgBlM,IAAImM,UAGnB,CAAA,IAAIvM,GAAWC,SAObxE,EANPsQ,EAAazZ,SAAQ,SAAAia,IACfA,IAAYvS,GAAOuS,EAAQC,WAAWH,KACxCC,EAAgBjM,OAAOkM,aASzBvY,EAAKxB,OAAS,GAlDE,SAAlBia,EAAmBnB,EAAkBtX,OACnCmK,EAAanK,EAAK8Q,MAAM,EAAG9Q,EAAKxB,OAAS,GACzCka,EAAYvO,EAAWnL,KAAK,KASlB,IAPd+Y,EAAanZ,QAAO,SAAA2Z,OACZvY,EAAOuY,SAEXvY,IAAS0Y,GACT1Y,EAAKwY,WAAWE,KACfpB,EAAiBqB,IAAI3Y,MAEvBxB,OAEH8Y,EAAiBlL,IAAIsM,GAErBpB,EAAiBjL,OAAOqM,GAEtBvO,EAAW3L,OAAS,GAAGia,EAAgBnB,EAAkBnN,GAiCtCsO,CAAgBH,EAAiBtY,qBAGjDyH,GACH6P,oCAAsBgB,EAAgB5W,cAEvC4J,QAAQ8M,oBAGPQ,EAAsCxU,eAC1C5E,EAASwE,MAAM0T,8BACflY,UAmBFwE,EAAMqF,WAAWtK,MAAK,SAAC3B,EAAKoC,OACpBqZ,EAAkCzU,eACtC5E,EAASwE,MAAMyT,0BACfra,EACAoC,MAGEpC,EAAIuU,aAAc,KACdiG,EAAcxa,EAAIgJ,QAAQ1I,KAAI,SAAAN,UAAOA,EAAI4C,QAC/C5C,EAAIgb,kBAAoB,SAAArM,GACtBA,OAAqB,IAARA,EAAsBA,GAAO3O,EAAIya,WAC9CD,EAAYtZ,SAAQ,SAAA0B,GAClBoY,EAAkBpY,EAAM+L,OAG5B3O,EAAIqa,0BAA4B,SAAAxU,OAC1B6V,GAAU,SAGZA,KADE1b,EAAI8I,WAAY9I,EAAI8I,SAASqR,KAGrBna,EAAIya,WAGTnU,WACL,CACEqV,SAAU,SAAAxY,GACRnD,EAAIgb,kBAAkB7X,EAAEyY,OAAOF,UAEjC7W,MAAO,CACL5B,OAAQ,WAEVyY,QAAAA,EACApM,MAAO,uBAETmM,EACA5V,SAIJ7F,EAAIgb,kBAAoB,SAAArM,UAAOqM,EAAkBhb,EAAI4C,KAAM+L,IAC3D3O,EAAIqa,0BAA4B,SAAAxU,OAC1B6V,GAAU,SAGZA,KADE1b,EAAI8I,WAAY9I,EAAI8I,SAASqR,KAGrBna,EAAIya,WAGTnU,WACL,CACEqV,SAAU,SAAAxY,GACRnD,EAAIgb,kBAAkB7X,EAAEyY,OAAOF,UAEjC7W,MAAO,CACL5B,OAAQ,WAEVyY,QAAAA,EACApM,MAAO,uBAETmM,EACA5V,WAKC7F,uBAIJoC,GACH4Y,kBAAAA,EACAD,qBAAAA,EACAT,8BA3FoC,SAAAzU,UAC7BS,WACL,CACEqV,SAAU,SAAAxY,GACR4X,EAAqB5X,EAAEyY,OAAOF,UAEhC7W,MAAO,CACL5B,OAAQ,WAEVyY,QAASd,EACTtL,MAAO,4BAETkM,EACA3V,IA+EF+U,kBAAAA,IAzPJR,aAAavS,WAAa,eCrB1BoC,aAAa4R,SAAW,GAExB1N,WAAW,cAAe,gBAE1B,IAAM/E,YAAY,CAChB0S,wBAAyBxS,UAAUM,MAGxBmS,YAAc,SAAAnV,GACzBA,EAAMmF,QAAQpK,KAAKoK,YAKrB,SAASA,UAAQ3J,GACfkH,UAAUoB,eAAetB,YAAWhH,EAAU,WAAY,mBAGxDwE,EAKExE,EALFwE,MACAzC,EAIE/B,EAJF+B,KACA2X,EAGE1Z,EAHF0Z,wBACSD,EAEPzZ,EAFF0I,MAAS+Q,SACTzQ,EACEhJ,EADFgJ,SAGI4Q,EAAcrd,eAAM0M,aACxB,SAACzI,EAAM0I,OAAS+C,yDAASH,QAAQ8N,YACzBC,EAAUrZ,EAAKhB,KAAK,YACnBwJ,GAAS,SAAAf,4BAETA,GACHwR,2BACKxR,EAAIwR,4BACNI,EACoB,mBAAZ3Q,EACHA,EAAQjB,EAAIwR,SAASI,IACrB3Q,QAGT+C,KAEL,CAACjD,IAGG8Q,EAAevd,eAAM0M,aACzB,SAAC8P,EAAS/W,EAAUkH,UACX0Q,EACLb,GACA,SAAA9Q,4BAEOA,GACH8R,4BACK9R,EAAI8R,6BACN/X,EACoB,mBAAZkH,EACHA,EAAQjB,EAAI8R,UAAU/X,IACtBkH,QAIZ4C,QAAQgO,gBAGZ,CAACF,IAGGI,EAAiBzd,eAAM8M,gBAG7B9M,eAAME,WAAU,WACVud,EAAezQ,SACjBP,GAAS,SAAAf,4BAEFA,GACHwR,SAAU,OAEX3N,QAAQ8N,aAGbI,EAAezQ,SAAU,IACxB,CAACxH,EAAMiH,IAEVxE,EAAMqF,WAAWtK,MAAK,SAAA3B,OACdic,EAAUjc,EAAI4C,KAAKhB,KAAK,YAE1B5B,EAAI8I,WACN9I,EAAI8K,YAC4B,IAAtB+Q,EAASI,GACbJ,EAASI,GACTH,GAA2BA,EAAwB9b,KAAS,GAElEA,EAAIoL,SAAW,SAAAE,UACN0Q,EAAYhc,EAAI4C,KAAM0I,IAG/BtL,EAAIiN,MAAM/L,SAAQ,SAAArD,GAChBA,EAAKiN,MAAQ9K,EAAI8K,MAAMqR,WAAa,GAEpCte,EAAKuN,SAAW,SAAAE,UACP4Q,EAAalc,EAAI4C,KAAM/E,EAAK0B,OAAOI,GAAI2L,QAK7CtL,uBAIJoC,GACH4Z,YAAAA,EACAE,aAAAA,IAlGJH,YAAYlU,WAAa,cCZzBoC,aAAaoS,YAAc,GAE3BlO,WAAW,kBAEX,IAAM/E,YAAY,CAChB0S,wBAAyBxS,UAAUM,MAGxB0S,eAAiB,SAAA1V,GAC5BA,EAAMiF,8BAA8BlK,MAAK,SAACyR,EAAMhR,sCACnCgR,IAAMhR,EAAS0I,MAAMuR,iBAElCzV,EAAMgF,0BAA0BjK,KAAKiK,6BACrChF,EAAMmF,QAAQpK,KAAKoK,YAKrB,SAASH,4BAA0B7M,EAASqD,OAE/Bia,EACPja,EADF0I,MAASuR,gBAINA,IAAgBA,EAAYjb,cACxBrC,UAGHwd,qBAAsBF,GAGtBG,qBAAkBzd,GAGlB0d,EAAiB,oBAIfC,EAAiBH,EAAgBhH,QACjCoH,EAAaH,EAAYxU,WAAU,SAAAvG,UAAKA,EAAE9B,KAAO+c,KACnDC,GAAc,GAChBF,EAAe9a,KAAK6a,EAAYhF,OAAOmF,EAAY,GAAG,KAJnDH,EAAYpb,QAAUmb,EAAgBnb,4BASlCqb,qBAAmBD,IAGhC,SAASzQ,UAAQ3J,GACfkH,UAAUoB,eAAetB,YAAWhH,EAAU,WAAY,sBAElDgJ,EAAahJ,EAAbgJ,SAEFwR,EAAiBje,eAAM0M,aAC3B,SAAAC,UACSF,GAAS,SAAAf,4BAETA,GACHgS,YACqB,mBAAZ/Q,EAAyBA,EAAQjB,EAAIgS,aAAe/Q,MAE9D4C,QAAQ0O,kBAEb,CAACxR,6BAIEhJ,GACHwa,eAAAA,IArDJN,eAAezU,WAAa,8BCdfgV,eAAiB,CAC5BC,aAAc,IAGhBnf,cAAcof,WAAY,EAE1B,IAAM3T,YAAY,GAEL4T,iBAAmB,SAAApW,GAC9BA,EAAMqW,gBAAkB,GACxBrW,EAAMkF,oBAAoBnK,KAAKmK,sBAGjCkR,iBAAiBnV,WAAa,mBAE9B,IAAMiE,oBAAsB,SAAA1J,GAC1BkH,UAAUoB,eAAetB,YAAWhH,EAAU,WAAY,wBAGxDgL,EAKEhL,EALFgL,YACA8P,EAIE9a,EAJF8a,gBACS5Q,EAGPlK,EAHFwE,MAAS0F,eACAuQ,EAEPza,EAFF0I,MAAS+R,eACTzR,EACEhJ,EADFgJ,SAGFkB,EAAe3K,MAAK,iBACX,CACLkD,MAAO,CACLsY,SAAU,uBA+DhB/P,EAAYlM,QACT,SAAAkB,UAAY,SAAAF,OACL6a,EAAY/Y,iBACW,IAA3B9B,EAAOgb,sBAAmC/P,GACtB,IAApB+P,QAAmC/P,GACnC,MAGFjL,EAAO6a,UAAYA,EACnB7a,EAAOjE,MAAQ4e,EAAeC,aAAa5a,EAAOvC,KAAOuC,EAAOjE,MAChEiE,EAAOkb,WAAaP,EAAeQ,mBAAqBnb,EAAOvC,GAE3Dod,EAAW,KACPO,EAAwBtW,eAC5B5E,EAASwE,MAAMqW,gBACf/a,EACAE,GAEFF,EAAO+a,gBAAkB,SAAAzP,UAChBlH,WACL,CACEiX,YAAa,SAAApa,UAAKA,EAAEkM,WA/EZ,SAAClM,EAAGjB,OAChBsb,EAAkBC,eAAevb,GACjCwb,EAAcF,EAAgBld,KAAI,SAAA4B,UAAUA,EAAO8L,cACnD2P,EAASxa,EAAEya,QAEXC,EAAc,SAAA1a,OAIZ2a,GAHW3a,EAAEya,QACOD,GAEQH,EAAgBpc,OAE5C2c,EAAkB,GACxBP,EAAgBtc,SAAQ,SAACgB,EAAQxC,GAC/Bqe,EAAgB7b,EAAOvC,IAAMP,KAAKC,IAChCqe,EAAYhe,GAASoe,EACrB,MAIJ1S,GAAS,SAAAf,4BACJA,GACHwS,iCACKxS,EAAIwS,gBACPC,+BACKzS,EAAIwS,eAAeC,gBACnBiB,WAoBXC,SAASC,iBAAiB,YAAaJ,GACvCG,SAASC,iBAAiB,WAfR,SAAZC,EAAY/a,GAChB6a,SAASG,oBAAoB,YAAaN,GAC1CG,SAASG,oBAAoB,UAAWD,GAExC9S,GAAS,SAAAf,4BACJA,GACHwS,iCACKxS,EAAIwS,gBACPc,OAAQ,KACRN,iBAAkB,eAQxBjS,GAAS,SAAAf,4BACJA,GACHwS,iCACKxS,EAAIwS,gBACPc,OAAAA,EACAN,iBAAkBnb,EAAOvC,UA0Bc4d,CAAYpa,EAAGjB,IAChD2C,MAAO,CACL5B,OAAQ,aAEVmb,WAAW,GAEbd,EACA9P,MA3BP,CA+BEpL,IAGEA,GAGT,SAASqb,eAAevb,OAChBmc,EAAc,UACE,SAAhBC,EAAgBpc,GAChBA,EAAOnD,SAAWmD,EAAOnD,QAAQqC,QACnCc,EAAOnD,QAAQuB,IAAIge,GAErBD,EAAY1c,KAAKO,GAEnBoc,CAAcpc,GACPmc,ECjJT,IAAMjV,YAAY,GAELmV,kBAAoB,SAAA3X,GAC/BA,EAAMmF,QAAQpK,KAAKoK,YAGrBwS,kBAAkB1W,WAAa,oBAE/B,IAAMkE,UAAU,SAAA3J,GACdkH,UAAUoB,eAAetB,YAAWhH,EAAU,WAAY,yBAGxDuL,EAQEvL,EARFuL,oBAQEvL,EAPFwE,MACEwF,IAAAA,YACAD,IAAAA,kBACAE,IAAAA,oBACAC,IAAAA,eACAC,IAAAA,aAIEiS,EAAY,CAChB3Z,MAAO,CACLsY,SAAU,WACVlf,gBAAU0P,UAIdxB,EAAkBxK,MAAK,kBAAM6c,KAC7BpS,EAAYzK,MAAK,kBAAM6c,KACvBnS,EAAoB1K,MAAK,kBAAM6c,SAGzBC,EAAa,CACjBtB,SAAU,WACVuB,IAAK,UAGPpS,EAAe3K,MAAK,SAAAO,SACX,CACL2C,wBACK4Z,GACHzZ,eAAS9C,EAAO6L,gBAChB9P,gBAAUiE,EAAO8L,uBAKvBzB,EAAa5K,MAAK,SAAA9D,SACT,CACLgH,wBACK4Z,GACHzZ,eAASnH,EAAK0B,OAAOwO,gBACrB9P,gBAAUJ,EAAK0B,OAAOyO,uBAKrB5L,GC3DHgH,YAAY,GAELuV,eAAiB,SAAA/X,GAC5BA,EAAMmF,QAAQpK,KAAKoK,YAGrB4S,eAAe9W,WAAa,iBAE5B,IAAMkE,UAAU,SAAA3J,GACdkH,UAAUoB,eAAetB,YAAWhH,EAAU,WAAY,sBAGxDuL,EAEEvL,EAFFuL,oBAEEvL,EADFwE,MAASwF,IAAAA,YAAaC,IAAAA,oBAAqBC,IAAAA,eAAgBC,IAAAA,aAGvDiS,EAAY,CAChB3Z,MAAO,CACL+Z,QAAS,OACT3gB,gBAAU0P,UAIdvB,EAAYzK,MAAK,kBAAM6c,KACvBnS,EAAoB1K,MAAK,kBAAM6c,SAEzBC,EAAa,CACjBG,QAAS,eACTC,UAAW,qBAGbvS,EAAe3K,MAAK,SAAAO,SACX,CACL2C,wBACK4Z,GACHxgB,gBAAUiE,EAAO8L,uBAKvBzB,EAAa5K,MAAK,SAAA9D,SACT,CACLgH,wBACK4Z,GACHxgB,gBAAUJ,EAAK0B,OAAOyO,uBAKrB5L"} \ No newline at end of file diff --git a/src/hooks/useTable.js b/src/hooks/useTable.js index 5723e0a86c..72b324ab15 100755 --- a/src/hooks/useTable.js +++ b/src/hooks/useTable.js @@ -30,7 +30,13 @@ export const defaultState = {} const defaultInitialState = {} const defaultColumnInstance = {} const defaultReducer = (old, newState) => newState -const defaultGetSubRows = (row, index) => row.subRows || [] +const defaultGetSubRows = (row, index) => { + if (row !== null && row.subRows) { + return row.subRows + } else { + return [] + } +} const defaultGetRowID = (row, index) => index export const useTable = (props, ...plugins) => { diff --git a/src/plugin-hooks/useExpanded.js b/src/plugin-hooks/useExpanded.js index d774072145..35bb236464 100755 --- a/src/plugin-hooks/useExpanded.js +++ b/src/plugin-hooks/useExpanded.js @@ -58,8 +58,13 @@ function useMain(instance) { }, actions.toggleExpanded) } - hooks.prepareRow.push(row => { + hooks.prepareRow.push((row, instance) => { row.toggleExpanded = set => toggleExpandedByPath(row.path, set) + const propsFromHooks = applyPropHooks( + instance.hooks.getExpandedToggleProps, + row, + instance + ) row.getExpandedToggleProps = props => { return mergeProps( { @@ -72,7 +77,7 @@ function useMain(instance) { }, title: 'Toggle Expanded', }, - applyPropHooks(instance.hooks.getExpandedToggleProps, row, instance), + propsFromHooks, props ) } @@ -116,4 +121,4 @@ function findExpandedDepth(expanded) { }) return maxDepth -} +} \ No newline at end of file diff --git a/src/plugin-hooks/useGroupBy.js b/src/plugin-hooks/useGroupBy.js index 7f362ec6d5..40fcb6841b 100755 --- a/src/plugin-hooks/useGroupBy.js +++ b/src/plugin-hooks/useGroupBy.js @@ -38,6 +38,7 @@ const propTypes = { } export const useGroupBy = hooks => { + hooks.getGroupByToggleProps = [] hooks.columnsBeforeHeaderGroups.push(columnsBeforeHeaderGroups) hooks.columnsBeforeHeaderGroupsDeps.push((deps, instance) => { deps.push(instance.state.groupBy) @@ -123,29 +124,35 @@ function useMain(instance) { }, actions.toggleGroupBy) } - hooks.getGroupByToggleProps = [] - - flatHeaders.forEach(header => { - const { canGroupBy } = header - header.getGroupByToggleProps = props => { - return mergeProps( - { - onClick: canGroupBy - ? e => { - e.persist() - header.toggleGroupBy() - } - : undefined, - style: { - cursor: canGroupBy ? 'pointer' : undefined, - }, - title: 'Toggle GroupBy', - }, - applyPropHooks(instance.hooks.getGroupByToggleProps, header, instance), - props + flatHeaders.forEach( + // avoid sharing instance in contexts of other functions + (instance => header => { + const { canGroupBy } = header + const groupByTogglePropsFromHooks = applyPropHooks( + instance.hooks.getGroupByToggleProps, + header, + instance ) - } - }) + header.getGroupByToggleProps = props => { + return mergeProps( + { + onClick: canGroupBy + ? e => { + e.persist() + header.toggleGroupBy() + } + : undefined, + style: { + cursor: canGroupBy ? 'pointer' : undefined, + }, + title: 'Toggle GroupBy', + }, + groupByTogglePropsFromHooks, + props + ) + } + })(instance) + ) hooks.prepareRow.push(row => { row.cells.forEach(cell => { diff --git a/src/plugin-hooks/useResizeColumns.js b/src/plugin-hooks/useResizeColumns.js index 377a01d596..46455c9d85 100644 --- a/src/plugin-hooks/useResizeColumns.js +++ b/src/plugin-hooks/useResizeColumns.js @@ -15,6 +15,7 @@ defaultColumn.canResize = true const propTypes = {} export const useResizeColumns = hooks => { + hooks.getResizerProps = [] hooks.useBeforeDimensions.push(useBeforeDimensions) } @@ -23,8 +24,6 @@ useResizeColumns.pluginName = 'useResizeColumns' const useBeforeDimensions = instance => { PropTypes.checkPropTypes(propTypes, instance, 'property', 'useResizeColumns') - instance.hooks.getResizerProps = [] - const { flatHeaders, disableResizing, @@ -99,33 +98,40 @@ const useBeforeDimensions = instance => { })) } - flatHeaders.forEach(header => { - const canResize = getFirstDefined( - header.disableResizing === true ? false : undefined, - disableResizing === true ? false : undefined, - true - ) - - header.canResize = canResize - header.width = columnResizing.columnWidths[header.id] || header.width - header.isResizing = columnResizing.isResizingColumn === header.id - - if (canResize) { - header.getResizerProps = userProps => { - return mergeProps( - { - onMouseDown: e => e.persist() || onMouseDown(e, header), - style: { - cursor: 'ew-resize', - }, - draggable: false, - }, - applyPropHooks(instance.hooks.getResizerProps, header, instance), - userProps + flatHeaders.forEach( + (instance => header => { + const canResize = getFirstDefined( + header.disableResizing === true ? false : undefined, + disableResizing === true ? false : undefined, + true + ) + + header.canResize = canResize + header.width = columnResizing.columnWidths[header.id] || header.width + header.isResizing = columnResizing.isResizingColumn === header.id + + if (canResize) { + const resizerPropsFromHooks = applyPropHooks( + instance.hooks.getResizerProps, + header, + instance ) + header.getResizerProps = userProps => { + return mergeProps( + { + onMouseDown: e => e.persist() || onMouseDown(e, header), + style: { + cursor: 'ew-resize', + }, + draggable: false, + }, + resizerPropsFromHooks, + userProps + ) + } } - } - }) + })(instance) + ) return instance } diff --git a/src/plugin-hooks/useRowSelect.js b/src/plugin-hooks/useRowSelect.js index 334a44d9ba..31ab8b326c 100644 --- a/src/plugin-hooks/useRowSelect.js +++ b/src/plugin-hooks/useRowSelect.js @@ -178,6 +178,10 @@ function useMain(instance) { }, actions.toggleRowSelected) } + const toggleAllRowsSelectedPropsFromHooks = applyPropHooks( + instance.hooks.getToggleAllRowsSelectedProps, + instance + ) const getToggleAllRowsSelectedProps = props => { return mergeProps( { @@ -190,12 +194,17 @@ function useMain(instance) { checked: isAllRowsSelected, title: 'Toggle All Rows Selected', }, - applyPropHooks(instance.hooks.getToggleAllRowsSelectedProps, instance), + toggleAllRowsSelectedPropsFromHooks, props ) } - hooks.prepareRow.push(row => { + hooks.prepareRow.push((row, instance) => { + const toggleRowSelectedPropsFromHooks = applyPropHooks( + instance.hooks.getToggleRowSelectedProps, + row, + instance + ) // Aggregate rows have entirely different select logic if (row.isAggregated) { const subRowPaths = row.subRows.map(row => row.path) @@ -225,11 +234,7 @@ function useMain(instance) { checked, title: 'Toggle Row Selected', }, - applyPropHooks( - instance.hooks.getToggleRowSelectedProps, - row, - instance - ), + toggleRowSelectedPropsFromHooks, props ) } @@ -255,11 +260,7 @@ function useMain(instance) { checked, title: 'Toggle Row Selected', }, - applyPropHooks( - instance.hooks.getToggleRowSelectedProps, - row, - instance - ), + toggleRowSelectedPropsFromHooks, props ) } diff --git a/src/plugin-hooks/useSortBy.js b/src/plugin-hooks/useSortBy.js index 5e43d4a0af..1c3b066e4f 100755 --- a/src/plugin-hooks/useSortBy.js +++ b/src/plugin-hooks/useSortBy.js @@ -41,6 +41,8 @@ const propTypes = { export const useSortBy = hooks => { hooks.useMain.push(useMain) + // Add custom hooks + hooks.getSortByToggleProps = [] } useSortBy.pluginName = 'useSortBy' @@ -62,15 +64,12 @@ function useMain(instance) { isMultiSortEvent = e => e.shiftKey, maxMultiSortColCount = Number.MAX_SAFE_INTEGER, flatHeaders, - hooks, state: { sortBy }, setState, plugins, } = instance ensurePluginOrder(plugins, ['useFilters'], 'useSortBy', []) - // Add custom hooks - hooks.getSortByToggleProps = [] // Updates sorting based on a columnID, desc flag and multi flag const toggleSortBy = (columnID, desc, multi) => { @@ -161,62 +160,70 @@ function useMain(instance) { } // Add the getSortByToggleProps method to columns and headers - flatHeaders.forEach(column => { - const { accessor, disableSorting: columnDisableSorting, id } = column - - const canSort = accessor - ? getFirstDefined( - columnDisableSorting === true ? false : undefined, - disableSorting === true ? false : undefined, - true - ) - : false - - column.canSort = canSort - - if (column.canSort) { - column.toggleSortBy = (desc, multi) => - toggleSortBy(column.id, desc, multi) - - column.clearSorting = () => { - return setState(old => { - const { sortBy } = old - const newSortBy = sortBy.filter(d => d.id !== column.id) - return { - ...old, - sortBy: newSortBy, - } - }, actions.sortByChange) + flatHeaders.forEach( + // avoid sharing instance in contexts of other functions + (instance => column => { + const { accessor, disableSorting: columnDisableSorting, id } = column + + const canSort = accessor + ? getFirstDefined( + columnDisableSorting === true ? false : undefined, + disableSorting === true ? false : undefined, + true + ) + : false + + column.canSort = canSort + + if (column.canSort) { + column.toggleSortBy = (desc, multi) => + toggleSortBy(column.id, desc, multi) + + column.clearSorting = () => { + return setState(old => { + const { sortBy } = old + const newSortBy = sortBy.filter(d => d.id !== column.id) + return { + ...old, + sortBy: newSortBy, + } + }, actions.sortByChange) + } } - } - column.getSortByToggleProps = props => { - return mergeProps( - { - onClick: canSort - ? e => { - e.persist() - column.toggleSortBy( - undefined, - !instance.disableMultiSort && isMultiSortEvent(e) - ) - } - : undefined, - style: { - cursor: canSort ? 'pointer' : undefined, - }, - title: 'Toggle SortBy', - }, - applyPropHooks(instance.hooks.getSortByToggleProps, column, instance), - props + const sortByTogglePropsFromHooks = applyPropHooks( + instance.hooks.getSortByToggleProps, + column, + instance ) - } + column.getSortByToggleProps = props => { + return mergeProps( + { + onClick: canSort + ? e => { + e.persist() + column.toggleSortBy( + undefined, + !disableMultiSort && isMultiSortEvent(e) + ) + } + : undefined, + style: { + cursor: canSort ? 'pointer' : undefined, + }, + title: 'Toggle SortBy', + }, + sortByTogglePropsFromHooks, + props + ) + } - const columnSort = sortBy.find(d => d.id === id) - column.isSorted = !!columnSort - column.sortedIndex = sortBy.findIndex(d => d.id === id) - column.isSortedDesc = column.isSorted ? columnSort.desc : undefined - }) + const columnSort = sortBy.find(d => d.id === id) + column.isSorted = !!columnSort + column.sortedIndex = sortBy.findIndex(d => d.id === id) + column.isSortedDesc = column.isSorted ? columnSort.desc : undefined + })(instance) + ) const sortedRows = React.useMemo(() => { if (manualSorting || !sortBy.length) {