material-react-table 0.21.0 → 0.22.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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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"}