diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 5cb3f0c..0000000 --- a/dist/index.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var PropTypes=_interopDefault(require("prop-types")),React=require("react"),React__default=_interopDefault(React);function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _defineProperty(e,r,o){return r in e?Object.defineProperty(e,r,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[r]=o,e}function _objectSpread(r){for(var e=1;e=c.length?e:Object.entries(n(e,c[p])).map(function(e,r){var o=_slicedToArray(e,2),t=o[0],n=o[1];n=i(n,c,p+1);var a,u,s=(a=n,u={},l.forEach(function(r){var e=a.map(function(e){return e.values[r.id]}),o=d[r.aggregate]||aggregations[r.aggregate]||r.aggregate;if("function"==typeof o)u[r.id]=o(e,a);else{if(o)throw new Error('Invalid aggregate "'.concat(o,'" passed to column with ID: "').concat(r.id,'"'));u[r.id]=e[0]}}),u);return{groupByID:c[p],groupByVal:t,values:s,subRows:n,depth:p,index:r}})}(o,p)},[o,p,l,a])})};defaultState.sortBy=[],addActions({sortByChange:"__sortByChange__"});var propTypes$6={columns:PropTypes.arrayOf(PropTypes.shape({sortByFn:PropTypes.func,efaultSortDesc:PropTypes.bool})),sortByFn:PropTypes.func,manualSorting:PropTypes.bool,disableSorting:PropTypes.bool,defaultSortDesc:PropTypes.bool,disableMultiSort:PropTypes.bool},useSortBy=function(e){PropTypes.checkPropTypes(propTypes$6,e,"property","useSortBy");var r=e.debug,o=e.rows,p=e.columns,t=e.orderByFn,a=void 0===t?defaultOrderByFn:t,n=e.sortByFn,u=void 0===n?defaultSortByFn:n,s=e.manualSorting,i=e.disableSorting,l=e.defaultSortDesc,c=e.hooks,d=_slicedToArray(e.state,2),f=d[0].sortBy,y=d[1];p.forEach(function(e){var r=e.accessor,o=e.canSortBy;e.canSortBy=!!r&&getFirstDefined(o,!0!==i&&void 0,!0)});c.columns.push(function(e){return e.forEach(function(o){o.canSortBy&&(o.toggleSortBy=function(e,r){return s=o.id,i=e,c=r,y(function(e){var r,o=e.sortBy,t=getFirstDefined(p.find(function(e){return e.id===s}).defaultSortDesc,l),n=o.find(function(e){return e.id===s}),a=null!=i,u=[];return"replace"==(r=c?n?a?"set":"toggle":"add":o.length<=1&&n?n.desc?"remove":"toggle":"replace")?u=[{id:s,desc:a?i:t}]:"add"===r?u=[].concat(_toConsumableArray(o),[{id:s,desc:a?i:t}]):"set"===r?u=o.map(function(e){return e.id===s?_objectSpread({},e,{desc:i}):e}):"toggle"===r?u=o.map(function(e){return e.id===s?_objectSpread({},e,{desc:!n.desc}):e}):"remove"===r&&(u=[]),_objectSpread({},e,{sortBy:u})},actions.sortByChange);var s,i,c})}),e}),c.getSortByToggleProps=[];var g=function(e,t){return e.forEach(function(r){var o=r.canSortBy;r.getSortByToggleProps=function(e){return mergeProps({onClick:o?function(e){e.persist(),r.toggleSortBy(void 0,!t.disableMultiSort&&e.shiftKey)}:void 0,style:{cursor:o?"pointer":void 0},title:"Toggle SortBy"},applyPropHooks(t.hooks.getSortByToggleProps,r,t),e)}}),e};return c.columns.push(g),c.headers.push(g),p.forEach(function(e){var r=e.id;e.sorted=f.find(function(e){return e.id===r}),e.sortedIndex=f.findIndex(function(e){return e.id===r}),e.sortedDesc=e.sorted?e.sorted.desc:void 0}),_objectSpread({},e,{rows:React.useMemo(function(){if(s||!f.length)return o;r&&console.info("getSortedRows");var n={};p.filter(function(e){return e.sortMethod}).forEach(function(e){n[e.id]=e.sortMethod});return function r(e){var o=a(e,f.map(function(o){var t=n[o.id];return function(e,r){return(t||u)(e.values[o.id],r.values[o.id],o.desc)}}),f.map(function(e){return!e.desc}));return o.forEach(function(e){e.subRows&&(e.subRows=r(e.subRows))}),o}(o)},[o,p,f,s])})};defaultState.pageSize=10,defaultState.pageIndex=0,addActions({pageChange:"__pageChange__"});var propTypes$7={manualPagination:PropTypes.bool},usePagination=function(e){PropTypes.checkPropTypes(propTypes$7,e,"property","usePagination");var t=e.rows,n=e.manualPagination,a=e.debug,r=_slicedToArray(e.state,2),o=r[0],u=o.pageSize,s=o.pageIndex,i=o.pageCount,c=o.filters,p=o.groupBy,l=o.sortBy,d=r[1];React.useLayoutEffect(function(){d(function(e){return _objectSpread({},e,{pageIndex:0})},actions.pageChange)},[c,p,l]);var f=React.useMemo(function(){if(n)return{pages:[t],pageCount:i};a&&console.info("getPages");for(var e=t.length?[]:[[]],r=0;r 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 defaultSortByFn(a, b, desc) {\n // force null and undefined to the bottom\n a = a === null || a === undefined ? '' : a\n b = b === null || b === undefined ? '' : b\n // force any string values to lowercase\n a = typeof a === 'string' ? a.toLowerCase() : a\n b = typeof b === 'string' ? b.toLowerCase() : b\n // Return either 1 or -1 to indicate a sort priority\n if (a > b) {\n return 1\n }\n if (a < b) {\n return -1\n }\n // returning 0, undefined or any falsey value will defer to the next\n // sorting mechanism or eventually the columns index via the orderByFn\n return 0\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, grouper) {\n return rows.reduce((prev, row, i) => {\n const resKey =\n typeof grouper === 'function'\n ? grouper(row.values, i)\n : row.values[grouper]\n prev[resKey] = Array.isArray(prev[resKey]) ? prev[resKey] : []\n prev[resKey].push(row)\n return prev\n }, {})\n}\n\nexport function defaultFilterFn(row, id, value, column) {\n return row.values[id] !== undefined\n ? String(row.values[id])\n .toLowerCase()\n .includes(String(value).toLowerCase())\n : true\n}\n\nexport function setBy(obj = {}, path, value) {\n const recurse = (obj, depth = 0) => {\n const key = path[depth]\n const target = typeof obj[key] !== 'object' ? {} : obj[key]\n const subValue =\n depth === path.length - 1 ? value : recurse(target, depth + 1)\n return {\n ...obj,\n [key]: subValue\n }\n }\n\n return recurse(obj)\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 if (typeof Comp === 'function') {\n return Object.getPrototypeOf(Comp).isReactComponent ? (\n \n ) : (\n Comp(props)\n )\n }\n return Comp\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) => next(prev, ...args), 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\nfunction makePathArray(obj) {\n return flattenDeep(obj)\n .join('.')\n .replace(/\\[/g, '.')\n .replace(/\\]/g, '')\n .split('.')\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 { useState, useMemo } from 'react'\n\nexport const defaultState = {}\n\nconst defaultReducer = (old, newState) => newState\n\nexport const useTableState = (\n initialState = {},\n overrides = {},\n { reducer = defaultReducer, useState: userUseState = useState } = {}\n) => {\n let [state, setState] = userUseState({\n ...defaultState,\n ...initialState\n })\n\n const overriddenState = useMemo(() => {\n const newState = {\n ...state\n }\n Object.keys(overrides).forEach(key => {\n newState[key] = overrides[key]\n })\n return newState\n }, [state, ...Object.values(overrides)])\n\n const reducedSetState = (updater, type) =>\n setState(old => {\n const newState = updater(old)\n return reducer(old, newState, type)\n })\n\n return [overriddenState, reducedSetState]\n}\n","import PropTypes from 'prop-types'\n//\nimport { flexRender, applyHooks, applyPropHooks, mergeProps } from '../utils'\n\nimport { useTableState } from './useTableState'\n\nconst renderErr =\n 'You must specify a render \"type\". This could be \"Header\", \"Filter\", or any other custom renderers you have set on your column.'\n\nconst propTypes = {\n // General\n data: PropTypes.array.isRequired,\n debug: PropTypes.bool\n}\n\nexport const useTable = (props, ...plugins) => {\n // Validate props\n PropTypes.checkPropTypes(propTypes, props, 'property', 'useTable')\n\n // Destructure props\n let { data = [], state: userState, debug } = props\n\n debug = process.env.NODE_ENV === 'production' ? false : debug\n\n // Always provide a default state\n const defaultState = useTableState()\n\n // But use the users state if provided\n const state = userState || defaultState\n\n // These are hooks that plugins can use right before render\n const hooks = {\n beforeRender: [],\n columns: [],\n headers: [],\n headerGroups: [],\n rows: [],\n row: [],\n renderableRows: [],\n getTableProps: [],\n getRowProps: [],\n getHeaderRowProps: [],\n getHeaderProps: [],\n getCellProps: []\n }\n\n // The initial api\n let api = {\n ...props,\n data,\n state,\n hooks\n }\n\n if (debug) console.time('hooks')\n // Loop through plugins to build the api out\n api = plugins.filter(Boolean).reduce((prev, next) => next(prev), api)\n if (debug) console.timeEnd('hooks')\n\n // Run the beforeRender hook\n if (debug) console.time('hooks.beforeRender')\n applyHooks(api.hooks.beforeRender, undefined, api)\n if (debug) console.timeEnd('hooks.beforeRender')\n\n if (debug) console.time('hooks.columns')\n api.columns = applyHooks(api.hooks.columns, api.columns, api)\n if (debug) console.timeEnd('hooks.columns')\n\n if (debug) console.time('hooks.headers')\n api.headers = applyHooks(api.hooks.headers, api.headers, api)\n if (debug) console.timeEnd('hooks.headers')\n ;[...api.columns, ...api.headers].forEach(column => {\n // Give columns/headers rendering power\n column.render = (type, userProps = {}) => {\n if (!type) {\n throw new Error(renderErr)\n }\n return flexRender(column[type], {\n ...api,\n ...column,\n ...userProps\n })\n }\n\n // Give columns/headers getHeaderProps\n column.getHeaderProps = props =>\n mergeProps(\n {\n key: ['header', column.id].join('_')\n },\n applyPropHooks(api.hooks.getHeaderProps, column, api),\n props\n )\n })\n\n if (debug) console.time('hooks.headerGroups')\n api.headerGroups = applyHooks(\n api.hooks.headerGroups,\n api.headerGroups,\n api\n ).filter((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 = columns =>\n columns.filter(column => {\n if (column.columns) {\n return recurse(column.columns)\n }\n return column.visible\n }).length\n if (header.columns) {\n return recurse(header.columns)\n }\n return header.visible\n })\n\n // Give headerGroups getRowProps\n if (headerGroup.headers.length) {\n headerGroup.getRowProps = (props = {}) =>\n mergeProps(\n {\n key: [`header${i}`].join('_')\n },\n applyPropHooks(api.hooks.getHeaderRowProps, headerGroup, api),\n props\n )\n return true\n }\n\n return false\n })\n if (debug) console.timeEnd('hooks.headerGroups')\n\n // Run the rows (this could be a dangerous hook with a ton of data)\n if (debug) console.time('hooks.rows')\n api.rows = applyHooks(api.hooks.rows, api.rows, api)\n if (debug) console.timeEnd('hooks.rows')\n\n // The prepareRow function is absolutely necessary and MUST be called on\n // any rows the user wishes to be displayed.\n\n api.prepareRow = row => {\n const { path } = row\n row.getRowProps = props =>\n mergeProps(\n { key: ['row', ...path].join('_') },\n applyHooks(api.hooks.getRowProps, row, api),\n props\n )\n\n // need to apply any row specific hooks (useExpanded requires this)\n applyHooks(api.hooks.row, row, api)\n\n const visibleColumns = api.columns.filter(column => column.visible)\n\n // Build the cells for each row\n row.cells = visibleColumns.map(column => {\n const cell = {\n column,\n row,\n value: row.values[column.id]\n }\n\n cell.getCellProps = props => {\n const columnPathStr = [path, column.id].join('_')\n return mergeProps(\n {\n key: ['cell', columnPathStr].join('_')\n },\n applyPropHooks(api.hooks.getCellProps, cell, api),\n props\n )\n }\n\n cell.render = (type, userProps = {}) => {\n if (!type) {\n throw new Error(\n 'You must specify a render \"type\". This could be \"Cell\", \"Header\", \"Filter\", \"Aggregated\" or any other custom renderers you have set on your column.'\n )\n }\n return flexRender(column[type], {\n ...api,\n ...cell,\n ...userProps\n })\n }\n\n return cell\n })\n }\n\n api.getTableProps = userProps =>\n mergeProps(applyPropHooks(api.hooks.getTableProps, api), userProps)\n\n api.getRowProps = userProps =>\n mergeProps(applyPropHooks(api.hooks.getRowProps, api), userProps)\n\n return api\n}\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { getBy } from '../utils'\n\nconst propTypes = {\n // General\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n Cell: PropTypes.any,\n Header: PropTypes.any\n })\n )\n}\n\nexport const useColumns = props => {\n const {\n debug,\n columns: userColumns,\n state: [{ groupBy }]\n } = props\n\n PropTypes.checkPropTypes(propTypes, props, 'property', 'useColumns')\n\n const { columns, headerGroups, headers } = useMemo(() => {\n if (debug) console.info('getColumns')\n\n // Decorate All the columns\n let columnTree = decorateColumnTree(userColumns)\n\n // Get the flat list of all columns\n let columns = flattenBy(columnTree, 'columns')\n\n columns = [\n ...groupBy.map(g => columns.find(col => col.id === g)),\n ...columns.filter(col => !groupBy.includes(col.id))\n ]\n\n // Get headerGroups\n const headerGroups = makeHeaderGroups(columns, findMaxDepth(columnTree))\n const headers = flattenBy(headerGroups, 'headers')\n\n return {\n columns,\n headerGroups,\n headers\n }\n }, [groupBy, userColumns])\n\n return {\n ...props,\n columns,\n headerGroups,\n headers\n }\n\n // Find the depth of the columns\n 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\n function decorateColumn(column, parent) {\n // First check for string accessor\n let { id, accessor, Header } = column\n\n if (typeof accessor === 'string') {\n id = id || accessor\n const accessorString = accessor\n accessor = row => getBy(row, accessorString)\n }\n\n if (!id && typeof Header === 'string') {\n id = Header\n }\n\n if (!id) {\n // Accessor, but no column id? This is bad.\n console.error(column)\n throw new Error('A column id is required!')\n }\n\n column = {\n Header: '',\n Cell: cell => cell.value,\n show: true,\n ...column,\n id,\n accessor,\n parent\n }\n\n return column\n }\n\n // Build the visible columns, headers and flat column list\n function decorateColumnTree(columns, parent, depth = 0) {\n return columns.map(column => {\n column = decorateColumn(column, parent)\n if (column.columns) {\n column.columns = decorateColumnTree(column.columns, column, depth + 1)\n }\n return column\n })\n }\n\n 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\n // Build the header groups from the bottom up\n function makeHeaderGroups(columns, maxDepth) {\n const headerGroups = []\n\n const removeChildColumns = column => {\n delete column.columns\n if (column.parent) {\n removeChildColumns(column.parent)\n }\n }\n columns.forEach(removeChildColumns)\n\n const buildGroup = (columns, depth = 0) => {\n const headerGroup = {\n headers: []\n }\n\n const parentColumns = []\n\n const hasParents = columns.some(col => col.parent)\n\n columns.forEach(column => {\n const isFirst = !parentColumns.length\n let latestParentColumn = [...parentColumns].reverse()[0]\n\n // If the column has a parent, add it if necessary\n if (column.parent) {\n if (isFirst || latestParentColumn.originalID !== column.parent.id) {\n parentColumns.push({\n ...column.parent,\n originalID: column.parent.id,\n id: [column.parent.id, parentColumns.length].join('_')\n })\n }\n } else if (hasParents) {\n // If other columns have parents, add a place holder if necessary\n const placeholderColumn = decorateColumn({\n originalID: [column.id, 'placeholder', maxDepth - depth].join('_'),\n id: [\n column.id,\n 'placeholder',\n maxDepth - depth,\n parentColumns.length\n ].join('_')\n })\n if (\n isFirst ||\n latestParentColumn.originalID !== placeholderColumn.originalID\n ) {\n parentColumns.push(placeholderColumn)\n }\n }\n\n // Establish the new columns[] relationship on the parent\n if (column.parent || hasParents) {\n latestParentColumn = [...parentColumns].reverse()[0]\n latestParentColumn.columns = latestParentColumn.columns || []\n if (!latestParentColumn.columns.includes(column)) {\n latestParentColumn.columns.push(column)\n }\n }\n\n headerGroup.headers.push(column)\n })\n\n headerGroups.push(headerGroup)\n\n if (parentColumns.length) {\n buildGroup(parentColumns)\n }\n }\n\n buildGroup(columns)\n\n return headerGroups.reverse()\n }\n}\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nconst propTypes = {\n subRowsKey: PropTypes.string\n}\n\nexport const useRows = props => {\n PropTypes.checkPropTypes(propTypes, props, 'property', 'useRows')\n\n const { debug, columns, subRowsKey = 'subRows', data } = props\n\n const accessedRows = useMemo(() => {\n if (debug) console.info('getAccessedRows')\n\n // Access the row's data\n const accessRow = (originalRow, i, depth = 0) => {\n // Keep the original reference around\n const original = originalRow\n\n // Process any subRows\n const subRows = originalRow[subRowsKey]\n ? originalRow[subRowsKey].map((d, i) => accessRow(d, i, depth + 1))\n : undefined\n\n const row = {\n original,\n index: i,\n path: [i], // used to create a key for each row even if not nested\n subRows,\n depth,\n cells: [{}] // This is a dummy cell\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 columns.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 return data.map((d, i) => accessRow(d, i))\n }, [data, columns])\n\n return {\n ...props,\n rows: accessedRows\n }\n}\n","\nexport const useSimpleLayout = props => {\n const {\n hooks: {\n columns: columnsHooks,\n getHeaderProps,\n getCellProps\n }\n } = props\n\n columnsHooks.push((columns, api) => {\n columns.forEach(column => {\n column.visible =\n typeof column.show === 'function' ? column.show(api) : !!column.show\n })\n\n getHeaderProps.push(column => ({\n style: {\n boxSizing: 'border-box',\n width: column.width !== undefined ? `${column.width}px` : 'auto'\n }\n }))\n\n getCellProps.push(cell => {\n return {\n style: {\n boxSizing: 'border-box',\n width: cell.column.width !== undefined ? `${cell.column.width}px` : 'auto'\n }\n }\n })\n\n return columns\n })\n\n return props\n}\n","const actions = {}\n\nexport { actions }\n\nexport const addActions = acts => {\n Object.keys(acts).forEach(key => {\n actions[key] = acts[key]\n })\n}\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { getBy, getFirstDefined, setBy } from '../utils'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from './useTableState'\n\ndefaultState.expanded = {}\n\naddActions({\n toggleExpanded: '__toggleExpanded__',\n useExpanded: '__useExpanded__'\n})\n\nconst propTypes = {\n expandedKey: PropTypes.string\n}\n\nexport const useExpanded = props => {\n PropTypes.checkPropTypes(propTypes, props, 'property', 'useExpanded')\n\n const {\n debug,\n columns,\n rows,\n expandedKey = 'expanded',\n hooks,\n state: [{ expanded }, setState]\n } = props\n\n const toggleExpandedByPath = (path, set) => {\n return setState(old => {\n const { expanded } = old\n const existing = getBy(expanded, path)\n set = getFirstDefined(set, !existing)\n return {\n ...old,\n expanded: setBy(expanded, path, set)\n }\n }, actions.toggleExpanded)\n }\n\n hooks.row.push(row => {\n const { path } = row\n row.toggleExpanded = set => toggleExpandedByPath(path, set)\n })\n\n const expandedRows = useMemo(() => {\n if (debug) console.info('getExpandedRows')\n\n const expandedRows = []\n\n // Here we do some mutation, but it's the last stage in the\n // immutable process so this is safe\n const handleRow = (row, index, depth = 0, parentPath = []) => {\n // Compute some final state for the row\n const path = [...parentPath, index]\n\n row.path = path\n row.depth = depth\n\n row.isExpanded =\n (row.original && row.original[expandedKey]) || getBy(expanded, path)\n\n expandedRows.push(row)\n\n if (row.isExpanded && row.subRows && row.subRows.length) {\n row.subRows.forEach((row, i) => handleRow(row, i, depth + 1, path))\n }\n }\n\n rows.forEach((row, i) => handleRow(row, i))\n\n return expandedRows\n }, [rows, expanded, columns])\n\n const expandedDepth = findExpandedDepth(expanded)\n\n return {\n ...props,\n toggleExpandedByPath,\n expandedDepth,\n rows: expandedRows\n }\n}\n\nfunction findExpandedDepth(obj, depth = 1) {\n return Object.values(obj).reduce((prev, curr) => {\n if (typeof curr === 'object') {\n return Math.max(prev, findExpandedDepth(curr, depth + 1))\n }\n return depth\n }, 0)\n}\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { defaultFilterFn, getFirstDefined } from '../utils'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from './useTableState'\n\ndefaultState.filters = {}\naddActions({\n setFilter: '__setFilter__',\n setAllFilters: '__setAllFilters__'\n})\n\nconst propTypes = {\n // General\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n filterFn: PropTypes.func,\n filterAll: PropTypes.bool,\n canFilter: PropTypes.bool,\n Filter: PropTypes.any\n })\n ),\n\n filterFn: PropTypes.func,\n manualFilters: PropTypes.bool\n}\n\nexport const useFilters = props => {\n PropTypes.checkPropTypes(propTypes, props, 'property', 'useFilters')\n\n const {\n debug,\n rows,\n columns,\n filterFn = defaultFilterFn,\n manualFilters,\n disableFilters,\n hooks,\n state: [{ filters }, setState]\n } = props\n\n columns.forEach(column => {\n const { id, accessor, canFilter } = column\n column.canFilter = accessor\n ? getFirstDefined(\n canFilter,\n disableFilters === true ? false : undefined,\n true\n )\n : false\n // Was going to add this to the filter hook\n column.filterValue = filters[id]\n })\n\n const setFilter = (id, val) => {\n return setState(old => {\n if (typeof val === 'undefined') {\n const { [id]: prev, ...rest } = filters\n return {\n ...old,\n filters: {\n ...rest\n }\n }\n }\n\n return {\n ...old,\n filters: {\n ...filters,\n [id]: val\n }\n }\n }, actions.setFilter)\n }\n\n const setAllFilters = filters => {\n return setState(old => {\n return {\n ...old,\n filters\n }\n }, actions.setAllFilters)\n }\n\n hooks.columns.push(columns => {\n columns.forEach(column => {\n if (column.canFilter) {\n column.setFilter = val => setFilter(column.id, val)\n }\n })\n return columns\n })\n\n const filteredRows = useMemo(() => {\n if (manualFilters || !Object.keys(filters).length) {\n return rows\n }\n\n if (debug) console.info('getFilteredRows')\n\n // Filters top level and nested rows\n const filterRows = rows => {\n let filteredRows = rows\n\n filteredRows = Object.entries(filters).reduce(\n (filteredSoFar, [columnID, filterValue]) => {\n // Find the filters column\n const column = columns.find(d => d.id === columnID)\n\n // Don't filter hidden columns or columns that have had their filters disabled\n if (!column || column.filterable === false) {\n return filteredSoFar\n }\n\n const filterMethod = column.filterMethod || filterFn\n\n // If 'filterAll' is set to true, pass the entire dataset to the filter method\n if (column.filterAll) {\n return filterMethod(filteredSoFar, columnID, filterValue, column)\n }\n return filteredSoFar.filter(row =>\n filterMethod(row, columnID, filterValue, column)\n )\n },\n rows\n )\n\n // Apply the filter to any subRows\n filteredRows = filteredRows.map(row => {\n if (!row.subRows) {\n return row\n }\n return {\n ...row,\n subRows: filterRows(row.subRows)\n }\n })\n\n // then filter any rows without subcolumns because it would be strange to show\n filteredRows = filteredRows.filter(row => {\n if (!row.subRows) {\n return true\n }\n return row.subRows.length > 0\n })\n\n return filteredRows\n }\n\n return filterRows(rows)\n }, [rows, filters, manualFilters])\n\n return {\n ...props,\n setFilter,\n setAllFilters,\n rows: filteredRows\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","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport * as aggregations from '../aggregations'\nimport { addActions, actions } from '../actions'\nimport { defaultState } from './useTableState'\nimport {\n mergeProps,\n applyPropHooks,\n defaultGroupByFn,\n getFirstDefined\n} from '../utils'\n\ndefaultState.groupBy = []\n\naddActions({\n toggleGroupBy: '__toggleGroupBy__'\n})\n\nconst propTypes = {\n // General\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n aggregate: PropTypes.func,\n canGroupBy: PropTypes.bool,\n Aggregated: PropTypes.any\n })\n ),\n groupByFn: PropTypes.func,\n manualGrouping: PropTypes.bool,\n aggregations: PropTypes.object\n}\n\nexport const useGroupBy = props => {\n PropTypes.checkPropTypes(propTypes, props, 'property', 'useGroupBy')\n\n const {\n debug,\n rows,\n columns,\n groupByFn = defaultGroupByFn,\n manualGroupBy,\n disableGrouping,\n aggregations: userAggregations = {},\n hooks,\n state: [{ groupBy }, setState]\n } = props\n\n columns.forEach(column => {\n const { id, accessor, canGroupBy } = column\n column.grouped = groupBy.includes(id)\n\n column.canGroupBy = accessor\n ? getFirstDefined(\n canGroupBy,\n disableGrouping === true ? false : undefined,\n true\n )\n : false\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 hooks.columns.push(columns => {\n columns.forEach(column => {\n if (column.canGroupBy) {\n column.toggleGroupBy = () => toggleGroupBy(column.id)\n }\n })\n return columns\n })\n\n hooks.getGroupByToggleProps = []\n\n const addGroupByToggleProps = (columns, api) => {\n columns.forEach(column => {\n const { canGroupBy } = column\n column.getGroupByToggleProps = props => {\n return mergeProps(\n {\n onClick: canGroupBy\n ? e => {\n e.persist()\n column.toggleGroupBy()\n }\n : undefined,\n style: {\n cursor: canGroupBy ? 'pointer' : undefined\n },\n title: 'Toggle GroupBy'\n },\n applyPropHooks(api.hooks.getGroupByToggleProps, column, api),\n props\n )\n }\n })\n return columns\n }\n\n hooks.columns.push(addGroupByToggleProps)\n hooks.headers.push(addGroupByToggleProps)\n\n const groupedRows = useMemo(() => {\n if (manualGroupBy || !groupBy.length) {\n return rows\n }\n if (debug) 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 => {\n const values = {}\n columns.forEach(column => {\n const columnValues = rows.map(d => d.values[column.id])\n let aggregate =\n userAggregations[column.aggregate] ||\n aggregations[column.aggregate] ||\n column.aggregate\n if (typeof aggregate === 'function') {\n values[column.id] = aggregate(columnValues, rows)\n } else if (aggregate) {\n throw new Error(\n `Invalid aggregate \"${aggregate}\" passed to column with ID: \"${\n column.id\n }\"`\n )\n } else {\n values[column.id] = columnValues[0]\n }\n })\n return values\n }\n\n // Recursively group the data\n const groupRecursively = (rows, groupBy, depth = 0) => {\n // This is the last level, just return the rows\n if (depth >= groupBy.length) {\n return rows\n }\n\n // Group the rows together for this level\n let groupedRows = Object.entries(groupByFn(rows, groupBy[depth])).map(\n ([groupByVal, subRows], index) => {\n // Recurse to sub rows before aggregation\n subRows = groupRecursively(subRows, groupBy, depth + 1)\n\n const values = aggregateRowsToValues(subRows)\n\n const row = {\n groupByID: groupBy[depth],\n groupByVal,\n values,\n subRows,\n depth,\n index\n }\n return row\n }\n )\n\n return groupedRows\n }\n\n // Assign the new data\n return groupRecursively(rows, groupBy)\n }, [rows, groupBy, columns, manualGroupBy])\n\n return {\n ...props,\n rows: groupedRows\n }\n}\n","import { useMemo } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { addActions, actions } from '../actions'\nimport { defaultState } from './useTableState'\nimport {\n mergeProps,\n applyPropHooks,\n getFirstDefined,\n defaultOrderByFn,\n defaultSortByFn\n} from '../utils'\n\ndefaultState.sortBy = []\n\naddActions({\n sortByChange: '__sortByChange__'\n})\n\nconst propTypes = {\n // General\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n sortByFn: PropTypes.func,\n efaultSortDesc: PropTypes.bool\n })\n ),\n sortByFn: PropTypes.func,\n manualSorting: PropTypes.bool,\n disableSorting: PropTypes.bool,\n defaultSortDesc: PropTypes.bool,\n disableMultiSort: PropTypes.bool\n}\n\nexport const useSortBy = props => {\n PropTypes.checkPropTypes(propTypes, props, 'property', 'useSortBy')\n\n const {\n debug,\n rows,\n columns,\n orderByFn = defaultOrderByFn,\n sortByFn = defaultSortByFn,\n manualSorting,\n disableSorting,\n defaultSortDesc,\n hooks,\n state: [{ sortBy }, setState]\n } = props\n\n columns.forEach(column => {\n const { accessor, canSortBy } = column\n column.canSortBy = accessor\n ? getFirstDefined(\n canSortBy,\n disableSorting === true ? false : undefined,\n true\n )\n : false\n })\n\n // Updates sorting based on a columnID, desc flag and multi flag\n const toggleSortByID = (columnID, desc, multi) => {\n return setState(old => {\n const { sortBy } = old\n\n // Find the column for this columnID\n const column = columns.find(d => d.id === columnID)\n const resolvedDefaultSortDesc = getFirstDefined(\n column.defaultSortDesc,\n defaultSortDesc\n )\n\n // Find any existing sortBy for this column\n const existingSortBy = sortBy.find(d => d.id === columnID)\n const hasDescDefined = typeof desc !== 'undefined' && desc !== null\n\n let newSortBy = []\n\n // What should we do with this filter?\n let action\n\n if (!multi) {\n if (sortBy.length <= 1 && existingSortBy) {\n if (existingSortBy.desc) {\n action = 'remove'\n } else {\n action = 'toggle'\n }\n } else {\n action = 'replace'\n }\n } else {\n if (!existingSortBy) {\n action = 'add'\n } else {\n if (hasDescDefined) {\n action = 'set'\n } else {\n action = 'toggle'\n }\n }\n }\n\n if (action === 'replace') {\n newSortBy = [\n {\n id: columnID,\n desc: hasDescDefined ? desc : resolvedDefaultSortDesc\n }\n ]\n } else if (action === 'add') {\n newSortBy = [\n ...sortBy,\n {\n id: columnID,\n desc: hasDescDefined ? desc : resolvedDefaultSortDesc\n }\n ]\n } else if (action === 'set') {\n newSortBy = sortBy.map(d => {\n if (d.id === columnID) {\n return {\n ...d,\n desc\n }\n }\n return d\n })\n } else if (action === 'toggle') {\n newSortBy = sortBy.map(d => {\n if (d.id === columnID) {\n return {\n ...d,\n desc: !existingSortBy.desc\n }\n }\n return d\n })\n } else if (action === 'remove') {\n newSortBy = []\n }\n\n return {\n ...old,\n sortBy: newSortBy\n }\n }, actions.sortByChange)\n }\n\n hooks.columns.push(columns => {\n columns.forEach(column => {\n if (column.canSortBy) {\n column.toggleSortBy = (desc, multi) =>\n toggleSortByID(column.id, desc, multi)\n }\n })\n return columns\n })\n\n hooks.getSortByToggleProps = []\n\n const addSortByToggleProps = (columns, api) => {\n columns.forEach(column => {\n const { canSortBy } = column\n column.getSortByToggleProps = props => {\n return mergeProps(\n {\n onClick: canSortBy\n ? e => {\n e.persist()\n column.toggleSortBy(\n undefined,\n !api.disableMultiSort && e.shiftKey\n )\n }\n : undefined,\n style: {\n cursor: canSortBy ? 'pointer' : undefined\n },\n title: 'Toggle SortBy'\n },\n applyPropHooks(api.hooks.getSortByToggleProps, column, api),\n props\n )\n }\n })\n return columns\n }\n\n hooks.columns.push(addSortByToggleProps)\n hooks.headers.push(addSortByToggleProps)\n\n // Mutate columns to reflect sorting state\n columns.forEach(column => {\n const { id } = column\n column.sorted = sortBy.find(d => d.id === id)\n column.sortedIndex = sortBy.findIndex(d => d.id === id)\n column.sortedDesc = column.sorted ? column.sorted.desc : undefined\n })\n\n const sortedRows = useMemo(() => {\n if (manualSorting || !sortBy.length) {\n return rows\n }\n if (debug) console.info('getSortedRows')\n\n const sortMethodsByColumnID = {}\n\n columns\n .filter(col => col.sortMethod)\n .forEach(col => {\n sortMethodsByColumnID[col.id] = col.sortMethod\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 sortBy.map(sort => {\n // Support custom sorting methods for each column\n const columnSortBy = sortMethodsByColumnID[sort.id]\n\n // Return the correct sortFn\n return (a, b) =>\n (columnSortBy || sortByFn)(\n a.values[sort.id],\n b.values[sort.id],\n sort.desc\n )\n }),\n // Map the directions\n sortBy.map(d => !d.desc)\n )\n\n // TODO: this should be optimized. Not good to loop again\n sortedData.forEach(row => {\n if (!row.subRows) {\n return\n }\n row.subRows = sortData(row.subRows)\n })\n\n return sortedData\n }\n\n return sortData(rows)\n }, [rows, columns, sortBy, manualSorting])\n\n return {\n ...props,\n rows: sortedRows\n }\n}\n","import { useMemo, useLayoutEffect } from 'react'\nimport PropTypes from 'prop-types'\n\n//\nimport { addActions, actions } from '../actions'\nimport { defaultState } from './useTableState'\n\ndefaultState.pageSize = 10\ndefaultState.pageIndex = 0\n\naddActions({\n pageChange: '__pageChange__'\n})\n\nconst propTypes = {\n // General\n manualPagination: PropTypes.bool\n}\n\nexport const usePagination = props => {\n PropTypes.checkPropTypes(propTypes, props, 'property', 'usePagination')\n\n const {\n rows,\n manualPagination,\n debug,\n state: [\n {\n pageSize,\n pageIndex,\n pageCount: userPageCount,\n filters,\n groupBy,\n sortBy\n },\n setState\n ]\n } = props\n\n useLayoutEffect(() => {\n setState(\n old => ({\n ...old,\n pageIndex: 0\n }),\n actions.pageChange\n )\n }, [filters, groupBy, sortBy])\n\n const { pages, pageCount } = useMemo(() => {\n if (manualPagination) {\n return {\n pages: [rows],\n pageCount: userPageCount\n }\n }\n if (debug) console.info('getPages')\n\n // Create a new pages with the first page ready to go.\n const pages = rows.length ? [] : [[]]\n\n // Start the pageIndex and currentPage cursors\n let cursor = 0\n while (cursor < rows.length) {\n const end = cursor + pageSize\n pages.push(rows.slice(cursor, end))\n cursor = end\n }\n\n const pageCount = pages.length\n\n return {\n pages,\n pageCount,\n pageOptions\n }\n }, [rows, pageSize, userPageCount])\n\n const pageOptions = [...new Array(pageCount)].map((d, i) => i)\n const page = manualPagination ? rows : pages[pageIndex] || []\n const canPreviousPage = pageIndex > 0\n const canNextPage = pageIndex < pageCount - 1\n\n const gotoPage = pageIndex => {\n if (debug) console.info('gotoPage')\n return setState(old => {\n if (pageIndex < 0 || pageIndex > pageCount - 1) {\n return old\n }\n return {\n ...old,\n pageIndex\n }\n }, actions.pageChange)\n }\n\n const previousPage = () => {\n return gotoPage(pageIndex - 1)\n }\n\n const nextPage = () => {\n return gotoPage(pageIndex + 1)\n }\n\n const setPageSize = 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.setPageSize)\n }\n\n return {\n ...props,\n pages,\n pageOptions,\n page,\n canPreviousPage,\n canNextPage,\n gotoPage,\n previousPage,\n nextPage,\n setPageSize,\n pageIndex,\n pageSize\n }\n}\n","import PropTypes from 'prop-types'\n\nimport { getFirstDefined, sum } from '../utils'\n\nexport const actions = {}\n\nconst propTypes = {\n defaultFlex: PropTypes.number\n}\n\nexport const useFlexLayout = props => {\n PropTypes.checkPropTypes(propTypes, props, 'property', 'useFlexLayout')\n\n const {\n defaultFlex = 1,\n hooks: {\n columns: columnsHooks,\n getRowProps,\n getHeaderRowProps,\n getHeaderProps,\n getCellProps\n }\n } = props\n\n columnsHooks.push((columns, api) => {\n const visibleColumns = columns.filter(column => {\n column.visible =\n typeof column.show === 'function' ? column.show(api) : !!column.show\n return column.visible\n })\n\n const columnMeasurements = {}\n\n let sumWidth = 0\n visibleColumns.forEach(column => {\n const { width, minWidth } = getSizesForColumn(\n column,\n defaultFlex,\n undefined,\n undefined,\n api\n )\n if (width) {\n sumWidth += width\n } else if (minWidth) {\n sumWidth += minWidth\n } else {\n sumWidth += defaultFlex\n }\n })\n\n const rowStyles = {\n style: {\n display: 'flex',\n minWidth: `${sumWidth}px`\n }\n }\n\n api.rowStyles = rowStyles\n\n getRowProps.push(() => rowStyles)\n getHeaderRowProps.push(() => rowStyles)\n\n getHeaderProps.push(column => ({\n style: {\n boxSizing: 'border-box',\n ...getStylesForColumn(column, columnMeasurements, defaultFlex, api)\n }\n // [refKey]: el => {\n // renderedCellInfoRef.current[key] = {\n // column,\n // el\n // };\n // },\n }))\n\n getCellProps.push(cell => {\n return {\n style: {\n // display: 'block',\n // boxSizing: 'border-box',\n ...getStylesForColumn(\n cell.column,\n columnMeasurements,\n defaultFlex,\n undefined,\n api\n )\n }\n // [refKey]: el => {\n // renderedCellInfoRef.current[columnPathStr] = {\n // column,\n // el\n // };\n // }\n }\n })\n\n return columns\n })\n\n return props\n}\n\n// Utils\n\nfunction getStylesForColumn(column, columnMeasurements, defaultFlex, api) {\n const { flex, width, maxWidth } = getSizesForColumn(\n column,\n columnMeasurements,\n defaultFlex,\n api\n )\n\n return {\n flex: `${flex} 0 auto`,\n width: `${width}px`,\n maxWidth: `${maxWidth}px`\n }\n}\n\nfunction getSizesForColumn(\n { columns, id, width, minWidth, maxWidth },\n columnMeasurements,\n defaultFlex,\n api\n) {\n if (columns) {\n columns = columns\n .map(column =>\n getSizesForColumn(column, columnMeasurements, defaultFlex, api)\n )\n .filter(Boolean)\n\n if (!columns.length) {\n return false\n }\n\n const flex = sum(columns.map(col => col.flex))\n const width = sum(columns.map(col => col.width))\n const maxWidth = sum(columns.map(col => col.maxWidth))\n\n return {\n flex,\n width,\n maxWidth\n }\n }\n\n return {\n flex: width ? 0 : defaultFlex,\n width:\n width === 'auto'\n ? columnMeasurements[id] || defaultFlex\n : getFirstDefined(width, minWidth, defaultFlex),\n maxWidth\n }\n}\n\n// const resetRefs = () => {\n// if (debug) console.info(\"resetRefs\");\n// renderedCellInfoRef.current = {};\n// };\n\n// const calculateAutoWidths = () => {\n// RAF(() => {\n// const newColumnMeasurements = {};\n// Object.values(renderedCellInfoRef.current).forEach(({ column, el }) => {\n// if (!el) {\n// return;\n// }\n\n// let measurement = 0;\n\n// const measureChildren = children => {\n// if (children) {\n// [].slice.call(children).forEach(child => {\n// measurement = Math.max(\n// measurement,\n// Math.ceil(child.offsetWidth) || 0\n// );\n// measureChildren(child.children);\n// });\n// }\n// return measurement;\n// };\n\n// const parentDims = getElementDimensions(el);\n// measureChildren(el.children);\n\n// newColumnMeasurements[column.id] = Math.max(\n// newColumnMeasurements[column.id] || 0,\n// measurement + parentDims.paddingLeft + parentDims.paddingRight\n// );\n// });\n\n// const oldKeys = Object.keys(columnMeasurements);\n// const newKeys = Object.keys(newColumnMeasurements);\n\n// const needsUpdate =\n// oldKeys.length !== newKeys.length ||\n// oldKeys.some(key => {\n// return columnMeasurements[key] !== newColumnMeasurements[key];\n// });\n\n// if (needsUpdate) {\n// setState(old => {\n// return {\n// ...old,\n// columnMeasurements: newColumnMeasurements\n// };\n// }, actions.updateAutoWidth);\n// }\n// });\n// };\n","import { useState } from 'react'\n\n// Token pagination behaves a bit differently from\n// index based pagination. This hook aids in that process.\n\nexport const useTokenPagination = () => {\n const [pageToken, setPageToken] = useState()\n const [nextPageToken, setNextPageToken] = useState()\n const [previousPageTokens, setPreviousPageTokens] = useState([])\n const [pageIndex, setPageIndex] = useState(0)\n\n // Since we're using pagination tokens intead of index, we need\n // to be a bit clever with page-like navigation here.\n const nextPage = () => {\n setPageIndex(old => old + 1)\n setPreviousPageTokens(old => [...old, pageToken])\n setPageToken(nextPageToken)\n }\n\n const previousPage = () => {\n setPageIndex(old => old - 1)\n setPreviousPageTokens(old =>\n [...old]\n .reverse()\n .slice(1)\n .reverse()\n )\n setPageToken(previousPageTokens[previousPageTokens.length - 1])\n }\n\n const resetPagination = () => {\n setPageToken(undefined)\n setPageIndex(0)\n setNextPageToken(undefined)\n setPreviousPageTokens([])\n }\n\n const canPreviousPage = previousPageTokens.length\n const canNextPage = nextPageToken\n\n return {\n setNextPageToken,\n pageToken,\n pageIndex,\n previousPage,\n nextPage,\n canPreviousPage,\n canNextPage,\n resetPagination\n }\n}\n"],"names":["getBy","obj","path","def","val","pathObj","makePathArray","reduce","cursor","pathPart","e","defaultOrderByFn","arr","funcs","dirs","_toConsumableArray","sort","rowA","rowB","i","length","sortFn","desc","sortInt","index","defaultSortByFn","a","b","toLowerCase","getFirstDefined","arguments","defaultGroupByFn","rows","grouper","prev","row","resKey","values","Array","isArray","push","defaultFilterFn","id","value","column","undefined","String","includes","setBy","recurse","depth","key","target","_typeof","flexRender","Comp","props","Object","getPrototypeOf","isReactComponent","React","mergeProps","groups","forEach","style","className","rest","filter","Boolean","join","applyHooks","hooks","initial","args","next","applyPropHooks","sum","curr","flattenDeep","replace","split","newArr","defaultState","defaultReducer","old","newState","useTableState","initialState","overrides","reducer","useState","state","setState","useMemo","keys","updater","type","renderErr","propTypes","data","PropTypes","array","isRequired","debug","bool","useTable","checkPropTypes","userState","process","env","NODE_ENV","api","beforeRender","columns","headers","headerGroups","renderableRows","getTableProps","getRowProps","getHeaderRowProps","getHeaderProps","getCellProps","console","time","plugins","timeEnd","render","userProps","Error","headerGroup","header","visible","prepareRow","visibleColumns","cells","map","cell","columnPathStr","arrayOf","shape","Cell","any","Header","useColumns","userColumns","groupBy","info","columnTree","decorateColumnTree","parent","decorateColumn","flattenBy","maxDepth","removeChildColumns","buildGroup","parentColumns","hasParents","some","col","isFirst","latestParentColumn","reverse","originalID","placeholderColumn","makeHeaderGroups","g","find","findMaxDepth","Math","max","accessor","accessorString","error","show","childKey","flatColumns","d","subRowsKey","string","useRows","accessRow","originalRow","original","subRows","unpreparedAccessWarning","useSimpleLayout","columnsHooks","boxSizing","width","actions","addActions","acts","expanded","toggleExpanded","useExpanded","expandedKey","toggleExpandedByPath","set","existing","expandedRows","handleRow","parentPath","isExpanded","expandedDepth","findExpandedDepth","filters","setFilter","setAllFilters","filterFn","func","filterAll","canFilter","Filter","manualFilters","useFilters","disableFilters","filterValue","filteredRows","filterRows","entries","filteredSoFar","columnID","filterable","filterMethod","average","round","toggleGroupBy","aggregate","canGroupBy","Aggregated","groupByFn","manualGrouping","aggregations","object","useGroupBy","manualGroupBy","disableGrouping","userAggregations","grouped","toggle","getGroupByToggleProps","addGroupByToggleProps","onClick","persist","title","groupRecursively","groupByVal","columnValues","groupByID","sortBy","sortByChange","sortByFn","efaultSortDesc","manualSorting","disableSorting","defaultSortDesc","disableMultiSort","useSortBy","orderByFn","canSortBy","toggleSortBy","multi","action","resolvedDefaultSortDesc","existingSortBy","hasDescDefined","newSortBy","getSortByToggleProps","addSortByToggleProps","shiftKey","sorted","sortedIndex","findIndex","sortedDesc","sortMethodsByColumnID","sortMethod","sortData","sortedData","columnSortBy","pageSize","pageIndex","pageChange","manualPagination","usePagination","userPageCount","pageCount","useLayoutEffect","pages","end","slice","pageOptions","page","gotoPage","canPreviousPage","canNextPage","previousPage","nextPage","setPageSize","topRowIndex","floor","defaultFlex","number","useFlexLayout","columnMeasurements","sumWidth","getSizesForColumn","minWidth","rowStyles","display","getStylesForColumn","flex","maxWidth","useTokenPagination","pageToken","setPageToken","nextPageToken","setNextPageToken","previousPageTokens","setPreviousPageTokens","setPageIndex","resetPagination"],"mappings":"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"} \ No newline at end of file diff --git a/src/hooks/useFlexLayout.js b/src/hooks/useFlexLayout.js index b117c41..db400b4 100755 --- a/src/hooks/useFlexLayout.js +++ b/src/hooks/useFlexLayout.js @@ -23,12 +23,7 @@ export const useFlexLayout = props => { } = props columnsHooks.push((columns, api) => { - const visibleColumns = columns.filter(column => { - column.visible = - typeof column.show === 'function' ? column.show(api) : !!column.show - return column.visible - }) - + const visibleColumns = columns.filter(column => column.visible) const columnMeasurements = {} let sumWidth = 0 diff --git a/src/hooks/useSimpleLayout.js b/src/hooks/useSimpleLayout.js index a5d1c7f..c126323 100644 --- a/src/hooks/useSimpleLayout.js +++ b/src/hooks/useSimpleLayout.js @@ -1,19 +1,9 @@ - export const useSimpleLayout = props => { const { - hooks: { - columns: columnsHooks, - getHeaderProps, - getCellProps - } + hooks: { columns: columnsHooks, getHeaderProps, getCellProps } } = props - columnsHooks.push((columns, api) => { - columns.forEach(column => { - column.visible = - typeof column.show === 'function' ? column.show(api) : !!column.show - }) - + columnsHooks.push(columns => { getHeaderProps.push(column => ({ style: { boxSizing: 'border-box', @@ -25,7 +15,8 @@ export const useSimpleLayout = props => { return { style: { boxSizing: 'border-box', - width: cell.column.width !== undefined ? `${cell.column.width}px` : 'auto' + width: + cell.column.width !== undefined ? `${cell.column.width}px` : 'auto' } } }) diff --git a/src/hooks/useTable.js b/src/hooks/useTable.js index 419fbf3..54c7528 100755 --- a/src/hooks/useTable.js +++ b/src/hooks/useTable.js @@ -62,6 +62,11 @@ export const useTable = (props, ...plugins) => { applyHooks(api.hooks.beforeRender, undefined, api) if (debug) console.timeEnd('hooks.beforeRender') + api.columns.forEach(column => { + column.visible = + typeof column.show === 'function' ? column.show(api) : !!column.show + }) + if (debug) console.time('hooks.columns') api.columns = applyHooks(api.hooks.columns, api.columns, api) if (debug) console.timeEnd('hooks.columns')