material-react-table 0.21.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"material-react-table.cjs.production.min.js","sources":["../src/localization.ts","../src/icons.ts","../src/buttons/MRT_ExpandAllButton.tsx","../src/buttons/MRT_ExpandButton.tsx","../src/menus/MRT_FilterOptionMenu.tsx","../node_modules/react-dnd/src/core/DndContext.ts","../node_modules/redux/es/redux.js","../node_modules/@react-dnd/invariant/src/index.ts","../node_modules/dnd-core/src/utils/js_utils.ts","../node_modules/dnd-core/src/actions/dragDrop/types.ts","../node_modules/dnd-core/src/actions/dragDrop/local/setClientOffset.ts","../node_modules/dnd-core/src/actions/dragDrop/beginDrag.ts","../node_modules/dnd-core/src/actions/dragDrop/drop.ts","../node_modules/dnd-core/src/actions/dragDrop/endDrag.ts","../node_modules/dnd-core/src/utils/matchesType.ts","../node_modules/dnd-core/src/actions/dragDrop/hover.ts","../node_modules/dnd-core/src/actions/dragDrop/publishDragSource.ts","../node_modules/dnd-core/src/classes/DragDropManagerImpl.ts","../node_modules/dnd-core/src/actions/dragDrop/index.ts","../node_modules/dnd-core/src/utils/coords.ts","../node_modules/dnd-core/src/utils/dirtiness.ts","../node_modules/dnd-core/src/classes/DragDropMonitorImpl.ts","../node_modules/@react-dnd/asap/src/makeRequestCall.ts","../node_modules/@react-dnd/asap/src/RawTask.ts","../node_modules/@react-dnd/asap/src/asap.ts","../node_modules/@react-dnd/asap/src/AsapQueue.ts","../node_modules/@react-dnd/asap/src/TaskFactory.ts","../node_modules/dnd-core/src/actions/registry.ts","../node_modules/dnd-core/src/contracts.ts","../node_modules/dnd-core/src/interfaces.ts","../node_modules/dnd-core/src/utils/getNextUniqueId.ts","../node_modules/dnd-core/src/classes/HandlerRegistryImpl.ts","../node_modules/dnd-core/src/utils/equality.ts","../node_modules/dnd-core/src/reducers/dirtyHandlerIds.ts","../node_modules/dnd-core/src/reducers/dragOffset.ts","../node_modules/dnd-core/src/reducers/dragOperation.ts","../node_modules/dnd-core/src/reducers/refCount.ts","../node_modules/dnd-core/src/reducers/stateId.ts","../node_modules/dnd-core/src/reducers/index.ts","../node_modules/dnd-core/src/createDragDropManager.ts","../node_modules/react-dnd/src/core/DndProvider.tsx","../node_modules/react-dnd/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/react-dnd/src/hooks/useCollectedProps.ts","../node_modules/react-dnd/src/hooks/useMonitorOutput.ts","../node_modules/react-dnd/src/hooks/useCollector.ts","../node_modules/fast-deep-equal/index.js","../node_modules/react-dnd/src/hooks/useOptionalFactory.ts","../node_modules/react-dnd/src/hooks/useDrag/connectors.ts","../node_modules/react-dnd/src/internals/DragSourceMonitorImpl.ts","../node_modules/react-dnd/src/internals/DropTargetMonitorImpl.ts","../node_modules/@react-dnd/shallowequal/src/index.ts","../node_modules/react-dnd/src/internals/isRef.ts","../node_modules/react-dnd/src/internals/wrapConnectorHooks.ts","../node_modules/react-dnd/src/internals/SourceConnector.ts","../node_modules/react-dnd/src/internals/TargetConnector.ts","../node_modules/react-dnd/src/hooks/useDragDropManager.ts","../node_modules/react-dnd/src/hooks/useDrag/DragSourceImpl.ts","../node_modules/react-dnd/src/hooks/useDrag/useDrag.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceMonitor.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSourceConnector.ts","../node_modules/react-dnd/src/hooks/useDrag/useRegisteredDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragSource.ts","../node_modules/react-dnd/src/hooks/useDrag/useDragType.ts","../node_modules/react-dnd/src/internals/registration.ts","../node_modules/react-dnd/src/hooks/useDrop/connectors.ts","../node_modules/react-dnd/src/hooks/useDrop/DropTargetImpl.ts","../node_modules/react-dnd/src/hooks/useDrop/useDrop.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetMonitor.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTargetConnector.ts","../node_modules/react-dnd/src/hooks/useDrop/useRegisteredDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useDropTarget.ts","../node_modules/react-dnd/src/hooks/useDrop/useAccept.ts","../src/buttons/MRT_ColumnPinningButtons.tsx","../src/buttons/MRT_GrabHandleButton.tsx","../src/filtersFns.ts","../src/sortingFns.ts","../src/utils.ts","../src/menus/MRT_ShowHideColumnsMenuItems.tsx","../src/menus/MRT_ShowHideColumnsMenu.tsx","../src/menus/MRT_ColumnActionMenu.tsx","../src/menus/MRT_RowActionMenu.tsx","../src/buttons/MRT_EditActionButtons.tsx","../src/buttons/MRT_ToggleRowActionMenuButton.tsx","../src/inputs/MRT_SelectCheckbox.tsx","../node_modules/react-dnd-html5-backend/src/utils/js_utils.ts","../node_modules/react-dnd-html5-backend/src/EnterLeaveCounter.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/NativeDragSource.ts","../node_modules/react-dnd-html5-backend/src/NativeTypes.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/getDataFromDataTransfer.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/nativeTypesConfig.ts","../node_modules/react-dnd-html5-backend/src/NativeDragSources/index.ts","../node_modules/react-dnd-html5-backend/src/BrowserDetector.ts","../node_modules/react-dnd-html5-backend/src/MonotonicInterpolant.ts","../node_modules/react-dnd-html5-backend/src/OffsetUtils.ts","../node_modules/react-dnd-html5-backend/src/OptionsReader.ts","../node_modules/react-dnd-html5-backend/src/HTML5BackendImpl.ts","../node_modules/react-dnd-html5-backend/src/index.ts","../src/buttons/MRT_FullScreenToggleButton.tsx","../src/buttons/MRT_ShowHideColumnsButton.tsx","../src/buttons/MRT_ToggleDensePaddingButton.tsx","../src/buttons/MRT_ToggleFiltersButton.tsx","../src/buttons/MRT_ToggleGlobalFilterButton.tsx","../src/inputs/MRT_GlobalFilterTextField.tsx","../src/toolbar/MRT_ToolbarInternalButtons.tsx","../src/toolbar/MRT_TablePagination.tsx","../src/toolbar/MRT_ToolbarAlertBanner.tsx","../src/toolbar/MRT_LinearProgressBar.tsx","../src/toolbar/MRT_ToolbarTop.tsx","../src/toolbar/MRT_ToolbarBottom.tsx","../src/inputs/MRT_FilterTextField.tsx","../src/inputs/MRT_FilterRangeFields.tsx","../src/head/MRT_TableHeadCellFilterContainer.tsx","../src/head/MRT_TableHeadCellFilterLabel.tsx","../src/head/MRT_TableHeadCellResizeHandle.tsx","../src/head/MRT_TableHeadCellSortLabel.tsx","../src/head/MRT_TableHeadCellColumnActionsButton.tsx","../src/head/MRT_TableHeadCell.tsx","../src/head/MRT_DraggableTableHeadCell.tsx","../src/head/MRT_TableHeadRow.tsx","../src/head/MRT_TableHead.tsx","../node_modules/react-virtual/node_modules/@reach/observe-rect/dist/observe-rect.esm.js","../node_modules/react-virtual/src/useIsomorphicLayoutEffect.js","../node_modules/react-virtual/src/useRect.js","../node_modules/react-virtual/src/index.js","../src/inputs/MRT_EditCellTextField.tsx","../src/buttons/MRT_CopyButton.tsx","../src/body/MRT_TableBodyCell.tsx","../src/body/MRT_TableDetailPanel.tsx","../src/body/MRT_TableBodyRow.tsx","../src/body/MRT_TableBody.tsx","../src/footer/MRT_TableFooterCell.tsx","../src/footer/MRT_TableFooterRow.tsx","../src/footer/MRT_TableFooter.tsx","../src/table/MRT_Table.tsx","../src/table/MRT_TableContainer.tsx","../src/table/MRT_TablePaper.tsx","../src/table/MRT_TableRoot.tsx","../src/MaterialReactTable.tsx"],"sourcesContent":["export interface MRT_Localization {\n actions: string;\n and: string;\n cancel: string;\n changeFilterMode: string;\n changeSearchMode: string;\n clearFilter: string;\n clearSearch: string;\n clearSort: string;\n clickToCopy: string;\n columnActions: string;\n copiedToClipboard: string;\n edit: string;\n expand: string;\n expandAll: string;\n filterBetween: string;\n filterByColumn: string;\n filterContains: string;\n filterEmpty: string;\n filterEndsWith: string;\n filterEquals: string;\n filterFuzzy: string;\n filterGreaterThan: string;\n filterLessThan: string;\n filterMode: string;\n filterNotEmpty: string;\n filterNotEquals: string;\n filterStartsWith: string;\n filteringByColumn: string;\n grab: string;\n groupByColumn: string;\n groupedBy: string;\n hideAll: string;\n hideColumn: string;\n max: string;\n min: string;\n pinToLeft: string;\n pinToRight: string;\n resetColumnSize: string;\n resetOrder: string;\n rowActions: string;\n rowNumber: string;\n rowNumbers: string;\n save: string;\n search: string;\n select: string;\n selectedCountOfRowCountRowsSelected: string;\n showAll: string;\n showAllColumns: string;\n showHideColumns: string;\n showHideFilters: string;\n showHideSearch: string;\n sortByColumnAsc: string;\n sortByColumnDesc: string;\n sortedByColumnAsc: string;\n sortedByColumnDesc: string;\n thenBy: string;\n toggleDensity: string;\n toggleFullScreen: string;\n toggleSelectAll: string;\n toggleSelectRow: string;\n toggleVisibility: string;\n ungroupByColumn: string;\n unpin: string;\n unpinAll: string;\n unsorted: string;\n}\n\nexport const MRT_DefaultLocalization_EN: MRT_Localization = {\n actions: 'Actions',\n and: 'and',\n cancel: 'Cancel',\n changeFilterMode: 'Change filter mode',\n changeSearchMode: 'Change search mode',\n clearFilter: 'Clear filter',\n clearSearch: 'Clear search',\n clearSort: 'Clear sort',\n clickToCopy: 'Click to copy',\n columnActions: 'Column Actions',\n copiedToClipboard: 'Copied to clipboard',\n edit: 'Edit',\n expand: 'Expand',\n expandAll: 'Expand all',\n filterBetween: 'Between',\n filterByColumn: 'Filter by {column}',\n filterContains: 'Contains',\n filterEmpty: 'Empty',\n filterEndsWith: 'Ends With',\n filterEquals: 'Equals',\n filterFuzzy: 'Fuzzy',\n filterGreaterThan: 'Greater Than',\n filterLessThan: 'Less Than',\n filterMode: 'Filter Mode: {filterType}',\n filterNotEmpty: 'Not Empty',\n filterNotEquals: 'Not Equals',\n filterStartsWith: 'Starts With',\n filteringByColumn: 'Filtering by {column} - {filterType} {filterValue}',\n grab: 'Grab',\n groupByColumn: 'Group by {column}',\n groupedBy: 'Grouped by ',\n hideAll: 'Hide all',\n hideColumn: 'Hide {column} column',\n max: 'Max',\n min: 'Min',\n pinToLeft: 'Pin to left',\n pinToRight: 'Pin to right',\n resetColumnSize: 'Reset column size',\n resetOrder: 'Reset order',\n rowActions: 'Row Actions',\n rowNumber: '#',\n rowNumbers: 'Row Numbers',\n save: 'Save',\n search: 'Search',\n selectedCountOfRowCountRowsSelected:\n '{selectedCount} of {rowCount} row(s) selected',\n select: 'Select',\n showAll: 'Show all',\n showAllColumns: 'Show all columns',\n showHideColumns: 'Show/Hide columns',\n showHideFilters: 'Show/Hide filters',\n showHideSearch: 'Show/Hide search',\n sortByColumnAsc: 'Sort by {column} ascending',\n sortByColumnDesc: 'Sort by {column} descending',\n sortedByColumnAsc: 'Sorted by {column} ascending',\n sortedByColumnDesc: 'Sorted by {column} descending',\n thenBy: ', then by ',\n toggleDensity: 'Toggle density',\n toggleFullScreen: 'Toggle full screen',\n toggleSelectAll: 'Toggle select all',\n toggleSelectRow: 'Toggle select row',\n toggleVisibility: 'Toggle visibility',\n ungroupByColumn: 'Ungroup by {column}',\n unpin: 'Unpin',\n unpinAll: 'Unpin all',\n unsorted: 'Unsorted',\n};\n","import {\n ArrowRight,\n Cancel,\n CheckBox,\n ClearAll,\n Close,\n DensityLarge,\n DensityMedium,\n DensitySmall,\n DragHandle,\n DynamicFeed,\n Edit,\n ExpandLess,\n ExpandMore,\n FilterAlt,\n FilterAltOff,\n FilterList,\n FilterListOff,\n Fullscreen,\n FullscreenExit,\n KeyboardDoubleArrowDown,\n MoreHoriz,\n MoreVert,\n PushPin,\n RestartAlt,\n Save,\n Search,\n SearchOff,\n Sort,\n ViewColumn,\n VisibilityOff,\n} from '@mui/icons-material';\n\nexport interface MRT_Icons {\n ArrowRightIcon: any;\n CancelIcon: any;\n CheckBoxIcon: any;\n ClearAllIcon: any;\n CloseIcon: any;\n DensityLargeIcon: any;\n DensityMediumIcon: any;\n DensitySmallIcon: any;\n KeyboardDoubleArrowDownIcon: any;\n DragHandleIcon: any;\n DynamicFeedIcon: any;\n EditIcon: any;\n ExpandLessIcon: any;\n ExpandMoreIcon: any;\n FilterAltIcon: any;\n FilterAltOffIcon: any;\n FilterListIcon: any;\n FilterListOffIcon: any;\n FullscreenExitIcon: any;\n FullscreenIcon: any;\n MoreHorizIcon: any;\n MoreVertIcon: any;\n PushPinIcon: any;\n RestartAltIcon: any;\n SaveIcon: any;\n SearchIcon: any;\n SearchOffIcon: any;\n SortIcon: any;\n ViewColumnIcon: any;\n VisibilityOffIcon: any;\n}\n\nexport const MRT_Default_Icons: MRT_Icons = {\n ArrowRightIcon: ArrowRight,\n CancelIcon: Cancel,\n CheckBoxIcon: CheckBox,\n ClearAllIcon: ClearAll,\n CloseIcon: Close,\n DensityLargeIcon: DensityLarge,\n DensityMediumIcon: DensityMedium,\n DensitySmallIcon: DensitySmall,\n DragHandleIcon: DragHandle,\n DynamicFeedIcon: DynamicFeed,\n EditIcon: Edit,\n ExpandLessIcon: ExpandLess,\n ExpandMoreIcon: ExpandMore,\n FilterAltIcon: FilterAlt,\n FilterAltOffIcon: FilterAltOff,\n FilterListIcon: FilterList,\n FilterListOffIcon: FilterListOff,\n FullscreenExitIcon: FullscreenExit,\n FullscreenIcon: Fullscreen,\n KeyboardDoubleArrowDownIcon: KeyboardDoubleArrowDown,\n MoreHorizIcon: MoreHoriz,\n MoreVertIcon: MoreVert,\n PushPinIcon: PushPin,\n RestartAltIcon: RestartAlt,\n SaveIcon: Save,\n SearchIcon: Search,\n SearchOffIcon: SearchOff,\n SortIcon: Sort,\n ViewColumnIcon: ViewColumn,\n VisibilityOffIcon: VisibilityOff,\n};\n","import React, { FC } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ExpandAllButton: FC<Props> = ({ table }) => {\n const {\n getIsAllRowsExpanded,\n getIsSomeRowsExpanded,\n getCanSomeRowsExpand,\n getState,\n options: {\n icons: { KeyboardDoubleArrowDownIcon },\n localization,\n muiExpandAllButtonProps,\n renderDetailPanel,\n },\n toggleAllRowsExpanded,\n } = table;\n const { density } = getState();\n\n const iconButtonProps =\n muiExpandAllButtonProps instanceof Function\n ? muiExpandAllButtonProps({ table })\n : muiExpandAllButtonProps;\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={localization.expandAll}\n >\n <span>\n <IconButton\n aria-label={localization.expandAll}\n disabled={!getCanSomeRowsExpand() && !renderDetailPanel}\n onClick={() => toggleAllRowsExpanded(!getIsAllRowsExpanded())}\n {...iconButtonProps}\n sx={{\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...iconButtonProps?.sx,\n }}\n >\n <KeyboardDoubleArrowDownIcon\n style={{\n transform: `rotate(${\n getIsAllRowsExpanded()\n ? -180\n : getIsSomeRowsExpanded()\n ? -90\n : 0\n }deg)`,\n transition: 'transform 0.2s',\n }}\n />\n </IconButton>\n </span>\n </Tooltip>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ExpandButton: FC<Props> = ({ row, table }) => {\n const {\n getState,\n options: {\n icons: { ExpandMoreIcon },\n localization,\n muiExpandButtonProps,\n renderDetailPanel,\n },\n } = table;\n const { density } = getState();\n\n const iconButtonProps =\n muiExpandButtonProps instanceof Function\n ? muiExpandButtonProps({ table, row })\n : muiExpandButtonProps;\n\n const handleToggleExpand = () => {\n row.toggleExpanded();\n };\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={localization.expand}\n >\n <span>\n <IconButton\n aria-label={localization.expand}\n disabled={!row.getCanExpand() && !renderDetailPanel}\n onClick={handleToggleExpand}\n {...iconButtonProps}\n sx={{\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...iconButtonProps?.sx,\n }}\n >\n <ExpandMoreIcon\n style={{\n transform: `rotate(${\n !row.getCanExpand() && !renderDetailPanel\n ? -90\n : row.getIsExpanded()\n ? -180\n : 0\n }deg)`,\n transition: 'transform 0.2s',\n }}\n />\n </IconButton>\n </span>\n </Tooltip>\n );\n};\n","import React, { FC, useMemo } from 'react';\nimport { Menu, MenuItem } from '@mui/material';\nimport type { MRT_FilterOption, MRT_Header, MRT_TableInstance } from '..';\n\nconst commonMenuItemStyles = {\n py: '6px',\n my: 0,\n alignItems: 'center',\n};\n\ninterface Props {\n anchorEl: HTMLElement | null;\n header?: MRT_Header;\n onSelect?: () => void;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance;\n}\n\nexport const MRT_FilterOptionMenu: FC<Props> = ({\n anchorEl,\n header,\n onSelect,\n setAnchorEl,\n table,\n}) => {\n const {\n getState,\n options: {\n enabledGlobalFilterOptions,\n enabledColumnFilterOptions,\n localization,\n },\n setCurrentFilterFns,\n setCurrentGlobalFilterFn,\n } = table;\n const { currentFilterFns, currentGlobalFilterFn, density } = getState();\n const { column } = header ?? {};\n const { columnDef } = column ?? {};\n\n const allowedColumnFilterOptions =\n columnDef?.enabledColumnFilterOptions ?? enabledColumnFilterOptions;\n\n const filterOptions = useMemo(\n () =>\n [\n {\n option: 'fuzzy',\n label: localization.filterFuzzy,\n divider: false,\n },\n {\n option: 'contains',\n label: localization.filterContains,\n divider: false,\n },\n {\n option: 'startsWith',\n label: localization.filterStartsWith,\n divider: false,\n },\n {\n option: 'endsWith',\n label: localization.filterEndsWith,\n divider: true,\n },\n {\n option: 'equals',\n label: localization.filterEquals,\n divider: false,\n },\n {\n option: 'notEquals',\n label: localization.filterNotEquals,\n divider: true,\n },\n {\n option: 'between',\n label: localization.filterBetween,\n divider: false,\n },\n {\n option: 'greaterThan',\n label: localization.filterGreaterThan,\n divider: false,\n },\n {\n option: 'lessThan',\n label: localization.filterLessThan,\n divider: true,\n },\n {\n option: 'empty',\n label: localization.filterEmpty,\n divider: false,\n },\n {\n option: 'notEmpty',\n label: localization.filterNotEmpty,\n divider: false,\n },\n ].filter((filterType) =>\n columnDef\n ? allowedColumnFilterOptions === undefined ||\n allowedColumnFilterOptions?.includes(filterType.option)\n : (!enabledGlobalFilterOptions ||\n enabledGlobalFilterOptions.includes(filterType.option)) &&\n ['fuzzy', 'contains'].includes(filterType.option),\n ) as Array<{\n option: MRT_FilterOption;\n label: string;\n divider: boolean;\n fn: Function;\n }>,\n [],\n );\n\n const handleSelectFilterType = (option: MRT_FilterOption) => {\n if (header && column) {\n setCurrentFilterFns((prev: { [key: string]: any }) => ({\n ...prev,\n [header.id]: option,\n }));\n if (['empty', 'notEmpty'].includes(option)) {\n column.setFilterValue(' ');\n } else if (option === 'between') {\n column.setFilterValue(['', '']);\n } else {\n column.setFilterValue('');\n }\n } else {\n setCurrentGlobalFilterFn(option);\n }\n setAnchorEl(null);\n onSelect?.();\n };\n\n const filterOption = !!header\n ? currentFilterFns[header.id]\n : currentGlobalFilterFn;\n\n return (\n <Menu\n anchorEl={anchorEl}\n anchorOrigin={{ vertical: 'center', horizontal: 'right' }}\n onClose={() => setAnchorEl(null)}\n open={!!anchorEl}\n MenuListProps={{\n dense: density === 'compact',\n }}\n >\n {filterOptions.map(({ option, label, divider }, index) => (\n <MenuItem\n divider={divider}\n key={index}\n onClick={() => handleSelectFilterType(option)}\n selected={option === filterOption}\n sx={commonMenuItemStyles}\n value={option}\n >\n {label}\n </MenuItem>\n ))}\n </Menu>\n );\n};\n","import type { DragDropManager } from 'dnd-core'\nimport { createContext } from 'react'\n\n/**\n * The React context type\n */\nexport interface DndContextType {\n\tdragDropManager: DragDropManager | undefined\n}\n\n/**\n * Create the React Context\n */\nexport const DndContext = createContext<DndContextType>({\n\tdragDropManager: undefined,\n})\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nexport function invariant(condition: any, format: string, ...args: any[]) {\n\tif (isProduction()) {\n\t\tif (format === undefined) {\n\t\t\tthrow new Error('invariant requires an error message argument')\n\t\t}\n\t}\n\n\tif (!condition) {\n\t\tlet error\n\t\tif (format === undefined) {\n\t\t\terror = new Error(\n\t\t\t\t'Minified exception occurred; use the non-minified dev environment ' +\n\t\t\t\t\t'for the full error message and additional helpful warnings.',\n\t\t\t)\n\t\t} else {\n\t\t\tlet argIndex = 0\n\t\t\terror = new Error(\n\t\t\t\tformat.replace(/%s/g, function () {\n\t\t\t\t\treturn args[argIndex++]\n\t\t\t\t}),\n\t\t\t)\n\t\t\terror.name = 'Invariant Violation'\n\t\t}\n\n\t\t;(error as any).framesToPop = 1 // we don't care about invariant's own frame\n\t\tthrow error\n\t}\n}\n\nfunction isProduction() {\n\treturn (\n\t\ttypeof process !== 'undefined' && process.env['NODE_ENV'] === 'production'\n\t)\n}\n","// cheap lodash replacements\n\n/**\n * drop-in replacement for _.get\n * @param obj\n * @param path\n * @param defaultValue\n */\nexport function get<T>(obj: any, path: string, defaultValue: T): T {\n\treturn path\n\t\t.split('.')\n\t\t.reduce((a, c) => (a && a[c] ? a[c] : defaultValue || null), obj) as T\n}\n\n/**\n * drop-in replacement for _.without\n */\nexport function without<T>(items: T[], item: T): T[] {\n\treturn items.filter((i) => i !== item)\n}\n\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nexport function isString(input: any): boolean {\n\treturn typeof input === 'string'\n}\n\n/**\n * drop-in replacement for _.isString\n * @param input\n */\nexport function isObject(input: any): boolean {\n\treturn typeof input === 'object'\n}\n\n/**\n * replacement for _.xor\n * @param itemsA\n * @param itemsB\n */\nexport function xor<T extends string | number>(itemsA: T[], itemsB: T[]): T[] {\n\tconst map = new Map<T, number>()\n\tconst insertItem = (item: T) => {\n\t\tmap.set(item, map.has(item) ? (map.get(item) as number) + 1 : 1)\n\t}\n\titemsA.forEach(insertItem)\n\titemsB.forEach(insertItem)\n\n\tconst result: T[] = []\n\tmap.forEach((count, key) => {\n\t\tif (count === 1) {\n\t\t\tresult.push(key)\n\t\t}\n\t})\n\treturn result\n}\n\n/**\n * replacement for _.intersection\n * @param itemsA\n * @param itemsB\n */\nexport function intersection<T>(itemsA: T[], itemsB: T[]): T[] {\n\treturn itemsA.filter((t) => itemsB.indexOf(t) > -1)\n}\n","export const INIT_COORDS = 'dnd-core/INIT_COORDS'\nexport const BEGIN_DRAG = 'dnd-core/BEGIN_DRAG'\nexport const PUBLISH_DRAG_SOURCE = 'dnd-core/PUBLISH_DRAG_SOURCE'\nexport const HOVER = 'dnd-core/HOVER'\nexport const DROP = 'dnd-core/DROP'\nexport const END_DRAG = 'dnd-core/END_DRAG'\n","import type { AnyAction } from 'redux'\n\nimport type { XYCoord } from '../../../interfaces.js'\nimport { INIT_COORDS } from '../types.js'\n\nexport function setClientOffset(\n\tclientOffset: XYCoord | null | undefined,\n\tsourceClientOffset?: XYCoord | null | undefined,\n): AnyAction {\n\treturn {\n\t\ttype: INIT_COORDS,\n\t\tpayload: {\n\t\t\tsourceClientOffset: sourceClientOffset || null,\n\t\t\tclientOffset: clientOffset || null,\n\t\t},\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tBeginDragOptions,\n\tBeginDragPayload,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tXYCoord,\n} from '../../interfaces.js'\nimport { isObject } from '../../utils/js_utils.js'\nimport { setClientOffset } from './local/setClientOffset.js'\nimport { BEGIN_DRAG, INIT_COORDS } from './types.js'\n\nconst ResetCoordinatesAction = {\n\ttype: INIT_COORDS,\n\tpayload: {\n\t\tclientOffset: null,\n\t\tsourceClientOffset: null,\n\t},\n}\n\nexport function createBeginDrag(manager: DragDropManager) {\n\treturn function beginDrag(\n\t\tsourceIds: Identifier[] = [],\n\t\toptions: BeginDragOptions = {\n\t\t\tpublishSource: true,\n\t\t},\n\t): Action<BeginDragPayload> | undefined {\n\t\tconst {\n\t\t\tpublishSource = true,\n\t\t\tclientOffset,\n\t\t\tgetSourceClientOffset,\n\t\t}: BeginDragOptions = options\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\n\t\t// Initialize the coordinates using the client offset\n\t\tmanager.dispatch(setClientOffset(clientOffset))\n\n\t\tverifyInvariants(sourceIds, monitor, registry)\n\n\t\t// Get the draggable source\n\t\tconst sourceId = getDraggableSource(sourceIds, monitor)\n\t\tif (sourceId == null) {\n\t\t\tmanager.dispatch(ResetCoordinatesAction)\n\t\t\treturn\n\t\t}\n\n\t\t// Get the source client offset\n\t\tlet sourceClientOffset: XYCoord | null = null\n\t\tif (clientOffset) {\n\t\t\tif (!getSourceClientOffset) {\n\t\t\t\tthrow new Error('getSourceClientOffset must be defined')\n\t\t\t}\n\t\t\tverifyGetSourceClientOffsetIsFunction(getSourceClientOffset)\n\t\t\tsourceClientOffset = getSourceClientOffset(sourceId)\n\t\t}\n\n\t\t// Initialize the full coordinates\n\t\tmanager.dispatch(setClientOffset(clientOffset, sourceClientOffset))\n\n\t\tconst source = registry.getSource(sourceId)\n\t\tconst item = source.beginDrag(monitor, sourceId)\n\t\t// If source.beginDrag returns null, this is an indicator to cancel the drag\n\t\tif (item == null) {\n\t\t\treturn undefined\n\t\t}\n\t\tverifyItemIsObject(item)\n\t\tregistry.pinSource(sourceId)\n\n\t\tconst itemType = registry.getSourceType(sourceId)\n\t\treturn {\n\t\t\ttype: BEGIN_DRAG,\n\t\t\tpayload: {\n\t\t\t\titemType,\n\t\t\t\titem,\n\t\t\t\tsourceId,\n\t\t\t\tclientOffset: clientOffset || null,\n\t\t\t\tsourceClientOffset: sourceClientOffset || null,\n\t\t\t\tisSourcePublic: !!publishSource,\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunction verifyInvariants(\n\tsourceIds: Identifier[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\tinvariant(!monitor.isDragging(), 'Cannot call beginDrag while dragging.')\n\tsourceIds.forEach(function (sourceId) {\n\t\tinvariant(\n\t\t\tregistry.getSource(sourceId),\n\t\t\t'Expected sourceIds to be registered.',\n\t\t)\n\t})\n}\n\nfunction verifyGetSourceClientOffsetIsFunction(getSourceClientOffset: any) {\n\tinvariant(\n\t\ttypeof getSourceClientOffset === 'function',\n\t\t'When clientOffset is provided, getSourceClientOffset must be a function.',\n\t)\n}\n\nfunction verifyItemIsObject(item: any) {\n\tinvariant(isObject(item), 'Item must be an object.')\n}\n\nfunction getDraggableSource(sourceIds: Identifier[], monitor: DragDropMonitor) {\n\tlet sourceId = null\n\tfor (let i = sourceIds.length - 1; i >= 0; i--) {\n\t\tif (monitor.canDragSource(sourceIds[i])) {\n\t\t\tsourceId = sourceIds[i]\n\t\t\tbreak\n\t\t}\n\t}\n\treturn sourceId\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tDragDropManager,\n\tDragDropMonitor,\n\tDropPayload,\n\tHandlerRegistry,\n\tIdentifier,\n} from '../../interfaces.js'\nimport { isObject } from '../../utils/js_utils.js'\nimport { DROP } from './types.js'\n\nexport function createDrop(manager: DragDropManager) {\n\treturn function drop(options = {}): void {\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tverifyInvariants(monitor)\n\t\tconst targetIds = getDroppableTargets(monitor)\n\n\t\t// Multiple actions are dispatched here, which is why this doesn't return an action\n\t\ttargetIds.forEach((targetId, index) => {\n\t\t\tconst dropResult = determineDropResult(targetId, index, registry, monitor)\n\t\t\tconst action: Action<DropPayload> = {\n\t\t\t\ttype: DROP,\n\t\t\t\tpayload: {\n\t\t\t\t\tdropResult: {\n\t\t\t\t\t\t...options,\n\t\t\t\t\t\t...dropResult,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t\tmanager.dispatch(action)\n\t\t})\n\t}\n}\n\nfunction verifyInvariants(monitor: DragDropMonitor) {\n\tinvariant(monitor.isDragging(), 'Cannot call drop while not dragging.')\n\tinvariant(\n\t\t!monitor.didDrop(),\n\t\t'Cannot call drop twice during one drag operation.',\n\t)\n}\n\nfunction determineDropResult(\n\ttargetId: Identifier,\n\tindex: number,\n\tregistry: HandlerRegistry,\n\tmonitor: DragDropMonitor,\n) {\n\tconst target = registry.getTarget(targetId)\n\tlet dropResult = target ? target.drop(monitor, targetId) : undefined\n\tverifyDropResultType(dropResult)\n\tif (typeof dropResult === 'undefined') {\n\t\tdropResult = index === 0 ? {} : monitor.getDropResult()\n\t}\n\treturn dropResult\n}\n\nfunction verifyDropResultType(dropResult: any) {\n\tinvariant(\n\t\ttypeof dropResult === 'undefined' || isObject(dropResult),\n\t\t'Drop result must either be an object or undefined.',\n\t)\n}\n\nfunction getDroppableTargets(monitor: DragDropMonitor) {\n\tconst targetIds = monitor\n\t\t.getTargetIds()\n\t\t.filter(monitor.canDropOnTarget, monitor)\n\ttargetIds.reverse()\n\treturn targetIds\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tSentinelAction,\n} from '../../interfaces.js'\nimport { END_DRAG } from './types.js'\n\nexport function createEndDrag(manager: DragDropManager) {\n\treturn function endDrag(): SentinelAction {\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tverifyIsDragging(monitor)\n\n\t\tconst sourceId = monitor.getSourceId()\n\t\tif (sourceId != null) {\n\t\t\tconst source = registry.getSource(sourceId, true)\n\t\t\tsource.endDrag(monitor, sourceId)\n\t\t\tregistry.unpinSource()\n\t\t}\n\t\treturn { type: END_DRAG }\n\t}\n}\n\nfunction verifyIsDragging(monitor: DragDropMonitor) {\n\tinvariant(monitor.isDragging(), 'Cannot call endDrag while not dragging.')\n}\n","import type { Identifier } from '../interfaces.js'\n\nexport function matchesType(\n\ttargetType: Identifier | Identifier[] | null,\n\tdraggedItemType: Identifier | null,\n): boolean {\n\tif (draggedItemType === null) {\n\t\treturn targetType === null\n\t}\n\treturn Array.isArray(targetType)\n\t\t? (targetType as Identifier[]).some((t) => t === draggedItemType)\n\t\t: targetType === draggedItemType\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tAction,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tHoverOptions,\n\tHoverPayload,\n\tIdentifier,\n} from '../../interfaces.js'\nimport { matchesType } from '../../utils/matchesType.js'\nimport { HOVER } from './types.js'\n\nexport function createHover(manager: DragDropManager) {\n\treturn function hover(\n\t\ttargetIdsArg: string[],\n\t\t{ clientOffset }: HoverOptions = {},\n\t): Action<HoverPayload> {\n\t\tverifyTargetIdsIsArray(targetIdsArg)\n\t\tconst targetIds = targetIdsArg.slice(0)\n\t\tconst monitor = manager.getMonitor()\n\t\tconst registry = manager.getRegistry()\n\t\tconst draggedItemType = monitor.getItemType()\n\t\tremoveNonMatchingTargetIds(targetIds, registry, draggedItemType)\n\t\tcheckInvariants(targetIds, monitor, registry)\n\t\thoverAllTargets(targetIds, monitor, registry)\n\n\t\treturn {\n\t\t\ttype: HOVER,\n\t\t\tpayload: {\n\t\t\t\ttargetIds,\n\t\t\t\tclientOffset: clientOffset || null,\n\t\t\t},\n\t\t}\n\t}\n}\n\nfunction verifyTargetIdsIsArray(targetIdsArg: string[]) {\n\tinvariant(Array.isArray(targetIdsArg), 'Expected targetIds to be an array.')\n}\n\nfunction checkInvariants(\n\ttargetIds: string[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\tinvariant(monitor.isDragging(), 'Cannot call hover while not dragging.')\n\tinvariant(!monitor.didDrop(), 'Cannot call hover after drop.')\n\tfor (let i = 0; i < targetIds.length; i++) {\n\t\tconst targetId = targetIds[i] as string\n\t\tinvariant(\n\t\t\ttargetIds.lastIndexOf(targetId) === i,\n\t\t\t'Expected targetIds to be unique in the passed array.',\n\t\t)\n\n\t\tconst target = registry.getTarget(targetId)\n\t\tinvariant(target, 'Expected targetIds to be registered.')\n\t}\n}\n\nfunction removeNonMatchingTargetIds(\n\ttargetIds: string[],\n\tregistry: HandlerRegistry,\n\tdraggedItemType: Identifier | null,\n) {\n\t// Remove those targetIds that don't match the targetType. This\n\t// fixes shallow isOver which would only be non-shallow because of\n\t// non-matching targets.\n\tfor (let i = targetIds.length - 1; i >= 0; i--) {\n\t\tconst targetId = targetIds[i] as string\n\t\tconst targetType = registry.getTargetType(targetId)\n\t\tif (!matchesType(targetType, draggedItemType)) {\n\t\t\ttargetIds.splice(i, 1)\n\t\t}\n\t}\n}\n\nfunction hoverAllTargets(\n\ttargetIds: string[],\n\tmonitor: DragDropMonitor,\n\tregistry: HandlerRegistry,\n) {\n\t// Finally call hover on all matching targets.\n\ttargetIds.forEach(function (targetId) {\n\t\tconst target = registry.getTarget(targetId)\n\t\ttarget.hover(monitor, targetId)\n\t})\n}\n","import type { DragDropManager, SentinelAction } from '../../interfaces.js'\nimport { PUBLISH_DRAG_SOURCE } from './types.js'\n\nexport function createPublishDragSource(manager: DragDropManager) {\n\treturn function publishDragSource(): SentinelAction | undefined {\n\t\tconst monitor = manager.getMonitor()\n\t\tif (monitor.isDragging()) {\n\t\t\treturn { type: PUBLISH_DRAG_SOURCE }\n\t\t}\n\t\treturn\n\t}\n}\n","import type { Action, Store } from 'redux'\n\nimport { createDragDropActions } from '../actions/dragDrop/index.js'\nimport type {\n\tActionCreator,\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n} from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport type { DragDropMonitorImpl } from './DragDropMonitorImpl.js'\n\nexport class DragDropManagerImpl implements DragDropManager {\n\tprivate store: Store<State>\n\tprivate monitor: DragDropMonitor\n\tprivate backend: Backend | undefined\n\tprivate isSetUp = false\n\n\tpublic constructor(store: Store<State>, monitor: DragDropMonitor) {\n\t\tthis.store = store\n\t\tthis.monitor = monitor\n\t\tstore.subscribe(this.handleRefCountChange)\n\t}\n\n\tpublic receiveBackend(backend: Backend): void {\n\t\tthis.backend = backend\n\t}\n\n\tpublic getMonitor(): DragDropMonitor {\n\t\treturn this.monitor\n\t}\n\n\tpublic getBackend(): Backend {\n\t\treturn this.backend as Backend\n\t}\n\n\tpublic getRegistry(): HandlerRegistry {\n\t\treturn (this.monitor as DragDropMonitorImpl).registry\n\t}\n\n\tpublic getActions(): DragDropActions {\n\t\t/* eslint-disable-next-line @typescript-eslint/no-this-alias */\n\t\tconst manager = this\n\t\tconst { dispatch } = this.store\n\n\t\tfunction bindActionCreator(actionCreator: ActionCreator<any>) {\n\t\t\treturn (...args: any[]) => {\n\t\t\t\tconst action = actionCreator.apply(manager, args as any)\n\t\t\t\tif (typeof action !== 'undefined') {\n\t\t\t\t\tdispatch(action)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst actions = createDragDropActions(this)\n\n\t\treturn Object.keys(actions).reduce(\n\t\t\t(boundActions: DragDropActions, key: string) => {\n\t\t\t\tconst action: ActionCreator<any> = (actions as any)[\n\t\t\t\t\tkey\n\t\t\t\t] as ActionCreator<any>\n\t\t\t\t;(boundActions as any)[key] = bindActionCreator(action)\n\t\t\t\treturn boundActions\n\t\t\t},\n\t\t\t{} as DragDropActions,\n\t\t)\n\t}\n\n\tpublic dispatch(action: Action<any>): void {\n\t\tthis.store.dispatch(action)\n\t}\n\n\tprivate handleRefCountChange = (): void => {\n\t\tconst shouldSetUp = this.store.getState().refCount > 0\n\t\tif (this.backend) {\n\t\t\tif (shouldSetUp && !this.isSetUp) {\n\t\t\t\tthis.backend.setup()\n\t\t\t\tthis.isSetUp = true\n\t\t\t} else if (!shouldSetUp && this.isSetUp) {\n\t\t\t\tthis.backend.teardown()\n\t\t\t\tthis.isSetUp = false\n\t\t\t}\n\t\t}\n\t}\n}\n","import type { DragDropActions, DragDropManager } from '../../interfaces.js'\nimport { createBeginDrag } from './beginDrag.js'\nimport { createDrop } from './drop.js'\nimport { createEndDrag } from './endDrag.js'\nimport { createHover } from './hover.js'\nimport { createPublishDragSource } from './publishDragSource.js'\n\nexport * from './types.js'\n\nexport function createDragDropActions(\n\tmanager: DragDropManager,\n): DragDropActions {\n\treturn {\n\t\tbeginDrag: createBeginDrag(manager),\n\t\tpublishDragSource: createPublishDragSource(manager),\n\t\thover: createHover(manager),\n\t\tdrop: createDrop(manager),\n\t\tendDrag: createEndDrag(manager),\n\t}\n}\n","import type { XYCoord } from '../interfaces.js'\nimport type { State } from '../reducers/dragOffset.js'\n\n/**\n * Coordinate addition\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function add(a: XYCoord, b: XYCoord): XYCoord {\n\treturn {\n\t\tx: a.x + b.x,\n\t\ty: a.y + b.y,\n\t}\n}\n\n/**\n * Coordinate subtraction\n * @param a The first coordinate\n * @param b The second coordinate\n */\nexport function subtract(a: XYCoord, b: XYCoord): XYCoord {\n\treturn {\n\t\tx: a.x - b.x,\n\t\ty: a.y - b.y,\n\t}\n}\n\n/**\n * Returns the cartesian distance of the drag source component's position, based on its position\n * at the time when the current drag operation has started, and the movement difference.\n *\n * Returns null if no item is being dragged.\n *\n * @param state The offset state to compute from\n */\nexport function getSourceClientOffset(state: State): XYCoord | null {\n\tconst { clientOffset, initialClientOffset, initialSourceClientOffset } = state\n\tif (!clientOffset || !initialClientOffset || !initialSourceClientOffset) {\n\t\treturn null\n\t}\n\treturn subtract(\n\t\tadd(clientOffset, initialSourceClientOffset),\n\t\tinitialClientOffset,\n\t)\n}\n\n/**\n * Determines the x,y offset between the client offset and the initial client offset\n *\n * @param state The offset state to compute from\n */\nexport function getDifferenceFromInitialOffset(state: State): XYCoord | null {\n\tconst { clientOffset, initialClientOffset } = state\n\tif (!clientOffset || !initialClientOffset) {\n\t\treturn null\n\t}\n\treturn subtract(clientOffset, initialClientOffset)\n}\n","import { intersection } from './js_utils.js'\n\nexport const NONE: string[] = []\nexport const ALL: string[] = []\n// Add these flags for debug\n;(NONE as any).__IS_NONE__ = true\n;(ALL as any).__IS_ALL__ = true\n\n/**\n * Determines if the given handler IDs are dirty or not.\n *\n * @param dirtyIds The set of dirty handler ids\n * @param handlerIds The set of handler ids to check\n */\nexport function areDirty(\n\tdirtyIds: string[],\n\thandlerIds: string[] | undefined,\n): boolean {\n\tif (dirtyIds === NONE) {\n\t\treturn false\n\t}\n\n\tif (dirtyIds === ALL || typeof handlerIds === 'undefined') {\n\t\treturn true\n\t}\n\n\tconst commonIds = intersection(handlerIds, dirtyIds)\n\treturn commonIds.length > 0\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Store } from 'redux'\n\nimport type {\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport {\n\tgetDifferenceFromInitialOffset,\n\tgetSourceClientOffset,\n} from '../utils/coords.js'\nimport { areDirty } from '../utils/dirtiness.js'\nimport { matchesType } from '../utils/matchesType.js'\n\nexport class DragDropMonitorImpl implements DragDropMonitor {\n\tprivate store: Store<State>\n\tpublic readonly registry: HandlerRegistry\n\n\tpublic constructor(store: Store<State>, registry: HandlerRegistry) {\n\t\tthis.store = store\n\t\tthis.registry = registry\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions: { handlerIds?: string[] } = {},\n\t): Unsubscribe {\n\t\tconst { handlerIds } = options\n\t\tinvariant(typeof listener === 'function', 'listener must be a function.')\n\t\tinvariant(\n\t\t\ttypeof handlerIds === 'undefined' || Array.isArray(handlerIds),\n\t\t\t'handlerIds, when specified, must be an array of strings.',\n\t\t)\n\n\t\tlet prevStateId = this.store.getState().stateId\n\t\tconst handleChange = () => {\n\t\t\tconst state = this.store.getState()\n\t\t\tconst currentStateId = state.stateId\n\t\t\ttry {\n\t\t\t\tconst canSkipListener =\n\t\t\t\t\tcurrentStateId === prevStateId ||\n\t\t\t\t\t(currentStateId === prevStateId + 1 &&\n\t\t\t\t\t\t!areDirty(state.dirtyHandlerIds, handlerIds))\n\n\t\t\t\tif (!canSkipListener) {\n\t\t\t\t\tlistener()\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tprevStateId = currentStateId\n\t\t\t}\n\t\t}\n\n\t\treturn this.store.subscribe(handleChange)\n\t}\n\n\tpublic subscribeToOffsetChange(listener: Listener): Unsubscribe {\n\t\tinvariant(typeof listener === 'function', 'listener must be a function.')\n\n\t\tlet previousState = this.store.getState().dragOffset\n\t\tconst handleChange = () => {\n\t\t\tconst nextState = this.store.getState().dragOffset\n\t\t\tif (nextState === previousState) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tpreviousState = nextState\n\t\t\tlistener()\n\t\t}\n\n\t\treturn this.store.subscribe(handleChange)\n\t}\n\n\tpublic canDragSource(sourceId: string | undefined): boolean {\n\t\tif (!sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tconst source = this.registry.getSource(sourceId)\n\t\tinvariant(source, `Expected to find a valid source. sourceId=${sourceId}`)\n\n\t\tif (this.isDragging()) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn source.canDrag(this, sourceId)\n\t}\n\n\tpublic canDropOnTarget(targetId: string | undefined): boolean {\n\t\t// undefined on initial render\n\t\tif (!targetId) {\n\t\t\treturn false\n\t\t}\n\t\tconst target = this.registry.getTarget(targetId)\n\t\tinvariant(target, `Expected to find a valid target. targetId=${targetId}`)\n\n\t\tif (!this.isDragging() || this.didDrop()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetType = this.registry.getTargetType(targetId)\n\t\tconst draggedItemType = this.getItemType()\n\t\treturn (\n\t\t\tmatchesType(targetType, draggedItemType) && target.canDrop(this, targetId)\n\t\t)\n\t}\n\n\tpublic isDragging(): boolean {\n\t\treturn Boolean(this.getItemType())\n\t}\n\n\tpublic isDraggingSource(sourceId: string | undefined): boolean {\n\t\t// undefined on initial render\n\t\tif (!sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tconst source = this.registry.getSource(sourceId, true)\n\t\tinvariant(source, `Expected to find a valid source. sourceId=${sourceId}`)\n\n\t\tif (!this.isDragging() || !this.isSourcePublic()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst sourceType = this.registry.getSourceType(sourceId)\n\t\tconst draggedItemType = this.getItemType()\n\t\tif (sourceType !== draggedItemType) {\n\t\t\treturn false\n\t\t}\n\n\t\treturn source.isDragging(this, sourceId)\n\t}\n\n\tpublic isOverTarget(\n\t\ttargetId: string | undefined,\n\t\toptions = { shallow: false },\n\t): boolean {\n\t\t// undefined on initial render\n\t\tif (!targetId) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst { shallow } = options\n\t\tif (!this.isDragging()) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetType = this.registry.getTargetType(targetId)\n\t\tconst draggedItemType = this.getItemType()\n\t\tif (draggedItemType && !matchesType(targetType, draggedItemType)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst targetIds = this.getTargetIds()\n\t\tif (!targetIds.length) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst index = targetIds.indexOf(targetId)\n\t\tif (shallow) {\n\t\t\treturn index === targetIds.length - 1\n\t\t} else {\n\t\t\treturn index > -1\n\t\t}\n\t}\n\n\tpublic getItemType(): Identifier {\n\t\treturn this.store.getState().dragOperation.itemType as Identifier\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.store.getState().dragOperation.item\n\t}\n\n\tpublic getSourceId(): string | null {\n\t\treturn this.store.getState().dragOperation.sourceId\n\t}\n\n\tpublic getTargetIds(): string[] {\n\t\treturn this.store.getState().dragOperation.targetIds\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.store.getState().dragOperation.dropResult\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.store.getState().dragOperation.didDrop\n\t}\n\n\tpublic isSourcePublic(): boolean {\n\t\treturn Boolean(this.store.getState().dragOperation.isSourcePublic)\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.initialClientOffset\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.initialSourceClientOffset\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.store.getState().dragOffset.clientOffset\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn getSourceClientOffset(this.store.getState().dragOffset)\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn getDifferenceFromInitialOffset(this.store.getState().dragOffset)\n\t}\n}\n","// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nconst scope = typeof global !== 'undefined' ? global : self\nconst BrowserMutationObserver =\n\t(scope as any).MutationObserver || (scope as any).WebKitMutationObserver\n\nexport function makeRequestCallFromTimer(callback: () => void) {\n\treturn function requestCall() {\n\t\t// We dispatch a timeout with a specified delay of 0 for engines that\n\t\t// can reliably accommodate that request. This will usually be snapped\n\t\t// to a 4 milisecond delay, but once we're flushing, there's no delay\n\t\t// between events.\n\t\tconst timeoutHandle = setTimeout(handleTimer, 0)\n\t\t// However, since this timer gets frequently dropped in Firefox\n\t\t// workers, we enlist an interval handle that will try to fire\n\t\t// an event 20 times per second until it succeeds.\n\t\tconst intervalHandle = setInterval(handleTimer, 50)\n\n\t\tfunction handleTimer() {\n\t\t\t// Whichever timer succeeds will cancel both timers and\n\t\t\t// execute the callback.\n\t\t\tclearTimeout(timeoutHandle)\n\t\t\tclearInterval(intervalHandle)\n\t\t\tcallback()\n\t\t}\n\t}\n}\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nexport function makeRequestCallFromMutationObserver(callback: () => void) {\n\tlet toggle = 1\n\tconst observer = new BrowserMutationObserver(callback)\n\tconst node = document.createTextNode('')\n\tobserver.observe(node, { characterData: true })\n\treturn function requestCall() {\n\t\ttoggle = -toggle\n\t\t;(node as any).data = toggle\n\t}\n}\n\nexport const makeRequestCall =\n\ttypeof BrowserMutationObserver === 'function'\n\t\t? // MutationObservers are desirable because they have high priority and work\n\t\t // reliably everywhere they are implemented.\n\t\t // They are implemented in all modern browsers.\n\t\t //\n\t\t // - Android 4-4.3\n\t\t // - Chrome 26-34\n\t\t // - Firefox 14-29\n\t\t // - Internet Explorer 11\n\t\t // - iPad Safari 6-7.1\n\t\t // - iPhone Safari 7-7.1\n\t\t // - Safari 6-7\n\t\t makeRequestCallFromMutationObserver\n\t\t: // MessageChannels are desirable because they give direct access to the HTML\n\t\t // task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n\t\t // 11-12, and in web workers in many engines.\n\t\t // Although message channels yield to any queued rendering and IO tasks, they\n\t\t // would be better than imposing the 4ms delay of timers.\n\t\t // However, they do not work reliably in Internet Explorer or Safari.\n\n\t\t // Internet Explorer 10 is the only browser that has setImmediate but does\n\t\t // not have MutationObservers.\n\t\t // Although setImmediate yields to the browser's renderer, it would be\n\t\t // preferrable to falling back to setTimeout since it does not have\n\t\t // the minimum 4ms penalty.\n\t\t // Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n\t\t // Desktop to a lesser extent) that renders both setImmediate and\n\t\t // MessageChannel useless for the purposes of ASAP.\n\t\t // https://github.com/kriskowal/q/issues/396\n\n\t\t // Timers are implemented universally.\n\t\t // We fall back to timers in workers in most engines, and in foreground\n\t\t // contexts in the following browsers.\n\t\t // However, note that even this simple case requires nuances to operate in a\n\t\t // broad spectrum of browsers.\n\t\t //\n\t\t // - Firefox 3-13\n\t\t // - Internet Explorer 6-9\n\t\t // - iPad Safari 4.3\n\t\t // - Lynx 2.8.7\n\t\t makeRequestCallFromTimer\n","// We wrap tasks with recyclable task objects. A task object implements\n\nimport type { Task, TaskFn } from 'types'\n\n// `call`, just like a function.\nexport class RawTask implements Task {\n\tpublic task: TaskFn | null = null\n\n\tpublic constructor(\n\t\tprivate onError: (err: any) => void,\n\t\tprivate release: (t: RawTask) => void,\n\t) {}\n\n\tpublic call() {\n\t\ttry {\n\t\t\tthis.task && this.task()\n\t\t} catch (error) {\n\t\t\tthis.onError(error)\n\t\t} finally {\n\t\t\tthis.task = null\n\t\t\tthis.release(this)\n\t\t}\n\t}\n}\n","import { AsapQueue } from './AsapQueue.js'\nimport { TaskFactory } from './TaskFactory.js'\nimport type { TaskFn } from './types.js'\n\nconst asapQueue = new AsapQueue()\nconst taskFactory = new TaskFactory(asapQueue.registerPendingError)\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nexport function asap(task: TaskFn) {\n\tasapQueue.enqueueTask(taskFactory.create(task))\n}\n","/* eslint-disable no-restricted-globals, @typescript-eslint/ban-ts-comment, @typescript-eslint/no-unused-vars, @typescript-eslint/no-non-null-assertion */\nimport { makeRequestCall, makeRequestCallFromTimer } from './makeRequestCall.js'\nimport type { Task } from './types.js'\n\nexport class AsapQueue {\n\tprivate queue: Task[] = []\n\t// We queue errors to ensure they are thrown in right order (FIFO).\n\t// Array-as-queue is good enough here, since we are just dealing with exceptions.\n\tprivate pendingErrors: any[] = []\n\t// Once a flush has been requested, no further calls to `requestFlush` are\n\t// necessary until the next `flush` completes.\n\t// @ts-ignore\n\tprivate flushing = false\n\t// `requestFlush` is an implementation-specific method that attempts to kick\n\t// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n\t// the event queue before yielding to the browser's own event loop.\n\tprivate requestFlush: () => void\n\n\tprivate requestErrorThrow: () => void\n\t// The position of the next task to execute in the task queue. This is\n\t// preserved between calls to `flush` so that it can be resumed if\n\t// a task throws an exception.\n\tprivate index = 0\n\t// If a task schedules additional tasks recursively, the task queue can grow\n\t// unbounded. To prevent memory exhaustion, the task queue will periodically\n\t// truncate already-completed tasks.\n\tprivate capacity = 1024\n\n\tpublic constructor() {\n\t\t// `requestFlush` requests that the high priority event queue be flushed as\n\t\t// soon as possible.\n\t\t// This is useful to prevent an error thrown in a task from stalling the event\n\t\t// queue if the exception handled by Node.js’s\n\t\t// `process.on(\"uncaughtException\")` or by a domain.\n\n\t\t// `requestFlush` is implemented using a strategy based on data collected from\n\t\t// every available SauceLabs Selenium web driver worker at time of writing.\n\t\t// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\t\tthis.requestFlush = makeRequestCall(this.flush)\n\t\tthis.requestErrorThrow = makeRequestCallFromTimer(() => {\n\t\t\t// Throw first error\n\t\t\tif (this.pendingErrors.length) {\n\t\t\t\tthrow this.pendingErrors.shift()\n\t\t\t}\n\t\t})\n\t}\n\n\t// Use the fastest means possible to execute a task in its own turn, with\n\t// priority over other events including IO, animation, reflow, and redraw\n\t// events in browsers.\n\t//\n\t// An exception thrown by a task will permanently interrupt the processing of\n\t// subsequent tasks. The higher level `asap` function ensures that if an\n\t// exception is thrown by a task, that the task queue will continue flushing as\n\t// soon as possible, but if you use `rawAsap` directly, you are responsible to\n\t// either ensure that no exceptions are thrown from your task, or to manually\n\t// call `rawAsap.requestFlush` if an exception is thrown.\n\tpublic enqueueTask(task: Task): void {\n\t\tconst { queue: q, requestFlush } = this\n\t\tif (!q.length) {\n\t\t\trequestFlush()\n\t\t\tthis.flushing = true\n\t\t}\n\t\t// Equivalent to push, but avoids a function call.\n\t\tq[q.length] = task\n\t}\n\n\t// The flush function processes all tasks that have been scheduled with\n\t// `rawAsap` unless and until one of those tasks throws an exception.\n\t// If a task throws an exception, `flush` ensures that its state will remain\n\t// consistent and will resume where it left off when called again.\n\t// However, `flush` does not make any arrangements to be called again if an\n\t// exception is thrown.\n\tprivate flush = () => {\n\t\tconst { queue: q } = this\n\t\twhile (this.index < q.length) {\n\t\t\tconst currentIndex = this.index\n\t\t\t// Advance the index before calling the task. This ensures that we will\n\t\t\t// begin flushing on the next task the task throws an error.\n\t\t\tthis.index++\n\t\t\tq[currentIndex]!.call()\n\t\t\t// Prevent leaking memory for long chains of recursive calls to `asap`.\n\t\t\t// If we call `asap` within tasks scheduled by `asap`, the queue will\n\t\t\t// grow, but to avoid an O(n) walk for every task we execute, we don't\n\t\t\t// shift tasks off the queue after they have been executed.\n\t\t\t// Instead, we periodically shift 1024 tasks off the queue.\n\t\t\tif (this.index > this.capacity) {\n\t\t\t\t// Manually shift all values starting at the index back to the\n\t\t\t\t// beginning of the queue.\n\t\t\t\tfor (\n\t\t\t\t\tlet scan = 0, newLength = q.length - this.index;\n\t\t\t\t\tscan < newLength;\n\t\t\t\t\tscan++\n\t\t\t\t) {\n\t\t\t\t\tq[scan] = q[scan + this.index]!\n\t\t\t\t}\n\t\t\t\tq.length -= this.index\n\t\t\t\tthis.index = 0\n\t\t\t}\n\t\t}\n\t\tq.length = 0\n\t\tthis.index = 0\n\t\tthis.flushing = false\n\t}\n\n\t// In a web browser, exceptions are not fatal. However, to avoid\n\t// slowing down the queue of pending tasks, we rethrow the error in a\n\t// lower priority turn.\n\tpublic registerPendingError = (err: any) => {\n\t\tthis.pendingErrors.push(err)\n\t\tthis.requestErrorThrow()\n\t}\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// // its existence.\n// rawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","import { RawTask } from './RawTask.js'\nimport type { Task } from './types.js'\n\nexport class TaskFactory {\n\tprivate freeTasks: RawTask[] = []\n\n\tpublic constructor(private onError: (err: any) => void) {}\n\n\tpublic create(task: () => void): Task {\n\t\tconst tasks = this.freeTasks\n\t\tconst t = tasks.length\n\t\t\t? (tasks.pop() as RawTask)\n\t\t\t: new RawTask(this.onError, (t) => (tasks[tasks.length] = t))\n\t\tt.task = task\n\t\treturn t\n\t}\n}\n","import type { Action, SourceIdPayload, TargetIdPayload } from '../interfaces.js'\n\nexport const ADD_SOURCE = 'dnd-core/ADD_SOURCE'\nexport const ADD_TARGET = 'dnd-core/ADD_TARGET'\nexport const REMOVE_SOURCE = 'dnd-core/REMOVE_SOURCE'\nexport const REMOVE_TARGET = 'dnd-core/REMOVE_TARGET'\n\nexport function addSource(sourceId: string): Action<SourceIdPayload> {\n\treturn {\n\t\ttype: ADD_SOURCE,\n\t\tpayload: {\n\t\t\tsourceId,\n\t\t},\n\t}\n}\n\nexport function addTarget(targetId: string): Action<TargetIdPayload> {\n\treturn {\n\t\ttype: ADD_TARGET,\n\t\tpayload: {\n\t\t\ttargetId,\n\t\t},\n\t}\n}\n\nexport function removeSource(sourceId: string): Action<SourceIdPayload> {\n\treturn {\n\t\ttype: REMOVE_SOURCE,\n\t\tpayload: {\n\t\t\tsourceId,\n\t\t},\n\t}\n}\n\nexport function removeTarget(targetId: string): Action<TargetIdPayload> {\n\treturn {\n\t\ttype: REMOVE_TARGET,\n\t\tpayload: {\n\t\t\ttargetId,\n\t\t},\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type { DragSource, DropTarget, Identifier } from './interfaces.js'\n\nexport function validateSourceContract(source: DragSource): void {\n\tinvariant(\n\t\ttypeof source.canDrag === 'function',\n\t\t'Expected canDrag to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof source.beginDrag === 'function',\n\t\t'Expected beginDrag to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof source.endDrag === 'function',\n\t\t'Expected endDrag to be a function.',\n\t)\n}\n\nexport function validateTargetContract(target: DropTarget): void {\n\tinvariant(\n\t\ttypeof target.canDrop === 'function',\n\t\t'Expected canDrop to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof target.hover === 'function',\n\t\t'Expected hover to be a function.',\n\t)\n\tinvariant(\n\t\ttypeof target.drop === 'function',\n\t\t'Expected beginDrag to be a function.',\n\t)\n}\n\nexport function validateType(\n\ttype: Identifier | Identifier[],\n\tallowArray?: boolean,\n): void {\n\tif (allowArray && Array.isArray(type)) {\n\t\ttype.forEach((t) => validateType(t, false))\n\t\treturn\n\t}\n\n\tinvariant(\n\t\ttypeof type === 'string' || typeof type === 'symbol',\n\t\tallowArray\n\t\t\t? 'Type can only be a string, a symbol, or an array of either.'\n\t\t\t: 'Type can only be a string or a symbol.',\n\t)\n}\n","export type Identifier = string | symbol\nexport type SourceType = Identifier\nexport type TargetType = Identifier | Identifier[]\nexport type Unsubscribe = () => void\nexport type Listener = () => void\n\nexport interface XYCoord {\n\tx: number\n\ty: number\n}\n\nexport enum HandlerRole {\n\tSOURCE = 'SOURCE',\n\tTARGET = 'TARGET',\n}\n\nexport interface Backend {\n\tsetup(): void\n\tteardown(): void\n\tconnectDragSource(sourceId: any, node?: any, options?: any): Unsubscribe\n\tconnectDragPreview(sourceId: any, node?: any, options?: any): Unsubscribe\n\tconnectDropTarget(targetId: any, node?: any, options?: any): Unsubscribe\n\tprofile(): Record<string, number>\n}\n\nexport interface DragDropMonitor {\n\tsubscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: {\n\t\t\thandlerIds?: Identifier[]\n\t\t},\n\t): Unsubscribe\n\tsubscribeToOffsetChange(listener: Listener): Unsubscribe\n\tcanDragSource(sourceId: Identifier | undefined): boolean\n\tcanDropOnTarget(targetId: Identifier | undefined): boolean\n\n\t/**\n\t * Returns true if a drag operation is in progress, and either the owner initiated the drag, or its isDragging()\n\t * is defined and returns true.\n\t */\n\tisDragging(): boolean\n\tisDraggingSource(sourceId: Identifier | undefined): boolean\n\tisOverTarget(\n\t\ttargetId: Identifier | undefined,\n\t\toptions?: {\n\t\t\tshallow?: boolean\n\t\t},\n\t): boolean\n\n\t/**\n\t * Returns a string or a symbol identifying the type of the current dragged item. Returns null if no item is being dragged.\n\t */\n\tgetItemType(): Identifier | null\n\n\t/**\n\t * Returns a plain object representing the currently dragged item. Every drag source must specify it by returning an object\n\t * from its beginDrag() method. Returns null if no item is being dragged.\n\t */\n\tgetItem(): any\n\tgetSourceId(): Identifier | null\n\tgetTargetIds(): Identifier[]\n\t/**\n\t * Returns a plain object representing the last recorded drop result. The drop targets may optionally specify it by returning an\n\t * object from their drop() methods. When a chain of drop() is dispatched for the nested targets, bottom up, any parent that\n\t * explicitly returns its own result from drop() overrides the child drop result previously set by the child. Returns null if\n\t * called outside endDrag().\n\t */\n\tgetDropResult(): any\n\t/**\n\t * Returns true if some drop target has handled the drop event, false otherwise. Even if a target did not return a drop result,\n\t * didDrop() returns true. Use it inside endDrag() to test whether any drop target has handled the drop. Returns false if called\n\t * outside endDrag().\n\t */\n\tdidDrop(): boolean\n\tisSourcePublic(): boolean | null\n\t/**\n\t * Returns the { x, y } client offset of the pointer at the time when the current drag operation has started.\n\t * Returns null if no item is being dragged.\n\t */\n\tgetInitialClientOffset(): XYCoord | null\n\t/**\n\t * Returns the { x, y } client offset of the drag source component's root DOM node at the time when the current drag\n\t * operation has started. Returns null if no item is being dragged.\n\t */\n\tgetInitialSourceClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the last recorded { x, y } client offset of the pointer while a drag operation is in progress.\n\t * Returns null if no item is being dragged.\n\t */\n\tgetClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the projected { x, y } client offset of the drag source component's root DOM node, based on its position at the time\n\t * when the current drag operation has started, and the movement difference. Returns null if no item is being dragged.\n\t */\n\tgetSourceClientOffset(): XYCoord | null\n\n\t/**\n\t * Returns the { x, y } difference between the last recorded client offset of the pointer and the client offset when the current\n\t * drag operation has started. Returns null if no item is being dragged.\n\t */\n\tgetDifferenceFromInitialOffset(): XYCoord | null\n}\n\nexport interface HandlerRegistry {\n\taddSource(type: SourceType, source: DragSource): Identifier\n\taddTarget(type: TargetType, target: DropTarget): Identifier\n\tcontainsHandler(handler: DragSource | DropTarget): boolean\n\tgetSource(sourceId: Identifier, includePinned?: boolean): DragSource\n\tgetSourceType(sourceId: Identifier): SourceType\n\tgetTargetType(targetId: Identifier): TargetType\n\tgetTarget(targetId: Identifier): DropTarget\n\tisSourceId(handlerId: Identifier): boolean\n\tisTargetId(handlerId: Identifier): boolean\n\tremoveSource(sourceId: Identifier): void\n\tremoveTarget(targetId: Identifier): void\n\tpinSource(sourceId: Identifier): void\n\tunpinSource(): void\n}\n\nexport interface Action<Payload> {\n\ttype: Identifier\n\tpayload: Payload\n}\nexport interface SentinelAction {\n\ttype: Identifier\n}\n\nexport type ActionCreator<Payload> = (args: any[]) => Action<Payload>\n\nexport interface BeginDragOptions {\n\tpublishSource?: boolean\n\tclientOffset?: XYCoord\n\tgetSourceClientOffset?: (sourceId: Identifier | undefined) => XYCoord\n}\n\nexport interface InitCoordsPayload {\n\tclientOffset: XYCoord | null\n\tsourceClientOffset: XYCoord | null\n}\n\nexport interface BeginDragPayload {\n\titemType: Identifier\n\titem: any\n\tsourceId: Identifier\n\tclientOffset: XYCoord | null\n\tsourceClientOffset: XYCoord | null\n\tisSourcePublic: boolean\n}\n\nexport interface HoverPayload {\n\ttargetIds: Identifier[]\n\tclientOffset: XYCoord | null\n}\n\nexport interface HoverOptions {\n\tclientOffset?: XYCoord\n}\n\nexport interface DropPayload {\n\tdropResult: any\n}\n\nexport interface TargetIdPayload {\n\ttargetId: Identifier\n}\n\nexport interface SourceIdPayload {\n\tsourceId: Identifier\n}\n\nexport interface DragDropActions {\n\tbeginDrag(\n\t\tsourceIds?: Identifier[],\n\t\toptions?: any,\n\t): Action<BeginDragPayload> | undefined\n\tpublishDragSource(): SentinelAction | undefined\n\thover(targetIds: Identifier[], options?: any): Action<HoverPayload>\n\tdrop(options?: any): void\n\tendDrag(): SentinelAction\n}\n\nexport interface DragDropManager {\n\tgetMonitor(): DragDropMonitor\n\tgetBackend(): Backend\n\tgetRegistry(): HandlerRegistry\n\tgetActions(): DragDropActions\n\tdispatch(action: any): void\n}\n\nexport type BackendFactory = (\n\tmanager: DragDropManager,\n\tglobalContext?: any,\n\tconfiguration?: any,\n) => Backend\n\nexport interface DragSource {\n\tbeginDrag(monitor: DragDropMonitor, targetId: Identifier): void\n\tendDrag(monitor: DragDropMonitor, targetId: Identifier): void\n\tcanDrag(monitor: DragDropMonitor, targetId: Identifier): boolean\n\tisDragging(monitor: DragDropMonitor, targetId: Identifier): boolean\n}\n\nexport interface DropTarget {\n\tcanDrop(monitor: DragDropMonitor, targetId: Identifier): boolean\n\thover(monitor: DragDropMonitor, targetId: Identifier): void\n\tdrop(monitor: DragDropMonitor, targetId: Identifier): any\n}\n","let nextUniqueId = 0\n\nexport function getNextUniqueId(): number {\n\treturn nextUniqueId++\n}\n","import { asap } from '@react-dnd/asap'\nimport { invariant } from '@react-dnd/invariant'\nimport type { Store } from 'redux'\n\nimport {\n\taddSource,\n\taddTarget,\n\tremoveSource,\n\tremoveTarget,\n} from '../actions/registry.js'\nimport {\n\tvalidateSourceContract,\n\tvalidateTargetContract,\n\tvalidateType,\n} from '../contracts.js'\nimport type {\n\tDragSource,\n\tDropTarget,\n\tHandlerRegistry,\n\tIdentifier,\n\tSourceType,\n\tTargetType,\n} from '../interfaces.js'\nimport { HandlerRole } from '../interfaces.js'\nimport type { State } from '../reducers/index.js'\nimport { getNextUniqueId } from '../utils/getNextUniqueId.js'\n\nfunction getNextHandlerId(role: HandlerRole): string {\n\tconst id = getNextUniqueId().toString()\n\tswitch (role) {\n\t\tcase HandlerRole.SOURCE:\n\t\t\treturn `S${id}`\n\t\tcase HandlerRole.TARGET:\n\t\t\treturn `T${id}`\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown Handler Role: ${role}`)\n\t}\n}\n\nfunction parseRoleFromHandlerId(handlerId: string) {\n\tswitch (handlerId[0]) {\n\t\tcase 'S':\n\t\t\treturn HandlerRole.SOURCE\n\t\tcase 'T':\n\t\t\treturn HandlerRole.TARGET\n\t\tdefault:\n\t\t\tthrow new Error(`Cannot parse handler ID: ${handlerId}`)\n\t}\n}\n\nfunction mapContainsValue<T>(map: Map<string, T>, searchValue: T) {\n\tconst entries = map.entries()\n\tlet isDone = false\n\tdo {\n\t\tconst {\n\t\t\tdone,\n\t\t\tvalue: [, value],\n\t\t} = entries.next()\n\t\tif (value === searchValue) {\n\t\t\treturn true\n\t\t}\n\t\tisDone = !!done\n\t} while (!isDone)\n\treturn false\n}\n\nexport class HandlerRegistryImpl implements HandlerRegistry {\n\tprivate types: Map<string, SourceType | TargetType> = new Map()\n\tprivate dragSources: Map<string, DragSource> = new Map()\n\tprivate dropTargets: Map<string, DropTarget> = new Map()\n\tprivate pinnedSourceId: string | null = null\n\tprivate pinnedSource: any = null\n\tprivate store: Store<State>\n\n\tpublic constructor(store: Store<State>) {\n\t\tthis.store = store\n\t}\n\n\tpublic addSource(type: SourceType, source: DragSource): string {\n\t\tvalidateType(type)\n\t\tvalidateSourceContract(source)\n\n\t\tconst sourceId = this.addHandler(HandlerRole.SOURCE, type, source)\n\t\tthis.store.dispatch(addSource(sourceId))\n\t\treturn sourceId\n\t}\n\n\tpublic addTarget(type: TargetType, target: DropTarget): string {\n\t\tvalidateType(type, true)\n\t\tvalidateTargetContract(target)\n\n\t\tconst targetId = this.addHandler(HandlerRole.TARGET, type, target)\n\t\tthis.store.dispatch(addTarget(targetId))\n\t\treturn targetId\n\t}\n\n\tpublic containsHandler(handler: DragSource | DropTarget): boolean {\n\t\treturn (\n\t\t\tmapContainsValue(this.dragSources, handler) ||\n\t\t\tmapContainsValue(this.dropTargets, handler)\n\t\t)\n\t}\n\n\tpublic getSource(sourceId: string, includePinned = false): DragSource {\n\t\tinvariant(this.isSourceId(sourceId), 'Expected a valid source ID.')\n\t\tconst isPinned = includePinned && sourceId === this.pinnedSourceId\n\t\tconst source = isPinned ? this.pinnedSource : this.dragSources.get(sourceId)\n\t\treturn source\n\t}\n\n\tpublic getTarget(targetId: string): DropTarget {\n\t\tinvariant(this.isTargetId(targetId), 'Expected a valid target ID.')\n\t\treturn this.dropTargets.get(targetId) as DropTarget\n\t}\n\n\tpublic getSourceType(sourceId: string): Identifier {\n\t\tinvariant(this.isSourceId(sourceId), 'Expected a valid source ID.')\n\t\treturn this.types.get(sourceId) as Identifier\n\t}\n\n\tpublic getTargetType(targetId: string): Identifier | Identifier[] {\n\t\tinvariant(this.isTargetId(targetId), 'Expected a valid target ID.')\n\t\treturn this.types.get(targetId) as Identifier | Identifier[]\n\t}\n\n\tpublic isSourceId(handlerId: string): boolean {\n\t\tconst role = parseRoleFromHandlerId(handlerId)\n\t\treturn role === HandlerRole.SOURCE\n\t}\n\n\tpublic isTargetId(handlerId: string): boolean {\n\t\tconst role = parseRoleFromHandlerId(handlerId)\n\t\treturn role === HandlerRole.TARGET\n\t}\n\n\tpublic removeSource(sourceId: string): void {\n\t\tinvariant(this.getSource(sourceId), 'Expected an existing source.')\n\t\tthis.store.dispatch(removeSource(sourceId))\n\t\tasap(() => {\n\t\t\tthis.dragSources.delete(sourceId)\n\t\t\tthis.types.delete(sourceId)\n\t\t})\n\t}\n\n\tpublic removeTarget(targetId: string): void {\n\t\tinvariant(this.getTarget(targetId), 'Expected an existing target.')\n\t\tthis.store.dispatch(removeTarget(targetId))\n\t\tthis.dropTargets.delete(targetId)\n\t\tthis.types.delete(targetId)\n\t}\n\n\tpublic pinSource(sourceId: string): void {\n\t\tconst source = this.getSource(sourceId)\n\t\tinvariant(source, 'Expected an existing source.')\n\n\t\tthis.pinnedSourceId = sourceId\n\t\tthis.pinnedSource = source\n\t}\n\n\tpublic unpinSource(): void {\n\t\tinvariant(this.pinnedSource, 'No source is pinned at the time.')\n\n\t\tthis.pinnedSourceId = null\n\t\tthis.pinnedSource = null\n\t}\n\n\tprivate addHandler(\n\t\trole: HandlerRole,\n\t\ttype: SourceType | TargetType,\n\t\thandler: DragSource | DropTarget,\n\t): string {\n\t\tconst id = getNextHandlerId(role)\n\t\tthis.types.set(id, type)\n\t\tif (role === HandlerRole.SOURCE) {\n\t\t\tthis.dragSources.set(id, handler as DragSource)\n\t\t} else if (role === HandlerRole.TARGET) {\n\t\t\tthis.dropTargets.set(id, handler as DropTarget)\n\t\t}\n\t\treturn id\n\t}\n}\n","import type { XYCoord } from '../interfaces.js'\n\nexport type EqualityCheck<T> = (a: T, b: T) => boolean\nexport const strictEquality = <T>(a: T, b: T): boolean => a === b\n\n/**\n * Determine if two cartesian coordinate offsets are equal\n * @param offsetA\n * @param offsetB\n */\nexport function areCoordsEqual(\n\toffsetA: XYCoord | null | undefined,\n\toffsetB: XYCoord | null | undefined,\n): boolean {\n\tif (!offsetA && !offsetB) {\n\t\treturn true\n\t} else if (!offsetA || !offsetB) {\n\t\treturn false\n\t} else {\n\t\treturn offsetA.x === offsetB.x && offsetA.y === offsetB.y\n\t}\n}\n\n/**\n * Determines if two arrays of items are equal\n * @param a The first array of items\n * @param b The second array of items\n */\nexport function areArraysEqual<T>(\n\ta: T[],\n\tb: T[],\n\tisEqual: EqualityCheck<T> = strictEquality,\n): boolean {\n\tif (a.length !== b.length) {\n\t\treturn false\n\t}\n\tfor (let i = 0; i < a.length; ++i) {\n\t\tif (!isEqual(a[i] as T, b[i] as T)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tPUBLISH_DRAG_SOURCE,\n} from '../actions/dragDrop/index.js'\nimport {\n\tADD_SOURCE,\n\tADD_TARGET,\n\tREMOVE_SOURCE,\n\tREMOVE_TARGET,\n} from '../actions/registry.js'\nimport type { Action } from '../interfaces.js'\nimport { ALL, NONE } from '../utils/dirtiness.js'\nimport { areArraysEqual } from '../utils/equality.js'\nimport { xor } from '../utils/js_utils.js'\n\nexport type State = string[]\n\nexport interface DirtyHandlerIdPayload {\n\ttargetIds: string[]\n\tprevTargetIds: string[]\n}\n\nexport function reduce(\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t_state: State = NONE,\n\taction: Action<DirtyHandlerIdPayload>,\n): State {\n\tswitch (action.type) {\n\t\tcase HOVER:\n\t\t\tbreak\n\t\tcase ADD_SOURCE:\n\t\tcase ADD_TARGET:\n\t\tcase REMOVE_TARGET:\n\t\tcase REMOVE_SOURCE:\n\t\t\treturn NONE\n\t\tcase BEGIN_DRAG:\n\t\tcase PUBLISH_DRAG_SOURCE:\n\t\tcase END_DRAG:\n\t\tcase DROP:\n\t\tdefault:\n\t\t\treturn ALL\n\t}\n\n\tconst { targetIds = [], prevTargetIds = [] } = action.payload\n\tconst result = xor(targetIds, prevTargetIds)\n\tconst didChange =\n\t\tresult.length > 0 || !areArraysEqual(targetIds, prevTargetIds)\n\n\tif (!didChange) {\n\t\treturn NONE\n\t}\n\n\t// Check the target ids at the innermost position. If they are valid, add them\n\t// to the result\n\tconst prevInnermostTargetId = prevTargetIds[prevTargetIds.length - 1]\n\tconst innermostTargetId = targetIds[targetIds.length - 1]\n\tif (prevInnermostTargetId !== innermostTargetId) {\n\t\tif (prevInnermostTargetId) {\n\t\t\tresult.push(prevInnermostTargetId)\n\t\t}\n\t\tif (innermostTargetId) {\n\t\t\tresult.push(innermostTargetId)\n\t\t}\n\t}\n\n\treturn result\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tINIT_COORDS,\n} from '../actions/dragDrop/index.js'\nimport type { Action, XYCoord } from '../interfaces.js'\nimport { areCoordsEqual } from '../utils/equality.js'\n\nexport interface State {\n\tinitialSourceClientOffset: XYCoord | null\n\tinitialClientOffset: XYCoord | null\n\tclientOffset: XYCoord | null\n}\n\nconst initialState: State = {\n\tinitialSourceClientOffset: null,\n\tinitialClientOffset: null,\n\tclientOffset: null,\n}\n\nexport function reduce(\n\tstate: State = initialState,\n\taction: Action<{\n\t\tsourceClientOffset: XYCoord\n\t\tclientOffset: XYCoord\n\t}>,\n): State {\n\tconst { payload } = action\n\tswitch (action.type) {\n\t\tcase INIT_COORDS:\n\t\tcase BEGIN_DRAG:\n\t\t\treturn {\n\t\t\t\tinitialSourceClientOffset: payload.sourceClientOffset,\n\t\t\t\tinitialClientOffset: payload.clientOffset,\n\t\t\t\tclientOffset: payload.clientOffset,\n\t\t\t}\n\t\tcase HOVER:\n\t\t\tif (areCoordsEqual(state.clientOffset, payload.clientOffset)) {\n\t\t\t\treturn state\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tclientOffset: payload.clientOffset,\n\t\t\t}\n\t\tcase END_DRAG:\n\t\tcase DROP:\n\t\t\treturn initialState\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","import {\n\tBEGIN_DRAG,\n\tDROP,\n\tEND_DRAG,\n\tHOVER,\n\tPUBLISH_DRAG_SOURCE,\n} from '../actions/dragDrop/index.js'\nimport { REMOVE_TARGET } from '../actions/registry.js'\nimport type { Action, Identifier } from '../interfaces.js'\nimport { without } from '../utils/js_utils.js'\n\nexport interface State {\n\titemType: Identifier | Identifier[] | null\n\titem: any\n\tsourceId: string | null\n\ttargetIds: string[]\n\tdropResult: any\n\tdidDrop: boolean\n\tisSourcePublic: boolean | null\n}\n\nconst initialState: State = {\n\titemType: null,\n\titem: null,\n\tsourceId: null,\n\ttargetIds: [],\n\tdropResult: null,\n\tdidDrop: false,\n\tisSourcePublic: null,\n}\n\nexport function reduce(\n\tstate: State = initialState,\n\taction: Action<{\n\t\titemType: Identifier | Identifier[]\n\t\titem: any\n\t\tsourceId: string\n\t\ttargetId: string\n\t\ttargetIds: string[]\n\t\tisSourcePublic: boolean\n\t\tdropResult: any\n\t}>,\n): State {\n\tconst { payload } = action\n\tswitch (action.type) {\n\t\tcase BEGIN_DRAG:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\titemType: payload.itemType,\n\t\t\t\titem: payload.item,\n\t\t\t\tsourceId: payload.sourceId,\n\t\t\t\tisSourcePublic: payload.isSourcePublic,\n\t\t\t\tdropResult: null,\n\t\t\t\tdidDrop: false,\n\t\t\t}\n\t\tcase PUBLISH_DRAG_SOURCE:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tisSourcePublic: true,\n\t\t\t}\n\t\tcase HOVER:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttargetIds: payload.targetIds,\n\t\t\t}\n\t\tcase REMOVE_TARGET:\n\t\t\tif (state.targetIds.indexOf(payload.targetId) === -1) {\n\t\t\t\treturn state\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\ttargetIds: without(state.targetIds, payload.targetId),\n\t\t\t}\n\t\tcase DROP:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\tdropResult: payload.dropResult,\n\t\t\t\tdidDrop: true,\n\t\t\t\ttargetIds: [],\n\t\t\t}\n\t\tcase END_DRAG:\n\t\t\treturn {\n\t\t\t\t...state,\n\t\t\t\titemType: null,\n\t\t\t\titem: null,\n\t\t\t\tsourceId: null,\n\t\t\t\tdropResult: null,\n\t\t\t\tdidDrop: false,\n\t\t\t\tisSourcePublic: null,\n\t\t\t\ttargetIds: [],\n\t\t\t}\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","import {\n\tADD_SOURCE,\n\tADD_TARGET,\n\tREMOVE_SOURCE,\n\tREMOVE_TARGET,\n} from '../actions/registry.js'\nimport type { Action } from '../interfaces.js'\n\nexport type State = number\n\nexport function reduce(state: State = 0, action: Action<any>): State {\n\tswitch (action.type) {\n\t\tcase ADD_SOURCE:\n\t\tcase ADD_TARGET:\n\t\t\treturn state + 1\n\t\tcase REMOVE_SOURCE:\n\t\tcase REMOVE_TARGET:\n\t\t\treturn state - 1\n\t\tdefault:\n\t\t\treturn state\n\t}\n}\n","export type State = number\n\nexport function reduce(state: State = 0): State {\n\treturn state + 1\n}\n","import type { Action } from '../interfaces.js'\nimport { get } from '../utils/js_utils.js'\nimport type { State as DirtyHandlerIdsState } from './dirtyHandlerIds.js'\nimport { reduce as dirtyHandlerIds } from './dirtyHandlerIds.js'\nimport type { State as DragOffsetState } from './dragOffset.js'\nimport { reduce as dragOffset } from './dragOffset.js'\nimport type { State as DragOperationState } from './dragOperation.js'\nimport { reduce as dragOperation } from './dragOperation.js'\nimport type { State as RefCountState } from './refCount.js'\nimport { reduce as refCount } from './refCount.js'\nimport type { State as StateIdState } from './stateId.js'\nimport { reduce as stateId } from './stateId.js'\n\nexport interface State {\n\tdirtyHandlerIds: DirtyHandlerIdsState\n\tdragOffset: DragOffsetState\n\trefCount: RefCountState\n\tdragOperation: DragOperationState\n\tstateId: StateIdState\n}\n\nexport function reduce(state: State = {} as State, action: Action<any>): State {\n\treturn {\n\t\tdirtyHandlerIds: dirtyHandlerIds(state.dirtyHandlerIds, {\n\t\t\ttype: action.type,\n\t\t\tpayload: {\n\t\t\t\t...action.payload,\n\t\t\t\tprevTargetIds: get<string[]>(state, 'dragOperation.targetIds', []),\n\t\t\t},\n\t\t}),\n\t\tdragOffset: dragOffset(state.dragOffset, action),\n\t\trefCount: refCount(state.refCount, action),\n\t\tdragOperation: dragOperation(state.dragOperation, action),\n\t\tstateId: stateId(state.stateId),\n\t}\n}\n","import type { Store } from 'redux'\nimport { createStore } from 'redux'\n\nimport { DragDropManagerImpl } from './classes/DragDropManagerImpl.js'\nimport { DragDropMonitorImpl } from './classes/DragDropMonitorImpl.js'\nimport { HandlerRegistryImpl } from './classes/HandlerRegistryImpl.js'\nimport type { BackendFactory, DragDropManager } from './interfaces.js'\nimport type { State } from './reducers/index.js'\nimport { reduce } from './reducers/index.js'\n\nexport function createDragDropManager(\n\tbackendFactory: BackendFactory,\n\tglobalContext: unknown = undefined,\n\tbackendOptions: unknown = {},\n\tdebugMode = false,\n): DragDropManager {\n\tconst store = makeStoreInstance(debugMode)\n\tconst monitor = new DragDropMonitorImpl(store, new HandlerRegistryImpl(store))\n\tconst manager = new DragDropManagerImpl(store, monitor)\n\tconst backend = backendFactory(manager, globalContext, backendOptions)\n\tmanager.receiveBackend(backend)\n\treturn manager\n}\n\nfunction makeStoreInstance(debugMode: boolean): Store<State> {\n\t// TODO: if we ever make a react-native version of this,\n\t// we'll need to consider how to pull off dev-tooling\n\tconst reduxDevTools =\n\t\ttypeof window !== 'undefined' &&\n\t\t(window as any).__REDUX_DEVTOOLS_EXTENSION__\n\treturn createStore(\n\t\treduce,\n\t\tdebugMode &&\n\t\t\treduxDevTools &&\n\t\t\treduxDevTools({\n\t\t\t\tname: 'dnd-core',\n\t\t\t\tinstanceId: 'dnd-core',\n\t\t\t}),\n\t)\n}\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\nimport { createDragDropManager } from 'dnd-core'\nimport type { FC, ReactNode } from 'react'\nimport { memo, useEffect } from 'react'\n\nimport { DndContext } from './DndContext.js'\n\nexport type DndProviderProps<BackendContext, BackendOptions> =\n\t| {\n\t\t\tchildren?: ReactNode\n\t\t\tmanager: DragDropManager\n\t }\n\t| {\n\t\t\tbackend: BackendFactory\n\t\t\tchildren?: ReactNode\n\t\t\tcontext?: BackendContext\n\t\t\toptions?: BackendOptions\n\t\t\tdebugMode?: boolean\n\t }\n\nlet refCount = 0\nconst INSTANCE_SYM = Symbol.for('__REACT_DND_CONTEXT_INSTANCE__')\n\n/**\n * A React component that provides the React-DnD context\n */\nexport const DndProvider: FC<DndProviderProps<unknown, unknown>> = memo(\n\tfunction DndProvider({ children, ...props }) {\n\t\tconst [manager, isGlobalInstance] = getDndContextValue(props) // memoized from props\n\t\t/**\n\t\t * If the global context was used to store the DND context\n\t\t * then where theres no more references to it we should\n\t\t * clean it up to avoid memory leaks\n\t\t */\n\t\tuseEffect(() => {\n\t\t\tif (isGlobalInstance) {\n\t\t\t\tconst context = getGlobalContext()\n\t\t\t\t++refCount\n\n\t\t\t\treturn () => {\n\t\t\t\t\tif (--refCount === 0) {\n\t\t\t\t\t\tcontext[INSTANCE_SYM] = null\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn\n\t\t}, [])\n\n\t\treturn <DndContext.Provider value={manager}>{children}</DndContext.Provider>\n\t},\n)\n\nfunction getDndContextValue(props: DndProviderProps<unknown, unknown>) {\n\tif ('manager' in props) {\n\t\tconst manager = { dragDropManager: props.manager }\n\t\treturn [manager, false]\n\t}\n\n\tconst manager = createSingletonDndContext(\n\t\tprops.backend,\n\t\tprops.context,\n\t\tprops.options,\n\t\tprops.debugMode,\n\t)\n\tconst isGlobalInstance = !props.context\n\n\treturn [manager, isGlobalInstance]\n}\n\nfunction createSingletonDndContext<BackendContext, BackendOptions>(\n\tbackend: BackendFactory,\n\tcontext: BackendContext = getGlobalContext(),\n\toptions: BackendOptions,\n\tdebugMode?: boolean,\n) {\n\tconst ctx = context as any\n\tif (!ctx[INSTANCE_SYM]) {\n\t\tctx[INSTANCE_SYM] = {\n\t\t\tdragDropManager: createDragDropManager(\n\t\t\t\tbackend,\n\t\t\t\tcontext,\n\t\t\t\toptions,\n\t\t\t\tdebugMode,\n\t\t\t),\n\t\t}\n\t}\n\treturn ctx[INSTANCE_SYM]\n}\n\ndeclare const global: any\nfunction getGlobalContext() {\n\treturn typeof global !== 'undefined' ? global : (window as any)\n}\n","import { useEffect, useLayoutEffect } from 'react'\n\n// suppress the useLayoutEffect warning on server side.\nexport const useIsomorphicLayoutEffect =\n\ttypeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import type { Connector } from '../internals/index.js'\nimport type { HandlerManager, MonitorEventEmitter } from '../types/index.js'\nimport { useMonitorOutput } from './useMonitorOutput.js'\n\nexport function useCollectedProps<Collected, Monitor extends HandlerManager>(\n\tcollector: ((monitor: Monitor) => Collected) | undefined,\n\tmonitor: Monitor & MonitorEventEmitter,\n\tconnector: Connector,\n) {\n\treturn useMonitorOutput(monitor, collector || (() => ({} as Collected)), () =>\n\t\tconnector.reconnect(),\n\t)\n}\n","import type { HandlerManager, MonitorEventEmitter } from '../types/index.js'\nimport { useCollector } from './useCollector.js'\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'\n\nexport function useMonitorOutput<Monitor extends HandlerManager, Collected>(\n\tmonitor: Monitor & MonitorEventEmitter,\n\tcollect: (monitor: Monitor) => Collected,\n\tonCollect?: () => void,\n): Collected {\n\tconst [collected, updateCollected] = useCollector(monitor, collect, onCollect)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction subscribeToMonitorStateChange() {\n\t\t\tconst handlerId = monitor.getHandlerId()\n\t\t\tif (handlerId == null) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\treturn monitor.subscribeToStateChange(updateCollected, {\n\t\t\t\thandlerIds: [handlerId],\n\t\t\t})\n\t\t},\n\t\t[monitor, updateCollected],\n\t)\n\n\treturn collected\n}\n","import equal from 'fast-deep-equal'\nimport { useCallback, useState } from 'react'\n\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js'\n\n/**\n *\n * @param monitor The monitor to collect state from\n * @param collect The collecting function\n * @param onUpdate A method to invoke when updates occur\n */\nexport function useCollector<T, S>(\n\tmonitor: T,\n\tcollect: (monitor: T) => S,\n\tonUpdate?: () => void,\n): [S, () => void] {\n\tconst [collected, setCollected] = useState(() => collect(monitor))\n\n\tconst updateCollected = useCallback(() => {\n\t\tconst nextValue = collect(monitor)\n\t\t// This needs to be a deep-equality check because some monitor-collected values\n\t\t// include XYCoord objects that may be equivalent, but do not have instance equality.\n\t\tif (!equal(collected, nextValue)) {\n\t\t\tsetCollected(nextValue)\n\t\t\tif (onUpdate) {\n\t\t\t\tonUpdate()\n\t\t\t}\n\t\t}\n\t}, [collected, monitor, onUpdate])\n\n\t// update the collected properties after react renders.\n\t// Note that the \"Dustbin Stress Test\" fails if this is not\n\t// done when the component updates\n\tuseIsomorphicLayoutEffect(updateCollected)\n\n\treturn [collected, updateCollected]\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","import { useMemo } from 'react'\n\nimport type { FactoryOrInstance } from './types.js'\n\nexport function useOptionalFactory<T>(\n\targ: FactoryOrInstance<T>,\n\tdeps?: unknown[],\n): T {\n\tconst memoDeps = [...(deps || [])]\n\tif (deps == null && typeof arg !== 'function') {\n\t\tmemoDeps.push(arg)\n\t}\n\treturn useMemo<T>(() => {\n\t\treturn typeof arg === 'function' ? (arg as () => T)() : (arg as T)\n\t}, memoDeps)\n}\n","import { useMemo } from 'react'\n\nimport type { SourceConnector } from '../../internals/index.js'\n\nexport function useConnectDragSource(connector: SourceConnector) {\n\treturn useMemo(() => connector.hooks.dragSource(), [connector])\n}\n\nexport function useConnectDragPreview(connector: SourceConnector) {\n\treturn useMemo(() => connector.hooks.dragPreview(), [connector])\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type { DragSourceMonitor } from '../types/index.js'\n\nlet isCallingCanDrag = false\nlet isCallingIsDragging = false\n\nexport class DragSourceMonitorImpl implements DragSourceMonitor {\n\tprivate internalMonitor: DragDropMonitor\n\tprivate sourceId: Identifier | null = null\n\n\tpublic constructor(manager: DragDropManager) {\n\t\tthis.internalMonitor = manager.getMonitor()\n\t}\n\n\tpublic receiveHandlerId(sourceId: Identifier | null): void {\n\t\tthis.sourceId = sourceId\n\t}\n\n\tpublic getHandlerId(): Identifier | null {\n\t\treturn this.sourceId\n\t}\n\n\tpublic canDrag(): boolean {\n\t\tinvariant(\n\t\t\t!isCallingCanDrag,\n\t\t\t'You may not call monitor.canDrag() inside your canDrag() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingCanDrag = true\n\t\t\treturn this.internalMonitor.canDragSource(this.sourceId as Identifier)\n\t\t} finally {\n\t\t\tisCallingCanDrag = false\n\t\t}\n\t}\n\n\tpublic isDragging(): boolean {\n\t\tif (!this.sourceId) {\n\t\t\treturn false\n\t\t}\n\t\tinvariant(\n\t\t\t!isCallingIsDragging,\n\t\t\t'You may not call monitor.isDragging() inside your isDragging() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drag-source-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingIsDragging = true\n\t\t\treturn this.internalMonitor.isDraggingSource(this.sourceId)\n\t\t} finally {\n\t\t\tisCallingIsDragging = false\n\t\t}\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: { handlerIds?: Identifier[] },\n\t): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToStateChange(listener, options)\n\t}\n\n\tpublic isDraggingSource(sourceId: Identifier): boolean {\n\t\treturn this.internalMonitor.isDraggingSource(sourceId)\n\t}\n\n\tpublic isOverTarget(\n\t\ttargetId: Identifier,\n\t\toptions?: { shallow: boolean },\n\t): boolean {\n\t\treturn this.internalMonitor.isOverTarget(targetId, options)\n\t}\n\n\tpublic getTargetIds(): Identifier[] {\n\t\treturn this.internalMonitor.getTargetIds()\n\t}\n\n\tpublic isSourcePublic(): boolean | null {\n\t\treturn this.internalMonitor.isSourcePublic()\n\t}\n\n\tpublic getSourceId(): Identifier | null {\n\t\treturn this.internalMonitor.getSourceId()\n\t}\n\n\tpublic subscribeToOffsetChange(listener: Listener): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToOffsetChange(listener)\n\t}\n\n\tpublic canDragSource(sourceId: Identifier): boolean {\n\t\treturn this.internalMonitor.canDragSource(sourceId)\n\t}\n\n\tpublic canDropOnTarget(targetId: Identifier): boolean {\n\t\treturn this.internalMonitor.canDropOnTarget(targetId)\n\t}\n\n\tpublic getItemType(): Identifier | null {\n\t\treturn this.internalMonitor.getItemType()\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.internalMonitor.getItem()\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.internalMonitor.getDropResult()\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.internalMonitor.didDrop()\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialClientOffset()\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialSourceClientOffset()\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getSourceClientOffset()\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getClientOffset()\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getDifferenceFromInitialOffset()\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type {\n\tDragDropManager,\n\tDragDropMonitor,\n\tIdentifier,\n\tListener,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport type { DropTargetMonitor } from '../types/index.js'\n\nlet isCallingCanDrop = false\n\nexport class DropTargetMonitorImpl implements DropTargetMonitor {\n\tprivate internalMonitor: DragDropMonitor\n\tprivate targetId: Identifier | null = null\n\n\tpublic constructor(manager: DragDropManager) {\n\t\tthis.internalMonitor = manager.getMonitor()\n\t}\n\n\tpublic receiveHandlerId(targetId: Identifier | null): void {\n\t\tthis.targetId = targetId\n\t}\n\n\tpublic getHandlerId(): Identifier | null {\n\t\treturn this.targetId\n\t}\n\n\tpublic subscribeToStateChange(\n\t\tlistener: Listener,\n\t\toptions?: { handlerIds?: Identifier[] },\n\t): Unsubscribe {\n\t\treturn this.internalMonitor.subscribeToStateChange(listener, options)\n\t}\n\n\tpublic canDrop(): boolean {\n\t\t// Cut out early if the target id has not been set. This should prevent errors\n\t\t// where the user has an older version of dnd-core like in\n\t\t// https://github.com/react-dnd/react-dnd/issues/1310\n\t\tif (!this.targetId) {\n\t\t\treturn false\n\t\t}\n\t\tinvariant(\n\t\t\t!isCallingCanDrop,\n\t\t\t'You may not call monitor.canDrop() inside your canDrop() implementation. ' +\n\t\t\t\t'Read more: http://react-dnd.github.io/react-dnd/docs/api/drop-target-monitor',\n\t\t)\n\n\t\ttry {\n\t\t\tisCallingCanDrop = true\n\t\t\treturn this.internalMonitor.canDropOnTarget(this.targetId)\n\t\t} finally {\n\t\t\tisCallingCanDrop = false\n\t\t}\n\t}\n\n\tpublic isOver(options?: { shallow?: boolean }): boolean {\n\t\tif (!this.targetId) {\n\t\t\treturn false\n\t\t}\n\t\treturn this.internalMonitor.isOverTarget(this.targetId, options)\n\t}\n\n\tpublic getItemType(): Identifier | null {\n\t\treturn this.internalMonitor.getItemType()\n\t}\n\n\tpublic getItem(): any {\n\t\treturn this.internalMonitor.getItem()\n\t}\n\n\tpublic getDropResult(): any {\n\t\treturn this.internalMonitor.getDropResult()\n\t}\n\n\tpublic didDrop(): boolean {\n\t\treturn this.internalMonitor.didDrop()\n\t}\n\n\tpublic getInitialClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialClientOffset()\n\t}\n\n\tpublic getInitialSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getInitialSourceClientOffset()\n\t}\n\n\tpublic getSourceClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getSourceClientOffset()\n\t}\n\n\tpublic getClientOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getClientOffset()\n\t}\n\n\tpublic getDifferenceFromInitialOffset(): XYCoord | null {\n\t\treturn this.internalMonitor.getDifferenceFromInitialOffset()\n\t}\n}\n","export function shallowEqual<T>(\n\tobjA: T,\n\tobjB: T,\n\tcompare?: (a: T, b: T, key?: string) => boolean | void,\n\tcompareContext?: any,\n) {\n\tlet compareResult = compare\n\t\t? compare.call(compareContext, objA, objB)\n\t\t: void 0\n\tif (compareResult !== void 0) {\n\t\treturn !!compareResult\n\t}\n\n\tif (objA === objB) {\n\t\treturn true\n\t}\n\n\tif (typeof objA !== 'object' || !objA || typeof objB !== 'object' || !objB) {\n\t\treturn false\n\t}\n\n\tconst keysA = Object.keys(objA)\n\tconst keysB = Object.keys(objB)\n\n\tif (keysA.length !== keysB.length) {\n\t\treturn false\n\t}\n\n\tconst bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB)\n\n\t// Test for A's keys different from B.\n\tfor (let idx = 0; idx < keysA.length; idx++) {\n\t\tconst key = keysA[idx] as string\n\n\t\tif (!bHasOwnProperty(key)) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst valueA = (objA as any)[key]\n\t\tconst valueB = (objB as any)[key]\n\n\t\tcompareResult = compare\n\t\t\t? compare.call(compareContext, valueA, valueB, key)\n\t\t\t: void 0\n\n\t\tif (\n\t\t\tcompareResult === false ||\n\t\t\t(compareResult === void 0 && valueA !== valueB)\n\t\t) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n","export interface Ref<T> {\n\tcurrent: T\n}\n\nexport function isRef(obj: unknown): boolean {\n\treturn (\n\t\t// eslint-disable-next-line no-prototype-builtins\n\t\tobj !== null &&\n\t\ttypeof obj === 'object' &&\n\t\tObject.prototype.hasOwnProperty.call(obj, 'current')\n\t)\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { ReactElement } from 'react'\nimport { cloneElement, isValidElement } from 'react'\n\nfunction throwIfCompositeComponentElement(element: ReactElement<any>) {\n\t// Custom components can no longer be wrapped directly in React DnD 2.0\n\t// so that we don't need to depend on findDOMNode() from react-dom.\n\tif (typeof element.type === 'string') {\n\t\treturn\n\t}\n\n\tconst displayName =\n\t\t(element.type as any).displayName || element.type.name || 'the component'\n\n\tthrow new Error(\n\t\t'Only native element nodes can now be passed to React DnD connectors.' +\n\t\t\t`You can either wrap ${displayName} into a <div>, or turn it into a ` +\n\t\t\t'drag source or a drop target itself.',\n\t)\n}\n\nfunction wrapHookToRecognizeElement(hook: (node: any, options: any) => void) {\n\treturn (elementOrNode = null, options = null) => {\n\t\t// When passed a node, call the hook straight away.\n\t\tif (!isValidElement(elementOrNode)) {\n\t\t\tconst node = elementOrNode\n\t\t\thook(node, options)\n\t\t\t// return the node so it can be chained (e.g. when within callback refs\n\t\t\t// <div ref={node => connectDragSource(connectDropTarget(node))}/>\n\t\t\treturn node\n\t\t}\n\n\t\t// If passed a ReactElement, clone it and attach this function as a ref.\n\t\t// This helps us achieve a neat API where user doesn't even know that refs\n\t\t// are being used under the hood.\n\t\tconst element: ReactElement | null = elementOrNode\n\t\tthrowIfCompositeComponentElement(element as any)\n\n\t\t// When no options are passed, use the hook directly\n\t\tconst ref = options ? (node: Element) => hook(node, options) : hook\n\t\treturn cloneWithRef(element, ref)\n\t}\n}\n\nexport function wrapConnectorHooks(hooks: any) {\n\tconst wrappedHooks: any = {}\n\n\tObject.keys(hooks).forEach((key) => {\n\t\tconst hook = hooks[key]\n\n\t\t// ref objects should be passed straight through without wrapping\n\t\tif (key.endsWith('Ref')) {\n\t\t\twrappedHooks[key] = hooks[key]\n\t\t} else {\n\t\t\tconst wrappedHook = wrapHookToRecognizeElement(hook)\n\t\t\twrappedHooks[key] = () => wrappedHook\n\t\t}\n\t})\n\n\treturn wrappedHooks\n}\n\nfunction setRef(ref: any, node: any) {\n\tif (typeof ref === 'function') {\n\t\tref(node)\n\t} else {\n\t\tref.current = node\n\t}\n}\n\nfunction cloneWithRef(element: any, newRef: any): ReactElement<any> {\n\tconst previousRef = element.ref\n\tinvariant(\n\t\ttypeof previousRef !== 'string',\n\t\t'Cannot connect React DnD to an element with an existing string ref. ' +\n\t\t\t'Please convert it to use a callback ref instead, or wrap it into a <span> or <div>. ' +\n\t\t\t'Read more: https://reactjs.org/docs/refs-and-the-dom.html#callback-refs',\n\t)\n\n\tif (!previousRef) {\n\t\t// When there is no ref on the element, use the new ref directly\n\t\treturn cloneElement(element, {\n\t\t\tref: newRef,\n\t\t})\n\t} else {\n\t\treturn cloneElement(element, {\n\t\t\tref: (node: any) => {\n\t\t\t\tsetRef(previousRef, node)\n\t\t\t\tsetRef(newRef, node)\n\t\t\t},\n\t\t})\n\t}\n}\n","import { shallowEqual } from '@react-dnd/shallowequal'\nimport type { Backend, Identifier, Unsubscribe } from 'dnd-core'\nimport type { ReactElement, Ref, RefObject } from 'react'\n\nimport type { DragPreviewOptions, DragSourceOptions } from '../types/index.js'\nimport { isRef } from './isRef.js'\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js'\n\nexport interface Connector {\n\thooks: any\n\tconnectTarget: any\n\treceiveHandlerId(handlerId: Identifier | null): void\n\treconnect(): void\n}\n\nexport class SourceConnector implements Connector {\n\tpublic hooks = wrapConnectorHooks({\n\t\tdragSource: (\n\t\t\tnode: Element | ReactElement | Ref<any>,\n\t\t\toptions?: DragSourceOptions,\n\t\t) => {\n\t\t\tthis.clearDragSource()\n\t\t\tthis.dragSourceOptions = options || null\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dragSourceRef = node as RefObject<any>\n\t\t\t} else {\n\t\t\t\tthis.dragSourceNode = node\n\t\t\t}\n\t\t\tthis.reconnectDragSource()\n\t\t},\n\t\tdragPreview: (node: any, options?: DragPreviewOptions) => {\n\t\t\tthis.clearDragPreview()\n\t\t\tthis.dragPreviewOptions = options || null\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dragPreviewRef = node\n\t\t\t} else {\n\t\t\t\tthis.dragPreviewNode = node\n\t\t\t}\n\t\t\tthis.reconnectDragPreview()\n\t\t},\n\t})\n\tprivate handlerId: Identifier | null = null\n\n\t// The drop target may either be attached via ref or connect function\n\tprivate dragSourceRef: RefObject<any> | null = null\n\tprivate dragSourceNode: any\n\tprivate dragSourceOptionsInternal: DragSourceOptions | null = null\n\tprivate dragSourceUnsubscribe: Unsubscribe | undefined\n\n\t// The drag preview may either be attached via ref or connect function\n\tprivate dragPreviewRef: RefObject<any> | null = null\n\tprivate dragPreviewNode: any\n\tprivate dragPreviewOptionsInternal: DragPreviewOptions | null = null\n\tprivate dragPreviewUnsubscribe: Unsubscribe | undefined\n\n\tprivate lastConnectedHandlerId: Identifier | null = null\n\tprivate lastConnectedDragSource: any = null\n\tprivate lastConnectedDragSourceOptions: any = null\n\tprivate lastConnectedDragPreview: any = null\n\tprivate lastConnectedDragPreviewOptions: any = null\n\n\tprivate readonly backend: Backend\n\n\tpublic constructor(backend: Backend) {\n\t\tthis.backend = backend\n\t}\n\n\tpublic receiveHandlerId(newHandlerId: Identifier | null): void {\n\t\tif (this.handlerId === newHandlerId) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.handlerId = newHandlerId\n\t\tthis.reconnect()\n\t}\n\n\tpublic get connectTarget(): any {\n\t\treturn this.dragSource\n\t}\n\n\tpublic get dragSourceOptions(): DragSourceOptions | null {\n\t\treturn this.dragSourceOptionsInternal\n\t}\n\tpublic set dragSourceOptions(options: DragSourceOptions | null) {\n\t\tthis.dragSourceOptionsInternal = options\n\t}\n\n\tpublic get dragPreviewOptions(): DragPreviewOptions | null {\n\t\treturn this.dragPreviewOptionsInternal\n\t}\n\n\tpublic set dragPreviewOptions(options: DragPreviewOptions | null) {\n\t\tthis.dragPreviewOptionsInternal = options\n\t}\n\n\tpublic reconnect(): void {\n\t\tconst didChange = this.reconnectDragSource()\n\t\tthis.reconnectDragPreview(didChange)\n\t}\n\n\tprivate reconnectDragSource(): boolean {\n\t\tconst dragSource = this.dragSource\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didConnectedDragSourceChange() ||\n\t\t\tthis.didDragSourceOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDragSource()\n\t\t}\n\n\t\tif (!this.handlerId) {\n\t\t\treturn didChange\n\t\t}\n\t\tif (!dragSource) {\n\t\t\tthis.lastConnectedDragSource = dragSource\n\t\t\treturn didChange\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDragSource = dragSource\n\t\t\tthis.lastConnectedDragSourceOptions = this.dragSourceOptions\n\t\t\tthis.dragSourceUnsubscribe = this.backend.connectDragSource(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdragSource,\n\t\t\t\tthis.dragSourceOptions,\n\t\t\t)\n\t\t}\n\t\treturn didChange\n\t}\n\n\tprivate reconnectDragPreview(forceDidChange = false): void {\n\t\tconst dragPreview = this.dragPreview\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tforceDidChange ||\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didConnectedDragPreviewChange() ||\n\t\t\tthis.didDragPreviewOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDragPreview()\n\t\t}\n\n\t\tif (!this.handlerId) {\n\t\t\treturn\n\t\t}\n\t\tif (!dragPreview) {\n\t\t\tthis.lastConnectedDragPreview = dragPreview\n\t\t\treturn\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDragPreview = dragPreview\n\t\t\tthis.lastConnectedDragPreviewOptions = this.dragPreviewOptions\n\t\t\tthis.dragPreviewUnsubscribe = this.backend.connectDragPreview(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdragPreview,\n\t\t\t\tthis.dragPreviewOptions,\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate didHandlerIdChange(): boolean {\n\t\treturn this.lastConnectedHandlerId !== this.handlerId\n\t}\n\n\tprivate didConnectedDragSourceChange(): boolean {\n\t\treturn this.lastConnectedDragSource !== this.dragSource\n\t}\n\n\tprivate didConnectedDragPreviewChange(): boolean {\n\t\treturn this.lastConnectedDragPreview !== this.dragPreview\n\t}\n\n\tprivate didDragSourceOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDragSourceOptions,\n\t\t\tthis.dragSourceOptions,\n\t\t)\n\t}\n\n\tprivate didDragPreviewOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDragPreviewOptions,\n\t\t\tthis.dragPreviewOptions,\n\t\t)\n\t}\n\n\tpublic disconnectDragSource() {\n\t\tif (this.dragSourceUnsubscribe) {\n\t\t\tthis.dragSourceUnsubscribe()\n\t\t\tthis.dragSourceUnsubscribe = undefined\n\t\t}\n\t}\n\n\tpublic disconnectDragPreview() {\n\t\tif (this.dragPreviewUnsubscribe) {\n\t\t\tthis.dragPreviewUnsubscribe()\n\t\t\tthis.dragPreviewUnsubscribe = undefined\n\t\t\tthis.dragPreviewNode = null\n\t\t\tthis.dragPreviewRef = null\n\t\t}\n\t}\n\n\tprivate get dragSource() {\n\t\treturn (\n\t\t\tthis.dragSourceNode || (this.dragSourceRef && this.dragSourceRef.current)\n\t\t)\n\t}\n\n\tprivate get dragPreview() {\n\t\treturn (\n\t\t\tthis.dragPreviewNode ||\n\t\t\t(this.dragPreviewRef && this.dragPreviewRef.current)\n\t\t)\n\t}\n\n\tprivate clearDragSource() {\n\t\tthis.dragSourceNode = null\n\t\tthis.dragSourceRef = null\n\t}\n\n\tprivate clearDragPreview() {\n\t\tthis.dragPreviewNode = null\n\t\tthis.dragPreviewRef = null\n\t}\n}\n","import { shallowEqual } from '@react-dnd/shallowequal'\nimport type { Backend, Identifier, Unsubscribe } from 'dnd-core'\nimport type { RefObject } from 'react'\n\nimport type { DropTargetOptions } from '../types/index.js'\nimport { isRef } from './isRef.js'\nimport type { Connector } from './SourceConnector.js'\nimport { wrapConnectorHooks } from './wrapConnectorHooks.js'\n\nexport class TargetConnector implements Connector {\n\tpublic hooks = wrapConnectorHooks({\n\t\tdropTarget: (node: any, options: DropTargetOptions) => {\n\t\t\tthis.clearDropTarget()\n\t\t\tthis.dropTargetOptions = options\n\t\t\tif (isRef(node)) {\n\t\t\t\tthis.dropTargetRef = node\n\t\t\t} else {\n\t\t\t\tthis.dropTargetNode = node\n\t\t\t}\n\t\t\tthis.reconnect()\n\t\t},\n\t})\n\n\tprivate handlerId: Identifier | null = null\n\t// The drop target may either be attached via ref or connect function\n\tprivate dropTargetRef: RefObject<any> | null = null\n\tprivate dropTargetNode: any\n\tprivate dropTargetOptionsInternal: DropTargetOptions | null = null\n\tprivate unsubscribeDropTarget: Unsubscribe | undefined\n\n\tprivate lastConnectedHandlerId: Identifier | null = null\n\tprivate lastConnectedDropTarget: any = null\n\tprivate lastConnectedDropTargetOptions: DropTargetOptions | null = null\n\tprivate readonly backend: Backend\n\n\tpublic constructor(backend: Backend) {\n\t\tthis.backend = backend\n\t}\n\n\tpublic get connectTarget(): any {\n\t\treturn this.dropTarget\n\t}\n\n\tpublic reconnect(): void {\n\t\t// if nothing has changed then don't resubscribe\n\t\tconst didChange =\n\t\t\tthis.didHandlerIdChange() ||\n\t\t\tthis.didDropTargetChange() ||\n\t\t\tthis.didOptionsChange()\n\n\t\tif (didChange) {\n\t\t\tthis.disconnectDropTarget()\n\t\t}\n\n\t\tconst dropTarget = this.dropTarget\n\t\tif (!this.handlerId) {\n\t\t\treturn\n\t\t}\n\t\tif (!dropTarget) {\n\t\t\tthis.lastConnectedDropTarget = dropTarget\n\t\t\treturn\n\t\t}\n\n\t\tif (didChange) {\n\t\t\tthis.lastConnectedHandlerId = this.handlerId\n\t\t\tthis.lastConnectedDropTarget = dropTarget\n\t\t\tthis.lastConnectedDropTargetOptions = this.dropTargetOptions\n\n\t\t\tthis.unsubscribeDropTarget = this.backend.connectDropTarget(\n\t\t\t\tthis.handlerId,\n\t\t\t\tdropTarget,\n\t\t\t\tthis.dropTargetOptions,\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic receiveHandlerId(newHandlerId: Identifier | null): void {\n\t\tif (newHandlerId === this.handlerId) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.handlerId = newHandlerId\n\t\tthis.reconnect()\n\t}\n\n\tpublic get dropTargetOptions(): DropTargetOptions {\n\t\treturn this.dropTargetOptionsInternal\n\t}\n\tpublic set dropTargetOptions(options: DropTargetOptions) {\n\t\tthis.dropTargetOptionsInternal = options\n\t}\n\n\tprivate didHandlerIdChange(): boolean {\n\t\treturn this.lastConnectedHandlerId !== this.handlerId\n\t}\n\n\tprivate didDropTargetChange(): boolean {\n\t\treturn this.lastConnectedDropTarget !== this.dropTarget\n\t}\n\n\tprivate didOptionsChange(): boolean {\n\t\treturn !shallowEqual(\n\t\t\tthis.lastConnectedDropTargetOptions,\n\t\t\tthis.dropTargetOptions,\n\t\t)\n\t}\n\n\tpublic disconnectDropTarget() {\n\t\tif (this.unsubscribeDropTarget) {\n\t\t\tthis.unsubscribeDropTarget()\n\t\t\tthis.unsubscribeDropTarget = undefined\n\t\t}\n\t}\n\n\tprivate get dropTarget() {\n\t\treturn (\n\t\t\tthis.dropTargetNode || (this.dropTargetRef && this.dropTargetRef.current)\n\t\t)\n\t}\n\n\tprivate clearDropTarget() {\n\t\tthis.dropTargetRef = null\n\t\tthis.dropTargetNode = null\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { DragDropManager } from 'dnd-core'\nimport { useContext } from 'react'\n\nimport { DndContext } from '../core/index.js'\n\n/**\n * A hook to retrieve the DragDropManager from Context\n */\nexport function useDragDropManager(): DragDropManager {\n\tconst { dragDropManager } = useContext(DndContext)\n\tinvariant(dragDropManager != null, 'Expected drag drop context')\n\treturn dragDropManager as DragDropManager\n}\n","import type { DragDropMonitor, DragSource, Identifier } from 'dnd-core'\n\nimport type { Connector } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragObjectFactory, DragSourceHookSpec } from '../types.js'\n\nexport class DragSourceImpl<O, R, P> implements DragSource {\n\tpublic constructor(\n\t\tpublic spec: DragSourceHookSpec<O, R, P>,\n\t\tprivate monitor: DragSourceMonitor<O, R>,\n\t\tprivate connector: Connector,\n\t) {}\n\n\tpublic beginDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\n\t\tlet result: O | null = null\n\t\tif (typeof spec.item === 'object') {\n\t\t\tresult = spec.item as O\n\t\t} else if (typeof spec.item === 'function') {\n\t\t\tresult = (spec.item as DragObjectFactory<O>)(monitor)\n\t\t} else {\n\t\t\tresult = {} as O\n\t\t}\n\t\treturn result ?? null\n\t}\n\n\tpublic canDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (typeof spec.canDrag === 'boolean') {\n\t\t\treturn spec.canDrag\n\t\t} else if (typeof spec.canDrag === 'function') {\n\t\t\treturn spec.canDrag(monitor)\n\t\t} else {\n\t\t\treturn true\n\t\t}\n\t}\n\n\tpublic isDragging(globalMonitor: DragDropMonitor, target: Identifier) {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tconst { isDragging } = spec\n\t\treturn isDragging\n\t\t\t? isDragging(monitor)\n\t\t\t: target === globalMonitor.getSourceId()\n\t}\n\n\tpublic endDrag() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tconst connector = this.connector\n\t\tconst { end } = spec\n\t\tif (end) {\n\t\t\tend(monitor.getItem(), monitor)\n\t\t}\n\t\tconnector.reconnect()\n\t}\n}\n","import { invariant } from '@react-dnd/invariant'\n\nimport type {\n\tConnectDragPreview,\n\tConnectDragSource,\n} from '../../types/index.js'\nimport type { DragSourceHookSpec, FactoryOrInstance } from '../types.js'\nimport { useCollectedProps } from '../useCollectedProps.js'\nimport { useOptionalFactory } from '../useOptionalFactory.js'\nimport { useConnectDragPreview, useConnectDragSource } from './connectors.js'\nimport { useDragSourceConnector } from './useDragSourceConnector.js'\nimport { useDragSourceMonitor } from './useDragSourceMonitor.js'\nimport { useRegisteredDragSource } from './useRegisteredDragSource.js'\n\n/**\n * useDragSource hook\n * @param sourceSpec The drag source specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\nexport function useDrag<\n\tDragObject = unknown,\n\tDropResult = unknown,\n\tCollectedProps = unknown,\n>(\n\tspecArg: FactoryOrInstance<\n\t\tDragSourceHookSpec<DragObject, DropResult, CollectedProps>\n\t>,\n\tdeps?: unknown[],\n): [CollectedProps, ConnectDragSource, ConnectDragPreview] {\n\tconst spec = useOptionalFactory(specArg, deps)\n\tinvariant(\n\t\t!(spec as any).begin,\n\t\t`useDrag::spec.begin was deprecated in v14. Replace spec.begin() with spec.item(). (see more here - https://react-dnd.github.io/react-dnd/docs/api/use-drag)`,\n\t)\n\n\tconst monitor = useDragSourceMonitor<DragObject, DropResult>()\n\tconst connector = useDragSourceConnector(spec.options, spec.previewOptions)\n\tuseRegisteredDragSource(spec, monitor, connector)\n\n\treturn [\n\t\tuseCollectedProps(spec.collect, monitor, connector),\n\t\tuseConnectDragSource(connector),\n\t\tuseConnectDragPreview(connector),\n\t]\n}\n","import { useMemo } from 'react'\n\nimport { DragSourceMonitorImpl } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\n\nexport function useDragSourceMonitor<O, R>(): DragSourceMonitor<O, R> {\n\tconst manager = useDragDropManager()\n\treturn useMemo<DragSourceMonitor<O, R>>(\n\t\t() => new DragSourceMonitorImpl(manager),\n\t\t[manager],\n\t)\n}\n","import { useMemo } from 'react'\n\nimport { SourceConnector } from '../../internals/index.js'\nimport type {\n\tDragPreviewOptions,\n\tDragSourceOptions,\n} from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\n\nexport function useDragSourceConnector(\n\tdragSourceOptions: DragSourceOptions | undefined,\n\tdragPreviewOptions: DragPreviewOptions | undefined,\n): SourceConnector {\n\tconst manager = useDragDropManager()\n\tconst connector = useMemo(\n\t\t() => new SourceConnector(manager.getBackend()),\n\t\t[manager],\n\t)\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dragSourceOptions = dragSourceOptions || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDragSource()\n\t}, [connector, dragSourceOptions])\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dragPreviewOptions = dragPreviewOptions || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDragPreview()\n\t}, [connector, dragPreviewOptions])\n\treturn connector\n}\n","import type { SourceConnector } from '../../internals/index.js'\nimport { registerSource } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragSourceHookSpec } from '../types.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\nimport { useDragSource } from './useDragSource.js'\nimport { useDragType } from './useDragType.js'\n\nexport function useRegisteredDragSource<O, R, P>(\n\tspec: DragSourceHookSpec<O, R, P>,\n\tmonitor: DragSourceMonitor<O, R>,\n\tconnector: SourceConnector,\n): void {\n\tconst manager = useDragDropManager()\n\tconst handler = useDragSource(spec, monitor, connector)\n\tconst itemType = useDragType(spec)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction registerDragSource() {\n\t\t\tif (itemType != null) {\n\t\t\t\tconst [handlerId, unregister] = registerSource(\n\t\t\t\t\titemType,\n\t\t\t\t\thandler,\n\t\t\t\t\tmanager,\n\t\t\t\t)\n\t\t\t\tmonitor.receiveHandlerId(handlerId)\n\t\t\t\tconnector.receiveHandlerId(handlerId)\n\t\t\t\treturn unregister\n\t\t\t}\n\t\t\treturn\n\t\t},\n\t\t[manager, monitor, connector, handler, itemType],\n\t)\n}\n","import { useEffect, useMemo } from 'react'\n\nimport type { Connector } from '../../internals/index.js'\nimport type { DragSourceMonitor } from '../../types/index.js'\nimport type { DragSourceHookSpec } from '../types.js'\nimport { DragSourceImpl } from './DragSourceImpl.js'\n\nexport function useDragSource<O, R, P>(\n\tspec: DragSourceHookSpec<O, R, P>,\n\tmonitor: DragSourceMonitor<O, R>,\n\tconnector: Connector,\n) {\n\tconst handler = useMemo(\n\t\t() => new DragSourceImpl(spec, monitor, connector),\n\t\t[monitor, connector],\n\t)\n\tuseEffect(() => {\n\t\thandler.spec = spec\n\t}, [spec])\n\treturn handler\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Identifier } from 'dnd-core'\nimport { useMemo } from 'react'\n\nimport type { DragSourceHookSpec } from '../types.js'\n\nexport function useDragType(\n\tspec: DragSourceHookSpec<any, any, any>,\n): Identifier {\n\treturn useMemo(() => {\n\t\tconst result: Identifier = spec.type\n\t\tinvariant(result != null, 'spec.type must be defined')\n\t\treturn result\n\t}, [spec])\n}\n","import type {\n\tDragDropManager,\n\tDragSource,\n\tDropTarget,\n\tIdentifier,\n\tSourceType,\n\tTargetType,\n\tUnsubscribe,\n} from 'dnd-core'\n\nexport function registerTarget(\n\ttype: TargetType,\n\ttarget: DropTarget,\n\tmanager: DragDropManager,\n): [Identifier, Unsubscribe] {\n\tconst registry = manager.getRegistry()\n\tconst targetId = registry.addTarget(type, target)\n\n\treturn [targetId, () => registry.removeTarget(targetId)]\n}\n\nexport function registerSource(\n\ttype: SourceType,\n\tsource: DragSource,\n\tmanager: DragDropManager,\n): [Identifier, Unsubscribe] {\n\tconst registry = manager.getRegistry()\n\tconst sourceId = registry.addSource(type, source)\n\n\treturn [sourceId, () => registry.removeSource(sourceId)]\n}\n","import { useMemo } from 'react'\n\nimport type { TargetConnector } from '../../internals/index.js'\n\nexport function useConnectDropTarget(connector: TargetConnector) {\n\treturn useMemo(() => connector.hooks.dropTarget(), [connector])\n}\n","import type { DropTarget } from 'dnd-core'\n\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\n\nexport class DropTargetImpl<O, R, P> implements DropTarget {\n\tpublic constructor(\n\t\tpublic spec: DropTargetHookSpec<O, R, P>,\n\t\tprivate monitor: DropTargetMonitor<O, R>,\n\t) {}\n\n\tpublic canDrop() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\treturn spec.canDrop ? spec.canDrop(monitor.getItem(), monitor) : true\n\t}\n\n\tpublic hover() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (spec.hover) {\n\t\t\tspec.hover(monitor.getItem(), monitor)\n\t\t}\n\t}\n\n\tpublic drop() {\n\t\tconst spec = this.spec\n\t\tconst monitor = this.monitor\n\t\tif (spec.drop) {\n\t\t\treturn spec.drop(monitor.getItem(), monitor)\n\t\t}\n\t\treturn\n\t}\n}\n","import type { ConnectDropTarget } from '../../types/index.js'\nimport type { DropTargetHookSpec, FactoryOrInstance } from '../types.js'\nimport { useCollectedProps } from '../useCollectedProps.js'\nimport { useOptionalFactory } from '../useOptionalFactory.js'\nimport { useConnectDropTarget } from './connectors.js'\nimport { useDropTargetConnector } from './useDropTargetConnector.js'\nimport { useDropTargetMonitor } from './useDropTargetMonitor.js'\nimport { useRegisteredDropTarget } from './useRegisteredDropTarget.js'\n\n/**\n * useDropTarget Hook\n * @param spec The drop target specification (object or function, function preferred)\n * @param deps The memoization deps array to use when evaluating spec changes\n */\nexport function useDrop<\n\tDragObject = unknown,\n\tDropResult = unknown,\n\tCollectedProps = unknown,\n>(\n\tspecArg: FactoryOrInstance<\n\t\tDropTargetHookSpec<DragObject, DropResult, CollectedProps>\n\t>,\n\tdeps?: unknown[],\n): [CollectedProps, ConnectDropTarget] {\n\tconst spec = useOptionalFactory(specArg, deps)\n\tconst monitor = useDropTargetMonitor<DragObject, DropResult>()\n\tconst connector = useDropTargetConnector(spec.options)\n\tuseRegisteredDropTarget(spec, monitor, connector)\n\n\treturn [\n\t\tuseCollectedProps(spec.collect, monitor, connector),\n\t\tuseConnectDropTarget(connector),\n\t]\n}\n","import { useMemo } from 'react'\n\nimport { DropTargetMonitorImpl } from '../../internals/index.js'\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\n\nexport function useDropTargetMonitor<O, R>(): DropTargetMonitor<O, R> {\n\tconst manager = useDragDropManager()\n\treturn useMemo(() => new DropTargetMonitorImpl(manager), [manager])\n}\n","import { useMemo } from 'react'\n\nimport { TargetConnector } from '../../internals/index.js'\nimport type { DropTargetOptions } from '../../types/index.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\n\nexport function useDropTargetConnector(\n\toptions: DropTargetOptions,\n): TargetConnector {\n\tconst manager = useDragDropManager()\n\tconst connector = useMemo(\n\t\t() => new TargetConnector(manager.getBackend()),\n\t\t[manager],\n\t)\n\tuseIsomorphicLayoutEffect(() => {\n\t\tconnector.dropTargetOptions = options || null\n\t\tconnector.reconnect()\n\t\treturn () => connector.disconnectDropTarget()\n\t}, [options])\n\treturn connector\n}\n","import type { TargetConnector } from '../../internals/index.js'\nimport { registerTarget } from '../../internals/index.js'\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\nimport { useDragDropManager } from '../useDragDropManager.js'\nimport { useIsomorphicLayoutEffect } from '../useIsomorphicLayoutEffect.js'\nimport { useAccept } from './useAccept.js'\nimport { useDropTarget } from './useDropTarget.js'\n\nexport function useRegisteredDropTarget<O, R, P>(\n\tspec: DropTargetHookSpec<O, R, P>,\n\tmonitor: DropTargetMonitor<O, R>,\n\tconnector: TargetConnector,\n): void {\n\tconst manager = useDragDropManager()\n\tconst dropTarget = useDropTarget(spec, monitor)\n\tconst accept = useAccept(spec)\n\n\tuseIsomorphicLayoutEffect(\n\t\tfunction registerDropTarget() {\n\t\t\tconst [handlerId, unregister] = registerTarget(\n\t\t\t\taccept,\n\t\t\t\tdropTarget,\n\t\t\t\tmanager,\n\t\t\t)\n\t\t\tmonitor.receiveHandlerId(handlerId)\n\t\t\tconnector.receiveHandlerId(handlerId)\n\t\t\treturn unregister\n\t\t},\n\t\t[\n\t\t\tmanager,\n\t\t\tmonitor,\n\t\t\tdropTarget,\n\t\t\tconnector,\n\t\t\taccept.map((a) => a.toString()).join('|'),\n\t\t],\n\t)\n}\n","import { useEffect, useMemo } from 'react'\n\nimport type { DropTargetMonitor } from '../../types/index.js'\nimport type { DropTargetHookSpec } from '../types.js'\nimport { DropTargetImpl } from './DropTargetImpl.js'\n\nexport function useDropTarget<O, R, P>(\n\tspec: DropTargetHookSpec<O, R, P>,\n\tmonitor: DropTargetMonitor<O, R>,\n) {\n\tconst dropTarget = useMemo(() => new DropTargetImpl(spec, monitor), [monitor])\n\tuseEffect(() => {\n\t\tdropTarget.spec = spec\n\t}, [spec])\n\treturn dropTarget\n}\n","import { invariant } from '@react-dnd/invariant'\nimport type { Identifier } from 'dnd-core'\nimport { useMemo } from 'react'\n\nimport type { DropTargetHookSpec } from '../types.js'\n\n/**\n * Internal utility hook to get an array-version of spec.accept.\n * The main utility here is that we aren't creating a new array on every render if a non-array spec.accept is passed in.\n * @param spec\n */\nexport function useAccept<O, R, P>(\n\tspec: DropTargetHookSpec<O, R, P>,\n): Identifier[] {\n\tconst { accept } = spec\n\treturn useMemo(() => {\n\t\tinvariant(spec.accept != null, 'accept must be defined')\n\t\treturn Array.isArray(accept) ? accept : [accept]\n\t}, [accept])\n}\n","import React, { FC } from 'react';\nimport { Box, IconButton, Tooltip } from '@mui/material';\nimport type { MRT_Column, MRT_TableInstance } from '..';\n\ninterface Props {\n column: MRT_Column;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ColumnPinningButtons: FC<Props> = ({ column, table }) => {\n const {\n options: {\n icons: { PushPinIcon },\n localization,\n },\n } = table;\n\n const handlePinColumn = (pinDirection: 'left' | 'right' | false) => {\n column.pin(pinDirection);\n };\n\n return (\n <Box sx={{ minWidth: '70px', textAlign: 'center' }}>\n {column.getIsPinned() ? (\n <Tooltip arrow title={localization.unpin}>\n <IconButton onClick={() => handlePinColumn(false)} size=\"small\">\n <PushPinIcon />\n </IconButton>\n </Tooltip>\n ) : (\n <>\n <Tooltip arrow title={localization.pinToLeft}>\n <IconButton onClick={() => handlePinColumn('left')} size=\"small\">\n <PushPinIcon\n style={{\n transform: 'rotate(90deg)',\n }}\n />\n </IconButton>\n </Tooltip>\n <Tooltip arrow title={localization.pinToRight}>\n <IconButton onClick={() => handlePinColumn('right')} size=\"small\">\n <PushPinIcon\n style={{\n transform: 'rotate(-90deg)',\n }}\n />\n </IconButton>\n </Tooltip>\n </>\n )}\n </Box>\n );\n};\n","import { IconButton, Tooltip } from '@mui/material';\nimport React, { FC, forwardRef, Ref } from 'react';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n ref: Ref<HTMLButtonElement>;\n table: MRT_TableInstance;\n}\n\nexport const MRT_GrabHandleButton: FC<Props> = forwardRef(({ table }, ref) => {\n const {\n options: {\n icons: { DragHandleIcon },\n localization,\n },\n } = table;\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n placement=\"top\"\n title={localization.grab}\n >\n <IconButton\n disableRipple\n ref={ref}\n size=\"small\"\n sx={{\n cursor: 'grab',\n m: 0,\n opacity: 0.5,\n p: '2px',\n transition: 'all 0.2s ease-in-out',\n '&:hover': {\n backgroundColor: 'transparent',\n opacity: 1,\n },\n '&:active': {\n cursor: 'grabbing',\n },\n }}\n >\n <DragHandleIcon />\n </IconButton>\n </Tooltip>\n );\n});\n","import { rankItem, rankings, RankingInfo } from '@tanstack/match-sorter-utils';\nimport { filterFns, Row } from '@tanstack/react-table';\n\nexport const fuzzy = <D extends Record<string, any> = {}>(\n row: Row<D>,\n columnId: string,\n filterValue: string,\n addMeta: (item: RankingInfo) => void,\n) => {\n const itemRank = rankItem(row.getValue(columnId), filterValue, {\n threshold: rankings.MATCHES,\n });\n addMeta(itemRank);\n return itemRank.passed;\n};\n\nfuzzy.autoRemove = (val: any) => !val;\n\nexport const contains = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row\n .getValue(id)\n .toString()\n .toLowerCase()\n .trim()\n .includes(filterValue.toString().toLowerCase().trim());\n\ncontains.autoRemove = (val: any) => !val;\n\nexport const startsWith = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row\n .getValue(id)\n .toString()\n .toLowerCase()\n .trim()\n .startsWith(filterValue.toString().toLowerCase().trim());\n\nstartsWith.autoRemove = (val: any) => !val;\n\nexport const endsWith = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row\n .getValue(id)\n .toString()\n .toLowerCase()\n .trim()\n .endsWith(filterValue.toString().toLowerCase().trim());\n\nendsWith.autoRemove = (val: any) => !val;\n\nexport const equals = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row.getValue(id).toString().toLowerCase().trim() ===\n filterValue.toString().toLowerCase().trim();\n\nequals.autoRemove = (val: any) => !val;\n\nexport const notEquals = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row.getValue(id).toString().toLowerCase().trim() !==\n filterValue.toString().toLowerCase().trim();\n\nnotEquals.autoRemove = (val: any) => !val;\n\nexport const greaterThan = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n !isNaN(+filterValue) && !isNaN(+row.getValue(id))\n ? +row.getValue(id) >= +filterValue\n : row.getValue(id).toString().toLowerCase().trim() >\n filterValue.toString().toLowerCase().trim();\n\ngreaterThan.autoRemove = (val: any) => !val;\n\nexport const lessThan = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n !isNaN(+filterValue) && !isNaN(+row.getValue(id))\n ? +row.getValue(id) <= +filterValue\n : row.getValue(id).toString().toLowerCase().trim() <\n filterValue.toString().toLowerCase().trim();\n\nlessThan.autoRemove = (val: any) => !val;\n\nexport const between = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValues: [string | number, string | number],\n) =>\n ((['', undefined] as any[]).includes(filterValues[0]) ||\n greaterThan(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) &&\n !isNaN(+filterValues[1]) &&\n +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as any[]).includes(filterValues[1]) ||\n lessThan(row, id, filterValues[1]));\n\nbetween.autoRemove = (val: any) => !val;\n\nexport const empty = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n _filterValue: string | number,\n) => !row.getValue(id).toString().trim();\n\nempty.autoRemove = (val: any) => !val;\n\nexport const notEmpty = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n _filterValue: string | number,\n) => !!row.getValue(id).toString().trim();\n\nnotEmpty.autoRemove = (val: any) => !val;\n\nexport const MRT_FilterFns = {\n ...filterFns,\n between,\n contains,\n empty,\n endsWith,\n equals,\n fuzzy,\n greaterThan,\n lessThan,\n notEmpty,\n notEquals,\n startsWith,\n};\n","import { compareItems, RankingInfo } from '@tanstack/match-sorter-utils';\nimport { Row, sortingFns } from '@tanstack/react-table';\nimport { MRT_Row } from '.';\n\nconst fuzzy = <D extends Record<string, any> = {}>(\n rowA: Row<D>,\n rowB: Row<D>,\n columnId: string,\n) => {\n let dir = 0;\n if (rowA.columnFiltersMeta[columnId]) {\n dir = compareItems(\n rowA.columnFiltersMeta[columnId]! as RankingInfo,\n rowB.columnFiltersMeta[columnId]! as RankingInfo,\n );\n }\n // Provide a fallback for when the item ranks are equal\n return dir === 0\n ? sortingFns.alphanumeric(rowA as Row<any>, rowB as Row<any>, columnId)\n : dir;\n};\n\nexport const MRT_SortingFns = {\n ...sortingFns,\n fuzzy,\n};\n\nexport const rankGlobalFuzzy = <D extends Record<string, any> = {}>(\n rowA: MRT_Row<D>,\n rowB: MRT_Row<D>,\n) =>\n Math.max(...Object.values(rowB.columnFiltersMeta).map((v: any) => v.rank)) -\n Math.max(...Object.values(rowA.columnFiltersMeta).map((v: any) => v.rank));\n","import { ColumnOrderState } from '@tanstack/react-table';\nimport {\n MaterialReactTableProps,\n MRT_Column,\n MRT_ColumnDef,\n MRT_DefinedColumnDef,\n MRT_FilterOption,\n} from '.';\nimport { MRT_FilterFns } from './filtersFns';\nimport { MRT_SortingFns } from './sortingFns';\n\nconst getColumnId = <D extends Record<string, any> = {}>(\n columnDef: MRT_ColumnDef<D>,\n): string =>\n columnDef.id ?? columnDef.accessorKey?.toString?.() ?? columnDef.header;\n\nexport const getAllLeafColumnDefs = <D extends Record<string, any> = {}>(\n columns: MRT_ColumnDef<D>[],\n): MRT_ColumnDef<D>[] => {\n let lowestLevelColumns: MRT_ColumnDef<D>[] = columns;\n let currentCols: MRT_ColumnDef<D>[] | undefined = columns;\n while (!!currentCols?.length && currentCols.some((col) => col.columns)) {\n const nextCols: MRT_ColumnDef<D>[] = currentCols\n .filter((col) => !!col.columns)\n .map((col) => col.columns)\n .flat() as MRT_ColumnDef<D>[];\n if (nextCols.every((col) => !col?.columns)) {\n lowestLevelColumns = [...lowestLevelColumns, ...nextCols];\n }\n currentCols = nextCols;\n }\n return lowestLevelColumns.filter((col) => !col.columns);\n};\n\nexport const prepareColumns = <D extends Record<string, any> = {}>(\n columnDefs: MRT_ColumnDef<D>[],\n currentFilterFns: { [key: string]: MRT_FilterOption },\n): MRT_DefinedColumnDef<D>[] =>\n columnDefs.map((columnDef) => {\n if (!columnDef.id) columnDef.id = getColumnId(columnDef);\n if (process.env.NODE_ENV !== 'production' && !columnDef.id) {\n console.error(\n 'Column definitions must have a valid `accessorKey` or `id` property',\n );\n }\n if (!columnDef.columnDefType) columnDef.columnDefType = 'data';\n if (!!columnDef.columns?.length) {\n columnDef.columnDefType = 'group';\n columnDef.columns = prepareColumns(columnDef.columns, currentFilterFns);\n } else if (columnDef.columnDefType === 'data') {\n if (Object.keys(MRT_FilterFns).includes(currentFilterFns[columnDef.id])) {\n columnDef.filterFn =\n MRT_FilterFns[currentFilterFns[columnDef.id]] ?? MRT_FilterFns.fuzzy;\n }\n if (Object.keys(MRT_SortingFns).includes(columnDef.sortingFn as string)) {\n // @ts-ignore\n columnDef.sortingFn = MRT_SortingFns[columnDef.sortingFn];\n }\n }\n return columnDef;\n }) as MRT_DefinedColumnDef<D>[];\n\nexport const reorderColumn = <D extends Record<string, any> = {}>(\n movingColumn: MRT_Column<D>,\n receivingColumn: MRT_Column<D>,\n columnOrder: ColumnOrderState,\n): ColumnOrderState => {\n if (movingColumn.getCanPin()) {\n movingColumn.pin(receivingColumn.getIsPinned());\n }\n columnOrder.splice(\n columnOrder.indexOf(receivingColumn.id),\n 0,\n columnOrder.splice(columnOrder.indexOf(movingColumn.id), 1)[0],\n );\n return [...columnOrder];\n};\n\nexport const getLeadingDisplayColumnIds = <D extends Record<string, any> = {}>(\n props: MaterialReactTableProps<D>,\n) =>\n [\n ((props.positionActionsColumn === 'first' && props.enableRowActions) ||\n (props.enableEditing && props.editingMode === 'row')) &&\n 'mrt-row-actions',\n (props.enableExpanding || props.enableGrouping) && 'mrt-expand',\n props.enableRowSelection && 'mrt-select',\n props.enableRowNumbers && 'mrt-row-numbers',\n ].filter(Boolean) as string[];\n\nexport const getTrailingDisplayColumnIds = <D extends Record<string, any> = {}>(\n props: MaterialReactTableProps<D>,\n) => [\n ((props.positionActionsColumn === 'last' && props.enableRowActions) ||\n (props.enableEditing && props.editingMode === 'row')) &&\n 'mrt-row-actions',\n];\n\nexport const getDefaultColumnOrderIds = <D extends Record<string, any> = {}>(\n props: MaterialReactTableProps<D>,\n) =>\n [\n ...getLeadingDisplayColumnIds(props),\n ...getAllLeafColumnDefs(props.columns).map((columnDef) =>\n getColumnId(columnDef),\n ),\n ...getTrailingDisplayColumnIds(props),\n ].filter(Boolean) as string[];\n","import React, { FC, Ref } from 'react';\nimport { useDrag, useDrop } from 'react-dnd';\nimport {\n Box,\n FormControlLabel,\n MenuItem,\n Switch,\n Tooltip,\n Typography,\n} from '@mui/material';\nimport { MRT_ColumnPinningButtons } from '../buttons/MRT_ColumnPinningButtons';\nimport { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';\nimport { reorderColumn } from '../utils';\nimport type { MRT_Column, MRT_TableInstance } from '..';\n\ninterface Props {\n allColumns: MRT_Column[];\n column: MRT_Column;\n isSubMenu?: boolean;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsMenuItems: FC<Props> = ({\n allColumns,\n column,\n isSubMenu,\n table,\n}) => {\n const {\n getState,\n options: {\n enableColumnOrdering,\n enableHiding,\n enablePinning,\n localization,\n },\n setColumnOrder,\n } = table;\n const { columnOrder } = getState();\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const [, dropRef] = useDrop({\n accept: 'column',\n drop: (movingColumn: MRT_Column) => {\n const newColumnOrder = reorderColumn(movingColumn, column, columnOrder);\n setColumnOrder(newColumnOrder);\n },\n });\n\n const [, dragRef, previewRef] = useDrag({\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n item: () => column,\n type: 'column',\n });\n\n const switchChecked =\n (columnDefType !== 'group' && column.getIsVisible()) ||\n (columnDefType === 'group' &&\n column.getLeafColumns().some((col) => col.getIsVisible()));\n\n const handleToggleColumnHidden = (column: MRT_Column) => {\n if (columnDefType === 'group') {\n column?.columns?.forEach?.((childColumn: MRT_Column) => {\n childColumn.toggleVisibility(!switchChecked);\n });\n } else {\n column.toggleVisibility();\n }\n };\n\n return (\n <>\n <MenuItem\n ref={columnDefType === 'data' ? dropRef : undefined}\n sx={{\n alignItems: 'center',\n justifyContent: 'flex-start',\n my: 0,\n pl: `${(column.depth + 0.5) * 2}rem`,\n py: '6px',\n }}\n >\n <Box\n ref={previewRef}\n sx={{\n display: 'flex',\n flexWrap: 'nowrap',\n gap: '8px',\n }}\n >\n {columnDefType !== 'group' &&\n enableColumnOrdering &&\n !allColumns.some(\n (col) => col.columnDef.columnDefType === 'group',\n ) &&\n (columnDef.enableColumnOrdering !== false ? (\n <MRT_GrabHandleButton\n ref={dragRef as Ref<HTMLButtonElement>}\n table={table}\n />\n ) : (\n <Box sx={{ width: '28px' }} />\n ))}\n {enablePinning &&\n !isSubMenu &&\n (column.getCanPin() ? (\n <MRT_ColumnPinningButtons column={column} table={table} />\n ) : (\n <Box sx={{ width: '70px' }} />\n ))}\n {enableHiding ? (\n <FormControlLabel\n componentsProps={{\n typography: {\n sx: {\n mb: 0,\n opacity: columnDefType !== 'display' ? 1 : 0.5,\n },\n },\n }}\n checked={switchChecked}\n control={\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={localization.toggleVisibility}\n >\n <Switch />\n </Tooltip>\n }\n disabled={\n (isSubMenu && switchChecked) ||\n !column.getCanHide() ||\n column.getIsGrouped()\n }\n label={columnDef.header}\n onChange={() => handleToggleColumnHidden(column)}\n />\n ) : (\n <Typography sx={{ alignSelf: 'center' }}>\n {columnDef.header}\n </Typography>\n )}\n </Box>\n </MenuItem>\n {column.columns?.map((c: MRT_Column, i) => (\n <MRT_ShowHideColumnsMenuItems\n allColumns={allColumns}\n key={`${i}-${c.id}`}\n column={c}\n isSubMenu={isSubMenu}\n table={table}\n />\n ))}\n </>\n );\n};\n","import React, { FC, useMemo } from 'react';\nimport { Button, Menu, Divider, Box } from '@mui/material';\nimport { MRT_ShowHideColumnsMenuItems } from './MRT_ShowHideColumnsMenuItems';\nimport type { MRT_Column, MRT_TableInstance } from '..';\nimport { getDefaultColumnOrderIds } from '../utils';\n\ninterface Props {\n anchorEl: HTMLElement | null;\n isSubMenu?: boolean;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsMenu: FC<Props> = ({\n anchorEl,\n isSubMenu,\n setAnchorEl,\n table,\n}) => {\n const {\n getAllColumns,\n getAllLeafColumns,\n getCenterLeafColumns,\n getIsAllColumnsVisible,\n getIsSomeColumnsPinned,\n getIsSomeColumnsVisible,\n getLeftLeafColumns,\n getRightLeafColumns,\n getState,\n toggleAllColumnsVisible,\n options: { localization, enablePinning, enableColumnOrdering },\n } = table;\n const { density, columnOrder, columnPinning } = getState();\n\n const hideAllColumns = () => {\n getAllLeafColumns()\n .filter((col) => col.columnDef.enableHiding !== false)\n .forEach((col) => col.toggleVisibility(false));\n };\n\n const allColumns = useMemo(() => {\n const columns = getAllColumns();\n if (\n columnOrder.length > 0 &&\n !columns.some((col) => col.columnDef.columnDefType === 'group')\n ) {\n return [\n ...getLeftLeafColumns(),\n ...Array.from(new Set(columnOrder)).map((colId) =>\n getCenterLeafColumns().find((col) => col?.id === colId),\n ),\n ...getRightLeafColumns(),\n ].filter(Boolean);\n }\n return columns;\n }, [\n columnOrder,\n columnPinning,\n getAllColumns(),\n getCenterLeafColumns(),\n getLeftLeafColumns(),\n getRightLeafColumns(),\n ]) as MRT_Column[];\n\n return (\n <Menu\n anchorEl={anchorEl}\n open={!!anchorEl}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n dense: density === 'compact',\n }}\n >\n <Box\n sx={{\n display: 'flex',\n justifyContent: isSubMenu ? 'center' : 'space-between',\n p: '0.5rem',\n pt: 0,\n }}\n >\n {!isSubMenu && (\n <Button\n disabled={!getIsSomeColumnsVisible()}\n onClick={hideAllColumns}\n >\n {localization.hideAll}\n </Button>\n )}\n {!isSubMenu && enableColumnOrdering && (\n <Button\n onClick={() =>\n table.setColumnOrder(\n getDefaultColumnOrderIds(table.options as any),\n )\n }\n >\n {localization.resetOrder}\n </Button>\n )}\n {!isSubMenu && enablePinning && (\n <Button\n disabled={!getIsSomeColumnsPinned()}\n onClick={() => table.resetColumnPinning(true)}\n >\n {localization.unpinAll}\n </Button>\n )}\n <Button\n disabled={getIsAllColumnsVisible()}\n onClick={() => toggleAllColumnsVisible(true)}\n >\n {localization.showAll}\n </Button>\n </Box>\n <Divider />\n {allColumns.map((column, index) => (\n <MRT_ShowHideColumnsMenuItems\n allColumns={allColumns}\n column={column}\n isSubMenu={isSubMenu}\n key={`${index}-${column.id}`}\n table={table}\n />\n ))}\n </Menu>\n );\n};\n","import React, { FC, useState } from 'react';\nimport { Box, IconButton, ListItemIcon, Menu, MenuItem } from '@mui/material';\nimport type { MRT_Header, MRT_TableInstance } from '..';\nimport { MRT_FilterOptionMenu } from './MRT_FilterOptionMenu';\nimport { MRT_ShowHideColumnsMenu } from './MRT_ShowHideColumnsMenu';\n\nexport const commonMenuItemStyles = {\n py: '6px',\n my: 0,\n justifyContent: 'space-between',\n alignItems: 'center',\n};\n\nexport const commonListItemStyles = {\n display: 'flex',\n alignItems: 'center',\n};\n\ninterface Props {\n anchorEl: HTMLElement | null;\n header: MRT_Header;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ColumnActionMenu: FC<Props> = ({\n anchorEl,\n header,\n setAnchorEl,\n table,\n}) => {\n const {\n getState,\n toggleAllColumnsVisible,\n setColumnOrder,\n options: {\n enableColumnFilterChangeMode,\n enableColumnFilters,\n enableColumnResizing,\n enableGrouping,\n enableHiding,\n enablePinning,\n enableSorting,\n enabledColumnFilterOptions,\n icons: {\n ArrowRightIcon,\n ClearAllIcon,\n ViewColumnIcon,\n DynamicFeedIcon,\n FilterListIcon,\n FilterListOffIcon,\n PushPinIcon,\n SortIcon,\n RestartAltIcon,\n VisibilityOffIcon,\n },\n tableId,\n localization,\n },\n setShowFilters,\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { columnSizing, columnVisibility, density } = getState();\n\n const [filterMenuAnchorEl, setFilterMenuAnchorEl] =\n useState<null | HTMLElement>(null);\n const [showHideColumnsMenuAnchorEl, setShowHideColumnsMenuAnchorEl] =\n useState<null | HTMLElement>(null);\n\n const handleClearSort = () => {\n column.clearSorting();\n setAnchorEl(null);\n };\n\n const handleSortAsc = () => {\n column.toggleSorting(false);\n setAnchorEl(null);\n };\n\n const handleSortDesc = () => {\n column.toggleSorting(true);\n setAnchorEl(null);\n };\n\n const handleResetColumnSize = () => {\n column.resetSize();\n setAnchorEl(null);\n };\n\n const handleHideColumn = () => {\n column.toggleVisibility(false);\n setAnchorEl(null);\n };\n\n const handlePinColumn = (pinDirection: 'left' | 'right' | false) => {\n column.pin(pinDirection);\n setAnchorEl(null);\n };\n\n const handleGroupByColumn = () => {\n column.toggleGrouping();\n setColumnOrder((old) => ['mrt-expand', ...old]);\n setAnchorEl(null);\n };\n\n const handleClearFilter = () => {\n column.setFilterValue('');\n setAnchorEl(null);\n };\n\n const handleFilterByColumn = () => {\n setShowFilters(true);\n setTimeout(\n () =>\n document\n .getElementById(\n // @ts-ignore\n header.muiTableHeadCellFilterTextFieldProps?.id ??\n `mrt-${tableId}-${header.id}-filter-text-field`,\n )\n ?.focus(),\n 200,\n );\n setAnchorEl(null);\n };\n\n const handleShowAllColumns = () => {\n toggleAllColumnsVisible(true);\n setAnchorEl(null);\n };\n\n const handleOpenFilterModeMenu = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setFilterMenuAnchorEl(event.currentTarget);\n };\n\n const handleOpenShowHideColumnsMenu = (\n event: React.MouseEvent<HTMLElement>,\n ) => {\n event.stopPropagation();\n setShowHideColumnsMenuAnchorEl(event.currentTarget);\n };\n\n const isSelectFilter = !!columnDef.filterSelectOptions;\n\n const allowedColumnFilterOptions =\n columnDef?.enabledColumnFilterOptions ?? enabledColumnFilterOptions;\n\n const showFilterModeSubMenu =\n enableColumnFilterChangeMode &&\n columnDef.enableColumnFilterChangeMode !== false &&\n !isSelectFilter &&\n (allowedColumnFilterOptions === undefined ||\n !!allowedColumnFilterOptions?.length);\n\n return (\n <Menu\n anchorEl={anchorEl}\n open={!!anchorEl}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n dense: density === 'compact',\n }}\n >\n {enableSorting &&\n column.getCanSort() && [\n <MenuItem\n disabled={!column.getIsSorted()}\n key={0}\n onClick={handleClearSort}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <ClearAllIcon />\n </ListItemIcon>\n {localization.clearSort}\n </Box>\n </MenuItem>,\n <MenuItem\n disabled={column.getIsSorted() === 'asc'}\n key={1}\n onClick={handleSortAsc}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <SortIcon />\n </ListItemIcon>\n {localization.sortByColumnAsc?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n </MenuItem>,\n <MenuItem\n divider={enableColumnFilters || enableGrouping || enableHiding}\n key={2}\n disabled={column.getIsSorted() === 'desc'}\n onClick={handleSortDesc}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <SortIcon style={{ transform: 'rotate(180deg) scaleX(-1)' }} />\n </ListItemIcon>\n {localization.sortByColumnDesc?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n </MenuItem>,\n ]}\n {enableColumnFilters &&\n column.getCanFilter() &&\n [\n <MenuItem\n disabled={!column.getFilterValue()}\n key={0}\n onClick={handleClearFilter}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <FilterListOffIcon />\n </ListItemIcon>\n {localization.clearFilter}\n </Box>\n </MenuItem>,\n <MenuItem\n divider={enableGrouping || enableHiding}\n key={1}\n onClick={handleFilterByColumn}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <FilterListIcon />\n </ListItemIcon>\n {localization.filterByColumn?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n {showFilterModeSubMenu && (\n <IconButton\n onClick={handleOpenFilterModeMenu}\n onMouseEnter={handleOpenFilterModeMenu}\n size=\"small\"\n sx={{ p: 0 }}\n >\n <ArrowRightIcon />\n </IconButton>\n )}\n </MenuItem>,\n showFilterModeSubMenu && (\n <MRT_FilterOptionMenu\n anchorEl={filterMenuAnchorEl}\n header={header}\n key={2}\n onSelect={handleFilterByColumn}\n setAnchorEl={setFilterMenuAnchorEl}\n table={table}\n />\n ),\n ].filter(Boolean)}\n {enableGrouping &&\n column.getCanGroup() && [\n <MenuItem\n divider={enablePinning}\n key={0}\n onClick={handleGroupByColumn}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <DynamicFeedIcon />\n </ListItemIcon>\n {localization[\n column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn'\n ]?.replace('{column}', String(columnDef.header))}\n </Box>\n </MenuItem>,\n ]}\n {enablePinning &&\n column.getCanPin() && [\n <MenuItem\n disabled={column.getIsPinned() === 'left' || !column.getCanPin()}\n key={0}\n onClick={() => handlePinColumn('left')}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <PushPinIcon style={{ transform: 'rotate(90deg)' }} />\n </ListItemIcon>\n {localization.pinToLeft}\n </Box>\n </MenuItem>,\n <MenuItem\n disabled={column.getIsPinned() === 'right' || !column.getCanPin()}\n key={1}\n onClick={() => handlePinColumn('right')}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <PushPinIcon style={{ transform: 'rotate(-90deg)' }} />\n </ListItemIcon>\n {localization.pinToRight}\n </Box>\n </MenuItem>,\n <MenuItem\n disabled={!column.getIsPinned()}\n divider={enableHiding}\n key={2}\n onClick={() => handlePinColumn(false)}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <PushPinIcon />\n </ListItemIcon>\n {localization.unpin}\n </Box>\n </MenuItem>,\n ]}\n {enableColumnResizing && [\n <MenuItem\n disabled={!column.getCanResize() || !columnSizing[column.id]}\n key={0}\n onClick={handleResetColumnSize}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <RestartAltIcon />\n </ListItemIcon>\n {localization.resetColumnSize}\n </Box>\n </MenuItem>,\n ]}\n {enableHiding && [\n <MenuItem\n disabled={columnDef.enableHiding === false}\n key={0}\n onClick={handleHideColumn}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <VisibilityOffIcon />\n </ListItemIcon>\n {localization.hideColumn?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n </MenuItem>,\n <MenuItem\n disabled={\n !Object.values(columnVisibility).filter((visible) => !visible)\n .length\n }\n key={1}\n onClick={handleShowAllColumns}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <ViewColumnIcon />\n </ListItemIcon>\n {localization.showAllColumns?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n <IconButton\n onClick={handleOpenShowHideColumnsMenu}\n onMouseEnter={handleOpenShowHideColumnsMenu}\n size=\"small\"\n sx={{ p: 0 }}\n >\n <ArrowRightIcon />\n </IconButton>\n </MenuItem>,\n <MRT_ShowHideColumnsMenu\n anchorEl={showHideColumnsMenuAnchorEl}\n isSubMenu\n key={2}\n setAnchorEl={setShowHideColumnsMenuAnchorEl}\n table={table}\n />,\n ]}\n </Menu>\n );\n};\n","import React, { FC } from 'react';\nimport { Box, ListItemIcon, Menu, MenuItem } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\nimport {\n commonListItemStyles,\n commonMenuItemStyles,\n} from './MRT_ColumnActionMenu';\n\ninterface Props {\n anchorEl: HTMLElement | null;\n handleEdit: () => void;\n row: MRT_Row;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance;\n}\n\nexport const MRT_RowActionMenu: FC<Props> = ({\n anchorEl,\n handleEdit,\n row,\n setAnchorEl,\n table,\n}) => {\n const {\n getState,\n options: {\n icons: { EditIcon },\n enableEditing,\n localization,\n renderRowActionMenuItems,\n },\n } = table;\n const { density } = getState();\n\n return (\n <Menu\n anchorEl={anchorEl}\n open={!!anchorEl}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n dense: density === 'compact',\n }}\n >\n {enableEditing && (\n <MenuItem onClick={handleEdit} sx={commonMenuItemStyles}>\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <EditIcon />\n </ListItemIcon>\n {localization.edit}\n </Box>\n </MenuItem>\n )}\n {renderRowActionMenuItems?.({\n row,\n table,\n closeMenu: () => setAnchorEl(null),\n })}\n </Menu>\n );\n};\n","import React, { FC } from 'react';\nimport { Box, IconButton, Tooltip } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n table: MRT_TableInstance;\n}\n\nexport const MRT_EditActionButtons: FC<Props> = ({ row, table }) => {\n const {\n getState,\n options: {\n icons: { CancelIcon, SaveIcon },\n localization,\n onEditRowSubmit,\n },\n setCurrentEditingRow,\n } = table;\n const { currentEditingRow } = getState();\n\n const handleCancel = () => {\n row._valuesCache = row.original ?? {};\n setCurrentEditingRow(null);\n };\n\n const handleSave = () => {\n onEditRowSubmit?.({ row: currentEditingRow ?? row, table });\n setCurrentEditingRow(null);\n };\n\n return (\n <Box sx={{ display: 'flex', gap: '0.75rem' }}>\n <Tooltip arrow title={localization.cancel}>\n <IconButton aria-label={localization.cancel} onClick={handleCancel}>\n <CancelIcon />\n </IconButton>\n </Tooltip>\n <Tooltip arrow title={localization.save}>\n <IconButton\n aria-label={localization.save}\n color=\"info\"\n onClick={handleSave}\n >\n <SaveIcon />\n </IconButton>\n </Tooltip>\n </Box>\n );\n};\n","import React, { FC, MouseEvent, useState } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport { MRT_RowActionMenu } from '../menus/MRT_RowActionMenu';\nimport { MRT_EditActionButtons } from './MRT_EditActionButtons';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\nconst commonIconButtonStyles = {\n height: '2rem',\n ml: '10px',\n opacity: 0.5,\n transition: 'opacity 0.2s',\n width: '2rem',\n '&:hover': {\n opacity: 1,\n },\n};\n\ninterface Props {\n row: MRT_Row;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToggleRowActionMenuButton: FC<Props> = ({ row, table }) => {\n const {\n getState,\n options: {\n enableEditing,\n icons: { EditIcon, MoreHorizIcon },\n localization,\n renderRowActionMenuItems,\n renderRowActions,\n },\n setCurrentEditingRow,\n } = table;\n\n const { currentEditingRow } = getState();\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const handleOpenRowActionMenu = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n event.preventDefault();\n setAnchorEl(event.currentTarget);\n };\n\n const handleStartEditMode = () => {\n setCurrentEditingRow({ ...row });\n setAnchorEl(null);\n };\n\n return (\n <>\n {renderRowActions ? (\n <>{renderRowActions({ row, table })}</>\n ) : row.id === currentEditingRow?.id ? (\n <MRT_EditActionButtons row={row} table={table} />\n ) : !renderRowActionMenuItems && enableEditing ? (\n <Tooltip placement=\"right\" arrow title={localization.edit}>\n <IconButton sx={commonIconButtonStyles} onClick={handleStartEditMode}>\n <EditIcon />\n </IconButton>\n </Tooltip>\n ) : renderRowActionMenuItems ? (\n <>\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={localization.rowActions}\n >\n <IconButton\n aria-label={localization.rowActions}\n onClick={handleOpenRowActionMenu}\n size=\"small\"\n sx={commonIconButtonStyles}\n >\n <MoreHorizIcon />\n </IconButton>\n </Tooltip>\n <MRT_RowActionMenu\n anchorEl={anchorEl}\n handleEdit={handleStartEditMode}\n row={row}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </>\n ) : null}\n </>\n );\n};\n","import React, { ChangeEvent, FC } from 'react';\nimport { Checkbox, Tooltip } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row?: MRT_Row;\n selectAll?: boolean;\n table: MRT_TableInstance;\n}\n\nexport const MRT_SelectCheckbox: FC<Props> = ({ row, selectAll, table }) => {\n const {\n getState,\n options: {\n localization,\n muiSelectCheckboxProps,\n muiSelectAllCheckboxProps,\n selectAllMode,\n },\n } = table;\n const { density } = getState();\n\n const handleSelectChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (selectAll) {\n if (selectAllMode === 'all') {\n table.getToggleAllRowsSelectedHandler()(event as any);\n } else if (selectAllMode === 'page') {\n table.getToggleAllPageRowsSelectedHandler()(event as any);\n }\n } else if (row) {\n row?.getToggleSelectedHandler()(event as any);\n }\n };\n\n const checkboxProps = selectAll\n ? muiSelectAllCheckboxProps instanceof Function\n ? muiSelectAllCheckboxProps({ table })\n : muiSelectAllCheckboxProps\n : muiSelectCheckboxProps instanceof Function\n ? muiSelectCheckboxProps({ row: row as MRT_Row, table })\n : muiSelectCheckboxProps;\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={\n selectAll ? localization.toggleSelectAll : localization.toggleSelectRow\n }\n >\n <Checkbox\n checked={\n selectAll ? table.getIsAllRowsSelected() : row?.getIsSelected()\n }\n indeterminate={\n selectAll ? table.getIsSomeRowsSelected() : row?.getIsSomeSelected()\n }\n inputProps={{\n 'aria-label': selectAll\n ? localization.toggleSelectAll\n : localization.toggleSelectRow,\n }}\n onChange={handleSelectChange}\n size={density === 'compact' ? 'small' : 'medium'}\n {...checkboxProps}\n sx={{\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...checkboxProps?.sx,\n }}\n />\n </Tooltip>\n );\n};\n","// cheap lodash replacements\n\nexport function memoize<T>(fn: () => T): () => T {\n\tlet result: T | null = null\n\tconst memoized = () => {\n\t\tif (result == null) {\n\t\t\tresult = fn()\n\t\t}\n\t\treturn result\n\t}\n\treturn memoized\n}\n\n/**\n * drop-in replacement for _.without\n */\nexport function without<T>(items: T[], item: T) {\n\treturn items.filter((i) => i !== item)\n}\n\nexport function union<T extends string | number>(itemsA: T[], itemsB: T[]) {\n\tconst set = new Set<T>()\n\tconst insertItem = (item: T) => set.add(item)\n\titemsA.forEach(insertItem)\n\titemsB.forEach(insertItem)\n\n\tconst result: T[] = []\n\tset.forEach((key) => result.push(key))\n\treturn result\n}\n","import { union, without } from './utils/js_utils.js'\n\ntype NodePredicate = (node: Node | null | undefined) => boolean\n\nexport class EnterLeaveCounter {\n\tprivate entered: any[] = []\n\tprivate isNodeInDocument: NodePredicate\n\n\tpublic constructor(isNodeInDocument: NodePredicate) {\n\t\tthis.isNodeInDocument = isNodeInDocument\n\t}\n\n\tpublic enter(enteringNode: EventTarget | null): boolean {\n\t\tconst previousLength = this.entered.length\n\n\t\tconst isNodeEntered = (node: Node): boolean =>\n\t\t\tthis.isNodeInDocument(node) &&\n\t\t\t(!node.contains || node.contains(enteringNode as Node))\n\n\t\tthis.entered = union(this.entered.filter(isNodeEntered), [enteringNode])\n\n\t\treturn previousLength === 0 && this.entered.length > 0\n\t}\n\n\tpublic leave(leavingNode: EventTarget | null): boolean {\n\t\tconst previousLength = this.entered.length\n\n\t\tthis.entered = without(\n\t\t\tthis.entered.filter(this.isNodeInDocument),\n\t\t\tleavingNode,\n\t\t)\n\n\t\treturn previousLength > 0 && this.entered.length === 0\n\t}\n\n\tpublic reset(): void {\n\t\tthis.entered = []\n\t}\n}\n","import type { DragDropMonitor } from 'dnd-core'\n\nimport type { NativeItemConfig } from './nativeTypesConfig.js'\n\nexport class NativeDragSource {\n\tpublic item: any\n\tprivate config: NativeItemConfig\n\n\tpublic constructor(config: NativeItemConfig) {\n\t\tthis.config = config\n\t\tthis.item = {}\n\t\tthis.initializeExposedProperties()\n\t}\n\n\tprivate initializeExposedProperties() {\n\t\tObject.keys(this.config.exposeProperties).forEach((property) => {\n\t\t\tObject.defineProperty(this.item, property, {\n\t\t\t\tconfigurable: true, // This is needed to allow redefining it later\n\t\t\t\tenumerable: true,\n\t\t\t\tget() {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`Browser doesn't allow reading \"${property}\" until the drop event.`,\n\t\t\t\t\t)\n\t\t\t\t\treturn null\n\t\t\t\t},\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic loadDataTransfer(dataTransfer: DataTransfer | null | undefined): void {\n\t\tif (dataTransfer) {\n\t\t\tconst newProperties: PropertyDescriptorMap = {}\n\t\t\tObject.keys(this.config.exposeProperties).forEach((property) => {\n\t\t\t\tconst propertyFn = this.config.exposeProperties[property]\n\t\t\t\tif (propertyFn != null) {\n\t\t\t\t\tnewProperties[property] = {\n\t\t\t\t\t\tvalue: propertyFn(dataTransfer, this.config.matchesTypes),\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\tObject.defineProperties(this.item, newProperties)\n\t\t}\n\t}\n\n\tpublic canDrag(): boolean {\n\t\treturn true\n\t}\n\n\tpublic beginDrag(): any {\n\t\treturn this.item\n\t}\n\n\tpublic isDragging(monitor: DragDropMonitor, handle: string): boolean {\n\t\treturn handle === monitor.getSourceId()\n\t}\n\n\tpublic endDrag(): void {\n\t\t// empty\n\t}\n}\n","export const FILE = '__NATIVE_FILE__'\nexport const URL = '__NATIVE_URL__'\nexport const TEXT = '__NATIVE_TEXT__'\nexport const HTML = '__NATIVE_HTML__'\n","export function getDataFromDataTransfer(\n\tdataTransfer: DataTransfer,\n\ttypesToTry: string[],\n\tdefaultValue: string,\n): string {\n\tconst result = typesToTry.reduce(\n\t\t(resultSoFar, typeToTry) => resultSoFar || dataTransfer.getData(typeToTry),\n\t\t'',\n\t)\n\n\treturn result != null ? result : defaultValue\n}\n","import * as NativeTypes from '../NativeTypes.js'\nimport { getDataFromDataTransfer } from './getDataFromDataTransfer.js'\n\nexport interface NativeItemConfigExposePropreties {\n\t[property: string]: (\n\t\tdataTransfer: DataTransfer,\n\t\tmatchesTypes: string[],\n\t) => any\n}\n\nexport interface NativeItemConfig {\n\texposeProperties: NativeItemConfigExposePropreties\n\tmatchesTypes: string[]\n}\n\nexport const nativeTypesConfig: {\n\t[key: string]: NativeItemConfig\n} = {\n\t[NativeTypes.FILE]: {\n\t\texposeProperties: {\n\t\t\tfiles: (dataTransfer: DataTransfer): File[] =>\n\t\t\t\tArray.prototype.slice.call(dataTransfer.files),\n\t\t\titems: (dataTransfer: DataTransfer): DataTransferItemList =>\n\t\t\t\tdataTransfer.items,\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Files'],\n\t},\n\t[NativeTypes.HTML]: {\n\t\texposeProperties: {\n\t\t\thtml: (dataTransfer: DataTransfer, matchesTypes: string[]): string =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, ''),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Html', 'text/html'],\n\t},\n\t[NativeTypes.URL]: {\n\t\texposeProperties: {\n\t\t\turls: (dataTransfer: DataTransfer, matchesTypes: string[]): string[] =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, '').split('\\n'),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Url', 'text/uri-list'],\n\t},\n\t[NativeTypes.TEXT]: {\n\t\texposeProperties: {\n\t\t\ttext: (dataTransfer: DataTransfer, matchesTypes: string[]): string =>\n\t\t\t\tgetDataFromDataTransfer(dataTransfer, matchesTypes, ''),\n\t\t\tdataTransfer: (dataTransfer: DataTransfer): DataTransfer => dataTransfer,\n\t\t},\n\t\tmatchesTypes: ['Text', 'text/plain'],\n\t},\n}\n","import { NativeDragSource } from './NativeDragSource.js'\nimport { nativeTypesConfig } from './nativeTypesConfig.js'\n\nexport function createNativeDragSource(\n\ttype: string,\n\tdataTransfer?: DataTransfer,\n): NativeDragSource {\n\tconst config = nativeTypesConfig[type]\n\tif (!config) {\n\t\tthrow new Error(`native type ${type} has no configuration`)\n\t}\n\tconst result = new NativeDragSource(config)\n\tresult.loadDataTransfer(dataTransfer)\n\treturn result\n}\n\nexport function matchNativeItemType(\n\tdataTransfer: DataTransfer | null,\n): string | null {\n\tif (!dataTransfer) {\n\t\treturn null\n\t}\n\n\tconst dataTransferTypes = Array.prototype.slice.call(dataTransfer.types || [])\n\treturn (\n\t\tObject.keys(nativeTypesConfig).filter((nativeItemType) => {\n\t\t\tconst typeConfig = nativeTypesConfig[nativeItemType]\n\t\t\tif (!typeConfig?.matchesTypes) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn typeConfig.matchesTypes.some(\n\t\t\t\t(t) => dataTransferTypes.indexOf(t) > -1,\n\t\t\t)\n\t\t})[0] || null\n\t)\n}\n","import { memoize } from './utils/js_utils.js'\n\ndeclare global {\n\tinterface Window extends HTMLElement {\n\t\tsafari: any\n\t}\n}\n\nexport type Predicate = () => boolean\nexport const isFirefox: Predicate = memoize(() =>\n\t/firefox/i.test(navigator.userAgent),\n)\nexport const isSafari: Predicate = memoize(() => Boolean(window.safari))\n","export class MonotonicInterpolant {\n\tprivate xs: any\n\tprivate ys: any\n\tprivate c1s: any\n\tprivate c2s: any\n\tprivate c3s: any\n\n\tpublic constructor(xs: number[], ys: number[]) {\n\t\tconst { length } = xs\n\n\t\t// Rearrange xs and ys so that xs is sorted\n\t\tconst indexes = []\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tindexes.push(i)\n\t\t}\n\t\tindexes.sort((a, b) => ((xs[a] as number) < (xs[b] as number) ? -1 : 1))\n\n\t\t// Get consecutive differences and slopes\n\t\tconst dys = []\n\t\tconst dxs = []\n\t\tconst ms = []\n\t\tlet dx\n\t\tlet dy\n\t\tfor (let i = 0; i < length - 1; i++) {\n\t\t\tdx = (xs[i + 1] as number) - (xs[i] as number)\n\t\t\tdy = (ys[i + 1] as number) - (ys[i] as number)\n\t\t\tdxs.push(dx)\n\t\t\tdys.push(dy)\n\t\t\tms.push(dy / dx)\n\t\t}\n\n\t\t// Get degree-1 coefficients\n\t\tconst c1s = [ms[0]]\n\t\tfor (let i = 0; i < dxs.length - 1; i++) {\n\t\t\tconst m2 = ms[i] as number\n\t\t\tconst mNext = ms[i + 1] as number\n\t\t\tif (m2 * mNext <= 0) {\n\t\t\t\tc1s.push(0)\n\t\t\t} else {\n\t\t\t\tdx = dxs[i] as number\n\t\t\t\tconst dxNext = dxs[i + 1] as number\n\t\t\t\tconst common = dx + dxNext\n\t\t\t\tc1s.push(\n\t\t\t\t\t(3 * common) / ((common + dxNext) / m2 + (common + dx) / mNext),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tc1s.push(ms[ms.length - 1])\n\n\t\t// Get degree-2 and degree-3 coefficients\n\t\tconst c2s = []\n\t\tconst c3s = []\n\t\tlet m\n\t\tfor (let i = 0; i < c1s.length - 1; i++) {\n\t\t\tm = ms[i] as number\n\t\t\tconst c1 = c1s[i] as number\n\t\t\tconst invDx = 1 / (dxs[i] as number)\n\t\t\tconst common = c1 + (c1s[i + 1] as number) - m - m\n\t\t\tc2s.push((m - c1 - common) * invDx)\n\t\t\tc3s.push(common * invDx * invDx)\n\t\t}\n\n\t\tthis.xs = xs\n\t\tthis.ys = ys\n\t\tthis.c1s = c1s\n\t\tthis.c2s = c2s\n\t\tthis.c3s = c3s\n\t}\n\n\tpublic interpolate(x: number): number {\n\t\tconst { xs, ys, c1s, c2s, c3s } = this\n\n\t\t// The rightmost point in the dataset should give an exact result\n\t\tlet i = xs.length - 1\n\t\tif (x === xs[i]) {\n\t\t\treturn ys[i]\n\t\t}\n\n\t\t// Search for the interval x is in, returning the corresponding y if x is one of the original xs\n\t\tlet low = 0\n\t\tlet high = c3s.length - 1\n\t\tlet mid\n\t\twhile (low <= high) {\n\t\t\tmid = Math.floor(0.5 * (low + high))\n\t\t\tconst xHere = xs[mid]\n\t\t\tif (xHere < x) {\n\t\t\t\tlow = mid + 1\n\t\t\t} else if (xHere > x) {\n\t\t\t\thigh = mid - 1\n\t\t\t} else {\n\t\t\t\treturn ys[mid]\n\t\t\t}\n\t\t}\n\t\ti = Math.max(0, high)\n\n\t\t// Interpolate\n\t\tconst diff = x - xs[i]\n\t\tconst diffSq = diff * diff\n\t\treturn ys[i] + c1s[i] * diff + c2s[i] * diffSq + c3s[i] * diff * diffSq\n\t}\n}\n","import type { XYCoord } from 'dnd-core'\n\nimport { isFirefox, isSafari } from './BrowserDetector.js'\nimport { MonotonicInterpolant } from './MonotonicInterpolant.js'\n\nconst ELEMENT_NODE = 1\n\nexport function getNodeClientOffset(node: Node): XYCoord | null {\n\tconst el = node.nodeType === ELEMENT_NODE ? node : node.parentElement\n\n\tif (!el) {\n\t\treturn null\n\t}\n\n\tconst { top, left } = (el as HTMLElement).getBoundingClientRect()\n\treturn { x: left, y: top }\n}\n\nexport function getEventClientOffset(e: MouseEvent): XYCoord {\n\treturn {\n\t\tx: e.clientX,\n\t\ty: e.clientY,\n\t}\n}\n\nfunction isImageNode(node: any) {\n\treturn (\n\t\tnode.nodeName === 'IMG' &&\n\t\t(isFirefox() || !document.documentElement?.contains(node))\n\t)\n}\n\nfunction getDragPreviewSize(\n\tisImage: boolean,\n\tdragPreview: any,\n\tsourceWidth: number,\n\tsourceHeight: number,\n) {\n\tlet dragPreviewWidth = isImage ? dragPreview.width : sourceWidth\n\tlet dragPreviewHeight = isImage ? dragPreview.height : sourceHeight\n\n\t// Work around @2x coordinate discrepancies in browsers\n\tif (isSafari() && isImage) {\n\t\tdragPreviewHeight /= window.devicePixelRatio\n\t\tdragPreviewWidth /= window.devicePixelRatio\n\t}\n\treturn { dragPreviewWidth, dragPreviewHeight }\n}\n\nexport function getDragPreviewOffset(\n\tsourceNode: HTMLElement,\n\tdragPreview: HTMLElement,\n\tclientOffset: XYCoord,\n\tanchorPoint: { anchorX: number; anchorY: number },\n\toffsetPoint: { offsetX: number; offsetY: number },\n): XYCoord {\n\t// The browsers will use the image intrinsic size under different conditions.\n\t// Firefox only cares if it's an image, but WebKit also wants it to be detached.\n\tconst isImage = isImageNode(dragPreview)\n\tconst dragPreviewNode = isImage ? sourceNode : dragPreview\n\tconst dragPreviewNodeOffsetFromClient = getNodeClientOffset(\n\t\tdragPreviewNode,\n\t) as XYCoord\n\tconst offsetFromDragPreview = {\n\t\tx: clientOffset.x - dragPreviewNodeOffsetFromClient.x,\n\t\ty: clientOffset.y - dragPreviewNodeOffsetFromClient.y,\n\t}\n\tconst { offsetWidth: sourceWidth, offsetHeight: sourceHeight } = sourceNode\n\tconst { anchorX, anchorY } = anchorPoint\n\tconst { dragPreviewWidth, dragPreviewHeight } = getDragPreviewSize(\n\t\tisImage,\n\t\tdragPreview,\n\t\tsourceWidth,\n\t\tsourceHeight,\n\t)\n\n\tconst calculateYOffset = () => {\n\t\tconst interpolantY = new MonotonicInterpolant(\n\t\t\t[0, 0.5, 1],\n\t\t\t[\n\t\t\t\t// Dock to the top\n\t\t\t\toffsetFromDragPreview.y,\n\t\t\t\t// Align at the center\n\t\t\t\t(offsetFromDragPreview.y / sourceHeight) * dragPreviewHeight,\n\t\t\t\t// Dock to the bottom\n\t\t\t\toffsetFromDragPreview.y + dragPreviewHeight - sourceHeight,\n\t\t\t],\n\t\t)\n\t\tlet y = interpolantY.interpolate(anchorY)\n\t\t// Work around Safari 8 positioning bug\n\t\tif (isSafari() && isImage) {\n\t\t\t// We'll have to wait for @3x to see if this is entirely correct\n\t\t\ty += (window.devicePixelRatio - 1) * dragPreviewHeight\n\t\t}\n\t\treturn y\n\t}\n\n\tconst calculateXOffset = () => {\n\t\t// Interpolate coordinates depending on anchor point\n\t\t// If you know a simpler way to do this, let me know\n\t\tconst interpolantX = new MonotonicInterpolant(\n\t\t\t[0, 0.5, 1],\n\t\t\t[\n\t\t\t\t// Dock to the left\n\t\t\t\toffsetFromDragPreview.x,\n\t\t\t\t// Align at the center\n\t\t\t\t(offsetFromDragPreview.x / sourceWidth) * dragPreviewWidth,\n\t\t\t\t// Dock to the right\n\t\t\t\toffsetFromDragPreview.x + dragPreviewWidth - sourceWidth,\n\t\t\t],\n\t\t)\n\t\treturn interpolantX.interpolate(anchorX)\n\t}\n\n\t// Force offsets if specified in the options.\n\tconst { offsetX, offsetY } = offsetPoint\n\tconst isManualOffsetX = offsetX === 0 || offsetX\n\tconst isManualOffsetY = offsetY === 0 || offsetY\n\treturn {\n\t\tx: isManualOffsetX ? offsetX : calculateXOffset(),\n\t\ty: isManualOffsetY ? offsetY : calculateYOffset(),\n\t}\n}\n","import type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\nexport class OptionsReader {\n\tpublic ownerDocument: Document | null = null\n\tprivate globalContext: HTML5BackendContext\n\tprivate optionsArgs: HTML5BackendOptions | undefined\n\n\tpublic constructor(\n\t\tglobalContext: HTML5BackendContext,\n\t\toptions?: HTML5BackendOptions,\n\t) {\n\t\tthis.globalContext = globalContext\n\t\tthis.optionsArgs = options\n\t}\n\n\tpublic get window(): Window | undefined {\n\t\tif (this.globalContext) {\n\t\t\treturn this.globalContext\n\t\t} else if (typeof window !== 'undefined') {\n\t\t\treturn window\n\t\t}\n\t\treturn undefined\n\t}\n\n\tpublic get document(): Document | undefined {\n\t\tif (this.globalContext?.document) {\n\t\t\treturn this.globalContext.document\n\t\t} else if (this.window) {\n\t\t\treturn this.window.document\n\t\t} else {\n\t\t\treturn undefined\n\t\t}\n\t}\n\n\tpublic get rootElement(): Node | undefined {\n\t\treturn this.optionsArgs?.rootElement || this.window\n\t}\n}\n","import type {\n\tBackend,\n\tDragDropActions,\n\tDragDropManager,\n\tDragDropMonitor,\n\tHandlerRegistry,\n\tIdentifier,\n\tUnsubscribe,\n\tXYCoord,\n} from 'dnd-core'\n\nimport { EnterLeaveCounter } from './EnterLeaveCounter.js'\nimport {\n\tcreateNativeDragSource,\n\tmatchNativeItemType,\n} from './NativeDragSources/index.js'\nimport type { NativeDragSource } from './NativeDragSources/NativeDragSource.js'\nimport * as NativeTypes from './NativeTypes.js'\nimport {\n\tgetDragPreviewOffset,\n\tgetEventClientOffset,\n\tgetNodeClientOffset,\n} from './OffsetUtils.js'\nimport { OptionsReader } from './OptionsReader.js'\nimport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\ntype RootNode = Node & { __isReactDndBackendSetUp: boolean | undefined }\n\nexport class HTML5BackendImpl implements Backend {\n\tprivate options: OptionsReader\n\n\t// React-Dnd Components\n\tprivate actions: DragDropActions\n\tprivate monitor: DragDropMonitor\n\tprivate registry: HandlerRegistry\n\n\t// Internal State\n\tprivate enterLeaveCounter: EnterLeaveCounter\n\n\tprivate sourcePreviewNodes: Map<string, Element> = new Map()\n\tprivate sourcePreviewNodeOptions: Map<string, any> = new Map()\n\tprivate sourceNodes: Map<string, Element> = new Map()\n\tprivate sourceNodeOptions: Map<string, any> = new Map()\n\n\tprivate dragStartSourceIds: string[] | null = null\n\tprivate dropTargetIds: string[] = []\n\tprivate dragEnterTargetIds: string[] = []\n\tprivate currentNativeSource: NativeDragSource | null = null\n\tprivate currentNativeHandle: Identifier | null = null\n\tprivate currentDragSourceNode: Element | null = null\n\tprivate altKeyPressed = false\n\tprivate mouseMoveTimeoutTimer: number | null = null\n\tprivate asyncEndDragFrameId: number | null = null\n\tprivate dragOverTargetIds: string[] | null = null\n\n\tprivate lastClientOffset: XYCoord | null = null\n\tprivate hoverRafId: number | null = null\n\n\tpublic constructor(\n\t\tmanager: DragDropManager,\n\t\tglobalContext?: HTML5BackendContext,\n\t\toptions?: HTML5BackendOptions,\n\t) {\n\t\tthis.options = new OptionsReader(globalContext, options)\n\t\tthis.actions = manager.getActions()\n\t\tthis.monitor = manager.getMonitor()\n\t\tthis.registry = manager.getRegistry()\n\t\tthis.enterLeaveCounter = new EnterLeaveCounter(this.isNodeInDocument)\n\t}\n\n\t/**\n\t * Generate profiling statistics for the HTML5Backend.\n\t */\n\tpublic profile(): Record<string, number> {\n\t\treturn {\n\t\t\tsourcePreviewNodes: this.sourcePreviewNodes.size,\n\t\t\tsourcePreviewNodeOptions: this.sourcePreviewNodeOptions.size,\n\t\t\tsourceNodeOptions: this.sourceNodeOptions.size,\n\t\t\tsourceNodes: this.sourceNodes.size,\n\t\t\tdragStartSourceIds: this.dragStartSourceIds?.length || 0,\n\t\t\tdropTargetIds: this.dropTargetIds.length,\n\t\t\tdragEnterTargetIds: this.dragEnterTargetIds.length,\n\t\t\tdragOverTargetIds: this.dragOverTargetIds?.length || 0,\n\t\t}\n\t}\n\n\t// public for test\n\tpublic get window(): Window | undefined {\n\t\treturn this.options.window\n\t}\n\tpublic get document(): Document | undefined {\n\t\treturn this.options.document\n\t}\n\t/**\n\t * Get the root element to use for event subscriptions\n\t */\n\tprivate get rootElement(): Node | undefined {\n\t\treturn this.options.rootElement as Node\n\t}\n\n\tpublic setup(): void {\n\t\tconst root = this.rootElement as RootNode | undefined\n\t\tif (root === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\tif (root.__isReactDndBackendSetUp) {\n\t\t\tthrow new Error('Cannot have two HTML5 backends at the same time.')\n\t\t}\n\t\troot.__isReactDndBackendSetUp = true\n\t\tthis.addEventListeners(root)\n\t}\n\n\tpublic teardown(): void {\n\t\tconst root = this.rootElement as RootNode\n\t\tif (root === undefined) {\n\t\t\treturn\n\t\t}\n\n\t\troot.__isReactDndBackendSetUp = false\n\t\tthis.removeEventListeners(this.rootElement as Element)\n\t\tthis.clearCurrentDragSourceNode()\n\t\tif (this.asyncEndDragFrameId) {\n\t\t\tthis.window?.cancelAnimationFrame(this.asyncEndDragFrameId)\n\t\t}\n\t}\n\n\tpublic connectDragPreview(\n\t\tsourceId: string,\n\t\tnode: Element,\n\t\toptions: any,\n\t): Unsubscribe {\n\t\tthis.sourcePreviewNodeOptions.set(sourceId, options)\n\t\tthis.sourcePreviewNodes.set(sourceId, node)\n\n\t\treturn (): void => {\n\t\t\tthis.sourcePreviewNodes.delete(sourceId)\n\t\t\tthis.sourcePreviewNodeOptions.delete(sourceId)\n\t\t}\n\t}\n\n\tpublic connectDragSource(\n\t\tsourceId: string,\n\t\tnode: Element,\n\t\toptions: any,\n\t): Unsubscribe {\n\t\tthis.sourceNodes.set(sourceId, node)\n\t\tthis.sourceNodeOptions.set(sourceId, options)\n\n\t\tconst handleDragStart = (e: any) => this.handleDragStart(e, sourceId)\n\t\tconst handleSelectStart = (e: any) => this.handleSelectStart(e)\n\n\t\tnode.setAttribute('draggable', 'true')\n\t\tnode.addEventListener('dragstart', handleDragStart)\n\t\tnode.addEventListener('selectstart', handleSelectStart)\n\n\t\treturn (): void => {\n\t\t\tthis.sourceNodes.delete(sourceId)\n\t\t\tthis.sourceNodeOptions.delete(sourceId)\n\n\t\t\tnode.removeEventListener('dragstart', handleDragStart)\n\t\t\tnode.removeEventListener('selectstart', handleSelectStart)\n\t\t\tnode.setAttribute('draggable', 'false')\n\t\t}\n\t}\n\n\tpublic connectDropTarget(targetId: string, node: HTMLElement): Unsubscribe {\n\t\tconst handleDragEnter = (e: DragEvent) => this.handleDragEnter(e, targetId)\n\t\tconst handleDragOver = (e: DragEvent) => this.handleDragOver(e, targetId)\n\t\tconst handleDrop = (e: DragEvent) => this.handleDrop(e, targetId)\n\n\t\tnode.addEventListener('dragenter', handleDragEnter)\n\t\tnode.addEventListener('dragover', handleDragOver)\n\t\tnode.addEventListener('drop', handleDrop)\n\n\t\treturn (): void => {\n\t\t\tnode.removeEventListener('dragenter', handleDragEnter)\n\t\t\tnode.removeEventListener('dragover', handleDragOver)\n\t\t\tnode.removeEventListener('drop', handleDrop)\n\t\t}\n\t}\n\n\tprivate addEventListeners(target: Node) {\n\t\t// SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n\t\tif (!target.addEventListener) {\n\t\t\treturn\n\t\t}\n\t\ttarget.addEventListener(\n\t\t\t'dragstart',\n\t\t\tthis.handleTopDragStart as EventListener,\n\t\t)\n\t\ttarget.addEventListener('dragstart', this.handleTopDragStartCapture, true)\n\t\ttarget.addEventListener('dragend', this.handleTopDragEndCapture, true)\n\t\ttarget.addEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnter as EventListener,\n\t\t)\n\t\ttarget.addEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnterCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener(\n\t\t\t'dragleave',\n\t\t\tthis.handleTopDragLeaveCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener('dragover', this.handleTopDragOver as EventListener)\n\t\ttarget.addEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOverCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.addEventListener('drop', this.handleTopDrop as EventListener)\n\t\ttarget.addEventListener(\n\t\t\t'drop',\n\t\t\tthis.handleTopDropCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t}\n\n\tprivate removeEventListeners(target: Node) {\n\t\t// SSR Fix (https://github.com/react-dnd/react-dnd/pull/813\n\t\tif (!target.removeEventListener) {\n\t\t\treturn\n\t\t}\n\t\ttarget.removeEventListener('dragstart', this.handleTopDragStart as any)\n\t\ttarget.removeEventListener(\n\t\t\t'dragstart',\n\t\t\tthis.handleTopDragStartCapture,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener('dragend', this.handleTopDragEndCapture, true)\n\t\ttarget.removeEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnter as EventListener,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragenter',\n\t\t\tthis.handleTopDragEnterCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragleave',\n\t\t\tthis.handleTopDragLeaveCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOver as EventListener,\n\t\t)\n\t\ttarget.removeEventListener(\n\t\t\t'dragover',\n\t\t\tthis.handleTopDragOverCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t\ttarget.removeEventListener('drop', this.handleTopDrop as EventListener)\n\t\ttarget.removeEventListener(\n\t\t\t'drop',\n\t\t\tthis.handleTopDropCapture as EventListener,\n\t\t\ttrue,\n\t\t)\n\t}\n\n\tprivate getCurrentSourceNodeOptions() {\n\t\tconst sourceId = this.monitor.getSourceId() as string\n\t\tconst sourceNodeOptions = this.sourceNodeOptions.get(sourceId)\n\n\t\treturn {\n\t\t\tdropEffect: this.altKeyPressed ? 'copy' : 'move',\n\t\t\t...(sourceNodeOptions || {}),\n\t\t}\n\t}\n\n\tprivate getCurrentDropEffect() {\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\t// It makes more sense to default to 'copy' for native resources\n\t\t\treturn 'copy'\n\t\t}\n\n\t\treturn this.getCurrentSourceNodeOptions().dropEffect\n\t}\n\n\tprivate getCurrentSourcePreviewNodeOptions() {\n\t\tconst sourceId = this.monitor.getSourceId() as string\n\t\tconst sourcePreviewNodeOptions = this.sourcePreviewNodeOptions.get(sourceId)\n\n\t\treturn {\n\t\t\tanchorX: 0.5,\n\t\t\tanchorY: 0.5,\n\t\t\tcaptureDraggingState: false,\n\t\t\t...(sourcePreviewNodeOptions || {}),\n\t\t}\n\t}\n\n\tprivate getSourceClientOffset = (sourceId: string): XYCoord | null => {\n\t\tconst source = this.sourceNodes.get(sourceId)\n\t\treturn (source && getNodeClientOffset(source as HTMLElement)) || null\n\t}\n\n\tprivate isDraggingNativeItem() {\n\t\tconst itemType = this.monitor.getItemType()\n\t\treturn Object.keys(NativeTypes).some(\n\t\t\t(key: string) => (NativeTypes as any)[key] === itemType,\n\t\t)\n\t}\n\n\tprivate beginDragNativeItem(type: string, dataTransfer?: DataTransfer) {\n\t\tthis.clearCurrentDragSourceNode()\n\n\t\tthis.currentNativeSource = createNativeDragSource(type, dataTransfer)\n\t\tthis.currentNativeHandle = this.registry.addSource(\n\t\t\ttype,\n\t\t\tthis.currentNativeSource,\n\t\t)\n\t\tthis.actions.beginDrag([this.currentNativeHandle])\n\t}\n\n\tprivate endDragNativeItem = (): void => {\n\t\tif (!this.isDraggingNativeItem()) {\n\t\t\treturn\n\t\t}\n\n\t\tthis.actions.endDrag()\n\t\tif (this.currentNativeHandle) {\n\t\t\tthis.registry.removeSource(this.currentNativeHandle)\n\t\t}\n\t\tthis.currentNativeHandle = null\n\t\tthis.currentNativeSource = null\n\t}\n\n\tprivate isNodeInDocument = (node: Node | null | undefined): boolean => {\n\t\t// Check the node either in the main document or in the current context\n\t\treturn Boolean(\n\t\t\tnode &&\n\t\t\t\tthis.document &&\n\t\t\t\tthis.document.body &&\n\t\t\t\tthis.document.body.contains(node),\n\t\t)\n\t}\n\n\tprivate endDragIfSourceWasRemovedFromDOM = (): void => {\n\t\tconst node = this.currentDragSourceNode\n\t\tif (node == null || this.isNodeInDocument(node)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tprivate setCurrentDragSourceNode(node: Element | null) {\n\t\tthis.clearCurrentDragSourceNode()\n\t\tthis.currentDragSourceNode = node\n\n\t\t// A timeout of > 0 is necessary to resolve Firefox issue referenced\n\t\t// See:\n\t\t// * https://github.com/react-dnd/react-dnd/pull/928\n\t\t// * https://github.com/react-dnd/react-dnd/issues/869\n\t\tconst MOUSE_MOVE_TIMEOUT = 1000\n\n\t\t// Receiving a mouse event in the middle of a dragging operation\n\t\t// means it has ended and the drag source node disappeared from DOM,\n\t\t// so the browser didn't dispatch the dragend event.\n\t\t//\n\t\t// We need to wait before we start listening for mousemove events.\n\t\t// This is needed because the drag preview needs to be drawn or else it fires an 'mousemove' event\n\t\t// immediately in some browsers.\n\t\t//\n\t\t// See:\n\t\t// * https://github.com/react-dnd/react-dnd/pull/928\n\t\t// * https://github.com/react-dnd/react-dnd/issues/869\n\t\t//\n\t\tthis.mouseMoveTimeoutTimer = setTimeout(() => {\n\t\t\treturn this.rootElement?.addEventListener(\n\t\t\t\t'mousemove',\n\t\t\t\tthis.endDragIfSourceWasRemovedFromDOM,\n\t\t\t\ttrue,\n\t\t\t)\n\t\t}, MOUSE_MOVE_TIMEOUT) as any as number\n\t}\n\n\tprivate clearCurrentDragSourceNode() {\n\t\tif (this.currentDragSourceNode) {\n\t\t\tthis.currentDragSourceNode = null\n\n\t\t\tif (this.rootElement) {\n\t\t\t\tthis.window?.clearTimeout(this.mouseMoveTimeoutTimer || undefined)\n\t\t\t\tthis.rootElement.removeEventListener(\n\t\t\t\t\t'mousemove',\n\t\t\t\t\tthis.endDragIfSourceWasRemovedFromDOM,\n\t\t\t\t\ttrue,\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.mouseMoveTimeoutTimer = null\n\t\t\treturn true\n\t\t}\n\n\t\treturn false\n\t}\n\n\tprivate scheduleHover = (dragOverTargetIds: string[] | null) => {\n\t\tif (\n\t\t\tthis.hoverRafId === null &&\n\t\t\ttypeof requestAnimationFrame !== 'undefined'\n\t\t) {\n\t\t\tthis.hoverRafId = requestAnimationFrame(() => {\n\t\t\t\tif (this.monitor.isDragging()) {\n\t\t\t\t\tthis.actions.hover(dragOverTargetIds || [], {\n\t\t\t\t\t\tclientOffset: this.lastClientOffset,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tthis.hoverRafId = null\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate cancelHover = () => {\n\t\tif (\n\t\t\tthis.hoverRafId !== null &&\n\t\t\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t) {\n\t\t\tcancelAnimationFrame(this.hoverRafId)\n\t\t\tthis.hoverRafId = null\n\t\t}\n\t}\n\n\tpublic handleTopDragStartCapture = (): void => {\n\t\tthis.clearCurrentDragSourceNode()\n\t\tthis.dragStartSourceIds = []\n\t}\n\n\tpublic handleDragStart(e: DragEvent, sourceId: string): void {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn\n\t\t}\n\n\t\tif (!this.dragStartSourceIds) {\n\t\t\tthis.dragStartSourceIds = []\n\t\t}\n\t\tthis.dragStartSourceIds.unshift(sourceId)\n\t}\n\n\tpublic handleTopDragStart = (e: DragEvent): void => {\n\t\tif (e.defaultPrevented) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { dragStartSourceIds } = this\n\t\tthis.dragStartSourceIds = null\n\n\t\tconst clientOffset = getEventClientOffset(e)\n\n\t\t// Avoid crashing if we missed a drop event or our previous drag died\n\t\tif (this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t\tthis.cancelHover()\n\t\t}\n\n\t\t// Don't publish the source just yet (see why below)\n\t\tthis.actions.beginDrag(dragStartSourceIds || [], {\n\t\t\tpublishSource: false,\n\t\t\tgetSourceClientOffset: this.getSourceClientOffset,\n\t\t\tclientOffset,\n\t\t})\n\n\t\tconst { dataTransfer } = e\n\t\tconst nativeType = matchNativeItemType(dataTransfer)\n\n\t\tif (this.monitor.isDragging()) {\n\t\t\tif (dataTransfer && typeof dataTransfer.setDragImage === 'function') {\n\t\t\t\t// Use custom drag image if user specifies it.\n\t\t\t\t// If child drag source refuses drag but parent agrees,\n\t\t\t\t// use parent's node as drag image. Neither works in IE though.\n\t\t\t\tconst sourceId: string = this.monitor.getSourceId() as string\n\t\t\t\tconst sourceNode = this.sourceNodes.get(sourceId)\n\t\t\t\tconst dragPreview = this.sourcePreviewNodes.get(sourceId) || sourceNode\n\n\t\t\t\tif (dragPreview) {\n\t\t\t\t\tconst { anchorX, anchorY, offsetX, offsetY } =\n\t\t\t\t\t\tthis.getCurrentSourcePreviewNodeOptions()\n\t\t\t\t\tconst anchorPoint = { anchorX, anchorY }\n\t\t\t\t\tconst offsetPoint = { offsetX, offsetY }\n\t\t\t\t\tconst dragPreviewOffset = getDragPreviewOffset(\n\t\t\t\t\t\tsourceNode as HTMLElement,\n\t\t\t\t\t\tdragPreview as HTMLElement,\n\t\t\t\t\t\tclientOffset,\n\t\t\t\t\t\tanchorPoint,\n\t\t\t\t\t\toffsetPoint,\n\t\t\t\t\t)\n\n\t\t\t\t\tdataTransfer.setDragImage(\n\t\t\t\t\t\tdragPreview,\n\t\t\t\t\t\tdragPreviewOffset.x,\n\t\t\t\t\t\tdragPreviewOffset.y,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\t// Firefox won't drag without setting data\n\t\t\t\tdataTransfer?.setData('application/json', {} as any)\n\t\t\t} catch (err) {\n\t\t\t\t// IE doesn't support MIME types in setData\n\t\t\t}\n\n\t\t\t// Store drag source node so we can check whether\n\t\t\t// it is removed from DOM and trigger endDrag manually.\n\t\t\tthis.setCurrentDragSourceNode(e.target as Element)\n\n\t\t\t// Now we are ready to publish the drag source.. or are we not?\n\t\t\tconst { captureDraggingState } = this.getCurrentSourcePreviewNodeOptions()\n\t\t\tif (!captureDraggingState) {\n\t\t\t\t// Usually we want to publish it in the next tick so that browser\n\t\t\t\t// is able to screenshot the current (not yet dragging) state.\n\t\t\t\t//\n\t\t\t\t// It also neatly avoids a situation where render() returns null\n\t\t\t\t// in the same tick for the source element, and browser freaks out.\n\t\t\t\tsetTimeout(() => this.actions.publishDragSource(), 0)\n\t\t\t} else {\n\t\t\t\t// In some cases the user may want to override this behavior, e.g.\n\t\t\t\t// to work around IE not supporting custom drag previews.\n\t\t\t\t//\n\t\t\t\t// When using a custom drag layer, the only way to prevent\n\t\t\t\t// the default drag preview from drawing in IE is to screenshot\n\t\t\t\t// the dragging state in which the node itself has zero opacity\n\t\t\t\t// and height. In this case, though, returning null from render()\n\t\t\t\t// will abruptly end the dragging, which is not obvious.\n\t\t\t\t//\n\t\t\t\t// This is the reason such behavior is strictly opt-in.\n\t\t\t\tthis.actions.publishDragSource()\n\t\t\t}\n\t\t} else if (nativeType) {\n\t\t\t// A native item (such as URL) dragged from inside the document\n\t\t\tthis.beginDragNativeItem(nativeType)\n\t\t} else if (\n\t\t\tdataTransfer &&\n\t\t\t!dataTransfer.types &&\n\t\t\t((e.target && !(e.target as Element).hasAttribute) ||\n\t\t\t\t!(e.target as Element).hasAttribute('draggable'))\n\t\t) {\n\t\t\t// Looks like a Safari bug: dataTransfer.types is null, but there was no draggable.\n\t\t\t// Just let it drag. It's a native type (URL or text) and will be picked up in\n\t\t\t// dragenter handler.\n\t\t\treturn\n\t\t} else {\n\t\t\t// If by this time no drag source reacted, tell browser not to drag.\n\t\t\te.preventDefault()\n\t\t}\n\t}\n\n\tpublic handleTopDragEndCapture = (): void => {\n\t\tif (this.clearCurrentDragSourceNode() && this.monitor.isDragging()) {\n\t\t\t// Firefox can dispatch this event in an infinite loop\n\t\t\t// if dragend handler does something like showing an alert.\n\t\t\t// Only proceed if we have not handled it already.\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleTopDragEnterCapture = (e: DragEvent): void => {\n\t\tthis.dragEnterTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t}\n\n\t\tconst isFirstEnter = this.enterLeaveCounter.enter(e.target)\n\t\tif (!isFirstEnter || this.monitor.isDragging()) {\n\t\t\treturn\n\t\t}\n\n\t\tconst { dataTransfer } = e\n\t\tconst nativeType = matchNativeItemType(dataTransfer)\n\n\t\tif (nativeType) {\n\t\t\t// A native item (such as file or URL) dragged from outside the document\n\t\t\tthis.beginDragNativeItem(nativeType, dataTransfer as DataTransfer)\n\t\t}\n\t}\n\n\tpublic handleDragEnter(_e: DragEvent, targetId: string): void {\n\t\tthis.dragEnterTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDragEnter = (e: DragEvent): void => {\n\t\tconst { dragEnterTargetIds } = this\n\t\tthis.dragEnterTargetIds = []\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\t// This is probably a native item type we don't understand.\n\t\t\treturn\n\t\t}\n\n\t\tthis.altKeyPressed = e.altKey\n\n\t\t// If the target changes position as the result of `dragenter`, `dragover` might still\n\t\t// get dispatched despite target being no longer there. The easy solution is to check\n\t\t// whether there actually is a target before firing `hover`.\n\t\tif (dragEnterTargetIds.length > 0) {\n\t\t\tthis.actions.hover(dragEnterTargetIds, {\n\t\t\t\tclientOffset: getEventClientOffset(e),\n\t\t\t})\n\t\t}\n\n\t\tconst canDrop = dragEnterTargetIds.some((targetId) =>\n\t\t\tthis.monitor.canDropOnTarget(targetId),\n\t\t)\n\n\t\tif (canDrop) {\n\t\t\t// IE requires this to fire dragover events\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = this.getCurrentDropEffect()\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleTopDragOverCapture = (e: DragEvent): void => {\n\t\tthis.dragOverTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t}\n\t}\n\n\tpublic handleDragOver(_e: DragEvent, targetId: string): void {\n\t\tif (this.dragOverTargetIds === null) {\n\t\t\tthis.dragOverTargetIds = []\n\t\t}\n\t\tthis.dragOverTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDragOver = (e: DragEvent): void => {\n\t\tconst { dragOverTargetIds } = this\n\t\tthis.dragOverTargetIds = []\n\n\t\tif (!this.monitor.isDragging()) {\n\t\t\t// This is probably a native item type we don't understand.\n\t\t\t// Prevent default \"drop and blow away the whole document\" action.\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = 'none'\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tthis.altKeyPressed = e.altKey\n\t\tthis.lastClientOffset = getEventClientOffset(e)\n\n\t\tthis.scheduleHover(dragOverTargetIds)\n\n\t\tconst canDrop = (dragOverTargetIds || []).some((targetId) =>\n\t\t\tthis.monitor.canDropOnTarget(targetId),\n\t\t)\n\n\t\tif (canDrop) {\n\t\t\t// Show user-specified drop effect.\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = this.getCurrentDropEffect()\n\t\t\t}\n\t\t} else if (this.isDraggingNativeItem()) {\n\t\t\t// Don't show a nice cursor but still prevent default\n\t\t\t// \"drop and blow away the whole document\" action.\n\t\t\te.preventDefault()\n\t\t} else {\n\t\t\te.preventDefault()\n\t\t\tif (e.dataTransfer) {\n\t\t\t\te.dataTransfer.dropEffect = 'none'\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic handleTopDragLeaveCapture = (e: DragEvent): void => {\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tconst isLastLeave = this.enterLeaveCounter.leave(e.target)\n\t\tif (!isLastLeave) {\n\t\t\treturn\n\t\t}\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tsetTimeout(() => this.endDragNativeItem(), 0)\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleTopDropCapture = (e: DragEvent): void => {\n\t\tthis.dropTargetIds = []\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\te.preventDefault()\n\t\t\tthis.currentNativeSource?.loadDataTransfer(e.dataTransfer)\n\t\t} else if (matchNativeItemType(e.dataTransfer)) {\n\t\t\t// Dragging some elements, like <a> and <img> may still behave like a native drag event,\n\t\t\t// even if the current drag event matches a user-defined type.\n\t\t\t// Stop the default behavior when we're not expecting a native item to be dropped.\n\n\t\t\te.preventDefault()\n\t\t}\n\n\t\tthis.enterLeaveCounter.reset()\n\t}\n\n\tpublic handleDrop(_e: DragEvent, targetId: string): void {\n\t\tthis.dropTargetIds.unshift(targetId)\n\t}\n\n\tpublic handleTopDrop = (e: DragEvent): void => {\n\t\tconst { dropTargetIds } = this\n\t\tthis.dropTargetIds = []\n\n\t\tthis.actions.hover(dropTargetIds, {\n\t\t\tclientOffset: getEventClientOffset(e),\n\t\t})\n\t\tthis.actions.drop({ dropEffect: this.getCurrentDropEffect() })\n\n\t\tif (this.isDraggingNativeItem()) {\n\t\t\tthis.endDragNativeItem()\n\t\t} else if (this.monitor.isDragging()) {\n\t\t\tthis.actions.endDrag()\n\t\t}\n\t\tthis.cancelHover()\n\t}\n\n\tpublic handleSelectStart = (e: DragEvent): void => {\n\t\tconst target = e.target as HTMLElement & { dragDrop: () => void }\n\n\t\t// Only IE requires us to explicitly say\n\t\t// we want drag drop operation to start\n\t\tif (typeof target.dragDrop !== 'function') {\n\t\t\treturn\n\t\t}\n\n\t\t// Inputs and textareas should be selectable\n\t\tif (\n\t\t\ttarget.tagName === 'INPUT' ||\n\t\t\ttarget.tagName === 'SELECT' ||\n\t\t\ttarget.tagName === 'TEXTAREA' ||\n\t\t\ttarget.isContentEditable\n\t\t) {\n\t\t\treturn\n\t\t}\n\n\t\t// For other targets, ask IE\n\t\t// to enable drag and drop\n\t\te.preventDefault()\n\t\ttarget.dragDrop()\n\t}\n}\n","import type { BackendFactory, DragDropManager } from 'dnd-core'\n\nimport { HTML5BackendImpl } from './HTML5BackendImpl.js'\nimport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\nexport { getEmptyImage } from './getEmptyImage.js'\nexport * as NativeTypes from './NativeTypes.js'\nexport type { HTML5BackendContext, HTML5BackendOptions } from './types.js'\n\nexport const HTML5Backend: BackendFactory = function createBackend(\n\tmanager: DragDropManager,\n\tcontext?: HTML5BackendContext,\n\toptions?: HTML5BackendOptions,\n): HTML5BackendImpl {\n\treturn new HTML5BackendImpl(manager, context, options)\n}\n","import React, { FC } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_FullScreenToggleButton: FC<Props> = ({ table, ...rest }) => {\n const {\n getState,\n options: {\n icons: { FullscreenExitIcon, FullscreenIcon },\n localization,\n },\n setIsFullScreen,\n } = table;\n const { isFullScreen } = getState();\n\n const handleToggleFullScreen = () => {\n setIsFullScreen(!isFullScreen);\n };\n\n return (\n <Tooltip arrow title={localization.toggleFullScreen}>\n <IconButton\n aria-label={localization.showHideFilters}\n onClick={handleToggleFullScreen}\n {...rest}\n >\n {isFullScreen ? <FullscreenExitIcon /> : <FullscreenIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import React, { FC, MouseEvent, useState } from 'react';\nimport { IconButton, Tooltip, IconButtonProps } from '@mui/material';\nimport { MRT_ShowHideColumnsMenu } from '../menus/MRT_ShowHideColumnsMenu';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsButton: FC<Props> = ({ table, ...rest }) => {\n const {\n options: {\n icons: { ViewColumnIcon },\n localization,\n },\n } = table;\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n return (\n <>\n <Tooltip arrow title={localization.showHideColumns}>\n <IconButton\n aria-label={localization.showHideColumns}\n onClick={handleClick}\n {...rest}\n >\n <ViewColumnIcon />\n </IconButton>\n </Tooltip>\n <MRT_ShowHideColumnsMenu\n anchorEl={anchorEl}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToggleDensePaddingButton: FC<Props> = ({ table, ...rest }) => {\n const {\n getState,\n options: {\n icons: { DensityLargeIcon, DensityMediumIcon, DensitySmallIcon },\n localization,\n },\n setDensity,\n } = table;\n const { density } = getState();\n\n const handleToggleDensePadding = () => {\n const nextDensity =\n density === 'comfortable'\n ? 'compact'\n : density === 'compact'\n ? 'spacious'\n : 'comfortable';\n setDensity(nextDensity);\n };\n\n return (\n <Tooltip arrow title={localization.toggleDensity}>\n <IconButton\n aria-label={localization.toggleDensity}\n onClick={handleToggleDensePadding}\n {...rest}\n >\n {density === 'compact' ? (\n <DensitySmallIcon />\n ) : density === 'comfortable' ? (\n <DensityMediumIcon />\n ) : (\n <DensityLargeIcon />\n )}\n </IconButton>\n </Tooltip>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToggleFiltersButton: FC<Props> = ({ table, ...rest }) => {\n const {\n getState,\n options: {\n icons: { FilterListIcon, FilterListOffIcon },\n localization,\n },\n setShowFilters,\n } = table;\n const { showFilters } = getState();\n\n const handleToggleShowFilters = () => {\n setShowFilters(!showFilters);\n };\n\n return (\n <Tooltip arrow title={localization.showHideFilters}>\n <IconButton\n aria-label={localization.showHideFilters}\n onClick={handleToggleShowFilters}\n {...rest}\n >\n {showFilters ? <FilterListOffIcon /> : <FilterListIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToggleGlobalFilterButton: FC<Props> = ({ table, ...rest }) => {\n const {\n getState,\n options: {\n icons: { SearchIcon, SearchOffIcon },\n tableId,\n localization,\n muiSearchTextFieldProps,\n },\n setShowGlobalFilter,\n } = table;\n const { showGlobalFilter } = getState();\n\n const textFieldProps =\n muiSearchTextFieldProps instanceof Function\n ? muiSearchTextFieldProps({ table })\n : muiSearchTextFieldProps;\n\n const handleToggleSearch = () => {\n setShowGlobalFilter(!showGlobalFilter);\n setTimeout(\n () =>\n document\n .getElementById(\n textFieldProps?.id ?? `mrt-${tableId}-search-text-field`,\n )\n ?.focus(),\n 200,\n );\n };\n\n return (\n <Tooltip arrow title={localization.showHideSearch}>\n <IconButton onClick={handleToggleSearch} {...rest}>\n {showGlobalFilter ? <SearchOffIcon /> : <SearchIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import React, {\n ChangeEvent,\n FC,\n MouseEvent,\n useCallback,\n useState,\n} from 'react';\nimport {\n Collapse,\n debounce,\n IconButton,\n InputAdornment,\n TextField,\n Tooltip,\n} from '@mui/material';\nimport { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_GlobalFilterTextField: FC<Props> = ({ table }) => {\n const {\n getState,\n setGlobalFilter,\n options: {\n enableGlobalFilterChangeMode,\n icons: { SearchIcon, CloseIcon },\n localization,\n muiSearchTextFieldProps,\n tableId,\n },\n } = table;\n const { globalFilter, showGlobalFilter } = getState();\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const [searchValue, setSearchValue] = useState(globalFilter ?? '');\n\n const handleChangeDebounced = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n setGlobalFilter(event.target.value ?? undefined);\n }, 250),\n [],\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setSearchValue(event.target.value);\n handleChangeDebounced(event);\n };\n\n const handleGlobalFilterMenuOpen = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClear = () => {\n setSearchValue('');\n setGlobalFilter(undefined);\n };\n\n const textFieldProps =\n muiSearchTextFieldProps instanceof Function\n ? muiSearchTextFieldProps({ table })\n : muiSearchTextFieldProps;\n\n return (\n <Collapse in={showGlobalFilter} orientation=\"horizontal\">\n <TextField\n id={`mrt-${tableId}-search-text-field`}\n placeholder={localization.search}\n onChange={handleChange}\n value={searchValue ?? ''}\n variant=\"standard\"\n InputProps={{\n startAdornment: enableGlobalFilterChangeMode ? (\n <InputAdornment position=\"start\">\n <Tooltip arrow title={localization.changeSearchMode}>\n <IconButton\n aria-label={localization.changeSearchMode}\n onClick={handleGlobalFilterMenuOpen}\n size=\"small\"\n sx={{ height: '1.75rem', width: '1.75rem' }}\n >\n <SearchIcon />\n </IconButton>\n </Tooltip>\n </InputAdornment>\n ) : (\n <SearchIcon />\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n <Tooltip arrow title={localization.clearSearch ?? ''}>\n <span>\n <IconButton\n aria-label={localization.clearSearch}\n disabled={!searchValue?.length}\n onClick={handleClear}\n size=\"small\"\n >\n <CloseIcon />\n </IconButton>\n </span>\n </Tooltip>\n </InputAdornment>\n ),\n }}\n {...textFieldProps}\n />\n <MRT_FilterOptionMenu\n anchorEl={anchorEl}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </Collapse>\n );\n};\n","import React, { FC } from 'react';\nimport { Box } from '@mui/material';\nimport { MRT_FullScreenToggleButton } from '../buttons/MRT_FullScreenToggleButton';\nimport { MRT_ShowHideColumnsButton } from '../buttons/MRT_ShowHideColumnsButton';\nimport { MRT_ToggleDensePaddingButton } from '../buttons/MRT_ToggleDensePaddingButton';\nimport { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';\nimport { MRT_ToggleGlobalFilterButton } from '../buttons/MRT_ToggleGlobalFilterButton';\nimport { MRT_TableInstance } from '..';\nimport { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarInternalButtons: FC<Props> = ({ table }) => {\n const {\n options: {\n enableColumnFilters,\n enableColumnOrdering,\n enableDensityToggle,\n enableFilters,\n enableFullScreenToggle,\n enableGlobalFilter,\n enableHiding,\n enablePinning,\n positionGlobalFilter,\n renderToolbarInternalActions,\n },\n } = table;\n\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n zIndex: 3,\n }}\n >\n {renderToolbarInternalActions?.({\n MRT_FullScreenToggleButton,\n MRT_ShowHideColumnsButton,\n MRT_ToggleDensePaddingButton,\n MRT_ToggleFiltersButton,\n MRT_ToggleGlobalFilterButton,\n table,\n }) ?? (\n <>\n {enableGlobalFilter && positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField table={table} />\n )}\n {enableFilters && enableGlobalFilter && (\n <MRT_ToggleGlobalFilterButton table={table} />\n )}\n {enableFilters && enableColumnFilters && (\n <MRT_ToggleFiltersButton table={table} />\n )}\n {(enableHiding || enableColumnOrdering || enablePinning) && (\n <MRT_ShowHideColumnsButton table={table} />\n )}\n {enableDensityToggle && (\n <MRT_ToggleDensePaddingButton table={table} />\n )}\n {enableFullScreenToggle && (\n <MRT_FullScreenToggleButton table={table} />\n )}\n </>\n )}\n </Box>\n );\n};\n","import React, { ChangeEvent, FC } from 'react';\nimport { TablePagination } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n position: 'top' | 'bottom';\n}\n\nexport const MRT_TablePagination: FC<Props> = ({ table, position }) => {\n const {\n getPrePaginationRowModel,\n getState,\n setPageIndex,\n setPageSize,\n options: {\n muiTablePaginationProps,\n enableToolbarInternalActions,\n rowCount,\n },\n } = table;\n const {\n pagination: { pageSize = 10, pageIndex = 0 },\n showGlobalFilter,\n } = getState();\n\n const totalRowCount = rowCount ?? getPrePaginationRowModel().rows.length;\n const showFirstLastPageButtons = totalRowCount / pageSize > 2;\n\n const tablePaginationProps =\n muiTablePaginationProps instanceof Function\n ? muiTablePaginationProps({ table })\n : muiTablePaginationProps;\n\n const handleChangeRowsPerPage = (event: ChangeEvent<HTMLInputElement>) => {\n setPageSize(+event.target.value);\n };\n\n return (\n <TablePagination\n SelectProps={{\n sx: { m: '0 1rem 0 1ch' },\n MenuProps: { MenuListProps: { disablePadding: true } },\n }}\n component=\"div\"\n count={totalRowCount}\n onPageChange={(_: any, newPage: number) => setPageIndex(newPage)}\n onRowsPerPageChange={handleChangeRowsPerPage}\n page={pageIndex}\n rowsPerPage={pageSize}\n rowsPerPageOptions={[5, 10, 15, 20, 25, 30, 50, 100]}\n showFirstButton={showFirstLastPageButtons}\n showLastButton={showFirstLastPageButtons}\n {...tablePaginationProps}\n sx={{\n m: '0 0.5rem',\n mt:\n position === 'top' &&\n enableToolbarInternalActions &&\n !showGlobalFilter\n ? '3.5rem'\n : undefined,\n position: 'relative',\n zIndex: 2,\n ...tablePaginationProps?.sx,\n }}\n />\n );\n};\n","import React, { FC, Fragment } from 'react';\nimport { Alert, AlertTitle, Box, Chip, Collapse } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n stackAlertBanner?: boolean;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarAlertBanner: FC<Props> = ({\n stackAlertBanner,\n table,\n}) => {\n const {\n getPrePaginationRowModel,\n getSelectedRowModel,\n getState,\n options: { localization, muiTableToolbarAlertBannerProps },\n } = table;\n const { grouping, showAlertBanner } = getState();\n\n const alertProps =\n muiTableToolbarAlertBannerProps instanceof Function\n ? muiTableToolbarAlertBannerProps({ table })\n : muiTableToolbarAlertBannerProps;\n\n const selectMessage =\n getSelectedRowModel().rows.length > 0\n ? localization.selectedCountOfRowCountRowsSelected\n ?.replace(\n '{selectedCount}',\n getSelectedRowModel().rows.length.toString(),\n )\n ?.replace(\n '{rowCount}',\n getPrePaginationRowModel().rows.length.toString(),\n )\n : null;\n\n const groupedByMessage =\n grouping.length > 0 ? (\n <span>\n {localization.groupedBy}{' '}\n {grouping.map((columnId, index) => (\n <Fragment key={`${index}-${columnId}`}>\n {index > 0 ? localization.thenBy : ''}\n <Chip\n color=\"secondary\"\n label={table.getColumn(columnId).columnDef.header}\n onDelete={() => table.getColumn(columnId).toggleGrouping()}\n />\n </Fragment>\n ))}\n </span>\n ) : null;\n\n return (\n <Collapse\n in={showAlertBanner || !!selectMessage || !!groupedByMessage}\n timeout={stackAlertBanner ? 200 : 0}\n >\n <Alert\n color=\"info\"\n icon={false}\n {...alertProps}\n sx={{\n borderRadius: 0,\n fontSize: '1rem',\n left: 0,\n p: 0,\n position: 'relative',\n right: 0,\n top: 0,\n width: '100%',\n zIndex: 2,\n ...alertProps?.sx,\n }}\n >\n {alertProps?.title && <AlertTitle>{alertProps.title}</AlertTitle>}\n <Box sx={{ p: '0.5rem 1rem' }}>\n {alertProps?.children}\n {alertProps?.children && (selectMessage || groupedByMessage) && (\n <br />\n )}\n {selectMessage}\n {selectMessage && groupedByMessage && <br />}\n {groupedByMessage}\n </Box>\n </Alert>\n </Collapse>\n );\n};\n","import React, { FC } from 'react';\nimport { Collapse, LinearProgress } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n alignTo: 'bottom' | 'top';\n table: MRT_TableInstance;\n}\n\nexport const MRT_LinearProgressBar: FC<Props> = ({ alignTo, table }) => {\n const {\n options: { muiLinearProgressProps },\n getState,\n } = table;\n const { isLoading, showProgressBars } = getState();\n\n const linearProgressProps =\n muiLinearProgressProps instanceof Function\n ? muiLinearProgressProps({ table })\n : muiLinearProgressProps;\n\n return (\n <Collapse\n in={isLoading || showProgressBars}\n mountOnEnter\n unmountOnExit\n sx={{\n bottom: alignTo === 'bottom' ? 0 : undefined,\n position: 'absolute',\n top: alignTo === 'top' ? 0 : undefined,\n width: '100%',\n }}\n >\n <LinearProgress\n aria-label=\"Loading\"\n aria-busy=\"true\"\n sx={{ position: 'relative' }}\n {...linearProgressProps}\n />\n </Collapse>\n );\n};\n","import React, { FC } from 'react';\nimport { Box, lighten, Theme, Toolbar, useMediaQuery } from '@mui/material';\nimport { MRT_ToolbarInternalButtons } from './MRT_ToolbarInternalButtons';\nimport { MRT_TablePagination } from './MRT_TablePagination';\nimport { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';\nimport { MRT_LinearProgressBar } from './MRT_LinearProgressBar';\nimport { MRT_TableInstance } from '..';\nimport { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';\n\nexport const commonToolbarStyles = ({ theme }: { theme: Theme }) => ({\n backgroundColor: lighten(theme.palette.background.default, 0.04),\n backgroundImage: 'none',\n display: 'grid',\n minHeight: '3.5rem',\n overflow: 'hidden',\n p: '0 !important',\n transition: 'all 0.2s ease-in-out',\n zIndex: 1,\n});\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarTop: FC<Props> = ({ table }) => {\n const {\n getState,\n options: {\n enableGlobalFilter,\n enablePagination,\n enableToolbarInternalActions,\n muiTableToolbarTopProps,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n renderToolbarTopCustomActions,\n tableId,\n },\n } = table;\n\n const { isFullScreen, showGlobalFilter } = getState();\n\n const isMobile = useMediaQuery('(max-width:720px)');\n\n const toolbarProps =\n muiTableToolbarTopProps instanceof Function\n ? muiTableToolbarTopProps({ table })\n : muiTableToolbarTopProps;\n\n const stackAlertBanner =\n isMobile ||\n (positionToolbarAlertBanner === 'top' &&\n (!!renderToolbarTopCustomActions || showGlobalFilter));\n\n return (\n <Toolbar\n id={`mrt-${tableId}-toolbar-top`}\n variant=\"dense\"\n {...toolbarProps}\n sx={(theme) =>\n ({\n position: isFullScreen ? 'sticky' : undefined,\n top: isFullScreen ? '0' : undefined,\n ...commonToolbarStyles({ theme }),\n ...toolbarProps?.sx,\n } as any)\n }\n >\n {positionToolbarAlertBanner === 'top' && (\n <MRT_ToolbarAlertBanner\n stackAlertBanner={stackAlertBanner}\n table={table}\n />\n )}\n <Box\n sx={{\n alignItems: 'flex-start',\n boxSizing: 'border-box',\n display: 'flex',\n justifyContent: 'space-between',\n p: '0.5rem',\n position: stackAlertBanner ? 'relative' : 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n }}\n >\n {enableGlobalFilter && positionGlobalFilter === 'left' && (\n <MRT_GlobalFilterTextField table={table} />\n )}\n\n {renderToolbarTopCustomActions?.({ table }) ?? <span />}\n {enableToolbarInternalActions ? (\n <MRT_ToolbarInternalButtons table={table} />\n ) : (\n enableGlobalFilter &&\n positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField table={table} />\n )\n )}\n </Box>\n {enablePagination &&\n ['top', 'both'].includes(positionPagination ?? '') && (\n <MRT_TablePagination table={table} position=\"top\" />\n )}\n <MRT_LinearProgressBar alignTo=\"bottom\" table={table} />\n </Toolbar>\n );\n};\n","import React, { FC } from 'react';\nimport { alpha, Box, Toolbar, useMediaQuery } from '@mui/material';\nimport { MRT_TablePagination } from './MRT_TablePagination';\nimport { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';\nimport { MRT_LinearProgressBar } from './MRT_LinearProgressBar';\nimport { commonToolbarStyles } from './MRT_ToolbarTop';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarBottom: FC<Props> = ({ table }) => {\n const {\n getState,\n options: {\n enablePagination,\n muiTableToolbarBottomProps,\n positionPagination,\n positionToolbarAlertBanner,\n renderToolbarBottomCustomActions,\n tableId,\n },\n } = table;\n const { isFullScreen } = getState();\n\n const isMobile = useMediaQuery('(max-width:720px)');\n\n const toolbarProps =\n muiTableToolbarBottomProps instanceof Function\n ? muiTableToolbarBottomProps({ table })\n : muiTableToolbarBottomProps;\n\n const stackAlertBanner =\n isMobile ||\n (positionToolbarAlertBanner === 'bottom' &&\n !!renderToolbarBottomCustomActions);\n\n return (\n <Toolbar\n id={`mrt-${tableId}-toolbar-bottom`}\n variant=\"dense\"\n {...toolbarProps}\n sx={(theme) =>\n ({\n ...commonToolbarStyles({ theme }),\n bottom: isFullScreen ? '0' : undefined,\n boxShadow: `-3px 0 6px ${alpha(theme.palette.common.black, 0.1)}`,\n left: 0,\n position: isFullScreen ? 'fixed' : 'relative',\n right: 0,\n ...toolbarProps?.sx,\n } as any)\n }\n >\n <MRT_LinearProgressBar alignTo=\"top\" table={table} />\n {positionToolbarAlertBanner === 'bottom' && (\n <MRT_ToolbarAlertBanner table={table} />\n )}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n }}\n >\n {renderToolbarBottomCustomActions ? (\n <Box sx={{ p: '0.5rem' }}>\n {renderToolbarBottomCustomActions({ table })}\n </Box>\n ) : (\n <span />\n )}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'flex-end',\n position: stackAlertBanner ? 'relative' : 'absolute',\n right: 0,\n top: 0,\n }}\n >\n {enablePagination &&\n ['bottom', 'both'].includes(positionPagination ?? '') && (\n <MRT_TablePagination table={table} position=\"bottom\" />\n )}\n </Box>\n </Box>\n </Toolbar>\n );\n};\n","import React, {\n ChangeEvent,\n FC,\n MouseEvent,\n useCallback,\n useState,\n} from 'react';\nimport {\n Chip,\n debounce,\n IconButton,\n InputAdornment,\n MenuItem,\n TextField,\n TextFieldProps,\n Tooltip,\n} from '@mui/material';\nimport { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';\nimport type { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n inputIndex?: number;\n table: MRT_TableInstance;\n}\n\nexport const MRT_FilterTextField: FC<Props> = ({\n header,\n inputIndex,\n table,\n}) => {\n const {\n getState,\n options: {\n enableColumnFilterChangeMode,\n enabledColumnFilterOptions,\n icons: { FilterListIcon, CloseIcon },\n localization,\n muiTableHeadCellFilterTextFieldProps,\n tableId,\n },\n setCurrentFilterFns,\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { currentFilterFns } = getState();\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const mTableHeadCellFilterTextFieldProps =\n muiTableHeadCellFilterTextFieldProps instanceof Function\n ? muiTableHeadCellFilterTextFieldProps({ column, table })\n : muiTableHeadCellFilterTextFieldProps;\n\n const mcTableHeadCellFilterTextFieldProps =\n columnDef.muiTableHeadCellFilterTextFieldProps instanceof Function\n ? columnDef.muiTableHeadCellFilterTextFieldProps({\n column,\n table,\n })\n : columnDef.muiTableHeadCellFilterTextFieldProps;\n\n const textFieldProps = {\n ...mTableHeadCellFilterTextFieldProps,\n ...mcTableHeadCellFilterTextFieldProps,\n } as TextFieldProps;\n\n const [filterValue, setFilterValue] = useState<string>(() =>\n inputIndex !== undefined\n ? (column.getFilterValue() as [string, string])?.[inputIndex] ?? ''\n : (column.getFilterValue() as string) ?? '',\n );\n\n const handleChangeDebounced = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (inputIndex !== undefined) {\n column.setFilterValue((old: [string, string]) => {\n const newFilterValues = old ?? ['', ''];\n newFilterValues[inputIndex] = event.target.value;\n return newFilterValues;\n });\n } else {\n column.setFilterValue(event.target.value ?? undefined);\n }\n }, 200),\n [],\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setFilterValue(event.target.value);\n handleChangeDebounced(event);\n };\n\n const handleFilterMenuOpen = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClear = () => {\n setFilterValue('');\n if (inputIndex !== undefined) {\n column.setFilterValue((old: [string | undefined, string | undefined]) => {\n const newFilterValues = old ?? ['', ''];\n newFilterValues[inputIndex] = undefined;\n return newFilterValues;\n });\n } else {\n column.setFilterValue(undefined);\n }\n };\n\n const handleClearFilterChip = () => {\n setFilterValue('');\n column.setFilterValue(undefined);\n setCurrentFilterFns((prev) => ({\n ...prev,\n [header.id]: 'fuzzy',\n }));\n };\n\n if (columnDef.Filter) {\n return <>{columnDef.Filter?.({ header, table })}</>;\n }\n\n const filterId = `mrt-${tableId}-${header.id}-filter-text-field${\n inputIndex ?? ''\n }`;\n const currentFilterOption = currentFilterFns?.[header.id];\n const isSelectFilter = !!columnDef.filterSelectOptions;\n const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)\n ? //@ts-ignore\n localization[\n `filter${\n currentFilterOption.charAt(0).toUpperCase() +\n currentFilterOption.slice(1)\n }`\n ]\n : '';\n const filterPlaceholder =\n inputIndex === undefined\n ? localization.filterByColumn?.replace(\n '{column}',\n String(columnDef.header),\n )\n : inputIndex === 0\n ? localization.min\n : inputIndex === 1\n ? localization.max\n : '';\n\n const allowedColumnFilterOptions =\n columnDef?.enabledColumnFilterOptions ?? enabledColumnFilterOptions;\n\n const showChangeModeButton =\n enableColumnFilterChangeMode &&\n columnDef.enableColumnFilterChangeMode !== false &&\n !isSelectFilter &&\n !inputIndex &&\n (allowedColumnFilterOptions === undefined ||\n !!allowedColumnFilterOptions?.length);\n\n return (\n <>\n <TextField\n fullWidth\n id={filterId}\n inputProps={{\n disabled: !!filterChipLabel,\n sx: {\n textOverflow: 'ellipsis',\n width: filterChipLabel ? 0 : undefined,\n },\n title: filterPlaceholder,\n }}\n helperText={\n showChangeModeButton ? (\n <label htmlFor={filterId}>\n {localization.filterMode.replace(\n '{filterType}',\n // @ts-ignore\n localization[\n `filter${\n currentFilterOption.charAt(0).toUpperCase() +\n currentFilterOption.slice(1)\n }`\n ],\n )}\n </label>\n ) : null\n }\n FormHelperTextProps={{\n sx: {\n fontSize: '0.6rem',\n lineHeight: '0.8rem',\n whiteSpace: 'nowrap',\n },\n }}\n margin=\"none\"\n placeholder={\n filterChipLabel || isSelectFilter ? undefined : filterPlaceholder\n }\n onChange={handleChange}\n onClick={(e: MouseEvent<HTMLInputElement>) => e.stopPropagation()}\n select={isSelectFilter}\n value={filterValue ?? ''}\n variant=\"standard\"\n InputProps={{\n startAdornment: showChangeModeButton ? (\n <InputAdornment position=\"start\">\n <Tooltip arrow title={localization.changeFilterMode}>\n <span>\n <IconButton\n aria-label={localization.changeFilterMode}\n onClick={handleFilterMenuOpen}\n size=\"small\"\n sx={{ height: '1.75rem', width: '1.75rem' }}\n >\n <FilterListIcon />\n </IconButton>\n </span>\n </Tooltip>\n {filterChipLabel && (\n <Chip\n onDelete={handleClearFilterChip}\n label={filterChipLabel}\n />\n )}\n </InputAdornment>\n ) : (\n <FilterListIcon />\n ),\n endAdornment: !filterChipLabel && (\n <InputAdornment position=\"end\">\n <Tooltip\n arrow\n disableHoverListener={isSelectFilter}\n placement=\"right\"\n title={localization.clearFilter ?? ''}\n >\n <span>\n <IconButton\n aria-label={localization.clearFilter}\n disabled={!filterValue?.length}\n onClick={handleClear}\n size=\"small\"\n sx={{\n height: '1.75rem',\n width: '1.75rem',\n }}\n >\n <CloseIcon />\n </IconButton>\n </span>\n </Tooltip>\n </InputAdornment>\n ),\n }}\n {...textFieldProps}\n sx={{\n m: '-0.25rem',\n p: 0,\n minWidth: !filterChipLabel ? '8rem' : 'auto',\n width: 'calc(100% + 0.5rem)',\n '&\t.MuiSelect-icon': {\n mr: '1.5rem',\n },\n ...textFieldProps?.sx,\n }}\n >\n {isSelectFilter && (\n <MenuItem divider disabled={!filterValue} value=\"\">\n {localization.clearFilter}\n </MenuItem>\n )}\n {columnDef?.filterSelectOptions?.map((option) => {\n let value;\n let text;\n if (typeof option === 'string') {\n value = option;\n text = option;\n } else if (typeof option === 'object') {\n value = option.value;\n text = option.text;\n }\n return (\n <MenuItem key={value} value={value}>\n {text}\n </MenuItem>\n );\n })}\n </TextField>\n <MRT_FilterOptionMenu\n anchorEl={anchorEl}\n header={header}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </>\n );\n};\n","import React, { FC } from 'react';\nimport { Box } from '@mui/material';\nimport { MRT_FilterTextField } from './MRT_FilterTextField';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_FilterRangeFields: FC<Props> = ({ header, table }) => {\n return (\n <Box sx={{ display: 'grid', gridTemplateColumns: '6fr 6fr', gap: '1rem' }}>\n <MRT_FilterTextField header={header} inputIndex={0} table={table} />\n <MRT_FilterTextField header={header} inputIndex={1} table={table} />\n </Box>\n );\n};\n","import React, { FC } from 'react';\nimport { Collapse } from '@mui/material';\nimport { MRT_FilterRangeFields } from '../inputs/MRT_FilterRangeFields';\nimport { MRT_FilterTextField } from '../inputs/MRT_FilterTextField';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellFilterContainer: FC<Props> = ({\n header,\n table,\n}) => {\n const { getState } = table;\n const { currentFilterFns, showFilters } = getState();\n const { column } = header;\n\n return (\n <Collapse in={showFilters} mountOnEnter unmountOnExit>\n {currentFilterFns[column.id] === 'between' ? (\n <MRT_FilterRangeFields header={header} table={table} />\n ) : (\n <MRT_FilterTextField header={header} table={table} />\n )}\n </Collapse>\n );\n};\n","import React, { FC, MouseEvent } from 'react';\nimport { Grow, IconButton, Tooltip } from '@mui/material';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellFilterLabel: FC<Props> = ({ header, table }) => {\n const {\n getState,\n options: {\n icons: { FilterAltIcon },\n localization,\n },\n } = table;\n const { currentFilterFns } = getState();\n const { column } = header;\n const { columnDef } = column;\n\n const currentFilterOption = currentFilterFns?.[header.id];\n const filterTooltip = localization.filteringByColumn\n .replace('{column}', String(columnDef.header))\n .replace(\n '{filterType}',\n // @ts-ignore\n localization[\n `filter${\n currentFilterOption.charAt(0).toUpperCase() +\n currentFilterOption.slice(1)\n }`\n ],\n )\n .replace(\n '{filterValue}',\n `\"${\n Array.isArray(column.getFilterValue())\n ? (column.getFilterValue() as [string, string]).join(\n `\" ${localization.and} \"`,\n )\n : (column.getFilterValue() as string)\n }\"`,\n )\n .replace('\" \"', '');\n\n return (\n <Grow\n unmountOnExit\n in={\n (!!column.getFilterValue() && currentFilterOption !== 'between') ||\n (currentFilterOption === 'between' && // @ts-ignore\n (!!column.getFilterValue()?.[0] || !!column.getFilterValue()?.[1]))\n }\n >\n <span>\n <Tooltip arrow placement=\"top\" title={filterTooltip}>\n <IconButton\n disableRipple\n onClick={(event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n }}\n size=\"small\"\n sx={{\n m: 0,\n opacity: 0.8,\n p: '2px',\n transform: 'scale(0.66)',\n width: '1.5ch',\n }}\n >\n <FilterAltIcon />\n </IconButton>\n </Tooltip>\n </span>\n </Grow>\n );\n};\n","import React, { FC } from 'react';\nimport { Divider, Theme } from '@mui/material';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellResizeHandle: FC<Props> = ({ header, table }) => {\n const {\n getState,\n options: { columnResizeMode },\n } = table;\n const { density, showFilters } = getState();\n const { column } = header;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n return (\n <Divider\n flexItem\n orientation=\"vertical\"\n onDoubleClick={() => column.resetSize()}\n sx={(theme: Theme) => ({\n borderRadius: '2px',\n borderRightWidth: '2px',\n cursor: 'col-resize',\n height: showFilters && columnDefType === 'data' ? '4rem' : '2rem',\n mr: density === 'compact' ? '-0.5rem' : '-1rem',\n opacity: 0.8,\n position: 'absolute',\n right: '1px',\n touchAction: 'none',\n transition: column.getIsResizing() ? undefined : 'all 0.2s ease-in-out',\n userSelect: 'none',\n zIndex: 4,\n '&:active': {\n backgroundColor: theme.palette.info.main,\n opacity: 1,\n },\n })}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n style={{\n transform: column.getIsResizing()\n ? `translateX(${\n (getState().columnSizingInfo.deltaOffset ?? 0) /\n (columnResizeMode === 'onChange' ? 16 : 1)\n }px)`\n : 'none',\n }}\n />\n );\n};\n","import React, { FC } from 'react';\nimport { TableSortLabel, Tooltip } from '@mui/material';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellSortLabel: FC<Props> = ({ header, table }) => {\n const {\n options: { localization },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n\n const sortTooltip = !!column.getIsSorted()\n ? column.getIsSorted() === 'desc'\n ? localization.sortedByColumnDesc.replace('{column}', columnDef.header)\n : localization.sortedByColumnAsc.replace('{column}', columnDef.header)\n : localization.unsorted;\n\n return (\n <Tooltip arrow placement=\"top\" title={sortTooltip}>\n <TableSortLabel\n aria-label={sortTooltip}\n active={!!column.getIsSorted()}\n direction={\n column.getIsSorted()\n ? (column.getIsSorted() as 'asc' | 'desc')\n : undefined\n }\n sx={{\n width: '2ch',\n transform: 'translateX(-0.5ch)',\n }}\n />\n </Tooltip>\n );\n};\n","import React, { FC, MouseEvent, useState } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport { MRT_ColumnActionMenu } from '../menus/MRT_ColumnActionMenu';\nimport type { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellColumnActionsButton: FC<Props> = ({\n header,\n table,\n}) => {\n const {\n options: {\n icons: { MoreVertIcon },\n localization,\n muiTableHeadCellColumnActionsButtonProps,\n },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n event.preventDefault();\n setAnchorEl(event.currentTarget);\n };\n\n const mTableHeadCellColumnActionsButtonProps =\n muiTableHeadCellColumnActionsButtonProps instanceof Function\n ? muiTableHeadCellColumnActionsButtonProps({ column, table })\n : muiTableHeadCellColumnActionsButtonProps;\n\n const mcTableHeadCellColumnActionsButtonProps =\n columnDef.muiTableHeadCellColumnActionsButtonProps instanceof Function\n ? columnDef.muiTableHeadCellColumnActionsButtonProps({\n column,\n table,\n })\n : columnDef.muiTableHeadCellColumnActionsButtonProps;\n\n const iconButtonProps = {\n ...mTableHeadCellColumnActionsButtonProps,\n ...mcTableHeadCellColumnActionsButtonProps,\n };\n\n return (\n <>\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n placement=\"top\"\n title={localization.columnActions}\n >\n <IconButton\n aria-label={localization.columnActions}\n onClick={handleClick}\n size=\"small\"\n {...iconButtonProps}\n sx={{\n height: '2rem',\n mt: '-0.2rem',\n opacity: 0.5,\n transition: 'opacity 0.2s',\n width: '2rem',\n '&:hover': {\n opacity: 1,\n },\n ...iconButtonProps.sx,\n }}\n >\n <MoreVertIcon />\n </IconButton>\n </Tooltip>\n <MRT_ColumnActionMenu\n anchorEl={anchorEl}\n header={header}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </>\n );\n};\n","import React, { FC, ReactNode, Ref } from 'react';\nimport { Box, TableCell, Theme, alpha, lighten } from '@mui/material';\nimport { MRT_TableHeadCellFilterContainer } from './MRT_TableHeadCellFilterContainer';\nimport { MRT_TableHeadCellFilterLabel } from './MRT_TableHeadCellFilterLabel';\nimport { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';\nimport { MRT_TableHeadCellResizeHandle } from './MRT_TableHeadCellResizeHandle';\nimport { MRT_TableHeadCellSortLabel } from './MRT_TableHeadCellSortLabel';\nimport { MRT_TableHeadCellColumnActionsButton } from './MRT_TableHeadCellColumnActionsButton';\nimport type { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n dragRef?: Ref<HTMLButtonElement>;\n dropRef?: Ref<HTMLDivElement>;\n header: MRT_Header;\n table: MRT_TableInstance;\n isDragging?: boolean;\n previewRef?: Ref<HTMLTableCellElement>;\n}\n\nexport const MRT_TableHeadCell: FC<Props> = ({\n dragRef,\n dropRef,\n header,\n table,\n isDragging,\n previewRef,\n}) => {\n const {\n getState,\n options: {\n enableColumnActions,\n enableColumnOrdering,\n enableColumnResizing,\n enableGrouping,\n enableMultiSort,\n muiTableHeadCellProps,\n },\n } = table;\n const { density, showFilters } = getState();\n const { column } = header;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const mTableHeadCellProps =\n muiTableHeadCellProps instanceof Function\n ? muiTableHeadCellProps({ column, table })\n : muiTableHeadCellProps;\n\n const mcTableHeadCellProps =\n columnDef.muiTableHeadCellProps instanceof Function\n ? columnDef.muiTableHeadCellProps({ column, table })\n : columnDef.muiTableHeadCellProps;\n\n const tableCellProps = {\n ...mTableHeadCellProps,\n ...mcTableHeadCellProps,\n };\n\n const headerElement = ((columnDef?.Header instanceof Function\n ? columnDef?.Header?.({\n header,\n table,\n })\n : columnDef?.Header) ?? columnDef.header) as ReactNode;\n\n const getIsLastLeftPinnedColumn = () => {\n return (\n column.getIsPinned() === 'left' &&\n table.getLeftLeafHeaders().length - 1 === column.getPinnedIndex()\n );\n };\n\n const getIsFirstRightPinnedColumn = () => {\n return column.getIsPinned() === 'right' && column.getPinnedIndex() === 0;\n };\n\n const getTotalRight = () => {\n return (\n (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150\n );\n };\n\n return (\n <TableCell\n align={columnDefType === 'group' ? 'center' : 'left'}\n colSpan={header.colSpan}\n {...tableCellProps}\n ref={\n columnDefType === 'data' && enableColumnOrdering ? dropRef : undefined\n }\n sx={(theme: Theme) => ({\n backgroundColor:\n column.getIsPinned() && columnDefType !== 'group'\n ? alpha(lighten(theme.palette.background.default, 0.04), 0.95)\n : 'inherit',\n backgroundImage: 'inherit',\n boxShadow: getIsLastLeftPinnedColumn()\n ? `4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`\n : getIsFirstRightPinnedColumn()\n ? `-4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`\n : undefined,\n fontWeight: 'bold',\n height: '100%',\n left:\n column.getIsPinned() === 'left'\n ? `${column.getStart('left')}px`\n : undefined,\n overflow: 'visible',\n p:\n density === 'compact'\n ? columnDefType === 'display'\n ? '0 0.5rem'\n : '0.5rem'\n : density === 'comfortable'\n ? columnDefType === 'display'\n ? '0.5rem 0.75rem'\n : '1rem'\n : columnDefType === 'display'\n ? '1rem 1.25rem'\n : '1.5rem',\n pb: columnDefType === 'display' ? 0 : undefined,\n position:\n column.getIsPinned() && columnDefType !== 'group'\n ? 'sticky'\n : undefined,\n pt:\n columnDefType !== 'data'\n ? 0\n : density === 'compact'\n ? '0.25'\n : density === 'comfortable'\n ? '.75rem'\n : '1.25rem',\n right:\n column.getIsPinned() === 'right' ? `${getTotalRight()}px` : undefined,\n transition: `all ${enableColumnResizing ? 0 : '0.2s'} ease-in-out`,\n userSelect: enableMultiSort && column.getCanSort() ? 'none' : undefined,\n verticalAlign:\n columnDefType === 'display' && showFilters ? 'center' : 'text-top',\n zIndex: column.getIsResizing()\n ? 3\n : column.getIsPinned() && columnDefType !== 'group'\n ? 2\n : 1,\n ...(tableCellProps?.sx as any),\n maxWidth: `min(${column.getSize()}px, fit-content)`,\n minWidth: `max(${column.getSize()}px, ${columnDef.minSize ?? 30}px)`,\n width: header.getSize(),\n })}\n >\n {header.isPlaceholder ? null : columnDefType === 'display' ? (\n headerElement\n ) : (\n <Box\n ref={previewRef}\n sx={{\n alignItems: 'flex-start',\n display: 'flex',\n justifyContent:\n columnDefType === 'group' ? 'center' : 'space-between',\n opacity: isDragging ? 0.5 : 1,\n position: 'relative',\n width: '100%',\n }}\n >\n <Box\n onClick={column.getToggleSortingHandler()}\n sx={{\n alignItems: 'center',\n cursor:\n column.getCanSort() && columnDefType !== 'group'\n ? 'pointer'\n : undefined,\n display: 'flex',\n flexWrap: 'nowrap',\n whiteSpace:\n (columnDef.header?.length ?? 0) < 24 ? 'nowrap' : 'normal',\n }}\n >\n {headerElement}\n {columnDefType === 'data' && column.getCanSort() && (\n <MRT_TableHeadCellSortLabel header={header} table={table} />\n )}\n {columnDefType === 'data' && column.getCanFilter() && (\n <MRT_TableHeadCellFilterLabel header={header} table={table} />\n )}\n </Box>\n <Box sx={{ whiteSpace: 'nowrap' }}>\n {columnDefType === 'data' &&\n ((enableColumnOrdering &&\n columnDef.enableColumnOrdering !== false) ||\n (enableGrouping && columnDef.enableGrouping !== false)) && (\n <MRT_GrabHandleButton\n ref={dragRef as Ref<HTMLButtonElement>}\n table={table}\n />\n )}\n {(enableColumnActions || columnDef.enableColumnActions) &&\n columnDef.enableColumnActions !== false &&\n columnDefType !== 'group' && (\n <MRT_TableHeadCellColumnActionsButton\n header={header}\n table={table}\n />\n )}\n </Box>\n {column.getCanResize() && (\n <MRT_TableHeadCellResizeHandle header={header} table={table} />\n )}\n </Box>\n )}\n {columnDefType === 'data' && column.getCanFilter() && (\n <MRT_TableHeadCellFilterContainer header={header} table={table} />\n )}\n </TableCell>\n );\n};\n","import React, { FC } from 'react';\nimport { useDrag, useDrop } from 'react-dnd';\nimport { MRT_TableHeadCell } from './MRT_TableHeadCell';\nimport type { MRT_Column, MRT_Header, MRT_TableInstance } from '..';\nimport { reorderColumn } from '../utils';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_DraggableTableHeadCell: FC<Props> = ({ header, table }) => {\n const { getState, setColumnOrder } = table;\n const { columnOrder } = getState();\n const { column } = header;\n\n const [, dropRef] = useDrop({\n accept: 'column',\n drop: (movingColumn: MRT_Column) => {\n const newColumnOrder = reorderColumn(movingColumn, column, columnOrder);\n setColumnOrder(newColumnOrder);\n },\n });\n\n const [{ isDragging }, dragRef, previewRef] = useDrag({\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n item: () => column,\n type: 'column',\n });\n\n return (\n <MRT_TableHeadCell\n dragRef={dragRef}\n dropRef={dropRef}\n header={header}\n isDragging={isDragging}\n previewRef={previewRef}\n table={table}\n />\n );\n};\n","import React, { FC } from 'react';\nimport { alpha, lighten, TableRow } from '@mui/material';\nimport { MRT_TableHeadCell } from './MRT_TableHeadCell';\nimport { MRT_DraggableTableHeadCell } from './MRT_DraggableTableHeadCell';\nimport type { MRT_Header, MRT_HeaderGroup, MRT_TableInstance } from '..';\n\ninterface Props {\n headerGroup: MRT_HeaderGroup;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadRow: FC<Props> = ({ headerGroup, table }) => {\n const {\n options: { enableColumnOrdering, enableGrouping, muiTableHeadRowProps },\n } = table;\n\n const tableRowProps =\n muiTableHeadRowProps instanceof Function\n ? muiTableHeadRowProps({ headerGroup, table })\n : muiTableHeadRowProps;\n\n return (\n <TableRow\n {...tableRowProps}\n sx={(theme) => ({\n boxShadow: `4px 0 8px ${alpha(theme.palette.common.black, 0.1)}`,\n backgroundColor: lighten(theme.palette.background.default, 0.04),\n ...(tableRowProps?.sx as any),\n })}\n >\n {headerGroup.headers.map((header: MRT_Header, index) =>\n enableColumnOrdering || enableGrouping ? (\n <MRT_DraggableTableHeadCell\n header={header}\n key={header.id || index}\n table={table}\n />\n ) : (\n <MRT_TableHeadCell\n header={header}\n key={header.id || index}\n table={table}\n />\n ),\n )}\n </TableRow>\n );\n};\n","import React, { FC } from 'react';\nimport { TableHead } from '@mui/material';\nimport { MRT_TableHeadRow } from './MRT_TableHeadRow';\nimport type { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHead: FC<Props> = ({ table }) => {\n const {\n getHeaderGroups,\n options: { muiTableHeadProps },\n } = table;\n\n const tableHeadProps =\n muiTableHeadProps instanceof Function\n ? muiTableHeadProps({ table })\n : muiTableHeadProps;\n\n return (\n <TableHead {...tableHeadProps}>\n {getHeaderGroups().map((headerGroup) => (\n <MRT_TableHeadRow\n headerGroup={headerGroup as any}\n key={headerGroup.id}\n table={table}\n />\n ))}\n </TableHead>\n );\n};\n","var props = ['bottom', 'height', 'left', 'right', 'top', 'width'];\n\nvar rectChanged = function rectChanged(a, b) {\n if (a === void 0) {\n a = {};\n }\n\n if (b === void 0) {\n b = {};\n }\n\n return props.some(function (prop) {\n return a[prop] !== b[prop];\n });\n};\n\nvar observedNodes =\n/*#__PURE__*/\nnew Map();\nvar rafId;\n\nvar run = function run() {\n var changedStates = [];\n observedNodes.forEach(function (state, node) {\n var newRect = node.getBoundingClientRect();\n\n if (rectChanged(newRect, state.rect)) {\n state.rect = newRect;\n changedStates.push(state);\n }\n });\n changedStates.forEach(function (state) {\n state.callbacks.forEach(function (cb) {\n return cb(state.rect);\n });\n });\n rafId = window.requestAnimationFrame(run);\n};\n\nfunction observeRect(node, cb) {\n return {\n observe: function observe() {\n var wasEmpty = observedNodes.size === 0;\n\n if (observedNodes.has(node)) {\n observedNodes.get(node).callbacks.push(cb);\n } else {\n observedNodes.set(node, {\n rect: undefined,\n hasRectChanged: false,\n callbacks: [cb]\n });\n }\n\n if (wasEmpty) run();\n },\n unobserve: function unobserve() {\n var state = observedNodes.get(node);\n\n if (state) {\n // Remove the callback\n var index = state.callbacks.indexOf(cb);\n if (index >= 0) state.callbacks.splice(index, 1); // Remove the node reference\n\n if (!state.callbacks.length) observedNodes[\"delete\"](node); // Stop the loop\n\n if (!observedNodes.size) cancelAnimationFrame(rafId);\n }\n }\n };\n}\n\nexport default observeRect;\n//# sourceMappingURL=observe-rect.esm.js.map\n","import React from 'react'\n\nexport default typeof window !== 'undefined'\n ? React.useLayoutEffect\n : React.useEffect\n","import React from 'react'\nimport observeRect from '@reach/observe-rect'\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect'\n\nexport default function useRect(\n nodeRef,\n initialRect = { width: 0, height: 0 }\n) {\n const [element, setElement] = React.useState(nodeRef.current)\n const [rect, dispatch] = React.useReducer(rectReducer, initialRect)\n const initialRectSet = React.useRef(false)\n\n useIsomorphicLayoutEffect(() => {\n if (nodeRef.current !== element) {\n setElement(nodeRef.current)\n }\n })\n\n useIsomorphicLayoutEffect(() => {\n if (element && !initialRectSet.current) {\n initialRectSet.current = true\n const rect = element.getBoundingClientRect()\n dispatch({ rect })\n }\n }, [element])\n\n React.useEffect(() => {\n if (!element) {\n return\n }\n\n const observer = observeRect(element, rect => {\n dispatch({ rect })\n })\n\n observer.observe()\n\n return () => {\n observer.unobserve()\n }\n }, [element])\n\n return rect\n}\n\nfunction rectReducer(state, action) {\n const rect = action.rect\n if (state.height !== rect.height || state.width !== rect.width) {\n return rect\n }\n return state\n}\n","import React from 'react'\nimport useRect from './useRect'\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect'\n\nconst defaultEstimateSize = () => 50\n\nconst defaultKeyExtractor = index => index\n\nconst defaultMeasureSize = (el, horizontal) => {\n const key = horizontal ? 'offsetWidth' : 'offsetHeight'\n\n return el[key]\n}\n\nexport const defaultRangeExtractor = range => {\n const start = Math.max(range.start - range.overscan, 0)\n const end = Math.min(range.end + range.overscan, range.size - 1)\n\n const arr = []\n\n for (let i = start; i <= end; i++) {\n arr.push(i)\n }\n\n return arr\n}\n\nexport function useVirtual({\n size = 0,\n estimateSize = defaultEstimateSize,\n overscan = 1,\n paddingStart = 0,\n paddingEnd = 0,\n parentRef,\n horizontal,\n scrollToFn,\n useObserver,\n initialRect,\n onScrollElement,\n scrollOffsetFn,\n keyExtractor = defaultKeyExtractor,\n measureSize = defaultMeasureSize,\n rangeExtractor = defaultRangeExtractor,\n}) {\n const sizeKey = horizontal ? 'width' : 'height'\n const scrollKey = horizontal ? 'scrollLeft' : 'scrollTop'\n\n const latestRef = React.useRef({\n scrollOffset: 0,\n measurements: [],\n })\n\n const [scrollOffset, setScrollOffset] = React.useState(0)\n latestRef.current.scrollOffset = scrollOffset\n\n const useMeasureParent = useObserver || useRect\n\n const { [sizeKey]: outerSize } = useMeasureParent(parentRef, initialRect)\n\n latestRef.current.outerSize = outerSize\n\n const defaultScrollToFn = React.useCallback(\n offset => {\n if (parentRef.current) {\n parentRef.current[scrollKey] = offset\n }\n },\n [parentRef, scrollKey]\n )\n\n const resolvedScrollToFn = scrollToFn || defaultScrollToFn\n\n scrollToFn = React.useCallback(\n offset => {\n resolvedScrollToFn(offset, defaultScrollToFn)\n },\n [defaultScrollToFn, resolvedScrollToFn]\n )\n\n const [measuredCache, setMeasuredCache] = React.useState({})\n\n const measure = React.useCallback(() => setMeasuredCache({}), [])\n\n const pendingMeasuredCacheIndexesRef = React.useRef([])\n\n const measurements = React.useMemo(() => {\n const min =\n pendingMeasuredCacheIndexesRef.current.length > 0\n ? Math.min(...pendingMeasuredCacheIndexesRef.current)\n : 0\n pendingMeasuredCacheIndexesRef.current = []\n\n const measurements = latestRef.current.measurements.slice(0, min)\n\n for (let i = min; i < size; i++) {\n const key = keyExtractor(i)\n const measuredSize = measuredCache[key]\n const start = measurements[i - 1] ? measurements[i - 1].end : paddingStart\n const size =\n typeof measuredSize === 'number' ? measuredSize : estimateSize(i)\n const end = start + size\n measurements[i] = { index: i, start, size, end, key }\n }\n return measurements\n }, [estimateSize, measuredCache, paddingStart, size, keyExtractor])\n\n const totalSize = (measurements[size - 1]?.end || paddingStart) + paddingEnd\n\n latestRef.current.measurements = measurements\n latestRef.current.totalSize = totalSize\n\n const element = onScrollElement ? onScrollElement.current : parentRef.current\n\n const scrollOffsetFnRef = React.useRef(scrollOffsetFn)\n scrollOffsetFnRef.current = scrollOffsetFn\n\n useIsomorphicLayoutEffect(() => {\n if (!element) {\n setScrollOffset(0)\n\n return\n }\n\n const onScroll = event => {\n const offset = scrollOffsetFnRef.current\n ? scrollOffsetFnRef.current(event)\n : element[scrollKey]\n\n setScrollOffset(offset)\n }\n\n onScroll()\n\n element.addEventListener('scroll', onScroll, {\n capture: false,\n passive: true,\n })\n\n return () => {\n element.removeEventListener('scroll', onScroll)\n }\n }, [element, scrollKey])\n\n const { start, end } = calculateRange(latestRef.current)\n\n const indexes = React.useMemo(\n () =>\n rangeExtractor({\n start,\n end,\n overscan,\n size: measurements.length,\n }),\n [start, end, overscan, measurements.length, rangeExtractor]\n )\n\n const measureSizeRef = React.useRef(measureSize)\n measureSizeRef.current = measureSize\n\n const virtualItems = React.useMemo(() => {\n const virtualItems = []\n\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k]\n const measurement = measurements[i]\n\n const item = {\n ...measurement,\n measureRef: el => {\n if (el) {\n const measuredSize = measureSizeRef.current(el, horizontal)\n\n if (measuredSize !== item.size) {\n const { scrollOffset } = latestRef.current\n\n if (item.start < scrollOffset) {\n defaultScrollToFn(scrollOffset + (measuredSize - item.size))\n }\n\n pendingMeasuredCacheIndexesRef.current.push(i)\n\n setMeasuredCache(old => ({\n ...old,\n [item.key]: measuredSize,\n }))\n }\n }\n },\n }\n\n virtualItems.push(item)\n }\n\n return virtualItems\n }, [indexes, defaultScrollToFn, horizontal, measurements])\n\n const mountedRef = React.useRef(false)\n\n useIsomorphicLayoutEffect(() => {\n if (mountedRef.current) {\n setMeasuredCache({})\n }\n mountedRef.current = true\n }, [estimateSize])\n\n const scrollToOffset = React.useCallback(\n (toOffset, { align = 'start' } = {}) => {\n const { scrollOffset, outerSize } = latestRef.current\n\n if (align === 'auto') {\n if (toOffset <= scrollOffset) {\n align = 'start'\n } else if (toOffset >= scrollOffset + outerSize) {\n align = 'end'\n } else {\n align = 'start'\n }\n }\n\n if (align === 'start') {\n scrollToFn(toOffset)\n } else if (align === 'end') {\n scrollToFn(toOffset - outerSize)\n } else if (align === 'center') {\n scrollToFn(toOffset - outerSize / 2)\n }\n },\n [scrollToFn]\n )\n\n const tryScrollToIndex = React.useCallback(\n (index, { align = 'auto', ...rest } = {}) => {\n const { measurements, scrollOffset, outerSize } = latestRef.current\n\n const measurement = measurements[Math.max(0, Math.min(index, size - 1))]\n\n if (!measurement) {\n return\n }\n\n if (align === 'auto') {\n if (measurement.end >= scrollOffset + outerSize) {\n align = 'end'\n } else if (measurement.start <= scrollOffset) {\n align = 'start'\n } else {\n return\n }\n }\n\n const toOffset =\n align === 'center'\n ? measurement.start + measurement.size / 2\n : align === 'end'\n ? measurement.end\n : measurement.start\n\n scrollToOffset(toOffset, { align, ...rest })\n },\n [scrollToOffset, size]\n )\n\n const scrollToIndex = React.useCallback(\n (...args) => {\n // We do a double request here because of\n // dynamic sizes which can cause offset shift\n // and end up in the wrong spot. Unfortunately,\n // we can't know about those dynamic sizes until\n // we try and render them. So double down!\n tryScrollToIndex(...args)\n requestAnimationFrame(() => {\n tryScrollToIndex(...args)\n })\n },\n [tryScrollToIndex]\n )\n\n return {\n virtualItems,\n totalSize,\n scrollToOffset,\n scrollToIndex,\n measure,\n }\n}\n\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n let middle = ((low + high) / 2) | 0\n let currentValue = getCurrentValue(middle)\n\n if (currentValue < value) {\n low = middle + 1\n } else if (currentValue > value) {\n high = middle - 1\n } else {\n return middle\n }\n }\n\n if (low > 0) {\n return low - 1\n } else {\n return 0\n }\n}\n\nfunction calculateRange({ measurements, outerSize, scrollOffset }) {\n const size = measurements.length - 1\n const getOffset = index => measurements[index].start\n\n let start = findNearestBinarySearch(0, size, getOffset, scrollOffset)\n let end = start\n\n while (end < size && measurements[end].end < scrollOffset + outerSize) {\n end++\n }\n\n return { start, end }\n}\n","import React, {\n ChangeEvent,\n FC,\n FocusEvent,\n MouseEvent,\n useState,\n} from 'react';\nimport { TextField } from '@mui/material';\nimport type { MRT_Cell, MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n cell: MRT_Cell;\n table: MRT_TableInstance;\n}\n\nexport const MRT_EditCellTextField: FC<Props> = ({ cell, table }) => {\n const {\n getState,\n options: {\n tableId,\n enableEditing,\n muiTableBodyCellEditTextFieldProps,\n onCellEditBlur,\n onCellEditChange,\n },\n setCurrentEditingCell,\n setCurrentEditingRow,\n } = table;\n const { column, row } = cell;\n const { columnDef } = column;\n\n const [value, setValue] = useState(cell.getValue());\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setValue(event.target.value);\n columnDef.onCellEditChange?.({ event, cell, table });\n onCellEditChange?.({ event, cell, table });\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n if (getState().currentEditingRow) {\n if (!row._valuesCache) row._valuesCache = {};\n (row._valuesCache as Record<string, any>)[column.id] = value;\n setCurrentEditingRow({ ...getState().currentEditingRow } as MRT_Row);\n }\n setCurrentEditingCell(null);\n columnDef.onCellEditBlur?.({ event, cell, table });\n onCellEditBlur?.({ event, cell, table });\n };\n\n const mTableBodyCellEditTextFieldProps =\n muiTableBodyCellEditTextFieldProps instanceof Function\n ? muiTableBodyCellEditTextFieldProps({ cell, table })\n : muiTableBodyCellEditTextFieldProps;\n\n const mcTableBodyCellEditTextFieldProps =\n columnDef.muiTableBodyCellEditTextFieldProps instanceof Function\n ? columnDef.muiTableBodyCellEditTextFieldProps({\n cell,\n table,\n })\n : columnDef.muiTableBodyCellEditTextFieldProps;\n\n const textFieldProps = {\n ...mTableBodyCellEditTextFieldProps,\n ...mcTableBodyCellEditTextFieldProps,\n };\n\n if (enableEditing && columnDef.enableEditing !== false && columnDef.Edit) {\n return <>{columnDef.Edit?.({ cell, table })}</>;\n }\n\n return (\n <TextField\n id={`mrt-${tableId}-edit-cell-text-field-${cell.id}`}\n margin=\"dense\"\n onBlur={handleBlur}\n onChange={handleChange}\n onClick={(e: MouseEvent<HTMLInputElement>) => e.stopPropagation()}\n placeholder={columnDef.header}\n value={value}\n variant=\"standard\"\n {...textFieldProps}\n />\n );\n};\n","import React, { FC, ReactNode, useState } from 'react';\nimport { Button, Tooltip } from '@mui/material';\nimport { MRT_Cell, MRT_TableInstance } from '..';\n\ninterface Props {\n cell: MRT_Cell;\n children: ReactNode;\n table: MRT_TableInstance;\n}\n\nexport const MRT_CopyButton: FC<Props> = ({ cell, children, table }) => {\n const {\n options: { localization, muiTableBodyCellCopyButtonProps },\n } = table;\n const { column } = cell;\n const { columnDef } = column;\n\n const [copied, setCopied] = useState(false);\n\n const handleCopy = (text: unknown) => {\n navigator.clipboard.writeText(text as string);\n setCopied(true);\n setTimeout(() => setCopied(false), 4000);\n };\n\n const mTableBodyCellCopyButtonProps =\n muiTableBodyCellCopyButtonProps instanceof Function\n ? muiTableBodyCellCopyButtonProps({ cell, table })\n : muiTableBodyCellCopyButtonProps;\n\n const mcTableBodyCellCopyButtonProps =\n columnDef.muiTableBodyCellCopyButtonProps instanceof Function\n ? columnDef.muiTableBodyCellCopyButtonProps({\n cell,\n table,\n })\n : columnDef.muiTableBodyCellCopyButtonProps;\n\n const buttonProps = {\n ...mTableBodyCellCopyButtonProps,\n ...mcTableBodyCellCopyButtonProps,\n };\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n placement=\"top\"\n title={copied ? localization.copiedToClipboard : localization.clickToCopy}\n >\n <Button\n aria-label={localization.clickToCopy}\n onClick={() => handleCopy(cell.getValue())}\n size=\"small\"\n type=\"button\"\n variant=\"text\"\n {...buttonProps}\n sx={{\n backgroundColor: 'transparent',\n border: 'none',\n color: 'inherit',\n cursor: 'copy',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n letterSpacing: 'inherit',\n m: '-0.25rem',\n minWidth: 'unset',\n textAlign: 'inherit',\n textTransform: 'inherit',\n ...buttonProps?.sx,\n }}\n >\n {children}\n </Button>\n </Tooltip>\n );\n};\n","import React, { FC, MouseEvent, useMemo } from 'react';\nimport { useDrop } from 'react-dnd';\nimport { alpha, darken, lighten, Skeleton, TableCell } from '@mui/material';\nimport { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';\nimport { MRT_CopyButton } from '../buttons/MRT_CopyButton';\nimport { reorderColumn } from '../utils';\nimport type { MRT_Cell, MRT_Column, MRT_TableInstance } from '..';\n\ninterface Props {\n cell: MRT_Cell;\n enableHover?: boolean;\n rowIndex: number;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableBodyCell: FC<Props> = ({\n cell,\n enableHover,\n rowIndex,\n table,\n}) => {\n const {\n getState,\n options: {\n editingMode,\n enableClickToCopy,\n enableColumnOrdering,\n enableEditing,\n enableRowNumbers,\n muiTableBodyCellProps,\n muiTableBodyCellSkeletonProps,\n rowNumberMode,\n tableId,\n },\n setColumnOrder,\n setCurrentEditingCell,\n } = table;\n const {\n columnOrder,\n currentEditingCell,\n currentEditingRow,\n density,\n isLoading,\n showSkeletons,\n } = getState();\n const { column, row } = cell;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const [, dropRef] = useDrop({\n accept: 'column',\n drop: (movingColumn: MRT_Column) => {\n const newColumnOrder = reorderColumn(movingColumn, column, columnOrder);\n setColumnOrder(newColumnOrder);\n },\n });\n\n const mTableCellBodyProps =\n muiTableBodyCellProps instanceof Function\n ? muiTableBodyCellProps({ cell, table })\n : muiTableBodyCellProps;\n\n const mcTableCellBodyProps =\n columnDef.muiTableBodyCellProps instanceof Function\n ? columnDef.muiTableBodyCellProps({ cell, table })\n : columnDef.muiTableBodyCellProps;\n\n const tableCellProps = {\n ...mTableCellBodyProps,\n ...mcTableCellBodyProps,\n };\n\n const skeletonWidth = useMemo(\n () =>\n columnDefType === 'display'\n ? column.getSize() / 2\n : Math.random() * (column.getSize() - column.getSize() / 3) +\n column.getSize() / 3,\n [],\n );\n\n const isEditable =\n (enableEditing || columnDef.enableEditing) &&\n columnDef.enableEditing !== false;\n\n const isEditing =\n isEditable &&\n (editingMode === 'table' ||\n currentEditingRow?.id === row.id ||\n currentEditingCell?.id === cell.id);\n\n const handleDoubleClick = (_event: MouseEvent<HTMLTableCellElement>) => {\n if (\n (enableEditing || columnDef.enableEditing) &&\n columnDef.enableEditing !== false &&\n editingMode === 'cell'\n ) {\n setCurrentEditingCell(cell);\n setTimeout(() => {\n const textField = document.getElementById(\n `mrt-${tableId}-edit-cell-text-field-${cell.id}`,\n ) as HTMLInputElement;\n if (textField) {\n textField.focus();\n textField.select();\n }\n }, 200);\n }\n };\n\n const getIsLastLeftPinnedColumn = () => {\n return (\n column.getIsPinned() === 'left' &&\n table.getLeftLeafHeaders().length - 1 === column.getPinnedIndex()\n );\n };\n\n const getIsFirstRightPinnedColumn = () => {\n return column.getIsPinned() === 'right' && column.getPinnedIndex() === 0;\n };\n\n const getTotalRight = () => {\n return (\n (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150\n );\n };\n\n return (\n <TableCell\n onDoubleClick={handleDoubleClick}\n {...tableCellProps}\n ref={\n columnDefType === 'data' && enableColumnOrdering ? dropRef : undefined\n }\n sx={(theme) => ({\n backgroundColor: column.getIsPinned()\n ? alpha(lighten(theme.palette.background.default, 0.04), 0.95)\n : undefined,\n boxShadow: getIsLastLeftPinnedColumn()\n ? `4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`\n : getIsFirstRightPinnedColumn()\n ? `-4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`\n : undefined,\n cursor: isEditable && editingMode === 'cell' ? 'pointer' : 'text',\n left:\n column.getIsPinned() === 'left'\n ? `${column.getStart('left')}px`\n : undefined,\n overflow: 'hidden',\n p:\n density === 'compact'\n ? columnDefType === 'display'\n ? '0 0.5rem'\n : '0.5rem'\n : density === 'comfortable'\n ? columnDefType === 'display'\n ? '0.5rem 0.75rem'\n : '1rem'\n : columnDefType === 'display'\n ? '1rem 1.25rem'\n : '1.5rem',\n pl:\n column.id === 'mrt-expand'\n ? `${\n row.depth +\n (density === 'compact'\n ? 0.5\n : density === 'comfortable'\n ? 0.75\n : 1.25)\n }rem`\n : undefined,\n position: column.getIsPinned() ? 'sticky' : 'relative',\n right:\n column.getIsPinned() === 'right' ? `${getTotalRight()}px` : undefined,\n textOverflow: columnDefType !== 'display' ? 'ellipsis' : undefined,\n transition: 'all 0.2s ease-in-out',\n whiteSpace: density === 'compact' ? 'nowrap' : 'normal',\n zIndex: column.getIsPinned() ? 1 : undefined,\n '&:hover': {\n backgroundColor:\n enableHover && enableEditing && editingMode !== 'row'\n ? theme.palette.mode === 'dark'\n ? `${lighten(\n theme.palette.background.default,\n 0.13,\n )} !important`\n : `${darken(theme.palette.background.default, 0.07)} !important`\n : undefined,\n },\n ...(tableCellProps?.sx as any),\n maxWidth: `min(${column.getSize()}px, fit-content)`,\n minWidth: `max(${column.getSize()}px, ${columnDef.minSize ?? 30}px)`,\n width: column.getSize(),\n })}\n >\n <>\n {cell.getIsPlaceholder() ? null : isLoading || showSkeletons ? (\n <Skeleton\n animation=\"wave\"\n height={20}\n width={skeletonWidth}\n {...muiTableBodyCellSkeletonProps}\n />\n ) : enableRowNumbers &&\n rowNumberMode === 'static' &&\n column.id === 'mrt-row-numbers' ? (\n rowIndex + 1\n ) : columnDefType === 'display' ? (\n columnDef.Cell?.({ cell, table })\n ) : isEditing ? (\n <MRT_EditCellTextField cell={cell} table={table} />\n ) : (enableClickToCopy || columnDef.enableClickToCopy) &&\n columnDef.enableClickToCopy !== false ? (\n <>\n <MRT_CopyButton cell={cell} table={table}>\n <>{columnDef?.Cell?.({ cell, table }) ?? cell.renderValue()}</>\n </MRT_CopyButton>\n {cell.getIsGrouped() && <> ({row.subRows?.length})</>}\n </>\n ) : (\n <>\n {columnDef?.Cell?.({ cell, table }) ?? cell.renderValue()}\n {cell.getIsGrouped() && <> ({row.subRows?.length ?? ''})</>}\n </>\n )}\n </>\n </TableCell>\n );\n};\n","import React, { FC } from 'react';\nimport { Collapse, TableCell, TableRow } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableDetailPanel: FC<Props> = ({ row, table }) => {\n const {\n getVisibleLeafColumns,\n options: {\n muiTableBodyRowProps,\n muiTableDetailPanelProps,\n renderDetailPanel,\n },\n } = table;\n\n const tableRowProps =\n muiTableBodyRowProps instanceof Function\n ? muiTableBodyRowProps({ row, table })\n : muiTableBodyRowProps;\n\n const tableCellProps =\n muiTableDetailPanelProps instanceof Function\n ? muiTableDetailPanelProps({ row, table })\n : muiTableDetailPanelProps;\n\n return (\n <TableRow {...tableRowProps}>\n <TableCell\n colSpan={getVisibleLeafColumns().length}\n {...tableCellProps}\n sx={{\n borderBottom: !row.getIsExpanded() ? 'none' : undefined,\n pb: row.getIsExpanded() ? '1rem' : 0,\n pt: row.getIsExpanded() ? '1rem' : 0,\n transition: 'all 0.2s ease-in-out',\n width: `${table.getTotalSize()}px`,\n ...tableCellProps?.sx,\n }}\n >\n {renderDetailPanel && (\n <Collapse in={row.getIsExpanded()}>\n {renderDetailPanel({ row, table })}\n </Collapse>\n )}\n </TableCell>\n </TableRow>\n );\n};\n","import React, { FC } from 'react';\nimport { darken, lighten, TableRow } from '@mui/material';\nimport { MRT_TableBodyCell } from './MRT_TableBodyCell';\nimport { MRT_TableDetailPanel } from './MRT_TableDetailPanel';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n rowIndex: number;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableBodyRow: FC<Props> = ({ row, rowIndex, table }) => {\n const {\n getIsSomeColumnsPinned,\n options: { muiTableBodyRowProps, renderDetailPanel },\n } = table;\n\n const tableRowProps =\n muiTableBodyRowProps instanceof Function\n ? muiTableBodyRowProps({ row, table })\n : muiTableBodyRowProps;\n\n return (\n <>\n <TableRow\n hover\n selected={row.getIsSelected()}\n {...tableRowProps}\n sx={(theme) => ({\n backgroundColor: lighten(theme.palette.background.default, 0.06),\n transition: 'all 0.2s ease-in-out',\n '&:hover td': {\n backgroundColor:\n tableRowProps?.hover !== false && getIsSomeColumnsPinned()\n ? theme.palette.mode === 'dark'\n ? `${lighten(theme.palette.background.default, 0.12)}`\n : `${darken(theme.palette.background.default, 0.05)}`\n : undefined,\n },\n ...(tableRowProps?.sx as any),\n })}\n >\n {row?.getVisibleCells()?.map?.((cell) => (\n <MRT_TableBodyCell\n cell={cell}\n key={cell.id}\n enableHover={tableRowProps?.hover !== false}\n rowIndex={rowIndex}\n table={table}\n />\n ))}\n </TableRow>\n {renderDetailPanel && !row.getIsGrouped() && (\n <MRT_TableDetailPanel row={row} table={table} />\n )}\n </>\n );\n};\n","import React, { FC, RefObject, useMemo } from 'react';\nimport { useVirtual } from 'react-virtual';\nimport { TableBody } from '@mui/material';\nimport { MRT_TableBodyRow } from './MRT_TableBodyRow';\nimport { rankGlobalFuzzy } from '../sortingFns';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n tableContainerRef: RefObject<HTMLDivElement>;\n}\n\nexport const MRT_TableBody: FC<Props> = ({ table, tableContainerRef }) => {\n const {\n getRowModel,\n getPrePaginationRowModel,\n getState,\n options: {\n enableGlobalFilterRankedResults,\n enablePagination,\n enableRowVirtualization,\n muiTableBodyProps,\n virtualizerProps,\n },\n } = table;\n const { density, globalFilter, pagination, sorting } = getState();\n\n const tableBodyProps =\n muiTableBodyProps instanceof Function\n ? muiTableBodyProps({ table })\n : muiTableBodyProps;\n\n const getIsSomeColumnsSorted = () => {\n return Object.values(sorting).some(Boolean);\n };\n\n const rows = useMemo(() => {\n if (\n enableGlobalFilterRankedResults &&\n globalFilter &&\n !getIsSomeColumnsSorted()\n ) {\n const rankedRows = getPrePaginationRowModel().rows.sort((a, b) =>\n rankGlobalFuzzy(a, b),\n );\n if (enablePagination) {\n return rankedRows.slice(0, pagination.pageSize);\n }\n return rankedRows;\n }\n\n return enablePagination\n ? getRowModel().rows\n : getPrePaginationRowModel().rows;\n }, [\n enableGlobalFilterRankedResults,\n (enableGlobalFilterRankedResults && globalFilter) || !enablePagination\n ? getPrePaginationRowModel().rows\n : getRowModel().rows,\n globalFilter,\n ]);\n\n const rowVirtualizer = enableRowVirtualization\n ? useVirtual({\n // estimateSize: () => (density === 'compact' ? 25 : 50),\n overscan: density === 'compact' ? 30 : 10,\n parentRef: tableContainerRef,\n size: rows.length,\n ...virtualizerProps,\n })\n : ({} as any);\n\n const virtualRows = enableRowVirtualization\n ? rowVirtualizer.virtualItems\n : [];\n\n let paddingTop = 0;\n let paddingBottom = 0;\n if (enableRowVirtualization) {\n paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0;\n paddingBottom =\n virtualRows.length > 0\n ? rowVirtualizer.totalSize - virtualRows[virtualRows.length - 1].end\n : 0;\n }\n\n return (\n <TableBody {...tableBodyProps}>\n {enableRowVirtualization && paddingTop > 0 && (\n <tr>\n <td style={{ height: `${paddingTop}px` }} />\n </tr>\n )}\n {(enableRowVirtualization ? virtualRows : rows).map(\n (rowOrVirtualRow: any, rowIndex: number) => {\n const row = enableRowVirtualization\n ? (rows[rowOrVirtualRow.index] as MRT_Row)\n : (rowOrVirtualRow as MRT_Row);\n return (\n <MRT_TableBodyRow\n key={row.id}\n row={row}\n rowIndex={\n enableRowVirtualization ? rowOrVirtualRow.index : rowIndex\n }\n table={table}\n />\n );\n },\n )}\n {enableRowVirtualization && paddingBottom > 0 && (\n <tr>\n <td style={{ height: `${paddingBottom}px` }} />\n </tr>\n )}\n </TableBody>\n );\n};\n","import React, { FC } from 'react';\nimport { alpha, TableCell } from '@mui/material';\nimport type { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n footer: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableFooterCell: FC<Props> = ({ footer, table }) => {\n const {\n getState,\n options: { muiTableFooterCellProps, enableColumnResizing },\n } = table;\n const { density } = getState();\n const { column } = footer;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const mTableFooterCellProps =\n muiTableFooterCellProps instanceof Function\n ? muiTableFooterCellProps({ column, table })\n : muiTableFooterCellProps;\n\n const mcTableFooterCellProps =\n columnDef.muiTableFooterCellProps instanceof Function\n ? columnDef.muiTableFooterCellProps({ column, table })\n : columnDef.muiTableFooterCellProps;\n\n const tableCellProps = {\n ...mTableFooterCellProps,\n ...mcTableFooterCellProps,\n };\n\n return (\n <TableCell\n align={columnDefType === 'group' ? 'center' : 'left'}\n colSpan={footer.colSpan}\n variant=\"head\"\n {...tableCellProps}\n sx={(theme) => ({\n backgroundColor: theme.palette.background.default,\n backgroundImage: `linear-gradient(${alpha(\n theme.palette.common.white,\n 0.05,\n )},${alpha(theme.palette.common.white, 0.05)})`,\n fontWeight: 'bold',\n maxWidth: `${column.getSize()}px`,\n minWidth: `${column.getSize()}px`,\n p:\n density === 'compact'\n ? '0.5rem'\n : density === 'comfortable'\n ? '1rem'\n : '1.5rem',\n transition: `all ${enableColumnResizing ? '10ms' : '0.2s'} ease-in-out`,\n width: column.getSize(),\n verticalAlign: 'text-top',\n ...(tableCellProps?.sx as any),\n })}\n >\n <>\n {footer.isPlaceholder\n ? null\n : (columnDef.Footer instanceof Function\n ? columnDef.Footer?.({\n footer,\n table,\n })\n : columnDef.Footer) ??\n columnDef.footer ??\n null}\n </>\n </TableCell>\n );\n};\n","import React, { FC } from 'react';\nimport { TableRow } from '@mui/material';\nimport { MRT_TableFooterCell } from './MRT_TableFooterCell';\nimport type { MRT_Header, MRT_HeaderGroup, MRT_TableInstance } from '..';\n\ninterface Props {\n footerGroup: MRT_HeaderGroup;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableFooterRow: FC<Props> = ({ footerGroup, table }) => {\n const {\n options: { muiTableFooterRowProps },\n } = table;\n\n // if no content in row, skip row\n if (\n !footerGroup.headers?.some(\n (header) =>\n (typeof header.column.columnDef.footer === 'string' &&\n !!header.column.columnDef.footer) ||\n header.column.columnDef.Footer,\n )\n )\n return null;\n\n const tableRowProps =\n muiTableFooterRowProps instanceof Function\n ? muiTableFooterRowProps({ footerGroup, table })\n : muiTableFooterRowProps;\n\n return (\n <TableRow {...tableRowProps}>\n {footerGroup.headers.map((footer: MRT_Header) => (\n <MRT_TableFooterCell footer={footer} key={footer.id} table={table} />\n ))}\n </TableRow>\n );\n};\n","import React, { FC } from 'react';\nimport { TableFooter } from '@mui/material';\nimport { MRT_TableFooterRow } from './MRT_TableFooterRow';\nimport type { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableFooter: FC<Props> = ({ table }) => {\n const {\n getFooterGroups,\n options: { muiTableFooterProps },\n } = table;\n\n const tableFooterProps =\n muiTableFooterProps instanceof Function\n ? muiTableFooterProps({ table })\n : muiTableFooterProps;\n\n return (\n <TableFooter {...tableFooterProps}>\n {getFooterGroups().map((footerGroup) => (\n <MRT_TableFooterRow\n footerGroup={footerGroup as any}\n key={footerGroup.id}\n table={table}\n />\n ))}\n </TableFooter>\n );\n};\n","import React, { FC, RefObject } from 'react';\nimport { Table } from '@mui/material';\nimport { MRT_TableHead } from '../head/MRT_TableHead';\nimport { MRT_TableBody } from '../body/MRT_TableBody';\nimport { MRT_TableFooter } from '../footer/MRT_TableFooter';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n tableContainerRef: RefObject<HTMLDivElement>;\n table: MRT_TableInstance;\n}\n\nexport const MRT_Table: FC<Props> = ({ tableContainerRef, table }) => {\n const {\n getState,\n options: {\n enableColumnResizing,\n enableRowVirtualization,\n enableStickyHeader,\n enableTableFooter,\n enableTableHead,\n muiTableProps,\n },\n } = table;\n const { isFullScreen } = getState();\n\n const tableProps =\n muiTableProps instanceof Function\n ? muiTableProps({ table })\n : muiTableProps;\n\n return (\n <Table\n stickyHeader={\n enableStickyHeader || enableRowVirtualization || isFullScreen\n }\n {...tableProps}\n sx={{\n tableLayout:\n enableColumnResizing || enableRowVirtualization ? 'fixed' : 'auto',\n ...tableProps?.sx,\n }}\n >\n {enableTableHead && <MRT_TableHead table={table} />}\n <MRT_TableBody tableContainerRef={tableContainerRef} table={table} />\n {enableTableFooter && <MRT_TableFooter table={table} />}\n </Table>\n );\n};\n","import React, { FC, useEffect, useLayoutEffect, useState } from 'react';\nimport { TableContainer } from '@mui/material';\nimport { MRT_Table } from './MRT_Table';\nimport type { MRT_TableInstance } from '..';\n\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableContainer: FC<Props> = ({ table }) => {\n const {\n getState,\n options: {\n enableStickyHeader,\n enableRowVirtualization,\n muiTableContainerProps,\n tableId,\n },\n } = table;\n const { isFullScreen } = getState();\n\n const [totalToolbarHeight, setTotalToolbarHeight] = useState(0);\n\n const tableContainerProps =\n muiTableContainerProps instanceof Function\n ? muiTableContainerProps({ table })\n : muiTableContainerProps;\n\n useIsomorphicLayoutEffect(() => {\n const topToolbarHeight =\n typeof document !== 'undefined'\n ? document?.getElementById(`mrt-${tableId}-toolbar-top`)\n ?.offsetHeight ?? 0\n : 0;\n\n const bottomToolbarHeight =\n typeof document !== 'undefined'\n ? document?.getElementById(`mrt-${tableId}-toolbar-bottom`)\n ?.offsetHeight ?? 0\n : 0;\n\n setTotalToolbarHeight(topToolbarHeight + bottomToolbarHeight);\n });\n\n const tableContainerRef = React.useRef<HTMLDivElement>(null);\n\n return (\n <TableContainer\n {...tableContainerProps}\n ref={tableContainerRef}\n sx={{\n maxWidth: '100%',\n maxHeight:\n enableStickyHeader || enableRowVirtualization\n ? `clamp(350px, calc(100vh - ${totalToolbarHeight}px), 9999px)`\n : undefined,\n overflow: 'auto',\n ...tableContainerProps?.sx,\n }}\n style={{\n maxHeight: isFullScreen\n ? `calc(100vh - ${totalToolbarHeight}px)`\n : undefined,\n ...tableContainerProps?.style,\n }}\n >\n <MRT_Table tableContainerRef={tableContainerRef} table={table} />\n </TableContainer>\n );\n};\n","import React, { FC, useEffect } from 'react';\nimport { Paper } from '@mui/material';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { MRT_ToolbarTop } from '../toolbar/MRT_ToolbarTop';\nimport { MRT_ToolbarBottom } from '../toolbar/MRT_ToolbarBottom';\nimport { MRT_TableContainer } from './MRT_TableContainer';\nimport type { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_TablePaper: FC<Props> = ({ table }) => {\n const {\n getState,\n options: { enableToolbarBottom, enableToolbarTop, muiTablePaperProps },\n } = table;\n const { isFullScreen } = getState();\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n if (isFullScreen) {\n document.body.style.height = '100vh';\n } else {\n document.body.style.height = 'auto';\n }\n }\n }, [isFullScreen]);\n\n const tablePaperProps =\n muiTablePaperProps instanceof Function\n ? muiTablePaperProps({ table })\n : muiTablePaperProps;\n\n return (\n <DndProvider backend={HTML5Backend}>\n <Paper\n elevation={2}\n {...tablePaperProps}\n sx={{\n transition: 'all 0.2s ease-in-out',\n ...tablePaperProps?.sx,\n }}\n style={{\n ...tablePaperProps?.style,\n height: isFullScreen ? '100vh' : undefined,\n margin: isFullScreen ? '0' : undefined,\n maxHeight: isFullScreen ? '100vh' : undefined,\n maxWidth: isFullScreen ? '100vw' : undefined,\n padding: isFullScreen ? '0' : undefined,\n width: isFullScreen ? '100vw' : undefined,\n }}\n >\n {enableToolbarTop && <MRT_ToolbarTop table={table} />}\n <MRT_TableContainer table={table} />\n {enableToolbarBottom && <MRT_ToolbarBottom table={table} />}\n </Paper>\n </DndProvider>\n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport {\n TableState,\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport {\n MRT_Cell,\n MRT_ColumnDef,\n MRT_FilterOption,\n MRT_Row,\n MRT_TableInstance,\n MRT_TableState,\n} from '..';\nimport { MRT_ExpandAllButton } from '../buttons/MRT_ExpandAllButton';\nimport { MRT_ExpandButton } from '../buttons/MRT_ExpandButton';\nimport { MRT_ToggleRowActionMenuButton } from '../buttons/MRT_ToggleRowActionMenuButton';\nimport { MRT_SelectCheckbox } from '../inputs/MRT_SelectCheckbox';\nimport { MaterialReactTableProps } from '../MaterialReactTable';\nimport { MRT_TablePaper } from './MRT_TablePaper';\nimport { Box, Dialog, Grow } from '@mui/material';\nimport {\n prepareColumns,\n getAllLeafColumnDefs,\n getDefaultColumnOrderIds,\n} from '../utils';\nimport { MRT_FilterFns } from '../filtersFns';\n\nexport const MRT_TableRoot = <D extends Record<string, any> = {}>(\n props: MaterialReactTableProps<D>,\n) => {\n const [tableId, setIdPrefix] = useState(props.tableId);\n useEffect(\n () =>\n setIdPrefix(props.tableId ?? Math.random().toString(36).substring(2, 9)),\n [props.tableId],\n );\n\n const initialState: Partial<MRT_TableState<D>> = useMemo(() => {\n const initState = props.initialState ?? {};\n initState.columnOrder =\n initState.columnOrder ?? getDefaultColumnOrderIds(props);\n return initState;\n }, []);\n\n const [columnOrder, setColumnOrder] = useState(\n initialState.columnOrder ?? [],\n );\n const [currentEditingCell, setCurrentEditingCell] =\n useState<MRT_Cell<D> | null>(initialState?.currentEditingCell ?? null);\n const [currentEditingRow, setCurrentEditingRow] = useState<MRT_Row<D> | null>(\n initialState?.currentEditingRow ?? null,\n );\n const [density, setDensity] = useState(\n initialState?.density ?? 'comfortable',\n );\n const [isFullScreen, setIsFullScreen] = useState(\n initialState?.isFullScreen ?? false,\n );\n const [showAlertBanner, setShowAlertBanner] = useState(\n props.initialState?.showAlertBanner ?? false,\n );\n const [showFilters, setShowFilters] = useState(\n initialState?.showFilters ?? false,\n );\n const [showGlobalFilter, setShowGlobalFilter] = useState(\n initialState?.showGlobalFilter ?? false,\n );\n\n const [currentFilterFns, setCurrentFilterFns] = useState<{\n [key: string]: MRT_FilterOption;\n }>(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(props.columns as MRT_ColumnDef<D>[]).map(\n (col) => ({\n [col.id?.toString() ?? col.accessorKey?.toString() ?? '']:\n col.filterFn instanceof Function\n ? col.filterFn.name ?? 'custom'\n : col.filterFn ??\n initialState?.currentFilterFns?.[\n col.id?.toString() ?? col.accessorKey?.toString() ?? ''\n ] ??\n (!!col.filterSelectOptions?.length ? 'equals' : 'fuzzy'),\n }),\n ),\n ),\n );\n\n const [currentGlobalFilterFn, setCurrentGlobalFilterFn] =\n useState<MRT_FilterOption>(\n props.globalFilterFn instanceof String\n ? (props.globalFilterFn as MRT_FilterOption)\n : 'fuzzy',\n );\n\n const displayColumns = useMemo(\n () =>\n (\n [\n columnOrder.includes('mrt-row-actions') && {\n Cell: ({ cell }) => (\n <MRT_ToggleRowActionMenuButton\n row={cell.row as any}\n table={table}\n />\n ),\n columnDefType: 'display',\n header: props.localization?.actions,\n id: 'mrt-row-actions',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 70,\n },\n columnOrder.includes('mrt-expand') && {\n Cell: ({ cell }) => (\n <MRT_ExpandButton row={cell.row as any} table={table} />\n ),\n Header: () =>\n props.enableExpandAll ? (\n <MRT_ExpandAllButton table={table} />\n ) : null,\n columnDefType: 'display',\n header: props.localization?.expand,\n id: 'mrt-expand',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 60,\n },\n columnOrder.includes('mrt-select') && {\n Cell: ({ cell }) => (\n <MRT_SelectCheckbox row={cell.row as any} table={table} />\n ),\n Header: () =>\n props.enableSelectAll ? (\n <MRT_SelectCheckbox selectAll table={table} />\n ) : null,\n columnDefType: 'display',\n header: props.localization?.select,\n id: 'mrt-select',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 60,\n },\n columnOrder.includes('mrt-row-numbers') && {\n Cell: ({ cell }) => cell.row.index + 1,\n Header: () => props.localization?.rowNumber,\n columnDefType: 'display',\n header: props.localization?.rowNumbers,\n id: 'mrt-row-numbers',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 60,\n },\n ] as MRT_ColumnDef<D>[]\n ).filter(Boolean),\n [\n columnOrder,\n props.editingMode,\n props.enableEditing,\n props.enableExpandAll,\n props.enableExpanding,\n props.enableGrouping,\n props.enableRowActions,\n props.enableRowNumbers,\n props.enableRowSelection,\n props.enableSelectAll,\n props.localization,\n props.muiTableBodyCellProps,\n props.muiTableHeadCellProps,\n props.positionActionsColumn,\n ],\n );\n\n const columnDefs = useMemo(\n () =>\n prepareColumns([...displayColumns, ...props.columns], currentFilterFns),\n [currentFilterFns, displayColumns, props.columns],\n );\n\n const data: D[] = useMemo(\n () =>\n (props.state?.isLoading || props.state?.showSkeletons) &&\n !props.data.length\n ? [...Array(10).fill(null)].map(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map(\n (col) => ({\n [col.id ?? col.accessorKey ?? '']: null,\n }),\n ),\n ),\n )\n : props.data,\n [props.data, props.state?.isLoading, props.state?.showSkeletons],\n );\n\n //@ts-ignore\n const table = {\n ...useReactTable({\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n onColumnOrderChange: setColumnOrder,\n ...props,\n //@ts-ignore\n columns: columnDefs,\n data,\n getSubRows: (row) => row?.subRows,\n //@ts-ignore\n globalFilterFn:\n MRT_FilterFns[currentGlobalFilterFn] ?? MRT_FilterFns.fuzzy,\n initialState,\n state: {\n columnOrder,\n currentEditingCell,\n currentEditingRow,\n currentFilterFns,\n currentGlobalFilterFn,\n density,\n isFullScreen,\n showAlertBanner,\n showFilters,\n showGlobalFilter,\n ...props.state,\n } as TableState,\n tableId,\n }),\n setCurrentEditingCell:\n props.onCurrentEditingCellChange ?? setCurrentEditingCell,\n setCurrentEditingRow:\n props.onCurrentEditingRowChange ?? setCurrentEditingRow,\n setCurrentFilterFns: props.onCurrentFilterFnsChange ?? setCurrentFilterFns,\n setCurrentGlobalFilterFn:\n props.onCurrentGlobalFilterFnChange ?? setCurrentGlobalFilterFn,\n setDensity: props.onDensityChange ?? setDensity,\n setIsFullScreen: props.onIsFullScreenChange ?? setIsFullScreen,\n setShowAlertBanner: props.onShowAlertBannerChange ?? setShowAlertBanner,\n setShowFilters: props.onShowFiltersChange ?? setShowFilters,\n setShowGlobalFilter: props.onShowGlobalFilterChange ?? setShowGlobalFilter,\n } as MRT_TableInstance;\n\n return (\n <>\n <Dialog\n PaperComponent={Box}\n TransitionComponent={Grow}\n disablePortal\n fullScreen\n keepMounted={false}\n onClose={() => setIsFullScreen(false)}\n open={isFullScreen}\n transitionDuration={400}\n >\n <MRT_TablePaper table={table} />\n </Dialog>\n {!isFullScreen && <MRT_TablePaper table={table} />}\n </>\n );\n};\n","import React, {\n ChangeEvent,\n Dispatch,\n FC,\n FocusEvent,\n ReactNode,\n SetStateAction,\n} from 'react';\nimport {\n AlertProps,\n ButtonProps,\n CheckboxProps,\n IconButtonProps,\n LinearProgressProps,\n PaperProps,\n SkeletonProps,\n TableBodyProps,\n TableCellProps,\n TableContainerProps,\n TableFooterProps,\n TableHeadProps,\n TablePaginationProps,\n TableProps,\n TableRowProps,\n TextFieldProps,\n ToolbarProps,\n} from '@mui/material';\nimport {\n Cell,\n Column,\n ColumnDef,\n FilterFn,\n Header,\n HeaderGroup,\n OnChangeFn,\n Row,\n SortingFn,\n Table,\n TableOptions,\n TableState,\n} from '@tanstack/react-table';\nimport { Options as VirtualizerOptions } from 'react-virtual';\nimport { MRT_Localization, MRT_DefaultLocalization_EN } from './localization';\nimport { MRT_Default_Icons, MRT_Icons } from './icons';\nimport { MRT_TableRoot } from './table/MRT_TableRoot';\nimport { MRT_FilterFns } from './filtersFns';\nimport { MRT_SortingFns } from './sortingFns';\n\ntype LiteralUnion<T extends U, U = string> = T | (U & Record<never, never>);\n\nexport type MRT_TableOptions<D extends Record<string, any> = {}> = Partial<\n Omit<\n TableOptions<D>,\n 'columns' | 'data' | 'initialState' | 'state' | 'expandRowsFn'\n >\n> & {\n columns: MRT_ColumnDef<D>[];\n data: D[];\n expandRowsFn?: (dataRow: D) => D[];\n initialState?: Partial<MRT_TableState<D>>;\n state?: Partial<MRT_TableState<D>>;\n};\n\nexport interface MRT_RowModel<D extends Record<string, any> = {}> {\n flatRows: MRT_Row<D>[];\n rows: MRT_Row<D>[];\n rowsById: { [key: string]: MRT_Row<D> };\n}\n\nexport type MRT_TableInstance<D extends Record<string, any> = {}> = Omit<\n Table<D>,\n | 'getAllColumns'\n | 'getAllFlatColumns'\n | 'getAllLeafColumns'\n | 'getCenterLeafColumns'\n | 'getColumn'\n | 'getExpandedRowModel'\n | 'getFlatHeaders'\n | 'getLeftLeafColumns'\n | 'getPaginationRowModel'\n | 'getPreFilteredRowModel'\n | 'getPrePaginationRowModel'\n | 'getRightLeafColumns'\n | 'getRowModel'\n | 'getSelectedRowModel'\n | 'getState'\n | 'options'\n> & {\n getAllColumns: () => MRT_Column<D>[];\n getAllFlatColumns: () => MRT_Column<D>[];\n getAllLeafColumns: () => MRT_Column<D>[];\n getCenterLeafColumns: () => MRT_Column<D>[];\n getColumn: (columnId: string) => MRT_Column<D>;\n getExpandedRowModel: () => MRT_RowModel<D>;\n getFlatHeaders: () => MRT_Header<D>[];\n getLeftLeafColumns: () => MRT_Column<D>[];\n getPaginationRowModel: () => MRT_RowModel<D>;\n getPreFilteredRowModel: () => MRT_RowModel<D>;\n getPrePaginationRowModel: () => MRT_RowModel<D>;\n getRightLeafColumns: () => MRT_Column<D>[];\n getRowModel: () => MRT_RowModel<D>;\n getSelectedRowModel: () => MRT_RowModel<D>;\n getState: () => MRT_TableState<D>;\n options: MaterialReactTableProps<D> & {\n icons: MRT_Icons;\n tableId: string;\n localization: MRT_Localization;\n };\n setCurrentEditingCell: Dispatch<SetStateAction<MRT_Cell | null>>;\n setCurrentEditingRow: Dispatch<SetStateAction<MRT_Row | null>>;\n setCurrentFilterFns: Dispatch<\n SetStateAction<{\n [key: string]: MRT_FilterOption;\n }>\n >;\n setCurrentGlobalFilterFn: Dispatch<SetStateAction<MRT_FilterOption>>;\n setDensity: Dispatch<SetStateAction<'comfortable' | 'compact' | 'spacious'>>;\n setIsFullScreen: Dispatch<SetStateAction<boolean>>;\n setShowAlertBanner: Dispatch<SetStateAction<boolean>>;\n setShowFilters: Dispatch<SetStateAction<boolean>>;\n setShowGlobalFilter: Dispatch<SetStateAction<boolean>>;\n};\n\nexport type MRT_TableState<D extends Record<string, any> = {}> = TableState & {\n currentEditingCell: MRT_Cell<D> | null;\n currentEditingRow: MRT_Row<D> | null;\n currentFilterFns: Record<string, MRT_FilterOption>;\n currentGlobalFilterFn: Record<string, MRT_FilterOption>;\n density: 'comfortable' | 'compact' | 'spacious';\n isLoading: boolean;\n isFullScreen: boolean;\n showAlertBanner: boolean;\n showFilters: boolean;\n showGlobalFilter: boolean;\n showProgressBars: boolean;\n showSkeletons: boolean;\n};\n\nexport type MRT_ColumnDef<D extends Record<string, any> = {}> = Omit<\n ColumnDef<D>,\n | 'accessorFn'\n | 'accessorKey'\n | 'aggregatedCell'\n | 'cell'\n | 'columns'\n | 'filterFn'\n | 'footer'\n | 'header'\n | 'id'\n | 'sortingFn'\n> & {\n AggregatedCell?: ({\n cell,\n table,\n }: {\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n Cell?: ({\n cell,\n table,\n }: {\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n Edit?: ({\n cell,\n table,\n }: {\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n Filter?: ({\n header,\n table,\n }: {\n header: MRT_Header<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n Footer?:\n | ReactNode\n | (({\n footer,\n table,\n }: {\n footer: MRT_Header<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode);\n Header?:\n | ReactNode\n | (({\n header,\n table,\n }: {\n header: MRT_Header<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode);\n /**\n * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.\n * Specify a function here to point to the correct property in the data object.\n *\n * @example accessorFn: (row) => row.username\n */\n accessorFn?: (row: D) => any;\n /**\n * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.\n * Specify which key in the row this column should use to access the correct data.\n *\n * @example accessorKey: 'username'\n */\n accessorKey?: LiteralUnion<string & keyof D>;\n /**\n * Specify what type of column this is. Either `data`, `display`, or `group`. Defaults to `data`.\n * Leave this blank if you are just creating a normal data column.\n *\n * @default 'data'\n *\n * @example columnDefType: 'display'\n */\n columnDefType?: 'data' | 'display' | 'group';\n columns?: MRT_ColumnDef<D>[];\n enableClickToCopy?: boolean;\n enableColumnActions?: boolean;\n enableColumnFilterChangeMode?: boolean;\n enableColumnOrdering?: boolean;\n enableEditing?: boolean;\n enabledColumnFilterOptions?: MRT_FilterOption[] | null;\n filterFn?: MRT_FilterFn<D>;\n filterSelectOptions?: (string | { text: string; value: string })[];\n footer?: string;\n header: string;\n /**\n * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.\n *\n * If you have also specified an `accessorFn`, MRT still needs to have a valid `id` to be able to identify the column uniquely.\n *\n * `id` defaults to the `accessorKey` or `header` if not specified.\n *\n * @default gets set to the same value as `accessorKey` by default\n */\n id?: LiteralUnion<string & keyof D>;\n muiTableBodyCellCopyButtonProps?:\n | ButtonProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => ButtonProps);\n muiTableBodyCellEditTextFieldProps?:\n | TextFieldProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TextFieldProps);\n muiTableBodyCellProps?:\n | TableCellProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TableCellProps);\n muiTableFooterCellProps?:\n | TableCellProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableHeadCellColumnActionsButtonProps?:\n | IconButtonProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => IconButtonProps);\n muiTableHeadCellFilterTextFieldProps?:\n | TextFieldProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TextFieldProps);\n muiTableHeadCellProps?:\n | TableCellProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n onCellEditBlur?: ({\n cell,\n event,\n table,\n }: {\n event: FocusEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => void;\n onCellEditChange?: ({\n cell,\n event,\n table,\n }: {\n event: ChangeEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => void;\n sortingFn?: MRT_SortingFn;\n};\n\nexport type MRT_DefinedColumnDef<D extends Record<string, any> = {}> = Omit<\n MRT_ColumnDef<D>,\n 'id'\n> & {\n id: string;\n};\n\nexport type MRT_Column<D extends Record<string, any> = {}> = Omit<\n Column<D>,\n 'header' | 'footer' | 'columns' | 'columnDef' | 'filterFn'\n> & {\n columnDef: MRT_DefinedColumnDef<D>;\n columns?: MRT_Column<D>[];\n filterFn?: MRT_FilterFn<D>;\n footer: string;\n header: string;\n};\n\nexport type MRT_Header<D extends Record<string, any> = {}> = Omit<\n Header<D>,\n 'column'\n> & {\n column: MRT_Column<D>;\n};\n\nexport type MRT_HeaderGroup<D extends Record<string, any> = {}> = Omit<\n HeaderGroup<D>,\n 'headers'\n> & {\n headers: MRT_Header<D>[];\n};\n\nexport type MRT_Row<D extends Record<string, any> = {}> = Omit<\n Row<D>,\n 'getVisibleCells' | 'getAllCells' | 'subRows' | 'original' | '_valuesCache'\n> & {\n getAllCells: () => MRT_Cell<D>[];\n getVisibleCells: () => MRT_Cell<D>[];\n subRows?: MRT_Row<D>[];\n original: D;\n _valuesCache?: D;\n};\n\nexport type MRT_Cell<D extends Record<string, any> = {}> = Omit<\n Cell<D>,\n 'column' | 'row'\n> & {\n column: MRT_Column<D>;\n row: MRT_Row<D>;\n};\n\nexport type MRT_SortingOption = keyof typeof MRT_SortingFns;\n\nexport type MRT_SortingFn<D extends Record<string, any> = {}> =\n | SortingFn<D>\n | MRT_SortingOption;\n\nexport type MRT_FilterOption = keyof typeof MRT_FilterFns;\n\nexport type MRT_FilterFn<D extends Record<string, any> = {}> =\n | FilterFn<D>\n | MRT_FilterOption;\n\nexport type MaterialReactTableProps<D extends Record<string, any> = {}> =\n MRT_TableOptions<D> & {\n editingMode?: 'table' | 'row' | 'cell';\n enableClickToCopy?: boolean;\n enableColumnActions?: boolean;\n enableColumnFilterChangeMode?: boolean;\n enableColumnOrdering?: boolean;\n enableDensityToggle?: boolean;\n enableEditing?: boolean;\n enableExpandAll?: boolean;\n enableFullScreenToggle?: boolean;\n enableGlobalFilterChangeMode?: boolean;\n enableGlobalFilterRankedResults?: boolean;\n enablePagination?: boolean;\n enableRowActions?: boolean;\n enableRowNumbers?: boolean;\n enableRowVirtualization?: boolean;\n enableSelectAll?: boolean;\n enableStickyHeader?: boolean;\n enableTableFooter?: boolean;\n enableTableHead?: boolean;\n enableToolbarBottom?: boolean;\n enableToolbarInternalActions?: boolean;\n enableToolbarTop?: boolean;\n enabledColumnFilterOptions?: (MRT_FilterOption | string)[] | null;\n enabledGlobalFilterOptions?: (MRT_FilterOption | string)[] | null;\n icons?: Partial<MRT_Icons>;\n localization?: Partial<MRT_Localization>;\n muiExpandAllButtonProps?:\n | IconButtonProps\n | (({ table }: { table: MRT_TableInstance<D> }) => IconButtonProps);\n muiExpandButtonProps?:\n | IconButtonProps\n | (({\n table,\n }: {\n table: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => IconButtonProps);\n muiLinearProgressProps?:\n | LinearProgressProps\n | (({ table }: { table: MRT_TableInstance<D> }) => LinearProgressProps);\n muiSearchTextFieldProps?:\n | TextFieldProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TextFieldProps);\n muiSelectAllCheckboxProps?:\n | CheckboxProps\n | (({ table }: { table: MRT_TableInstance<D> }) => CheckboxProps);\n muiSelectCheckboxProps?:\n | CheckboxProps\n | (({\n table,\n row,\n }: {\n table: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => CheckboxProps);\n muiTableBodyCellCopyButtonProps?:\n | ButtonProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => ButtonProps);\n muiTableBodyCellEditTextFieldProps?:\n | TextFieldProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TextFieldProps);\n muiTableBodyCellProps?:\n | TableCellProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TableCellProps);\n muiTableBodyCellSkeletonProps?:\n | SkeletonProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => SkeletonProps);\n muiTableBodyProps?:\n | TableBodyProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableBodyProps);\n muiTableBodyRowProps?:\n | TableRowProps\n | (({\n table,\n row,\n }: {\n table: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => TableRowProps);\n muiTableContainerProps?:\n | TableContainerProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableContainerProps);\n muiTableDetailPanelProps?:\n | TableCellProps\n | (({\n table,\n row,\n }: {\n table: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => TableCellProps);\n muiTableFooterCellProps?:\n | TableCellProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableFooterProps?:\n | TableFooterProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableFooterProps);\n muiTableFooterRowProps?:\n | TableRowProps\n | (({\n table,\n footerGroup,\n }: {\n table: MRT_TableInstance<D>;\n footerGroup: MRT_HeaderGroup<D>;\n }) => TableRowProps);\n muiTableHeadCellColumnActionsButtonProps?:\n | IconButtonProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => IconButtonProps);\n muiTableHeadCellFilterTextFieldProps?:\n | TextFieldProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TextFieldProps);\n muiTableHeadCellProps?:\n | TableCellProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableHeadProps?:\n | TableHeadProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableHeadProps);\n muiTableHeadRowProps?:\n | TableRowProps\n | (({\n table,\n headerGroup,\n }: {\n table: MRT_TableInstance<D>;\n headerGroup: MRT_HeaderGroup<D>;\n }) => TableRowProps);\n muiTablePaginationProps?:\n | Partial<TablePaginationProps>\n | (({\n table,\n }: {\n table: MRT_TableInstance<D>;\n }) => Partial<TablePaginationProps>);\n muiTablePaperProps?:\n | PaperProps\n | (({ table }: { table: MRT_TableInstance<D> }) => PaperProps);\n muiTableProps?:\n | TableProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableProps);\n muiTableToolbarAlertBannerProps?:\n | AlertProps\n | (({ table }: { table: MRT_TableInstance<D> }) => AlertProps);\n muiTableToolbarBottomProps?:\n | ToolbarProps\n | (({ table }: { table: MRT_TableInstance<D> }) => ToolbarProps);\n muiTableToolbarTopProps?:\n | ToolbarProps\n | (({ table }: { table: MRT_TableInstance<D> }) => ToolbarProps);\n onCellEditBlur?: ({\n cell,\n event,\n table,\n }: {\n event: FocusEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => void;\n onCellEditChange?: ({\n cell,\n event,\n table,\n }: {\n event: ChangeEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => void;\n onCurrentEditingCellChange?: OnChangeFn<MRT_Cell>;\n onCurrentEditingRowChange?: OnChangeFn<MRT_Row>;\n onCurrentFilterFnsChange?: OnChangeFn<{ [key: string]: MRT_FilterOption }>;\n onCurrentGlobalFilterFnChange?: OnChangeFn<MRT_FilterOption>;\n onEditRowSubmit?: ({\n row,\n table,\n }: {\n row: MRT_Row<D>;\n table: MRT_TableInstance<D>;\n }) => Promise<void> | void;\n onDensityChange?: OnChangeFn<boolean>;\n onIsFullScreenChange?: OnChangeFn<boolean>;\n onShowAlertBannerChange?: OnChangeFn<boolean>;\n onShowFiltersChange?: OnChangeFn<boolean>;\n onShowGlobalFilterChange?: OnChangeFn<boolean>;\n positionActionsColumn?: 'first' | 'last';\n positionGlobalFilter?: 'left' | 'right';\n positionPagination?: 'bottom' | 'top' | 'both';\n positionToolbarAlertBanner?: 'bottom' | 'top';\n renderDetailPanel?: ({\n row,\n table,\n }: {\n row: MRT_Row<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n renderRowActionMenuItems?: ({\n closeMenu,\n row,\n table,\n }: {\n closeMenu: () => void;\n row: MRT_Row<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode[];\n renderRowActions?: ({\n row,\n table,\n }: {\n row: MRT_Row<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarBottomCustomActions?: ({\n table,\n }: {\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarTopCustomActions?: ({\n table,\n }: {\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarInternalActions?: ({\n table,\n MRT_ToggleGlobalFilterButton,\n MRT_ToggleFiltersButton,\n MRT_ShowHideColumnsButton,\n MRT_ToggleDensePaddingButton,\n MRT_FullScreenToggleButton,\n }: {\n table: MRT_TableInstance<D>;\n MRT_ToggleGlobalFilterButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n MRT_ToggleFiltersButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n MRT_ShowHideColumnsButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n MRT_ToggleDensePaddingButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n MRT_FullScreenToggleButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n }) => ReactNode;\n rowCount?: number;\n rowNumberMode?: 'original' | 'static';\n selectAllMode?: 'all' | 'page';\n tableId?: string;\n virtualizerProps?: Partial<VirtualizerOptions<HTMLDivElement>>;\n };\n\nexport default <D extends Record<string, any> = {}>({\n autoResetExpanded = false,\n columnResizeMode = 'onEnd',\n defaultColumn = { minSize: 40, maxSize: 1000, size: 180 },\n editingMode = 'row',\n enableColumnActions = true,\n enableColumnFilterChangeMode = true,\n enableColumnFilters = true,\n enableColumnOrdering = false,\n enableColumnResizing = false,\n enableDensityToggle = true,\n enableExpandAll = true,\n enableFilters = true,\n enableFullScreenToggle = true,\n enableGlobalFilter = true,\n enableGlobalFilterChangeMode = true,\n enableGlobalFilterRankedResults = true,\n enableGrouping = false,\n enableHiding = true,\n enableMultiRowSelection = true,\n enableMultiSort = true,\n enablePagination = true,\n enablePinning = false,\n enableRowSelection = false,\n enableSelectAll = true,\n enableSorting = true,\n enableStickyHeader = false,\n enableTableFooter = true,\n enableTableHead = true,\n enableToolbarBottom = true,\n enableToolbarInternalActions = true,\n enableToolbarTop = true,\n icons,\n localization,\n positionActionsColumn = 'first',\n positionGlobalFilter = 'right',\n positionPagination = 'bottom',\n positionToolbarAlertBanner = 'top',\n rowNumberMode = 'original',\n selectAllMode = 'all',\n ...rest\n}: MaterialReactTableProps<D>) => (\n <MRT_TableRoot\n autoResetExpanded={autoResetExpanded}\n columnResizeMode={columnResizeMode}\n defaultColumn={defaultColumn}\n editingMode={editingMode}\n enableColumnActions={enableColumnActions}\n enableColumnFilterChangeMode={enableColumnFilterChangeMode}\n enableColumnFilters={enableColumnFilters}\n enableColumnOrdering={enableColumnOrdering}\n enableColumnResizing={enableColumnResizing}\n enableDensityToggle={enableDensityToggle}\n enableExpandAll={enableExpandAll}\n enableFilters={enableFilters}\n enableFullScreenToggle={enableFullScreenToggle}\n enableGlobalFilter={enableGlobalFilter}\n enableGlobalFilterChangeMode={enableGlobalFilterChangeMode}\n enableGlobalFilterRankedResults={enableGlobalFilterRankedResults}\n enableGrouping={enableGrouping}\n enableHiding={enableHiding}\n enableMultiRowSelection={enableMultiRowSelection}\n enableMultiSort={enableMultiSort}\n enablePagination={enablePagination}\n enablePinning={enablePinning}\n enableRowSelection={enableRowSelection}\n enableSelectAll={enableSelectAll}\n enableSorting={enableSorting}\n enableStickyHeader={enableStickyHeader}\n enableTableFooter={enableTableFooter}\n enableTableHead={enableTableHead}\n enableToolbarBottom={enableToolbarBottom}\n enableToolbarInternalActions={enableToolbarInternalActions}\n enableToolbarTop={enableToolbarTop}\n icons={{ ...MRT_Default_Icons, ...icons }}\n localization={{ ...MRT_DefaultLocalization_EN, ...localization }}\n positionActionsColumn={positionActionsColumn}\n positionGlobalFilter={positionGlobalFilter}\n positionPagination={positionPagination}\n positionToolbarAlertBanner={positionToolbarAlertBanner}\n rowNumberMode={rowNumberMode}\n selectAllMode={selectAllMode}\n {...rest}\n />\n);\n"],"names":["MRT_DefaultLocalization_EN","actions","and","cancel","changeFilterMode","changeSearchMode","clearFilter","clearSearch","clearSort","clickToCopy","columnActions","copiedToClipboard","edit","expand","expandAll","filterBetween","filterByColumn","filterContains","filterEmpty","filterEndsWith","filterEquals","filterFuzzy","filterGreaterThan","filterLessThan","filterMode","filterNotEmpty","filterNotEquals","filterStartsWith","filteringByColumn","grab","groupByColumn","groupedBy","hideAll","hideColumn","max","min","pinToLeft","pinToRight","resetColumnSize","resetOrder","rowActions","rowNumber","rowNumbers","save","search","selectedCountOfRowCountRowsSelected","select","showAll","showAllColumns","showHideColumns","showHideFilters","showHideSearch","sortByColumnAsc","sortByColumnDesc","sortedByColumnAsc","sortedByColumnDesc","thenBy","toggleDensity","toggleFullScreen","toggleSelectAll","toggleSelectRow","toggleVisibility","ungroupByColumn","unpin","unpinAll","unsorted","MRT_Default_Icons","ArrowRightIcon","ArrowRight","CancelIcon","Cancel","CheckBoxIcon","CheckBox","ClearAllIcon","ClearAll","CloseIcon","Close","DensityLargeIcon","DensityLarge","DensityMediumIcon","DensityMedium","DensitySmallIcon","DensitySmall","DragHandleIcon","DragHandle","DynamicFeedIcon","DynamicFeed","EditIcon","Edit","ExpandLessIcon","ExpandLess","ExpandMoreIcon","ExpandMore","FilterAltIcon","FilterAlt","FilterAltOffIcon","FilterAltOff","FilterListIcon","FilterList","FilterListOffIcon","FilterListOff","FullscreenExitIcon","FullscreenExit","FullscreenIcon","Fullscreen","KeyboardDoubleArrowDownIcon","KeyboardDoubleArrowDown","MoreHorizIcon","MoreHoriz","MoreVertIcon","MoreVert","PushPinIcon","PushPin","RestartAltIcon","RestartAlt","SaveIcon","Save","SearchIcon","Search","SearchOffIcon","SearchOff","SortIcon","Sort","ViewColumnIcon","ViewColumn","VisibilityOffIcon","VisibilityOff","MRT_ExpandAllButton","table","getIsAllRowsExpanded","getIsSomeRowsExpanded","getCanSomeRowsExpand","options","icons","localization","muiExpandAllButtonProps","renderDetailPanel","toggleAllRowsExpanded","density","getState","iconButtonProps","Function","React","Tooltip","arrow","enterDelay","enterNextDelay","title","IconButton","disabled","onClick","sx","height","width","style","transform","transition","MRT_ExpandButton","row","muiExpandButtonProps","getCanExpand","toggleExpanded","getIsExpanded","commonMenuItemStyles","py","my","alignItems","MRT_FilterOptionMenu","anchorEl","header","onSelect","setAnchorEl","enabledGlobalFilterOptions","enabledColumnFilterOptions","setCurrentFilterFns","setCurrentGlobalFilterFn","currentFilterFns","currentGlobalFilterFn","column","columnDef","allowedColumnFilterOptions","filterOptions","useMemo","option","label","divider","filter","filterType","undefined","includes","filterOption","id","Menu","anchorOrigin","vertical","horizontal","onClose","open","MenuListProps","dense","map","index","MenuItem","key","prev","setFilterValue","handleSelectFilterType","selected","value","DndContext","createContext","dragDropManager","formatProdErrorMessage","code","$$observable","Symbol","observable","randomString","Math","random","toString","substring","split","join","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","obj","proto","Object","getPrototypeOf","createStore","reducer","preloadedState","enhancer","_ref2","arguments","Error","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","slice","subscribe","listener","isSubscribed","push","indexOf","splice","dispatch","action","type","listeners","i","length","replaceReducer","nextReducer","_ref","outerSubscribe","observer","observeState","next","unsubscribe","this","invariant","condition","format","args","process","env","error","argIndex","replace","name","framesToPop","isObject","input","BEGIN_DRAG","HOVER","DROP","END_DRAG","setClientOffset","clientOffset","sourceClientOffset","payload","ResetCoordinatesAction","createBeginDrag","manager","sourceIds","publishSource","getSourceClientOffset","monitor","getMonitor","registry","getRegistry","isDragging","forEach","sourceId","getSource","verifyInvariants","canDragSource","getDraggableSource","verifyGetSourceClientOffsetIsFunction","item","beginDrag","verifyItemIsObject","pinSource","itemType","getSourceType","isSourcePublic","createDrop","didDrop","targetIds","getTargetIds","canDropOnTarget","reverse","getDroppableTargets","targetId","dropResult","target","getTarget","drop","verifyDropResultType","getDropResult","determineDropResult","_objectSpread","createEndDrag","verifyIsDragging","getSourceId","endDrag","unpinSource","matchesType","targetType","draggedItemType","Array","isArray","some","t","createHover","targetIdsArg","verifyTargetIdsIsArray","getTargetType","removeNonMatchingTargetIds","getItemType","lastIndexOf","checkInvariants","hover","hoverAllTargets","createPublishDragSource","DragDropManagerImpl","[object Object]","backend","getBackend","getActions","store","publishDragSource","createDragDropActions","keys","reduce","boundActions","actionCreator","apply","isSetUp","handleRefCountChange","shouldSetUp","refCount","setup","teardown","subtract","a","b","x","y","NONE","ALL","__IS_NONE__","__IS_ALL__","DragDropMonitorImpl","subscribeToStateChange","handlerIds","prevStateId","stateId","state","currentStateId","dirtyIds","itemsB","areDirty","dirtyHandlerIds","previousState","dragOffset","nextState","source","canDrag","canDrop","Boolean","isOverTarget","shallow","dragOperation","getItem","getInitialClientOffset","initialClientOffset","getInitialSourceClientOffset","initialSourceClientOffset","getClientOffset","getDifferenceFromInitialOffset","scope","global","self","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","makeRequestCallFromTimer","callback","timeoutHandle","setTimeout","handleTimer","intervalHandle","setInterval","clearTimeout","clearInterval","makeRequestCall","toggle","node","document","createTextNode","observe","characterData","data","RawTask","call","task","onError","release","asapQueue","queue","q","requestFlush","flushing","pendingErrors","capacity","flush","currentIndex","scan","newLength","registerPendingError","err","requestErrorThrow","shift","taskFactory","tasks","freeTasks","pop","REMOVE_TARGET","validateType","allowArray","HandlerRole","SOURCE","TARGET","nextUniqueId","parseRoleFromHandlerId","handlerId","mapContainsValue","searchValue","entries","isDone","done","HandlerRegistryImpl","addSource","validateSourceContract","addHandler","addTarget","validateTargetContract","handler","dragSources","dropTargets","includePinned","isSourceId","pinnedSourceId","pinnedSource","get","isTargetId","types","removeSource","enqueueTask","create","delete","removeTarget","role","getNextHandlerId","set","Map","strictEquality","_state","prevTargetIds","result","itemsA","insertItem","has","count","xor","isEqual","areArraysEqual","prevInnermostTargetId","innermostTargetId","initialState","offsetB","offsetA","items","defaultValue","c","createDragDropManager","backendFactory","globalContext","backendOptions","debugMode","reduxDevTools","window","__REDUX_DEVTOOLS_EXTENSION__","instanceId","makeStoreInstance","receiveBackend","INSTANCE_SYM","for","DndProvider","memo","_param","children","props","isGlobalInstance","context","getGlobalContext","ctx","createSingletonDndContext","getDndContextValue","useEffect","_jsx","Provider","useIsomorphicLayoutEffect","useLayoutEffect","useCollectedProps","collector","connector","collect","onCollect","collected","updateCollected","onUpdate","setCollected","useState","useCallback","nextValue","equal","constructor","RegExp","flags","valueOf","prototype","hasOwnProperty","useCollector","reconnect","getHandlerId","useMonitorOutput","useOptionalFactory","arg","deps","memoDeps","useConnectDragSource","hooks","dragSource","useConnectDragPreview","dragPreview","isCallingCanDrag","isCallingIsDragging","DragSourceMonitorImpl","internalMonitor","isDraggingSource","subscribeToOffsetChange","isCallingCanDrop","DropTargetMonitorImpl","shallowEqual","objA","objB","compare","compareContext","compareResult","keysA","keysB","bHasOwnProperty","bind","idx","valueA","valueB","isRef","wrapConnectorHooks","wrappedHooks","hook","endsWith","wrappedHook","elementOrNode","isValidElement","element","displayName","throwIfCompositeComponentElement","newRef","previousRef","ref","cloneElement","setRef","cloneWithRef","wrapHookToRecognizeElement","current","SourceConnector","newHandlerId","connectTarget","dragSourceOptions","dragSourceOptionsInternal","dragPreviewOptions","dragPreviewOptionsInternal","didChange","reconnectDragSource","reconnectDragPreview","didHandlerIdChange","didConnectedDragSourceChange","didDragSourceOptionsChange","disconnectDragSource","lastConnectedHandlerId","lastConnectedDragSource","lastConnectedDragSourceOptions","dragSourceUnsubscribe","connectDragSource","forceDidChange","didConnectedDragPreviewChange","didDragPreviewOptionsChange","disconnectDragPreview","lastConnectedDragPreview","lastConnectedDragPreviewOptions","dragPreviewUnsubscribe","connectDragPreview","dragPreviewNode","dragPreviewRef","dragSourceNode","dragSourceRef","clearDragSource","clearDragPreview","TargetConnector","dropTarget","didDropTargetChange","didOptionsChange","disconnectDropTarget","lastConnectedDropTarget","lastConnectedDropTargetOptions","dropTargetOptions","unsubscribeDropTarget","connectDropTarget","dropTargetOptionsInternal","dropTargetNode","dropTargetRef","clearDropTarget","useDragDropManager","useContext","DragSourceImpl","spec","globalMonitor","end","useDrag","specArg","begin","useDragSourceMonitor","useDragSourceConnector","previewOptions","useDragSource","useDragType","unregister","registerSource","receiveHandlerId","useRegisteredDragSource","useConnectDropTarget","DropTargetImpl","useDrop","useDropTargetMonitor","useDropTargetConnector","useDropTarget","accept","useAccept","registerTarget","useRegisteredDropTarget","MRT_ColumnPinningButtons","handlePinColumn","pinDirection","pin","Box","minWidth","textAlign","getIsPinned","size","MRT_GrabHandleButton","forwardRef","placement","disableRipple","cursor","m","opacity","p","&:hover","backgroundColor","&:active","fuzzy","columnId","filterValue","addMeta","itemRank","rankItem","getValue","threshold","rankings","MATCHES","passed","autoRemove","val","contains","toLowerCase","trim","startsWith","equals","notEquals","greaterThan","isNaN","lessThan","between","filterValues","empty","_filterValue","notEmpty","MRT_FilterFns","filterFns","MRT_SortingFns","sortingFns","rowA","rowB","dir","columnFiltersMeta","compareItems","alphanumeric","getColumnId","accessorKey","_columnDef$accessorKe","getAllLeafColumnDefs","columns","lowestLevelColumns","currentCols","_currentCols","col","nextCols","flat","every","reorderColumn","movingColumn","receivingColumn","columnOrder","getCanPin","getDefaultColumnOrderIds","positionActionsColumn","enableRowActions","enableEditing","editingMode","enableExpanding","enableGrouping","enableRowSelection","enableRowNumbers","getLeadingDisplayColumnIds","getTrailingDisplayColumnIds","MRT_ShowHideColumnsMenuItems","allColumns","isSubMenu","enableColumnOrdering","enableHiding","enablePinning","setColumnOrder","columnDefType","dropRef","newColumnOrder","dragRef","previewRef","switchChecked","getIsVisible","getLeafColumns","justifyContent","pl","depth","display","flexWrap","gap","FormControlLabel","componentsProps","typography","mb","checked","control","Switch","getCanHide","getIsGrouped","onChange","childColumn","handleToggleColumnHidden","Typography","alignSelf","_column$columns2","MRT_ShowHideColumnsMenu","getAllColumns","getAllLeafColumns","getCenterLeafColumns","getIsAllColumnsVisible","getIsSomeColumnsPinned","getIsSomeColumnsVisible","getLeftLeafColumns","getRightLeafColumns","toggleAllColumnsVisible","from","Set","colId","find","columnPinning","pt","Button","resetColumnPinning","Divider","commonListItemStyles","MRT_ColumnActionMenu","enableColumnFilterChangeMode","enableColumnFilters","enableColumnResizing","enableSorting","tableId","setShowFilters","columnSizing","columnVisibility","filterMenuAnchorEl","setFilterMenuAnchorEl","showHideColumnsMenuAnchorEl","setShowHideColumnsMenuAnchorEl","handleFilterByColumn","getElementById","muiTableHeadCellFilterTextFieldProps","_header$muiTableHeadC2","_document$getElementB","focus","handleOpenFilterModeMenu","event","stopPropagation","currentTarget","handleOpenShowHideColumnsMenu","showFilterModeSubMenu","filterSelectOptions","getCanSort","getIsSorted","clearSorting","ListItemIcon","toggleSorting","_localization$sortByC","String","_localization$sortByC2","getCanFilter","getFilterValue","_localization$filterB","onMouseEnter","getCanGroup","toggleGrouping","old","_localization","getCanResize","resetSize","_localization$hideCol","values","visible","_localization$showAll","MRT_RowActionMenu","handleEdit","renderRowActionMenuItems","closeMenu","MRT_EditActionButtons","onEditRowSubmit","setCurrentEditingRow","currentEditingRow","_valuesCache","original","color","commonIconButtonStyles","ml","MRT_ToggleRowActionMenuButton","renderRowActions","handleStartEditMode","preventDefault","MRT_SelectCheckbox","selectAll","muiSelectCheckboxProps","muiSelectAllCheckboxProps","selectAllMode","checkboxProps","Checkbox","getIsAllRowsSelected","getIsSelected","indeterminate","getIsSomeRowsSelected","getIsSomeSelected","inputProps","aria-label","getToggleAllRowsSelectedHandler","getToggleAllPageRowsSelectedHandler","getToggleSelectedHandler","memoize","fn","EnterLeaveCounter","enteringNode","previousLength","entered","add","union","isNodeInDocument","leavingNode","reset","NativeDragSource","initializeExposedProperties","config","exposeProperties","property","defineProperty","configurable","enumerable","console","warn","dataTransfer","newProperties","propertyFn","matchesTypes","defineProperties","handle","FILE","URL","TEXT","HTML","getDataFromDataTransfer","typesToTry","resultSoFar","typeToTry","getData","nativeTypesConfig","NativeTypes","files","html","urls","text","matchNativeItemType","dataTransferTypes","nativeItemType","typeConfig","isFirefox","test","navigator","userAgent","isSafari","safari","MonotonicInterpolant","xs","ys","c1s","c2s","c3s","mid","low","high","floor","xHere","diff","diffSq","dxs","ms","dx","dy","m2","mNext","dxNext","common","c1","invDx","getNodeClientOffset","el","nodeType","parentElement","top","left","getBoundingClientRect","getEventClientOffset","e","clientX","clientY","OptionsReader","rootElement","optionsArgs","ownerDocument","HTML5BackendImpl","profile","ref1","sourcePreviewNodes","sourcePreviewNodeOptions","sourceNodeOptions","sourceNodes","dragStartSourceIds","dropTargetIds","dragEnterTargetIds","dragOverTargetIds","root","__isReactDndBackendSetUp","addEventListeners","removeEventListeners","clearCurrentDragSourceNode","asyncEndDragFrameId","cancelAnimationFrame","handleDragStart","handleSelectStart","setAttribute","addEventListener","removeEventListener","handleDragEnter","handleDragOver","handleDrop","handleTopDragStart","handleTopDragStartCapture","handleTopDragEndCapture","handleTopDragEnter","handleTopDragEnterCapture","handleTopDragLeaveCapture","handleTopDragOver","handleTopDragOverCapture","handleTopDrop","handleTopDropCapture","getCurrentSourceNodeOptions","dropEffect","altKeyPressed","getCurrentDropEffect","isDraggingNativeItem","getCurrentSourcePreviewNodeOptions","anchorX","anchorY","captureDraggingState","beginDragNativeItem","currentNativeSource","loadDataTransfer","createNativeDragSource","currentNativeHandle","currentDragSourceNode","mouseMoveTimeoutTimer","endDragIfSourceWasRemovedFromDOM","defaultPrevented","unshift","_e","lastClientOffset","hoverRafId","endDragNativeItem","body","cancelHover","scheduleHover","requestAnimationFrame","nativeType","setDragImage","sourceNode","offsetX","offsetY","dragPreviewOffset","anchorPoint","offsetPoint","isImage","nodeName","documentElement","dragPreviewNodeOffsetFromClient","offsetFromDragPreview","offsetWidth","sourceWidth","offsetHeight","sourceHeight","dragPreviewWidth","dragPreviewHeight","devicePixelRatio","getDragPreviewSize","isManualOffsetY","interpolate","calculateYOffset","getDragPreviewOffset","setData","setCurrentDragSourceNode","hasAttribute","enterLeaveCounter","enter","altKey","leave","dragDrop","tagName","isContentEditable","HTML5Backend","MRT_FullScreenToggleButton","rest","setIsFullScreen","isFullScreen","MRT_ShowHideColumnsButton","MRT_ToggleDensePaddingButton","setDensity","MRT_ToggleFiltersButton","showFilters","MRT_ToggleGlobalFilterButton","muiSearchTextFieldProps","setShowGlobalFilter","showGlobalFilter","textFieldProps","MRT_GlobalFilterTextField","setGlobalFilter","enableGlobalFilterChangeMode","globalFilter","setSearchValue","handleChangeDebounced","debounce","Collapse","in","orientation","TextField","placeholder","variant","InputProps","startAdornment","InputAdornment","position","endAdornment","MRT_ToolbarInternalButtons","enableDensityToggle","enableFilters","enableFullScreenToggle","enableGlobalFilter","positionGlobalFilter","renderToolbarInternalActions","zIndex","MRT_TablePagination","getPrePaginationRowModel","setPageIndex","setPageSize","muiTablePaginationProps","enableToolbarInternalActions","rowCount","pagination","pageSize","pageIndex","totalRowCount","rows","showFirstLastPageButtons","tablePaginationProps","TablePagination","SelectProps","MenuProps","disablePadding","component","onPageChange","_","newPage","onRowsPerPageChange","page","rowsPerPage","rowsPerPageOptions","showFirstButton","showLastButton","mt","MRT_ToolbarAlertBanner","stackAlertBanner","getSelectedRowModel","muiTableToolbarAlertBannerProps","grouping","showAlertBanner","alertProps","selectMessage","_localization$selecte","_localization$selecte2","groupedByMessage","Fragment","Chip","getColumn","onDelete","timeout","Alert","icon","borderRadius","fontSize","right","AlertTitle","MRT_LinearProgressBar","alignTo","muiLinearProgressProps","isLoading","showProgressBars","linearProgressProps","mountOnEnter","unmountOnExit","bottom","LinearProgress","commonToolbarStyles","lighten","theme","palette","background","backgroundImage","minHeight","overflow","MRT_ToolbarTop","enablePagination","muiTableToolbarTopProps","positionPagination","positionToolbarAlertBanner","renderToolbarTopCustomActions","isMobile","useMediaQuery","toolbarProps","Toolbar","boxSizing","MRT_ToolbarBottom","muiTableToolbarBottomProps","renderToolbarBottomCustomActions","boxShadow","alpha","black","MRT_FilterTextField","inputIndex","_column$getFilterValu2","newFilterValues","Filter","filterId","currentFilterOption","isSelectFilter","filterChipLabel","charAt","toUpperCase","filterPlaceholder","showChangeModeButton","fullWidth","textOverflow","helperText","htmlFor","FormHelperTextProps","lineHeight","whiteSpace","margin","disableHoverListener","&\t.MuiSelect-icon","mr","_columnDef$filterSele","MRT_FilterRangeFields","gridTemplateColumns","MRT_TableHeadCellFilterContainer","MRT_TableHeadCellFilterLabel","filterTooltip","Grow","_column$getFilterValu","MRT_TableHeadCellResizeHandle","columnResizeMode","flexItem","onDoubleClick","borderRightWidth","touchAction","getIsResizing","userSelect","info","main","onMouseDown","getResizeHandler","onTouchStart","columnSizingInfo","deltaOffset","MRT_TableHeadCellSortLabel","sortTooltip","TableSortLabel","active","direction","MRT_TableHeadCellColumnActionsButton","muiTableHeadCellColumnActionsButtonProps","MRT_TableHeadCell","enableColumnActions","enableMultiSort","muiTableHeadCellProps","tableCellProps","headerElement","Header","TableCell","align","colSpan","getLeftLeafHeaders","getPinnedIndex","fontWeight","getStart","pb","getRightLeafHeaders","verticalAlign","maxWidth","getSize","minSize","isPlaceholder","getToggleSortingHandler","_columnDef$header","MRT_DraggableTableHeadCell","MRT_TableHeadRow","headerGroup","muiTableHeadRowProps","tableRowProps","TableRow","headers","MRT_TableHead","getHeaderGroups","muiTableHeadProps","tableHeadProps","TableHead","rafId","observedNodes","useRect","nodeRef","initialRect","setElement","useReducer","rectReducer","rect","initialRectSet","useRef","cb","wasEmpty","hasRectChanged","callbacks","run","changedStates","newRect","prop","unobserve","defaultEstimateSize","defaultKeyExtractor","defaultMeasureSize","defaultRangeExtractor","range","start","overscan","arr","MRT_EditCellTextField","cell","muiTableBodyCellEditTextFieldProps","onCellEditBlur","onCellEditChange","setCurrentEditingCell","setValue","onBlur","MRT_CopyButton","muiTableBodyCellCopyButtonProps","copied","setCopied","buttonProps","clipboard","writeText","border","fontFamily","letterSpacing","textTransform","MRT_TableBodyCell","enableHover","rowIndex","enableClickToCopy","muiTableBodyCellProps","muiTableBodyCellSkeletonProps","rowNumberMode","currentEditingCell","showSkeletons","skeletonWidth","isEditable","isEditing","_event","textField","mode","darken","getIsPlaceholder","Skeleton","animation","Cell","renderValue","subRows","_row$subRows","_row$subRows2","MRT_TableDetailPanel","getVisibleLeafColumns","muiTableBodyRowProps","muiTableDetailPanelProps","borderBottom","getTotalSize","MRT_TableBodyRow","&:hover td","getVisibleCells","_row$getVisibleCells","MRT_TableBody","tableContainerRef","getRowModel","enableGlobalFilterRankedResults","enableRowVirtualization","muiTableBodyProps","virtualizerProps","sorting","tableBodyProps","rankedRows","sort","v","rank","rowVirtualizer","estimateSize","paddingStart","paddingEnd","parentRef","scrollToFn","useObserver","onScrollElement","scrollOffsetFn","keyExtractor","measureSize","rangeExtractor","sizeKey","scrollKey","latestRef","scrollOffset","measurements","setScrollOffset","outerSize","defaultScrollToFn","offset","resolvedScrollToFn","measuredCache","setMeasuredCache","measure","pendingMeasuredCacheIndexesRef","measuredSize","totalSize","scrollOffsetFnRef","onScroll","capture","passive","getCurrentValue","middle","currentValue","findNearestBinarySearch","calculateRange","indexes","measureSizeRef","virtualItems","k","len","measureRef","mountedRef","scrollToOffset","toOffset","tryScrollToIndex","measurement","scrollToIndex","useVirtual","virtualRows","paddingTop","paddingBottom","TableBody","rowOrVirtualRow","MRT_TableFooterCell","footer","muiTableFooterCellProps","white","Footer","MRT_TableFooterRow","footerGroup","muiTableFooterRowProps","_footerGroup$headers","MRT_TableFooter","getFooterGroups","muiTableFooterProps","tableFooterProps","TableFooter","MRT_Table","enableStickyHeader","enableTableFooter","enableTableHead","muiTableProps","tableProps","Table","stickyHeader","tableLayout","MRT_TableContainer","muiTableContainerProps","totalToolbarHeight","setTotalToolbarHeight","tableContainerProps","topToolbarHeight","_document","_document$getElementB2","bottomToolbarHeight","_document2","_document2$getElement","TableContainer","maxHeight","MRT_TablePaper","enableToolbarBottom","enableToolbarTop","muiTablePaperProps","tablePaperProps","Paper","elevation","padding","MRT_TableRoot","setIdPrefix","initState","_props$initialState2","setShowAlertBanner","assign","_col$id","_col$accessorKey","filterFn","_initialState$current3","_col$id2","_col$accessorKey2","_col$filterSelectOpti","globalFilterFn","displayColumns","_props$localization","enableExpandAll","_props$localization2","enableSelectAll","_props$localization3","_props$localization4","_props$localization5","columnDefs","prepareColumns","_columnDef$columns","sortingFn","_props$state2","fill","_props$state3","_props$state4","useReactTable","getCoreRowModel","getExpandedRowModel","getFacetedRowModel","getFilteredRowModel","getGroupedRowModel","getPaginationRowModel","getSortedRowModel","onColumnOrderChange","getSubRows","onCurrentEditingCellChange","onCurrentEditingRowChange","onCurrentFilterFnsChange","onCurrentGlobalFilterFnChange","onDensityChange","onIsFullScreenChange","onShowAlertBannerChange","onShowFiltersChange","onShowGlobalFilterChange","Dialog","PaperComponent","TransitionComponent","disablePortal","fullScreen","keepMounted","transitionDuration","autoResetExpanded","defaultColumn","maxSize","enableMultiRowSelection"],"mappings":"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"}
1
+ {"version":3,"file":"material-react-table.cjs.production.min.js","sources":["../src/localization.ts","../src/icons.ts","../src/buttons/MRT_ExpandAllButton.tsx","../src/buttons/MRT_ExpandButton.tsx","../src/menus/MRT_FilterOptionMenu.tsx","../src/buttons/MRT_ColumnPinningButtons.tsx","../src/buttons/MRT_GrabHandleButton.tsx","../src/filtersFns.ts","../src/sortingFns.ts","../src/utils.ts","../src/menus/MRT_ShowHideColumnsMenuItems.tsx","../src/menus/MRT_ShowHideColumnsMenu.tsx","../src/menus/MRT_ColumnActionMenu.tsx","../src/menus/MRT_RowActionMenu.tsx","../src/buttons/MRT_EditActionButtons.tsx","../src/buttons/MRT_ToggleRowActionMenuButton.tsx","../src/inputs/MRT_SelectCheckbox.tsx","../src/buttons/MRT_FullScreenToggleButton.tsx","../src/buttons/MRT_ShowHideColumnsButton.tsx","../src/buttons/MRT_ToggleDensePaddingButton.tsx","../src/buttons/MRT_ToggleFiltersButton.tsx","../src/buttons/MRT_ToggleGlobalFilterButton.tsx","../src/inputs/MRT_GlobalFilterTextField.tsx","../src/toolbar/MRT_ToolbarInternalButtons.tsx","../src/toolbar/MRT_TablePagination.tsx","../src/toolbar/MRT_ToolbarAlertBanner.tsx","../src/toolbar/MRT_LinearProgressBar.tsx","../src/toolbar/MRT_ToolbarTop.tsx","../src/toolbar/MRT_ToolbarBottom.tsx","../src/inputs/MRT_FilterTextField.tsx","../src/inputs/MRT_FilterRangeFields.tsx","../src/head/MRT_TableHeadCellFilterContainer.tsx","../src/head/MRT_TableHeadCellFilterLabel.tsx","../src/head/MRT_TableHeadCellResizeHandle.tsx","../src/head/MRT_TableHeadCellSortLabel.tsx","../src/head/MRT_TableHeadCellColumnActionsButton.tsx","../src/head/MRT_TableHeadCell.tsx","../src/head/MRT_TableHeadRow.tsx","../src/head/MRT_TableHead.tsx","../src/inputs/MRT_EditCellTextField.tsx","../src/buttons/MRT_CopyButton.tsx","../src/body/MRT_TableBodyCell.tsx","../src/body/MRT_TableDetailPanel.tsx","../src/body/MRT_TableBodyRow.tsx","../src/body/MRT_TableBody.tsx","../src/footer/MRT_TableFooterCell.tsx","../src/footer/MRT_TableFooterRow.tsx","../src/footer/MRT_TableFooter.tsx","../src/table/MRT_Table.tsx","../src/table/MRT_TableContainer.tsx","../src/table/MRT_TablePaper.tsx","../src/table/MRT_TableRoot.tsx","../src/MaterialReactTable.tsx"],"sourcesContent":["export interface MRT_Localization {\n actions: string;\n and: string;\n cancel: string;\n changeFilterMode: string;\n changeSearchMode: string;\n clearFilter: string;\n clearSearch: string;\n clearSort: string;\n clickToCopy: string;\n columnActions: string;\n copiedToClipboard: string;\n edit: string;\n expand: string;\n expandAll: string;\n filterBetween: string;\n filterByColumn: string;\n filterContains: string;\n filterEmpty: string;\n filterEndsWith: string;\n filterEquals: string;\n filterFuzzy: string;\n filterGreaterThan: string;\n filterLessThan: string;\n filterMode: string;\n filterNotEmpty: string;\n filterNotEquals: string;\n filterStartsWith: string;\n filteringByColumn: string;\n grab: string;\n groupByColumn: string;\n groupedBy: string;\n hideAll: string;\n hideColumn: string;\n max: string;\n min: string;\n pinToLeft: string;\n pinToRight: string;\n resetColumnSize: string;\n resetOrder: string;\n rowActions: string;\n rowNumber: string;\n rowNumbers: string;\n save: string;\n search: string;\n select: string;\n selectedCountOfRowCountRowsSelected: string;\n showAll: string;\n showAllColumns: string;\n showHideColumns: string;\n showHideFilters: string;\n showHideSearch: string;\n sortByColumnAsc: string;\n sortByColumnDesc: string;\n sortedByColumnAsc: string;\n sortedByColumnDesc: string;\n thenBy: string;\n toggleDensity: string;\n toggleFullScreen: string;\n toggleSelectAll: string;\n toggleSelectRow: string;\n toggleVisibility: string;\n ungroupByColumn: string;\n unpin: string;\n unpinAll: string;\n unsorted: string;\n}\n\nexport const MRT_DefaultLocalization_EN: MRT_Localization = {\n actions: 'Actions',\n and: 'and',\n cancel: 'Cancel',\n changeFilterMode: 'Change filter mode',\n changeSearchMode: 'Change search mode',\n clearFilter: 'Clear filter',\n clearSearch: 'Clear search',\n clearSort: 'Clear sort',\n clickToCopy: 'Click to copy',\n columnActions: 'Column Actions',\n copiedToClipboard: 'Copied to clipboard',\n edit: 'Edit',\n expand: 'Expand',\n expandAll: 'Expand all',\n filterBetween: 'Between',\n filterByColumn: 'Filter by {column}',\n filterContains: 'Contains',\n filterEmpty: 'Empty',\n filterEndsWith: 'Ends With',\n filterEquals: 'Equals',\n filterFuzzy: 'Fuzzy',\n filterGreaterThan: 'Greater Than',\n filterLessThan: 'Less Than',\n filterMode: 'Filter Mode: {filterType}',\n filterNotEmpty: 'Not Empty',\n filterNotEquals: 'Not Equals',\n filterStartsWith: 'Starts With',\n filteringByColumn: 'Filtering by {column} - {filterType} {filterValue}',\n grab: 'Grab',\n groupByColumn: 'Group by {column}',\n groupedBy: 'Grouped by ',\n hideAll: 'Hide all',\n hideColumn: 'Hide {column} column',\n max: 'Max',\n min: 'Min',\n pinToLeft: 'Pin to left',\n pinToRight: 'Pin to right',\n resetColumnSize: 'Reset column size',\n resetOrder: 'Reset order',\n rowActions: 'Row Actions',\n rowNumber: '#',\n rowNumbers: 'Row Numbers',\n save: 'Save',\n search: 'Search',\n selectedCountOfRowCountRowsSelected:\n '{selectedCount} of {rowCount} row(s) selected',\n select: 'Select',\n showAll: 'Show all',\n showAllColumns: 'Show all columns',\n showHideColumns: 'Show/Hide columns',\n showHideFilters: 'Show/Hide filters',\n showHideSearch: 'Show/Hide search',\n sortByColumnAsc: 'Sort by {column} ascending',\n sortByColumnDesc: 'Sort by {column} descending',\n sortedByColumnAsc: 'Sorted by {column} ascending',\n sortedByColumnDesc: 'Sorted by {column} descending',\n thenBy: ', then by ',\n toggleDensity: 'Toggle density',\n toggleFullScreen: 'Toggle full screen',\n toggleSelectAll: 'Toggle select all',\n toggleSelectRow: 'Toggle select row',\n toggleVisibility: 'Toggle visibility',\n ungroupByColumn: 'Ungroup by {column}',\n unpin: 'Unpin',\n unpinAll: 'Unpin all',\n unsorted: 'Unsorted',\n};\n","import {\n ArrowRight,\n Cancel,\n CheckBox,\n ClearAll,\n Close,\n DensityLarge,\n DensityMedium,\n DensitySmall,\n DragHandle,\n DynamicFeed,\n Edit,\n ExpandLess,\n ExpandMore,\n FilterAlt,\n FilterAltOff,\n FilterList,\n FilterListOff,\n Fullscreen,\n FullscreenExit,\n KeyboardDoubleArrowDown,\n MoreHoriz,\n MoreVert,\n PushPin,\n RestartAlt,\n Save,\n Search,\n SearchOff,\n Sort,\n ViewColumn,\n VisibilityOff,\n} from '@mui/icons-material';\n\nexport interface MRT_Icons {\n ArrowRightIcon: any;\n CancelIcon: any;\n CheckBoxIcon: any;\n ClearAllIcon: any;\n CloseIcon: any;\n DensityLargeIcon: any;\n DensityMediumIcon: any;\n DensitySmallIcon: any;\n KeyboardDoubleArrowDownIcon: any;\n DragHandleIcon: any;\n DynamicFeedIcon: any;\n EditIcon: any;\n ExpandLessIcon: any;\n ExpandMoreIcon: any;\n FilterAltIcon: any;\n FilterAltOffIcon: any;\n FilterListIcon: any;\n FilterListOffIcon: any;\n FullscreenExitIcon: any;\n FullscreenIcon: any;\n MoreHorizIcon: any;\n MoreVertIcon: any;\n PushPinIcon: any;\n RestartAltIcon: any;\n SaveIcon: any;\n SearchIcon: any;\n SearchOffIcon: any;\n SortIcon: any;\n ViewColumnIcon: any;\n VisibilityOffIcon: any;\n}\n\nexport const MRT_Default_Icons: MRT_Icons = {\n ArrowRightIcon: ArrowRight,\n CancelIcon: Cancel,\n CheckBoxIcon: CheckBox,\n ClearAllIcon: ClearAll,\n CloseIcon: Close,\n DensityLargeIcon: DensityLarge,\n DensityMediumIcon: DensityMedium,\n DensitySmallIcon: DensitySmall,\n DragHandleIcon: DragHandle,\n DynamicFeedIcon: DynamicFeed,\n EditIcon: Edit,\n ExpandLessIcon: ExpandLess,\n ExpandMoreIcon: ExpandMore,\n FilterAltIcon: FilterAlt,\n FilterAltOffIcon: FilterAltOff,\n FilterListIcon: FilterList,\n FilterListOffIcon: FilterListOff,\n FullscreenExitIcon: FullscreenExit,\n FullscreenIcon: Fullscreen,\n KeyboardDoubleArrowDownIcon: KeyboardDoubleArrowDown,\n MoreHorizIcon: MoreHoriz,\n MoreVertIcon: MoreVert,\n PushPinIcon: PushPin,\n RestartAltIcon: RestartAlt,\n SaveIcon: Save,\n SearchIcon: Search,\n SearchOffIcon: SearchOff,\n SortIcon: Sort,\n ViewColumnIcon: ViewColumn,\n VisibilityOffIcon: VisibilityOff,\n};\n","import React, { FC } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ExpandAllButton: FC<Props> = ({ table }) => {\n const {\n getIsAllRowsExpanded,\n getIsSomeRowsExpanded,\n getCanSomeRowsExpand,\n getState,\n options: {\n icons: { KeyboardDoubleArrowDownIcon },\n localization,\n muiExpandAllButtonProps,\n renderDetailPanel,\n },\n toggleAllRowsExpanded,\n } = table;\n const { density } = getState();\n\n const iconButtonProps =\n muiExpandAllButtonProps instanceof Function\n ? muiExpandAllButtonProps({ table })\n : muiExpandAllButtonProps;\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={localization.expandAll}\n >\n <span>\n <IconButton\n aria-label={localization.expandAll}\n disabled={!getCanSomeRowsExpand() && !renderDetailPanel}\n onClick={() => toggleAllRowsExpanded(!getIsAllRowsExpanded())}\n {...iconButtonProps}\n sx={{\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...iconButtonProps?.sx,\n }}\n >\n <KeyboardDoubleArrowDownIcon\n style={{\n transform: `rotate(${\n getIsAllRowsExpanded()\n ? -180\n : getIsSomeRowsExpanded()\n ? -90\n : 0\n }deg)`,\n transition: 'transform 0.2s',\n }}\n />\n </IconButton>\n </span>\n </Tooltip>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ExpandButton: FC<Props> = ({ row, table }) => {\n const {\n getState,\n options: {\n icons: { ExpandMoreIcon },\n localization,\n muiExpandButtonProps,\n renderDetailPanel,\n },\n } = table;\n const { density } = getState();\n\n const iconButtonProps =\n muiExpandButtonProps instanceof Function\n ? muiExpandButtonProps({ table, row })\n : muiExpandButtonProps;\n\n const handleToggleExpand = () => {\n row.toggleExpanded();\n };\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={localization.expand}\n >\n <span>\n <IconButton\n aria-label={localization.expand}\n disabled={!row.getCanExpand() && !renderDetailPanel}\n onClick={handleToggleExpand}\n {...iconButtonProps}\n sx={{\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...iconButtonProps?.sx,\n }}\n >\n <ExpandMoreIcon\n style={{\n transform: `rotate(${\n !row.getCanExpand() && !renderDetailPanel\n ? -90\n : row.getIsExpanded()\n ? -180\n : 0\n }deg)`,\n transition: 'transform 0.2s',\n }}\n />\n </IconButton>\n </span>\n </Tooltip>\n );\n};\n","import React, { FC, useMemo } from 'react';\nimport { Menu, MenuItem } from '@mui/material';\nimport type { MRT_FilterOption, MRT_Header, MRT_TableInstance } from '..';\n\nconst commonMenuItemStyles = {\n py: '6px',\n my: 0,\n alignItems: 'center',\n};\n\ninterface Props {\n anchorEl: HTMLElement | null;\n header?: MRT_Header;\n onSelect?: () => void;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance;\n}\n\nexport const MRT_FilterOptionMenu: FC<Props> = ({\n anchorEl,\n header,\n onSelect,\n setAnchorEl,\n table,\n}) => {\n const {\n getState,\n options: {\n enabledGlobalFilterOptions,\n enabledColumnFilterOptions,\n localization,\n },\n setCurrentFilterFns,\n setCurrentGlobalFilterFn,\n } = table;\n const { currentFilterFns, currentGlobalFilterFn, density } = getState();\n const { column } = header ?? {};\n const { columnDef } = column ?? {};\n\n const allowedColumnFilterOptions =\n columnDef?.enabledColumnFilterOptions ?? enabledColumnFilterOptions;\n\n const filterOptions = useMemo(\n () =>\n [\n {\n option: 'fuzzy',\n label: localization.filterFuzzy,\n divider: false,\n },\n {\n option: 'contains',\n label: localization.filterContains,\n divider: false,\n },\n {\n option: 'startsWith',\n label: localization.filterStartsWith,\n divider: false,\n },\n {\n option: 'endsWith',\n label: localization.filterEndsWith,\n divider: true,\n },\n {\n option: 'equals',\n label: localization.filterEquals,\n divider: false,\n },\n {\n option: 'notEquals',\n label: localization.filterNotEquals,\n divider: true,\n },\n {\n option: 'between',\n label: localization.filterBetween,\n divider: false,\n },\n {\n option: 'greaterThan',\n label: localization.filterGreaterThan,\n divider: false,\n },\n {\n option: 'lessThan',\n label: localization.filterLessThan,\n divider: true,\n },\n {\n option: 'empty',\n label: localization.filterEmpty,\n divider: false,\n },\n {\n option: 'notEmpty',\n label: localization.filterNotEmpty,\n divider: false,\n },\n ].filter((filterType) =>\n columnDef\n ? allowedColumnFilterOptions === undefined ||\n allowedColumnFilterOptions?.includes(filterType.option)\n : (!enabledGlobalFilterOptions ||\n enabledGlobalFilterOptions.includes(filterType.option)) &&\n ['fuzzy', 'contains'].includes(filterType.option),\n ) as Array<{\n option: MRT_FilterOption;\n label: string;\n divider: boolean;\n fn: Function;\n }>,\n [],\n );\n\n const handleSelectFilterType = (option: MRT_FilterOption) => {\n if (header && column) {\n setCurrentFilterFns((prev: { [key: string]: any }) => ({\n ...prev,\n [header.id]: option,\n }));\n if (['empty', 'notEmpty'].includes(option)) {\n column.setFilterValue(' ');\n } else if (option === 'between') {\n column.setFilterValue(['', '']);\n } else {\n column.setFilterValue('');\n }\n } else {\n setCurrentGlobalFilterFn(option);\n }\n setAnchorEl(null);\n onSelect?.();\n };\n\n const filterOption = !!header\n ? currentFilterFns[header.id]\n : currentGlobalFilterFn;\n\n return (\n <Menu\n anchorEl={anchorEl}\n anchorOrigin={{ vertical: 'center', horizontal: 'right' }}\n onClose={() => setAnchorEl(null)}\n open={!!anchorEl}\n MenuListProps={{\n dense: density === 'compact',\n }}\n >\n {filterOptions.map(({ option, label, divider }, index) => (\n <MenuItem\n divider={divider}\n key={index}\n onClick={() => handleSelectFilterType(option)}\n selected={option === filterOption}\n sx={commonMenuItemStyles}\n value={option}\n >\n {label}\n </MenuItem>\n ))}\n </Menu>\n );\n};\n","import React, { FC } from 'react';\nimport { Box, IconButton, Tooltip } from '@mui/material';\nimport type { MRT_Column, MRT_TableInstance } from '..';\n\ninterface Props {\n column: MRT_Column;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ColumnPinningButtons: FC<Props> = ({ column, table }) => {\n const {\n options: {\n icons: { PushPinIcon },\n localization,\n },\n } = table;\n\n const handlePinColumn = (pinDirection: 'left' | 'right' | false) => {\n column.pin(pinDirection);\n };\n\n return (\n <Box sx={{ minWidth: '70px', textAlign: 'center' }}>\n {column.getIsPinned() ? (\n <Tooltip arrow title={localization.unpin}>\n <IconButton onClick={() => handlePinColumn(false)} size=\"small\">\n <PushPinIcon />\n </IconButton>\n </Tooltip>\n ) : (\n <>\n <Tooltip arrow title={localization.pinToLeft}>\n <IconButton onClick={() => handlePinColumn('left')} size=\"small\">\n <PushPinIcon\n style={{\n transform: 'rotate(90deg)',\n }}\n />\n </IconButton>\n </Tooltip>\n <Tooltip arrow title={localization.pinToRight}>\n <IconButton onClick={() => handlePinColumn('right')} size=\"small\">\n <PushPinIcon\n style={{\n transform: 'rotate(-90deg)',\n }}\n />\n </IconButton>\n </Tooltip>\n </>\n )}\n </Box>\n );\n};\n","import { IconButton, Tooltip } from '@mui/material';\nimport React, { DragEventHandler, FC } from 'react';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n handleDragStart: DragEventHandler<HTMLButtonElement>;\n handleDragEnd: DragEventHandler<HTMLButtonElement>;\n table: MRT_TableInstance;\n}\n\nexport const MRT_GrabHandleButton: FC<Props> = ({\n handleDragStart,\n handleDragEnd,\n table,\n}) => {\n const {\n options: {\n icons: { DragHandleIcon },\n localization,\n },\n } = table;\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n placement=\"top\"\n title={localization.grab}\n >\n <IconButton\n disableRipple\n draggable=\"true\"\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n size=\"small\"\n sx={{\n cursor: 'grab',\n m: 0,\n opacity: 0.5,\n p: '2px',\n transition: 'all 0.2s ease-in-out',\n '&:hover': {\n backgroundColor: 'transparent',\n opacity: 1,\n },\n '&:active': {\n cursor: 'grabbing',\n },\n }}\n >\n <DragHandleIcon />\n </IconButton>\n </Tooltip>\n );\n};\n","import { rankItem, rankings, RankingInfo } from '@tanstack/match-sorter-utils';\nimport { filterFns, Row } from '@tanstack/react-table';\n\nexport const fuzzy = <D extends Record<string, any> = {}>(\n row: Row<D>,\n columnId: string,\n filterValue: string,\n addMeta: (item: RankingInfo) => void,\n) => {\n const itemRank = rankItem(row.getValue(columnId), filterValue, {\n threshold: rankings.MATCHES,\n });\n addMeta(itemRank);\n return itemRank.passed;\n};\n\nfuzzy.autoRemove = (val: any) => !val;\n\nexport const contains = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row\n .getValue(id)\n .toString()\n .toLowerCase()\n .trim()\n .includes(filterValue.toString().toLowerCase().trim());\n\ncontains.autoRemove = (val: any) => !val;\n\nexport const startsWith = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row\n .getValue(id)\n .toString()\n .toLowerCase()\n .trim()\n .startsWith(filterValue.toString().toLowerCase().trim());\n\nstartsWith.autoRemove = (val: any) => !val;\n\nexport const endsWith = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row\n .getValue(id)\n .toString()\n .toLowerCase()\n .trim()\n .endsWith(filterValue.toString().toLowerCase().trim());\n\nendsWith.autoRemove = (val: any) => !val;\n\nexport const equals = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row.getValue(id).toString().toLowerCase().trim() ===\n filterValue.toString().toLowerCase().trim();\n\nequals.autoRemove = (val: any) => !val;\n\nexport const notEquals = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n row.getValue(id).toString().toLowerCase().trim() !==\n filterValue.toString().toLowerCase().trim();\n\nnotEquals.autoRemove = (val: any) => !val;\n\nexport const greaterThan = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n !isNaN(+filterValue) && !isNaN(+row.getValue(id))\n ? +row.getValue(id) >= +filterValue\n : row.getValue(id).toString().toLowerCase().trim() >\n filterValue.toString().toLowerCase().trim();\n\ngreaterThan.autoRemove = (val: any) => !val;\n\nexport const lessThan = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValue: string | number,\n) =>\n !isNaN(+filterValue) && !isNaN(+row.getValue(id))\n ? +row.getValue(id) <= +filterValue\n : row.getValue(id).toString().toLowerCase().trim() <\n filterValue.toString().toLowerCase().trim();\n\nlessThan.autoRemove = (val: any) => !val;\n\nexport const between = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n filterValues: [string | number, string | number],\n) =>\n ((['', undefined] as any[]).includes(filterValues[0]) ||\n greaterThan(row, id, filterValues[0])) &&\n ((!isNaN(+filterValues[0]) &&\n !isNaN(+filterValues[1]) &&\n +filterValues[0] > +filterValues[1]) ||\n (['', undefined] as any[]).includes(filterValues[1]) ||\n lessThan(row, id, filterValues[1]));\n\nbetween.autoRemove = (val: any) => !val;\n\nexport const empty = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n _filterValue: string | number,\n) => !row.getValue(id).toString().trim();\n\nempty.autoRemove = (val: any) => !val;\n\nexport const notEmpty = <D extends Record<string, any> = {}>(\n row: Row<D>,\n id: string,\n _filterValue: string | number,\n) => !!row.getValue(id).toString().trim();\n\nnotEmpty.autoRemove = (val: any) => !val;\n\nexport const MRT_FilterFns = {\n ...filterFns,\n between,\n contains,\n empty,\n endsWith,\n equals,\n fuzzy,\n greaterThan,\n lessThan,\n notEmpty,\n notEquals,\n startsWith,\n};\n","import { compareItems, RankingInfo } from '@tanstack/match-sorter-utils';\nimport { Row, sortingFns } from '@tanstack/react-table';\nimport { MRT_Row } from '.';\n\nconst fuzzy = <D extends Record<string, any> = {}>(\n rowA: Row<D>,\n rowB: Row<D>,\n columnId: string,\n) => {\n let dir = 0;\n if (rowA.columnFiltersMeta[columnId]) {\n dir = compareItems(\n rowA.columnFiltersMeta[columnId]! as RankingInfo,\n rowB.columnFiltersMeta[columnId]! as RankingInfo,\n );\n }\n // Provide a fallback for when the item ranks are equal\n return dir === 0\n ? sortingFns.alphanumeric(rowA as Row<any>, rowB as Row<any>, columnId)\n : dir;\n};\n\nexport const MRT_SortingFns = {\n ...sortingFns,\n fuzzy,\n};\n\nexport const rankGlobalFuzzy = <D extends Record<string, any> = {}>(\n rowA: MRT_Row<D>,\n rowB: MRT_Row<D>,\n) =>\n Math.max(...Object.values(rowB.columnFiltersMeta).map((v: any) => v.rank)) -\n Math.max(...Object.values(rowA.columnFiltersMeta).map((v: any) => v.rank));\n","import { ColumnOrderState } from '@tanstack/react-table';\nimport {\n MaterialReactTableProps,\n MRT_Column,\n MRT_ColumnDef,\n MRT_DefinedColumnDef,\n MRT_FilterOption,\n} from '.';\nimport { MRT_FilterFns } from './filtersFns';\nimport { MRT_SortingFns } from './sortingFns';\n\nconst getColumnId = <D extends Record<string, any> = {}>(\n columnDef: MRT_ColumnDef<D>,\n): string =>\n columnDef.id ?? columnDef.accessorKey?.toString?.() ?? columnDef.header;\n\nexport const getAllLeafColumnDefs = <D extends Record<string, any> = {}>(\n columns: MRT_ColumnDef<D>[],\n): MRT_ColumnDef<D>[] => {\n let lowestLevelColumns: MRT_ColumnDef<D>[] = columns;\n let currentCols: MRT_ColumnDef<D>[] | undefined = columns;\n while (!!currentCols?.length && currentCols.some((col) => col.columns)) {\n const nextCols: MRT_ColumnDef<D>[] = currentCols\n .filter((col) => !!col.columns)\n .map((col) => col.columns)\n .flat() as MRT_ColumnDef<D>[];\n if (nextCols.every((col) => !col?.columns)) {\n lowestLevelColumns = [...lowestLevelColumns, ...nextCols];\n }\n currentCols = nextCols;\n }\n return lowestLevelColumns.filter((col) => !col.columns);\n};\n\nexport const prepareColumns = <D extends Record<string, any> = {}>(\n columnDefs: MRT_ColumnDef<D>[],\n currentFilterFns: { [key: string]: MRT_FilterOption },\n): MRT_DefinedColumnDef<D>[] =>\n columnDefs.map((columnDef) => {\n if (!columnDef.id) columnDef.id = getColumnId(columnDef);\n if (process.env.NODE_ENV !== 'production' && !columnDef.id) {\n console.error(\n 'Column definitions must have a valid `accessorKey` or `id` property',\n );\n }\n if (!columnDef.columnDefType) columnDef.columnDefType = 'data';\n if (!!columnDef.columns?.length) {\n columnDef.columnDefType = 'group';\n columnDef.columns = prepareColumns(columnDef.columns, currentFilterFns);\n } else if (columnDef.columnDefType === 'data') {\n if (Object.keys(MRT_FilterFns).includes(currentFilterFns[columnDef.id])) {\n columnDef.filterFn =\n MRT_FilterFns[currentFilterFns[columnDef.id]] ?? MRT_FilterFns.fuzzy;\n }\n if (Object.keys(MRT_SortingFns).includes(columnDef.sortingFn as string)) {\n // @ts-ignore\n columnDef.sortingFn = MRT_SortingFns[columnDef.sortingFn];\n }\n }\n return columnDef;\n }) as MRT_DefinedColumnDef<D>[];\n\nexport const reorderColumn = <D extends Record<string, any> = {}>(\n movingColumn: MRT_Column<D>,\n receivingColumn: MRT_Column<D>,\n columnOrder: ColumnOrderState,\n): ColumnOrderState => {\n if (movingColumn.getCanPin()) {\n movingColumn.pin(receivingColumn.getIsPinned());\n }\n columnOrder.splice(\n columnOrder.indexOf(receivingColumn.id),\n 0,\n columnOrder.splice(columnOrder.indexOf(movingColumn.id), 1)[0],\n );\n return [...columnOrder];\n};\n\nexport const getLeadingDisplayColumnIds = <D extends Record<string, any> = {}>(\n props: MaterialReactTableProps<D>,\n) =>\n [\n ((props.positionActionsColumn === 'first' && props.enableRowActions) ||\n (props.enableEditing && props.editingMode === 'row')) &&\n 'mrt-row-actions',\n (props.enableExpanding || props.enableGrouping) && 'mrt-expand',\n props.enableRowSelection && 'mrt-select',\n props.enableRowNumbers && 'mrt-row-numbers',\n ].filter(Boolean) as string[];\n\nexport const getTrailingDisplayColumnIds = <D extends Record<string, any> = {}>(\n props: MaterialReactTableProps<D>,\n) => [\n ((props.positionActionsColumn === 'last' && props.enableRowActions) ||\n (props.enableEditing && props.editingMode === 'row')) &&\n 'mrt-row-actions',\n];\n\nexport const getDefaultColumnOrderIds = <D extends Record<string, any> = {}>(\n props: MaterialReactTableProps<D>,\n) =>\n [\n ...getLeadingDisplayColumnIds(props),\n ...getAllLeafColumnDefs(props.columns).map((columnDef) =>\n getColumnId(columnDef),\n ),\n ...getTrailingDisplayColumnIds(props),\n ].filter(Boolean) as string[];\n","import React, {\n Dispatch,\n DragEvent,\n FC,\n SetStateAction,\n useState,\n} from 'react';\nimport {\n Box,\n FormControlLabel,\n MenuItem,\n Switch,\n Tooltip,\n Typography,\n} from '@mui/material';\nimport { MRT_ColumnPinningButtons } from '../buttons/MRT_ColumnPinningButtons';\nimport { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';\nimport { reorderColumn } from '../utils';\nimport type { MRT_Column, MRT_TableInstance } from '..';\n\ninterface Props {\n allColumns: MRT_Column[];\n column: MRT_Column;\n currentHoveredColumn: MRT_Column | null;\n isSubMenu?: boolean;\n setCurrentHoveredColumn: Dispatch<SetStateAction<MRT_Column | null>>;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsMenuItems: FC<Props> = ({\n allColumns,\n currentHoveredColumn,\n setCurrentHoveredColumn,\n column,\n isSubMenu,\n table,\n}) => {\n const {\n getState,\n options: {\n enableColumnOrdering,\n enableHiding,\n enablePinning,\n localization,\n },\n setColumnOrder,\n } = table;\n const { columnOrder } = getState();\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const switchChecked =\n (columnDefType !== 'group' && column.getIsVisible()) ||\n (columnDefType === 'group' &&\n column.getLeafColumns().some((col) => col.getIsVisible()));\n\n const handleToggleColumnHidden = (column: MRT_Column) => {\n if (columnDefType === 'group') {\n column?.columns?.forEach?.((childColumn: MRT_Column) => {\n childColumn.toggleVisibility(!switchChecked);\n });\n } else {\n column.toggleVisibility();\n }\n };\n\n const menuItemRef = React.useRef<HTMLElement>(null);\n\n const [isDragging, setIsDragging] = useState(false);\n\n const handleDragStart = (e: DragEvent<HTMLButtonElement>) => {\n setIsDragging(true);\n e.dataTransfer.setDragImage(menuItemRef.current as HTMLElement, 0, 0);\n };\n\n const handleDragEnd = (_e: DragEvent<HTMLButtonElement>) => {\n setIsDragging(false);\n setCurrentHoveredColumn(null);\n if (currentHoveredColumn) {\n setColumnOrder(reorderColumn(column, currentHoveredColumn, columnOrder));\n }\n };\n\n const handleDragEnter = (_e: DragEvent) => {\n if (!isDragging) {\n setCurrentHoveredColumn(column);\n }\n };\n\n return (\n <>\n <MenuItem\n disableRipple={enableColumnOrdering}\n ref={menuItemRef as any}\n onDragEnter={handleDragEnter}\n sx={(theme) => ({\n alignItems: 'center',\n justifyContent: 'flex-start',\n my: 0,\n opacity: isDragging ? 0.5 : 1,\n outline: isDragging\n ? `1px dashed ${theme.palette.divider}`\n : currentHoveredColumn?.id === column.id\n ? `2px dashed ${theme.palette.primary.main}`\n : 'none',\n pl: `${(column.depth + 0.5) * 2}rem`,\n py: '6px',\n })}\n >\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'nowrap',\n gap: '8px',\n }}\n >\n {!isSubMenu &&\n columnDefType !== 'group' &&\n enableColumnOrdering &&\n !allColumns.some(\n (col) => col.columnDef.columnDefType === 'group',\n ) &&\n (columnDef.enableColumnOrdering !== false ? (\n <MRT_GrabHandleButton\n handleDragEnd={handleDragEnd}\n handleDragStart={handleDragStart}\n table={table}\n />\n ) : (\n <Box sx={{ width: '28px' }} />\n ))}\n {!isSubMenu &&\n enablePinning &&\n (column.getCanPin() ? (\n <MRT_ColumnPinningButtons column={column} table={table} />\n ) : (\n <Box sx={{ width: '70px' }} />\n ))}\n {enableHiding ? (\n <FormControlLabel\n componentsProps={{\n typography: {\n sx: {\n mb: 0,\n opacity: columnDefType !== 'display' ? 1 : 0.5,\n },\n },\n }}\n checked={switchChecked}\n control={\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={localization.toggleVisibility}\n >\n <Switch />\n </Tooltip>\n }\n disabled={\n (isSubMenu && switchChecked) ||\n !column.getCanHide() ||\n column.getIsGrouped()\n }\n label={columnDef.header}\n onChange={() => handleToggleColumnHidden(column)}\n />\n ) : (\n <Typography sx={{ alignSelf: 'center' }}>\n {columnDef.header}\n </Typography>\n )}\n </Box>\n </MenuItem>\n {column.columns?.map((c: MRT_Column, i) => (\n <MRT_ShowHideColumnsMenuItems\n allColumns={allColumns}\n column={c}\n currentHoveredColumn={currentHoveredColumn}\n isSubMenu={isSubMenu}\n key={`${i}-${c.id}`}\n setCurrentHoveredColumn={setCurrentHoveredColumn}\n table={table}\n />\n ))}\n </>\n );\n};\n","import React, { FC, useMemo, useState } from 'react';\nimport { Button, Menu, Divider, Box } from '@mui/material';\nimport { MRT_ShowHideColumnsMenuItems } from './MRT_ShowHideColumnsMenuItems';\nimport type { MRT_Column, MRT_TableInstance } from '..';\nimport { getDefaultColumnOrderIds } from '../utils';\n\ninterface Props {\n anchorEl: HTMLElement | null;\n isSubMenu?: boolean;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsMenu: FC<Props> = ({\n anchorEl,\n isSubMenu,\n setAnchorEl,\n table,\n}) => {\n const {\n getAllColumns,\n getAllLeafColumns,\n getCenterLeafColumns,\n getIsAllColumnsVisible,\n getIsSomeColumnsPinned,\n getIsSomeColumnsVisible,\n getLeftLeafColumns,\n getRightLeafColumns,\n getState,\n toggleAllColumnsVisible,\n options: { localization, enablePinning, enableColumnOrdering },\n } = table;\n const { density, columnOrder, columnPinning } = getState();\n\n const hideAllColumns = () => {\n getAllLeafColumns()\n .filter((col) => col.columnDef.enableHiding !== false)\n .forEach((col) => col.toggleVisibility(false));\n };\n\n const allColumns = useMemo(() => {\n const columns = getAllColumns();\n if (\n columnOrder.length > 0 &&\n !columns.some((col) => col.columnDef.columnDefType === 'group')\n ) {\n return [\n ...getLeftLeafColumns(),\n ...Array.from(new Set(columnOrder)).map((colId) =>\n getCenterLeafColumns().find((col) => col?.id === colId),\n ),\n ...getRightLeafColumns(),\n ].filter(Boolean);\n }\n return columns;\n }, [\n columnOrder,\n columnPinning,\n getAllColumns(),\n getCenterLeafColumns(),\n getLeftLeafColumns(),\n getRightLeafColumns(),\n ]) as MRT_Column[];\n\n const [currentHoveredColumn, setCurrentHoveredColumn] =\n useState<MRT_Column | null>(null);\n\n return (\n <Menu\n anchorEl={anchorEl}\n open={!!anchorEl}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n dense: density === 'compact',\n }}\n >\n <Box\n sx={{\n display: 'flex',\n justifyContent: isSubMenu ? 'center' : 'space-between',\n p: '0.5rem',\n pt: 0,\n }}\n >\n {!isSubMenu && (\n <Button\n disabled={!getIsSomeColumnsVisible()}\n onClick={hideAllColumns}\n >\n {localization.hideAll}\n </Button>\n )}\n {!isSubMenu && enableColumnOrdering && (\n <Button\n onClick={() =>\n table.setColumnOrder(\n getDefaultColumnOrderIds(table.options as any),\n )\n }\n >\n {localization.resetOrder}\n </Button>\n )}\n {!isSubMenu && enablePinning && (\n <Button\n disabled={!getIsSomeColumnsPinned()}\n onClick={() => table.resetColumnPinning(true)}\n >\n {localization.unpinAll}\n </Button>\n )}\n <Button\n disabled={getIsAllColumnsVisible()}\n onClick={() => toggleAllColumnsVisible(true)}\n >\n {localization.showAll}\n </Button>\n </Box>\n <Divider />\n {allColumns.map((column, index) => (\n <MRT_ShowHideColumnsMenuItems\n allColumns={allColumns}\n column={column}\n currentHoveredColumn={currentHoveredColumn}\n isSubMenu={isSubMenu}\n key={`${index}-${column.id}`}\n setCurrentHoveredColumn={setCurrentHoveredColumn}\n table={table}\n />\n ))}\n </Menu>\n );\n};\n","import React, { FC, useState } from 'react';\nimport { Box, IconButton, ListItemIcon, Menu, MenuItem } from '@mui/material';\nimport type { MRT_Header, MRT_TableInstance } from '..';\nimport { MRT_FilterOptionMenu } from './MRT_FilterOptionMenu';\nimport { MRT_ShowHideColumnsMenu } from './MRT_ShowHideColumnsMenu';\n\nexport const commonMenuItemStyles = {\n py: '6px',\n my: 0,\n justifyContent: 'space-between',\n alignItems: 'center',\n};\n\nexport const commonListItemStyles = {\n display: 'flex',\n alignItems: 'center',\n};\n\ninterface Props {\n anchorEl: HTMLElement | null;\n header: MRT_Header;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ColumnActionMenu: FC<Props> = ({\n anchorEl,\n header,\n setAnchorEl,\n table,\n}) => {\n const {\n getState,\n toggleAllColumnsVisible,\n setColumnOrder,\n options: {\n enableColumnFilterChangeMode,\n enableColumnFilters,\n enableColumnResizing,\n enableGrouping,\n enableHiding,\n enablePinning,\n enableSorting,\n enabledColumnFilterOptions,\n icons: {\n ArrowRightIcon,\n ClearAllIcon,\n ViewColumnIcon,\n DynamicFeedIcon,\n FilterListIcon,\n FilterListOffIcon,\n PushPinIcon,\n SortIcon,\n RestartAltIcon,\n VisibilityOffIcon,\n },\n tableId,\n localization,\n },\n setShowFilters,\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { columnSizing, columnVisibility, density } = getState();\n\n const [filterMenuAnchorEl, setFilterMenuAnchorEl] =\n useState<null | HTMLElement>(null);\n const [showHideColumnsMenuAnchorEl, setShowHideColumnsMenuAnchorEl] =\n useState<null | HTMLElement>(null);\n\n const handleClearSort = () => {\n column.clearSorting();\n setAnchorEl(null);\n };\n\n const handleSortAsc = () => {\n column.toggleSorting(false);\n setAnchorEl(null);\n };\n\n const handleSortDesc = () => {\n column.toggleSorting(true);\n setAnchorEl(null);\n };\n\n const handleResetColumnSize = () => {\n column.resetSize();\n setAnchorEl(null);\n };\n\n const handleHideColumn = () => {\n column.toggleVisibility(false);\n setAnchorEl(null);\n };\n\n const handlePinColumn = (pinDirection: 'left' | 'right' | false) => {\n column.pin(pinDirection);\n setAnchorEl(null);\n };\n\n const handleGroupByColumn = () => {\n column.toggleGrouping();\n setColumnOrder((old) => ['mrt-expand', ...old]);\n setAnchorEl(null);\n };\n\n const handleClearFilter = () => {\n column.setFilterValue('');\n setAnchorEl(null);\n };\n\n const handleFilterByColumn = () => {\n setShowFilters(true);\n setTimeout(\n () =>\n document\n .getElementById(\n // @ts-ignore\n header.muiTableHeadCellFilterTextFieldProps?.id ??\n `mrt-${tableId}-${header.id}-filter-text-field`,\n )\n ?.focus(),\n 200,\n );\n setAnchorEl(null);\n };\n\n const handleShowAllColumns = () => {\n toggleAllColumnsVisible(true);\n setAnchorEl(null);\n };\n\n const handleOpenFilterModeMenu = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n setFilterMenuAnchorEl(event.currentTarget);\n };\n\n const handleOpenShowHideColumnsMenu = (\n event: React.MouseEvent<HTMLElement>,\n ) => {\n event.stopPropagation();\n setShowHideColumnsMenuAnchorEl(event.currentTarget);\n };\n\n const isSelectFilter = !!columnDef.filterSelectOptions;\n\n const allowedColumnFilterOptions =\n columnDef?.enabledColumnFilterOptions ?? enabledColumnFilterOptions;\n\n const showFilterModeSubMenu =\n enableColumnFilterChangeMode &&\n columnDef.enableColumnFilterChangeMode !== false &&\n !isSelectFilter &&\n (allowedColumnFilterOptions === undefined ||\n !!allowedColumnFilterOptions?.length);\n\n return (\n <Menu\n anchorEl={anchorEl}\n open={!!anchorEl}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n dense: density === 'compact',\n }}\n >\n {enableSorting &&\n column.getCanSort() && [\n <MenuItem\n disabled={!column.getIsSorted()}\n key={0}\n onClick={handleClearSort}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <ClearAllIcon />\n </ListItemIcon>\n {localization.clearSort}\n </Box>\n </MenuItem>,\n <MenuItem\n disabled={column.getIsSorted() === 'asc'}\n key={1}\n onClick={handleSortAsc}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <SortIcon />\n </ListItemIcon>\n {localization.sortByColumnAsc?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n </MenuItem>,\n <MenuItem\n divider={enableColumnFilters || enableGrouping || enableHiding}\n key={2}\n disabled={column.getIsSorted() === 'desc'}\n onClick={handleSortDesc}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <SortIcon style={{ transform: 'rotate(180deg) scaleX(-1)' }} />\n </ListItemIcon>\n {localization.sortByColumnDesc?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n </MenuItem>,\n ]}\n {enableColumnFilters &&\n column.getCanFilter() &&\n [\n <MenuItem\n disabled={!column.getFilterValue()}\n key={0}\n onClick={handleClearFilter}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <FilterListOffIcon />\n </ListItemIcon>\n {localization.clearFilter}\n </Box>\n </MenuItem>,\n <MenuItem\n divider={enableGrouping || enableHiding}\n key={1}\n onClick={handleFilterByColumn}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <FilterListIcon />\n </ListItemIcon>\n {localization.filterByColumn?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n {showFilterModeSubMenu && (\n <IconButton\n onClick={handleOpenFilterModeMenu}\n onMouseEnter={handleOpenFilterModeMenu}\n size=\"small\"\n sx={{ p: 0 }}\n >\n <ArrowRightIcon />\n </IconButton>\n )}\n </MenuItem>,\n showFilterModeSubMenu && (\n <MRT_FilterOptionMenu\n anchorEl={filterMenuAnchorEl}\n header={header}\n key={2}\n onSelect={handleFilterByColumn}\n setAnchorEl={setFilterMenuAnchorEl}\n table={table}\n />\n ),\n ].filter(Boolean)}\n {enableGrouping &&\n column.getCanGroup() && [\n <MenuItem\n divider={enablePinning}\n key={0}\n onClick={handleGroupByColumn}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <DynamicFeedIcon />\n </ListItemIcon>\n {localization[\n column.getIsGrouped() ? 'ungroupByColumn' : 'groupByColumn'\n ]?.replace('{column}', String(columnDef.header))}\n </Box>\n </MenuItem>,\n ]}\n {enablePinning &&\n column.getCanPin() && [\n <MenuItem\n disabled={column.getIsPinned() === 'left' || !column.getCanPin()}\n key={0}\n onClick={() => handlePinColumn('left')}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <PushPinIcon style={{ transform: 'rotate(90deg)' }} />\n </ListItemIcon>\n {localization.pinToLeft}\n </Box>\n </MenuItem>,\n <MenuItem\n disabled={column.getIsPinned() === 'right' || !column.getCanPin()}\n key={1}\n onClick={() => handlePinColumn('right')}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <PushPinIcon style={{ transform: 'rotate(-90deg)' }} />\n </ListItemIcon>\n {localization.pinToRight}\n </Box>\n </MenuItem>,\n <MenuItem\n disabled={!column.getIsPinned()}\n divider={enableHiding}\n key={2}\n onClick={() => handlePinColumn(false)}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <PushPinIcon />\n </ListItemIcon>\n {localization.unpin}\n </Box>\n </MenuItem>,\n ]}\n {enableColumnResizing && [\n <MenuItem\n disabled={!column.getCanResize() || !columnSizing[column.id]}\n key={0}\n onClick={handleResetColumnSize}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <RestartAltIcon />\n </ListItemIcon>\n {localization.resetColumnSize}\n </Box>\n </MenuItem>,\n ]}\n {enableHiding && [\n <MenuItem\n disabled={columnDef.enableHiding === false}\n key={0}\n onClick={handleHideColumn}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <VisibilityOffIcon />\n </ListItemIcon>\n {localization.hideColumn?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n </MenuItem>,\n <MenuItem\n disabled={\n !Object.values(columnVisibility).filter((visible) => !visible)\n .length\n }\n key={1}\n onClick={handleShowAllColumns}\n sx={commonMenuItemStyles}\n >\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <ViewColumnIcon />\n </ListItemIcon>\n {localization.showAllColumns?.replace(\n '{column}',\n String(columnDef.header),\n )}\n </Box>\n <IconButton\n onClick={handleOpenShowHideColumnsMenu}\n onMouseEnter={handleOpenShowHideColumnsMenu}\n size=\"small\"\n sx={{ p: 0 }}\n >\n <ArrowRightIcon />\n </IconButton>\n </MenuItem>,\n <MRT_ShowHideColumnsMenu\n anchorEl={showHideColumnsMenuAnchorEl}\n isSubMenu\n key={2}\n setAnchorEl={setShowHideColumnsMenuAnchorEl}\n table={table}\n />,\n ]}\n </Menu>\n );\n};\n","import React, { FC } from 'react';\nimport { Box, ListItemIcon, Menu, MenuItem } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\nimport {\n commonListItemStyles,\n commonMenuItemStyles,\n} from './MRT_ColumnActionMenu';\n\ninterface Props {\n anchorEl: HTMLElement | null;\n handleEdit: () => void;\n row: MRT_Row;\n setAnchorEl: (anchorEl: HTMLElement | null) => void;\n table: MRT_TableInstance;\n}\n\nexport const MRT_RowActionMenu: FC<Props> = ({\n anchorEl,\n handleEdit,\n row,\n setAnchorEl,\n table,\n}) => {\n const {\n getState,\n options: {\n icons: { EditIcon },\n enableEditing,\n localization,\n renderRowActionMenuItems,\n },\n } = table;\n const { density } = getState();\n\n return (\n <Menu\n anchorEl={anchorEl}\n open={!!anchorEl}\n onClose={() => setAnchorEl(null)}\n MenuListProps={{\n dense: density === 'compact',\n }}\n >\n {enableEditing && (\n <MenuItem onClick={handleEdit} sx={commonMenuItemStyles}>\n <Box sx={commonListItemStyles}>\n <ListItemIcon>\n <EditIcon />\n </ListItemIcon>\n {localization.edit}\n </Box>\n </MenuItem>\n )}\n {renderRowActionMenuItems?.({\n row,\n table,\n closeMenu: () => setAnchorEl(null),\n })}\n </Menu>\n );\n};\n","import React, { FC } from 'react';\nimport { Box, IconButton, Tooltip } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n table: MRT_TableInstance;\n}\n\nexport const MRT_EditActionButtons: FC<Props> = ({ row, table }) => {\n const {\n getState,\n options: {\n icons: { CancelIcon, SaveIcon },\n localization,\n onEditRowSubmit,\n },\n setCurrentEditingRow,\n } = table;\n const { currentEditingRow } = getState();\n\n const handleCancel = () => {\n row._valuesCache = row.original ?? {};\n setCurrentEditingRow(null);\n };\n\n const handleSave = () => {\n onEditRowSubmit?.({ row: currentEditingRow ?? row, table });\n setCurrentEditingRow(null);\n };\n\n return (\n <Box sx={{ display: 'flex', gap: '0.75rem' }}>\n <Tooltip arrow title={localization.cancel}>\n <IconButton aria-label={localization.cancel} onClick={handleCancel}>\n <CancelIcon />\n </IconButton>\n </Tooltip>\n <Tooltip arrow title={localization.save}>\n <IconButton\n aria-label={localization.save}\n color=\"info\"\n onClick={handleSave}\n >\n <SaveIcon />\n </IconButton>\n </Tooltip>\n </Box>\n );\n};\n","import React, { FC, MouseEvent, useState } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport { MRT_RowActionMenu } from '../menus/MRT_RowActionMenu';\nimport { MRT_EditActionButtons } from './MRT_EditActionButtons';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\nconst commonIconButtonStyles = {\n height: '2rem',\n ml: '10px',\n opacity: 0.5,\n transition: 'opacity 0.2s',\n width: '2rem',\n '&:hover': {\n opacity: 1,\n },\n};\n\ninterface Props {\n row: MRT_Row;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToggleRowActionMenuButton: FC<Props> = ({ row, table }) => {\n const {\n getState,\n options: {\n enableEditing,\n icons: { EditIcon, MoreHorizIcon },\n localization,\n renderRowActionMenuItems,\n renderRowActions,\n },\n setCurrentEditingRow,\n } = table;\n\n const { currentEditingRow } = getState();\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const handleOpenRowActionMenu = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n event.preventDefault();\n setAnchorEl(event.currentTarget);\n };\n\n const handleStartEditMode = () => {\n setCurrentEditingRow({ ...row });\n setAnchorEl(null);\n };\n\n return (\n <>\n {renderRowActions ? (\n <>{renderRowActions({ row, table })}</>\n ) : row.id === currentEditingRow?.id ? (\n <MRT_EditActionButtons row={row} table={table} />\n ) : !renderRowActionMenuItems && enableEditing ? (\n <Tooltip placement=\"right\" arrow title={localization.edit}>\n <IconButton sx={commonIconButtonStyles} onClick={handleStartEditMode}>\n <EditIcon />\n </IconButton>\n </Tooltip>\n ) : renderRowActionMenuItems ? (\n <>\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={localization.rowActions}\n >\n <IconButton\n aria-label={localization.rowActions}\n onClick={handleOpenRowActionMenu}\n size=\"small\"\n sx={commonIconButtonStyles}\n >\n <MoreHorizIcon />\n </IconButton>\n </Tooltip>\n <MRT_RowActionMenu\n anchorEl={anchorEl}\n handleEdit={handleStartEditMode}\n row={row}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </>\n ) : null}\n </>\n );\n};\n","import React, { ChangeEvent, FC } from 'react';\nimport { Checkbox, Tooltip } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row?: MRT_Row;\n selectAll?: boolean;\n table: MRT_TableInstance;\n}\n\nexport const MRT_SelectCheckbox: FC<Props> = ({ row, selectAll, table }) => {\n const {\n getState,\n options: {\n localization,\n muiSelectCheckboxProps,\n muiSelectAllCheckboxProps,\n selectAllMode,\n },\n } = table;\n const { density } = getState();\n\n const handleSelectChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (selectAll) {\n if (selectAllMode === 'all') {\n table.getToggleAllRowsSelectedHandler()(event as any);\n } else if (selectAllMode === 'page') {\n table.getToggleAllPageRowsSelectedHandler()(event as any);\n }\n } else if (row) {\n row?.getToggleSelectedHandler()(event as any);\n }\n };\n\n const checkboxProps = selectAll\n ? muiSelectAllCheckboxProps instanceof Function\n ? muiSelectAllCheckboxProps({ table })\n : muiSelectAllCheckboxProps\n : muiSelectCheckboxProps instanceof Function\n ? muiSelectCheckboxProps({ row: row as MRT_Row, table })\n : muiSelectCheckboxProps;\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n title={\n selectAll ? localization.toggleSelectAll : localization.toggleSelectRow\n }\n >\n <Checkbox\n checked={\n selectAll ? table.getIsAllRowsSelected() : row?.getIsSelected()\n }\n indeterminate={\n selectAll ? table.getIsSomeRowsSelected() : row?.getIsSomeSelected()\n }\n inputProps={{\n 'aria-label': selectAll\n ? localization.toggleSelectAll\n : localization.toggleSelectRow,\n }}\n onChange={handleSelectChange}\n size={density === 'compact' ? 'small' : 'medium'}\n {...checkboxProps}\n sx={{\n height: density === 'compact' ? '1.75rem' : '2.25rem',\n width: density === 'compact' ? '1.75rem' : '2.25rem',\n ...checkboxProps?.sx,\n }}\n />\n </Tooltip>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_FullScreenToggleButton: FC<Props> = ({ table, ...rest }) => {\n const {\n getState,\n options: {\n icons: { FullscreenExitIcon, FullscreenIcon },\n localization,\n },\n setIsFullScreen,\n } = table;\n const { isFullScreen } = getState();\n\n const handleToggleFullScreen = () => {\n setIsFullScreen(!isFullScreen);\n };\n\n return (\n <Tooltip arrow title={localization.toggleFullScreen}>\n <IconButton\n aria-label={localization.showHideFilters}\n onClick={handleToggleFullScreen}\n {...rest}\n >\n {isFullScreen ? <FullscreenExitIcon /> : <FullscreenIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import React, { FC, MouseEvent, useState } from 'react';\nimport { IconButton, Tooltip, IconButtonProps } from '@mui/material';\nimport { MRT_ShowHideColumnsMenu } from '../menus/MRT_ShowHideColumnsMenu';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsButton: FC<Props> = ({ table, ...rest }) => {\n const {\n options: {\n icons: { ViewColumnIcon },\n localization,\n },\n } = table;\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n return (\n <>\n <Tooltip arrow title={localization.showHideColumns}>\n <IconButton\n aria-label={localization.showHideColumns}\n onClick={handleClick}\n {...rest}\n >\n <ViewColumnIcon />\n </IconButton>\n </Tooltip>\n <MRT_ShowHideColumnsMenu\n anchorEl={anchorEl}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToggleDensePaddingButton: FC<Props> = ({ table, ...rest }) => {\n const {\n getState,\n options: {\n icons: { DensityLargeIcon, DensityMediumIcon, DensitySmallIcon },\n localization,\n },\n setDensity,\n } = table;\n const { density } = getState();\n\n const handleToggleDensePadding = () => {\n const nextDensity =\n density === 'comfortable'\n ? 'compact'\n : density === 'compact'\n ? 'spacious'\n : 'comfortable';\n setDensity(nextDensity);\n };\n\n return (\n <Tooltip arrow title={localization.toggleDensity}>\n <IconButton\n aria-label={localization.toggleDensity}\n onClick={handleToggleDensePadding}\n {...rest}\n >\n {density === 'compact' ? (\n <DensitySmallIcon />\n ) : density === 'comfortable' ? (\n <DensityMediumIcon />\n ) : (\n <DensityLargeIcon />\n )}\n </IconButton>\n </Tooltip>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToggleFiltersButton: FC<Props> = ({ table, ...rest }) => {\n const {\n getState,\n options: {\n icons: { FilterListIcon, FilterListOffIcon },\n localization,\n },\n setShowFilters,\n } = table;\n const { showFilters } = getState();\n\n const handleToggleShowFilters = () => {\n setShowFilters(!showFilters);\n };\n\n return (\n <Tooltip arrow title={localization.showHideFilters}>\n <IconButton\n aria-label={localization.showHideFilters}\n onClick={handleToggleShowFilters}\n {...rest}\n >\n {showFilters ? <FilterListOffIcon /> : <FilterListIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import React, { FC } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToggleGlobalFilterButton: FC<Props> = ({ table, ...rest }) => {\n const {\n getState,\n options: {\n icons: { SearchIcon, SearchOffIcon },\n tableId,\n localization,\n muiSearchTextFieldProps,\n },\n setShowGlobalFilter,\n } = table;\n const { showGlobalFilter } = getState();\n\n const textFieldProps =\n muiSearchTextFieldProps instanceof Function\n ? muiSearchTextFieldProps({ table })\n : muiSearchTextFieldProps;\n\n const handleToggleSearch = () => {\n setShowGlobalFilter(!showGlobalFilter);\n setTimeout(\n () =>\n document\n .getElementById(\n textFieldProps?.id ?? `mrt-${tableId}-search-text-field`,\n )\n ?.focus(),\n 200,\n );\n };\n\n return (\n <Tooltip arrow title={localization.showHideSearch}>\n <IconButton onClick={handleToggleSearch} {...rest}>\n {showGlobalFilter ? <SearchOffIcon /> : <SearchIcon />}\n </IconButton>\n </Tooltip>\n );\n};\n","import React, {\n ChangeEvent,\n FC,\n MouseEvent,\n useCallback,\n useState,\n} from 'react';\nimport {\n Collapse,\n debounce,\n IconButton,\n InputAdornment,\n TextField,\n Tooltip,\n} from '@mui/material';\nimport { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_GlobalFilterTextField: FC<Props> = ({ table }) => {\n const {\n getState,\n setGlobalFilter,\n options: {\n enableGlobalFilterChangeMode,\n icons: { SearchIcon, CloseIcon },\n localization,\n muiSearchTextFieldProps,\n tableId,\n },\n } = table;\n const { globalFilter, showGlobalFilter } = getState();\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n const [searchValue, setSearchValue] = useState(globalFilter ?? '');\n\n const handleChangeDebounced = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n setGlobalFilter(event.target.value ?? undefined);\n }, 250),\n [],\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setSearchValue(event.target.value);\n handleChangeDebounced(event);\n };\n\n const handleGlobalFilterMenuOpen = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClear = () => {\n setSearchValue('');\n setGlobalFilter(undefined);\n };\n\n const textFieldProps =\n muiSearchTextFieldProps instanceof Function\n ? muiSearchTextFieldProps({ table })\n : muiSearchTextFieldProps;\n\n return (\n <Collapse in={showGlobalFilter} orientation=\"horizontal\">\n <TextField\n id={`mrt-${tableId}-search-text-field`}\n placeholder={localization.search}\n onChange={handleChange}\n value={searchValue ?? ''}\n variant=\"standard\"\n InputProps={{\n startAdornment: enableGlobalFilterChangeMode ? (\n <InputAdornment position=\"start\">\n <Tooltip arrow title={localization.changeSearchMode}>\n <IconButton\n aria-label={localization.changeSearchMode}\n onClick={handleGlobalFilterMenuOpen}\n size=\"small\"\n sx={{ height: '1.75rem', width: '1.75rem' }}\n >\n <SearchIcon />\n </IconButton>\n </Tooltip>\n </InputAdornment>\n ) : (\n <SearchIcon />\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n <Tooltip arrow title={localization.clearSearch ?? ''}>\n <span>\n <IconButton\n aria-label={localization.clearSearch}\n disabled={!searchValue?.length}\n onClick={handleClear}\n size=\"small\"\n >\n <CloseIcon />\n </IconButton>\n </span>\n </Tooltip>\n </InputAdornment>\n ),\n }}\n {...textFieldProps}\n />\n <MRT_FilterOptionMenu\n anchorEl={anchorEl}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </Collapse>\n );\n};\n","import React, { FC } from 'react';\nimport { Box } from '@mui/material';\nimport { MRT_FullScreenToggleButton } from '../buttons/MRT_FullScreenToggleButton';\nimport { MRT_ShowHideColumnsButton } from '../buttons/MRT_ShowHideColumnsButton';\nimport { MRT_ToggleDensePaddingButton } from '../buttons/MRT_ToggleDensePaddingButton';\nimport { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';\nimport { MRT_ToggleGlobalFilterButton } from '../buttons/MRT_ToggleGlobalFilterButton';\nimport { MRT_TableInstance } from '..';\nimport { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarInternalButtons: FC<Props> = ({ table }) => {\n const {\n options: {\n enableColumnFilters,\n enableColumnOrdering,\n enableDensityToggle,\n enableFilters,\n enableFullScreenToggle,\n enableGlobalFilter,\n enableHiding,\n enablePinning,\n positionGlobalFilter,\n renderToolbarInternalActions,\n },\n } = table;\n\n return (\n <Box\n sx={{\n alignItems: 'center',\n display: 'flex',\n zIndex: 3,\n }}\n >\n {renderToolbarInternalActions?.({\n MRT_FullScreenToggleButton,\n MRT_ShowHideColumnsButton,\n MRT_ToggleDensePaddingButton,\n MRT_ToggleFiltersButton,\n MRT_ToggleGlobalFilterButton,\n table,\n }) ?? (\n <>\n {enableGlobalFilter && positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField table={table} />\n )}\n {enableFilters && enableGlobalFilter && (\n <MRT_ToggleGlobalFilterButton table={table} />\n )}\n {enableFilters && enableColumnFilters && (\n <MRT_ToggleFiltersButton table={table} />\n )}\n {(enableHiding || enableColumnOrdering || enablePinning) && (\n <MRT_ShowHideColumnsButton table={table} />\n )}\n {enableDensityToggle && (\n <MRT_ToggleDensePaddingButton table={table} />\n )}\n {enableFullScreenToggle && (\n <MRT_FullScreenToggleButton table={table} />\n )}\n </>\n )}\n </Box>\n );\n};\n","import React, { ChangeEvent, FC } from 'react';\nimport { TablePagination } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n position: 'top' | 'bottom';\n}\n\nexport const MRT_TablePagination: FC<Props> = ({ table, position }) => {\n const {\n getPrePaginationRowModel,\n getState,\n setPageIndex,\n setPageSize,\n options: {\n muiTablePaginationProps,\n enableToolbarInternalActions,\n rowCount,\n },\n } = table;\n const {\n pagination: { pageSize = 10, pageIndex = 0 },\n showGlobalFilter,\n } = getState();\n\n const totalRowCount = rowCount ?? getPrePaginationRowModel().rows.length;\n const showFirstLastPageButtons = totalRowCount / pageSize > 2;\n\n const tablePaginationProps =\n muiTablePaginationProps instanceof Function\n ? muiTablePaginationProps({ table })\n : muiTablePaginationProps;\n\n const handleChangeRowsPerPage = (event: ChangeEvent<HTMLInputElement>) => {\n setPageSize(+event.target.value);\n };\n\n return (\n <TablePagination\n SelectProps={{\n sx: { m: '0 1rem 0 1ch' },\n MenuProps: { MenuListProps: { disablePadding: true } },\n }}\n component=\"div\"\n count={totalRowCount}\n onPageChange={(_: any, newPage: number) => setPageIndex(newPage)}\n onRowsPerPageChange={handleChangeRowsPerPage}\n page={pageIndex}\n rowsPerPage={pageSize}\n rowsPerPageOptions={[5, 10, 15, 20, 25, 30, 50, 100]}\n showFirstButton={showFirstLastPageButtons}\n showLastButton={showFirstLastPageButtons}\n {...tablePaginationProps}\n sx={{\n m: '0 0.5rem',\n mt:\n position === 'top' &&\n enableToolbarInternalActions &&\n !showGlobalFilter\n ? '3.5rem'\n : undefined,\n position: 'relative',\n zIndex: 2,\n ...tablePaginationProps?.sx,\n }}\n />\n );\n};\n","import React, { FC, Fragment } from 'react';\nimport { Alert, AlertTitle, Box, Chip, Collapse } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n stackAlertBanner?: boolean;\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarAlertBanner: FC<Props> = ({\n stackAlertBanner,\n table,\n}) => {\n const {\n getPrePaginationRowModel,\n getSelectedRowModel,\n getState,\n options: { localization, muiTableToolbarAlertBannerProps },\n } = table;\n const { grouping, showAlertBanner } = getState();\n\n const alertProps =\n muiTableToolbarAlertBannerProps instanceof Function\n ? muiTableToolbarAlertBannerProps({ table })\n : muiTableToolbarAlertBannerProps;\n\n const selectMessage =\n getSelectedRowModel().rows.length > 0\n ? localization.selectedCountOfRowCountRowsSelected\n ?.replace(\n '{selectedCount}',\n getSelectedRowModel().rows.length.toString(),\n )\n ?.replace(\n '{rowCount}',\n getPrePaginationRowModel().rows.length.toString(),\n )\n : null;\n\n const groupedByMessage =\n grouping.length > 0 ? (\n <span>\n {localization.groupedBy}{' '}\n {grouping.map((columnId, index) => (\n <Fragment key={`${index}-${columnId}`}>\n {index > 0 ? localization.thenBy : ''}\n <Chip\n color=\"secondary\"\n label={table.getColumn(columnId).columnDef.header}\n onDelete={() => table.getColumn(columnId).toggleGrouping()}\n />\n </Fragment>\n ))}\n </span>\n ) : null;\n\n return (\n <Collapse\n in={showAlertBanner || !!selectMessage || !!groupedByMessage}\n timeout={stackAlertBanner ? 200 : 0}\n >\n <Alert\n color=\"info\"\n icon={false}\n {...alertProps}\n sx={{\n borderRadius: 0,\n fontSize: '1rem',\n left: 0,\n p: 0,\n position: 'relative',\n right: 0,\n top: 0,\n width: '100%',\n zIndex: 2,\n ...alertProps?.sx,\n }}\n >\n {alertProps?.title && <AlertTitle>{alertProps.title}</AlertTitle>}\n <Box sx={{ p: '0.5rem 1rem' }}>\n {alertProps?.children}\n {alertProps?.children && (selectMessage || groupedByMessage) && (\n <br />\n )}\n {selectMessage}\n {selectMessage && groupedByMessage && <br />}\n {groupedByMessage}\n </Box>\n </Alert>\n </Collapse>\n );\n};\n","import React, { FC } from 'react';\nimport { Collapse, LinearProgress } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n alignTo: 'bottom' | 'top';\n table: MRT_TableInstance;\n}\n\nexport const MRT_LinearProgressBar: FC<Props> = ({ alignTo, table }) => {\n const {\n options: { muiLinearProgressProps },\n getState,\n } = table;\n const { isLoading, showProgressBars } = getState();\n\n const linearProgressProps =\n muiLinearProgressProps instanceof Function\n ? muiLinearProgressProps({ table })\n : muiLinearProgressProps;\n\n return (\n <Collapse\n in={isLoading || showProgressBars}\n mountOnEnter\n unmountOnExit\n sx={{\n bottom: alignTo === 'bottom' ? 0 : undefined,\n position: 'absolute',\n top: alignTo === 'top' ? 0 : undefined,\n width: '100%',\n }}\n >\n <LinearProgress\n aria-label=\"Loading\"\n aria-busy=\"true\"\n sx={{ position: 'relative' }}\n {...linearProgressProps}\n />\n </Collapse>\n );\n};\n","import React, { FC } from 'react';\nimport { Box, lighten, Theme, Toolbar, useMediaQuery } from '@mui/material';\nimport { MRT_ToolbarInternalButtons } from './MRT_ToolbarInternalButtons';\nimport { MRT_TablePagination } from './MRT_TablePagination';\nimport { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';\nimport { MRT_LinearProgressBar } from './MRT_LinearProgressBar';\nimport { MRT_TableInstance } from '..';\nimport { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';\n\nexport const commonToolbarStyles = ({ theme }: { theme: Theme }) => ({\n backgroundColor: lighten(theme.palette.background.default, 0.04),\n backgroundImage: 'none',\n display: 'grid',\n minHeight: '3.5rem',\n overflow: 'hidden',\n p: '0 !important',\n transition: 'all 0.2s ease-in-out',\n zIndex: 1,\n});\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarTop: FC<Props> = ({ table }) => {\n const {\n getState,\n options: {\n enableGlobalFilter,\n enablePagination,\n enableToolbarInternalActions,\n muiTableToolbarTopProps,\n positionGlobalFilter,\n positionPagination,\n positionToolbarAlertBanner,\n renderToolbarTopCustomActions,\n tableId,\n },\n } = table;\n\n const { isFullScreen, showGlobalFilter } = getState();\n\n const isMobile = useMediaQuery('(max-width:720px)');\n\n const toolbarProps =\n muiTableToolbarTopProps instanceof Function\n ? muiTableToolbarTopProps({ table })\n : muiTableToolbarTopProps;\n\n const stackAlertBanner =\n isMobile ||\n (positionToolbarAlertBanner === 'top' &&\n (!!renderToolbarTopCustomActions || showGlobalFilter));\n\n return (\n <Toolbar\n id={`mrt-${tableId}-toolbar-top`}\n variant=\"dense\"\n {...toolbarProps}\n sx={(theme) =>\n ({\n position: isFullScreen ? 'sticky' : undefined,\n top: isFullScreen ? '0' : undefined,\n ...commonToolbarStyles({ theme }),\n ...toolbarProps?.sx,\n } as any)\n }\n >\n {positionToolbarAlertBanner === 'top' && (\n <MRT_ToolbarAlertBanner\n stackAlertBanner={stackAlertBanner}\n table={table}\n />\n )}\n <Box\n sx={{\n alignItems: 'flex-start',\n boxSizing: 'border-box',\n display: 'flex',\n justifyContent: 'space-between',\n p: '0.5rem',\n position: stackAlertBanner ? 'relative' : 'absolute',\n right: 0,\n top: 0,\n width: '100%',\n }}\n >\n {enableGlobalFilter && positionGlobalFilter === 'left' && (\n <MRT_GlobalFilterTextField table={table} />\n )}\n\n {renderToolbarTopCustomActions?.({ table }) ?? <span />}\n {enableToolbarInternalActions ? (\n <MRT_ToolbarInternalButtons table={table} />\n ) : (\n enableGlobalFilter &&\n positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField table={table} />\n )\n )}\n </Box>\n {enablePagination &&\n ['top', 'both'].includes(positionPagination ?? '') && (\n <MRT_TablePagination table={table} position=\"top\" />\n )}\n <MRT_LinearProgressBar alignTo=\"bottom\" table={table} />\n </Toolbar>\n );\n};\n","import React, { FC } from 'react';\nimport { alpha, Box, Toolbar, useMediaQuery } from '@mui/material';\nimport { MRT_TablePagination } from './MRT_TablePagination';\nimport { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';\nimport { MRT_LinearProgressBar } from './MRT_LinearProgressBar';\nimport { commonToolbarStyles } from './MRT_ToolbarTop';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarBottom: FC<Props> = ({ table }) => {\n const {\n getState,\n options: {\n enablePagination,\n muiTableToolbarBottomProps,\n positionPagination,\n positionToolbarAlertBanner,\n renderToolbarBottomCustomActions,\n tableId,\n },\n } = table;\n const { isFullScreen } = getState();\n\n const isMobile = useMediaQuery('(max-width:720px)');\n\n const toolbarProps =\n muiTableToolbarBottomProps instanceof Function\n ? muiTableToolbarBottomProps({ table })\n : muiTableToolbarBottomProps;\n\n const stackAlertBanner =\n isMobile ||\n (positionToolbarAlertBanner === 'bottom' &&\n !!renderToolbarBottomCustomActions);\n\n return (\n <Toolbar\n id={`mrt-${tableId}-toolbar-bottom`}\n variant=\"dense\"\n {...toolbarProps}\n sx={(theme) =>\n ({\n ...commonToolbarStyles({ theme }),\n bottom: isFullScreen ? '0' : undefined,\n boxShadow: `-3px 0 6px ${alpha(theme.palette.common.black, 0.1)}`,\n left: 0,\n position: isFullScreen ? 'fixed' : 'relative',\n right: 0,\n ...toolbarProps?.sx,\n } as any)\n }\n >\n <MRT_LinearProgressBar alignTo=\"top\" table={table} />\n {positionToolbarAlertBanner === 'bottom' && (\n <MRT_ToolbarAlertBanner table={table} />\n )}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n width: '100%',\n }}\n >\n {renderToolbarBottomCustomActions ? (\n <Box sx={{ p: '0.5rem' }}>\n {renderToolbarBottomCustomActions({ table })}\n </Box>\n ) : (\n <span />\n )}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'flex-end',\n position: stackAlertBanner ? 'relative' : 'absolute',\n right: 0,\n top: 0,\n }}\n >\n {enablePagination &&\n ['bottom', 'both'].includes(positionPagination ?? '') && (\n <MRT_TablePagination table={table} position=\"bottom\" />\n )}\n </Box>\n </Box>\n </Toolbar>\n );\n};\n","import React, {\n ChangeEvent,\n FC,\n MouseEvent,\n useCallback,\n useState,\n} from 'react';\nimport {\n Chip,\n debounce,\n IconButton,\n InputAdornment,\n MenuItem,\n TextField,\n TextFieldProps,\n Tooltip,\n} from '@mui/material';\nimport { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';\nimport type { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n inputIndex?: number;\n table: MRT_TableInstance;\n}\n\nexport const MRT_FilterTextField: FC<Props> = ({\n header,\n inputIndex,\n table,\n}) => {\n const {\n getState,\n options: {\n enableColumnFilterChangeMode,\n enabledColumnFilterOptions,\n icons: { FilterListIcon, CloseIcon },\n localization,\n muiTableHeadCellFilterTextFieldProps,\n tableId,\n },\n setCurrentFilterFns,\n } = table;\n const { column } = header;\n const { columnDef } = column;\n const { currentFilterFns } = getState();\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const mTableHeadCellFilterTextFieldProps =\n muiTableHeadCellFilterTextFieldProps instanceof Function\n ? muiTableHeadCellFilterTextFieldProps({ column, table })\n : muiTableHeadCellFilterTextFieldProps;\n\n const mcTableHeadCellFilterTextFieldProps =\n columnDef.muiTableHeadCellFilterTextFieldProps instanceof Function\n ? columnDef.muiTableHeadCellFilterTextFieldProps({\n column,\n table,\n })\n : columnDef.muiTableHeadCellFilterTextFieldProps;\n\n const textFieldProps = {\n ...mTableHeadCellFilterTextFieldProps,\n ...mcTableHeadCellFilterTextFieldProps,\n } as TextFieldProps;\n\n const [filterValue, setFilterValue] = useState<string>(() =>\n inputIndex !== undefined\n ? (column.getFilterValue() as [string, string])?.[inputIndex] ?? ''\n : (column.getFilterValue() as string) ?? '',\n );\n\n const handleChangeDebounced = useCallback(\n debounce((event: ChangeEvent<HTMLInputElement>) => {\n if (inputIndex !== undefined) {\n column.setFilterValue((old: [string, string]) => {\n const newFilterValues = old ?? ['', ''];\n newFilterValues[inputIndex] = event.target.value;\n return newFilterValues;\n });\n } else {\n column.setFilterValue(event.target.value ?? undefined);\n }\n }, 200),\n [],\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setFilterValue(event.target.value);\n handleChangeDebounced(event);\n };\n\n const handleFilterMenuOpen = (event: MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClear = () => {\n setFilterValue('');\n if (inputIndex !== undefined) {\n column.setFilterValue((old: [string | undefined, string | undefined]) => {\n const newFilterValues = old ?? ['', ''];\n newFilterValues[inputIndex] = undefined;\n return newFilterValues;\n });\n } else {\n column.setFilterValue(undefined);\n }\n };\n\n const handleClearFilterChip = () => {\n setFilterValue('');\n column.setFilterValue(undefined);\n setCurrentFilterFns((prev) => ({\n ...prev,\n [header.id]: 'fuzzy',\n }));\n };\n\n if (columnDef.Filter) {\n return <>{columnDef.Filter?.({ header, table })}</>;\n }\n\n const filterId = `mrt-${tableId}-${header.id}-filter-text-field${\n inputIndex ?? ''\n }`;\n const currentFilterOption = currentFilterFns?.[header.id];\n const isSelectFilter = !!columnDef.filterSelectOptions;\n const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)\n ? //@ts-ignore\n localization[\n `filter${\n currentFilterOption.charAt(0).toUpperCase() +\n currentFilterOption.slice(1)\n }`\n ]\n : '';\n const filterPlaceholder =\n inputIndex === undefined\n ? localization.filterByColumn?.replace(\n '{column}',\n String(columnDef.header),\n )\n : inputIndex === 0\n ? localization.min\n : inputIndex === 1\n ? localization.max\n : '';\n\n const allowedColumnFilterOptions =\n columnDef?.enabledColumnFilterOptions ?? enabledColumnFilterOptions;\n\n const showChangeModeButton =\n enableColumnFilterChangeMode &&\n columnDef.enableColumnFilterChangeMode !== false &&\n !isSelectFilter &&\n !inputIndex &&\n (allowedColumnFilterOptions === undefined ||\n !!allowedColumnFilterOptions?.length);\n\n return (\n <>\n <TextField\n fullWidth\n id={filterId}\n inputProps={{\n disabled: !!filterChipLabel,\n sx: {\n textOverflow: 'ellipsis',\n width: filterChipLabel ? 0 : undefined,\n },\n title: filterPlaceholder,\n }}\n helperText={\n showChangeModeButton ? (\n <label htmlFor={filterId}>\n {localization.filterMode.replace(\n '{filterType}',\n // @ts-ignore\n localization[\n `filter${\n currentFilterOption.charAt(0).toUpperCase() +\n currentFilterOption.slice(1)\n }`\n ],\n )}\n </label>\n ) : null\n }\n FormHelperTextProps={{\n sx: {\n fontSize: '0.6rem',\n lineHeight: '0.8rem',\n whiteSpace: 'nowrap',\n },\n }}\n margin=\"none\"\n placeholder={\n filterChipLabel || isSelectFilter ? undefined : filterPlaceholder\n }\n onChange={handleChange}\n onClick={(e: MouseEvent<HTMLInputElement>) => e.stopPropagation()}\n select={isSelectFilter}\n value={filterValue ?? ''}\n variant=\"standard\"\n InputProps={{\n startAdornment: showChangeModeButton ? (\n <InputAdornment position=\"start\">\n <Tooltip arrow title={localization.changeFilterMode}>\n <span>\n <IconButton\n aria-label={localization.changeFilterMode}\n onClick={handleFilterMenuOpen}\n size=\"small\"\n sx={{ height: '1.75rem', width: '1.75rem' }}\n >\n <FilterListIcon />\n </IconButton>\n </span>\n </Tooltip>\n {filterChipLabel && (\n <Chip\n onDelete={handleClearFilterChip}\n label={filterChipLabel}\n />\n )}\n </InputAdornment>\n ) : (\n <FilterListIcon />\n ),\n endAdornment: !filterChipLabel && (\n <InputAdornment position=\"end\">\n <Tooltip\n arrow\n disableHoverListener={isSelectFilter}\n placement=\"right\"\n title={localization.clearFilter ?? ''}\n >\n <span>\n <IconButton\n aria-label={localization.clearFilter}\n disabled={!filterValue?.length}\n onClick={handleClear}\n size=\"small\"\n sx={{\n height: '1.75rem',\n width: '1.75rem',\n }}\n >\n <CloseIcon />\n </IconButton>\n </span>\n </Tooltip>\n </InputAdornment>\n ),\n }}\n {...textFieldProps}\n sx={{\n m: '-0.25rem',\n p: 0,\n minWidth: !filterChipLabel ? '8rem' : 'auto',\n width: 'calc(100% + 0.5rem)',\n '&\t.MuiSelect-icon': {\n mr: '1.5rem',\n },\n ...textFieldProps?.sx,\n }}\n >\n {isSelectFilter && (\n <MenuItem divider disabled={!filterValue} value=\"\">\n {localization.clearFilter}\n </MenuItem>\n )}\n {columnDef?.filterSelectOptions?.map((option) => {\n let value;\n let text;\n if (typeof option === 'string') {\n value = option;\n text = option;\n } else if (typeof option === 'object') {\n value = option.value;\n text = option.text;\n }\n return (\n <MenuItem key={value} value={value}>\n {text}\n </MenuItem>\n );\n })}\n </TextField>\n <MRT_FilterOptionMenu\n anchorEl={anchorEl}\n header={header}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </>\n );\n};\n","import React, { FC } from 'react';\nimport { Box } from '@mui/material';\nimport { MRT_FilterTextField } from './MRT_FilterTextField';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_FilterRangeFields: FC<Props> = ({ header, table }) => {\n return (\n <Box sx={{ display: 'grid', gridTemplateColumns: '6fr 6fr', gap: '1rem' }}>\n <MRT_FilterTextField header={header} inputIndex={0} table={table} />\n <MRT_FilterTextField header={header} inputIndex={1} table={table} />\n </Box>\n );\n};\n","import React, { FC } from 'react';\nimport { Collapse } from '@mui/material';\nimport { MRT_FilterRangeFields } from '../inputs/MRT_FilterRangeFields';\nimport { MRT_FilterTextField } from '../inputs/MRT_FilterTextField';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellFilterContainer: FC<Props> = ({\n header,\n table,\n}) => {\n const { getState } = table;\n const { currentFilterFns, showFilters } = getState();\n const { column } = header;\n\n return (\n <Collapse in={showFilters} mountOnEnter unmountOnExit>\n {currentFilterFns[column.id] === 'between' ? (\n <MRT_FilterRangeFields header={header} table={table} />\n ) : (\n <MRT_FilterTextField header={header} table={table} />\n )}\n </Collapse>\n );\n};\n","import React, { FC, MouseEvent } from 'react';\nimport { Grow, IconButton, Tooltip } from '@mui/material';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellFilterLabel: FC<Props> = ({ header, table }) => {\n const {\n getState,\n options: {\n icons: { FilterAltIcon },\n localization,\n },\n } = table;\n const { currentFilterFns } = getState();\n const { column } = header;\n const { columnDef } = column;\n\n const currentFilterOption = currentFilterFns?.[header.id];\n const filterTooltip = localization.filteringByColumn\n .replace('{column}', String(columnDef.header))\n .replace(\n '{filterType}',\n // @ts-ignore\n localization[\n `filter${\n currentFilterOption.charAt(0).toUpperCase() +\n currentFilterOption.slice(1)\n }`\n ],\n )\n .replace(\n '{filterValue}',\n `\"${\n Array.isArray(column.getFilterValue())\n ? (column.getFilterValue() as [string, string]).join(\n `\" ${localization.and} \"`,\n )\n : (column.getFilterValue() as string)\n }\"`,\n )\n .replace('\" \"', '');\n\n return (\n <Grow\n unmountOnExit\n in={\n (!!column.getFilterValue() && currentFilterOption !== 'between') ||\n (currentFilterOption === 'between' && // @ts-ignore\n (!!column.getFilterValue()?.[0] || !!column.getFilterValue()?.[1]))\n }\n >\n <span>\n <Tooltip arrow placement=\"top\" title={filterTooltip}>\n <IconButton\n disableRipple\n onClick={(event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n }}\n size=\"small\"\n sx={{\n m: 0,\n opacity: 0.8,\n p: '2px',\n transform: 'scale(0.66)',\n width: '1.5ch',\n }}\n >\n <FilterAltIcon />\n </IconButton>\n </Tooltip>\n </span>\n </Grow>\n );\n};\n","import React, { FC } from 'react';\nimport { Divider, Theme } from '@mui/material';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellResizeHandle: FC<Props> = ({ header, table }) => {\n const {\n getState,\n options: { columnResizeMode },\n } = table;\n const { density, showFilters } = getState();\n const { column } = header;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n return (\n <Divider\n flexItem\n orientation=\"vertical\"\n onDoubleClick={() => column.resetSize()}\n sx={(theme: Theme) => ({\n borderRadius: '2px',\n borderRightWidth: '2px',\n cursor: 'col-resize',\n height: showFilters && columnDefType === 'data' ? '4rem' : '2rem',\n mr: density === 'compact' ? '-0.5rem' : '-1rem',\n opacity: 0.8,\n position: 'absolute',\n right: '1px',\n touchAction: 'none',\n transition: column.getIsResizing() ? undefined : 'all 0.2s ease-in-out',\n userSelect: 'none',\n zIndex: 4,\n '&:active': {\n backgroundColor: theme.palette.info.main,\n opacity: 1,\n },\n })}\n onMouseDown={header.getResizeHandler()}\n onTouchStart={header.getResizeHandler()}\n style={{\n transform: column.getIsResizing()\n ? `translateX(${\n (getState().columnSizingInfo.deltaOffset ?? 0) /\n (columnResizeMode === 'onChange' ? 16 : 1)\n }px)`\n : 'none',\n }}\n />\n );\n};\n","import React, { FC } from 'react';\nimport { TableSortLabel, Tooltip } from '@mui/material';\nimport { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellSortLabel: FC<Props> = ({ header, table }) => {\n const {\n options: { localization },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n\n const sortTooltip = !!column.getIsSorted()\n ? column.getIsSorted() === 'desc'\n ? localization.sortedByColumnDesc.replace('{column}', columnDef.header)\n : localization.sortedByColumnAsc.replace('{column}', columnDef.header)\n : localization.unsorted;\n\n return (\n <Tooltip arrow placement=\"top\" title={sortTooltip}>\n <TableSortLabel\n aria-label={sortTooltip}\n active={!!column.getIsSorted()}\n direction={\n column.getIsSorted()\n ? (column.getIsSorted() as 'asc' | 'desc')\n : undefined\n }\n sx={{\n width: '2ch',\n transform: 'translateX(-0.5ch)',\n }}\n />\n </Tooltip>\n );\n};\n","import React, { FC, MouseEvent, useState } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport { MRT_ColumnActionMenu } from '../menus/MRT_ColumnActionMenu';\nimport type { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellColumnActionsButton: FC<Props> = ({\n header,\n table,\n}) => {\n const {\n options: {\n icons: { MoreVertIcon },\n localization,\n muiTableHeadCellColumnActionsButtonProps,\n },\n } = table;\n const { column } = header;\n const { columnDef } = column;\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n event.preventDefault();\n setAnchorEl(event.currentTarget);\n };\n\n const mTableHeadCellColumnActionsButtonProps =\n muiTableHeadCellColumnActionsButtonProps instanceof Function\n ? muiTableHeadCellColumnActionsButtonProps({ column, table })\n : muiTableHeadCellColumnActionsButtonProps;\n\n const mcTableHeadCellColumnActionsButtonProps =\n columnDef.muiTableHeadCellColumnActionsButtonProps instanceof Function\n ? columnDef.muiTableHeadCellColumnActionsButtonProps({\n column,\n table,\n })\n : columnDef.muiTableHeadCellColumnActionsButtonProps;\n\n const iconButtonProps = {\n ...mTableHeadCellColumnActionsButtonProps,\n ...mcTableHeadCellColumnActionsButtonProps,\n };\n\n return (\n <>\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n placement=\"top\"\n title={localization.columnActions}\n >\n <IconButton\n aria-label={localization.columnActions}\n onClick={handleClick}\n size=\"small\"\n {...iconButtonProps}\n sx={{\n height: '2rem',\n mt: '-0.2rem',\n opacity: 0.5,\n transition: 'opacity 0.2s',\n width: '2rem',\n '&:hover': {\n opacity: 1,\n },\n ...iconButtonProps.sx,\n }}\n >\n <MoreVertIcon />\n </IconButton>\n </Tooltip>\n <MRT_ColumnActionMenu\n anchorEl={anchorEl}\n header={header}\n setAnchorEl={setAnchorEl}\n table={table}\n />\n </>\n );\n};\n","import React, {\n Dispatch,\n DragEvent,\n FC,\n ReactNode,\n SetStateAction,\n useState,\n} from 'react';\nimport { Box, TableCell, Theme, alpha, lighten } from '@mui/material';\nimport { MRT_TableHeadCellFilterContainer } from './MRT_TableHeadCellFilterContainer';\nimport { MRT_TableHeadCellFilterLabel } from './MRT_TableHeadCellFilterLabel';\nimport { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';\nimport { MRT_TableHeadCellResizeHandle } from './MRT_TableHeadCellResizeHandle';\nimport { MRT_TableHeadCellSortLabel } from './MRT_TableHeadCellSortLabel';\nimport { MRT_TableHeadCellColumnActionsButton } from './MRT_TableHeadCellColumnActionsButton';\nimport type { MRT_Column, MRT_Header, MRT_TableInstance } from '..';\nimport { reorderColumn } from '../utils';\n\ninterface Props {\n currentHoveredColumn: MRT_Column | null;\n setCurrentHoveredColumn: Dispatch<SetStateAction<MRT_Column | null>>;\n header: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCell: FC<Props> = ({\n currentHoveredColumn,\n setCurrentHoveredColumn,\n header,\n table,\n}) => {\n const {\n getState,\n options: {\n enableColumnActions,\n enableColumnOrdering,\n enableColumnResizing,\n enableGrouping,\n enableMultiSort,\n muiTableHeadCellProps,\n },\n setColumnOrder,\n } = table;\n const { columnOrder, density } = getState();\n const { column } = header;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const mTableHeadCellProps =\n muiTableHeadCellProps instanceof Function\n ? muiTableHeadCellProps({ column, table })\n : muiTableHeadCellProps;\n\n const mcTableHeadCellProps =\n columnDef.muiTableHeadCellProps instanceof Function\n ? columnDef.muiTableHeadCellProps({ column, table })\n : columnDef.muiTableHeadCellProps;\n\n const tableCellProps = {\n ...mTableHeadCellProps,\n ...mcTableHeadCellProps,\n };\n\n const headerElement = ((columnDef?.Header instanceof Function\n ? columnDef?.Header?.({\n header,\n table,\n })\n : columnDef?.Header) ?? columnDef.header) as ReactNode;\n\n const getIsLastLeftPinnedColumn = () => {\n return (\n column.getIsPinned() === 'left' &&\n table.getLeftLeafHeaders().length - 1 === column.getPinnedIndex()\n );\n };\n\n const getIsFirstRightPinnedColumn = () => {\n return column.getIsPinned() === 'right' && column.getPinnedIndex() === 0;\n };\n\n const getTotalRight = () => {\n return (\n (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150\n );\n };\n\n const tableHeadCellRef = React.useRef<HTMLElement>(null);\n\n const [isDragging, setIsDragging] = useState(false);\n\n const handleDragStart = (e: DragEvent<HTMLButtonElement>) => {\n setIsDragging(true);\n e.dataTransfer.setDragImage(tableHeadCellRef.current as HTMLElement, 0, 0);\n };\n\n const handleDragEnd = (_e: DragEvent<HTMLButtonElement>) => {\n setIsDragging(false);\n setCurrentHoveredColumn(null);\n if (currentHoveredColumn) {\n setColumnOrder(reorderColumn(column, currentHoveredColumn, columnOrder));\n }\n };\n\n const handleDragEnter = (_e: DragEvent) => {\n setCurrentHoveredColumn(columnDefType === 'data' ? column : null);\n };\n\n return (\n <TableCell\n align={columnDefType === 'group' ? 'center' : 'left'}\n colSpan={header.colSpan}\n onDragEnter={handleDragEnter}\n ref={tableHeadCellRef}\n {...tableCellProps}\n sx={(theme: Theme) => ({\n backgroundColor:\n column.getIsPinned() && columnDefType !== 'group'\n ? alpha(lighten(theme.palette.background.default, 0.04), 0.95)\n : 'inherit',\n backgroundImage: 'inherit',\n border: isDragging\n ? `2px dashed ${theme.palette.divider}`\n : currentHoveredColumn?.id === column.id\n ? `2px dashed ${theme.palette.primary.main}`\n : undefined,\n boxShadow: getIsLastLeftPinnedColumn()\n ? `4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`\n : getIsFirstRightPinnedColumn()\n ? `-4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`\n : undefined,\n fontWeight: 'bold',\n left:\n column.getIsPinned() === 'left'\n ? `${column.getStart('left')}px`\n : undefined,\n overflow: 'visible',\n opacity: isDragging ? 0.5 : 1,\n p:\n density === 'compact'\n ? columnDefType === 'display'\n ? '0 0.5rem'\n : '0.5rem'\n : density === 'comfortable'\n ? columnDefType === 'display'\n ? '0.5rem 0.75rem'\n : '1rem'\n : columnDefType === 'display'\n ? '1rem 1.25rem'\n : '1.5rem',\n pb: columnDefType === 'display' ? 0 : undefined,\n position:\n column.getIsPinned() && columnDefType !== 'group'\n ? 'sticky'\n : undefined,\n pt:\n columnDefType === 'group'\n ? 0\n : density === 'compact'\n ? '0.25'\n : density === 'comfortable'\n ? '.75rem'\n : '1.25rem',\n right:\n column.getIsPinned() === 'right' ? `${getTotalRight()}px` : undefined,\n transition: `all ${enableColumnResizing ? 0 : '0.2s'} ease-in-out`,\n userSelect: enableMultiSort && column.getCanSort() ? 'none' : undefined,\n verticalAlign: 'text-top',\n zIndex: column.getIsResizing()\n ? 3\n : column.getIsPinned() && columnDefType !== 'group'\n ? 2\n : 1,\n ...(tableCellProps?.sx as any),\n maxWidth: `min(${column.getSize()}px, fit-content)`,\n minWidth: `max(${column.getSize()}px, ${columnDef.minSize ?? 30}px)`,\n width: header.getSize(),\n })}\n >\n {header.isPlaceholder ? null : columnDefType === 'display' ? (\n headerElement\n ) : (\n <Box\n sx={{\n alignItems: 'flex-start',\n display: 'flex',\n justifyContent:\n columnDefType === 'group' ? 'center' : 'space-between',\n opacity: isDragging ? 0.5 : 1,\n position: 'relative',\n width: '100%',\n }}\n >\n <Box\n onClick={column.getToggleSortingHandler()}\n sx={{\n alignItems: 'center',\n cursor:\n column.getCanSort() && columnDefType !== 'group'\n ? 'pointer'\n : undefined,\n display: 'flex',\n flexWrap: 'nowrap',\n whiteSpace:\n (columnDef.header?.length ?? 0) < 24 ? 'nowrap' : 'normal',\n }}\n >\n {headerElement}\n {columnDefType === 'data' && column.getCanSort() && (\n <MRT_TableHeadCellSortLabel header={header} table={table} />\n )}\n {columnDefType === 'data' && column.getCanFilter() && (\n <MRT_TableHeadCellFilterLabel header={header} table={table} />\n )}\n </Box>\n <Box sx={{ whiteSpace: 'nowrap' }}>\n {columnDefType === 'data' &&\n ((enableColumnOrdering &&\n columnDef.enableColumnOrdering !== false) ||\n (enableGrouping && columnDef.enableGrouping !== false)) && (\n <MRT_GrabHandleButton\n handleDragStart={handleDragStart}\n handleDragEnd={handleDragEnd}\n table={table}\n />\n )}\n {(enableColumnActions || columnDef.enableColumnActions) &&\n columnDef.enableColumnActions !== false &&\n columnDefType !== 'group' && (\n <MRT_TableHeadCellColumnActionsButton\n header={header}\n table={table}\n />\n )}\n </Box>\n {column.getCanResize() && (\n <MRT_TableHeadCellResizeHandle header={header} table={table} />\n )}\n </Box>\n )}\n {columnDefType === 'data' && column.getCanFilter() && (\n <MRT_TableHeadCellFilterContainer header={header} table={table} />\n )}\n </TableCell>\n );\n};\n","import React, { Dispatch, FC, SetStateAction } from 'react';\nimport { alpha, lighten, TableRow } from '@mui/material';\nimport { MRT_TableHeadCell } from './MRT_TableHeadCell';\nimport type {\n MRT_Column,\n MRT_Header,\n MRT_HeaderGroup,\n MRT_TableInstance,\n} from '..';\n\ninterface Props {\n currentHoveredColumn: MRT_Column | null;\n setCurrentHoveredColumn: Dispatch<SetStateAction<MRT_Column | null>>;\n headerGroup: MRT_HeaderGroup;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadRow: FC<Props> = ({\n currentHoveredColumn,\n setCurrentHoveredColumn,\n headerGroup,\n table,\n}) => {\n const {\n options: { muiTableHeadRowProps },\n } = table;\n\n const tableRowProps =\n muiTableHeadRowProps instanceof Function\n ? muiTableHeadRowProps({ headerGroup, table })\n : muiTableHeadRowProps;\n\n return (\n <TableRow\n {...tableRowProps}\n sx={(theme) => ({\n boxShadow: `4px 0 8px ${alpha(theme.palette.common.black, 0.1)}`,\n backgroundColor: lighten(theme.palette.background.default, 0.04),\n ...(tableRowProps?.sx as any),\n })}\n >\n {headerGroup.headers.map((header: MRT_Header, index) => (\n <MRT_TableHeadCell\n currentHoveredColumn={currentHoveredColumn}\n setCurrentHoveredColumn={setCurrentHoveredColumn}\n header={header}\n key={header.id || index}\n table={table}\n />\n ))}\n </TableRow>\n );\n};\n","import React, { Dispatch, FC, SetStateAction } from 'react';\nimport { TableHead } from '@mui/material';\nimport { MRT_TableHeadRow } from './MRT_TableHeadRow';\nimport type { MRT_Column, MRT_TableInstance } from '..';\n\ninterface Props {\n currentHoveredColumn: MRT_Column | null;\n setCurrentHoveredColumn: Dispatch<SetStateAction<MRT_Column | null>>;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableHead: FC<Props> = ({\n currentHoveredColumn,\n setCurrentHoveredColumn,\n table,\n}) => {\n const {\n getHeaderGroups,\n options: { muiTableHeadProps },\n } = table;\n\n const tableHeadProps =\n muiTableHeadProps instanceof Function\n ? muiTableHeadProps({ table })\n : muiTableHeadProps;\n\n return (\n <TableHead {...tableHeadProps}>\n {getHeaderGroups().map((headerGroup) => (\n <MRT_TableHeadRow\n currentHoveredColumn={currentHoveredColumn}\n setCurrentHoveredColumn={setCurrentHoveredColumn}\n headerGroup={headerGroup as any}\n key={headerGroup.id}\n table={table}\n />\n ))}\n </TableHead>\n );\n};\n","import React, {\n ChangeEvent,\n FC,\n FocusEvent,\n MouseEvent,\n useState,\n} from 'react';\nimport { TextField } from '@mui/material';\nimport type { MRT_Cell, MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n cell: MRT_Cell;\n table: MRT_TableInstance;\n}\n\nexport const MRT_EditCellTextField: FC<Props> = ({ cell, table }) => {\n const {\n getState,\n options: {\n tableId,\n enableEditing,\n muiTableBodyCellEditTextFieldProps,\n onCellEditBlur,\n onCellEditChange,\n },\n setCurrentEditingCell,\n setCurrentEditingRow,\n } = table;\n const { column, row } = cell;\n const { columnDef } = column;\n\n const [value, setValue] = useState(cell.getValue());\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setValue(event.target.value);\n columnDef.onCellEditChange?.({ event, cell, table });\n onCellEditChange?.({ event, cell, table });\n };\n\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n if (getState().currentEditingRow) {\n if (!row._valuesCache) row._valuesCache = {};\n (row._valuesCache as Record<string, any>)[column.id] = value;\n setCurrentEditingRow({ ...getState().currentEditingRow } as MRT_Row);\n }\n setCurrentEditingCell(null);\n columnDef.onCellEditBlur?.({ event, cell, table });\n onCellEditBlur?.({ event, cell, table });\n };\n\n const mTableBodyCellEditTextFieldProps =\n muiTableBodyCellEditTextFieldProps instanceof Function\n ? muiTableBodyCellEditTextFieldProps({ cell, table })\n : muiTableBodyCellEditTextFieldProps;\n\n const mcTableBodyCellEditTextFieldProps =\n columnDef.muiTableBodyCellEditTextFieldProps instanceof Function\n ? columnDef.muiTableBodyCellEditTextFieldProps({\n cell,\n table,\n })\n : columnDef.muiTableBodyCellEditTextFieldProps;\n\n const textFieldProps = {\n ...mTableBodyCellEditTextFieldProps,\n ...mcTableBodyCellEditTextFieldProps,\n };\n\n if (enableEditing && columnDef.enableEditing !== false && columnDef.Edit) {\n return <>{columnDef.Edit?.({ cell, table })}</>;\n }\n\n return (\n <TextField\n id={`mrt-${tableId}-edit-cell-text-field-${cell.id}`}\n margin=\"dense\"\n onBlur={handleBlur}\n onChange={handleChange}\n onClick={(e: MouseEvent<HTMLInputElement>) => e.stopPropagation()}\n placeholder={columnDef.header}\n value={value}\n variant=\"standard\"\n {...textFieldProps}\n />\n );\n};\n","import React, { FC, ReactNode, useState } from 'react';\nimport { Button, Tooltip } from '@mui/material';\nimport { MRT_Cell, MRT_TableInstance } from '..';\n\ninterface Props {\n cell: MRT_Cell;\n children: ReactNode;\n table: MRT_TableInstance;\n}\n\nexport const MRT_CopyButton: FC<Props> = ({ cell, children, table }) => {\n const {\n options: { localization, muiTableBodyCellCopyButtonProps },\n } = table;\n const { column } = cell;\n const { columnDef } = column;\n\n const [copied, setCopied] = useState(false);\n\n const handleCopy = (text: unknown) => {\n navigator.clipboard.writeText(text as string);\n setCopied(true);\n setTimeout(() => setCopied(false), 4000);\n };\n\n const mTableBodyCellCopyButtonProps =\n muiTableBodyCellCopyButtonProps instanceof Function\n ? muiTableBodyCellCopyButtonProps({ cell, table })\n : muiTableBodyCellCopyButtonProps;\n\n const mcTableBodyCellCopyButtonProps =\n columnDef.muiTableBodyCellCopyButtonProps instanceof Function\n ? columnDef.muiTableBodyCellCopyButtonProps({\n cell,\n table,\n })\n : columnDef.muiTableBodyCellCopyButtonProps;\n\n const buttonProps = {\n ...mTableBodyCellCopyButtonProps,\n ...mcTableBodyCellCopyButtonProps,\n };\n\n return (\n <Tooltip\n arrow\n enterDelay={1000}\n enterNextDelay={1000}\n placement=\"top\"\n title={copied ? localization.copiedToClipboard : localization.clickToCopy}\n >\n <Button\n aria-label={localization.clickToCopy}\n onClick={() => handleCopy(cell.getValue())}\n size=\"small\"\n type=\"button\"\n variant=\"text\"\n {...buttonProps}\n sx={{\n backgroundColor: 'transparent',\n border: 'none',\n color: 'inherit',\n cursor: 'copy',\n fontFamily: 'inherit',\n fontSize: 'inherit',\n letterSpacing: 'inherit',\n m: '-0.25rem',\n minWidth: 'unset',\n textAlign: 'inherit',\n textTransform: 'inherit',\n ...buttonProps?.sx,\n }}\n >\n {children}\n </Button>\n </Tooltip>\n );\n};\n","import React, {\n Dispatch,\n DragEvent,\n FC,\n MouseEvent,\n SetStateAction,\n useMemo,\n} from 'react';\nimport { alpha, darken, lighten, Skeleton, TableCell } from '@mui/material';\nimport { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';\nimport { MRT_CopyButton } from '../buttons/MRT_CopyButton';\nimport type { MRT_Cell, MRT_Column, MRT_TableInstance } from '..';\n\ninterface Props {\n cell: MRT_Cell;\n enableHover?: boolean;\n rowIndex: number;\n setCurrentHoveredColumn: Dispatch<SetStateAction<MRT_Column | null>>;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableBodyCell: FC<Props> = ({\n cell,\n enableHover,\n rowIndex,\n setCurrentHoveredColumn,\n table,\n}) => {\n const {\n getState,\n options: {\n editingMode,\n enableClickToCopy,\n enableEditing,\n enableRowNumbers,\n muiTableBodyCellProps,\n muiTableBodyCellSkeletonProps,\n rowNumberMode,\n tableId,\n },\n setCurrentEditingCell,\n } = table;\n const {\n currentEditingCell,\n currentEditingRow,\n density,\n isLoading,\n showSkeletons,\n } = getState();\n const { column, row } = cell;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const mTableCellBodyProps =\n muiTableBodyCellProps instanceof Function\n ? muiTableBodyCellProps({ cell, table })\n : muiTableBodyCellProps;\n\n const mcTableCellBodyProps =\n columnDef.muiTableBodyCellProps instanceof Function\n ? columnDef.muiTableBodyCellProps({ cell, table })\n : columnDef.muiTableBodyCellProps;\n\n const tableCellProps = {\n ...mTableCellBodyProps,\n ...mcTableCellBodyProps,\n };\n\n const skeletonWidth = useMemo(\n () =>\n columnDefType === 'display'\n ? column.getSize() / 2\n : Math.random() * (column.getSize() - column.getSize() / 3) +\n column.getSize() / 3,\n [],\n );\n\n const isEditable =\n (enableEditing || columnDef.enableEditing) &&\n columnDef.enableEditing !== false;\n\n const isEditing =\n isEditable &&\n (editingMode === 'table' ||\n currentEditingRow?.id === row.id ||\n currentEditingCell?.id === cell.id);\n\n const handleDoubleClick = (_event: MouseEvent<HTMLTableCellElement>) => {\n if (\n (enableEditing || columnDef.enableEditing) &&\n columnDef.enableEditing !== false &&\n editingMode === 'cell'\n ) {\n setCurrentEditingCell(cell);\n setTimeout(() => {\n const textField = document.getElementById(\n `mrt-${tableId}-edit-cell-text-field-${cell.id}`,\n ) as HTMLInputElement;\n if (textField) {\n textField.focus();\n textField.select();\n }\n }, 200);\n }\n };\n\n const getIsLastLeftPinnedColumn = () => {\n return (\n column.getIsPinned() === 'left' &&\n table.getLeftLeafHeaders().length - 1 === column.getPinnedIndex()\n );\n };\n\n const getIsFirstRightPinnedColumn = () => {\n return column.getIsPinned() === 'right' && column.getPinnedIndex() === 0;\n };\n\n const getTotalRight = () => {\n return (\n (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150\n );\n };\n\n const handleDragEnter = (_e: DragEvent) => {\n setCurrentHoveredColumn(columnDefType === 'data' ? column : null);\n };\n\n return (\n <TableCell\n onDoubleClick={handleDoubleClick}\n onDragEnter={handleDragEnter}\n {...tableCellProps}\n sx={(theme) => ({\n backgroundColor: column.getIsPinned()\n ? alpha(lighten(theme.palette.background.default, 0.04), 0.95)\n : undefined,\n boxShadow: getIsLastLeftPinnedColumn()\n ? `4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`\n : getIsFirstRightPinnedColumn()\n ? `-4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`\n : undefined,\n cursor: isEditable && editingMode === 'cell' ? 'pointer' : 'text',\n left:\n column.getIsPinned() === 'left'\n ? `${column.getStart('left')}px`\n : undefined,\n overflow: 'hidden',\n p:\n density === 'compact'\n ? columnDefType === 'display'\n ? '0 0.5rem'\n : '0.5rem'\n : density === 'comfortable'\n ? columnDefType === 'display'\n ? '0.5rem 0.75rem'\n : '1rem'\n : columnDefType === 'display'\n ? '1rem 1.25rem'\n : '1.5rem',\n pl:\n column.id === 'mrt-expand'\n ? `${\n row.depth +\n (density === 'compact'\n ? 0.5\n : density === 'comfortable'\n ? 0.75\n : 1.25)\n }rem`\n : undefined,\n position: column.getIsPinned() ? 'sticky' : 'relative',\n right:\n column.getIsPinned() === 'right' ? `${getTotalRight()}px` : undefined,\n textOverflow: columnDefType !== 'display' ? 'ellipsis' : undefined,\n transition: 'all 0.2s ease-in-out',\n whiteSpace: density === 'compact' ? 'nowrap' : 'normal',\n zIndex: column.getIsPinned() ? 1 : undefined,\n '&:hover': {\n backgroundColor:\n enableHover && enableEditing && editingMode !== 'row'\n ? theme.palette.mode === 'dark'\n ? `${lighten(\n theme.palette.background.default,\n 0.13,\n )} !important`\n : `${darken(theme.palette.background.default, 0.07)} !important`\n : undefined,\n },\n ...(tableCellProps?.sx as any),\n maxWidth: `min(${column.getSize()}px, fit-content)`,\n minWidth: `max(${column.getSize()}px, ${columnDef.minSize ?? 30}px)`,\n width: column.getSize(),\n })}\n >\n <>\n {cell.getIsPlaceholder() ? null : isLoading || showSkeletons ? (\n <Skeleton\n animation=\"wave\"\n height={20}\n width={skeletonWidth}\n {...muiTableBodyCellSkeletonProps}\n />\n ) : enableRowNumbers &&\n rowNumberMode === 'static' &&\n column.id === 'mrt-row-numbers' ? (\n rowIndex + 1\n ) : columnDefType === 'display' ? (\n columnDef.Cell?.({ cell, table })\n ) : isEditing ? (\n <MRT_EditCellTextField cell={cell} table={table} />\n ) : (enableClickToCopy || columnDef.enableClickToCopy) &&\n columnDef.enableClickToCopy !== false ? (\n <>\n <MRT_CopyButton cell={cell} table={table}>\n <>{columnDef?.Cell?.({ cell, table }) ?? cell.renderValue()}</>\n </MRT_CopyButton>\n {cell.getIsGrouped() && <> ({row.subRows?.length})</>}\n </>\n ) : (\n <>\n {columnDef?.Cell?.({ cell, table }) ?? cell.renderValue()}\n {cell.getIsGrouped() && <> ({row.subRows?.length ?? ''})</>}\n </>\n )}\n </>\n </TableCell>\n );\n};\n","import React, { FC } from 'react';\nimport { Collapse, TableCell, TableRow } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableDetailPanel: FC<Props> = ({ row, table }) => {\n const {\n getVisibleLeafColumns,\n options: {\n muiTableBodyRowProps,\n muiTableDetailPanelProps,\n renderDetailPanel,\n },\n } = table;\n\n const tableRowProps =\n muiTableBodyRowProps instanceof Function\n ? muiTableBodyRowProps({ row, table })\n : muiTableBodyRowProps;\n\n const tableCellProps =\n muiTableDetailPanelProps instanceof Function\n ? muiTableDetailPanelProps({ row, table })\n : muiTableDetailPanelProps;\n\n return (\n <TableRow {...tableRowProps}>\n <TableCell\n colSpan={getVisibleLeafColumns().length}\n {...tableCellProps}\n sx={{\n borderBottom: !row.getIsExpanded() ? 'none' : undefined,\n pb: row.getIsExpanded() ? '1rem' : 0,\n pt: row.getIsExpanded() ? '1rem' : 0,\n transition: 'all 0.2s ease-in-out',\n width: `${table.getTotalSize()}px`,\n ...tableCellProps?.sx,\n }}\n >\n {renderDetailPanel && (\n <Collapse in={row.getIsExpanded()}>\n {renderDetailPanel({ row, table })}\n </Collapse>\n )}\n </TableCell>\n </TableRow>\n );\n};\n","import React, { Dispatch, FC, SetStateAction } from 'react';\nimport { darken, lighten, TableRow } from '@mui/material';\nimport { MRT_TableBodyCell } from './MRT_TableBodyCell';\nimport { MRT_TableDetailPanel } from './MRT_TableDetailPanel';\nimport type { MRT_Column, MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n rowIndex: number;\n setCurrentHoveredColumn: Dispatch<SetStateAction<MRT_Column | null>>;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableBodyRow: FC<Props> = ({\n row,\n rowIndex,\n setCurrentHoveredColumn,\n table,\n}) => {\n const {\n getIsSomeColumnsPinned,\n options: { muiTableBodyRowProps, renderDetailPanel },\n } = table;\n\n const tableRowProps =\n muiTableBodyRowProps instanceof Function\n ? muiTableBodyRowProps({ row, table })\n : muiTableBodyRowProps;\n\n return (\n <>\n <TableRow\n hover\n selected={row.getIsSelected()}\n {...tableRowProps}\n sx={(theme) => ({\n backgroundColor: lighten(theme.palette.background.default, 0.06),\n transition: 'all 0.2s ease-in-out',\n '&:hover td': {\n backgroundColor:\n tableRowProps?.hover !== false && getIsSomeColumnsPinned()\n ? theme.palette.mode === 'dark'\n ? `${lighten(theme.palette.background.default, 0.12)}`\n : `${darken(theme.palette.background.default, 0.05)}`\n : undefined,\n },\n ...(tableRowProps?.sx as any),\n })}\n >\n {row?.getVisibleCells()?.map?.((cell) => (\n <MRT_TableBodyCell\n cell={cell}\n key={cell.id}\n enableHover={tableRowProps?.hover !== false}\n rowIndex={rowIndex}\n setCurrentHoveredColumn={setCurrentHoveredColumn}\n table={table}\n />\n ))}\n </TableRow>\n {renderDetailPanel && !row.getIsGrouped() && (\n <MRT_TableDetailPanel row={row} table={table} />\n )}\n </>\n );\n};\n","import React, { Dispatch, FC, RefObject, SetStateAction, useMemo } from 'react';\nimport { useVirtual } from 'react-virtual';\nimport { TableBody } from '@mui/material';\nimport { MRT_TableBodyRow } from './MRT_TableBodyRow';\nimport { rankGlobalFuzzy } from '../sortingFns';\nimport type { MRT_Column, MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n setCurrentHoveredColumn: Dispatch<SetStateAction<MRT_Column | null>>;\n tableContainerRef: RefObject<HTMLDivElement>;\n}\n\nexport const MRT_TableBody: FC<Props> = ({\n setCurrentHoveredColumn,\n table,\n tableContainerRef,\n}) => {\n const {\n getRowModel,\n getPrePaginationRowModel,\n getState,\n options: {\n enableGlobalFilterRankedResults,\n enablePagination,\n enableRowVirtualization,\n muiTableBodyProps,\n virtualizerProps,\n },\n } = table;\n const { density, globalFilter, pagination, sorting } = getState();\n\n const tableBodyProps =\n muiTableBodyProps instanceof Function\n ? muiTableBodyProps({ table })\n : muiTableBodyProps;\n\n const getIsSomeColumnsSorted = () => {\n return Object.values(sorting).some(Boolean);\n };\n\n const rows = useMemo(() => {\n if (\n enableGlobalFilterRankedResults &&\n globalFilter &&\n !getIsSomeColumnsSorted()\n ) {\n const rankedRows = getPrePaginationRowModel().rows.sort((a, b) =>\n rankGlobalFuzzy(a, b),\n );\n if (enablePagination) {\n return rankedRows.slice(0, pagination.pageSize);\n }\n return rankedRows;\n }\n\n return enablePagination\n ? getRowModel().rows\n : getPrePaginationRowModel().rows;\n }, [\n enableGlobalFilterRankedResults,\n (enableGlobalFilterRankedResults && globalFilter) || !enablePagination\n ? getPrePaginationRowModel().rows\n : getRowModel().rows,\n globalFilter,\n ]);\n\n const rowVirtualizer = enableRowVirtualization\n ? useVirtual({\n // estimateSize: () => (density === 'compact' ? 25 : 50),\n overscan: density === 'compact' ? 30 : 10,\n parentRef: tableContainerRef,\n size: rows.length,\n ...virtualizerProps,\n })\n : ({} as any);\n\n const virtualRows = enableRowVirtualization\n ? rowVirtualizer.virtualItems\n : [];\n\n let paddingTop = 0;\n let paddingBottom = 0;\n if (enableRowVirtualization) {\n paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0;\n paddingBottom =\n virtualRows.length > 0\n ? rowVirtualizer.totalSize - virtualRows[virtualRows.length - 1].end\n : 0;\n }\n\n return (\n <TableBody {...tableBodyProps}>\n {enableRowVirtualization && paddingTop > 0 && (\n <tr>\n <td style={{ height: `${paddingTop}px` }} />\n </tr>\n )}\n {(enableRowVirtualization ? virtualRows : rows).map(\n (rowOrVirtualRow: any, rowIndex: number) => {\n const row = enableRowVirtualization\n ? (rows[rowOrVirtualRow.index] as MRT_Row)\n : (rowOrVirtualRow as MRT_Row);\n return (\n <MRT_TableBodyRow\n key={row.id}\n row={row}\n rowIndex={\n enableRowVirtualization ? rowOrVirtualRow.index : rowIndex\n }\n setCurrentHoveredColumn={setCurrentHoveredColumn}\n table={table}\n />\n );\n },\n )}\n {enableRowVirtualization && paddingBottom > 0 && (\n <tr>\n <td style={{ height: `${paddingBottom}px` }} />\n </tr>\n )}\n </TableBody>\n );\n};\n","import React, { FC } from 'react';\nimport { alpha, TableCell } from '@mui/material';\nimport type { MRT_Header, MRT_TableInstance } from '..';\n\ninterface Props {\n footer: MRT_Header;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableFooterCell: FC<Props> = ({ footer, table }) => {\n const {\n getState,\n options: { muiTableFooterCellProps, enableColumnResizing },\n } = table;\n const { density } = getState();\n const { column } = footer;\n const { columnDef } = column;\n const { columnDefType } = columnDef;\n\n const mTableFooterCellProps =\n muiTableFooterCellProps instanceof Function\n ? muiTableFooterCellProps({ column, table })\n : muiTableFooterCellProps;\n\n const mcTableFooterCellProps =\n columnDef.muiTableFooterCellProps instanceof Function\n ? columnDef.muiTableFooterCellProps({ column, table })\n : columnDef.muiTableFooterCellProps;\n\n const tableCellProps = {\n ...mTableFooterCellProps,\n ...mcTableFooterCellProps,\n };\n\n return (\n <TableCell\n align={columnDefType === 'group' ? 'center' : 'left'}\n colSpan={footer.colSpan}\n variant=\"head\"\n {...tableCellProps}\n sx={(theme) => ({\n backgroundColor: theme.palette.background.default,\n backgroundImage: `linear-gradient(${alpha(\n theme.palette.common.white,\n 0.05,\n )},${alpha(theme.palette.common.white, 0.05)})`,\n fontWeight: 'bold',\n maxWidth: `${column.getSize()}px`,\n minWidth: `${column.getSize()}px`,\n p:\n density === 'compact'\n ? '0.5rem'\n : density === 'comfortable'\n ? '1rem'\n : '1.5rem',\n transition: `all ${enableColumnResizing ? '10ms' : '0.2s'} ease-in-out`,\n width: column.getSize(),\n verticalAlign: 'text-top',\n ...(tableCellProps?.sx as any),\n })}\n >\n <>\n {footer.isPlaceholder\n ? null\n : (columnDef.Footer instanceof Function\n ? columnDef.Footer?.({\n footer,\n table,\n })\n : columnDef.Footer) ??\n columnDef.footer ??\n null}\n </>\n </TableCell>\n );\n};\n","import React, { FC } from 'react';\nimport { TableRow } from '@mui/material';\nimport { MRT_TableFooterCell } from './MRT_TableFooterCell';\nimport type { MRT_Header, MRT_HeaderGroup, MRT_TableInstance } from '..';\n\ninterface Props {\n footerGroup: MRT_HeaderGroup;\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableFooterRow: FC<Props> = ({ footerGroup, table }) => {\n const {\n options: { muiTableFooterRowProps },\n } = table;\n\n // if no content in row, skip row\n if (\n !footerGroup.headers?.some(\n (header) =>\n (typeof header.column.columnDef.footer === 'string' &&\n !!header.column.columnDef.footer) ||\n header.column.columnDef.Footer,\n )\n )\n return null;\n\n const tableRowProps =\n muiTableFooterRowProps instanceof Function\n ? muiTableFooterRowProps({ footerGroup, table })\n : muiTableFooterRowProps;\n\n return (\n <TableRow {...tableRowProps}>\n {footerGroup.headers.map((footer: MRT_Header) => (\n <MRT_TableFooterCell footer={footer} key={footer.id} table={table} />\n ))}\n </TableRow>\n );\n};\n","import React, { FC } from 'react';\nimport { TableFooter } from '@mui/material';\nimport { MRT_TableFooterRow } from './MRT_TableFooterRow';\nimport type { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableFooter: FC<Props> = ({ table }) => {\n const {\n getFooterGroups,\n options: { muiTableFooterProps },\n } = table;\n\n const tableFooterProps =\n muiTableFooterProps instanceof Function\n ? muiTableFooterProps({ table })\n : muiTableFooterProps;\n\n return (\n <TableFooter {...tableFooterProps}>\n {getFooterGroups().map((footerGroup) => (\n <MRT_TableFooterRow\n footerGroup={footerGroup as any}\n key={footerGroup.id}\n table={table}\n />\n ))}\n </TableFooter>\n );\n};\n","import React, { FC, RefObject, useState } from 'react';\nimport { Table } from '@mui/material';\nimport { MRT_TableHead } from '../head/MRT_TableHead';\nimport { MRT_TableBody } from '../body/MRT_TableBody';\nimport { MRT_TableFooter } from '../footer/MRT_TableFooter';\nimport { MRT_Column, MRT_TableInstance } from '..';\n\ninterface Props {\n tableContainerRef: RefObject<HTMLDivElement>;\n table: MRT_TableInstance;\n}\n\nexport const MRT_Table: FC<Props> = ({ tableContainerRef, table }) => {\n const {\n getState,\n options: {\n enableColumnResizing,\n enableRowVirtualization,\n enableStickyHeader,\n enableTableFooter,\n enableTableHead,\n muiTableProps,\n },\n } = table;\n const { isFullScreen } = getState();\n\n const tableProps =\n muiTableProps instanceof Function\n ? muiTableProps({ table })\n : muiTableProps;\n\n const [currentHoveredColumn, setCurrentHoveredColumn] =\n useState<MRT_Column | null>(null);\n\n return (\n <Table\n stickyHeader={\n enableStickyHeader || enableRowVirtualization || isFullScreen\n }\n {...tableProps}\n sx={{\n tableLayout:\n enableColumnResizing || enableRowVirtualization ? 'fixed' : 'auto',\n ...tableProps?.sx,\n }}\n >\n {enableTableHead && (\n <MRT_TableHead\n currentHoveredColumn={currentHoveredColumn}\n setCurrentHoveredColumn={setCurrentHoveredColumn}\n table={table}\n />\n )}\n <MRT_TableBody\n setCurrentHoveredColumn={setCurrentHoveredColumn}\n tableContainerRef={tableContainerRef}\n table={table}\n />\n {enableTableFooter && <MRT_TableFooter table={table} />}\n </Table>\n );\n};\n","import React, { FC, useEffect, useLayoutEffect, useState } from 'react';\nimport { TableContainer } from '@mui/material';\nimport { MRT_Table } from './MRT_Table';\nimport type { MRT_TableInstance } from '..';\n\nconst useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_TableContainer: FC<Props> = ({ table }) => {\n const {\n getState,\n options: {\n enableStickyHeader,\n enableRowVirtualization,\n muiTableContainerProps,\n tableId,\n },\n } = table;\n const { isFullScreen } = getState();\n\n const [totalToolbarHeight, setTotalToolbarHeight] = useState(0);\n\n const tableContainerProps =\n muiTableContainerProps instanceof Function\n ? muiTableContainerProps({ table })\n : muiTableContainerProps;\n\n useIsomorphicLayoutEffect(() => {\n const topToolbarHeight =\n typeof document !== 'undefined'\n ? document?.getElementById(`mrt-${tableId}-toolbar-top`)\n ?.offsetHeight ?? 0\n : 0;\n\n const bottomToolbarHeight =\n typeof document !== 'undefined'\n ? document?.getElementById(`mrt-${tableId}-toolbar-bottom`)\n ?.offsetHeight ?? 0\n : 0;\n\n setTotalToolbarHeight(topToolbarHeight + bottomToolbarHeight);\n });\n\n const tableContainerRef = React.useRef<HTMLDivElement>(null);\n\n return (\n <TableContainer\n ref={tableContainerRef}\n {...tableContainerProps}\n sx={{\n maxWidth: '100%',\n maxHeight:\n enableStickyHeader || enableRowVirtualization\n ? `clamp(350px, calc(100vh - ${totalToolbarHeight}px), 9999px)`\n : undefined,\n overflow: 'auto',\n ...tableContainerProps?.sx,\n }}\n style={{\n maxHeight: isFullScreen\n ? `calc(100vh - ${totalToolbarHeight}px)`\n : undefined,\n ...tableContainerProps?.style,\n }}\n >\n <MRT_Table tableContainerRef={tableContainerRef} table={table} />\n </TableContainer>\n );\n};\n","import React, { FC, useEffect } from 'react';\nimport { Paper } from '@mui/material';\nimport { MRT_ToolbarTop } from '../toolbar/MRT_ToolbarTop';\nimport { MRT_ToolbarBottom } from '../toolbar/MRT_ToolbarBottom';\nimport { MRT_TableContainer } from './MRT_TableContainer';\nimport type { MRT_TableInstance } from '..';\n\ninterface Props {\n table: MRT_TableInstance;\n}\n\nexport const MRT_TablePaper: FC<Props> = ({ table }) => {\n const {\n getState,\n options: { enableToolbarBottom, enableToolbarTop, muiTablePaperProps },\n } = table;\n const { isFullScreen } = getState();\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n if (isFullScreen) {\n document.body.style.height = '100vh';\n } else {\n document.body.style.height = 'auto';\n }\n }\n }, [isFullScreen]);\n\n const tablePaperProps =\n muiTablePaperProps instanceof Function\n ? muiTablePaperProps({ table })\n : muiTablePaperProps;\n\n return (\n <Paper\n elevation={2}\n {...tablePaperProps}\n sx={{\n transition: 'all 0.2s ease-in-out',\n ...tablePaperProps?.sx,\n }}\n style={{\n ...tablePaperProps?.style,\n height: isFullScreen ? '100vh' : undefined,\n margin: isFullScreen ? '0' : undefined,\n maxHeight: isFullScreen ? '100vh' : undefined,\n maxWidth: isFullScreen ? '100vw' : undefined,\n padding: isFullScreen ? '0' : undefined,\n width: isFullScreen ? '100vw' : undefined,\n }}\n >\n {enableToolbarTop && <MRT_ToolbarTop table={table} />}\n <MRT_TableContainer table={table} />\n {enableToolbarBottom && <MRT_ToolbarBottom table={table} />}\n </Paper>\n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport {\n TableState,\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport {\n MRT_Cell,\n MRT_ColumnDef,\n MRT_FilterOption,\n MRT_Row,\n MRT_TableInstance,\n MRT_TableState,\n} from '..';\nimport { MRT_ExpandAllButton } from '../buttons/MRT_ExpandAllButton';\nimport { MRT_ExpandButton } from '../buttons/MRT_ExpandButton';\nimport { MRT_ToggleRowActionMenuButton } from '../buttons/MRT_ToggleRowActionMenuButton';\nimport { MRT_SelectCheckbox } from '../inputs/MRT_SelectCheckbox';\nimport { MaterialReactTableProps } from '../MaterialReactTable';\nimport { MRT_TablePaper } from './MRT_TablePaper';\nimport { Box, Dialog, Grow } from '@mui/material';\nimport {\n prepareColumns,\n getAllLeafColumnDefs,\n getDefaultColumnOrderIds,\n} from '../utils';\nimport { MRT_FilterFns } from '../filtersFns';\n\nexport const MRT_TableRoot = <D extends Record<string, any> = {}>(\n props: MaterialReactTableProps<D>,\n) => {\n const [tableId, setIdPrefix] = useState(props.tableId);\n useEffect(\n () =>\n setIdPrefix(props.tableId ?? Math.random().toString(36).substring(2, 9)),\n [props.tableId],\n );\n\n const initialState: Partial<MRT_TableState<D>> = useMemo(() => {\n const initState = props.initialState ?? {};\n initState.columnOrder =\n initState.columnOrder ?? getDefaultColumnOrderIds(props);\n return initState;\n }, []);\n\n const [columnOrder, setColumnOrder] = useState(\n initialState.columnOrder ?? [],\n );\n const [currentEditingCell, setCurrentEditingCell] =\n useState<MRT_Cell<D> | null>(initialState?.currentEditingCell ?? null);\n const [currentEditingRow, setCurrentEditingRow] = useState<MRT_Row<D> | null>(\n initialState?.currentEditingRow ?? null,\n );\n const [density, setDensity] = useState(\n initialState?.density ?? 'comfortable',\n );\n const [isFullScreen, setIsFullScreen] = useState(\n initialState?.isFullScreen ?? false,\n );\n const [showAlertBanner, setShowAlertBanner] = useState(\n props.initialState?.showAlertBanner ?? false,\n );\n const [showFilters, setShowFilters] = useState(\n initialState?.showFilters ?? false,\n );\n const [showGlobalFilter, setShowGlobalFilter] = useState(\n initialState?.showGlobalFilter ?? false,\n );\n\n const [currentFilterFns, setCurrentFilterFns] = useState<{\n [key: string]: MRT_FilterOption;\n }>(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(props.columns as MRT_ColumnDef<D>[]).map(\n (col) => ({\n [col.id?.toString() ?? col.accessorKey?.toString() ?? '']:\n col.filterFn instanceof Function\n ? col.filterFn.name ?? 'custom'\n : col.filterFn ??\n initialState?.currentFilterFns?.[\n col.id?.toString() ?? col.accessorKey?.toString() ?? ''\n ] ??\n (!!col.filterSelectOptions?.length ? 'equals' : 'fuzzy'),\n }),\n ),\n ),\n );\n\n const [currentGlobalFilterFn, setCurrentGlobalFilterFn] =\n useState<MRT_FilterOption>(\n props.globalFilterFn instanceof String\n ? (props.globalFilterFn as MRT_FilterOption)\n : 'fuzzy',\n );\n\n const displayColumns = useMemo(\n () =>\n (\n [\n columnOrder.includes('mrt-row-actions') && {\n Cell: ({ cell }) => (\n <MRT_ToggleRowActionMenuButton\n row={cell.row as any}\n table={table}\n />\n ),\n columnDefType: 'display',\n header: props.localization?.actions,\n id: 'mrt-row-actions',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 70,\n },\n columnOrder.includes('mrt-expand') && {\n Cell: ({ cell }) => (\n <MRT_ExpandButton row={cell.row as any} table={table} />\n ),\n Header: () =>\n props.enableExpandAll ? (\n <MRT_ExpandAllButton table={table} />\n ) : null,\n columnDefType: 'display',\n header: props.localization?.expand,\n id: 'mrt-expand',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 60,\n },\n columnOrder.includes('mrt-select') && {\n Cell: ({ cell }) => (\n <MRT_SelectCheckbox row={cell.row as any} table={table} />\n ),\n Header: () =>\n props.enableSelectAll ? (\n <MRT_SelectCheckbox selectAll table={table} />\n ) : null,\n columnDefType: 'display',\n header: props.localization?.select,\n id: 'mrt-select',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 60,\n },\n columnOrder.includes('mrt-row-numbers') && {\n Cell: ({ cell }) => cell.row.index + 1,\n Header: () => props.localization?.rowNumber,\n columnDefType: 'display',\n header: props.localization?.rowNumbers,\n id: 'mrt-row-numbers',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 60,\n },\n ] as MRT_ColumnDef<D>[]\n ).filter(Boolean),\n [\n columnOrder,\n props.editingMode,\n props.enableEditing,\n props.enableExpandAll,\n props.enableExpanding,\n props.enableGrouping,\n props.enableRowActions,\n props.enableRowNumbers,\n props.enableRowSelection,\n props.enableSelectAll,\n props.localization,\n props.muiTableBodyCellProps,\n props.muiTableHeadCellProps,\n props.positionActionsColumn,\n ],\n );\n\n const columnDefs = useMemo(\n () =>\n prepareColumns([...displayColumns, ...props.columns], currentFilterFns),\n [currentFilterFns, displayColumns, props.columns],\n );\n\n const data: D[] = useMemo(\n () =>\n (props.state?.isLoading || props.state?.showSkeletons) &&\n !props.data.length\n ? [...Array(10).fill(null)].map(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map(\n (col) => ({\n [col.id ?? col.accessorKey ?? '']: null,\n }),\n ),\n ),\n )\n : props.data,\n [props.data, props.state?.isLoading, props.state?.showSkeletons],\n );\n\n //@ts-ignore\n const table = {\n ...useReactTable({\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n onColumnOrderChange: setColumnOrder,\n ...props,\n //@ts-ignore\n columns: columnDefs,\n data,\n getSubRows: (row) => row?.subRows,\n //@ts-ignore\n globalFilterFn:\n MRT_FilterFns[currentGlobalFilterFn] ?? MRT_FilterFns.fuzzy,\n initialState,\n state: {\n columnOrder,\n currentEditingCell,\n currentEditingRow,\n currentFilterFns,\n currentGlobalFilterFn,\n density,\n isFullScreen,\n showAlertBanner,\n showFilters,\n showGlobalFilter,\n ...props.state,\n } as TableState,\n tableId,\n }),\n setCurrentEditingCell:\n props.onCurrentEditingCellChange ?? setCurrentEditingCell,\n setCurrentEditingRow:\n props.onCurrentEditingRowChange ?? setCurrentEditingRow,\n setCurrentFilterFns: props.onCurrentFilterFnsChange ?? setCurrentFilterFns,\n setCurrentGlobalFilterFn:\n props.onCurrentGlobalFilterFnChange ?? setCurrentGlobalFilterFn,\n setDensity: props.onDensityChange ?? setDensity,\n setIsFullScreen: props.onIsFullScreenChange ?? setIsFullScreen,\n setShowAlertBanner: props.onShowAlertBannerChange ?? setShowAlertBanner,\n setShowFilters: props.onShowFiltersChange ?? setShowFilters,\n setShowGlobalFilter: props.onShowGlobalFilterChange ?? setShowGlobalFilter,\n } as MRT_TableInstance;\n\n return (\n <>\n <Dialog\n PaperComponent={Box}\n TransitionComponent={Grow}\n disablePortal\n fullScreen\n keepMounted={false}\n onClose={() => setIsFullScreen(false)}\n open={isFullScreen}\n transitionDuration={400}\n >\n <MRT_TablePaper table={table} />\n </Dialog>\n {!isFullScreen && <MRT_TablePaper table={table} />}\n </>\n );\n};\n","import React, {\n ChangeEvent,\n Dispatch,\n FC,\n FocusEvent,\n ReactNode,\n SetStateAction,\n} from 'react';\nimport {\n AlertProps,\n ButtonProps,\n CheckboxProps,\n IconButtonProps,\n LinearProgressProps,\n PaperProps,\n SkeletonProps,\n TableBodyProps,\n TableCellProps,\n TableContainerProps,\n TableFooterProps,\n TableHeadProps,\n TablePaginationProps,\n TableProps,\n TableRowProps,\n TextFieldProps,\n ToolbarProps,\n} from '@mui/material';\nimport {\n Cell,\n Column,\n ColumnDef,\n FilterFn,\n Header,\n HeaderGroup,\n OnChangeFn,\n Row,\n SortingFn,\n Table,\n TableOptions,\n TableState,\n} from '@tanstack/react-table';\nimport { Options as VirtualizerOptions } from 'react-virtual';\nimport { MRT_Localization, MRT_DefaultLocalization_EN } from './localization';\nimport { MRT_Default_Icons, MRT_Icons } from './icons';\nimport { MRT_TableRoot } from './table/MRT_TableRoot';\nimport { MRT_FilterFns } from './filtersFns';\nimport { MRT_SortingFns } from './sortingFns';\n\ntype LiteralUnion<T extends U, U = string> = T | (U & Record<never, never>);\n\nexport type MRT_TableOptions<D extends Record<string, any> = {}> = Partial<\n Omit<\n TableOptions<D>,\n 'columns' | 'data' | 'initialState' | 'state' | 'expandRowsFn'\n >\n> & {\n columns: MRT_ColumnDef<D>[];\n data: D[];\n expandRowsFn?: (dataRow: D) => D[];\n initialState?: Partial<MRT_TableState<D>>;\n state?: Partial<MRT_TableState<D>>;\n};\n\nexport interface MRT_RowModel<D extends Record<string, any> = {}> {\n flatRows: MRT_Row<D>[];\n rows: MRT_Row<D>[];\n rowsById: { [key: string]: MRT_Row<D> };\n}\n\nexport type MRT_TableInstance<D extends Record<string, any> = {}> = Omit<\n Table<D>,\n | 'getAllColumns'\n | 'getAllFlatColumns'\n | 'getAllLeafColumns'\n | 'getCenterLeafColumns'\n | 'getColumn'\n | 'getExpandedRowModel'\n | 'getFlatHeaders'\n | 'getLeftLeafColumns'\n | 'getPaginationRowModel'\n | 'getPreFilteredRowModel'\n | 'getPrePaginationRowModel'\n | 'getRightLeafColumns'\n | 'getRowModel'\n | 'getSelectedRowModel'\n | 'getState'\n | 'options'\n> & {\n getAllColumns: () => MRT_Column<D>[];\n getAllFlatColumns: () => MRT_Column<D>[];\n getAllLeafColumns: () => MRT_Column<D>[];\n getCenterLeafColumns: () => MRT_Column<D>[];\n getColumn: (columnId: string) => MRT_Column<D>;\n getExpandedRowModel: () => MRT_RowModel<D>;\n getFlatHeaders: () => MRT_Header<D>[];\n getLeftLeafColumns: () => MRT_Column<D>[];\n getPaginationRowModel: () => MRT_RowModel<D>;\n getPreFilteredRowModel: () => MRT_RowModel<D>;\n getPrePaginationRowModel: () => MRT_RowModel<D>;\n getRightLeafColumns: () => MRT_Column<D>[];\n getRowModel: () => MRT_RowModel<D>;\n getSelectedRowModel: () => MRT_RowModel<D>;\n getState: () => MRT_TableState<D>;\n options: MaterialReactTableProps<D> & {\n icons: MRT_Icons;\n tableId: string;\n localization: MRT_Localization;\n };\n setCurrentEditingCell: Dispatch<SetStateAction<MRT_Cell | null>>;\n setCurrentEditingRow: Dispatch<SetStateAction<MRT_Row | null>>;\n setCurrentFilterFns: Dispatch<\n SetStateAction<{\n [key: string]: MRT_FilterOption;\n }>\n >;\n setCurrentGlobalFilterFn: Dispatch<SetStateAction<MRT_FilterOption>>;\n setDensity: Dispatch<SetStateAction<'comfortable' | 'compact' | 'spacious'>>;\n setIsFullScreen: Dispatch<SetStateAction<boolean>>;\n setShowAlertBanner: Dispatch<SetStateAction<boolean>>;\n setShowFilters: Dispatch<SetStateAction<boolean>>;\n setShowGlobalFilter: Dispatch<SetStateAction<boolean>>;\n};\n\nexport type MRT_TableState<D extends Record<string, any> = {}> = TableState & {\n currentEditingCell: MRT_Cell<D> | null;\n currentEditingRow: MRT_Row<D> | null;\n currentFilterFns: Record<string, MRT_FilterOption>;\n currentGlobalFilterFn: Record<string, MRT_FilterOption>;\n density: 'comfortable' | 'compact' | 'spacious';\n isLoading: boolean;\n isFullScreen: boolean;\n showAlertBanner: boolean;\n showFilters: boolean;\n showGlobalFilter: boolean;\n showProgressBars: boolean;\n showSkeletons: boolean;\n};\n\nexport type MRT_ColumnDef<D extends Record<string, any> = {}> = Omit<\n ColumnDef<D>,\n | 'accessorFn'\n | 'accessorKey'\n | 'aggregatedCell'\n | 'cell'\n | 'columns'\n | 'filterFn'\n | 'footer'\n | 'header'\n | 'id'\n | 'sortingFn'\n> & {\n AggregatedCell?: ({\n cell,\n table,\n }: {\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n Cell?: ({\n cell,\n table,\n }: {\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n Edit?: ({\n cell,\n table,\n }: {\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n Filter?: ({\n header,\n table,\n }: {\n header: MRT_Header<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n Footer?:\n | ReactNode\n | (({\n footer,\n table,\n }: {\n footer: MRT_Header<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode);\n Header?:\n | ReactNode\n | (({\n header,\n table,\n }: {\n header: MRT_Header<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode);\n /**\n * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.\n * Specify a function here to point to the correct property in the data object.\n *\n * @example accessorFn: (row) => row.username\n */\n accessorFn?: (row: D) => any;\n /**\n * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.\n * Specify which key in the row this column should use to access the correct data.\n *\n * @example accessorKey: 'username'\n */\n accessorKey?: LiteralUnion<string & keyof D>;\n /**\n * Specify what type of column this is. Either `data`, `display`, or `group`. Defaults to `data`.\n * Leave this blank if you are just creating a normal data column.\n *\n * @default 'data'\n *\n * @example columnDefType: 'display'\n */\n columnDefType?: 'data' | 'display' | 'group';\n columns?: MRT_ColumnDef<D>[];\n enableClickToCopy?: boolean;\n enableColumnActions?: boolean;\n enableColumnFilterChangeMode?: boolean;\n enableColumnOrdering?: boolean;\n enableEditing?: boolean;\n enabledColumnFilterOptions?: MRT_FilterOption[] | null;\n filterFn?: MRT_FilterFn<D>;\n filterSelectOptions?: (string | { text: string; value: string })[];\n footer?: string;\n header: string;\n /**\n * Either an `accessorKey` or a combination of an `accessorFn` and `id` are required for a data column definition.\n *\n * If you have also specified an `accessorFn`, MRT still needs to have a valid `id` to be able to identify the column uniquely.\n *\n * `id` defaults to the `accessorKey` or `header` if not specified.\n *\n * @default gets set to the same value as `accessorKey` by default\n */\n id?: LiteralUnion<string & keyof D>;\n muiTableBodyCellCopyButtonProps?:\n | ButtonProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => ButtonProps);\n muiTableBodyCellEditTextFieldProps?:\n | TextFieldProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TextFieldProps);\n muiTableBodyCellProps?:\n | TableCellProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TableCellProps);\n muiTableFooterCellProps?:\n | TableCellProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableHeadCellColumnActionsButtonProps?:\n | IconButtonProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => IconButtonProps);\n muiTableHeadCellFilterTextFieldProps?:\n | TextFieldProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TextFieldProps);\n muiTableHeadCellProps?:\n | TableCellProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n onCellEditBlur?: ({\n cell,\n event,\n table,\n }: {\n event: FocusEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => void;\n onCellEditChange?: ({\n cell,\n event,\n table,\n }: {\n event: ChangeEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => void;\n sortingFn?: MRT_SortingFn;\n};\n\nexport type MRT_DefinedColumnDef<D extends Record<string, any> = {}> = Omit<\n MRT_ColumnDef<D>,\n 'id'\n> & {\n id: string;\n};\n\nexport type MRT_Column<D extends Record<string, any> = {}> = Omit<\n Column<D>,\n 'header' | 'footer' | 'columns' | 'columnDef' | 'filterFn'\n> & {\n columnDef: MRT_DefinedColumnDef<D>;\n columns?: MRT_Column<D>[];\n filterFn?: MRT_FilterFn<D>;\n footer: string;\n header: string;\n};\n\nexport type MRT_Header<D extends Record<string, any> = {}> = Omit<\n Header<D>,\n 'column'\n> & {\n column: MRT_Column<D>;\n};\n\nexport type MRT_HeaderGroup<D extends Record<string, any> = {}> = Omit<\n HeaderGroup<D>,\n 'headers'\n> & {\n headers: MRT_Header<D>[];\n};\n\nexport type MRT_Row<D extends Record<string, any> = {}> = Omit<\n Row<D>,\n 'getVisibleCells' | 'getAllCells' | 'subRows' | 'original' | '_valuesCache'\n> & {\n getAllCells: () => MRT_Cell<D>[];\n getVisibleCells: () => MRT_Cell<D>[];\n subRows?: MRT_Row<D>[];\n original: D;\n _valuesCache?: D;\n};\n\nexport type MRT_Cell<D extends Record<string, any> = {}> = Omit<\n Cell<D>,\n 'column' | 'row'\n> & {\n column: MRT_Column<D>;\n row: MRT_Row<D>;\n};\n\nexport type MRT_SortingOption = keyof typeof MRT_SortingFns;\n\nexport type MRT_SortingFn<D extends Record<string, any> = {}> =\n | SortingFn<D>\n | MRT_SortingOption;\n\nexport type MRT_FilterOption = keyof typeof MRT_FilterFns;\n\nexport type MRT_FilterFn<D extends Record<string, any> = {}> =\n | FilterFn<D>\n | MRT_FilterOption;\n\nexport type MaterialReactTableProps<D extends Record<string, any> = {}> =\n MRT_TableOptions<D> & {\n editingMode?: 'table' | 'row' | 'cell';\n enableClickToCopy?: boolean;\n enableColumnActions?: boolean;\n enableColumnFilterChangeMode?: boolean;\n enableColumnOrdering?: boolean;\n enableDensityToggle?: boolean;\n enableEditing?: boolean;\n enableExpandAll?: boolean;\n enableFullScreenToggle?: boolean;\n enableGlobalFilterChangeMode?: boolean;\n enableGlobalFilterRankedResults?: boolean;\n enablePagination?: boolean;\n enableRowActions?: boolean;\n enableRowNumbers?: boolean;\n enableRowVirtualization?: boolean;\n enableSelectAll?: boolean;\n enableStickyHeader?: boolean;\n enableTableFooter?: boolean;\n enableTableHead?: boolean;\n enableToolbarBottom?: boolean;\n enableToolbarInternalActions?: boolean;\n enableToolbarTop?: boolean;\n enabledColumnFilterOptions?: (MRT_FilterOption | string)[] | null;\n enabledGlobalFilterOptions?: (MRT_FilterOption | string)[] | null;\n icons?: Partial<MRT_Icons>;\n localization?: Partial<MRT_Localization>;\n muiExpandAllButtonProps?:\n | IconButtonProps\n | (({ table }: { table: MRT_TableInstance<D> }) => IconButtonProps);\n muiExpandButtonProps?:\n | IconButtonProps\n | (({\n table,\n }: {\n table: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => IconButtonProps);\n muiLinearProgressProps?:\n | LinearProgressProps\n | (({ table }: { table: MRT_TableInstance<D> }) => LinearProgressProps);\n muiSearchTextFieldProps?:\n | TextFieldProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TextFieldProps);\n muiSelectAllCheckboxProps?:\n | CheckboxProps\n | (({ table }: { table: MRT_TableInstance<D> }) => CheckboxProps);\n muiSelectCheckboxProps?:\n | CheckboxProps\n | (({\n table,\n row,\n }: {\n table: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => CheckboxProps);\n muiTableBodyCellCopyButtonProps?:\n | ButtonProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => ButtonProps);\n muiTableBodyCellEditTextFieldProps?:\n | TextFieldProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TextFieldProps);\n muiTableBodyCellProps?:\n | TableCellProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TableCellProps);\n muiTableBodyCellSkeletonProps?:\n | SkeletonProps\n | (({\n table,\n cell,\n }: {\n table: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => SkeletonProps);\n muiTableBodyProps?:\n | TableBodyProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableBodyProps);\n muiTableBodyRowProps?:\n | TableRowProps\n | (({\n table,\n row,\n }: {\n table: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => TableRowProps);\n muiTableContainerProps?:\n | TableContainerProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableContainerProps);\n muiTableDetailPanelProps?:\n | TableCellProps\n | (({\n table,\n row,\n }: {\n table: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => TableCellProps);\n muiTableFooterCellProps?:\n | TableCellProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableFooterProps?:\n | TableFooterProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableFooterProps);\n muiTableFooterRowProps?:\n | TableRowProps\n | (({\n table,\n footerGroup,\n }: {\n table: MRT_TableInstance<D>;\n footerGroup: MRT_HeaderGroup<D>;\n }) => TableRowProps);\n muiTableHeadCellColumnActionsButtonProps?:\n | IconButtonProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => IconButtonProps);\n muiTableHeadCellFilterTextFieldProps?:\n | TextFieldProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TextFieldProps);\n muiTableHeadCellProps?:\n | TableCellProps\n | (({\n table,\n column,\n }: {\n table: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableHeadProps?:\n | TableHeadProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableHeadProps);\n muiTableHeadRowProps?:\n | TableRowProps\n | (({\n table,\n headerGroup,\n }: {\n table: MRT_TableInstance<D>;\n headerGroup: MRT_HeaderGroup<D>;\n }) => TableRowProps);\n muiTablePaginationProps?:\n | Partial<TablePaginationProps>\n | (({\n table,\n }: {\n table: MRT_TableInstance<D>;\n }) => Partial<TablePaginationProps>);\n muiTablePaperProps?:\n | PaperProps\n | (({ table }: { table: MRT_TableInstance<D> }) => PaperProps);\n muiTableProps?:\n | TableProps\n | (({ table }: { table: MRT_TableInstance<D> }) => TableProps);\n muiTableToolbarAlertBannerProps?:\n | AlertProps\n | (({ table }: { table: MRT_TableInstance<D> }) => AlertProps);\n muiTableToolbarBottomProps?:\n | ToolbarProps\n | (({ table }: { table: MRT_TableInstance<D> }) => ToolbarProps);\n muiTableToolbarTopProps?:\n | ToolbarProps\n | (({ table }: { table: MRT_TableInstance<D> }) => ToolbarProps);\n onCellEditBlur?: ({\n cell,\n event,\n table,\n }: {\n event: FocusEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => void;\n onCellEditChange?: ({\n cell,\n event,\n table,\n }: {\n event: ChangeEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n table: MRT_TableInstance<D>;\n }) => void;\n onCurrentEditingCellChange?: OnChangeFn<MRT_Cell>;\n onCurrentEditingRowChange?: OnChangeFn<MRT_Row>;\n onCurrentFilterFnsChange?: OnChangeFn<{ [key: string]: MRT_FilterOption }>;\n onCurrentGlobalFilterFnChange?: OnChangeFn<MRT_FilterOption>;\n onEditRowSubmit?: ({\n row,\n table,\n }: {\n row: MRT_Row<D>;\n table: MRT_TableInstance<D>;\n }) => Promise<void> | void;\n onDensityChange?: OnChangeFn<boolean>;\n onIsFullScreenChange?: OnChangeFn<boolean>;\n onShowAlertBannerChange?: OnChangeFn<boolean>;\n onShowFiltersChange?: OnChangeFn<boolean>;\n onShowGlobalFilterChange?: OnChangeFn<boolean>;\n positionActionsColumn?: 'first' | 'last';\n positionGlobalFilter?: 'left' | 'right';\n positionPagination?: 'bottom' | 'top' | 'both';\n positionToolbarAlertBanner?: 'bottom' | 'top';\n renderDetailPanel?: ({\n row,\n table,\n }: {\n row: MRT_Row<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n renderRowActionMenuItems?: ({\n closeMenu,\n row,\n table,\n }: {\n closeMenu: () => void;\n row: MRT_Row<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode[];\n renderRowActions?: ({\n row,\n table,\n }: {\n row: MRT_Row<D>;\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarBottomCustomActions?: ({\n table,\n }: {\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarTopCustomActions?: ({\n table,\n }: {\n table: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarInternalActions?: ({\n table,\n MRT_ToggleGlobalFilterButton,\n MRT_ToggleFiltersButton,\n MRT_ShowHideColumnsButton,\n MRT_ToggleDensePaddingButton,\n MRT_FullScreenToggleButton,\n }: {\n table: MRT_TableInstance<D>;\n MRT_ToggleGlobalFilterButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n MRT_ToggleFiltersButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n MRT_ShowHideColumnsButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n MRT_ToggleDensePaddingButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n MRT_FullScreenToggleButton: FC<\n IconButtonProps & { table: MRT_TableInstance<D> }\n >;\n }) => ReactNode;\n rowCount?: number;\n rowNumberMode?: 'original' | 'static';\n selectAllMode?: 'all' | 'page';\n tableId?: string;\n virtualizerProps?: Partial<VirtualizerOptions<HTMLDivElement>>;\n };\n\nexport default <D extends Record<string, any> = {}>({\n autoResetExpanded = false,\n columnResizeMode = 'onEnd',\n defaultColumn = { minSize: 40, maxSize: 1000, size: 180 },\n editingMode = 'row',\n enableColumnActions = true,\n enableColumnFilterChangeMode = true,\n enableColumnFilters = true,\n enableColumnOrdering = false,\n enableColumnResizing = false,\n enableDensityToggle = true,\n enableExpandAll = true,\n enableFilters = true,\n enableFullScreenToggle = true,\n enableGlobalFilter = true,\n enableGlobalFilterChangeMode = true,\n enableGlobalFilterRankedResults = true,\n enableGrouping = false,\n enableHiding = true,\n enableMultiRowSelection = true,\n enableMultiSort = true,\n enablePagination = true,\n enablePinning = false,\n enableRowSelection = false,\n enableSelectAll = true,\n enableSorting = true,\n enableStickyHeader = false,\n enableTableFooter = true,\n enableTableHead = true,\n enableToolbarBottom = true,\n enableToolbarInternalActions = true,\n enableToolbarTop = true,\n icons,\n localization,\n positionActionsColumn = 'first',\n positionGlobalFilter = 'right',\n positionPagination = 'bottom',\n positionToolbarAlertBanner = 'top',\n rowNumberMode = 'original',\n selectAllMode = 'all',\n ...rest\n}: MaterialReactTableProps<D>) => (\n <MRT_TableRoot\n autoResetExpanded={autoResetExpanded}\n columnResizeMode={columnResizeMode}\n defaultColumn={defaultColumn}\n editingMode={editingMode}\n enableColumnActions={enableColumnActions}\n enableColumnFilterChangeMode={enableColumnFilterChangeMode}\n enableColumnFilters={enableColumnFilters}\n enableColumnOrdering={enableColumnOrdering}\n enableColumnResizing={enableColumnResizing}\n enableDensityToggle={enableDensityToggle}\n enableExpandAll={enableExpandAll}\n enableFilters={enableFilters}\n enableFullScreenToggle={enableFullScreenToggle}\n enableGlobalFilter={enableGlobalFilter}\n enableGlobalFilterChangeMode={enableGlobalFilterChangeMode}\n enableGlobalFilterRankedResults={enableGlobalFilterRankedResults}\n enableGrouping={enableGrouping}\n enableHiding={enableHiding}\n enableMultiRowSelection={enableMultiRowSelection}\n enableMultiSort={enableMultiSort}\n enablePagination={enablePagination}\n enablePinning={enablePinning}\n enableRowSelection={enableRowSelection}\n enableSelectAll={enableSelectAll}\n enableSorting={enableSorting}\n enableStickyHeader={enableStickyHeader}\n enableTableFooter={enableTableFooter}\n enableTableHead={enableTableHead}\n enableToolbarBottom={enableToolbarBottom}\n enableToolbarInternalActions={enableToolbarInternalActions}\n enableToolbarTop={enableToolbarTop}\n icons={{ ...MRT_Default_Icons, ...icons }}\n localization={{ ...MRT_DefaultLocalization_EN, ...localization }}\n positionActionsColumn={positionActionsColumn}\n positionGlobalFilter={positionGlobalFilter}\n positionPagination={positionPagination}\n positionToolbarAlertBanner={positionToolbarAlertBanner}\n rowNumberMode={rowNumberMode}\n selectAllMode={selectAllMode}\n {...rest}\n />\n);\n"],"names":["MRT_DefaultLocalization_EN","actions","and","cancel","changeFilterMode","changeSearchMode","clearFilter","clearSearch","clearSort","clickToCopy","columnActions","copiedToClipboard","edit","expand","expandAll","filterBetween","filterByColumn","filterContains","filterEmpty","filterEndsWith","filterEquals","filterFuzzy","filterGreaterThan","filterLessThan","filterMode","filterNotEmpty","filterNotEquals","filterStartsWith","filteringByColumn","grab","groupByColumn","groupedBy","hideAll","hideColumn","max","min","pinToLeft","pinToRight","resetColumnSize","resetOrder","rowActions","rowNumber","rowNumbers","save","search","selectedCountOfRowCountRowsSelected","select","showAll","showAllColumns","showHideColumns","showHideFilters","showHideSearch","sortByColumnAsc","sortByColumnDesc","sortedByColumnAsc","sortedByColumnDesc","thenBy","toggleDensity","toggleFullScreen","toggleSelectAll","toggleSelectRow","toggleVisibility","ungroupByColumn","unpin","unpinAll","unsorted","MRT_Default_Icons","ArrowRightIcon","ArrowRight","CancelIcon","Cancel","CheckBoxIcon","CheckBox","ClearAllIcon","ClearAll","CloseIcon","Close","DensityLargeIcon","DensityLarge","DensityMediumIcon","DensityMedium","DensitySmallIcon","DensitySmall","DragHandleIcon","DragHandle","DynamicFeedIcon","DynamicFeed","EditIcon","Edit","ExpandLessIcon","ExpandLess","ExpandMoreIcon","ExpandMore","FilterAltIcon","FilterAlt","FilterAltOffIcon","FilterAltOff","FilterListIcon","FilterList","FilterListOffIcon","FilterListOff","FullscreenExitIcon","FullscreenExit","FullscreenIcon","Fullscreen","KeyboardDoubleArrowDownIcon","KeyboardDoubleArrowDown","MoreHorizIcon","MoreHoriz","MoreVertIcon","MoreVert","PushPinIcon","PushPin","RestartAltIcon","RestartAlt","SaveIcon","Save","SearchIcon","Search","SearchOffIcon","SearchOff","SortIcon","Sort","ViewColumnIcon","ViewColumn","VisibilityOffIcon","VisibilityOff","MRT_ExpandAllButton","table","getIsAllRowsExpanded","getIsSomeRowsExpanded","getCanSomeRowsExpand","options","icons","localization","muiExpandAllButtonProps","renderDetailPanel","toggleAllRowsExpanded","density","getState","iconButtonProps","Function","React","Tooltip","arrow","enterDelay","enterNextDelay","title","IconButton","disabled","onClick","sx","height","width","style","transform","transition","MRT_ExpandButton","row","muiExpandButtonProps","getCanExpand","toggleExpanded","getIsExpanded","commonMenuItemStyles","py","my","alignItems","MRT_FilterOptionMenu","anchorEl","header","onSelect","setAnchorEl","enabledGlobalFilterOptions","enabledColumnFilterOptions","setCurrentFilterFns","setCurrentGlobalFilterFn","currentFilterFns","currentGlobalFilterFn","column","columnDef","allowedColumnFilterOptions","filterOptions","useMemo","option","label","divider","filter","filterType","undefined","includes","filterOption","id","Menu","anchorOrigin","vertical","horizontal","onClose","open","MenuListProps","dense","map","index","MenuItem","key","prev","setFilterValue","handleSelectFilterType","selected","value","MRT_ColumnPinningButtons","handlePinColumn","pinDirection","pin","Box","minWidth","textAlign","getIsPinned","size","MRT_GrabHandleButton","placement","disableRipple","draggable","onDragStart","handleDragStart","onDragEnd","handleDragEnd","cursor","m","opacity","p","&:hover","backgroundColor","&:active","fuzzy","columnId","filterValue","addMeta","itemRank","rankItem","getValue","threshold","rankings","MATCHES","passed","autoRemove","val","contains","toString","toLowerCase","trim","startsWith","endsWith","equals","notEquals","greaterThan","isNaN","lessThan","between","filterValues","empty","_filterValue","notEmpty","MRT_FilterFns","filterFns","MRT_SortingFns","sortingFns","rowA","rowB","dir","columnFiltersMeta","compareItems","alphanumeric","getColumnId","accessorKey","_columnDef$accessorKe","getAllLeafColumnDefs","columns","lowestLevelColumns","currentCols","_currentCols","length","some","col","nextCols","flat","every","reorderColumn","movingColumn","receivingColumn","columnOrder","getCanPin","splice","indexOf","getDefaultColumnOrderIds","props","positionActionsColumn","enableRowActions","enableEditing","editingMode","enableExpanding","enableGrouping","enableRowSelection","enableRowNumbers","Boolean","getLeadingDisplayColumnIds","getTrailingDisplayColumnIds","MRT_ShowHideColumnsMenuItems","allColumns","currentHoveredColumn","setCurrentHoveredColumn","isSubMenu","enableColumnOrdering","enableHiding","enablePinning","setColumnOrder","columnDefType","switchChecked","getIsVisible","getLeafColumns","menuItemRef","useRef","useState","isDragging","setIsDragging","ref","onDragEnter","_e","theme","justifyContent","outline","palette","primary","main","pl","depth","display","flexWrap","gap","e","dataTransfer","setDragImage","current","FormControlLabel","componentsProps","typography","mb","checked","control","Switch","getCanHide","getIsGrouped","onChange","forEach","childColumn","handleToggleColumnHidden","Typography","alignSelf","_column$columns2","c","i","MRT_ShowHideColumnsMenu","getAllColumns","getAllLeafColumns","getCenterLeafColumns","getIsAllColumnsVisible","getIsSomeColumnsPinned","getIsSomeColumnsVisible","getLeftLeafColumns","getRightLeafColumns","toggleAllColumnsVisible","Array","from","Set","colId","find","columnPinning","pt","Button","resetColumnPinning","Divider","commonListItemStyles","MRT_ColumnActionMenu","enableColumnFilterChangeMode","enableColumnFilters","enableColumnResizing","enableSorting","tableId","setShowFilters","columnSizing","columnVisibility","filterMenuAnchorEl","setFilterMenuAnchorEl","showHideColumnsMenuAnchorEl","setShowHideColumnsMenuAnchorEl","handleFilterByColumn","setTimeout","document","getElementById","muiTableHeadCellFilterTextFieldProps","_header$muiTableHeadC2","_document$getElementB","focus","handleOpenFilterModeMenu","event","stopPropagation","currentTarget","handleOpenShowHideColumnsMenu","showFilterModeSubMenu","filterSelectOptions","getCanSort","getIsSorted","clearSorting","ListItemIcon","toggleSorting","_localization$sortByC","replace","String","_localization$sortByC2","getCanFilter","getFilterValue","_localization$filterB","onMouseEnter","getCanGroup","toggleGrouping","old","_localization","getCanResize","resetSize","_localization$hideCol","Object","values","visible","_localization$showAll","MRT_RowActionMenu","handleEdit","renderRowActionMenuItems","closeMenu","MRT_EditActionButtons","onEditRowSubmit","setCurrentEditingRow","currentEditingRow","_valuesCache","original","color","commonIconButtonStyles","ml","MRT_ToggleRowActionMenuButton","renderRowActions","handleStartEditMode","preventDefault","MRT_SelectCheckbox","selectAll","muiSelectCheckboxProps","muiSelectAllCheckboxProps","selectAllMode","checkboxProps","Checkbox","getIsAllRowsSelected","getIsSelected","indeterminate","getIsSomeRowsSelected","getIsSomeSelected","inputProps","aria-label","getToggleAllRowsSelectedHandler","getToggleAllPageRowsSelectedHandler","getToggleSelectedHandler","MRT_FullScreenToggleButton","rest","setIsFullScreen","isFullScreen","MRT_ShowHideColumnsButton","MRT_ToggleDensePaddingButton","setDensity","MRT_ToggleFiltersButton","showFilters","MRT_ToggleGlobalFilterButton","muiSearchTextFieldProps","setShowGlobalFilter","showGlobalFilter","textFieldProps","MRT_GlobalFilterTextField","setGlobalFilter","enableGlobalFilterChangeMode","globalFilter","searchValue","setSearchValue","handleChangeDebounced","useCallback","debounce","target","Collapse","in","orientation","TextField","placeholder","variant","InputProps","startAdornment","InputAdornment","position","endAdornment","MRT_ToolbarInternalButtons","enableDensityToggle","enableFilters","enableFullScreenToggle","enableGlobalFilter","positionGlobalFilter","renderToolbarInternalActions","zIndex","MRT_TablePagination","getPrePaginationRowModel","setPageIndex","setPageSize","muiTablePaginationProps","enableToolbarInternalActions","rowCount","pagination","pageSize","pageIndex","totalRowCount","rows","showFirstLastPageButtons","tablePaginationProps","TablePagination","SelectProps","MenuProps","disablePadding","component","count","onPageChange","_","newPage","onRowsPerPageChange","page","rowsPerPage","rowsPerPageOptions","showFirstButton","showLastButton","mt","MRT_ToolbarAlertBanner","stackAlertBanner","getSelectedRowModel","muiTableToolbarAlertBannerProps","grouping","showAlertBanner","alertProps","selectMessage","_localization$selecte","_localization$selecte2","groupedByMessage","Fragment","Chip","getColumn","onDelete","timeout","Alert","icon","borderRadius","fontSize","left","right","top","AlertTitle","children","MRT_LinearProgressBar","alignTo","muiLinearProgressProps","isLoading","showProgressBars","linearProgressProps","mountOnEnter","unmountOnExit","bottom","LinearProgress","commonToolbarStyles","lighten","background","backgroundImage","minHeight","overflow","MRT_ToolbarTop","enablePagination","muiTableToolbarTopProps","positionPagination","positionToolbarAlertBanner","renderToolbarTopCustomActions","isMobile","useMediaQuery","toolbarProps","Toolbar","boxSizing","MRT_ToolbarBottom","muiTableToolbarBottomProps","renderToolbarBottomCustomActions","boxShadow","alpha","common","black","MRT_FilterTextField","inputIndex","_column$getFilterValu2","newFilterValues","Filter","filterId","currentFilterOption","isSelectFilter","filterChipLabel","charAt","toUpperCase","slice","filterPlaceholder","showChangeModeButton","fullWidth","textOverflow","helperText","htmlFor","FormHelperTextProps","lineHeight","whiteSpace","margin","disableHoverListener","&\t.MuiSelect-icon","mr","_columnDef$filterSele","text","MRT_FilterRangeFields","gridTemplateColumns","MRT_TableHeadCellFilterContainer","MRT_TableHeadCellFilterLabel","filterTooltip","isArray","join","Grow","_column$getFilterValu","MRT_TableHeadCellResizeHandle","columnResizeMode","flexItem","onDoubleClick","borderRightWidth","touchAction","getIsResizing","userSelect","info","onMouseDown","getResizeHandler","onTouchStart","columnSizingInfo","deltaOffset","MRT_TableHeadCellSortLabel","sortTooltip","TableSortLabel","active","direction","MRT_TableHeadCellColumnActionsButton","muiTableHeadCellColumnActionsButtonProps","MRT_TableHeadCell","enableColumnActions","enableMultiSort","muiTableHeadCellProps","tableCellProps","headerElement","Header","tableHeadCellRef","TableCell","align","colSpan","border","getLeftLeafHeaders","getPinnedIndex","fontWeight","getStart","pb","getRightLeafHeaders","verticalAlign","maxWidth","getSize","minSize","isPlaceholder","getToggleSortingHandler","_columnDef$header","MRT_TableHeadRow","headerGroup","muiTableHeadRowProps","tableRowProps","TableRow","headers","MRT_TableHead","getHeaderGroups","muiTableHeadProps","tableHeadProps","TableHead","MRT_EditCellTextField","cell","muiTableBodyCellEditTextFieldProps","onCellEditBlur","onCellEditChange","setCurrentEditingCell","setValue","onBlur","MRT_CopyButton","muiTableBodyCellCopyButtonProps","copied","setCopied","buttonProps","navigator","clipboard","writeText","type","fontFamily","letterSpacing","textTransform","MRT_TableBodyCell","enableHover","rowIndex","enableClickToCopy","muiTableBodyCellProps","muiTableBodyCellSkeletonProps","rowNumberMode","currentEditingCell","showSkeletons","skeletonWidth","Math","random","isEditable","isEditing","_event","textField","mode","darken","getIsPlaceholder","Skeleton","animation","Cell","renderValue","subRows","_row$subRows","_row$subRows2","MRT_TableDetailPanel","getVisibleLeafColumns","muiTableBodyRowProps","muiTableDetailPanelProps","borderBottom","getTotalSize","MRT_TableBodyRow","hover","&:hover td","getVisibleCells","_row$getVisibleCells","MRT_TableBody","tableContainerRef","getRowModel","enableGlobalFilterRankedResults","enableRowVirtualization","muiTableBodyProps","virtualizerProps","sorting","tableBodyProps","rankedRows","sort","a","b","v","rank","rowVirtualizer","useVirtual","overscan","parentRef","virtualRows","virtualItems","paddingTop","paddingBottom","start","totalSize","end","TableBody","rowOrVirtualRow","MRT_TableFooterCell","footer","muiTableFooterCellProps","white","Footer","MRT_TableFooterRow","footerGroup","muiTableFooterRowProps","_footerGroup$headers","MRT_TableFooter","getFooterGroups","muiTableFooterProps","tableFooterProps","TableFooter","MRT_Table","enableStickyHeader","enableTableFooter","enableTableHead","muiTableProps","tableProps","Table","stickyHeader","tableLayout","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","MRT_TableContainer","muiTableContainerProps","totalToolbarHeight","setTotalToolbarHeight","tableContainerProps","topToolbarHeight","_document","_document$getElementB2","offsetHeight","bottomToolbarHeight","_document2","_document2$getElement","TableContainer","maxHeight","MRT_TablePaper","enableToolbarBottom","enableToolbarTop","muiTablePaperProps","body","tablePaperProps","Paper","elevation","padding","MRT_TableRoot","setIdPrefix","substring","initialState","initState","_props$initialState2","setShowAlertBanner","assign","_col$id","_col$accessorKey","filterFn","name","_initialState$current3","_col$id2","_col$accessorKey2","_col$filterSelectOpti","globalFilterFn","displayColumns","_props$localization","enableExpandAll","_props$localization2","enableSelectAll","_props$localization3","_props$localization4","_props$localization5","columnDefs","prepareColumns","_columnDef$columns","keys","sortingFn","data","state","_props$state2","fill","_props$state3","_props$state4","useReactTable","getCoreRowModel","getExpandedRowModel","getFacetedRowModel","getFilteredRowModel","getGroupedRowModel","getPaginationRowModel","getSortedRowModel","onColumnOrderChange","getSubRows","onCurrentEditingCellChange","onCurrentEditingRowChange","onCurrentFilterFnsChange","onCurrentGlobalFilterFnChange","onDensityChange","onIsFullScreenChange","onShowAlertBannerChange","onShowFiltersChange","onShowGlobalFilterChange","Dialog","PaperComponent","TransitionComponent","disablePortal","fullScreen","keepMounted","transitionDuration","autoResetExpanded","defaultColumn","maxSize","enableMultiRowSelection"],"mappings":"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"}