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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEaA,aAAa,GAAG;EAC3BC,IAAI,EAAE;+BAAGC,IAAH,CAAWC,KAAX;QAAWA,KAAX,gCAAmB,EAAnB;WAA8BC,MAAM,CAACD,KAAD,CAApC;GADqB;EAE3BE,IAAI,EAAE,IAFqB;EAG3BC,KAAK,EAAE,GAHoB;EAI3BC,QAAQ,EAAE,CAJiB;EAK3BC,QAAQ,EAAEC,MAAM,CAACC;CALZ;;AASP,AAAO,IAAMC,mBAAmB,GAC9B,OAAOC,MAAP,KAAkB,WAAlB,IAAiCC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA1D,GACIC,KAAK,CAACC,eADV,GAEID,KAAK,CAACE,SAHL;;AAMP,AAAO,SAASC,YAAT,CAAsBC,OAAtB,EAA0C;MAAXC,KAAW,uEAAH,CAAG;SACxCD,OAAO,CAACE,MAAR,CAAe,UAACC,IAAD,EAAOC,IAAP,EAAgB;QAChCA,IAAI,CAACJ,OAAT,EAAkB;aACTK,IAAI,CAACC,GAAL,CAASH,IAAT,EAAeJ,YAAY,CAACK,IAAI,CAACJ,OAAN,EAAeC,KAAK,GAAG,CAAvB,CAA3B,CAAP;;;WAEKA,KAAP;GAJK,EAKJ,CALI,CAAP;;AAQF,AAAO,SAASM,cAAT,CACLC,MADK,EAELC,iBAFK,EAGLC,MAHK,EAILT,KAJK,EAKLU,KALK,EAML;;EAEAH,MAAM,sBAAQ5B,aAAR,MAA0B6B,iBAA1B,MAAgDD,MAAhD,CAAN,CAFA;;gBAK+BA,MAL/B;MAKMI,EALN,WAKMA,EALN;MAKUC,QALV,WAKUA,QALV;MAKoBC,MALpB,WAKoBA,MALpB;;MAOI,OAAOD,QAAP,KAAoB,QAAxB,EAAkC;IAChCD,EAAE,GAAGA,EAAE,IAAIC,QAAX;QACME,YAAY,GAAGF,QAAQ,CAACG,KAAT,CAAe,GAAf,CAArB;;IACAH,QAAQ,GAAG,kBAAAI,GAAG;aAAIC,KAAK,CAACD,GAAD,EAAMF,YAAN,CAAT;KAAd;;;MAGE,CAACH,EAAD,IAAO,OAAOE,MAAP,KAAkB,QAAzB,IAAqCA,MAAzC,EAAiD;IAC/CF,EAAE,GAAGE,MAAL;;;MAGE,CAACF,EAAD,IAAOJ,MAAM,CAACR,OAAlB,EAA2B;IACzBmB,OAAO,CAACC,KAAR,CAAcZ,MAAd;UACM,IAAIa,KAAJ,CAAU,qDAAV,CAAN;;;MAGE,CAACT,EAAL,EAAS;IACPO,OAAO,CAACC,KAAR,CAAcZ,MAAd;UACM,IAAIa,KAAJ,CAAU,+CAAV,CAAN;;;EAGFb,MAAM;;IAEJM,MAAM,EAAE;aAAM,iDAAN;;KACLN,MAHC;;IAKJI,EAAE,EAAFA,EALI;IAMJC,QAAQ,EAARA,QANI;IAOJH,MAAM,EAANA,MAPI;IAQJT,KAAK,EAALA,KARI;IASJU,KAAK,EAALA;IATF;SAYOH,MAAP;;;AAIF,AAAO,SAASc,kBAAT,CAA4BtB,OAA5B,EAAqCpB,aAArC,EAAoD8B,MAApD,EAAuE;MAAXT,KAAW,uEAAH,CAAG;SACrED,OAAO,CAACuB,GAAR,CAAY,UAACf,MAAD,EAASgB,WAAT,EAAyB;IAC1ChB,MAAM,GAAGD,cAAc,CAACC,MAAD,EAAS5B,aAAT,EAAwB8B,MAAxB,EAAgCT,KAAhC,EAAuCuB,WAAvC,CAAvB;;QACIhB,MAAM,CAACR,OAAX,EAAoB;MAClBQ,MAAM,CAACR,OAAP,GAAiBsB,kBAAkB,CACjCd,MAAM,CAACR,OAD0B,EAEjCpB,aAFiC,EAGjC4B,MAHiC,EAIjCP,KAAK,GAAG,CAJyB,CAAnC;;;WAOKO,MAAP;GAVK,CAAP;;;AAeF,AAAO,SAASiB,gBAAT,CAA0BC,WAA1B,EAAuC9C,aAAvC,EAAsD;MACrD+C,YAAY,GAAG,EAArB,CAD2D;;MAIrDC,UAAU,GAAG,SAAbA,UAAa,CAAC5B,OAAD,EAAUC,KAAV,EAAoB;QAC/B4B,WAAW,GAAG;MAClBC,OAAO,EAAE;KADX;QAIMC,aAAa,GAAG,EAAtB,CALqC;;QAQ/BC,UAAU,GAAGhC,OAAO,CAACiC,IAAR,CAAa,UAAAC,GAAG;aAAIA,GAAG,CAACxB,MAAR;KAAhB,CAAnB;IAEAV,OAAO,CAACmC,OAAR,CAAgB,UAAA3B,MAAM,EAAI;;UAElB4B,OAAO,GAAG,CAACL,aAAa,CAACM,MAA/B,CAFwB;;UAKpBC,kBAAkB,GAAG,UAAIP,aAAJ,EAAmBQ,OAAnB,GAA6B,CAA7B,CAAzB,CALwB;;UAQpB/B,MAAM,CAACE,MAAX,EAAmB;YACX8B,oBAAoB,GAAGT,aAAa,CAACU,MAAd,CAC3B,UAAAC,CAAC;iBAAIA,CAAC,CAACC,UAAF,KAAiBnC,MAAM,CAACE,MAAP,CAAcE,EAAnC;SAD0B,CAA7B;;YAGIwB,OAAO,IAAIE,kBAAkB,CAACK,UAAnB,KAAkCnC,MAAM,CAACE,MAAP,CAAcE,EAA/D,EAAmE;UACjEmB,aAAa,CAACa,IAAd,oBACKpC,MAAM,CAACE,MADZ;YAEEiC,UAAU,EAAEnC,MAAM,CAACE,MAAP,CAAcE,EAF5B;YAGEA,EAAE,EAAE,CAACJ,MAAM,CAACE,MAAP,CAAcE,EAAf,EAAmB4B,oBAAoB,CAACH,MAAxC,EAAgDQ,IAAhD,CAAqD,GAArD;;;OARV,MAWO,IAAIb,UAAJ,EAAgB;;YAEfW,UAAU,GAAG,CAACnC,MAAM,CAACI,EAAR,EAAY,aAAZ,EAA2BiC,IAA3B,CAAgC,GAAhC,CAAnB;;YACML,qBAAoB,GAAGT,aAAa,CAACU,MAAd,CAC3B,UAAAC,CAAC;iBAAIA,CAAC,CAACC,UAAF,KAAiBA,UAArB;SAD0B,CAA7B;;YAGMG,iBAAiB,GAAGvC,cAAc,CACtC;UACEoC,UAAU,EAAVA,UADF;UAEE/B,EAAE,EAAE,CAACJ,MAAM,CAACI,EAAR,EAAY,aAAZ,EAA2B4B,qBAAoB,CAACH,MAAhD,EAAwDQ,IAAxD,CACF,GADE,CAFN;UAKEE,aAAa,EAAEvC;SANqB,EAQtC5B,aARsC,CAAxC;;YAWEwD,OAAO,IACPE,kBAAkB,CAACK,UAAnB,KAAkCG,iBAAiB,CAACH,UAFtD,EAGE;UACAZ,aAAa,CAACa,IAAd,CAAmBE,iBAAnB;;OAvCoB;;;UA4CpBtC,MAAM,CAACE,MAAP,IAAiBsB,UAArB,EAAiC;QAC/BM,kBAAkB,GAAG,UAAIP,aAAJ,EAAmBQ,OAAnB,GAA6B,CAA7B,CAArB;QACAD,kBAAkB,CAACR,OAAnB,GAA6BQ,kBAAkB,CAACR,OAAnB,IAA8B,EAA3D;;YACI,CAACQ,kBAAkB,CAACR,OAAnB,CAA2BkB,QAA3B,CAAoCxC,MAApC,CAAL,EAAkD;UAChD8B,kBAAkB,CAACR,OAAnB,CAA2Bc,IAA3B,CAAgCpC,MAAhC;;;;MAIJA,MAAM,CAACyC,gBAAP,GAA0BzC,MAAM,CAACsB,OAAP,GACtBtB,MAAM,CAACsB,OAAP,CAAe5B,MAAf,CACE,UAACgD,GAAD,EAAMC,MAAN;eAAiBD,GAAG,GAAGC,MAAM,CAACF,gBAA9B;OADF,EAEE,CAFF,CADsB,GAKtB,CALJ,CApDwB;;MA0DxBpB,WAAW,CAACC,OAAZ,CAAoBc,IAApB,CAAyBpC,MAAzB;KA1DF;IA6DAmB,YAAY,CAACiB,IAAb,CAAkBf,WAAlB;;QAEIE,aAAa,CAACM,MAAlB,EAA0B;MACxBT,UAAU,CAACG,aAAD,EAAgB9B,KAAK,GAAG,CAAxB,CAAV;;GA1EJ;;EA8EA2B,UAAU,CAACF,WAAD,EAAc,CAAd,CAAV;SAEOC,YAAY,CAACY,OAAb,EAAP;;AAGF,AAAO,SAASa,yBAAT,CAAmCC,QAAnC,EAA6C;MAC1CvB,OAD0C,GAC9BuB,QAD8B,CAC1CvB,OAD0C;;MAG5CwB,YAAY,GAAG,SAAfA,YAAe,CAAC9C,MAAD,EAAS+C,aAAT,EAA2B;IAC9C/C,MAAM,CAACgD,SAAP,GAAmBD,aAAa,GAC5B,OAAO/C,MAAM,CAACvB,IAAd,KAAuB,UAAvB,GACEuB,MAAM,CAACvB,IAAP,CAAYoE,QAAZ,CADF,GAEE,CAAC,CAAC7C,MAAM,CAACvB,IAHiB,GAI5B,KAJJ;QAMIwE,uBAAuB,GAAG,CAA9B;;QAEIjD,MAAM,CAACsB,OAAP,IAAkBtB,MAAM,CAACsB,OAAP,CAAeO,MAArC,EAA6C;MAC3C7B,MAAM,CAACsB,OAAP,CAAeK,OAAf,CACE,UAAAuB,SAAS;eACND,uBAAuB,IAAIH,YAAY,CAACI,SAAD,EAAYlD,MAAM,CAACgD,SAAnB,CADjC;OADX;KADF,MAKO;MACLC,uBAAuB,GAAGjD,MAAM,CAACgD,SAAP,GAAmB,CAAnB,GAAuB,CAAjD;;;IAGFhD,MAAM,CAACiD,uBAAP,GAAiCA,uBAAjC;WAEOA,uBAAP;GApBF;;MAuBIA,uBAAuB,GAAG,CAA9B;EAEA3B,OAAO,CAACK,OAAR,CACE,UAAAwB,SAAS;WAAKF,uBAAuB,IAAIH,YAAY,CAACK,SAAD,EAAY,IAAZ,CAA5C;GADX;;AAKF,AAAO,SAASzC,KAAT,CAAe0C,GAAf,EAAoBC,IAApB,EAA0BC,GAA1B,EAA+B;MAChC,CAACD,IAAL,EAAW;WACFD,GAAP;;;MAEIG,OAAO,GAAGC,aAAa,CAACH,IAAD,CAA7B;MACII,GAAJ;;MACI;IACFA,GAAG,GAAGF,OAAO,CAAC7D,MAAR,CAAe,UAACgE,MAAD,EAASC,QAAT;aAAsBD,MAAM,CAACC,QAAD,CAA5B;KAAf,EAAuDP,GAAvD,CAAN;GADF,CAEE,OAAOQ,CAAP,EAAU;;;SAGL,OAAOH,GAAP,KAAe,WAAf,GAA6BA,GAA7B,GAAmCH,GAA1C;;AAGF,AAAO,SAASO,gBAAT,CAA0BC,GAA1B,EAA+BC,KAA/B,EAAsCC,IAAtC,EAA4C;SAC1C,mBAAIF,GAAJ,EAASG,IAAT,CAAc,UAACC,IAAD,EAAOC,IAAP,EAAgB;SAC9B,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,KAAK,CAAClC,MAA1B,EAAkCuC,CAAC,IAAI,CAAvC,EAA0C;UAClCC,MAAM,GAAGN,KAAK,CAACK,CAAD,CAApB;UACME,IAAI,GAAGN,IAAI,CAACI,CAAD,CAAJ,KAAY,KAAZ,IAAqBJ,IAAI,CAACI,CAAD,CAAJ,KAAY,MAA9C;UACMG,OAAO,GAAGF,MAAM,CAACH,IAAD,EAAOC,IAAP,CAAtB;;UACII,OAAO,KAAK,CAAhB,EAAmB;eACVD,IAAI,GAAG,CAACC,OAAJ,GAAcA,OAAzB;;;;WAGGP,IAAI,CAAC,CAAD,CAAJ,GAAUE,IAAI,CAAC/D,KAAL,GAAagE,IAAI,CAAChE,KAA5B,GAAoCgE,IAAI,CAAChE,KAAL,GAAa+D,IAAI,CAAC/D,KAA7D;GATK,CAAP;;AAaF,AAAO,SAASqE,eAAT,GAAkC;oCAANC,IAAM;IAANA,IAAM;;;OAClC,IAAIL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGK,IAAI,CAAC5C,MAAzB,EAAiCuC,CAAC,IAAI,CAAtC,EAAyC;QACnC,OAAOK,IAAI,CAACL,CAAD,CAAX,KAAmB,WAAvB,EAAoC;aAC3BK,IAAI,CAACL,CAAD,CAAX;;;;AAKN,AAAO,SAASM,gBAAT,CAA0BC,IAA1B,EAAgCC,QAAhC,EAA0C;SACxCD,IAAI,CAACjF,MAAL,CAAY,UAACC,IAAD,EAAOc,GAAP,EAAY2D,CAAZ,EAAkB;;;QAG7BS,MAAM,aAAMpE,GAAG,CAACqE,MAAJ,CAAWF,QAAX,CAAN,CAAZ;IACAjF,IAAI,CAACkF,MAAD,CAAJ,GAAeE,KAAK,CAACC,OAAN,CAAcrF,IAAI,CAACkF,MAAD,CAAlB,IAA8BlF,IAAI,CAACkF,MAAD,CAAlC,GAA6C,EAA5D;IACAlF,IAAI,CAACkF,MAAD,CAAJ,CAAazC,IAAb,CAAkB3B,GAAlB;WACOd,IAAP;GANK,EAOJ,EAPI,CAAP;;AAUF,AAAO,SAASsF,oBAAT,CAA8BC,OAA9B,EAAuC;MACtCC,IAAI,GAAGD,OAAO,CAACE,qBAAR,EAAb;MACMC,KAAK,GAAGrG,MAAM,CAACsG,gBAAP,CAAwBJ,OAAxB,CAAd;MACMK,OAAO,GAAG;IACdC,IAAI,EAAEC,QAAQ,CAACJ,KAAK,CAACK,UAAP,CADA;IAEdC,KAAK,EAAEF,QAAQ,CAACJ,KAAK,CAACO,WAAP;GAFjB;MAIMC,OAAO,GAAG;IACdL,IAAI,EAAEC,QAAQ,CAACJ,KAAK,CAACS,WAAP,CADA;IAEdH,KAAK,EAAEF,QAAQ,CAACJ,KAAK,CAACU,YAAP;GAFjB;SAIO;IACLP,IAAI,EAAE3F,IAAI,CAACmG,IAAL,CAAUb,IAAI,CAACK,IAAf,CADD;IAEL9G,KAAK,EAAEmB,IAAI,CAACmG,IAAL,CAAUb,IAAI,CAACzG,KAAf,CAFF;IAGLuH,UAAU,EAAEpG,IAAI,CAACmG,IAAL,CACVb,IAAI,CAACzG,KAAL,GAAa6G,OAAO,CAACC,IAArB,GAA4BD,OAAO,CAACI,KAApC,GAA4CE,OAAO,CAACL,IAApD,GAA2DK,OAAO,CAACF,KADzD,CAHP;IAMLD,UAAU,EAAEH,OAAO,CAACC,IANf;IAOLI,WAAW,EAAEL,OAAO,CAACI,KAPhB;IAQLG,WAAW,EAAED,OAAO,CAACL,IARhB;IASLO,YAAY,EAAEF,OAAO,CAACF,KATjB;IAULO,WAAW,EAAEhB,OAAO,CAACgB;GAVvB;;AAcF,AAAO,SAASC,UAAT,CAAoBC,IAApB,EAA0BC,KAA1B,EAAiC;SAC/BC,gBAAgB,CAACF,IAAD,CAAhB,GAAyB,oBAAC,IAAD,EAAUC,KAAV,CAAzB,GAA+CD,IAAtD;;;AAGF,SAASG,gBAAT,CAA0BC,SAA1B,EAAqC;SAEjC,OAAOA,SAAP,KAAqB,UAArB,IACA,CAAC,CAAE,YAAM;QACHC,KAAK,GAAGC,MAAM,CAACC,cAAP,CAAsBH,SAAtB,CAAZ;WACOC,KAAK,CAACG,SAAN,IAAmBH,KAAK,CAACG,SAAN,CAAgBN,gBAA1C;GAFA,EAFJ;;;AASF,SAASO,mBAAT,CAA6BL,SAA7B,EAAwC;SAC/B,OAAOA,SAAP,KAAqB,UAA5B;;;AAGF,SAASF,gBAAT,CAA0BE,SAA1B,EAAqC;SAC5BD,gBAAgB,CAACC,SAAD,CAAhB,IAA+BK,mBAAmB,CAACL,SAAD,CAAzD;;;AAGF,AAAO,IAAMM,UAAU,GAAG,SAAbA,UAAa,GAAe;MACnCT,KAAK,GAAG,EAAZ;;qCAD4BU,MAAW;IAAXA,MAAW;;;EAEvCA,MAAM,CAACpF,OAAP,CAAe,YAA6C;oFAAP,EAAO;4BAA1C0D,KAA0C;QAA1CA,KAA0C,4BAAlC,EAAkC;QAA9B2B,SAA8B,SAA9BA,SAA8B;QAAhBC,IAAgB;;IAC1DZ,KAAK,sBACAA,KADA,MAEAY,IAFA;MAGH5B,KAAK,qBACCgB,KAAK,CAAChB,KAAN,IAAe,EADhB,MAEAA,KAFA,CAHF;MAOH2B,SAAS,EAAE,CAACX,KAAK,CAACW,SAAP,EAAkBA,SAAlB,EAA6B/E,MAA7B,CAAoCiF,OAApC,EAA6C7E,IAA7C,CAAkD,GAAlD;MAPb;GADF;SAWOgE,KAAP;CAbK;AAgBP,AAAO,IAAMc,UAAU,GAAG,SAAbA,UAAa,CAACC,KAAD,EAAQC,OAAR;qCAAoB5C,IAApB;IAAoBA,IAApB;;;SACxB2C,KAAK,CAAC1H,MAAN,CAAa,UAACC,IAAD,EAAO2H,IAAP,EAAgB;QACrBC,SAAS,GAAGD,IAAI,MAAJ,UAAK3H,IAAL,SAAc8E,IAAd,EAAlB;;QACI,OAAO8C,SAAP,KAAqB,WAAzB,EAAsC;YAC9B,IAAI1G,KAAJ,CACJ,mEADI,CAAN;;;WAIK0G,SAAP;GAPF,EAQGF,OARH,CADwB;CAAnB;AAWP,AAAO,IAAMG,cAAc,GAAG,SAAjBA,cAAiB,CAACJ,KAAD;qCAAW3C,IAAX;IAAWA,IAAX;;;SAC5B2C,KAAK,CAAC1H,MAAN,CAAa,UAACC,IAAD,EAAO2H,IAAP;WAAgBR,UAAU,CAACnH,IAAD,EAAO2H,IAAI,MAAJ,SAAQ7C,IAAR,CAAP,CAA1B;GAAb,EAA8D,EAA9D,CAD4B;CAAvB;AAGP,AAAO,IAAMgD,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAApB,KAAK,EAAI;MACnCK,MAAM,CAACgB,IAAP,CAAYrB,KAAZ,EAAmBxE,MAAvB,EAA+B;UACvB,IAAIhB,KAAJ,uDAGR8G,IAAI,CAACC,SAAL,CAAevB,KAAf,EAAsB,IAAtB,EAA4B,CAA5B,CAHQ,EAAN;;CAFG;AAUP,AAAO,SAAS3D,GAAT,CAAaoB,GAAb,EAAkB;SAChBA,GAAG,CAACpE,MAAJ,CAAW,UAACC,IAAD,EAAOC,IAAP;WAAgBD,IAAI,GAAGC,IAAvB;GAAX,EAAwC,CAAxC,CAAP;;AAGF,AAAO,SAASiI,UAAT,CAAoBC,CAApB,EAAuB;MACxB,OAAOA,CAAP,KAAa,UAAjB,EAA6B;WACpBA,CAAP;;;AAIJ,AAAO,SAASC,SAAT,CAAmBvI,OAAnB,EAA4BwI,QAA5B,EAAsC;MACrC9G,WAAW,GAAG,EAApB;;MAEM+G,OAAO,GAAG,SAAVA,OAAU,CAAAzI,OAAO,EAAI;IACzBA,OAAO,CAACmC,OAAR,CAAgB,UAAAO,CAAC,EAAI;UACf,CAACA,CAAC,CAAC8F,QAAD,CAAN,EAAkB;QAChB9G,WAAW,CAACkB,IAAZ,CAAiBF,CAAjB;OADF,MAEO;QACL+F,OAAO,CAAC/F,CAAC,CAAC8F,QAAD,CAAF,CAAP;;KAJJ;GADF;;EAUAC,OAAO,CAACzI,OAAD,CAAP;SAEO0B,WAAP;;AAGF,AAAO,SAASgH,iBAAT,CAA2BC,OAA3B,EAAoCC,OAApC,EAA6CC,UAA7C,EAAyDC,MAAzD,EAAiE;MAChEC,WAAW,GAAGJ,OAAO,CAACK,SAAR,CAClB,UAAAC,MAAM;WAAIA,MAAM,CAACJ,UAAP,KAAsBA,UAA1B;GADY,CAApB;;MAIIE,WAAW,KAAK,CAAC,CAArB,EAAwB;UAChB,IAAI1H,KAAJ,sBAAwBwH,UAAxB,kLAGNA,UAHM,4BAGsBA,UAHtB,SAAN;;;EAOFD,OAAO,CAACzG,OAAR,CAAgB,UAAA+G,MAAM,EAAI;QAClBC,WAAW,GAAGR,OAAO,CAACK,SAAR,CAClB,UAAAC,MAAM;aAAIA,MAAM,CAACJ,UAAP,KAAsBK,MAA1B;KADY,CAApB;;QAGIC,WAAW,GAAG,CAAC,CAAf,IAAoBA,WAAW,GAAGJ,WAAtC,EAAmD;YAC3C,IAAI1H,KAAJ,4BACgBwH,UADhB,mDACmEK,MADnE,mBAAN;;GALJ;EAWAJ,MAAM,CAAC3G,OAAP,CAAe,UAAAiH,KAAK,EAAI;QAChBC,UAAU,GAAGV,OAAO,CAACK,SAAR,CAAkB,UAAAC,MAAM;aAAIA,MAAM,CAACJ,UAAP,KAAsBO,KAA1B;KAAxB,CAAnB;;QACIC,UAAU,GAAG,CAAC,CAAd,IAAmBA,UAAU,GAAGN,WAApC,EAAiD;YACzC,IAAI1H,KAAJ,4BACgBwH,UADhB,oDACoEO,KADpE,mBAAN;;GAHJ;;AAUF,AAAO,SAASE,UAAT,CACLnE,IADK,SAGL;MADEoE,iBACF,SADEA,iBACF;MADqBC,QACrB,SADqBA,QACrB;kCAD+BC,aAC/B;MAD+BA,aAC/B,oCAD+C,IAC/C;MACMC,YAAY,GAAG,EAArB;;MAEMC,SAAS,GAAG,SAAZA,SAAY,CAAA1I,GAAG,EAAI;QACjB2I,GAAG,GAAG3I,GAAG,CAAC4C,IAAJ,CAAShB,IAAT,CAAc,GAAd,CAAZ;IAEA5B,GAAG,CAAC4I,UAAJ,GACG5I,GAAG,CAAC6I,QAAJ,IAAgB7I,GAAG,CAAC6I,QAAJ,CAAaP,iBAAb,CAAjB,IACAC,QAAQ,CAACxG,QAAT,CAAkB4G,GAAlB,CAFF;IAIA3I,GAAG,CAAC8I,SAAJ,GAAgB9I,GAAG,CAAC+I,OAAJ,IAAe,CAAC,CAAC/I,GAAG,CAAC+I,OAAJ,CAAY3H,MAA7C;IAEAqH,YAAY,CAAC9G,IAAb,CAAkB3B,GAAlB;;QAEIwI,aAAa,IAAIxI,GAAG,CAAC+I,OAArB,IAAgC/I,GAAG,CAAC+I,OAAJ,CAAY3H,MAA5C,IAAsDpB,GAAG,CAAC4I,UAA9D,EAA0E;MACxE5I,GAAG,CAAC+I,OAAJ,CAAY7H,OAAZ,CAAoBwH,SAApB;;GAZJ;;EAgBAxE,IAAI,CAAChD,OAAL,CAAawH,SAAb;SAEOD,YAAP;;;AAKF,SAAS1F,aAAT,CAAuBJ,GAAvB,EAA4B;SAExBqG,WAAW,CAACrG,GAAD,CAAX;GAEGrC,GAFH,CAEO,UAAAmB,CAAC;WAAI1D,MAAM,CAAC0D,CAAD,CAAN,CAAUwH,OAAV,CAAkB,GAAlB,EAAuB,GAAvB,CAAJ;GAFR;GAIGrH,IAJH,CAIQ,GAJR;GAMGqH,OANH,CAMW,KANX,EAMkB,GANlB,EAOGA,OAPH,CAOW,KAPX,EAOkB,EAPlB;GASGlJ,KATH,CASS,GATT,CADF;;;AAcF,SAASiJ,WAAT,CAAqB3F,GAArB,EAAuC;MAAb6F,MAAa,uEAAJ,EAAI;;MACjC,CAAC5E,KAAK,CAACC,OAAN,CAAclB,GAAd,CAAL,EAAyB;IACvB6F,MAAM,CAACvH,IAAP,CAAY0B,GAAZ;GADF,MAEO;SACA,IAAIM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,GAAG,CAACjC,MAAxB,EAAgCuC,CAAC,IAAI,CAArC,EAAwC;MACtCqF,WAAW,CAAC3F,GAAG,CAACM,CAAD,CAAJ,EAASuF,MAAT,CAAX;;;;SAGGA,MAAP;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7bF,IAAMC,SAAS,GAAG;;EAEhBC,IAAI,EAAEC,SAAS,CAACC,KAAV,CAAgBC,UAFN;EAGhBxK,OAAO,EAAEsK,SAAS,CAACG,OAAV,CAAkBH,SAAS,CAACI,MAA5B,EAAoCF,UAH7B;EAIhB5L,aAAa,EAAE0L,SAAS,CAACI,MAJT;EAKhBC,UAAU,EAAEL,SAAS,CAACM,IALN;EAMhBC,QAAQ,EAAEP,SAAS,CAACM,IANJ;EAOhBE,KAAK,EAAER,SAAS,CAACS;CAPnB;AAUA,IAAMC,SAAS,GACb,uKADF;AAGA,IAAaC,YAAY,GAAG,EAArB;AAEP,IAAMC,mBAAmB,GAAG,EAA5B;AACA,IAAMC,qBAAqB,GAAG,EAA9B;;AACA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,GAAD,EAAMC,QAAN;SAAmBA,QAAnB;CAAvB;;AACA,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACtK,GAAD,EAAMN,KAAN,EAAgB;MACpCM,GAAG,KAAK,IAAR,IAAgBA,GAAG,CAAC+I,OAAxB,EAAiC;WACxB/I,GAAG,CAAC+I,OAAX;GADF,MAEO;WACE,EAAP;;CAJJ;;AAOA,IAAMwB,eAAe,GAAG,SAAlBA,eAAkB,CAACvK,GAAD,EAAMN,KAAN;SAAgBA,KAAhB;CAAxB;;AAEA,IAAa8K,QAAQ,GAAG,SAAXA,QAAW,CAAC5E,KAAD,EAAuB;;EAE7CyD,SAAS,CAACoB,cAAV,CAAyBtB,SAAzB,EAAoCvD,KAApC,EAA2C,UAA3C,EAAuD,UAAvD,EAF6C;;MAM3CwD,IAN2C,GAezCxD,KAfyC,CAM3CwD,IAN2C;MAOlCsB,WAPkC,GAezC9E,KAfyC,CAO3C7G,OAP2C;4BAezC6G,KAfyC,CAQ3C+E,YAR2C;MAQ3CA,YAR2C,oCAQ5BV,mBAR4B;MASpCW,SAToC,GAezChF,KAfyC,CAS3CiF,KAT2C;6BAezCjF,KAfyC,CAU3CjI,aAV2C;MAU3CA,gBAV2C,qCAU3BuM,qBAV2B;0BAezCtE,KAfyC,CAW3C8D,UAX2C;MAW3CA,UAX2C,kCAW9BY,iBAX8B;wBAezC1E,KAfyC,CAY3CgE,QAZ2C;MAY3CA,QAZ2C,gCAYhCW,eAZgC;uBAezC3E,KAfyC,CAa3CkF,OAb2C;MAa3CA,OAb2C,+BAajCX,cAbiC;MAc3CN,KAd2C,GAezCjE,KAfyC,CAc3CiE,KAd2C;EAiB7CA,KAAK,GAAGrL,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAAzB,GAAwC,KAAxC,GAAgDmL,KAAxD,CAjB6C;;wBAoBLlL,KAAK,CAACoM,QAAN,oBACnCf,YADmC,MAEnCW,YAFmC,EApBK;;MAoBxCK,aApBwC;MAoBzBC,gBApByB;;MAyBvCJ,KAAK,GAAGlM,KAAK,CAACuM,OAAN,CAAc,YAAM;QAC5BN,SAAJ,EAAe;UACPP,QAAQ,sBACTW,aADS,CAAd;;MAGA/E,MAAM,CAACgB,IAAP,CAAY2D,SAAZ,EAAuB1J,OAAvB,CAA+B,UAAAyH,GAAG,EAAI;QACpC0B,QAAQ,CAAC1B,GAAD,CAAR,GAAgBiC,SAAS,CAACjC,GAAD,CAAzB;OADF;aAGO0B,QAAP;;;WAEKW,aAAP;GAVY,EAWX,CAACA,aAAD,EAAgBJ,SAAhB,CAXW,CAAd;MAaMO,QAAQ,GAAGxM,KAAK,CAACyM,WAAN,CACf,UAACC,OAAD,EAAUC,IAAV,EAAmB;WACVL,gBAAgB,CAAC,UAAAb,GAAG,EAAI;UACvBC,QAAQ,GAAG,OAAOgB,OAAP,KAAmB,UAAnB,GAAgCA,OAAO,CAACjB,GAAD,CAAvC,GAA+CiB,OAAhE;aACOP,OAAO,CAACV,GAAD,EAAMC,QAAN,EAAgBiB,IAAhB,CAAd;KAFqB,CAAvB;GAFa,EAOf,CAACR,OAAD,CAPe,CAAjB,CAtC6C;;MAiDzCS,WAAW,GAAG5M,KAAK,CAAC6M,MAAN,CAAa,EAAb,CAAlB;;oCAjDiC9D,OAAY;IAAZA,OAAY;;;EAmD7CzB,MAAM,CAACwF,MAAP,CAAcF,WAAW,CAACG,OAA1B,qBACK9F,KADL;IAEEwD,IAAI,EAAJA,IAFF;;IAGEyB,KAAK,EAALA,KAHF;IAIEM,QAAQ,EAARA,QAJF;;IAKEzD,OAAO,EAAPA,OALF;;IAMEf,KAAK,EAAE;MACLgF,yBAAyB,EAAE,EADtB;MAELC,6BAA6B,EAAE,EAF1B;MAGLC,mBAAmB,EAAE,EAHhB;MAILC,OAAO,EAAE,EAJJ;MAKLC,OAAO,EAAE,EALJ;MAMLC,UAAU,EAAE,EANP;MAOLC,aAAa,EAAE,EAPV;MAQLC,iBAAiB,EAAE,EARd;MASLC,WAAW,EAAE,EATR;MAULC,mBAAmB,EAAE,EAVhB;MAWLC,cAAc,EAAE,EAXX;MAYLC,YAAY,EAAE;;MArE2B;;MA0EzC9N,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EAAqD3J,OAAO,CAACqM,IAAR,CAAa,SAAb;EAErD7E,OAAO,CAAClG,MAAR,CAAeiF,OAAf,EAAwBvF,OAAxB,CAAgC,UAAA8G,MAAM,EAAI;IACxCA,MAAM,CAACuD,WAAW,CAACG,OAAZ,CAAoB/E,KAArB,CAAN;GADF;MAIInI,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACsM,OAAR,CAAgB,SAAhB,EAjF2C;;MAoFzCzN,OAAO,GAAGJ,KAAK,CAACuM,OAAN,CACZ;WAAM7K,kBAAkB,CAACqK,WAAD,EAAc/M,gBAAd,CAAxB;GADY,EAEZ,CAACA,gBAAD,EAAgB+M,WAAhB,CAFY,CAAd,CApF6C;;;MA2FzCjK,WAAW,GAAG9B,KAAK,CAACuM,OAAN,CAAc,YAAM;QAChC1M,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACqM,IAAR,CAAa,iCAAb;QAEEE,UAAU,GAAG/F,UAAU,CACzB6E,WAAW,CAACG,OAAZ,CAAoB/E,KAApB,CAA0BgF,yBADD,EAEzBrE,SAAS,CAACvI,OAAD,EAAU,SAAV,CAFgB,EAGzBwM,WAAW,CAACG,OAHa,CAA3B;QAMIlN,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACsM,OAAR,CAAgB,iCAAhB;WACKC,UAAP;GAZgB,GAchB1N,OAdgB,EAehB8K,KAfgB,4BAiBbnD,UAAU,CACX6E,WAAW,CAACG,OAAZ,CAAoB/E,KAApB,CAA0BiF,6BADf,EAEX,EAFW,EAGXL,WAAW,CAACG,OAHD,CAjBG,GAAlB,CA3F6C;;MAoHvChL,YAAY,GAAG/B,KAAK,CAACuM,OAAN,CACnB;WAAM1K,gBAAgB,CAACC,WAAD,EAAc9C,gBAAd,CAAtB;GADmB,EAEnB,CAACA,gBAAD,EAAgB8C,WAAhB,CAFmB,CAArB;MAKMI,OAAO,GAAGlC,KAAK,CAACuM,OAAN,CAAc;WAAMxK,YAAY,CAAC,CAAD,CAAZ,CAAgBG,OAAtB;GAAd,EAA6C,CAACH,YAAD,CAA7C,CAAhB;EAEAuF,MAAM,CAACwF,MAAP,CAAcF,WAAW,CAACG,OAA1B,EAAmC;IACjC3M,OAAO,EAAPA,OADiC;IAEjC0B,WAAW,EAAXA,WAFiC;IAGjCC,YAAY,EAAZA,YAHiC;IAIjCG,OAAO,EAAPA;GAJF,EA3H6C;;uBAmIpBlC,KAAK,CAACuM,OAAN,CAAc,YAAM;QACvC1M,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACqM,IAAR,CAAa,iBAAb;QAEEG,QAAQ,GAAG,EAAf,CAJ2C;;QAOrCC,SAAS,GAAG,SAAZA,SAAY,CAACC,WAAD,EAAcjJ,CAAd,EAAgD;UAA/B3E,KAA+B,uEAAvB,CAAuB;UAApB6N,UAAoB,uEAAP,EAAO;;UAE1DhE,QAAQ,GAAG+D,WAAjB;UAEME,KAAK,GAAGlD,QAAQ,CAACgD,WAAD,EAAcjJ,CAAd,CAAtB,CAJgE;;UAO1Df,IAAI,gCAAOiK,UAAP,IAAmBC,KAAnB,EAAV;UAEM9M,GAAG,GAAG;QACV6I,QAAQ,EAARA,QADU;QAEVnJ,KAAK,EAAEiE,CAFG;QAGVf,IAAI,EAAJA,IAHU;;QAIV5D,KAAK,EAALA,KAJU;QAKV+N,KAAK,EAAE,CAAC,EAAD,CALG;;OAAZ;MAQAL,QAAQ,CAAC/K,IAAT,CAAc3B,GAAd,EAjBgE;;UAoB5D+I,OAAO,GAAGW,UAAU,CAACkD,WAAD,EAAcjJ,CAAd,CAAxB;;UAEIoF,OAAJ,EAAa;QACX/I,GAAG,CAAC+I,OAAJ,GAAcA,OAAO,CAACzI,GAAR,CAAY,UAACmB,CAAD,EAAIkC,CAAJ;iBAAUgJ,SAAS,CAAClL,CAAD,EAAIkC,CAAJ,EAAO3E,KAAK,GAAG,CAAf,EAAkB4D,IAAlB,CAAnB;SAAZ,CAAd;OAvB8D;;;;UA4B1DoK,uBAAuB,GAAG,SAA1BA,uBAA0B,GAAM;cAC9B,IAAI5M,KAAJ,CACJ,iGADI,CAAN;OADF;;MAKAJ,GAAG,CAAC+M,KAAJ,CAAUzM,GAAV,GAAgB0M,uBAAhB;MACAhN,GAAG,CAAC+M,KAAJ,CAAUvL,MAAV,GAAmBwL,uBAAnB;MACAhN,GAAG,CAAC+M,KAAJ,CAAU7L,OAAV,GAAoB8L,uBAApB;MACAhN,GAAG,CAAC+M,KAAJ,CAAU,CAAV,EAAaT,YAAb,GAA4BU,uBAA5B,CApCgE;;MAuChEhN,GAAG,CAACqE,MAAJ,GAAa,EAAb;MACA5D,WAAW,CAACS,OAAZ,CAAoB,UAAA3B,MAAM,EAAI;QAC5BS,GAAG,CAACqE,MAAJ,CAAW9E,MAAM,CAACI,EAAlB,IAAwBJ,MAAM,CAACK,QAAP,GACpBL,MAAM,CAACK,QAAP,CAAgBgN,WAAhB,EAA6BjJ,CAA7B,EAAgC;UAAEoF,OAAO,EAAPA,OAAF;UAAW/J,KAAK,EAALA,KAAX;UAAkBoK,IAAI,EAAJA;SAAlD,CADoB,GAEpB6D,SAFJ;OADF;aAMOjN,GAAP;KA9CF,CAP2C;;;QAyDrCkN,YAAY,GAAG9D,IAAI,CAAC9I,GAAL,CAAS,UAACmB,CAAD,EAAIkC,CAAJ;aAAUgJ,SAAS,CAAClL,CAAD,EAAIkC,CAAJ,CAAnB;KAAT,CAArB;QACInF,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACsM,OAAR,CAAgB,iBAAhB;WACK,CAACU,YAAD,EAAeR,QAAf,CAAP;GA5DuB,EA6DtB,CAAC7C,KAAD,EAAQT,IAAR,EAAcQ,QAAd,EAAwBF,UAAxB,EAAoCjJ,WAApC,CA7DsB,CAnIoB;;MAmItCyD,IAnIsC;MAmIhCwI,QAnIgC;;EAkM7CnB,WAAW,CAACG,OAAZ,CAAoBxH,IAApB,GAA2BA,IAA3B;EACAqH,WAAW,CAACG,OAAZ,CAAoBgB,QAApB,GAA+BA,QAA/B,CAnM6C;;EAsM7CvK,yBAAyB,CAACoJ,WAAW,CAACG,OAAb,CAAzB,CAtM6C;;EAyM7CH,WAAW,CAACG,OAAZ,CAAoByB,WAApB,GAAkCzM,YAAY,CAACzB,MAAb,CAChC,UAACmO,GAAD,EAAMxM,WAAN;wCAA0BwM,GAA1B,sBAAkCxM,WAAW,CAACC,OAA9C;GADgC,EAEhC,EAFgC,CAAlC;MAKIrC,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACqM,IAAR,CAAa,2BAAb;EACFhB,WAAW,CAACG,OAAZ,GAAsBhF,UAAU,CAC9B6E,WAAW,CAACG,OAAZ,CAAoB/E,KAApB,CAA0BkF,mBADI,EAE9BN,WAAW,CAACG,OAFkB,CAAhC;MAIIlN,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACsM,OAAR,CAAgB,2BAAhB;EAEFa,mBAAmB,CAAC9B,WAAW,CAACG,OAAb,CAAnB;MAEIlN,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACqM,IAAR,CAAa,eAAb;EACFhB,WAAW,CAACG,OAAZ,GAAsBhF,UAAU,CAC9B6E,WAAW,CAACG,OAAZ,CAAoB/E,KAApB,CAA0BmF,OADI,EAE9BP,WAAW,CAACG,OAFkB,CAAhC;MAIIlN,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACsM,OAAR,CAAgB,eAAhB,EAhO2C;;;EAoO7CjB,WAAW,CAACG,OAAZ,CAAoByB,WAApB,CAAgCjM,OAAhC,CAAwC,UAAA3B,MAAM,EAAI;;IAEhDA,MAAM,CAAC+N,MAAP,GAAgB,UAAChC,IAAD,EAA0B;UAAnBiC,SAAmB,uEAAP,EAAO;UAClC5H,IAAI,GAAG,OAAO2F,IAAP,KAAgB,QAAhB,GAA2B/L,MAAM,CAAC+L,IAAD,CAAjC,GAA0CA,IAAvD;;UAEI,OAAO3F,IAAP,KAAgB,WAApB,EAAiC;cACzB,IAAIvF,KAAJ,CAAU2J,SAAV,CAAN;;;aAGKrE,UAAU,CAACC,IAAD,qBACZ4F,WAAW,CAACG,OADA;QAEfnM,MAAM,EAANA;SACGgO,SAHY,EAAjB;KAPF,CAFgD;;;IAiBhDhO,MAAM,CAAC8M,cAAP,GAAwB,UAAAzG,KAAK;aAC3BS,UAAU,CACR;QACEsC,GAAG,EAAE,CAAC,QAAD,EAAWpJ,MAAM,CAACI,EAAlB,EAAsBiC,IAAtB,CAA2B,GAA3B,CADP;QAEE4L,OAAO,EAAEjO,MAAM,CAACiD;OAHV,EAKRuE,cAAc,CACZwE,WAAW,CAACG,OAAZ,CAAoB/E,KAApB,CAA0B0F,cADd,EAEZ9M,MAFY,EAGZgM,WAAW,CAACG,OAHA,CALN,EAUR9F,KAVQ,CADiB;KAA7B;GAjBF;EAgCA2F,WAAW,CAACG,OAAZ,CAAoBhL,YAApB,CAAiCQ,OAAjC,CAAyC,UAACN,WAAD,EAAc+C,CAAd,EAAoB;;IAE3D/C,WAAW,CAACC,OAAZ,GAAsBD,WAAW,CAACC,OAAZ,CAAoBW,MAApB,CAA2B,UAAAU,MAAM,EAAI;UACnDsF,OAAO,GAAG,SAAVA,OAAU,CAAA3G,OAAO;eACrBA,OAAO,CAACW,MAAR,CAAe,UAAAU,MAAM,EAAI;cACnBA,MAAM,CAACrB,OAAX,EAAoB;mBACX2G,OAAO,CAACtF,MAAM,CAACrB,OAAR,CAAd;;;iBAEKqB,MAAM,CAACK,SAAd;SAJF,EAKGnB,MANkB;OAAvB;;UAOIc,MAAM,CAACrB,OAAX,EAAoB;eACX2G,OAAO,CAACtF,MAAM,CAACrB,OAAR,CAAd;;;aAEKqB,MAAM,CAACK,SAAd;KAXoB,CAAtB,CAF2D;;QAiBvD3B,WAAW,CAACC,OAAZ,CAAoBO,MAAxB,EAAgC;MAC9BR,WAAW,CAACwL,mBAAZ,GAAkC;YAACxG,KAAD,uEAAS,EAAT;eAChCS,UAAU,CACR;UACEsC,GAAG,EAAE,iBAAUhF,CAAV,GAAe/B,IAAf,CAAoB,GAApB;SAFC,EAIRmF,cAAc,CACZwE,WAAW,CAACG,OAAZ,CAAoB/E,KAApB,CAA0ByF,mBADd,EAEZxL,WAFY,EAGZ2K,WAAW,CAACG,OAHA,CAJN,EASR9F,KATQ,CADsB;OAAlC;;aAaO,IAAP;;GA/BJ,EApQ6C;;MAwSzCpH,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACqM,IAAR,CAAa,eAAb;EACFhB,WAAW,CAACG,OAAZ,CAAoBxH,IAApB,GAA2BwC,UAAU,CACnC6E,WAAW,CAACG,OAAZ,CAAoB/E,KAApB,CAA0BoF,OADS,EAEnCR,WAAW,CAACG,OAAZ,CAAoBxH,IAFe,EAGnCqH,WAAW,CAACG,OAHuB,CAArC;MAKIlN,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACsM,OAAR,CAAgB,eAAhB,EAhT2C;;;EAqT7CjB,WAAW,CAACG,OAAZ,CAAoBM,UAApB,GAAiCrN,KAAK,CAACyM,WAAN,CAAkB,UAAApL,GAAG,EAAI;IACxDA,GAAG,CAACmM,WAAJ,GAAkB,UAAAvG,KAAK;aACrBS,UAAU,CACR;QAAEsC,GAAG,EAAE,CAAC,KAAD,4BAAW3I,GAAG,CAAC4C,IAAf,GAAqBhB,IAArB,CAA0B,GAA1B;OADC,EAERmF,cAAc,CACZwE,WAAW,CAACG,OAAZ,CAAoB/E,KAApB,CAA0BwF,WADd,EAEZnM,GAFY,EAGZuL,WAAW,CAACG,OAHA,CAFN,EAOR9F,KAPQ,CADW;KAAvB,CADwD;;;IAaxD5F,GAAG,CAAC+M,KAAJ,GAAYxB,WAAW,CAACG,OAAZ,CAAoBjL,WAApB,CACTe,MADS,CACF,UAAAC,CAAC;aAAIA,CAAC,CAACc,SAAN;KADC,EAETjC,GAFS,CAEL,UAAAf,MAAM,EAAI;UACP1B,IAAI,GAAG;QACX0B,MAAM,EAANA,MADW;QAEXS,GAAG,EAAHA,GAFW;QAGXlC,KAAK,EAAEkC,GAAG,CAACqE,MAAJ,CAAW9E,MAAM,CAACI,EAAlB;OAHT,CADa;;MAQb9B,IAAI,CAACyO,YAAL,GAAoB,UAAA1G,KAAK,EAAI;YACrB6H,aAAa,GAAG,6BAAIzN,GAAG,CAAC4C,IAAR,IAAcrD,MAAM,CAACI,EAArB,GAAyBiC,IAAzB,CAA8B,GAA9B,CAAtB;eACOyE,UAAU,CACf;UACEsC,GAAG,EAAE,CAAC,MAAD,EAAS8E,aAAT,EAAwB7L,IAAxB,CAA6B,GAA7B;SAFQ,EAIfmF,cAAc,CACZwE,WAAW,CAACG,OAAZ,CAAoB/E,KAApB,CAA0B2F,YADd,EAEZzO,IAFY,EAGZ0N,WAAW,CAACG,OAHA,CAJC,EASf9F,KATe,CAAjB;OAFF,CARa;;;MAwBb/H,IAAI,CAACyP,MAAL,GAAc,UAAChC,IAAD,EAA0B;YAAnBiC,SAAmB,uEAAP,EAAO;YAChC5H,IAAI,GAAG,OAAO2F,IAAP,KAAgB,QAAhB,GAA2B/L,MAAM,CAAC+L,IAAD,CAAjC,GAA0CA,IAAvD;;YAEI,OAAO3F,IAAP,KAAgB,WAApB,EAAiC;gBACzB,IAAIvF,KAAJ,CAAU2J,SAAV,CAAN;;;eAGKrE,UAAU,CAACC,IAAD,qBACZ4F,WAAW,CAACG,OADA;UAEfnM,MAAM,EAANA,MAFe;UAGfS,GAAG,EAAHA,GAHe;UAIfnC,IAAI,EAAJA;WACG0P,SALY,EAAjB;OAPF;;aAgBO1P,IAAP;KA1CQ,CAAZ,CAbwD;;IA2DxD6I,UAAU,CAAC6E,WAAW,CAACG,OAAZ,CAAoB/E,KAApB,CAA0BqF,UAA3B,EAAuChM,GAAvC,EAA4CuL,WAAW,CAACG,OAAxD,CAAV;GA3D+B,EA4D9B,EA5D8B,CAAjC;;EA8DAH,WAAW,CAACG,OAAZ,CAAoBO,aAApB,GAAoC,UAAAsB,SAAS;WAC3ClH,UAAU,CACRU,cAAc,CACZwE,WAAW,CAACG,OAAZ,CAAoB/E,KAApB,CAA0BsF,aADd,EAEZV,WAAW,CAACG,OAFA,CADN,EAKR6B,SALQ,CADiC;GAA7C;;EASAhC,WAAW,CAACG,OAAZ,CAAoBQ,iBAApB,GAAwC,UAAAqB,SAAS;WAC/ClH,UAAU,CACRU,cAAc,CACZwE,WAAW,CAACG,OAAZ,CAAoB/E,KAApB,CAA0BuF,iBADd,EAEZX,WAAW,CAACG,OAFA,CADN,EAKR6B,SALQ,CADqC;GAAjD;;SASOhC,WAAW,CAACG,OAAnB;CArYK;;AAwYP,SAAS2B,mBAAT,CAA6BjL,QAA7B,EAAuC;MAC7BvB,OAD6B,GACjBuB,QADiB,CAC7BvB,OAD6B;EAGrCuB,QAAQ,CAACsL,iBAAT,GAA6BC,qBAAqB,CAAC9M,OAAD,CAAlD;;;AAGF,SAAS8M,qBAAT,CAA+B9M,OAA/B,EAAkD;MAAVkE,IAAU,uEAAH,CAAG;MAC5C6I,aAAa,GAAG,CAApB;EAEA/M,OAAO,CAACK,OAAR,CAAgB,UAAAgB,MAAM,EAAI;QACT2L,UADS,GACM3L,MADN,CAClBrB,OADkB;IAGxBqB,MAAM,CAAC4L,SAAP,GAAmB/I,IAAnB;;QAEI8I,UAAU,IAAIA,UAAU,CAACzM,MAA7B,EAAqC;MACnCc,MAAM,CAAC6L,UAAP,GAAoBJ,qBAAqB,CAACE,UAAD,EAAa9I,IAAb,CAAzC;KADF,MAEO;MACL7C,MAAM,CAAC6L,UAAP,GAAoB3O,IAAI,CAAC4O,GAAL,CAClB5O,IAAI,CAACC,GAAL,CAAS6C,MAAM,CAAChE,QAAhB,EAA0BgE,MAAM,CAACjE,KAAjC,CADkB,EAElBiE,MAAM,CAAC/D,QAFW,CAApB;;;QAKE+D,MAAM,CAACK,SAAX,EAAsB;MACpBwC,IAAI,IAAI7C,MAAM,CAAC6L,UAAf;MACAH,aAAa,IAAI1L,MAAM,CAAC6L,UAAxB;;GAfJ;SAmBOH,aAAP;;;IC7cIK,OAAO,GAAG,EAAhB;AACA,IAIaC,UAAU,GAAG,SAAbA,UAAa,GAAa;oCAATC,IAAS;IAATA,IAAS;;;EACrCA,IAAI,CAACjN,OAAL,CAAa,UAAAkN,MAAM,EAAI;;;;;IAKrBH,OAAO,CAACG,MAAD,CAAP,iCAAyCA,MAAzC;AACAC,AACD,GAPD;CADK;;ACEPrE,YAAY,CAACzB,QAAb,GAAwB,EAAxB;AAEA2F,UAAU,CAAC,gBAAD,EAAmB,aAAnB,CAAV;AAEA,IAAM/E,WAAS,GAAG;EAChBb,iBAAiB,EAAEe,SAAS,CAACiF,MADb;EAEhBC,oBAAoB,EAAElF,SAAS,CAACS;CAFlC;AAKA,IAAa0E,WAAW,GAAG,SAAdA,WAAc,CAAA7H,KAAK,EAAI;EAClCA,KAAK,CAAC8H,sBAAN,GAA+B,EAA/B;EACA9H,KAAK,CAACmF,OAAN,CAAcnK,IAAd,CAAmBmK,OAAnB;CAFK;AAKP0C,WAAW,CAAC5G,UAAZ,GAAyB,aAAzB;;AAEA,SAASkE,OAAT,CAAiB1J,QAAjB,EAA2B;EACzBiH,SAAS,CAACoB,cAAV,CAAyBtB,WAAzB,EAAoC/G,QAApC,EAA8C,UAA9C,EAA0D,aAA1D;MAGEyH,KAJuB,GAYrBzH,QAZqB,CAIvByH,KAJuB;MAKvB3F,IALuB,GAYrB9B,QAZqB,CAKvB8B,IALuB;8BAYrB9B,QAZqB,CAMvBkG,iBANuB;MAMvBA,iBANuB,sCAMH,UANG;8BAYrBlG,QAZqB,CAOvBmM,oBAPuB;MAOvBA,oBAPuB,sCAOA,IAPA;8BAYrBnM,QAZqB,CAQvBoG,aARuB;MAQvBA,aARuB,sCAQP,IARO;MASvB7B,KATuB,GAYrBvE,QAZqB,CASvBuE,KATuB;MAUd4B,QAVc,GAYrBnG,QAZqB,CAUvByI,KAVuB,CAUdtC,QAVc;MAWvB4C,QAXuB,GAYrB/I,QAZqB,CAWvB+I,QAXuB;;MAcnBuD,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAC9L,IAAD,EAAO+L,GAAP,EAAe;QACpChG,GAAG,GAAG/F,IAAI,CAAChB,IAAL,CAAU,GAAV,CAAZ;WAEOuJ,QAAQ,CAAC,UAAAf,GAAG,EAAI;UACfwE,MAAM,GAAGxE,GAAG,CAAC7B,QAAJ,CAAaxG,QAAb,CAAsB4G,GAAtB,CAAf;UACMkG,WAAW,GAAG,OAAOF,GAAP,KAAe,WAAf,GAA6BA,GAA7B,GAAmC,CAACC,MAAxD;UACIE,WAAW,GAAG,IAAIC,GAAJ,CAAQ3E,GAAG,CAAC7B,QAAZ,CAAlB;;UAEI,CAACqG,MAAD,IAAWC,WAAf,EAA4B;QAC1BC,WAAW,CAACE,GAAZ,CAAgBrG,GAAhB;OADF,MAEO,IAAIiG,MAAM,IAAI,CAACC,WAAf,EAA4B;QACjCC,WAAW,CAACG,MAAZ,CAAmBtG,GAAnB;OADK,MAEA;eACEyB,GAAP;;;gCAIGA,GADL;QAEE7B,QAAQ,qBAAMuG,WAAW,CAACzK,MAAZ,EAAN;;KAfG,EAiBZ4J,OAAO,CAACiB,cAjBI,CAAf;GAHF;;EAuBAvI,KAAK,CAACqF,UAAN,CAAiBrK,IAAjB,CAAsB,UAAC3B,GAAD,EAAMoC,QAAN,EAAmB;IACvCpC,GAAG,CAACkP,cAAJ,GAAqB,UAAAP,GAAG;aAAID,oBAAoB,CAAC1O,GAAG,CAAC4C,IAAL,EAAW+L,GAAX,CAAxB;KAAxB;;QACMQ,cAAc,GAAGpI,cAAc,CACnC3E,QAAQ,CAACuE,KAAT,CAAe8H,sBADoB,EAEnCzO,GAFmC,EAGnCoC,QAHmC,CAArC;;IAKApC,GAAG,CAACyO,sBAAJ,GAA6B,UAAA7I,KAAK,EAAI;aAC7BS,UAAU,CACf;QACE+I,OAAO,EAAE,iBAAAjM,CAAC,EAAI;UACZA,CAAC,CAACkM,OAAF;UACArP,GAAG,CAACkP,cAAJ;SAHJ;QAKEtK,KAAK,EAAE;UACL3B,MAAM,EAAE;SANZ;QAQEqM,KAAK,EAAE;OATM,EAWfH,cAXe,EAYfvJ,KAZe,CAAjB;KADF;;WAgBO5F,GAAP;GAvBF;MA0BMyI,YAAY,GAAGyC,OAAO,CAAC,YAAM;QAC7B1M,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACqP,IAAR,CAAa,iBAAb;;QAEEhB,oBAAJ,EAA0B;aACjBlG,UAAU,CAACnE,IAAD,EAAO;QAAEoE,iBAAiB,EAAjBA,iBAAF;QAAqBC,QAAQ,EAARA,QAArB;QAA+BC,aAAa,EAAbA;OAAtC,CAAjB;;;WAGKtE,IAAP;GAR0B,EASzB,CACD2F,KADC,EAED0E,oBAFC,EAGDrK,IAHC,EAIDoE,iBAJC,EAKDC,QALC,EAMDC,aANC,CATyB,CAA5B;MAkBMgH,aAAa,GAAGC,iBAAiB,CAAClH,QAAD,CAAvC;4BAGKnG,QADL;IAEEsM,oBAAoB,EAApBA,oBAFF;IAGEc,aAAa,EAAbA,aAHF;IAIEtL,IAAI,EAAEuE;;;;AAIV,SAASgH,iBAAT,CAA2BlH,QAA3B,EAAqC;MAC/BmH,QAAQ,GAAG,CAAf;EAEAnH,QAAQ,CAACrH,OAAT,CAAiB,UAAAyH,GAAG,EAAI;QAChB/F,IAAI,GAAG+F,GAAG,CAAC5I,KAAJ,CAAU,GAAV,CAAb;IACA2P,QAAQ,GAAGtQ,IAAI,CAACC,GAAL,CAASqQ,QAAT,EAAmB9M,IAAI,CAACxB,MAAxB,CAAX;GAFF;SAKOsO,QAAP;;;AC1HK,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAACzL,IAAD,EAAOvE,EAAP,EAAWiQ,WAAX,EAA2B;EAC7C1L,IAAI,GAAGA,IAAI,CAAC1C,MAAL,CAAY,UAAAxB,GAAG,EAAI;QAClB6P,QAAQ,GAAG7P,GAAG,CAACqE,MAAJ,CAAW1E,EAAX,CAAjB;WACO5B,MAAM,CAAC8R,QAAD,CAAN,CACJC,WADI,GAEJ/N,QAFI,CAEKhE,MAAM,CAAC6R,WAAD,CAAN,CAAoBE,WAApB,EAFL,CAAP;GAFK,CAAP;SAMO5L,IAAP;CAPK;;AAUPyL,IAAI,CAACI,UAAL,GAAkB,UAAA/M,GAAG;SAAI,CAACA,GAAL;CAArB;;AAEA,AAAO,IAAMgN,SAAS,GAAG,SAAZA,SAAY,CAAC9L,IAAD,EAAOvE,EAAP,EAAWiQ,WAAX,EAA2B;SAC3C1L,IAAI,CAAC1C,MAAL,CAAY,UAAAxB,GAAG,EAAI;QAClB6P,QAAQ,GAAG7P,GAAG,CAACqE,MAAJ,CAAW1E,EAAX,CAAjB;WACOkQ,QAAQ,KAAK5C,SAAb,GACHlP,MAAM,CAAC8R,QAAD,CAAN,CAAiBC,WAAjB,OAAmC/R,MAAM,CAAC6R,WAAD,CAAN,CAAoBE,WAApB,EADhC,GAEH,IAFJ;GAFK,CAAP;CADK;;AASPE,SAAS,CAACD,UAAV,GAAuB,UAAA/M,GAAG;SAAI,CAACA,GAAL;CAA1B;;AAEA,AAAO,IAAMiN,aAAa,GAAG,SAAhBA,aAAgB,CAAC/L,IAAD,EAAOvE,EAAP,EAAWiQ,WAAX,EAA2B;SAC/C1L,IAAI,CAAC1C,MAAL,CAAY,UAAAxB,GAAG,EAAI;QAClB6P,QAAQ,GAAG7P,GAAG,CAACqE,MAAJ,CAAW1E,EAAX,CAAjB;WACOkQ,QAAQ,KAAK5C,SAAb,GACHlP,MAAM,CAAC8R,QAAD,CAAN,KAAqB9R,MAAM,CAAC6R,WAAD,CADxB,GAEH,IAFJ;GAFK,CAAP;CADK;;AASPK,aAAa,CAACF,UAAd,GAA2B,UAAA/M,GAAG;SAAI,CAACA,GAAL;CAA9B;;AAEA,AAAO,IAAMjB,QAAQ,GAAG,SAAXA,QAAW,CAACmC,IAAD,EAAOvE,EAAP,EAAWiQ,WAAX,EAA2B;SAC1C1L,IAAI,CAAC1C,MAAL,CAAY,UAAAxB,GAAG,EAAI;QAClB6P,QAAQ,GAAG7P,GAAG,CAACqE,MAAJ,CAAW1E,EAAX,CAAjB;WACOiQ,WAAW,CAAC7N,QAAZ,CAAqB8N,QAArB,CAAP;GAFK,CAAP;CADK;;AAOP9N,QAAQ,CAACgO,UAAT,GAAsB,UAAA/M,GAAG;SAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAAC5B,MAAjB;CAAzB;;AAEA,AAAO,IAAM8O,WAAW,GAAG,SAAdA,WAAc,CAAChM,IAAD,EAAOvE,EAAP,EAAWiQ,WAAX,EAA2B;SAC7C1L,IAAI,CAAC1C,MAAL,CAAY,UAAAxB,GAAG,EAAI;QAClB6P,QAAQ,GAAG7P,GAAG,CAACqE,MAAJ,CAAW1E,EAAX,CAAjB;WAEEkQ,QAAQ,IACRA,QAAQ,CAACzO,MADT,IAEAwO,WAAW,CAACO,KAAZ,CAAkB,UAAAnN,GAAG;aAAI6M,QAAQ,CAAC9N,QAAT,CAAkBiB,GAAlB,CAAJ;KAArB,CAHF;GAFK,CAAP;CADK;;AAWPkN,WAAW,CAACH,UAAZ,GAAyB,UAAA/M,GAAG;SAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAAC5B,MAAjB;CAA5B;;AAEA,AAAO,IAAMgP,KAAK,GAAG,SAARA,KAAQ,CAAClM,IAAD,EAAOvE,EAAP,EAAWiQ,WAAX,EAA2B;SACvC1L,IAAI,CAAC1C,MAAL,CAAY,UAAAxB,GAAG,EAAI;QAClB6P,QAAQ,GAAG7P,GAAG,CAACqE,MAAJ,CAAW1E,EAAX,CAAjB;WACOkQ,QAAQ,KAAKD,WAApB;GAFK,CAAP;CADK;;AAOPQ,KAAK,CAACL,UAAN,GAAmB,UAAA/M,GAAG;SAAI,OAAOA,GAAP,KAAe,WAAnB;CAAtB;;AAEA,AAAO,IAAMqN,MAAM,GAAG,SAATA,MAAS,CAACnM,IAAD,EAAOvE,EAAP,EAAWiQ,WAAX,EAA2B;SACxC1L,IAAI,CAAC1C,MAAL,CAAY,UAAAxB,GAAG,EAAI;QAClB6P,QAAQ,GAAG7P,GAAG,CAACqE,MAAJ,CAAW1E,EAAX,CAAjB,CADwB;;WAGjBkQ,QAAQ,IAAID,WAAnB;GAHK,CAAP;CADK;;AAQPS,MAAM,CAACN,UAAP,GAAoB,UAAA/M,GAAG;SAAIA,GAAG,IAAI,IAAX;CAAvB;;AAEA,AAAO,IAAMsN,OAAO,GAAG,SAAVA,OAAU,CAACpM,IAAD,EAAOvE,EAAP,EAAWiQ,WAAX,EAA2B;aAC/BA,WAAW,IAAI,EADgB;;MAC3C5B,GAD2C;MACtC3O,GADsC;;EAGhD2O,GAAG,GAAG,OAAOA,GAAP,KAAe,QAAf,GAA0BA,GAA1B,GAAgC,CAACuC,QAAvC;EACAlR,GAAG,GAAG,OAAOA,GAAP,KAAe,QAAf,GAA0BA,GAA1B,GAAgCkR,QAAtC;;MAEIvC,GAAG,GAAG3O,GAAV,EAAe;QACPmR,IAAI,GAAGxC,GAAb;IACAA,GAAG,GAAG3O,GAAN;IACAA,GAAG,GAAGmR,IAAN;;;SAGKtM,IAAI,CAAC1C,MAAL,CAAY,UAAAxB,GAAG,EAAI;QAClB6P,QAAQ,GAAG7P,GAAG,CAACqE,MAAJ,CAAW1E,EAAX,CAAjB;WACOkQ,QAAQ,IAAI7B,GAAZ,IAAmB6B,QAAQ,IAAIxQ,GAAtC;GAFK,CAAP;CAZK;;AAkBPiR,OAAO,CAACP,UAAR,GAAqB,UAAA/M,GAAG;SACtB,CAACA,GAAD,IAAS,OAAOA,GAAG,CAAC,CAAD,CAAV,KAAkB,QAAlB,IAA8B,OAAOA,GAAG,CAAC,CAAD,CAAV,KAAkB,QADnC;CAAxB;;;;;;;;;;;;;ACrFAgH,YAAY,CAACyG,OAAb,GAAuB,EAAvB;AAEAvC,UAAU,CAAC,WAAD,EAAc,eAAd,CAAV;AAEA,IAAM/E,WAAS,GAAG;EAChBpK,OAAO,EAAEsK,SAAS,CAACG,OAAV,CACPH,SAAS,CAACqH,KAAV,CAAgB;IACdC,cAAc,EAAEtH,SAAS,CAACS,IADZ;IAEd8G,MAAM,EAAEvH,SAAS,CAACwH;GAFpB,CADO,CADO;EAQhBC,aAAa,EAAEzH,SAAS,CAACS;CAR3B;AAWA,IAAaiH,UAAU,GAAG,SAAbA,UAAa,CAAApK,KAAK,EAAI;EACjCA,KAAK,CAACmF,OAAN,CAAcnK,IAAd,CAAmBmK,SAAnB;CADK;AAIPiF,UAAU,CAACnJ,UAAX,GAAwB,YAAxB;;AAEA,SAASkE,SAAT,CAAiB1J,QAAjB,EAA2B;EACzBiH,SAAS,CAACoB,cAAV,CAAyBtB,WAAzB,EAAoC/G,QAApC,EAA8C,UAA9C,EAA0D,YAA1D;MAGEyH,KAJuB,GAarBzH,QAbqB,CAIvByH,KAJuB;MAKvB3F,IALuB,GAarB9B,QAbqB,CAKvB8B,IALuB;MAMvBwI,QANuB,GAarBtK,QAbqB,CAMvBsK,QANuB;MAOvBjM,WAPuB,GAarB2B,QAbqB,CAOvB3B,WAPuB;MAQVuQ,eARU,GAarB5O,QAbqB,CAQvB6O,WARuB;MASvBH,aATuB,GAarB1O,QAbqB,CASvB0O,aATuB;MAUvBH,cAVuB,GAarBvO,QAbqB,CAUvBuO,cAVuB;MAWdF,OAXc,GAarBrO,QAbqB,CAWvByI,KAXuB,CAWd4F,OAXc;MAYvBtF,QAZuB,GAarB/I,QAbqB,CAYvB+I,QAZuB;MAenB+F,eAAe,GAAGhN,IAAxB;MACMiN,mBAAmB,GAAGzE,QAA5B;;MAEM0E,SAAS,GAAG,SAAZA,SAAY,CAACzR,EAAD,EAAK0L,OAAL,EAAiB;QAC3B9L,MAAM,GAAGkB,WAAW,CAAC4Q,IAAZ,CAAiB,UAAA5P,CAAC;aAAIA,CAAC,CAAC9B,EAAF,KAASA,EAAb;KAAlB,CAAf;;QAEI,CAACJ,MAAL,EAAa;YACL,IAAIa,KAAJ,yDAA2DT,EAA3D,EAAN;;;QAGI2R,YAAY,GAAGC,eAAe,CAClChS,MAAM,CAACiC,MAD2B,EAElCwP,eAAe,IAAI,EAFe,EAGlCC,WAHkC,CAApC;WAMO9F,QAAQ,CAAC,UAAAf,GAAG,EAAI;UACfoH,SAAS,GACb,OAAOnG,OAAP,KAAmB,UAAnB,GAAgCA,OAAO,CAACjB,GAAG,CAACqG,OAAJ,CAAY9Q,EAAZ,CAAD,CAAvC,GAA2D0L,OAD7D,CADqB;;UAKjBoG,gBAAgB,CAACH,YAAY,CAACvB,UAAd,EAA0ByB,SAA1B,CAApB,EAA0D;2BAChBpH,GAAG,CAACqG,OADY;YAC1CiB,MAD0C,gBAC/C/R,EAD+C;YAC/BgS,UAD+B,2CAC/ChS,EAD+C;;kCAGnDyK,GADL;UAEEqG,OAAO,EAAEkB;;;;gCAKRvH,GADL;QAEEqG,OAAO,qBACFrG,GAAG,CAACqG,OADF,sBAEJ9Q,EAFI,EAEC6R,SAFD;;KAfI,EAoBZvD,OAAO,CAACmD,SApBI,CAAf;GAbF;;MAoCMQ,aAAa,GAAG,SAAhBA,aAAgB,CAAAvG,OAAO,EAAI;WACxBF,QAAQ,CAAC,UAAAf,GAAG,EAAI;UACfuH,UAAU,GAAG,OAAOtG,OAAP,KAAmB,UAAnB,GAAgCA,OAAO,CAACjB,GAAD,CAAvC,GAA+CiB,OAAlE,CADqB;;MAIrBpF,MAAM,CAACgB,IAAP,CAAY0K,UAAZ,EAAwBzQ,OAAxB,CAAgC,UAAAvB,EAAE,EAAI;YAC9B6R,SAAS,GAAGG,UAAU,CAAChS,EAAD,CAA5B;YACMJ,MAAM,GAAGkB,WAAW,CAAC4Q,IAAZ,CAAiB,UAAA5P,CAAC;iBAAIA,CAAC,CAAC9B,EAAF,KAASA,EAAb;SAAlB,CAAf;YACM2R,YAAY,GAAGC,eAAe,CAClChS,MAAM,CAACiC,MAD2B,EAElCwP,eAAe,IAAI,EAFe,EAGlCC,WAHkC,CAApC;;YAMIQ,gBAAgB,CAACH,YAAY,CAACvB,UAAd,EAA0ByB,SAA1B,CAApB,EAA0D;iBACjDG,UAAU,CAAChS,EAAD,CAAjB;;OAVJ;gCAeKyK,GADL;QAEEqG,OAAO,EAAEkB;;KApBE,EAsBZ1D,OAAO,CAAC2D,aAtBI,CAAf;GADF;;EA0BAnR,WAAW,CAACS,OAAZ,CAAoB,UAAA3B,MAAM,EAAI;QACpBI,EADoB,GACmCJ,MADnC,CACpBI,EADoB;QAChBC,QADgB,GACmCL,MADnC,CAChBK,QADgB;QACUiS,oBADV,GACmCtS,MADnC,CACNoR,cADM;;IAI5BpR,MAAM,CAACuS,SAAP,GAAmBlS,QAAQ,GACvBmE,eAAe,CACb8N,oBAAoB,KAAK,IAAzB,GAAgC,KAAhC,GAAwC5E,SAD3B,EAEb0D,cAAc,KAAK,IAAnB,GAA0B,KAA1B,GAAkC1D,SAFrB,EAGb,IAHa,CADQ,GAMvB,KANJ,CAJ4B;;IAa5B1N,MAAM,CAAC6R,SAAP,GAAmB,UAAApO,GAAG;aAAIoO,SAAS,CAAC7R,MAAM,CAACI,EAAR,EAAYqD,GAAZ,CAAb;KAAtB,CAb4B;;;;IAiB5BzD,MAAM,CAACqQ,WAAP,GAAqBa,OAAO,CAAC9Q,EAAD,CAA5B;GAjBF,EAhFyB;;;;;uBAyGkBhB,KAAK,CAACuM,OAAN,CAAc,YAAM;QACzD4F,aAAa,IAAI,CAAC7K,MAAM,CAACgB,IAAP,CAAYwJ,OAAZ,EAAqBrP,MAA3C,EAAmD;aAC1C;QACL2Q,YAAY,EAAE7N,IADT;QAEL8N,gBAAgB,EAAEtF;OAFpB;;;QAMIsF,gBAAgB,GAAG,EAAzB;QAEIxT,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACqP,IAAR,CAAa,iBAAb,EAX2D;;QAcvD0C,UAAU,GAAG,SAAbA,UAAa,CAAC/N,IAAD,EAAqB;UAAdlF,KAAc,uEAAN,CAAM;UAClC+S,YAAY,GAAG7N,IAAnB;MAEA6N,YAAY,GAAG9L,MAAM,CAACiM,OAAP,CAAezB,OAAf,EAAwBxR,MAAxB,CACb,UAACkT,aAAD,QAA4C;;YAA3BhO,QAA2B;YAAjByL,WAAiB;;;YAEpCrQ,MAAM,GAAGkB,WAAW,CAAC4Q,IAAZ,CAAiB,UAAA5P,CAAC;iBAAIA,CAAC,CAAC9B,EAAF,KAASwE,QAAb;SAAlB,CAAf;;YAEI,CAAC5E,MAAL,EAAa;iBACJ4S,aAAP;;;YAGEnT,KAAK,KAAK,CAAd,EAAiB;UACfO,MAAM,CAAC2R,eAAP,GAAyBiB,aAAzB;;;YAGIb,YAAY,GAAGC,eAAe,CAClChS,MAAM,CAACiC,MAD2B,EAElCwP,eAAe,IAAI,EAFe,EAGlCC,WAHkC,CAApC;;YAMI,CAACK,YAAL,EAAmB;UACjBpR,OAAO,CAACkS,IAAR,0EACoE7S,MAAM,CAACI,EAD3E;iBAGOwS,aAAP;SAtBwC;;;;QA2B1C5S,MAAM,CAACwS,YAAP,GAAsBT,YAAY,CAChCa,aADgC,EAEhChO,QAFgC,EAGhCyL,WAHgC,EAIhCrQ,MAJgC,CAAlC;eAOOA,MAAM,CAACwS,YAAd;OAnCW,EAqCb7N,IArCa,CAAf,CAHsC;;;;;MA+CtC6N,YAAY,GAAGA,YAAY,CAACzR,GAAb,CAAiB,UAAAN,GAAG,EAAI;QACrCgS,gBAAgB,CAACrQ,IAAjB,CAAsB3B,GAAtB;;YACI,CAACA,GAAG,CAAC+I,OAAT,EAAkB;iBACT/I,GAAP;;;kCAGGA,GADL;UAEE+I,OAAO,EACL/I,GAAG,CAAC+I,OAAJ,IAAe/I,GAAG,CAAC+I,OAAJ,CAAY3H,MAAZ,GAAqB,CAApC,GACI6Q,UAAU,CAACjS,GAAG,CAAC+I,OAAL,EAAc/J,KAAK,GAAG,CAAtB,CADd,GAEIgB,GAAG,CAAC+I;;OAVC,CAAf;aAcOgJ,YAAP;KA7DF;;WAgEO;MACLA,YAAY,EAAEE,UAAU,CAAC/N,IAAD,CADnB;MAEL8N,gBAAgB,EAAhBA;KAFF;GA9EyC,EAkFxC,CACDlB,aADC,EAEDL,OAFC,EAGD5G,KAHC,EAID3F,IAJC,EAKDwI,QALC,EAMDjM,WANC,EAODuQ,eAPC,CAlFwC,CAzGlB;MAyGjBe,YAzGiB,kBAyGjBA,YAzGiB;MAyGHC,gBAzGG,kBAyGHA,gBAzGG;;EAqMzBrT,KAAK,CAACuM,OAAN,CAAc,YAAM;;;QAGZmH,kBAAkB,GAAG5R,WAAW,CAACe,MAAZ,CACzB,UAAAjC,MAAM;aAAI,CAAC0G,MAAM,CAACgB,IAAP,CAAYwJ,OAAZ,EAAqB1O,QAArB,CAA8BxC,MAAM,CAACI,EAArC,CAAL;KADmB,CAA3B,CAHkB;;;IASlB0S,kBAAkB,CAACnR,OAAnB,CAA2B,UAAA3B,MAAM,EAAI;MACnCA,MAAM,CAAC2R,eAAP,GAAyBa,YAAzB;MACAxS,MAAM,CAACwS,YAAP,GAAsBA,YAAtB;KAFF;GATF,EAaG,CAACA,YAAD,EAAetB,OAAf,EAAwBhQ,WAAxB,CAbH;4BAgBK2B,QADL;IAEEgP,SAAS,EAATA,SAFF;IAGEQ,aAAa,EAAbA,aAHF;IAIEV,eAAe,EAAfA,eAJF;IAKEC,mBAAmB,EAAnBA,mBALF;IAMEjN,IAAI,EAAE6N,YANR;IAOErF,QAAQ,EAAEsF;;;;AAId,SAASP,gBAAT,CAA0B1B,UAA1B,EAAsCjS,KAAtC,EAA6C;SACpCiS,UAAU,GAAGA,UAAU,CAACjS,KAAD,CAAb,GAAuB,OAAOA,KAAP,KAAiB,WAAzD;;;AAGF,SAASyT,eAAT,CAAyB/P,MAAzB,EAAiCwP,eAAjC,EAAkDC,WAAlD,EAA+D;SAE3D7J,UAAU,CAAC5F,MAAD,CAAV,IACAwP,eAAe,CAACxP,MAAD,CADf,IAEAyP,WAAW,CAACzP,MAAD,CAFX,IAGAyP,WAAW,CAACtB,IAJd;;;ACjQK,SAAS1N,KAAT,CAAaoC,MAAb,EAAqBH,IAArB,EAA2B;SACzBG,MAAM,CAACpF,MAAP,CAAc,UAACgD,GAAD,EAAM4E,IAAN;WAAe5E,GAAG,GAAG4E,IAArB;GAAd,EAAyC,CAAzC,CAAP;;AAGF,AAAO,SAASyL,OAAT,CAAiBjO,MAAjB,EAAyBH,IAAzB,EAA+B;SAC7B9E,IAAI,CAACmT,KAAL,CAAYtQ,KAAG,CAACoC,MAAD,EAASH,IAAT,CAAH,GAAoBG,MAAM,CAACjD,MAA5B,GAAsC,GAAjD,IAAwD,GAA/D;;AAGF,AAAO,SAASoR,MAAT,CAAgBnO,MAAhB,EAAwB;MACzB2J,GAAG,GAAG3J,MAAM,CAAC,CAAD,CAAN,IAAa,EAAvB;MACIhF,GAAG,GAAGgF,MAAM,CAAC,CAAD,CAAN,IAAa,EAAvB;EAEAA,MAAM,CAACnD,OAAP,CAAe,UAAApD,KAAK,EAAI;IACtBkQ,GAAG,GAAG5O,IAAI,CAAC4O,GAAL,CAASA,GAAT,EAAclQ,KAAd,CAAN;IACAuB,GAAG,GAAGD,IAAI,CAACC,GAAL,CAASA,GAAT,EAAcvB,KAAd,CAAN;GAFF;SAKO,CAACkQ,GAAG,GAAG3O,GAAP,IAAc,CAArB;;AAGF,AAAO,SAASoT,WAAT,CAAqBpO,MAArB,EAA6B;SAC3B,IAAI0K,GAAJ,CAAQ1K,MAAR,EAAgBqO,IAAvB;;AAGF,AAAO,SAASC,KAAT,CAAetO,MAAf,EAAuB;SACrBA,MAAM,CAACjD,MAAd;;;;;;;;;;;ACXF4I,YAAY,CAAC4I,OAAb,GAAuB,EAAvB;AAEA1E,UAAU,CAAC,eAAD,CAAV;AAEA,IAAM/E,WAAS,GAAG;;EAEhBpK,OAAO,EAAEsK,SAAS,CAACG,OAAV,CACPH,SAAS,CAACqH,KAAV,CAAgB;IACdmC,SAAS,EAAExJ,SAAS,CAACyJ,SAAV,CAAoB,CAC7BzJ,SAAS,CAACM,IADmB,EAE7BN,SAAS,CAACiF,MAFmB,EAG7BjF,SAAS,CAACG,OAAV,CACEH,SAAS,CAACyJ,SAAV,CAAoB,CAACzJ,SAAS,CAACM,IAAX,EAAiBN,SAAS,CAACiF,MAA3B,CAApB,CADF,CAH6B,CAApB,CADG;IAQdyE,eAAe,EAAE1J,SAAS,CAACS,IARb;IASdkJ,UAAU,EAAE3J,SAAS,CAACwH;GATxB,CADO,CAFO;EAehBoC,SAAS,EAAE5J,SAAS,CAACM,IAfL;EAgBhBuJ,cAAc,EAAE7J,SAAS,CAACS,IAhBV;EAiBhBiJ,eAAe,EAAE1J,SAAS,CAACS,IAjBX;EAkBhBqJ,YAAY,EAAE9J,SAAS,CAACI;CAlB1B;AAqBA,IAAa2J,UAAU,GAAG,SAAbA,UAAa,CAAAzM,KAAK,EAAI;EACjCA,KAAK,CAAC0M,qBAAN,GAA8B,EAA9B;EACA1M,KAAK,CAACgF,yBAAN,CAAgChK,IAAhC,CAAqCgK,yBAArC;EACAhF,KAAK,CAACiF,6BAAN,CAAoCjK,IAApC,CAAyC,UAAC2R,IAAD,EAAOlR,QAAP,EAAoB;IAC3DkR,IAAI,CAAC3R,IAAL,CAAUS,QAAQ,CAACyI,KAAT,CAAe+H,OAAzB;WACOU,IAAP;GAFF;EAIA3M,KAAK,CAACmF,OAAN,CAAcnK,IAAd,CAAmBmK,SAAnB;CAPK;AAUPsH,UAAU,CAACxL,UAAX,GAAwB,YAAxB;;AAEA,SAAS+D,yBAAT,CAAmClL,WAAnC,QAAwE;MAAbmS,OAAa,QAAtB/H,KAAsB,CAAb+H,OAAa;;;MAIhEW,cAAc,GAAGX,OAAO,CAACtS,GAAR,CAAY,UAAAkT,CAAC;WAAI/S,WAAW,CAAC4Q,IAAZ,CAAiB,UAAApQ,GAAG;aAAIA,GAAG,CAACtB,EAAJ,KAAW6T,CAAf;KAApB,CAAJ;GAAb,CAAvB;MACMC,iBAAiB,GAAGhT,WAAW,CAACe,MAAZ,CAAmB,UAAAP,GAAG;WAAI,CAAC2R,OAAO,CAAC7Q,QAAR,CAAiBd,GAAG,CAACtB,EAArB,CAAL;GAAtB,CAA1B,CALsE;;MAQhE+T,0BAA0B,GAC9BjT,WAAW,CAACsH,SAAZ,CAAsB,UAAAxI,MAAM;WAAIA,MAAM,CAACoU,eAAX;GAA5B,IAA0D,CAD5D;sCAIKF,iBAAiB,CAACG,KAAlB,CAAwB,CAAxB,EAA2BF,0BAA3B,CADL,sBAEKH,cAFL,sBAGKE,iBAAiB,CAACG,KAAlB,CAAwBF,0BAAxB,CAHL;;;AAOF,SAAS5H,SAAT,CAAiB1J,QAAjB,EAA2B;EACzBiH,SAAS,CAACoB,cAAV,CAAyBtB,WAAzB,EAAoC/G,QAApC,EAA8C,UAA9C,EAA0D,YAA1D;MAGEyH,KAJuB,GAgBrBzH,QAhBqB,CAIvByH,KAJuB;MAKvB3F,IALuB,GAgBrB9B,QAhBqB,CAKvB8B,IALuB;MAMvBzD,WANuB,GAgBrB2B,QAhBqB,CAMvB3B,WANuB;MAOvB0M,WAPuB,GAgBrB/K,QAhBqB,CAOvB+K,WAPuB;4BAgBrB/K,QAhBqB,CAQvB6Q,SARuB;MAQvBA,SARuB,oCAQXhP,gBARW;MASvB4P,aATuB,GAgBrBzR,QAhBqB,CASvByR,aATuB;MAUvBd,eAVuB,GAgBrB3Q,QAhBqB,CAUvB2Q,eAVuB;8BAgBrB3Q,QAhBqB,CAWvB+Q,YAXuB;MAWTW,gBAXS,sCAWU,EAXV;MAYvBnN,KAZuB,GAgBrBvE,QAhBqB,CAYvBuE,KAZuB;MAavBe,OAbuB,GAgBrBtF,QAhBqB,CAavBsF,OAbuB;MAcdkL,OAdc,GAgBrBxQ,QAhBqB,CAcvByI,KAduB,CAcd+H,OAdc;MAevBzH,QAfuB,GAgBrB/I,QAhBqB,CAevB+I,QAfuB;EAkBzB1D,iBAAiB,CAACC,OAAD,EAAU,EAAV,EAAc,YAAd,EAA4B,CAAC,WAAD,EAAc,aAAd,CAA5B,CAAjB;EAEAjH,WAAW,CAACS,OAAZ,CAAoB,UAAA3B,MAAM,EAAI;QACpBI,EADoB,GACqCJ,MADrC,CACpBI,EADoB;QAChBC,QADgB,GACqCL,MADrC,CAChBK,QADgB;QACWmU,qBADX,GACqCxU,MADrC,CACNwT,eADM;IAE5BxT,MAAM,CAACyU,SAAP,GAAmBpB,OAAO,CAAC7Q,QAAR,CAAiBpC,EAAjB,CAAnB;IACAJ,MAAM,CAAC0U,YAAP,GAAsBrB,OAAO,CAACsB,OAAR,CAAgBvU,EAAhB,CAAtB;IAEAJ,MAAM,CAAC4U,UAAP,GAAoBvU,QAAQ,GACxBmE,eAAe,CACbgQ,qBAAqB,KAAK,IAA1B,GAAiC,KAAjC,GAAyC9G,SAD5B,EAEb8F,eAAe,KAAK,IAApB,GAA2B,KAA3B,GAAmC9F,SAFtB,EAGb,IAHa,CADS,GAMxB,KANJ;;QAQI1N,MAAM,CAAC4U,UAAX,EAAuB;MACrB5U,MAAM,CAAC6U,aAAP,GAAuB;eAAMA,aAAa,CAAC7U,MAAM,CAACI,EAAR,CAAnB;OAAvB;;;IAGFJ,MAAM,CAACyT,UAAP,GAAoBzT,MAAM,CAACyT,UAAP,IAAqBzT,MAAM,CAAC3B,IAAhD;GAjBF;;MAoBMwW,aAAa,GAAG,SAAhBA,aAAgB,CAACzU,EAAD,EAAK0U,MAAL,EAAgB;WAC7BlJ,QAAQ,CAAC,UAAAf,GAAG,EAAI;UACfkK,cAAc,GAClB,OAAOD,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,CAACzB,OAAO,CAAC7Q,QAAR,CAAiBpC,EAAjB,CAD5C;;UAEI2U,cAAJ,EAAoB;kCAEblK,GADL;UAEEwI,OAAO,+BAAMA,OAAN,IAAejT,EAAf;;;;gCAINyK,GADL;QAEEwI,OAAO,EAAEA,OAAO,CAACpR,MAAR,CAAe,UAAAC,CAAC;iBAAIA,CAAC,KAAK9B,EAAV;SAAhB;;KAXE,EAaZsO,OAAO,CAACmG,aAbI,CAAf;GADF;;EAiBAjH,WAAW,CAACjM,OAAZ;YAEGkB,QAAQ;WAAI,UAAAF,MAAM,EAAI;UACbiS,UADa,GACEjS,MADF,CACbiS,UADa;UAEfI,2BAA2B,GAAGxN,cAAc,CAChD3E,QAAQ,CAACuE,KAAT,CAAe0M,qBADiC,EAEhDnR,MAFgD,EAGhDE,QAHgD,CAAlD;;MAKAF,MAAM,CAACmR,qBAAP,GAA+B,UAAAzN,KAAK,EAAI;eAC/BS,UAAU,CACf;UACE+I,OAAO,EAAE+E,UAAU,GACf,UAAAhR,CAAC,EAAI;YACHA,CAAC,CAACkM,OAAF;YACAnN,MAAM,CAACkS,aAAP;WAHa,GAKfnH,SANN;UAOErI,KAAK,EAAE;YACL3B,MAAM,EAAEkR,UAAU,GAAG,SAAH,GAAelH;WARrC;UAUEqC,KAAK,EAAE;SAXM,EAafiF,2BAbe,EAcf3O,KAde,CAAjB;OADF;KAPO;GAAT,CAyBGxD,QAzBH,CAFF;EA8BAuE,KAAK,CAACqF,UAAN,CAAiBrK,IAAjB,CAAsB,UAAA3B,GAAG,EAAI;IAC3BA,GAAG,CAAC+M,KAAJ,CAAU7L,OAAV,CAAkB,UAAArD,IAAI,EAAI;;MAExBA,IAAI,CAACmW,SAAL,GAAiBnW,IAAI,CAAC0B,MAAL,CAAYyU,SAAZ,IAAyBnW,IAAI,CAAC0B,MAAL,CAAYI,EAAZ,KAAmBK,GAAG,CAACwU,SAAjE,CAFwB;;MAIxB3W,IAAI,CAAC4W,eAAL,GAAuB,CAAC5W,IAAI,CAACmW,SAAN,IAAmBnW,IAAI,CAAC0B,MAAL,CAAYyU,SAAtD,CAJwB;;MAMxBnW,IAAI,CAAC6W,YAAL,GACE,CAAC7W,IAAI,CAACmW,SAAN,IAAmB,CAACnW,IAAI,CAAC4W,eAAzB,IAA4CzU,GAAG,CAAC8I,SADlD;KANF;WASO9I,GAAP;GAVF;MAaM2U,WAAW,GAAGzJ,OAAO,CAAC,YAAM;QAC5B2I,aAAa,IAAI,CAACjB,OAAO,CAACxR,MAA9B,EAAsC;aAC7B8C,IAAP;;;QAGE1F,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACqP,IAAR,CAAa,gBAAb,EAN8B;;;QAU1BqF,qBAAqB,GAAG,SAAxBA,qBAAwB,CAAC1Q,IAAD,EAAO2Q,YAAP,EAAwB;UAC9CxQ,MAAM,GAAG,EAAf;MAEA5D,WAAW,CAACS,OAAZ,CAAoB,UAAA3B,MAAM,EAAI;;YAExBqT,OAAO,CAAC7Q,QAAR,CAAiBxC,MAAM,CAACI,EAAxB,CAAJ,EAAiC;UAC/B0E,MAAM,CAAC9E,MAAM,CAACI,EAAR,CAAN,GAAoBuE,IAAI,CAAC,CAAD,CAAJ,GAAUA,IAAI,CAAC,CAAD,CAAJ,CAAQG,MAAR,CAAe9E,MAAM,CAACI,EAAtB,CAAV,GAAsC,IAA1D;;;;YAIImV,YAAY,GAAG5Q,IAAI,CAAC5D,GAAL,CAAS,UAAAmB,CAAC;iBAAIA,CAAC,CAAC4C,MAAF,CAAS9E,MAAM,CAACI,EAAhB,CAAJ;SAAV,CAArB;YAEIoV,UAAU,GAAGxV,MAAM,CAACsT,SAAxB;;YAEIvO,KAAK,CAACC,OAAN,CAAcwQ,UAAd,CAAJ,EAA+B;cACzBA,UAAU,CAAC3T,MAAX,KAAsB,CAA1B,EAA6B;YAC3BlB,OAAO,CAACqP,IAAR,CAAa;cAAEhQ,MAAM,EAANA;aAAf;kBACM,IAAIa,KAAJ,4GAAN;;;cAIEyU,YAAJ,EAAkB;YAChBE,UAAU,GAAGA,UAAU,CAAC,CAAD,CAAvB;WADF,MAEO;YACLA,UAAU,GAAGA,UAAU,CAAC,CAAD,CAAvB;;;;YAIAC,WAAW,GACb,OAAOD,UAAP,KAAsB,UAAtB,GACIA,UADJ,GAEIjB,gBAAgB,CAACiB,UAAD,CAAhB,IAAgC5B,YAAY,CAAC4B,UAAD,CAHlD;;YAKIC,WAAJ,EAAiB;UACf3Q,MAAM,CAAC9E,MAAM,CAACI,EAAR,CAAN,GAAoBqV,WAAW,CAACF,YAAD,EAAe5Q,IAAf,CAA/B;SADF,MAEO,IAAI6Q,UAAJ,EAAgB;UACrB7U,OAAO,CAACqP,IAAR,CAAa;YAAEhQ,MAAM,EAANA;WAAf;gBACM,IAAIa,KAAJ,iEAAN;SAFK,MAKA;UACLiE,MAAM,CAAC9E,MAAM,CAACI,EAAR,CAAN,GAAoB,IAApB;;OAtCJ;aAyCO0E,MAAP;KA5CF,CAVgC;;;QA0D1B4Q,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAC/Q,IAAD,EAAsC;UAA/BlF,KAA+B,uEAAvB,CAAuB;UAApB6N,UAAoB,uEAAP,EAAO;;;UAEzD7N,KAAK,IAAI4T,OAAO,CAACxR,MAArB,EAA6B;eACpB8C,IAAP;;;UAGIC,QAAQ,GAAGyO,OAAO,CAAC5T,KAAD,CAAxB,CAN6D;;UASzD2V,WAAW,GAAG1B,SAAS,CAAC/O,IAAD,EAAOC,QAAP,CAA3B,CAT6D;;MAY7DwQ,WAAW,GAAG1O,MAAM,CAACiM,OAAP,CAAeyC,WAAf,EAA4BrU,GAA5B,CACZ,iBAAwBZ,KAAxB,EAAkC;;YAAhCwV,UAAgC;YAApBnM,OAAoB;;YAC1BnG,IAAI,gCAAOiK,UAAP,cAAsB1I,QAAtB,cAAkC+Q,UAAlC,GAAV;QAEAnM,OAAO,GAAGkM,gBAAgB,CAAClM,OAAD,EAAU/J,KAAK,GAAG,CAAlB,EAAqB4D,IAArB,CAA1B;YAEMyB,MAAM,GAAGuQ,qBAAqB,CAClC7L,OADkC,EAElC/J,KAAK,GAAG,CAAR,IAAa4T,OAAO,CAACxR,MAFa,CAApC;YAKMpB,GAAG,GAAG;UACV0U,YAAY,EAAE,IADJ;UAEVF,SAAS,EAAErQ,QAFD;UAGV+Q,UAAU,EAAVA,UAHU;UAIV7Q,MAAM,EAANA,MAJU;UAKV0E,OAAO,EAAPA,OALU;UAMV/J,KAAK,EAALA,KANU;UAOVU,KAAK,EAALA,KAPU;UAQVkD,IAAI,EAAJA;SARF;eAWO5C,GAAP;OAtBU,CAAd;aA0BO2U,WAAP;KAtCF,CA1DgC;;;WAoGzBM,gBAAgB,CAAC/Q,IAAD,CAAvB;GApGyB,EAqGxB,CACD2P,aADC,EAEDjB,OAFC,EAGD/I,KAHC,EAID3F,IAJC,EAKDzD,WALC,EAMDqT,gBANC,EAODb,SAPC,CArGwB,CAA3B;4BAgHK7Q,QADL;IAEEgS,aAAa,EAAbA,aAFF;IAGElQ,IAAI,EAAEyQ,WAHR;IAIEQ,cAAc,EAAEjR;;;;AC5RpB,IAAMkR,mBAAmB,GAAG,YAA5B;;;;AAKA,AAAO,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAAC5R,IAAD,EAAOC,IAAP,EAAaS,QAAb,EAA0B;MAChDkD,CAAC,GAAGiO,qBAAqB,CAAC7R,IAAD,EAAOU,QAAP,CAA7B;MACIoR,CAAC,GAAGD,qBAAqB,CAAC5R,IAAD,EAAOS,QAAP,CAA7B,CAFoD;;EAIpDkD,CAAC,GAAGmO,QAAQ,CAACnO,CAAD,CAAZ;EACAkO,CAAC,GAAGC,QAAQ,CAACD,CAAD,CAAZ,CALoD;;;EASpDlO,CAAC,GAAGA,CAAC,CAACtH,KAAF,CAAQqV,mBAAR,EAA6B5T,MAA7B,CAAoCiF,OAApC,CAAJ;EACA8O,CAAC,GAAGA,CAAC,CAACxV,KAAF,CAAQqV,mBAAR,EAA6B5T,MAA7B,CAAoCiF,OAApC,CAAJ,CAVoD;;SAa7CY,CAAC,CAACjG,MAAF,IAAYmU,CAAC,CAACnU,MAArB,EAA6B;QACvBqU,EAAE,GAAGpO,CAAC,CAACqO,KAAF,EAAT;QACIC,EAAE,GAAGJ,CAAC,CAACG,KAAF,EAAT;QAEME,EAAE,GAAG5Q,QAAQ,CAACyQ,EAAD,EAAK,EAAL,CAAnB;QACMI,EAAE,GAAG7Q,QAAQ,CAAC2Q,EAAD,EAAK,EAAL,CAAnB;QAEMG,KAAK,GAAG,CAACF,EAAD,EAAKC,EAAL,EAASrS,IAAT,EAAd,CAP2B;;QAUvBuS,KAAK,CAACD,KAAK,CAAC,CAAD,CAAN,CAAT,EAAqB;UACfL,EAAE,GAAGE,EAAT,EAAa;eACJ,CAAP;;;UAEEA,EAAE,GAAGF,EAAT,EAAa;eACJ,CAAC,CAAR;;;;KAfuB;;;QAqBvBM,KAAK,CAACD,KAAK,CAAC,CAAD,CAAN,CAAT,EAAqB;aACZC,KAAK,CAACH,EAAD,CAAL,GAAY,CAAC,CAAb,GAAiB,CAAxB;KAtByB;;;QA0BvBA,EAAE,GAAGC,EAAT,EAAa;aACJ,CAAP;;;QAEEA,EAAE,GAAGD,EAAT,EAAa;aACJ,CAAC,CAAR;;;;SAIGvO,CAAC,CAACjG,MAAF,GAAWmU,CAAC,CAACnU,MAApB;CA/CK;AAkDP,AAAO,SAAS4U,QAAT,CAAkBvS,IAAlB,EAAwBC,IAAxB,EAA8BS,QAA9B,EAAwC;MACzCkD,CAAC,GAAGiO,qBAAqB,CAAC7R,IAAD,EAAOU,QAAP,CAA7B;MACIoR,CAAC,GAAGD,qBAAqB,CAAC5R,IAAD,EAAOS,QAAP,CAA7B;EAEAkD,CAAC,GAAGA,CAAC,CAAC4O,OAAF,EAAJ;EACAV,CAAC,GAAGA,CAAC,CAACU,OAAF,EAAJ;SAEOC,YAAY,CAAC7O,CAAD,EAAIkO,CAAJ,CAAnB;;AAGF,AAAO,SAASY,KAAT,CAAe1S,IAAf,EAAqBC,IAArB,EAA2BS,QAA3B,EAAqC;MACtCkD,CAAC,GAAGiO,qBAAqB,CAAC7R,IAAD,EAAOU,QAAP,CAA7B;MACIoR,CAAC,GAAGD,qBAAqB,CAAC5R,IAAD,EAAOS,QAAP,CAA7B;SAEO+R,YAAY,CAAC7O,CAAD,EAAIkO,CAAJ,CAAnB;;;AAKF,SAASW,YAAT,CAAsB7O,CAAtB,EAAyBkO,CAAzB,EAA4B;SACnBlO,CAAC,KAAKkO,CAAN,GAAU,CAAV,GAAclO,CAAC,GAAGkO,CAAJ,GAAQ,CAAR,GAAY,CAAC,CAAlC;;;AAGF,SAASD,qBAAT,CAA+BtV,GAA/B,EAAoCmE,QAApC,EAA8C;SACrCnE,GAAG,CAACqE,MAAJ,CAAWF,QAAX,CAAP;;;AAGF,SAASqR,QAAT,CAAkBnO,CAAlB,EAAqB;MACf,OAAOA,CAAP,KAAa,QAAjB,EAA2B;QACrB0O,KAAK,CAAC1O,CAAD,CAAL,IAAYA,CAAC,KAAKkJ,QAAlB,IAA8BlJ,CAAC,KAAK,CAACkJ,QAAzC,EAAmD;aAC1C,EAAP;;;WAEKxS,MAAM,CAACsJ,CAAD,CAAb;;;MAEE,OAAOA,CAAP,KAAa,QAAjB,EAA2B;WAClBA,CAAP;;;SAEK,EAAP;;;;;;;;;AC7EF2C,YAAY,CAACoM,MAAb,GAAsB,EAAtB;AACAzY,aAAa,CAAC0Y,QAAd,GAAyB,cAAzB;AACA1Y,aAAa,CAAC2Y,aAAd,GAA8B,KAA9B;AAEApI,UAAU,CAAC,cAAD,CAAV;AAEA,IAAM/E,WAAS,GAAG;;EAEhBpK,OAAO,EAAEsK,SAAS,CAACG,OAAV,CACPH,SAAS,CAACqH,KAAV,CAAgB;IACd2F,QAAQ,EAAEhN,SAAS,CAACyJ,SAAV,CAAoB,CAACzJ,SAAS,CAACiF,MAAX,EAAmBjF,SAAS,CAACM,IAA7B,CAApB,CADI;IAEd2M,aAAa,EAAEjN,SAAS,CAACS,IAFX;IAGdyM,cAAc,EAAElN,SAAS,CAACS;GAH5B,CADO,CAFO;EAShB0M,SAAS,EAAEnN,SAAS,CAACM,IATL;EAUhB8M,SAAS,EAAEpN,SAAS,CAACI,MAVL;EAWhBiN,aAAa,EAAErN,SAAS,CAACS,IAXT;EAYhByM,cAAc,EAAElN,SAAS,CAACS,IAZV;EAahB6M,gBAAgB,EAAEtN,SAAS,CAACS,IAbZ;EAchB8M,gBAAgB,EAAEvN,SAAS,CAACM,IAdZ;EAehBkN,oBAAoB,EAAExN,SAAS,CAACyN,MAfhB;EAgBhBC,iBAAiB,EAAE1N,SAAS,CAACS,IAhBb;EAiBhBkN,kBAAkB,EAAE3N,SAAS,CAACS;CAjBhC;AAoBA,IAAamN,SAAS,GAAG,SAAZA,SAAY,CAAAtQ,KAAK,EAAI;EAChCA,KAAK,CAACmF,OAAN,CAAcnK,IAAd,CAAmBmK,SAAnB,EADgC;;EAGhCnF,KAAK,CAACuQ,oBAAN,GAA6B,EAA7B;CAHK;AAMPD,SAAS,CAACrP,UAAV,GAAuB,WAAvB;;AAEA,SAASkE,SAAT,CAAiB1J,QAAjB,EAA2B;EACzBiH,SAAS,CAACoB,cAAV,CAAyBtB,WAAzB,EAAoC/G,QAApC,EAA8C,UAA9C,EAA0D,WAA1D;MAGEyH,KAJuB,GAoBrBzH,QApBqB,CAIvByH,KAJuB;MAKvB3F,IALuB,GAoBrB9B,QApBqB,CAKvB8B,IALuB;MAMvBzD,WANuB,GAoBrB2B,QApBqB,CAMvB3B,WANuB;4BAoBrB2B,QApBqB,CAOvBoU,SAPuB;MAOvBA,SAPuB,oCAOXpT,gBAPW;MAQZ+T,aARY,GAoBrB/U,QApBqB,CAQvBqU,SARuB;MASvBC,aATuB,GAoBrBtU,QApBqB,CASvBsU,aATuB;MAUvBH,cAVuB,GAoBrBnU,QApBqB,CAUvBmU,cAVuB;MAWvBQ,iBAXuB,GAoBrB3U,QApBqB,CAWvB2U,iBAXuB;MAYvBC,kBAZuB,GAoBrB5U,QApBqB,CAYvB4U,kBAZuB;MAavBL,gBAbuB,GAoBrBvU,QApBqB,CAavBuU,gBAbuB;8BAoBrBvU,QApBqB,CAcvBwU,gBAduB;MAcvBA,gBAduB,sCAcJ,UAAAzT,CAAC;WAAIA,CAAC,CAACiU,QAAN;GAdG;8BAoBrBhV,QApBqB,CAevByU,oBAfuB;MAevBA,oBAfuB,sCAeAzY,MAAM,CAACC,gBAfP;MAgBvB8O,WAhBuB,GAoBrB/K,QApBqB,CAgBvB+K,WAhBuB;MAiBdiJ,MAjBc,GAoBrBhU,QApBqB,CAiBvByI,KAjBuB,CAiBduL,MAjBc;MAkBvBjL,QAlBuB,GAoBrB/I,QApBqB,CAkBvB+I,QAlBuB;MAmBvBzD,OAnBuB,GAoBrBtF,QApBqB,CAmBvBsF,OAnBuB;EAsBzBD,iBAAiB,CAACC,OAAD,EAAU,CAAC,YAAD,CAAV,EAA0B,WAA1B,EAAuC,EAAvC,CAAjB,CAtByB;;MAyBnB2P,YAAY,GAAG,SAAfA,YAAe,CAAClT,QAAD,EAAWN,IAAX,EAAiByT,KAAjB,EAA2B;WACvCnM,QAAQ,CAAC,UAAAf,GAAG,EAAI;UACbgM,MADa,GACFhM,GADE,CACbgM,MADa;;UAIf7W,MAAM,GAAGkB,WAAW,CAAC4Q,IAAZ,CAAiB,UAAA5P,CAAC;eAAIA,CAAC,CAAC9B,EAAF,KAASwE,QAAb;OAAlB,CAAf;UACQmS,aALa,GAKK/W,MALL,CAKb+W,aALa;;UAQfiB,cAAc,GAAGnB,MAAM,CAAC/E,IAAP,CAAY,UAAA5P,CAAC;eAAIA,CAAC,CAAC9B,EAAF,KAASwE,QAAb;OAAb,CAAvB;UACMqT,aAAa,GAAGpB,MAAM,CAACrO,SAAP,CAAiB,UAAAtG,CAAC;eAAIA,CAAC,CAAC9B,EAAF,KAASwE,QAAb;OAAlB,CAAtB;UACMsT,cAAc,GAAG,OAAO5T,IAAP,KAAgB,WAAhB,IAA+BA,IAAI,KAAK,IAA/D;UAEI6T,SAAS,GAAG,EAAhB,CAZqB;;UAejBtJ,MAAJ;;UAEI,CAACuI,gBAAD,IAAqBW,KAAzB,EAAgC;YAC1BC,cAAJ,EAAoB;UAClBnJ,MAAM,GAAG,QAAT;SADF,MAEO;UACLA,MAAM,GAAG,KAAT;;OAJJ,MAMO;;YAEDoJ,aAAa,KAAKpB,MAAM,CAAChV,MAAP,GAAgB,CAAtC,EAAyC;UACvCgN,MAAM,GAAG,SAAT;SADF,MAEO,IAAImJ,cAAJ,EAAoB;UACzBnJ,MAAM,GAAG,QAAT;SADK,MAEA;UACLA,MAAM,GAAG,SAAT;;OA9BiB;;;UAoCnBA,MAAM,KAAK,QAAX;OACC2I,iBADD;OAECU,cAFD;MAGCH,KAAK,GAAG,CAACN,kBAAJ,GAAyB,IAH/B;MAIEO,cAAc;MACbA,cAAc,CAAC1T,IAAf,IAAuB,CAACyS,aAD1B,IAEE,CAACiB,cAAc,CAAC1T,IAAhB,IAAwByS,aAN3B,CADF,EAQE;QACAlI,MAAM,GAAG,QAAT;;;UAGEA,MAAM,KAAK,SAAf,EAA0B;QACxBsJ,SAAS,GAAG,CACV;UACE/X,EAAE,EAAEwE,QADN;UAEEN,IAAI,EAAE4T,cAAc,GAAG5T,IAAH,GAAUyS;SAHtB,CAAZ;OADF,MAOO,IAAIlI,MAAM,KAAK,KAAf,EAAsB;QAC3BsJ,SAAS,gCACJtB,MADI,IAEP;UACEzW,EAAE,EAAEwE,QADN;UAEEN,IAAI,EAAE4T,cAAc,GAAG5T,IAAH,GAAUyS;SAJzB,EAAT,CAD2B;;QAS3BoB,SAAS,CAACC,MAAV,CAAiB,CAAjB,EAAoBD,SAAS,CAACtW,MAAV,GAAmByV,oBAAvC;OATK,MAUA,IAAIzI,MAAM,KAAK,QAAf,EAAyB;;QAE9BsJ,SAAS,GAAGtB,MAAM,CAAC9V,GAAP,CAAW,UAAAmB,CAAC,EAAI;cACtBA,CAAC,CAAC9B,EAAF,KAASwE,QAAb,EAAuB;sCAEhB1C,CADL;cAEEoC,IAAI,EAAE4T,cAAc,GAAG5T,IAAH,GAAU,CAAC0T,cAAc,CAAC1T;;;;iBAG3CpC,CAAP;SAPU,CAAZ;OAFK,MAWA,IAAI2M,MAAM,KAAK,QAAf,EAAyB;QAC9BsJ,SAAS,GAAGtB,MAAM,CAAC5U,MAAP,CAAc,UAAAC,CAAC;iBAAIA,CAAC,CAAC9B,EAAF,KAASwE,QAAb;SAAf,CAAZ;;;gCAIGiG,GADL;QAEEgM,MAAM,EAAEsB;;KAjFG,EAmFZzJ,OAAO,CAAC2J,YAnFI,CAAf;GADF,CAzByB;;;EAiHzBzK,WAAW,CAACjM,OAAZ;YAEGkB,QAAQ;WAAI,UAAA7C,MAAM,EAAI;UACbK,QADa,GAC0CL,MAD1C,CACbK,QADa;UACaiY,oBADb,GAC0CtY,MAD1C,CACHgX,cADG;UACmC5W,EADnC,GAC0CJ,MAD1C,CACmCI,EADnC;UAGfmY,OAAO,GAAGlY,QAAQ,GACpBmE,eAAe,CACb8T,oBAAoB,KAAK,IAAzB,GAAgC,KAAhC,GAAwC5K,SAD3B,EAEbsJ,cAAc,KAAK,IAAnB,GAA0B,KAA1B,GAAkCtJ,SAFrB,EAGb,IAHa,CADK,GAMpB,KANJ;MAQA1N,MAAM,CAACuY,OAAP,GAAiBA,OAAjB;;UAEIvY,MAAM,CAACuY,OAAX,EAAoB;QAClBvY,MAAM,CAAC8X,YAAP,GAAsB,UAACxT,IAAD,EAAOyT,KAAP;iBACpBD,YAAY,CAAC9X,MAAM,CAACI,EAAR,EAAYkE,IAAZ,EAAkByT,KAAlB,CADQ;SAAtB;;QAGA/X,MAAM,CAACwY,YAAP,GAAsB,YAAM;iBACnB5M,QAAQ,CAAC,UAAAf,GAAG,EAAI;gBACbgM,MADa,GACFhM,GADE,CACbgM,MADa;gBAEfsB,SAAS,GAAGtB,MAAM,CAAC5U,MAAP,CAAc,UAAAC,CAAC;qBAAIA,CAAC,CAAC9B,EAAF,KAASJ,MAAM,CAACI,EAApB;aAAf,CAAlB;sCAEKyK,GADL;cAEEgM,MAAM,EAAEsB;;WALG,EAOZzJ,OAAO,CAAC2J,YAPI,CAAf;SADF;;;UAYII,0BAA0B,GAAGjR,cAAc,CAC/C3E,QAAQ,CAACuE,KAAT,CAAeuQ,oBADgC,EAE/C3X,MAF+C,EAG/C6C,QAH+C,CAAjD;;MAKA7C,MAAM,CAAC2X,oBAAP,GAA8B,UAAAtR,KAAK,EAAI;eAC9BS,UAAU,CACf;UACE+I,OAAO,EAAE0I,OAAO,GACZ,UAAA3U,CAAC,EAAI;YACHA,CAAC,CAACkM,OAAF;YACA9P,MAAM,CAAC8X,YAAP,CACEpK,SADF,EAEE,CAAC0J,gBAAD,IAAqBC,gBAAgB,CAACzT,CAAD,CAFvC;WAHU,GAQZ8J,SATN;UAUErI,KAAK,EAAE;YACL3B,MAAM,EAAE6U,OAAO,GAAG,SAAH,GAAe7K;WAXlC;UAaEqC,KAAK,EAAE;SAdM,EAgBf0I,0BAhBe,EAiBfpS,KAjBe,CAAjB;OADF;;UAsBMqS,UAAU,GAAG7B,MAAM,CAAC/E,IAAP,CAAY,UAAA5P,CAAC;eAAIA,CAAC,CAAC9B,EAAF,KAASA,EAAb;OAAb,CAAnB;MACAJ,MAAM,CAAC2Y,QAAP,GAAkB,CAAC,CAACD,UAApB;MACA1Y,MAAM,CAAC4Y,WAAP,GAAqB/B,MAAM,CAACrO,SAAP,CAAiB,UAAAtG,CAAC;eAAIA,CAAC,CAAC9B,EAAF,KAASA,EAAb;OAAlB,CAArB;MACAJ,MAAM,CAAC6Y,YAAP,GAAsB7Y,MAAM,CAAC2Y,QAAP,GAAkBD,UAAU,CAACpU,IAA7B,GAAoCoJ,SAA1D;KA3DO;GAAT,CA4DG7K,QA5DH,CAFF;MAiEMiW,UAAU,GAAG1Z,KAAK,CAACuM,OAAN,CAAc,YAAM;QACjCwL,aAAa,IAAI,CAACN,MAAM,CAAChV,MAA7B,EAAqC;aAC5B8C,IAAP;;;QAEE1F,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACqM,IAAR,CAAa,eAAb,EALmC;;QAQ/B+L,eAAe,GAAGlC,MAAM,CAAC5U,MAAP,CAAc,UAAAgC,IAAI;aACxC/C,WAAW,CAAC4Q,IAAZ,CAAiB,UAAApQ,GAAG;eAAIA,GAAG,CAACtB,EAAJ,KAAW6D,IAAI,CAAC7D,EAApB;OAApB,CADwC;KAAlB,CAAxB;;QAIM4Y,QAAQ,GAAG,SAAXA,QAAW,CAAArU,IAAI,EAAI;;;;UAIjBsU,UAAU,GAAGhC,SAAS,CAC1BtS,IAD0B,EAE1BoU,eAAe,CAAChY,GAAhB,CAAoB,UAAAkD,IAAI,EAAI;;YAEpBjE,MAAM,GAAGkB,WAAW,CAAC4Q,IAAZ,CAAiB,UAAA5P,CAAC;iBAAIA,CAAC,CAAC9B,EAAF,KAAS6D,IAAI,CAAC7D,EAAlB;SAAlB,CAAf;;YAEI,CAACJ,MAAL,EAAa;gBACL,IAAIa,KAAJ,yDAC6CoD,IAAI,CAAC7D,EADlD,oBAAN;;;YAKM0W,QAVkB,GAUL9W,MAVK,CAUlB8W,QAVkB;;;;;;;;YAmBpBoC,UAAU,GACdrR,UAAU,CAACiP,QAAD,CAAV,IACA,CAACc,aAAa,IAAI,EAAlB,EAAsBd,QAAtB,CADA,IAEAI,SAAS,CAACJ,QAAD,CAHX;;YAKI,CAACoC,UAAL,EAAiB;gBACT,IAAIrY,KAAJ,4DACgDiW,QADhD,2BACyE7S,IAAI,CAAC7D,EAD9E,QAAN;SAzBwB;;;;eAgCnB,UAAC0H,CAAD,EAAIkO,CAAJ;iBAAUkD,UAAU,CAACpR,CAAD,EAAIkO,CAAJ,EAAO/R,IAAI,CAAC7D,EAAZ,CAApB;SAAP;OAhCF,CAF0B;MAqC1B2Y,eAAe,CAAChY,GAAhB,CAAoB,UAAAkD,IAAI,EAAI;;YAEpBjE,MAAM,GAAGkB,WAAW,CAAC4Q,IAAZ,CAAiB,UAAA5P,CAAC;iBAAIA,CAAC,CAAC9B,EAAF,KAAS6D,IAAI,CAAC7D,EAAlB;SAAlB,CAAf;;YAEIJ,MAAM,IAAIA,MAAM,CAACmZ,YAArB,EAAmC;iBAC1BlV,IAAI,CAACK,IAAZ;;;eAGK,CAACL,IAAI,CAACK,IAAb;OARF,CArC0B,CAA5B,CAJuB;;MAsDvB2U,UAAU,CAACtX,OAAX,CAAmB,UAAAlB,GAAG,EAAI;YACpB,CAACA,GAAG,CAAC+I,OAAL,IAAgB/I,GAAG,CAAC+I,OAAJ,CAAY3H,MAAZ,IAAsB,CAA1C,EAA6C;;;;QAG7CpB,GAAG,CAAC+I,OAAJ,GAAcwP,QAAQ,CAACvY,GAAG,CAAC+I,OAAL,CAAtB;OAJF;aAOOyP,UAAP;KA7DF;;QAgEIha,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACsM,OAAR,CAAgB,eAAhB;WAEK+L,QAAQ,CAACrU,IAAD,CAAf;GA/EiB,EAgFhB,CACDwS,aADC,EAEDN,MAFC,EAGDvM,KAHC,EAID3F,IAJC,EAKDzD,WALC,EAMD+V,SANC,EAODW,aAPC,CAhFgB,CAAnB;4BA2FK/U,QADL;IAEEiV,YAAY,EAAZA,YAFF;IAGEnT,IAAI,EAAEmU,UAHR;IAIEM,aAAa,EAAEzU;;;;ACzTnB8F,YAAY,CAAC4O,QAAb,GAAwB,EAAxB;AACA5O,YAAY,CAAC6O,SAAb,GAAyB,CAAzB;AAEA3K,UAAU,CAAC,YAAD,EAAe,gBAAf,CAAV;AAEA,IAAM/E,WAAS,GAAG;;EAEhB2P,gBAAgB,EAAEzP,SAAS,CAACS,IAFZ;EAGhByE,oBAAoB,EAAElF,SAAS,CAACS;CAHlC;AAMA,IAAaiP,aAAa,GAAG,SAAhBA,aAAgB,CAAApS,KAAK,EAAI;EACpCA,KAAK,CAACmF,OAAN,CAAcnK,IAAd,CAAmBmK,SAAnB;CADK;AAIPiN,aAAa,CAACnR,UAAd,GAA2B,eAA3B;;AAEA,SAASkE,SAAT,CAAiB1J,QAAjB,EAA2B;EACzBiH,SAAS,CAACoB,cAAV,CAAyBtB,WAAzB,EAAoC/G,QAApC,EAA8C,UAA9C,EAA0D,eAA1D;MAGEgH,IAJuB,GAgBrBhH,QAhBqB,CAIvBgH,IAJuB;MAKvBlF,IALuB,GAgBrB9B,QAhBqB,CAKvB8B,IALuB;MAMvB4U,gBANuB,GAgBrB1W,QAhBqB,CAMvB0W,gBANuB;MAOvBE,4BAPuB,GAgBrB5W,QAhBqB,CAOvB4W,4BAPuB;8BAgBrB5W,QAhBqB,CAQvBkG,iBARuB;MAQvBA,iBARuB,sCAQH,UARG;MASvBuB,KATuB,GAgBrBzH,QAhBqB,CASvByH,KATuB;MAUvBnC,OAVuB,GAgBrBtF,QAhBqB,CAUvBsF,OAVuB;MAWZuR,aAXY,GAgBrB7W,QAhBqB,CAWvB8W,SAXuB;8BAgBrB9W,QAhBqB,CAYvBmM,oBAZuB;MAYvBA,oBAZuB,sCAYA,IAZA;8BAgBrBnM,QAhBqB,CAavBoG,aAbuB;MAavBA,aAbuB,sCAaP,IAbO;wBAgBrBpG,QAhBqB,CAcvByI,KAduB;MAcd+N,QAdc,mBAcdA,QAdc;MAcJC,SAdI,mBAcJA,SAdI;MAcOpI,OAdP,mBAcOA,OAdP;MAcgBmC,OAdhB,mBAcgBA,OAdhB;MAcyBwD,MAdzB,mBAcyBA,MAdzB;MAciC7N,QAdjC,mBAciCA,QAdjC;MAevB4C,QAfuB,GAgBrB/I,QAhBqB,CAevB+I,QAfuB;EAkBzB1D,iBAAiB,CACfC,OADe,EAEf,CAAC,YAAD,EAAe,YAAf,EAA6B,WAA7B,EAA0C,aAA1C,CAFe,EAGf,eAHe,EAIf,EAJe,CAAjB;MAOMyR,MAAM,GAAGL,gBAAgB,GAAG,IAAH,GAAU1P,IAAzC;MAEMgQ,qBAAqB,GAAGza,KAAK,CAAC6M,MAAN,EAA9B,CA3ByB;;MA8BnB6N,+BAA+B,GAAG1a,KAAK,CAAC6M,MAAN,EAAxC;EACA6N,+BAA+B,CAAC3N,OAAhC,GAA0CsN,4BAA1C;EAEA1a,mBAAmB,CAAC,YAAM;QAEtB8a,qBAAqB,CAAC1N,OAAtB,IACA,CAAC2N,+BAA+B,CAAC3N,OAFnC,EAGE;MACAP,QAAQ,CACN,UAAAf,GAAG;kCACEA,GADF;UAEDyO,SAAS,EAAE;;OAHP,EAKN5K,OAAO,CAACqL,UALF,CAAR;;;IAQFF,qBAAqB,CAAC1N,OAAtB,GAAgC,IAAhC;GAbiB,EAchB,CAACP,QAAD,EAAWgO,MAAX,EAAmB1I,OAAnB,EAA4BmC,OAA5B,EAAqCwD,MAArC,CAdgB,CAAnB;MAgBM8C,SAAS,GAAGJ,gBAAgB,GAC9BG,aAD8B,GAE9B7Z,IAAI,CAACmG,IAAL,CAAUrB,IAAI,CAAC9C,MAAL,GAAcwX,QAAxB,CAFJ;MAIMW,WAAW,GAAG5a,KAAK,CAACuM,OAAN,CAClB;WAAOgO,SAAS,GAAG,CAAZ,GAAgB,mBAAI,IAAI5U,KAAJ,CAAU4U,SAAV,CAAJ,EAA0B5Y,GAA1B,CAA8B,UAACmB,CAAD,EAAIkC,CAAJ;aAAUA,CAAV;KAA9B,CAAhB,GAA6D,EAApE;GADkB,EAElB,CAACuV,SAAD,CAFkB,CAApB;MAKMM,IAAI,GAAG7a,KAAK,CAACuM,OAAN,CAAc,YAAM;QAC3BsO,IAAJ;;QAEIV,gBAAJ,EAAsB;MACpBU,IAAI,GAAGtV,IAAP;KADF,MAEO;UACD1F,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACqP,IAAR,CAAa,SAAb;UAEIkK,SAAS,GAAGb,QAAQ,GAAGC,SAA7B;UACMa,OAAO,GAAGD,SAAS,GAAGb,QAA5B;MAEAY,IAAI,GAAGtV,IAAI,CAAC0P,KAAL,CAAW6F,SAAX,EAAsBC,OAAtB,CAAP;;;QAGEnL,oBAAJ,EAA0B;aACjBiL,IAAP;;;WAGKnR,UAAU,CAACmR,IAAD,EAAO;MAAElR,iBAAiB,EAAjBA,iBAAF;MAAqBC,QAAQ,EAARA,QAArB;MAA+BC,aAAa,EAAbA;KAAtC,CAAjB;GAnBW,EAoBV,CACDqB,KADC,EAEDrB,aAFC,EAGDD,QAHC,EAIDD,iBAJC,EAKDwQ,gBALC,EAMDD,SANC,EAODD,QAPC,EAQDrK,oBARC,EASDrK,IATC,CApBU,CAAb;MAgCMyV,eAAe,GAAGd,SAAS,GAAG,CAApC;MACMe,WAAW,GAAGV,SAAS,KAAK,CAAC,CAAf,IAAoBL,SAAS,GAAGK,SAAS,GAAG,CAAhE;MAEMW,QAAQ,GAAGlb,KAAK,CAACyM,WAAN,CACf,UAAAC,OAAO,EAAI;QACL7M,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IAA0CmL,KAA9C,EACE3J,OAAO,CAACqP,IAAR,CAAa,UAAb;WACKpE,QAAQ,CAAC,UAAAf,GAAG,EAAI;UACf0P,YAAY,GAChB,OAAOzO,OAAP,KAAmB,UAAnB,GAAgCA,OAAO,CAACjB,GAAG,CAACyO,SAAL,CAAvC,GAAyDxN,OAD3D;;UAGIyO,YAAY,GAAG,CAAf,IAAoBA,YAAY,GAAGZ,SAAS,GAAG,CAAnD,EAAsD;eAC7C9O,GAAP;;;gCAGGA,GADL;QAEEyO,SAAS,EAAEiB;;KATA,EAWZ7L,OAAO,CAACqL,UAXI,CAAf;GAJa,EAiBf,CAACzP,KAAD,EAAQqP,SAAR,EAAmB/N,QAAnB,CAjBe,CAAjB;MAoBM4O,YAAY,GAAGpb,KAAK,CAACyM,WAAN,CAAkB,YAAM;WACpCyO,QAAQ,CAAC,UAAAzP,GAAG;aAAIA,GAAG,GAAG,CAAV;KAAJ,CAAf;GADmB,EAElB,CAACyP,QAAD,CAFkB,CAArB;MAIMG,QAAQ,GAAGrb,KAAK,CAACyM,WAAN,CAAkB,YAAM;WAChCyO,QAAQ,CAAC,UAAAzP,GAAG;aAAIA,GAAG,GAAG,CAAV;KAAJ,CAAf;GADe,EAEd,CAACyP,QAAD,CAFc,CAAjB;MAIMI,WAAW,GAAGtb,KAAK,CAACyM,WAAN,CAClB,UAAAwN,QAAQ,EAAI;IACVzN,QAAQ,CAAC,UAAAf,GAAG,EAAI;UACR8P,WAAW,GAAG9P,GAAG,CAACwO,QAAJ,GAAexO,GAAG,CAACyO,SAAvC;UACMA,SAAS,GAAGzZ,IAAI,CAAC+a,KAAL,CAAWD,WAAW,GAAGtB,QAAzB,CAAlB;gCAEKxO,GADL;QAEEyO,SAAS,EAATA,SAFF;QAGED,QAAQ,EAARA;;KANI,EAQL3K,OAAO,CAACmM,cARH,CAAR;GAFgB,EAYlB,CAACjP,QAAD,CAZkB,CAApB;4BAgBK/I,QADL;IAEEmX,WAAW,EAAXA,WAFF;IAGEL,SAAS,EAATA,SAHF;IAIEM,IAAI,EAAJA,IAJF;IAKEG,eAAe,EAAfA,eALF;IAMEC,WAAW,EAAXA,WANF;IAOEC,QAAQ,EAARA,QAPF;IAQEE,YAAY,EAAZA,YARF;IASEC,QAAQ,EAARA,QATF;IAUEC,WAAW,EAAXA,WAVF;IAWEpB,SAAS,EAATA,SAXF;IAYED,QAAQ,EAARA;;;;ACjKJ5O,YAAY,CAACqQ,gBAAb,GAAgC,EAAhC;AAEAnM,UAAU,CAAC,mBAAD,EAAsB,sBAAtB,CAAV;AAEA,IAAM/E,WAAS,GAAG;EAChBmR,oBAAoB,EAAEjR,SAAS,CAACiF;CADlC;AAIA,IAAaiM,YAAY,GAAG,SAAfA,YAAe,CAAA5T,KAAK,EAAI;EACnCA,KAAK,CAAC6T,yBAAN,GAAkC,EAAlC;EACA7T,KAAK,CAAC8T,6BAAN,GAAsC,EAAtC;EACA9T,KAAK,CAACoF,OAAN,CAAcpK,IAAd,CAAmBoK,OAAnB;EACApF,KAAK,CAACmF,OAAN,CAAcnK,IAAd,CAAmBmK,SAAnB;CAJK;AAOPyO,YAAY,CAAC3S,UAAb,GAA0B,cAA1B;;AAEA,SAASmE,OAAT,CAAiB7H,IAAjB,EAAuB9B,QAAvB,EAAiC;EAC/BiH,SAAS,CAACoB,cAAV,CAAyBtB,WAAzB,EAAoC/G,QAApC,EAA8C,UAA9C,EAA0D,cAA1D;MAGWiY,gBAJoB,GAK3BjY,QAL2B,CAI7ByI,KAJ6B,CAIpBwP,gBAJoB;EAO/BjY,QAAQ,CAACsY,gBAAT,GAA4B/b,KAAK,CAACuM,OAAN,CAAc,YAAM;QACxCwP,gBAAgB,GAAG,EAAzB;IACAxW,IAAI,CAAChD,OAAL,CAAa,UAAAlB,GAAG,EAAI;UACdA,GAAG,CAAC0U,YAAR,EAAsB;YACdiG,WAAW,GAAG3a,GAAG,CAAC+I,OAAJ,CAAYzI,GAAZ,CAAgB,UAAAN,GAAG;iBAAIA,GAAG,CAAC4C,IAAR;SAAnB,CAApB;QACA5C,GAAG,CAAC4a,UAAJ,GAAiBD,WAAW,CAACxK,KAAZ,CAAkB,UAAAvN,IAAI;iBACrCyX,gBAAgB,CAACtY,QAAjB,CAA0Ba,IAAI,CAAChB,IAAL,CAAU,GAAV,CAA1B,CADqC;SAAtB,CAAjB;OAFF,MAKO;QACL5B,GAAG,CAAC4a,UAAJ,GAAiBP,gBAAgB,CAACtY,QAAjB,CAA0B/B,GAAG,CAAC4C,IAAJ,CAAShB,IAAT,CAAc,GAAd,CAA1B,CAAjB;;;UAEE5B,GAAG,CAAC4a,UAAR,EAAoB;QAClBF,gBAAgB,CAAC/Y,IAAjB,CAAsB3B,GAAtB;;KAVJ;WAcO0a,gBAAP;GAhB0B,EAiBzB,CAACxW,IAAD,EAAOmW,gBAAP,CAjByB,CAA5B;SAmBOnW,IAAP;;;AAGF,SAAS4H,SAAT,CAAiB1J,QAAjB,EAA2B;EACzBiH,SAAS,CAACoB,cAAV,CAAyBtB,WAAzB,EAAoC/G,QAApC,EAA8C,UAA9C,EAA0D,cAA1D;MAGEuE,KAJuB,GAYrBvE,QAZqB,CAIvBuE,KAJuB;8BAYrBvE,QAZqB,CAKvBkY,oBALuB;MAKvBA,oBALuB,sCAKA,YALA;MAMvBO,oCANuB,GAYrBzY,QAZqB,CAMvByY,oCANuB;MAOvBnT,OAPuB,GAYrBtF,QAZqB,CAOvBsF,OAPuB;MAQvBgF,QARuB,GAYrBtK,QAZqB,CAQvBsK,QARuB;MASvBtD,IATuB,GAYrBhH,QAZqB,CASvBgH,IATuB;MAUdiR,gBAVc,GAYrBjY,QAZqB,CAUvByI,KAVuB,CAUdwP,gBAVc;MAWvBlP,QAXuB,GAYrB/I,QAZqB,CAWvB+I,QAXuB;EAczB1D,iBAAiB,CACfC,OADe,EAEf,CAAC,YAAD,EAAe,YAAf,EAA6B,WAA7B,CAFe,EAGf,cAHe,EAIf,EAJe,CAAjB;MAOMoT,YAAY,GAAGpO,QAAQ,CAACpM,GAAT,CAAa,UAAAmB,CAAC;WAAIA,CAAC,CAACmB,IAAF,CAAOhB,IAAP,CAAY,GAAZ,CAAJ;GAAd,CAArB;MAEImZ,iBAAiB,GAAG,CAAC,CAACD,YAAY,CAAC1Z,MAAf,IAAyB,CAAC,CAACiZ,gBAAgB,CAACjZ,MAApE;;MAEI2Z,iBAAJ,EAAuB;QACjBD,YAAY,CAAC9Z,IAAb,CAAkB,UAAAS,CAAC;aAAI,CAAC4Y,gBAAgB,CAACtY,QAAjB,CAA0BN,CAA1B,CAAL;KAAnB,CAAJ,EAA2D;MACzDsZ,iBAAiB,GAAG,KAApB;;;;MAIEC,uBAAuB,GAAGrc,KAAK,CAAC6M,MAAN,EAAhC,CA/ByB;;MAkCnByP,uCAAuC,GAAGtc,KAAK,CAAC6M,MAAN,EAAhD;EACAyP,uCAAuC,CAACvP,OAAxC,GAAkDmP,oCAAlD;EAEAvc,mBAAmB,CAAC,YAAM;QAEtB0c,uBAAuB,CAACtP,OAAxB,IACA,CAACuP,uCAAuC,CAACvP,OAF3C,EAGE;MACAP,QAAQ,CACN,UAAAf,GAAG;kCACEA,GADF;UAEDiQ,gBAAgB,EAAE;;OAHd,EAKNpM,OAAO,CAACqL,UALF,CAAR;;;IAQF0B,uBAAuB,CAACtP,OAAxB,GAAkC,IAAlC;GAbiB,EAchB,CAACP,QAAD,EAAW/B,IAAX,CAdgB,CAAnB;;MAgBM8R,oBAAoB,GAAG,SAAvBA,oBAAuB,CAAAvM,GAAG,EAAI;IAClCxD,QAAQ,CAAC,UAAAf,GAAG,EAAI;UACR+Q,SAAS,GAAG,OAAOxM,GAAP,KAAe,WAAf,GAA6BA,GAA7B,GAAmC,CAACoM,iBAAtD;gCAEK3Q,GADL;QAEEiQ,gBAAgB,EAAEc,SAAS,GAAGL,YAAH,GAAkB;;KAJzC,EAML7M,OAAO,CAACiN,oBANH,CAAR;GADF;;MAUME,eAAe,GAAG,SAAlBA,eAAkB,CAACf,gBAAD,EAAmBzX,IAAnB,EAA4B;QAC5CiK,UAAU,GAAGjK,IAAI,CAACgR,KAAL,CAAW,CAAX,EAAchR,IAAI,CAACxB,MAAL,GAAc,CAA5B,CAAnB;QACMia,SAAS,GAAGxO,UAAU,CAACjL,IAAX,CAAgB,GAAhB,CAAlB;QACM0Z,QAAQ,GACZR,YAAY,CAACtZ,MAAb,CAAoB,UAAA+Z,OAAO,EAAI;UACvB3Y,IAAI,GAAG2Y,OAAb;aAEE3Y,IAAI,KAAKyY,SAAT,IACAzY,IAAI,CAAC4Y,UAAL,CAAgBH,SAAhB,CADA,IAEA,CAAChB,gBAAgB,CAACoB,GAAjB,CAAqB7Y,IAArB,CAHH;KAFF,EAOGxB,MAPH,KAOc,CARhB;;QASIka,QAAJ,EAAc;MACZjB,gBAAgB,CAACrL,GAAjB,CAAqBqM,SAArB;KADF,MAEO;MACLhB,gBAAgB,CAACpL,MAAjB,CAAwBoM,SAAxB;;;QAEExO,UAAU,CAACzL,MAAX,GAAoB,CAAxB,EAA2Bga,eAAe,CAACf,gBAAD,EAAmBxN,UAAnB,CAAf;GAjB7B;;MAoBM6O,iBAAiB,GAAG,SAApBA,iBAAoB,CAAC9Y,IAAD,EAAO+L,GAAP,EAAe;QACjChG,GAAG,GAAG/F,IAAI,CAAChB,IAAL,CAAU,GAAV,CAAZ;QACM+Z,iBAAiB,GAAG,CAAChT,GAAD,EAAM,GAAN,EAAW/G,IAAX,CAAgB,EAAhB,CAA1B;WAEOuJ,QAAQ,CAAC,UAAAf,GAAG,EAAI;;;;UAIfwE,MAAM,GAAGxE,GAAG,CAACiQ,gBAAJ,CAAqBtY,QAArB,CAA8B4G,GAA9B,CAAf;UACMkG,WAAW,GAAG,OAAOF,GAAP,KAAe,WAAf,GAA6BA,GAA7B,GAAmC,CAACC,MAAxD;UACIgN,eAAe,GAAG,IAAI7M,GAAJ,CAAQ3E,GAAG,CAACiQ,gBAAZ,CAAtB;;UAEI,CAACzL,MAAD,IAAWC,WAAf,EAA4B;QAC1BiM,YAAY,CAAC5Z,OAAb,CAAqB,UAAAqa,OAAO,EAAI;cAC1BA,OAAO,KAAK5S,GAAZ,IAAmB4S,OAAO,CAACC,UAAR,CAAmBG,iBAAnB,CAAvB,EAA8D;YAC5DC,eAAe,CAAC5M,GAAhB,CAAoBuM,OAApB;;SAFJ;OADF,MAMO,IAAI3M,MAAM,IAAI,CAACC,WAAf,EAA4B;QACjCiM,YAAY,CAAC5Z,OAAb,CAAqB,UAAAqa,OAAO,EAAI;cAC1BA,OAAO,KAAK5S,GAAZ,IAAmB4S,OAAO,CAACC,UAAR,CAAmBG,iBAAnB,CAAvB,EAA8D;YAC5DC,eAAe,CAAC3M,MAAhB,CAAuBsM,OAAvB;;SAFJ;OADK,MAMA;eACEnR,GAAP;OArBmB;;;;UA0BjBxH,IAAI,CAACxB,MAAL,GAAc,CAAlB,EAAqBga,eAAe,CAACQ,eAAD,EAAkBhZ,IAAlB,CAAf;gCAGhBwH,GADL;QAEEiQ,gBAAgB,qBAAMuB,eAAe,CAACvX,MAAhB,EAAN;;KA9BL,EAgCZ4J,OAAO,CAACyN,iBAhCI,CAAf;GAJF;;MAuCMG,mCAAmC,GAAG9U,cAAc,CACxD3E,QAAQ,CAACuE,KAAT,CAAe8T,6BADyC,EAExDrY,QAFwD,CAA1D;;MAIMqY,6BAA6B,GAAG,SAAhCA,6BAAgC,CAAA7U,KAAK,EAAI;WACtCS,UAAU,CACf;MACEyV,QAAQ,EAAE,kBAAA3Y,CAAC,EAAI;QACb+X,oBAAoB,CAAC/X,CAAC,CAAC4Y,MAAF,CAASC,OAAV,CAApB;OAFJ;MAIEpX,KAAK,EAAE;QACL3B,MAAM,EAAE;OALZ;MAOE+Y,OAAO,EAAEjB,iBAPX;MAQEzL,KAAK,EAAE;KATM,EAWfuM,mCAXe,EAYfjW,KAZe,CAAjB;GADF;;EAiBAe,KAAK,CAACqF,UAAN,CAAiBrK,IAAjB,CAAsB,UAAC3B,GAAD,EAAMoC,QAAN,EAAmB;QACjC6Z,+BAA+B,GAAGlV,cAAc,CACpD3E,QAAQ,CAACuE,KAAT,CAAe6T,yBADqC,EAEpDxa,GAFoD,EAGpDoC,QAHoD,CAAtD,CADuC;;QAOnCpC,GAAG,CAAC0U,YAAR,EAAsB;UACdiG,WAAW,GAAG3a,GAAG,CAAC+I,OAAJ,CAAYzI,GAAZ,CAAgB,UAAAN,GAAG;eAAIA,GAAG,CAAC4C,IAAR;OAAnB,CAApB;;MACA5C,GAAG,CAAC0b,iBAAJ,GAAwB,UAAA/M,GAAG,EAAI;QAC7BA,GAAG,GAAG,OAAOA,GAAP,KAAe,WAAf,GAA6BA,GAA7B,GAAmC,CAAC3O,GAAG,CAAC4a,UAA9C;QACAD,WAAW,CAACzZ,OAAZ,CAAoB,UAAA0B,IAAI,EAAI;UAC1B8Y,iBAAiB,CAAC9Y,IAAD,EAAO+L,GAAP,CAAjB;SADF;OAFF;;MAMA3O,GAAG,CAACwa,yBAAJ,GAAgC,UAAA5U,KAAK,EAAI;YACnCoW,OAAO,GAAG,KAAd;;YAEIhc,GAAG,CAAC6I,QAAJ,IAAgB7I,GAAG,CAAC6I,QAAJ,CAAayR,oBAAb,CAApB,EAAwD;UACtD0B,OAAO,GAAG,IAAV;SADF,MAEO;UACLA,OAAO,GAAGhc,GAAG,CAAC4a,UAAd;;;eAGKvU,UAAU,CACf;UACEyV,QAAQ,EAAE,kBAAA3Y,CAAC,EAAI;YACbnD,GAAG,CAAC0b,iBAAJ,CAAsBvY,CAAC,CAAC4Y,MAAF,CAASC,OAA/B;WAFJ;UAIEpX,KAAK,EAAE;YACL3B,MAAM,EAAE;WALZ;UAOE+Y,OAAO,EAAPA,OAPF;UAQE1M,KAAK,EAAE;SATM,EAWf2M,+BAXe,EAYfrW,KAZe,CAAjB;OATF;KARF,MAgCO;MACL5F,GAAG,CAAC0b,iBAAJ,GAAwB,UAAA/M,GAAG;eAAI+M,iBAAiB,CAAC1b,GAAG,CAAC4C,IAAL,EAAW+L,GAAX,CAArB;OAA3B;;MACA3O,GAAG,CAACwa,yBAAJ,GAAgC,UAAA5U,KAAK,EAAI;YACnCoW,OAAO,GAAG,KAAd;;YAEIhc,GAAG,CAAC6I,QAAJ,IAAgB7I,GAAG,CAAC6I,QAAJ,CAAayR,oBAAb,CAApB,EAAwD;UACtD0B,OAAO,GAAG,IAAV;SADF,MAEO;UACLA,OAAO,GAAGhc,GAAG,CAAC4a,UAAd;;;eAGKvU,UAAU,CACf;UACEyV,QAAQ,EAAE,kBAAA3Y,CAAC,EAAI;YACbnD,GAAG,CAAC0b,iBAAJ,CAAsBvY,CAAC,CAAC4Y,MAAF,CAASC,OAA/B;WAFJ;UAIEpX,KAAK,EAAE;YACL3B,MAAM,EAAE;WALZ;UAOE+Y,OAAO,EAAPA,OAPF;UAQE1M,KAAK,EAAE;SATM,EAWf2M,+BAXe,EAYfrW,KAZe,CAAjB;OATF;;;WA0BK5F,GAAP;GAnEF;4BAuEKoC,QADL;IAEEsZ,iBAAiB,EAAjBA,iBAFF;IAGER,oBAAoB,EAApBA,oBAHF;IAIET,6BAA6B,EAA7BA,6BAJF;IAKEM,iBAAiB,EAAjBA;;;;AC9QJ/Q,YAAY,CAACkS,QAAb,GAAwB,EAAxB;AAEAhO,UAAU,CAAC,aAAD,EAAgB,cAAhB,CAAV;AAEA,IAAM/E,WAAS,GAAG;EAChBgT,uBAAuB,EAAE9S,SAAS,CAACM;CADrC;AAIA,IAAayS,WAAW,GAAG,SAAdA,WAAc,CAAAzV,KAAK,EAAI;EAClCA,KAAK,CAACmF,OAAN,CAAcnK,IAAd,CAAmBmK,SAAnB;CADK;AAIPsQ,WAAW,CAACxU,UAAZ,GAAyB,aAAzB;;AAEA,SAASkE,SAAT,CAAiB1J,QAAjB,EAA2B;EACzBiH,SAAS,CAACoB,cAAV,CAAyBtB,WAAzB,EAAoC/G,QAApC,EAA8C,UAA9C,EAA0D,aAA1D;MAGEuE,KAJuB,GASrBvE,QATqB,CAIvBuE,KAJuB;MAKvBzC,IALuB,GASrB9B,QATqB,CAKvB8B,IALuB;MAMvBiY,uBANuB,GASrB/Z,QATqB,CAMvB+Z,uBANuB;MAOdD,QAPc,GASrB9Z,QATqB,CAOvByI,KAPuB,CAOdqR,QAPc;MAQvB/Q,QARuB,GASrB/I,QATqB,CAQvB+I,QARuB;MAWnBkR,WAAW,GAAG1d,KAAK,CAACyM,WAAN,CAClB,UAACxI,IAAD,EAAOyI,OAAP,EAAiD;QAAjC+C,MAAiC,uEAAxBH,OAAO,CAACoO,WAAgB;QACzCC,OAAO,GAAG1Z,IAAI,CAAChB,IAAL,CAAU,GAAV,CAAhB;WACOuJ,QAAQ,CAAC,UAAAf,GAAG,EAAI;gCAEhBA,GADL;QAEE8R,QAAQ,qBACH9R,GAAG,CAAC8R,QADD,sBAELI,OAFK,EAGJ,OAAOjR,OAAP,KAAmB,UAAnB,GACIA,OAAO,CAACjB,GAAG,CAAC8R,QAAJ,CAAaI,OAAb,CAAD,CADX,GAEIjR,OALA;;KAHG,EAWZ+C,MAXY,CAAf;GAHgB,EAgBlB,CAACjD,QAAD,CAhBkB,CAApB;MAmBMoR,YAAY,GAAG5d,KAAK,CAACyM,WAAN,CACnB,UAACmQ,OAAD,EAAUpX,QAAV,EAAoBkH,OAApB,EAAgC;WACvBgR,WAAW,CAChBd,OADgB,EAEhB,UAAAnR,GAAG,EAAI;gCAEAA,GADL;QAEEoS,SAAS,qBACJpS,GAAG,CAACoS,SADA,sBAENrY,QAFM,EAGL,OAAOkH,OAAP,KAAmB,UAAnB,GACIA,OAAO,CAACjB,GAAG,CAACoS,SAAJ,CAAcrY,QAAd,CAAD,CADX,GAEIkH,OALC;;KALG,EAchB4C,OAAO,CAACsO,YAdQ,CAAlB;GAFiB,EAmBnB,CAACF,WAAD,CAnBmB,CAArB;MAsBMI,cAAc,GAAG9d,KAAK,CAAC6M,MAAN,EAAvB,CApDyB;;EAuDzB7M,KAAK,CAACE,SAAN,CAAgB,YAAM;QAChB4d,cAAc,CAAC/Q,OAAnB,EAA4B;MAC1BP,QAAQ,CAAC,UAAAf,GAAG,EAAI;kCAETA,GADL;UAEE8R,QAAQ,EAAE;;OAHN,EAKLjO,OAAO,CAACoO,WALH,CAAR;;;IAQFI,cAAc,CAAC/Q,OAAf,GAAyB,IAAzB;GAVF,EAWG,CAACxH,IAAD,EAAOiH,QAAP,CAXH;EAaAxE,KAAK,CAACqF,UAAN,CAAiBrK,IAAjB,CAAsB,UAAA3B,GAAG,EAAI;QACrBsc,OAAO,GAAGtc,GAAG,CAAC4C,IAAJ,CAAShB,IAAT,CAAc,GAAd,CAAhB;;QAEI5B,GAAG,CAAC6I,QAAR,EAAkB;MAChB7I,GAAG,CAAC6K,KAAJ,GACE,CAAC,OAAOqR,QAAQ,CAACI,OAAD,CAAf,KAA6B,WAA7B,GACGJ,QAAQ,CAACI,OAAD,CADX,GAEGH,uBAAuB,IAAIA,uBAAuB,CAACnc,GAAD,CAFtD,KAEgE,EAHlE;;MAKAA,GAAG,CAACmL,QAAJ,GAAe,UAAAE,OAAO,EAAI;eACjBgR,WAAW,CAACrc,GAAG,CAAC4C,IAAL,EAAWyI,OAAX,CAAlB;OADF;;MAIArL,GAAG,CAAC+M,KAAJ,CAAU7L,OAAV,CAAkB,UAAArD,IAAI,EAAI;QACxBA,IAAI,CAACgN,KAAL,GAAa7K,GAAG,CAAC6K,KAAJ,CAAU2R,SAAV,IAAuB,EAApC;;QAEA3e,IAAI,CAACsN,QAAL,GAAgB,UAAAE,OAAO,EAAI;iBAClBkR,YAAY,CAACvc,GAAG,CAAC4C,IAAL,EAAW/E,IAAI,CAAC0B,MAAL,CAAYI,EAAvB,EAA2B0L,OAA3B,CAAnB;SADF;OAHF;;;WASKrL,GAAP;GAtBF;4BA0BKoC,QADL;IAEEia,WAAW,EAAXA,WAFF;IAGEE,YAAY,EAAZA;;;;AC9GJvS,YAAY,CAAC0S,WAAb,GAA2B,EAA3B;AAEAxO,UAAU,CAAC,gBAAD,CAAV;AAEA,IAAM/E,WAAS,GAAG;EAChBgT,uBAAuB,EAAE9S,SAAS,CAACM;CADrC;AAIA,IAAagT,cAAc,GAAG,SAAjBA,cAAiB,CAAAhW,KAAK,EAAI;EACrCA,KAAK,CAACiF,6BAAN,CAAoCjK,IAApC,CAAyC,UAAC2R,IAAD,EAAOlR,QAAP,EAAoB;wCAChDkR,IAAX,IAAiBlR,QAAQ,CAACyI,KAAT,CAAe6R,WAAhC;GADF;EAGA/V,KAAK,CAACgF,yBAAN,CAAgChK,IAAhC,CAAqCgK,2BAArC;EACAhF,KAAK,CAACmF,OAAN,CAAcnK,IAAd,CAAmBmK,SAAnB;CALK;AAQP6Q,cAAc,CAAC/U,UAAf,GAA4B,gBAA5B;;AAEA,SAAS+D,2BAAT,CAAmC5M,OAAnC,EAA4CqD,QAA5C,EAAsD;MAEzCsa,WAFyC,GAGhDta,QAHgD,CAElDyI,KAFkD,CAEzC6R,WAFyC;;MAMhD,CAACA,WAAD,IAAgB,CAACA,WAAW,CAACtb,MAAjC,EAAyC;WAChCrC,OAAP;;;MAGI6d,eAAe,sBAAOF,WAAP,CAArB,CAVoD;;;MAa9CG,WAAW,sBAAO9d,OAAP,CAAjB,CAboD;;;MAgB9C+d,cAAc,GAAG,EAAvB,CAhBoD;;;QAoB5CC,cAAc,GAAGH,eAAe,CAAClH,KAAhB,EAAvB;QACMsH,UAAU,GAAGH,WAAW,CAAC9U,SAAZ,CAAsB,UAAAtG,CAAC;aAAIA,CAAC,CAAC9B,EAAF,KAASod,cAAb;KAAvB,CAAnB;;QACIC,UAAU,GAAG,CAAC,CAAlB,EAAqB;MACnBF,cAAc,CAACnb,IAAf,CAAoBkb,WAAW,CAAClF,MAAZ,CAAmBqF,UAAnB,EAA+B,CAA/B,EAAkC,CAAlC,CAApB;;;;SAJGH,WAAW,CAACzb,MAAZ,IAAsBwb,eAAe,CAACxb,MAA7C,EAAqD;;GAnBD;;;mBA4BzC0b,cAAX,qBAA8BD,WAA9B;;;AAGF,SAAS/Q,SAAT,CAAiB1J,QAAjB,EAA2B;EACzBiH,SAAS,CAACoB,cAAV,CAAyBtB,WAAzB,EAAoC/G,QAApC,EAA8C,UAA9C,EAA0D,gBAA1D;MAEQ+I,QAHiB,GAGJ/I,QAHI,CAGjB+I,QAHiB;MAKnB8R,cAAc,GAAGte,KAAK,CAACyM,WAAN,CACrB,UAAAC,OAAO,EAAI;WACFF,QAAQ,CAAC,UAAAf,GAAG,EAAI;gCAEhBA,GADL;QAEEsS,WAAW,EACT,OAAOrR,OAAP,KAAmB,UAAnB,GAAgCA,OAAO,CAACjB,GAAG,CAACsS,WAAL,CAAvC,GAA2DrR;;KAJlD,EAMZ4C,OAAO,CAACgP,cANI,CAAf;GAFmB,EAUrB,CAAC9R,QAAD,CAVqB,CAAvB;4BAcK/I,QADL;IAEE6a,cAAc,EAAdA;;;;ACnEJjT,YAAY,CAACkT,cAAb,GAA8B;EAC5BC,YAAY,EAAE;CADhB;AAIAxf,aAAa,CAACyf,SAAd,GAA0B,IAA1B;AAEA,IAAMjU,WAAS,GAAG,EAAlB;AAEA,IAAakU,gBAAgB,GAAG,SAAnBA,gBAAmB,CAAA1W,KAAK,EAAI;EACvCA,KAAK,CAAC2W,eAAN,GAAwB,EAAxB;EACA3W,KAAK,CAACkF,mBAAN,CAA0BlK,IAA1B,CAA+BkK,mBAA/B;CAFK;AAKPwR,gBAAgB,CAACzV,UAAjB,GAA8B,kBAA9B;;AAEA,IAAMiE,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAAzJ,QAAQ,EAAI;EACtCiH,SAAS,CAACoB,cAAV,CAAyBtB,WAAzB,EAAoC/G,QAApC,EAA8C,UAA9C,EAA0D,kBAA1D;MAGE+K,WAJoC,GASlC/K,QATkC,CAIpC+K,WAJoC;MAKpCoQ,eALoC,GASlCnb,QATkC,CAKpCmb,eALoC;MAM3BlR,cAN2B,GASlCjK,QATkC,CAMpCuE,KANoC,CAM3B0F,cAN2B;MAO3B6Q,cAP2B,GASlC9a,QATkC,CAOpCyI,KAPoC,CAO3BqS,cAP2B;MAQpC/R,QARoC,GASlC/I,QATkC,CAQpC+I,QARoC;EAWtCkB,cAAc,CAAC1K,IAAf,CAAoB,YAAM;WACjB;MACLiD,KAAK,EAAE;QACL4Y,QAAQ,EAAE;;KAFd;GADF;;MAQMC,YAAW,GAAG,SAAdA,WAAc,CAACta,CAAD,EAAIjB,MAAJ,EAAe;QAC3Bwb,eAAe,GAAGC,cAAc,CAACzb,MAAD,CAAtC;QACM0b,WAAW,GAAGF,eAAe,CAACpd,GAAhB,CAAoB,UAAA4B,MAAM;aAAIA,MAAM,CAAC6L,UAAX;KAA1B,CAApB;QACM8P,MAAM,GAAG1a,CAAC,CAAC2a,OAAjB;;QAEMC,WAAW,GAAG,SAAdA,WAAc,CAAA5a,CAAC,EAAI;UACjB6a,QAAQ,GAAG7a,CAAC,CAAC2a,OAAnB;UACMG,MAAM,GAAGD,QAAQ,GAAGH,MAA1B;UAEMK,gBAAgB,GAAGD,MAAM,GAAGP,eAAe,CAACtc,MAAlD;UAEM+c,eAAe,GAAG,EAAxB;MACAT,eAAe,CAACxc,OAAhB,CAAwB,UAACgB,MAAD,EAASxC,KAAT,EAAmB;QACzCye,eAAe,CAACjc,MAAM,CAACvC,EAAR,CAAf,GAA6BP,IAAI,CAACC,GAAL,CAC3Bue,WAAW,CAACle,KAAD,CAAX,GAAqBwe,gBADM,EAE3B,CAF2B,CAA7B;OADF;MAOA/S,QAAQ,CAAC,UAAAf,GAAG;kCACPA,GADO;UAEV8S,cAAc,qBACT9S,GAAG,CAAC8S,cADK;YAEZC,YAAY,qBACP/S,GAAG,CAAC8S,cAAJ,CAAmBC,YADZ,MAEPgB,eAFO;;;OAJR,CAAR;KAdF;;QA0BMC,SAAS,GAAG,SAAZA,SAAY,CAAAjb,CAAC,EAAI;MACrBkb,QAAQ,CAACC,mBAAT,CAA6B,WAA7B,EAA0CP,WAA1C;MACAM,QAAQ,CAACC,mBAAT,CAA6B,SAA7B,EAAwCF,SAAxC;MAEAjT,QAAQ,CAAC,UAAAf,GAAG;kCACPA,GADO;UAEV8S,cAAc,qBACT9S,GAAG,CAAC8S,cADK;YAEZW,MAAM,EAAE,IAFI;YAGZU,gBAAgB,EAAE;;;OALd,CAAR;KAJF;;IAcAF,QAAQ,CAACG,gBAAT,CAA0B,WAA1B,EAAuCT,WAAvC;IACAM,QAAQ,CAACG,gBAAT,CAA0B,SAA1B,EAAqCJ,SAArC;IAEAjT,QAAQ,CAAC,UAAAf,GAAG;gCACPA,GADO;QAEV8S,cAAc,qBACT9S,GAAG,CAAC8S,cADK;UAEZW,MAAM,EAANA,MAFY;UAGZU,gBAAgB,EAAErc,MAAM,CAACvC;;;KALrB,CAAR;GAhDF;;EA0DAwN,WAAW,CAACjM,OAAZ,CACG,UAAAkB,QAAQ;WAAI,UAAAF,MAAM,EAAI;UACfkb,SAAS,GAAGrZ,eAAe,CAC/B7B,MAAM,CAACqb,eAAP,KAA2B,IAA3B,GAAkC,KAAlC,GAA0CtQ,SADX,EAE/BsQ,eAAe,KAAK,IAApB,GAA2B,KAA3B,GAAmCtQ,SAFJ,EAG/B,IAH+B,CAAjC;MAMA/K,MAAM,CAACkb,SAAP,GAAmBA,SAAnB;MACAlb,MAAM,CAACjE,KAAP,GAAeif,cAAc,CAACC,YAAf,CAA4Bjb,MAAM,CAACvC,EAAnC,KAA0CuC,MAAM,CAACjE,KAAhE;MACAiE,MAAM,CAACuc,UAAP,GAAoBvB,cAAc,CAACqB,gBAAf,KAAoCrc,MAAM,CAACvC,EAA/D;;UAEIyd,SAAJ,EAAe;YACPsB,qBAAqB,GAAG3X,cAAc,CAC1C3E,QAAQ,CAACuE,KAAT,CAAe2W,eAD2B,EAE1Cpb,MAF0C,EAG1CE,QAH0C,CAA5C;;QAKAF,MAAM,CAACob,eAAP,GAAyB,UAAA/P,SAAS,EAAI;iBAC7BlH,UAAU,CACf;YACEoX,WAAW,EAAE,qBAAAta,CAAC;qBAAIA,CAAC,CAACkM,OAAF,MAAeoO,YAAW,CAACta,CAAD,EAAIjB,MAAJ,CAA9B;aADhB;YAEE0C,KAAK,EAAE;cACL3B,MAAM,EAAE;aAHZ;YAKE0b,SAAS,EAAE;WANE,EAQfD,qBARe,EASfnR,SATe,CAAjB;SADF;;KAjBK;GAAT,CA+BGnL,QA/BH,CADF;SAmCOA,QAAP;CAhHF;;AAmHA,SAASub,cAAT,CAAwBzb,MAAxB,EAAgC;MACxB0c,WAAW,GAAG,EAApB;;MACMC,aAAa,GAAG,SAAhBA,aAAgB,CAAA3c,MAAM,EAAI;QAC1BA,MAAM,CAACnD,OAAP,IAAkBmD,MAAM,CAACnD,OAAP,CAAeqC,MAArC,EAA6C;MAC3Cc,MAAM,CAACnD,OAAP,CAAeuB,GAAf,CAAmBue,aAAnB;;;IAEFD,WAAW,CAACjd,IAAZ,CAAiBO,MAAjB;GAJF;;EAMA2c,aAAa,CAAC3c,MAAD,CAAb;SACO0c,WAAP;;;ACjJF,IAAMzV,WAAS,GAAG,EAAlB;AAEA,IAAa2V,iBAAiB,GAAG,SAApBA,iBAAoB,CAAAnY,KAAK,EAAI;EACxCA,KAAK,CAACmF,OAAN,CAAcnK,IAAd,CAAmBmK,SAAnB;CADK;AAIPgT,iBAAiB,CAAClX,UAAlB,GAA+B,mBAA/B;;AAEA,IAAMkE,SAAO,GAAG,SAAVA,OAAU,CAAA1J,QAAQ,EAAI;EAC1BiH,SAAS,CAACoB,cAAV,CAAyBtB,WAAzB,EAAoC/G,QAApC,EAA8C,UAA9C,EAA0D,mBAA1D;MAGEsL,iBAJwB,GAYtBtL,QAZsB,CAIxBsL,iBAJwB;wBAYtBtL,QAZsB,CAKxBuE,KALwB;MAMtBwF,WANsB,mBAMtBA,WANsB;MAOtBD,iBAPsB,mBAOtBA,iBAPsB;MAQtBE,mBARsB,mBAQtBA,mBARsB;MAStBC,cATsB,mBAStBA,cATsB;MAUtBC,YAVsB,mBAUtBA,YAVsB;MAcpByS,SAAS,GAAG;IAChBna,KAAK,EAAE;MACL4Y,QAAQ,EAAE,UADL;MAELvf,KAAK,YAAKyP,iBAAL;;GAHT;EAOAxB,iBAAiB,CAACvK,IAAlB,CAAuB;WAAMod,SAAN;GAAvB;EACA5S,WAAW,CAACxK,IAAZ,CAAiB;WAAMod,SAAN;GAAjB;EACA3S,mBAAmB,CAACzK,IAApB,CAAyB;WAAMod,SAAN;GAAzB,EAvB0B;;MA0BpBC,UAAU,GAAG;IACjBxB,QAAQ,EAAE,UADO;IAEjByB,GAAG,EAAE;GAFP;EAKA5S,cAAc,CAAC1K,IAAf,CAAoB,UAAAO,MAAM,EAAI;WACrB;MACL0C,KAAK,qBACAoa,UADA;QAEHja,IAAI,YAAK7C,MAAM,CAAC4L,SAAZ,OAFD;QAGH7P,KAAK,YAAKiE,MAAM,CAAC6L,UAAZ;;KAJT;GADF;EAUAzB,YAAY,CAAC3K,IAAb,CAAkB,UAAA9D,IAAI,EAAI;WACjB;MACL+G,KAAK,qBACAoa,UADA;QAEHja,IAAI,YAAKlH,IAAI,CAAC0B,MAAL,CAAYuO,SAAjB,OAFD;QAGH7P,KAAK,YAAKJ,IAAI,CAAC0B,MAAL,CAAYwO,UAAjB;;KAJT;GADF;SAUO3L,QAAP;CAnDF;;ACRA,IAAM+G,WAAS,GAAG,EAAlB;AAEA,IAAa+V,cAAc,GAAG,SAAjBA,cAAiB,CAAAvY,KAAK,EAAI;EACrCA,KAAK,CAACmF,OAAN,CAAcnK,IAAd,CAAmBmK,SAAnB;CADK;AAIPoT,cAAc,CAACtX,UAAf,GAA4B,gBAA5B;;AAEA,IAAMkE,SAAO,GAAG,SAAVA,OAAU,CAAA1J,QAAQ,EAAI;EAC1BiH,SAAS,CAACoB,cAAV,CAAyBtB,WAAzB,EAAoC/G,QAApC,EAA8C,UAA9C,EAA0D,gBAA1D;MAGEsL,iBAJwB,GAMtBtL,QANsB,CAIxBsL,iBAJwB;wBAMtBtL,QANsB,CAKxBuE,KALwB;MAKfwF,WALe,mBAKfA,WALe;MAKFC,mBALE,mBAKFA,mBALE;MAKmBC,cALnB,mBAKmBA,cALnB;MAKmCC,YALnC,mBAKmCA,YALnC;MAQpByS,SAAS,GAAG;IAChBna,KAAK,EAAE;MACLua,OAAO,EAAE,MADJ;MAELlhB,KAAK,YAAKyP,iBAAL;;GAHT;EAOAvB,WAAW,CAACxK,IAAZ,CAAiB;WAAMod,SAAN;GAAjB;EACA3S,mBAAmB,CAACzK,IAApB,CAAyB;WAAMod,SAAN;GAAzB;MAEMC,UAAU,GAAG;IACjBG,OAAO,EAAE,cADQ;IAEjBC,SAAS,EAAE;GAFb;EAKA/S,cAAc,CAAC1K,IAAf,CAAoB,UAAAO,MAAM,EAAI;WACrB;MACL0C,KAAK,qBACAoa,UADA;QAEH/gB,KAAK,YAAKiE,MAAM,CAAC6L,UAAZ;;KAHT;GADF;EASAzB,YAAY,CAAC3K,IAAb,CAAkB,UAAA9D,IAAI,EAAI;WACjB;MACL+G,KAAK,qBACAoa,UADA;QAEH/gB,KAAK,YAAKJ,IAAI,CAAC0B,MAAL,CAAYwO,UAAjB;;KAHT;GADF;SASO3L,QAAP;CAzCF;;;;"}
\ 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":"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"}
\ 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) {