material-react-table 0.17.0 → 0.18.1

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/filtersFns.ts","../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/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/sortingFns.ts","../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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ExpandAllButton: FC<Props> = ({ instance }) => {\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 } = instance;\n\n const { density } = getState();\n\n const iconButtonProps =\n muiExpandAllButtonProps instanceof Function\n ? muiExpandAllButtonProps({ instance })\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, MouseEvent } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n instance: MRT_TableInstance;\n}\n\nexport const MRT_ExpandButton: FC<Props> = ({ row, instance }) => {\n const {\n getState,\n options: {\n icons: { ExpandMoreIcon },\n localization,\n muiExpandButtonProps,\n onExpandChanged,\n renderDetailPanel,\n },\n } = instance;\n\n const { density } = getState();\n\n const iconButtonProps =\n muiExpandButtonProps instanceof Function\n ? muiExpandButtonProps({ instance, row })\n : muiExpandButtonProps;\n\n const handleToggleExpand = (event: MouseEvent<HTMLButtonElement>) => {\n row.toggleExpanded();\n onExpandChanged?.({ event, row, instance });\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 { rankItem, rankings, RankingInfo } from '@tanstack/match-sorter-utils';\nimport { MRT_Row } from '.';\n\nexport const fuzzy = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\n id: string,\n _filterValue: string | number,\n) => !row.getValue(id).toString().trim();\n\nempty.autoRemove = (val: any) => !val;\n\nexport const notEmpty = (\n row: MRT_Row,\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 between,\n contains,\n empty,\n endsWith,\n equals,\n fuzzy,\n greaterThan,\n lessThan,\n notEmpty,\n notEquals,\n startsWith,\n};\n","import React, { FC, useMemo } from 'react';\nimport { Menu, MenuItem } from '@mui/material';\nimport type {\n MRT_FilterFn,\n MRT_FILTER_OPTION,\n MRT_Header,\n MRT_TableInstance,\n} from '..';\nimport {\n between,\n contains,\n empty,\n endsWith,\n equals,\n fuzzy,\n greaterThan,\n lessThan,\n notEmpty,\n notEquals,\n startsWith,\n} from '../filtersFns';\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_FilterOptionMenu: FC<Props> = ({\n anchorEl,\n header,\n onSelect,\n setAnchorEl,\n instance,\n}) => {\n const {\n getState,\n options: {\n enabledGlobalFilterOptions,\n enabledColumnFilterOptions,\n localization,\n },\n setCurrentFilterFns,\n setCurrentGlobalFilterFn,\n } = instance;\n\n const { density, currentFilterFns, currentGlobalFilterFn } = getState();\n\n const { column } = header ?? {};\n\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 fn: fuzzy,\n },\n {\n option: 'contains',\n label: localization.filterContains,\n divider: false,\n fn: contains,\n },\n {\n option: 'startsWith',\n label: localization.filterStartsWith,\n divider: false,\n fn: startsWith,\n },\n {\n option: 'endsWith',\n label: localization.filterEndsWith,\n divider: true,\n fn: endsWith,\n },\n {\n option: 'equals',\n label: localization.filterEquals,\n divider: false,\n fn: equals,\n },\n {\n option: 'notEquals',\n label: localization.filterNotEquals,\n divider: true,\n fn: notEquals,\n },\n {\n option: 'between',\n label: localization.filterBetween,\n divider: false,\n fn: between,\n },\n {\n option: 'greaterThan',\n label: localization.filterGreaterThan,\n divider: false,\n fn: greaterThan,\n },\n {\n option: 'lessThan',\n label: localization.filterLessThan,\n divider: true,\n fn: lessThan,\n },\n {\n option: 'empty',\n label: localization.filterEmpty,\n divider: false,\n fn: empty,\n },\n {\n option: 'notEmpty',\n label: localization.filterNotEmpty,\n divider: false,\n fn: notEmpty,\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_FILTER_OPTION;\n label: string;\n divider: boolean;\n fn: Function;\n }>,\n [],\n );\n\n const handleSelectFilterType = (value: string) => {\n if (header && column) {\n setCurrentFilterFns((prev: { [key: string]: MRT_FilterFn }) => ({\n ...prev,\n [header.id]: value,\n }));\n if (['empty', 'notEmpty'].includes(value)) {\n column.setFilterValue(' ');\n } else if (value === 'between') {\n column.setFilterValue(['', '']);\n } else {\n column.setFilterValue('');\n }\n } else {\n setCurrentGlobalFilterFn(value);\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, fn }, index) => (\n <MenuItem\n divider={divider}\n key={index}\n onClick={() => handleSelectFilterType(option as string)}\n selected={option === filterOption || fn === filterOption}\n sx={commonMenuItemStyles}\n value={option as string}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ColumnPinningButtons: FC<Props> = ({ column, instance }) => {\n const {\n options: {\n icons: { PushPinIcon },\n localization,\n },\n } = instance;\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_GrabHandleButton: FC<Props> = forwardRef(\n ({ instance }, ref) => {\n const {\n options: {\n icons: { DragHandleIcon },\n localization,\n },\n } = instance;\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);\n","import { ColumnDef, ColumnOrderState, Table } from '@tanstack/react-table';\nimport {\n MaterialReactTableProps,\n MRT_Column,\n MRT_ColumnDef,\n MRT_FilterFn,\n} from '.';\nimport { MRT_FilterFns } from './filtersFns';\n\nexport const getAllLeafColumnDefs = (\n columns: MRT_ColumnDef[],\n): MRT_ColumnDef[] => {\n let lowestLevelColumns: MRT_ColumnDef[] = columns;\n let currentCols: MRT_ColumnDef[] | undefined = columns;\n while (!!currentCols?.length && currentCols.some((col) => col.columns)) {\n const nextCols: MRT_ColumnDef[] = currentCols\n .filter((col) => !!col.columns)\n .map((col) => col.columns)\n .flat() as MRT_ColumnDef[];\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 createGroup = <D extends Record<string, any> = {}>(\n table: Table<D>,\n column: MRT_ColumnDef<D>,\n currentFilterFns: { [key: string]: MRT_FilterFn },\n): ColumnDef<D> =>\n table.createGroup({\n ...column,\n columns: column?.columns?.map?.((col) =>\n col.columns\n ? createGroup<D>(table, col, currentFilterFns)\n : createDataColumn(table, col, currentFilterFns),\n ),\n } as any);\n\nexport const createDataColumn = <D extends Record<string, any> = {}>(\n table: Table<D>,\n column: MRT_ColumnDef<D>,\n currentFilterFns: { [key: string]: MRT_FilterFn },\n): ColumnDef<D> => // @ts-ignore\n table.createDataColumn(column.id, {\n filterFn:\n currentFilterFns[column.id] instanceof Function\n ? currentFilterFns[column.id]\n : // @ts-ignore\n MRT_FilterFns[currentFilterFns[column.id]],\n ...column,\n }) as any;\n\nexport const createDisplayColumn = <D extends Record<string, any> = {}>(\n table: Table<D>,\n column: Omit<MRT_ColumnDef<D>, 'header'> & { header?: string },\n): ColumnDef<D> => table.createDisplayColumn(column as ColumnDef<D>);\n\nexport const reorderColumn = (\n movingColumn: MRT_Column,\n receivingColumn: MRT_Column,\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 = (\n props: MaterialReactTableProps<any>,\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 = (\n props: MaterialReactTableProps<any>,\n) => [\n ((props.positionActionsColumn === 'last' && props.enableRowActions) ||\n (props.enableEditing && props.editingMode === 'row')) &&\n 'mrt-row-actions',\n];\n\nexport const getDefaultColumnOrderIds = (props: MaterialReactTableProps<any>) =>\n [\n ...getLeadingDisplayColumnIds(props),\n ...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map((c) => c.id),\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsMenuItems: FC<Props> = ({\n allColumns,\n column,\n isSubMenu,\n instance,\n}) => {\n const {\n getState,\n options: {\n enableColumnOrdering,\n enableHiding,\n enablePinning,\n localization,\n },\n setColumnOrder,\n } = instance;\n\n const { columnOrder } = getState();\n\n const { columnDef, columnDefType } = column;\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((col) => col.columnDefType === 'group') &&\n (columnDef.enableColumnOrdering !== false ? (\n <MRT_GrabHandleButton\n ref={dragRef as Ref<HTMLButtonElement>}\n instance={instance}\n />\n ) : (\n <Box sx={{ width: '28px' }} />\n ))}\n {enablePinning &&\n !isSubMenu &&\n (column.getCanPin() ? (\n <MRT_ColumnPinningButtons column={column} instance={instance} />\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsMenu: FC<Props> = ({\n anchorEl,\n isSubMenu,\n setAnchorEl,\n instance,\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 } = instance;\n\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.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 instance.setColumnOrder(\n getDefaultColumnOrderIds(instance.options as any),\n )\n }\n >\n {localization.resetOrder}\n </Button>\n )}\n {!isSubMenu && enablePinning && (\n <Button\n disabled={!getIsSomeColumnsPinned()}\n onClick={() => instance.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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ColumnActionMenu: FC<Props> = ({\n anchorEl,\n header,\n setAnchorEl,\n instance,\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 } = instance;\n\n const { column } = header;\n\n const { columnDef } = column;\n\n const { columnSizing, columnVisibility, density } = getState();\n\n const [filterMenuAnchorEl, setFilterMenuAnchorEl] =\n useState<null | HTMLElement>(null);\n\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 instance={instance}\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_RowActionMenu: FC<Props> = ({\n anchorEl,\n handleEdit,\n row,\n setAnchorEl,\n instance,\n}) => {\n const {\n getState,\n options: {\n icons: { EditIcon },\n enableEditing,\n localization,\n renderRowActionMenuItems,\n },\n } = instance;\n\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 instance,\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_EditActionButtons: FC<Props> = ({ row, instance }) => {\n const {\n getState,\n options: {\n icons: { CancelIcon, SaveIcon },\n localization,\n onEditRowSubmit,\n },\n setCurrentEditingRow,\n } = instance;\n\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, instance });\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ToggleRowActionMenuButton: FC<Props> = ({ row, instance }) => {\n const {\n getState,\n options: {\n enableEditing,\n icons: { EditIcon, MoreHorizIcon },\n localization,\n renderRowActionMenuItems,\n renderRowActions,\n },\n setCurrentEditingRow,\n } = instance;\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, instance })}</>\n ) : row.id === currentEditingRow?.id ? (\n <MRT_EditActionButtons row={row} instance={instance} />\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_SelectCheckbox: FC<Props> = ({ row, selectAll, instance }) => {\n const {\n getRowModel,\n getPaginationRowModel,\n getSelectedRowModel,\n getState,\n options: {\n localization,\n muiSelectCheckboxProps,\n muiSelectAllCheckboxProps,\n onRowSelectionChanged,\n onRowSelectAllChanged,\n selectAllMode,\n },\n } = instance;\n\n const { density } = getState();\n\n const handleSelectChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (selectAll) {\n if (selectAllMode === 'all') {\n instance.getToggleAllRowsSelectedHandler()(event as any);\n } else if (selectAllMode === 'page') {\n instance.getToggleAllPageRowsSelectedHandler()(event as any);\n }\n onRowSelectAllChanged?.({\n event,\n selectedRows: event.target.checked\n ? selectAllMode === 'all'\n ? getRowModel().flatRows\n : getPaginationRowModel().flatRows\n : [],\n instance,\n });\n } else if (row) {\n row?.getToggleSelectedHandler()(event as any);\n onRowSelectionChanged?.({\n event,\n row,\n selectedRows: event.target.checked\n ? [...getSelectedRowModel().flatRows, row]\n : getSelectedRowModel().flatRows.filter(\n (selectedRow) => selectedRow.id !== row.id,\n ),\n instance,\n });\n }\n };\n\n const checkboxProps = selectAll\n ? muiSelectAllCheckboxProps instanceof Function\n ? muiSelectAllCheckboxProps({ instance })\n : muiSelectAllCheckboxProps\n : muiSelectCheckboxProps instanceof Function\n ? muiSelectCheckboxProps({ row: row as MRT_Row, instance })\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 ? instance.getIsAllRowsSelected() : row?.getIsSelected()\n }\n indeterminate={\n selectAll\n ? instance.getIsSomeRowsSelected()\n : 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, MouseEvent } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n instance: MRT_TableInstance;\n}\n\nexport const MRT_FullScreenToggleButton: FC<Props> = ({\n instance,\n ...rest\n}) => {\n const {\n getState,\n options: {\n icons: { FullscreenExitIcon, FullscreenIcon },\n localization,\n onIsFullScreenChanged,\n },\n setIsFullScreen,\n } = instance;\n\n const { isFullScreen } = getState();\n\n const handleToggleFullScreen = (event: MouseEvent<HTMLButtonElement>) => {\n onIsFullScreenChanged?.({\n event,\n isFullScreen: !isFullScreen,\n instance,\n });\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsButton: FC<Props> = ({ instance, ...rest }) => {\n const {\n options: {\n icons: { ViewColumnIcon },\n localization,\n },\n } = instance;\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 instance={instance}\n />\n </>\n );\n};\n","import React, { FC, MouseEvent } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n instance: MRT_TableInstance;\n}\n\nexport const MRT_ToggleDensePaddingButton: FC<Props> = ({\n instance,\n ...rest\n}) => {\n const {\n getState,\n options: {\n icons: { DensityLargeIcon, DensityMediumIcon, DensitySmallIcon },\n localization,\n onDensityChanged,\n },\n setDensity,\n } = instance;\n\n const { density } = getState();\n\n const handleToggleDensePadding = (event: MouseEvent<HTMLButtonElement>) => {\n const nextDensity =\n density === 'comfortable'\n ? 'compact'\n : density === 'compact'\n ? 'spacious'\n : 'comfortable';\n onDensityChanged?.({\n event,\n density: nextDensity,\n instance,\n });\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, MouseEvent } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n instance: MRT_TableInstance;\n}\n\nexport const MRT_ToggleFiltersButton: FC<Props> = ({ instance, ...rest }) => {\n const {\n getState,\n options: {\n icons: { FilterListIcon, FilterListOffIcon },\n localization,\n onShowFiltersChanged,\n },\n setShowFilters,\n } = instance;\n\n const { showFilters } = getState();\n\n const handleToggleShowFilters = (event: MouseEvent<HTMLButtonElement>) => {\n onShowFiltersChanged?.({\n event,\n showFilters: !showFilters,\n instance,\n });\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, MouseEvent } from 'react';\nimport { IconButton, IconButtonProps, Tooltip } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props extends IconButtonProps {\n instance: MRT_TableInstance;\n}\n\nexport const MRT_ToggleGlobalFilterButton: FC<Props> = ({\n instance,\n ...rest\n}) => {\n const {\n getState,\n options: {\n icons: { SearchIcon, SearchOffIcon },\n tableId,\n localization,\n muiSearchTextFieldProps,\n onShowGlobalFilterChanged,\n },\n setShowGlobalFilter,\n } = instance;\n\n const { showGlobalFilter } = getState();\n\n const textFieldProps =\n muiSearchTextFieldProps instanceof Function\n ? muiSearchTextFieldProps({ instance })\n : muiSearchTextFieldProps;\n\n const handleToggleSearch = (event: MouseEvent<HTMLButtonElement>) => {\n onShowGlobalFilterChanged?.({\n event,\n showGlobalFilter: !showGlobalFilter,\n instance,\n });\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_GlobalFilterTextField: FC<Props> = ({ instance }) => {\n const {\n getState,\n setGlobalFilter,\n options: {\n enableGlobalFilterChangeMode,\n icons: { SearchIcon, CloseIcon },\n localization,\n muiSearchTextFieldProps,\n onGlobalFilterValueChanged,\n onGlobalFilterValueChangedDebounced,\n tableId,\n },\n } = instance;\n\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 onGlobalFilterValueChangedDebounced?.({ event, instance });\n }, 250),\n [],\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setSearchValue(event.target.value);\n handleChangeDebounced(event);\n onGlobalFilterValueChanged?.({ event, instance });\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({ instance })\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarInternalButtons: FC<Props> = ({ instance }) => {\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 } = instance;\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 instance,\n }) ?? (\n <>\n {enableGlobalFilter && positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField instance={instance} />\n )}\n {enableFilters && enableGlobalFilter && (\n <MRT_ToggleGlobalFilterButton instance={instance} />\n )}\n {enableFilters && enableColumnFilters && (\n <MRT_ToggleFiltersButton instance={instance} />\n )}\n {(enableHiding || enableColumnOrdering || enablePinning) && (\n <MRT_ShowHideColumnsButton instance={instance} />\n )}\n {enableDensityToggle && (\n <MRT_ToggleDensePaddingButton instance={instance} />\n )}\n {enableFullScreenToggle && (\n <MRT_FullScreenToggleButton instance={instance} />\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 instance: MRT_TableInstance;\n position: 'top' | 'bottom';\n}\n\nexport const MRT_TablePagination: FC<Props> = ({ instance, position }) => {\n const {\n getPrePaginationRowModel,\n getState,\n setPageIndex,\n setPageSize,\n options: {\n muiTablePaginationProps,\n enableToolbarInternalActions,\n rowCount,\n },\n } = instance;\n\n const {\n pagination: { pageSize = 10, pageIndex = 0 },\n showGlobalFilter,\n } = getState();\n\n const tablePaginationProps =\n muiTablePaginationProps instanceof Function\n ? muiTablePaginationProps({ instance })\n : muiTablePaginationProps;\n\n const handleChangeRowsPerPage = (event: ChangeEvent<HTMLInputElement>) => {\n setPageSize(+event.target.value);\n };\n\n const totalRowCount = rowCount ?? getPrePaginationRowModel().rows.length;\n\n const showFirstLastPageButtons = totalRowCount / pageSize > 2;\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, Box, Chip, Collapse } from '@mui/material';\nimport { MRT_TableInstance } from '..';\n\ninterface Props {\n stackAlertBanner?: boolean;\n instance: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarAlertBanner: FC<Props> = ({\n stackAlertBanner,\n instance,\n}) => {\n const {\n getPrePaginationRowModel,\n getSelectedRowModel,\n getState,\n options: { localization, muiTableToolbarAlertBannerProps },\n } = instance;\n\n const { grouping } = getState();\n\n const alertProps =\n muiTableToolbarAlertBannerProps instanceof Function\n ? muiTableToolbarAlertBannerProps({ instance })\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={instance.getColumn(columnId).columnDef.header}\n onDelete={() => instance.getColumn(columnId).toggleGrouping()}\n />\n </Fragment>\n ))}\n </span>\n ) : null;\n\n return (\n <Collapse\n in={!!selectMessage || !!groupedByMessage}\n timeout={stackAlertBanner ? 200 : 0}\n >\n <Alert\n color=\"info\"\n icon={false}\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 {...alertProps}\n >\n <Box sx={{ p: '0.5rem 1rem' }}>\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_LinearProgressBar: FC<Props> = ({ alignTo, instance }) => {\n const {\n options: { muiLinearProgressProps },\n getState,\n } = instance;\n\n const { isLoading, showProgressBars } = getState();\n\n const linearProgressProps =\n muiLinearProgressProps instanceof Function\n ? muiLinearProgressProps({ instance })\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarTop: FC<Props> = ({ instance }) => {\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 } = instance;\n\n const { isFullScreen, showGlobalFilter } = getState();\n\n const isMobile = useMediaQuery('(max-width:720px)');\n\n const toolbarProps =\n muiTableToolbarTopProps instanceof Function\n ? muiTableToolbarTopProps({ instance })\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 instance={instance}\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 instance={instance} />\n )}\n\n {renderToolbarTopCustomActions?.({ instance }) ?? <span />}\n {enableToolbarInternalActions ? (\n <MRT_ToolbarInternalButtons instance={instance} />\n ) : (\n enableGlobalFilter &&\n positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField instance={instance} />\n )\n )}\n </Box>\n {enablePagination &&\n ['top', 'both'].includes(positionPagination ?? '') && (\n <MRT_TablePagination instance={instance} position=\"top\" />\n )}\n <MRT_LinearProgressBar alignTo=\"bottom\" instance={instance} />\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarBottom: FC<Props> = ({ instance }) => {\n const {\n getState,\n options: {\n enablePagination,\n muiTableToolbarBottomProps,\n positionPagination,\n positionToolbarAlertBanner,\n renderToolbarBottomCustomActions,\n tableId,\n },\n } = instance;\n\n const { isFullScreen } = getState();\n\n const isMobile = useMediaQuery('(max-width:720px)');\n\n const toolbarProps =\n muiTableToolbarBottomProps instanceof Function\n ? muiTableToolbarBottomProps({ instance })\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\" instance={instance} />\n {positionToolbarAlertBanner === 'bottom' && (\n <MRT_ToolbarAlertBanner instance={instance} />\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({ instance })}\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 instance={instance} 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 instance: MRT_TableInstance;\n}\n\nexport const MRT_FilterTextField: FC<Props> = ({\n header,\n inputIndex,\n instance,\n}) => {\n const {\n getState,\n options: {\n enableColumnFilterChangeMode,\n enabledColumnFilterOptions,\n icons: { FilterListIcon, CloseIcon },\n localization,\n muiTableHeadCellFilterTextFieldProps,\n onColumnFilterValueChanged,\n onColumnFilterValueChangedDebounced,\n tableId,\n },\n setCurrentFilterFns,\n } = instance;\n\n const { column } = header;\n\n const { columnDef } = column;\n\n const { currentFilterFns } = getState();\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const mTableHeadCellFilterTextFieldProps =\n muiTableHeadCellFilterTextFieldProps instanceof Function\n ? muiTableHeadCellFilterTextFieldProps({ column, instance })\n : muiTableHeadCellFilterTextFieldProps;\n\n const mcTableHeadCellFilterTextFieldProps =\n columnDef.muiTableHeadCellFilterTextFieldProps instanceof Function\n ? columnDef.muiTableHeadCellFilterTextFieldProps({\n column,\n instance,\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 onColumnFilterValueChangedDebounced?.({\n column,\n event,\n filterValue: event.target.value,\n instance,\n });\n columnDef.onColumnFilterValueChangedDebounced?.({\n column,\n event,\n filterValue: event.target.value,\n instance,\n });\n }, 200),\n [],\n );\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setFilterValue(event.target.value);\n handleChangeDebounced(event);\n onColumnFilterValueChanged?.({\n column,\n event,\n filterValue: event.target.value,\n instance,\n });\n columnDef.onColumnFilterValueChanged?.({\n column,\n event,\n filterValue: event.target.value,\n instance,\n });\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, instance })}</>;\n }\n\n const filterId = `mrt-${tableId}-${header.id}-filter-text-field${\n inputIndex ?? ''\n }`;\n const filterFn = currentFilterFns?.[header.id];\n const isSelectFilter = !!columnDef.filterSelectOptions;\n const filterChipLabel =\n !(filterFn instanceof Function) && ['empty', 'notEmpty'].includes(filterFn)\n ? //@ts-ignore\n localization[\n `filter${filterFn.charAt(0).toUpperCase() + filterFn.slice(1)}`\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 {filterFn instanceof Function\n ? localization.filterMode.replace(\n '{filterType}',\n // @ts-ignore\n localization[\n `filter${\n filterFn.name.charAt(0).toUpperCase() +\n filterFn.name.slice(1)\n }`\n ] ?? '',\n ) ?? ''\n : localization.filterMode.replace(\n '{filterType}',\n // @ts-ignore\n localization[\n `filter${\n filterFn.charAt(0).toUpperCase() + filterFn.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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_FilterRangeFields: FC<Props> = ({ header, instance }) => {\n return (\n <Box sx={{ display: 'grid', gridTemplateColumns: '6fr 6fr', gap: '1rem' }}>\n <MRT_FilterTextField header={header} inputIndex={0} instance={instance} />\n <MRT_FilterTextField header={header} inputIndex={1} instance={instance} />\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellFilterContainer: FC<Props> = ({\n header,\n instance,\n}) => {\n const { getState } = instance;\n\n const { currentFilterFns, showFilters } = getState();\n\n const { column } = header;\n\n return (\n <Collapse in={showFilters} mountOnEnter unmountOnExit>\n {currentFilterFns[column.id] === 'between' ? (\n <MRT_FilterRangeFields header={header} instance={instance} />\n ) : (\n <MRT_FilterTextField header={header} instance={instance} />\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellFilterLabel: FC<Props> = ({\n header,\n instance,\n}) => {\n const {\n getState,\n options: {\n icons: { FilterAltIcon },\n localization,\n },\n } = instance;\n\n const { currentFilterFns } = getState();\n\n const { column } = header;\n\n const { columnDef } = column;\n\n const filterFn = currentFilterFns?.[header.id];\n\n const filterTooltip = localization.filteringByColumn\n .replace('{column}', String(columnDef.header))\n .replace(\n '{filterType}',\n filterFn instanceof Function\n ? ''\n : // @ts-ignore\n localization[\n `filter${filterFn.charAt(0).toUpperCase() + filterFn.slice(1)}`\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() && filterFn !== 'between') ||\n (filterFn === '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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellResizeHandle: FC<Props> = ({\n header,\n instance,\n}) => {\n const { getState } = instance;\n\n const { showFilters } = getState();\n\n const { column } = header;\n\n const { columnDefType } = column;\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 opacity: 0.8,\n position: 'absolute',\n mr: '-1rem',\n right: '1px',\n touchAction: 'none',\n transition: column.getIsResizing() ? undefined : 'all 0.2s ease-in-out',\n userSelect: 'none',\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(${getState().columnSizingInfo.deltaOffset}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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellSortLabel: FC<Props> = ({ header, instance }) => {\n const {\n options: { localization },\n } = instance;\n\n const { column } = header;\n\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellColumnActionsButton: FC<Props> = ({\n header,\n instance,\n}) => {\n const {\n options: {\n icons: { MoreVertIcon },\n localization,\n muiTableHeadCellColumnActionsButtonProps,\n },\n } = instance;\n\n const { column } = header;\n\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, instance })\n : muiTableHeadCellColumnActionsButtonProps;\n\n const mcTableHeadCellColumnActionsButtonProps =\n columnDef.muiTableHeadCellColumnActionsButtonProps instanceof Function\n ? columnDef.muiTableHeadCellColumnActionsButtonProps({\n column,\n instance,\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 instance={instance}\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 instance: MRT_TableInstance;\n isDragging?: boolean;\n previewRef?: Ref<HTMLTableCellElement>;\n}\n\nexport const MRT_TableHeadCell: FC<Props> = ({\n dragRef,\n dropRef,\n header,\n instance,\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 } = instance;\n\n const { density, showFilters } = getState();\n\n const { column } = header;\n\n const { columnDef, columnDefType } = column;\n\n const mTableHeadCellProps =\n muiTableHeadCellProps instanceof Function\n ? muiTableHeadCellProps({ column, instance })\n : muiTableHeadCellProps;\n\n const mcTableHeadCellProps =\n columnDef.muiTableHeadCellProps instanceof Function\n ? columnDef.muiTableHeadCellProps({ column, instance })\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 instance,\n })\n : columnDef?.Header) ??\n header.renderHeader() ??\n columnDef.header) as ReactNode;\n\n const getIsLastLeftPinnedColumn = () => {\n return (\n column.getIsPinned() === 'left' &&\n instance.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 (instance.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) *\n 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 ? '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} instance={instance} />\n )}\n {columnDefType === 'data' && column.getCanFilter() && (\n <MRT_TableHeadCellFilterLabel\n header={header}\n instance={instance}\n />\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 instance={instance}\n />\n )}\n {(enableColumnActions || columnDef.enableColumnActions) &&\n columnDef.enableColumnActions !== false &&\n columnDefType !== 'group' && (\n <MRT_TableHeadCellColumnActionsButton\n header={header}\n instance={instance}\n />\n )}\n </Box>\n {column.getCanResize() && (\n <MRT_TableHeadCellResizeHandle\n header={header}\n instance={instance}\n />\n )}\n </Box>\n )}\n {columnDefType === 'data' && column.getCanFilter() && (\n <MRT_TableHeadCellFilterContainer header={header} instance={instance} />\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_DraggableTableHeadCell: FC<Props> = ({ header, instance }) => {\n const { getState, setColumnOrder } = instance;\n\n const { columnOrder } = getState();\n\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadRow: FC<Props> = ({ headerGroup, instance }) => {\n const {\n options: { enableColumnOrdering, enableGrouping, muiTableHeadRowProps },\n } = instance;\n\n const tableRowProps =\n muiTableHeadRowProps instanceof Function\n ? muiTableHeadRowProps({ headerGroup, instance })\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 instance={instance}\n />\n ) : (\n <MRT_TableHeadCell\n header={header}\n key={header.id || index}\n instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHead: FC<Props> = ({ instance }) => {\n const {\n getHeaderGroups,\n options: { muiTableHeadProps },\n } = instance;\n\n const tableHeadProps =\n muiTableHeadProps instanceof Function\n ? muiTableHeadProps({ instance })\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_EditCellTextField: FC<Props> = ({ cell, instance }) => {\n const {\n getState,\n options: {\n tableId,\n enableEditing,\n muiTableBodyCellEditTextFieldProps,\n onCellEditBlur,\n onCellEditChanged,\n },\n setCurrentEditingCell,\n setCurrentEditingRow,\n } = instance;\n\n const [value, setValue] = useState(cell.getValue());\n\n const { column, row } = cell;\n\n const { columnDef } = column;\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setValue(event.target.value);\n columnDef.onCellEditChanged?.({ event, cell, instance });\n onCellEditChanged?.({ event, cell, instance });\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, instance });\n onCellEditBlur?.({ event, cell, instance });\n };\n\n const mTableBodyCellEditTextFieldProps =\n muiTableBodyCellEditTextFieldProps instanceof Function\n ? muiTableBodyCellEditTextFieldProps({ cell, instance })\n : muiTableBodyCellEditTextFieldProps;\n\n const mcTableBodyCellEditTextFieldProps =\n columnDef.muiTableBodyCellEditTextFieldProps instanceof Function\n ? columnDef.muiTableBodyCellEditTextFieldProps({\n cell,\n instance,\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, instance })}</>;\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_CopyButton: FC<Props> = ({ cell, children, instance }) => {\n const {\n options: { localization, muiTableBodyCellCopyButtonProps },\n } = instance;\n\n const { column } = cell;\n\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, instance })\n : muiTableBodyCellCopyButtonProps;\n\n const mcTableBodyCellCopyButtonProps =\n columnDef.muiTableBodyCellCopyButtonProps instanceof Function\n ? columnDef.muiTableBodyCellCopyButtonProps({\n cell,\n instance,\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableBodyCell: FC<Props> = ({\n cell,\n enableHover,\n rowIndex,\n instance,\n}) => {\n const {\n getState,\n options: {\n editingMode,\n enableClickToCopy,\n enableColumnOrdering,\n enableEditing,\n enableRowNumbers,\n muiTableBodyCellProps,\n muiTableBodyCellSkeletonProps,\n onCellClick,\n onRowClick,\n rowNumberMode,\n tableId,\n },\n setColumnOrder,\n setCurrentEditingCell,\n } = instance;\n\n const {\n columnOrder,\n currentEditingCell,\n currentEditingRow,\n density,\n isLoading,\n showSkeletons,\n } = getState();\n\n const { column, row } = cell;\n\n const { columnDef, columnDefType } = column;\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, instance })\n : muiTableBodyCellProps;\n\n const mcTableCellBodyProps =\n columnDef.muiTableBodyCellProps instanceof Function\n ? columnDef.muiTableBodyCellProps({ cell, instance })\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 [columnDefType, column.getSize()],\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 instance.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 (instance.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) *\n 150\n );\n };\n\n return (\n <TableCell\n onClick={(event: MouseEvent<HTMLTableCellElement>) =>\n onCellClick?.({ event, cell, instance })\n }\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:\n (isEditable && editingMode === 'cell') || onRowClick || onCellClick\n ? 'pointer'\n : '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 {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, instance })\n ) : cell.getIsPlaceholder() ||\n (row.getIsGrouped() &&\n column.id !==\n row.groupingColumnId) ? null : cell.getIsAggregated() ? (\n columnDef.AggregatedCell?.({ cell, instance }) ??\n cell.renderAggregatedCell()\n ) : isEditing ? (\n <MRT_EditCellTextField cell={cell} instance={instance} />\n ) : (enableClickToCopy || columnDef.enableClickToCopy) &&\n columnDef.enableClickToCopy !== false ? (\n <>\n <MRT_CopyButton cell={cell} instance={instance}>\n <>{columnDef?.Cell?.({ cell, instance }) ?? cell.renderCell()}</>\n </MRT_CopyButton>\n {row.getIsGrouped() && <> ({row.subRows?.length})</>}\n </>\n ) : (\n <>\n {columnDef?.Cell?.({ cell, instance }) ?? cell.renderCell()}\n {row.getIsGrouped() && <> ({row.subRows?.length ?? ''})</>}\n </>\n )}\n </>\n </TableCell>\n );\n};\n","import React, { FC, MouseEvent } from 'react';\nimport { Collapse, TableCell, TableRow } from '@mui/material';\nimport type { MRT_Row, MRT_TableInstance } from '..';\n\ninterface Props {\n row: MRT_Row;\n instance: MRT_TableInstance;\n}\n\nexport const MRT_TableDetailPanel: FC<Props> = ({ row, instance }) => {\n const {\n getVisibleLeafColumns,\n options: {\n muiTableBodyRowProps,\n muiTableDetailPanelProps,\n onDetailPanelClick,\n renderDetailPanel,\n },\n } = instance;\n\n const tableRowProps =\n muiTableBodyRowProps instanceof Function\n ? muiTableBodyRowProps({ row, instance })\n : muiTableBodyRowProps;\n\n const tableCellProps =\n muiTableDetailPanelProps instanceof Function\n ? muiTableDetailPanelProps({ row, instance })\n : muiTableDetailPanelProps;\n\n return (\n <TableRow {...tableRowProps}>\n <TableCell\n colSpan={getVisibleLeafColumns().length}\n onClick={(event: MouseEvent<HTMLTableCellElement>) =>\n onDetailPanelClick?.({ event, row, instance })\n }\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: `${instance.getTotalSize()}px`,\n ...tableCellProps?.sx,\n }}\n >\n {renderDetailPanel && (\n <Collapse in={row.getIsExpanded()}>\n {renderDetailPanel({ row, instance })}\n </Collapse>\n )}\n </TableCell>\n </TableRow>\n );\n};\n","import React, { FC, MouseEvent } 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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableBodyRow: FC<Props> = ({ row, rowIndex, instance }) => {\n const {\n getIsSomeColumnsPinned,\n options: { muiTableBodyRowProps, onRowClick, renderDetailPanel },\n } = instance;\n\n const tableRowProps =\n muiTableBodyRowProps instanceof Function\n ? muiTableBodyRowProps({ row, instance })\n : muiTableBodyRowProps;\n\n return (\n <>\n <TableRow\n hover\n onClick={(event: MouseEvent<HTMLTableRowElement>) =>\n onRowClick?.({ event, row, instance })\n }\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 instance={instance}\n />\n ))}\n </TableRow>\n {renderDetailPanel && !row.getIsGrouped() && (\n <MRT_TableDetailPanel row={row} instance={instance} />\n )}\n </>\n );\n};\n","import { compareItems, RankingInfo } from '@tanstack/match-sorter-utils';\nimport { Row, sortingFns } from '@tanstack/react-table';\nimport type { MRT_Row } from '.';\n\nconst fuzzy = (rowA: MRT_Row, rowB: MRT_Row, columnId: string) => {\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 fuzzy,\n};\n\nexport const rankGlobalFuzzy = (rowA: MRT_Row, rowB: MRT_Row) =>\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 React, { FC, RefObject, useMemo } from 'react';\nimport { useVirtual } from 'react-virtual';\nimport { TableBody } from '@mui/material';\nimport { MRT_TableBodyRow } from './MRT_TableBodyRow';\nimport type { MRT_Row, MRT_TableInstance } from '..';\nimport { rankGlobalFuzzy } from '../sortingFns';\n\ninterface Props {\n instance: MRT_TableInstance;\n tableContainerRef: RefObject<HTMLDivElement>;\n}\n\nexport const MRT_TableBody: FC<Props> = ({ instance, tableContainerRef }) => {\n const {\n getRowModel,\n getPrePaginationRowModel,\n getState,\n options: {\n enableGlobalFilterRankedResults,\n enablePagination,\n enableRowVirtualization,\n muiTableBodyProps,\n virtualizerProps,\n },\n } = instance;\n\n const { density, globalFilter, pagination, sorting } = getState();\n\n const tableBodyProps =\n muiTableBodyProps instanceof Function\n ? muiTableBodyProps({ instance })\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 overscan: density === 'compact' ? 20 : 10,\n size: rows.length,\n parentRef: tableContainerRef,\n ...virtualizerProps,\n })\n : ({} as any);\n\n const { virtualItems: virtualRows } = rowVirtualizer;\n const paddingTop = virtualRows?.length > 0 ? virtualRows[0].start : 0;\n const paddingBottom =\n virtualRows?.length > 0\n ? rowVirtualizer.totalSize - virtualRows[virtualRows.length - 1].end\n : 0;\n\n return (\n <TableBody {...tableBodyProps}>\n {enableRowVirtualization && paddingTop > 0 && (\n <tr>\n <td style={{ height: `${paddingTop}px` }} />\n </tr>\n )}\n {/* @ts-ignore */}\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableFooterCell: FC<Props> = ({ footer, instance }) => {\n const {\n getState,\n options: { muiTableFooterCellProps, enableColumnResizing },\n } = instance;\n\n const { density } = getState();\n\n const { column } = footer;\n\n const { columnDef, columnDefType } = column;\n\n const mTableFooterCellProps =\n muiTableFooterCellProps instanceof Function\n ? muiTableFooterCellProps({ column, instance })\n : muiTableFooterCellProps;\n\n const mcTableFooterCellProps =\n columnDef.muiTableFooterCellProps instanceof Function\n ? columnDef.muiTableFooterCellProps({ column, instance })\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 instance,\n })\n : columnDef.Footer) ??\n columnDef.footer ??\n footer.renderFooter() ??\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableFooterRow: FC<Props> = ({ footerGroup, instance }) => {\n const {\n options: { muiTableFooterRowProps },\n } = instance;\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, instance })\n : muiTableFooterRowProps;\n\n return (\n <TableRow {...tableRowProps}>\n {footerGroup.headers.map((footer: MRT_Header) => (\n <MRT_TableFooterCell\n footer={footer}\n key={footer.id}\n instance={instance}\n />\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableFooter: FC<Props> = ({ instance }) => {\n const {\n getFooterGroups,\n\n options: { muiTableFooterProps },\n } = instance;\n\n const tableFooterProps =\n muiTableFooterProps instanceof Function\n ? muiTableFooterProps({ instance })\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_Table: FC<Props> = ({ tableContainerRef, instance }) => {\n const {\n getState,\n options: {\n enableColumnResizing,\n enableRowVirtualization,\n enableStickyHeader,\n enableTableFooter,\n enableTableHead,\n muiTableProps,\n },\n } = instance;\n\n const { isFullScreen } = getState();\n\n const tableProps =\n muiTableProps instanceof Function\n ? muiTableProps({ instance })\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 instance={instance} />}\n <MRT_TableBody\n tableContainerRef={tableContainerRef}\n instance={instance}\n />\n {enableTableFooter && <MRT_TableFooter instance={instance} />}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableContainer: FC<Props> = ({ instance }) => {\n const {\n getState,\n options: {\n enableStickyHeader,\n enableRowVirtualization,\n muiTableContainerProps,\n tableId,\n },\n } = instance;\n\n const { isFullScreen } = getState();\n\n const [totalToolbarHeight, setTotalToolbarHeight] = useState(0);\n\n const tableContainerProps =\n muiTableContainerProps instanceof Function\n ? muiTableContainerProps({ instance })\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} instance={instance} />\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TablePaper: FC<Props> = ({ instance }) => {\n const {\n getState,\n options: { enableToolbarBottom, enableToolbarTop, muiTablePaperProps },\n } = instance;\n\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({ instance })\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 instance={instance} />}\n <MRT_TableContainer instance={instance} />\n {enableToolbarBottom && <MRT_ToolbarBottom instance={instance} />}\n </Paper>\n </DndProvider>\n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport {\n FilterFn,\n ReactTableGenerics,\n Table,\n TableState,\n createTable,\n filterFns,\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useTableInstance,\n sortingFns,\n} from '@tanstack/react-table';\nimport {\n MRT_Cell,\n MRT_ColumnDef,\n MRT_FilterFn,\n MRT_FILTER_OPTION,\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 createDataColumn,\n createDisplayColumn,\n createGroup,\n getAllLeafColumnDefs,\n getDefaultColumnOrderIds,\n} from '../utils';\nimport { MRT_FilterFns } from '../filtersFns';\nimport { MRT_SortingFns } from '../sortingFns';\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 [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_FilterFn;\n }>(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map((c) => ({\n [c.id as string]:\n c.filterFn ??\n initialState?.currentFilterFns?.[c.id] ??\n (!!c.filterSelectOptions?.length ? 'equals' : 'fuzzy'),\n })),\n ),\n );\n\n const [currentGlobalFilterFn, setCurrentGlobalFilterFn] = useState<\n MRT_FILTER_OPTION | FilterFn<ReactTableGenerics> | string | number | symbol\n >(props.globalFilterFn ?? 'fuzzy');\n\n const table = useMemo(\n () =>\n // @ts-ignore\n createTable().setOptions({\n filterFns: { ...filterFns, ...MRT_FilterFns, ...props.filterFns },\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n sortingFns: { ...sortingFns, ...MRT_SortingFns, ...props.sortingFns },\n }) as Table<D>,\n [],\n );\n\n const displayColumns = useMemo(() => {\n return [\n columnOrder.includes('mrt-row-actions') &&\n createDisplayColumn(table, {\n Cell: ({ cell }) => (\n <MRT_ToggleRowActionMenuButton\n row={cell.row as any}\n instance={instance}\n />\n ),\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 createDisplayColumn(table, {\n Cell: ({ cell }) => (\n <MRT_ExpandButton row={cell.row as any} instance={instance} />\n ),\n Header: () =>\n props.enableExpandAll ? (\n <MRT_ExpandAllButton instance={instance} />\n ) : null,\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 createDisplayColumn(table, {\n Cell: ({ cell }) => (\n <MRT_SelectCheckbox row={cell.row as any} instance={instance} />\n ),\n Header: () =>\n props.enableSelectAll ? (\n <MRT_SelectCheckbox selectAll instance={instance} />\n ) : null,\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 createDisplayColumn(table, {\n Cell: ({ cell }) => cell.row.index + 1,\n Header: () => props.localization?.rowNumber,\n header: props.localization?.rowNumbers,\n id: 'mrt-row-numbers',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 60,\n }),\n ].filter(Boolean) as MRT_ColumnDef<D>[];\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 table,\n ]);\n\n const columns = useMemo(\n () => [\n ...displayColumns,\n ...props.columns.map((column) =>\n column.columns\n ? createGroup(table, column as any, currentFilterFns)\n : createDataColumn(table, column as any, currentFilterFns),\n ),\n ],\n [table, props.columns, currentFilterFns],\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 (c) => ({\n [c.id]: null,\n }),\n ),\n ),\n )\n : props.data,\n [props.data, props.state?.isLoading, props.state?.showSkeletons],\n );\n\n //@ts-ignore\n const instance = {\n //@ts-ignore\n ...useTableInstance(table, {\n onColumnOrderChange: setColumnOrder,\n ...props,\n //@ts-ignore\n columns,\n data,\n getSubRows: (row) => (row as MRT_Row)?.subRows,\n //@ts-ignore\n globalFilterFn: currentGlobalFilterFn,\n initialState,\n state: {\n columnOrder,\n currentEditingCell,\n currentEditingRow,\n currentFilterFns,\n currentGlobalFilterFn,\n density,\n isFullScreen,\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 setShowFilters: props.onShowFiltersChange ?? setShowFilters,\n setShowGlobalFilter: props.onShowGlobalFilterChange ?? setShowGlobalFilter,\n } as MRT_TableInstance;\n\n useEffect(() => {\n props?.onColumnOrderChanged?.({\n columnOrder: instance.getState().columnOrder,\n //@ts-ignore\n instance,\n });\n }, [instance.getState().columnOrder]);\n\n useEffect(() => {\n props?.onColumnPinningChanged?.({\n columnPinning: instance.getState().columnPinning,\n //@ts-ignore\n instance,\n });\n }, [instance.getState().columnPinning]);\n\n useEffect(() => {\n props?.onColumnVisibilityChanged?.({\n columnPinning: instance.getState().columnVisibility,\n //@ts-ignore\n instance,\n });\n }, [instance.getState().columnVisibility]);\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 instance={instance} />\n </Dialog>\n {!isFullScreen && <MRT_TablePaper instance={instance} />}\n </>\n );\n};\n","import React, {\n ChangeEvent,\n Dispatch,\n FC,\n FocusEvent,\n MouseEvent,\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 ColumnOrderState,\n ColumnPinningState,\n FilterFn,\n FilterFnOption,\n Header,\n HeaderGroup,\n OnChangeFn,\n Overwrite,\n ReactTableGenerics,\n Row,\n SortingFn,\n SortingFnOption,\n TableGenerics,\n TableInstance,\n TableState,\n UseTableInstanceOptions,\n VisibilityState,\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';\n\nexport type MRT_TableOptions<D extends Record<string, any> = {}> = Partial<\n Omit<\n UseTableInstanceOptions<ReactTableGenerics>,\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 TableInstance<\n Overwrite<\n Partial<TableGenerics>,\n {\n Row: D;\n }\n >\n >,\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_FilterFn;\n }>\n >;\n setCurrentGlobalFilterFn: Dispatch<SetStateAction<MRT_FilterFn>>;\n setDensity: Dispatch<SetStateAction<'comfortable' | 'compact' | 'spacious'>>;\n setIsFullScreen: 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, string | Function>;\n currentGlobalFilterFn: Record<string, string | Function>;\n density: 'comfortable' | 'compact' | 'spacious';\n isLoading: boolean;\n isFullScreen: 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 | 'aggregatedCell'\n | 'cell'\n | 'columns'\n | 'filterFn'\n | 'footer'\n | 'header'\n | 'sortingFn'\n> & {\n AggregatedCell?: ({\n cell,\n instance,\n }: {\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n Cell?: ({\n cell,\n instance,\n }: {\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n Edit?: ({\n cell,\n instance,\n }: {\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n Filter?: ({\n header,\n instance,\n }: {\n header: MRT_Header<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n Footer?:\n | ReactNode\n | (({\n footer,\n instance,\n }: {\n footer: MRT_Header<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode);\n Header?:\n | ReactNode\n | (({\n header,\n instance,\n }: {\n header: MRT_Header<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode);\n accessorFn?: (row: D) => any;\n columns?: MRT_ColumnDef<D>[];\n enableClickToCopy?: boolean;\n enableColumnActions?: boolean;\n enableColumnFilterChangeMode?: boolean;\n enableColumnOrdering?: boolean;\n enableEditing?: boolean;\n enabledColumnFilterOptions?: (MRT_FILTER_OPTION | string)[] | null;\n filterFn?: MRT_FilterFn;\n filterSelectOptions?: (string | { text: string; value: string })[];\n footer?: string;\n header: string;\n id: keyof D | string;\n muiTableBodyCellCopyButtonProps?:\n | ButtonProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => ButtonProps);\n muiTableBodyCellEditTextFieldProps?:\n | TextFieldProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TextFieldProps);\n muiTableBodyCellProps?:\n | TableCellProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TableCellProps);\n muiTableFooterCellProps?:\n | TableCellProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableHeadCellColumnActionsButtonProps?:\n | IconButtonProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => IconButtonProps);\n muiTableHeadCellFilterTextFieldProps?:\n | TextFieldProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TextFieldProps);\n muiTableHeadCellProps?:\n | TableCellProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n onCellEditBlur?: ({\n cell,\n event,\n instance,\n }: {\n event: FocusEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => void;\n onCellEditChanged?: ({\n cell,\n event,\n instance,\n }: {\n event: ChangeEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => void;\n onColumnFilterValueChanged?: ({\n column,\n event,\n filterValue,\n instance,\n }: {\n column: MRT_Column<D>;\n event: ChangeEvent<HTMLInputElement>;\n filterValue: any;\n instance: MRT_TableInstance<D>;\n }) => void;\n onColumnFilterValueChangedDebounced?: ({\n column,\n event,\n filterValue,\n instance,\n }: {\n column: MRT_Column<D>;\n event: ChangeEvent<HTMLInputElement>;\n filterValue: any;\n instance: MRT_TableInstance<D>;\n }) => void;\n sortingFn?: MRT_SortingFn;\n};\n\nexport type MRT_Column<D extends Record<string, any> = {}> = Omit<\n Column<D>,\n 'header' | 'footer' | 'columns' | 'columnDef'\n> & {\n columns?: MRT_Column<D>[];\n columnDef: MRT_ColumnDef<D>;\n header: string;\n footer: 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 = SortingFnOption<TableGenerics> | 'fuzzy';\n\nexport type MRT_SortingFn = SortingFn<TableGenerics> | MRT_SortingOption;\n\nexport type MRT_FILTER_OPTION =\n | 'between'\n | 'contains'\n | 'empty'\n | 'endsWith'\n | 'equals'\n | 'fuzzy'\n | 'greaterThan'\n | 'greaterThanOrEqual'\n | 'lessThan'\n | 'lessThanOrEqual'\n | 'notEmpty'\n | 'notEquals'\n | 'startsWith'\n | FilterFnOption<TableGenerics>;\n\nexport type MRT_FilterFn = FilterFn<TableGenerics> | MRT_FILTER_OPTION;\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_FILTER_OPTION | string)[] | null;\n enabledGlobalFilterOptions?: (MRT_FILTER_OPTION | string)[] | null;\n icons?: Partial<MRT_Icons>;\n localization?: Partial<MRT_Localization>;\n muiExpandAllButtonProps?:\n | IconButtonProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => IconButtonProps);\n muiExpandButtonProps?:\n | IconButtonProps\n | (({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => IconButtonProps);\n muiLinearProgressProps?:\n | LinearProgressProps\n | (({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n }) => LinearProgressProps);\n muiSearchTextFieldProps?:\n | TextFieldProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => TextFieldProps);\n muiSelectAllCheckboxProps?:\n | CheckboxProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => CheckboxProps);\n muiSelectCheckboxProps?:\n | CheckboxProps\n | (({\n instance,\n row,\n }: {\n instance: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => CheckboxProps);\n muiTableBodyCellCopyButtonProps?:\n | ButtonProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => ButtonProps);\n muiTableBodyCellEditTextFieldProps?:\n | TextFieldProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TextFieldProps);\n muiTableBodyCellProps?:\n | TableCellProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TableCellProps);\n muiTableBodyCellSkeletonProps?:\n | SkeletonProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => SkeletonProps);\n muiTableBodyProps?:\n | TableBodyProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => TableBodyProps);\n muiTableBodyRowProps?:\n | TableRowProps\n | (({\n instance,\n row,\n }: {\n instance: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => TableRowProps);\n muiTableContainerProps?:\n | TableContainerProps\n | (({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n }) => TableContainerProps);\n muiTableDetailPanelProps?:\n | TableCellProps\n | (({\n instance,\n row,\n }: {\n instance: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => TableCellProps);\n muiTableFooterCellProps?:\n | TableCellProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableFooterProps?:\n | TableFooterProps\n | (({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n }) => TableFooterProps);\n muiTableFooterRowProps?:\n | TableRowProps\n | (({\n instance,\n footerGroup,\n }: {\n instance: MRT_TableInstance<D>;\n footerGroup: MRT_HeaderGroup<D>;\n }) => TableRowProps);\n muiTableHeadCellColumnActionsButtonProps?:\n | IconButtonProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => IconButtonProps);\n muiTableHeadCellFilterTextFieldProps?:\n | TextFieldProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TextFieldProps);\n muiTableHeadCellProps?:\n | TableCellProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableHeadProps?:\n | TableHeadProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => TableHeadProps);\n muiTableHeadRowProps?:\n | TableRowProps\n | (({\n instance,\n headerGroup,\n }: {\n instance: MRT_TableInstance<D>;\n headerGroup: MRT_HeaderGroup<D>;\n }) => TableRowProps);\n muiTablePaginationProps?:\n | Partial<TablePaginationProps>\n | (({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n }) => Partial<TablePaginationProps>);\n muiTablePaperProps?:\n | PaperProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => PaperProps);\n muiTableProps?:\n | TableProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => TableProps);\n muiTableToolbarAlertBannerProps?:\n | AlertProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => AlertProps);\n muiTableToolbarBottomProps?:\n | ToolbarProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => ToolbarProps);\n muiTableToolbarTopProps?:\n | ToolbarProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => ToolbarProps);\n onCellClick?: ({\n cell,\n event,\n instance,\n }: {\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n event: MouseEvent<HTMLTableCellElement>;\n }) => void;\n onCellEditBlur?: ({\n cell,\n event,\n instance,\n }: {\n event: FocusEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => void;\n onCellEditChanged?: ({\n cell,\n event,\n instance,\n }: {\n event: ChangeEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => void;\n onColumnFilterValueChanged?: ({\n column,\n event,\n filterValue,\n instance,\n }: {\n column: MRT_Column<D>;\n event: ChangeEvent<HTMLInputElement>;\n filterValue: any;\n instance: MRT_TableInstance<D>;\n }) => void;\n onColumnFilterValueChangedDebounced?: ({\n column,\n event,\n filterValue,\n instance,\n }: {\n column: MRT_Column<D>;\n event: ChangeEvent<HTMLInputElement>;\n filterValue: any;\n instance: MRT_TableInstance<D>;\n }) => void;\n onColumnOrderChanged?: ({\n columnOrder,\n instance,\n }: {\n columnOrder: ColumnOrderState;\n instance: MRT_TableInstance<D>;\n }) => void;\n onColumnPinningChanged?: ({\n columnPinning,\n instance,\n }: {\n columnPinning: ColumnPinningState;\n instance: MRT_TableInstance<D>;\n }) => void;\n onColumnVisibilityChanged?: ({\n column,\n columnVisibility,\n instance,\n }: {\n column: MRT_Column<D>;\n columnVisibility: VisibilityState;\n instance: MRT_TableInstance<D>;\n }) => void;\n onCurrentEditingCellChange?: OnChangeFn<MRT_Cell>;\n onCurrentEditingRowChange?: OnChangeFn<MRT_Row>;\n onCurrentFilterFnsChange?: OnChangeFn<{ [key: string]: MRT_FilterFn }>;\n onCurrentGlobalFilterFnChange?: OnChangeFn<MRT_FilterFn>;\n onDetailPanelClick?: ({\n event,\n row,\n instance,\n }: {\n event: MouseEvent<HTMLTableCellElement>;\n row: MRT_Row<D>;\n instance: MRT_TableInstance<D>;\n }) => void;\n onEditRowSubmit?: ({\n row,\n instance,\n }: {\n row: MRT_Row<D>;\n instance: MRT_TableInstance<D>;\n }) => Promise<void> | void;\n onExpandChanged?: ({\n event,\n row,\n }: {\n event: MouseEvent<HTMLButtonElement>;\n row: MRT_Row<D>;\n instance: MRT_TableInstance<D>;\n }) => void;\n onGlobalFilterValueChanged?: ({\n event,\n instance,\n }: {\n event: ChangeEvent<HTMLInputElement>;\n instance: MRT_TableInstance<D>;\n }) => void;\n onGlobalFilterValueChangedDebounced?: ({\n event,\n instance,\n }: {\n event: ChangeEvent<HTMLInputElement>;\n instance: MRT_TableInstance<D>;\n }) => void;\n onDensityChange?: OnChangeFn<boolean>;\n onDensityChanged?: ({\n event,\n density,\n instance,\n }: {\n event: MouseEvent<HTMLButtonElement>;\n density: 'comfortable' | 'compact' | 'spacious';\n instance: MRT_TableInstance<D>;\n }) => void;\n onIsFullScreenChange?: OnChangeFn<boolean>;\n onIsFullScreenChanged?: ({\n event,\n isFullScreen,\n instance,\n }: {\n event: MouseEvent<HTMLButtonElement>;\n isFullScreen: boolean;\n instance: MRT_TableInstance<D>;\n }) => void;\n onRowClick?: ({\n event,\n row,\n instance,\n }: {\n event: MouseEvent<HTMLTableRowElement>;\n row: MRT_Row<D>;\n instance: MRT_TableInstance<D>;\n }) => void;\n onRowSelectAllChanged?: ({\n event,\n selectedRows,\n instance,\n }: {\n event: ChangeEvent;\n selectedRows: MRT_Row<D>[];\n instance: MRT_TableInstance<D>;\n }) => void;\n onRowSelectionChanged?: ({\n event,\n row,\n selectedRows,\n instance,\n }: {\n event: ChangeEvent;\n row: MRT_Row<D>;\n selectedRows: MRT_Row<D>[];\n instance: MRT_TableInstance<D>;\n }) => void;\n onShowFiltersChange?: OnChangeFn<boolean>;\n onShowFiltersChanged?: ({\n event,\n instance,\n showFilters,\n }: {\n event: MouseEvent<HTMLButtonElement>;\n instance: MRT_TableInstance<D>;\n showFilters: boolean;\n }) => void;\n onShowGlobalFilterChange?: OnChangeFn<boolean>;\n onShowGlobalFilterChanged?: ({\n event,\n instance,\n showGlobalFilter,\n }: {\n event: MouseEvent<HTMLButtonElement>;\n instance: MRT_TableInstance<D>;\n showGlobalFilter: boolean;\n }) => void;\n positionActionsColumn?: 'first' | 'last';\n positionGlobalFilter?: 'left' | 'right';\n positionPagination?: 'bottom' | 'top' | 'both';\n positionToolbarAlertBanner?: 'bottom' | 'top';\n renderDetailPanel?: ({\n row,\n instance,\n }: {\n row: MRT_Row<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n renderRowActionMenuItems?: ({\n closeMenu,\n row,\n instance,\n }: {\n closeMenu: () => void;\n row: MRT_Row<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode[];\n renderRowActions?: ({\n row,\n instance,\n }: {\n row: MRT_Row<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarBottomCustomActions?: ({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarTopCustomActions?: ({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarInternalActions?: ({\n instance,\n MRT_ToggleGlobalFilterButton,\n MRT_ToggleFiltersButton,\n MRT_ShowHideColumnsButton,\n MRT_ToggleDensePaddingButton,\n MRT_FullScreenToggleButton,\n }: {\n instance: MRT_TableInstance<D>;\n MRT_ToggleGlobalFilterButton: FC<\n IconButtonProps & { instance: MRT_TableInstance<D> }\n >;\n MRT_ToggleFiltersButton: FC<\n IconButtonProps & { instance: MRT_TableInstance<D> }\n >;\n MRT_ShowHideColumnsButton: FC<\n IconButtonProps & { instance: MRT_TableInstance<D> }\n >;\n MRT_ToggleDensePaddingButton: FC<\n IconButtonProps & { instance: MRT_TableInstance<D> }\n >;\n MRT_FullScreenToggleButton: FC<\n IconButtonProps & { instance: 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","instance","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","onExpandChanged","getCanExpand","event","toggleExpanded","getIsExpanded","fuzzy","columnId","filterValue","addMeta","itemRank","rankItem","getValue","threshold","rankings","MATCHES","passed","autoRemove","val","contains","id","toString","toLowerCase","trim","includes","startsWith","endsWith","equals","notEquals","greaterThan","isNaN","lessThan","between","filterValues","undefined","empty","_filterValue","notEmpty","MRT_FilterFns","commonMenuItemStyles","py","my","alignItems","MRT_FilterOptionMenu","anchorEl","header","onSelect","setAnchorEl","enabledGlobalFilterOptions","enabledColumnFilterOptions","setCurrentFilterFns","setCurrentGlobalFilterFn","currentFilterFns","currentGlobalFilterFn","column","columnDef","allowedColumnFilterOptions","filterOptions","useMemo","option","label","divider","fn","filter","filterType","filterOption","Menu","anchorOrigin","vertical","horizontal","onClose","open","MenuListProps","dense","map","index","MenuItem","key","value","prev","setFilterValue","selected","DndContext","createContext","dragDropManager","formatProdErrorMessage","code","$$observable","Symbol","observable","randomString","Math","random","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","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","getAllLeafColumnDefs","columns","lowestLevelColumns","currentCols","_currentCols","col","nextCols","flat","every","createDataColumn","table","filterFn","createDisplayColumn","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","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","getRowModel","getPaginationRowModel","getSelectedRowModel","muiSelectCheckboxProps","muiSelectAllCheckboxProps","onRowSelectionChanged","onRowSelectAllChanged","selectAllMode","checkboxProps","Checkbox","getIsAllRowsSelected","getIsSelected","indeterminate","getIsSomeRowsSelected","getIsSomeSelected","inputProps","aria-label","getToggleAllRowsSelectedHandler","getToggleAllPageRowsSelectedHandler","selectedRows","flatRows","getToggleSelectedHandler","selectedRow","memoize","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","onIsFullScreenChanged","setIsFullScreen","isFullScreen","MRT_ShowHideColumnsButton","MRT_ToggleDensePaddingButton","onDensityChanged","setDensity","nextDensity","MRT_ToggleFiltersButton","onShowFiltersChanged","showFilters","MRT_ToggleGlobalFilterButton","muiSearchTextFieldProps","onShowGlobalFilterChanged","setShowGlobalFilter","showGlobalFilter","textFieldProps","MRT_GlobalFilterTextField","setGlobalFilter","enableGlobalFilterChangeMode","onGlobalFilterValueChanged","onGlobalFilterValueChangedDebounced","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","tablePaginationProps","totalRowCount","rows","showFirstLastPageButtons","TablePagination","SelectProps","MenuProps","disablePadding","component","onPageChange","_","newPage","onRowsPerPageChange","page","rowsPerPage","rowsPerPageOptions","showFirstButton","showLastButton","mt","MRT_ToolbarAlertBanner","stackAlertBanner","muiTableToolbarAlertBannerProps","grouping","alertProps","selectMessage","_localization$selecte","_localization$selecte2","groupedByMessage","Fragment","Chip","getColumn","onDelete","timeout","Alert","icon","borderRadius","fontSize","right","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","onColumnFilterValueChanged","onColumnFilterValueChangedDebounced","_column$getFilterValu2","newFilterValues","Filter","filterId","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","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","renderHeader","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","onCellEditChanged","setCurrentEditingCell","setValue","onBlur","MRT_CopyButton","muiTableBodyCellCopyButtonProps","copied","setCopied","buttonProps","clipboard","writeText","border","fontFamily","letterSpacing","textTransform","MRT_TableBodyCell","enableHover","rowIndex","enableClickToCopy","muiTableBodyCellProps","muiTableBodyCellSkeletonProps","onCellClick","onRowClick","rowNumberMode","currentEditingCell","showSkeletons","skeletonWidth","isEditable","isEditing","_event","textField","mode","darken","Skeleton","animation","Cell","getIsPlaceholder","groupingColumnId","getIsAggregated","AggregatedCell","renderAggregatedCell","renderCell","subRows","_row$subRows","_row$subRows2","MRT_TableDetailPanel","getVisibleLeafColumns","muiTableBodyRowProps","muiTableDetailPanelProps","onDetailPanelClick","borderBottom","getTotalSize","MRT_TableBodyRow","&:hover td","getVisibleCells","MRT_SortingFns","rowA","rowB","dir","columnFiltersMeta","compareItems","sortingFns","alphanumeric","MRT_TableBody","tableContainerRef","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","renderFooter","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","assign","_initialState$current3","_c$filterSelectOption","globalFilterFn","createTable","setOptions","filterFns","getCoreRowModel","getExpandedRowModel","getFacetedRowModel","getFilteredRowModel","getGroupedRowModel","getSortedRowModel","displayColumns","_props$localization","enableExpandAll","_props$localization2","enableSelectAll","_props$localization3","_props$localization4","_props$localization5","createGroup","_column$columns","_props$state2","fill","_props$state3","_props$state4","useTableInstance","onColumnOrderChange","getSubRows","onCurrentEditingCellChange","onCurrentEditingRowChange","onCurrentFilterFnsChange","onCurrentGlobalFilterFnChange","onDensityChange","onIsFullScreenChange","onShowFiltersChange","onShowGlobalFilterChange","onColumnOrderChanged","onColumnPinningChanged","onColumnVisibilityChanged","Dialog","PaperComponent","TransitionComponent","disablePortal","fullScreen","keepMounted","transitionDuration","autoResetExpanded","columnResizeMode","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/filtersFns.ts","../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/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/sortingFns.ts","../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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ExpandAllButton: FC<Props> = ({ instance }) => {\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 } = instance;\n\n const { density } = getState();\n\n const iconButtonProps =\n muiExpandAllButtonProps instanceof Function\n ? muiExpandAllButtonProps({ instance })\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ExpandButton: FC<Props> = ({ row, instance }) => {\n const {\n getState,\n options: {\n icons: { ExpandMoreIcon },\n localization,\n muiExpandButtonProps,\n renderDetailPanel,\n },\n } = instance;\n\n const { density } = getState();\n\n const iconButtonProps =\n muiExpandButtonProps instanceof Function\n ? muiExpandButtonProps({ instance, 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 { rankItem, rankings, RankingInfo } from '@tanstack/match-sorter-utils';\nimport { MRT_Row } from '.';\n\nexport const fuzzy = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\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 = (\n row: MRT_Row,\n id: string,\n _filterValue: string | number,\n) => !row.getValue(id).toString().trim();\n\nempty.autoRemove = (val: any) => !val;\n\nexport const notEmpty = (\n row: MRT_Row,\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 between,\n contains,\n empty,\n endsWith,\n equals,\n fuzzy,\n greaterThan,\n lessThan,\n notEmpty,\n notEquals,\n startsWith,\n};\n","import React, { FC, useMemo } from 'react';\nimport { Menu, MenuItem } from '@mui/material';\nimport type {\n MRT_FilterFn,\n MRT_FILTER_OPTION,\n MRT_Header,\n MRT_TableInstance,\n} from '..';\nimport {\n between,\n contains,\n empty,\n endsWith,\n equals,\n fuzzy,\n greaterThan,\n lessThan,\n notEmpty,\n notEquals,\n startsWith,\n} from '../filtersFns';\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_FilterOptionMenu: FC<Props> = ({\n anchorEl,\n header,\n onSelect,\n setAnchorEl,\n instance,\n}) => {\n const {\n getState,\n options: {\n enabledGlobalFilterOptions,\n enabledColumnFilterOptions,\n localization,\n },\n setCurrentFilterFns,\n setCurrentGlobalFilterFn,\n } = instance;\n\n const { density, currentFilterFns, currentGlobalFilterFn } = getState();\n\n const { column } = header ?? {};\n\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 fn: fuzzy,\n },\n {\n option: 'contains',\n label: localization.filterContains,\n divider: false,\n fn: contains,\n },\n {\n option: 'startsWith',\n label: localization.filterStartsWith,\n divider: false,\n fn: startsWith,\n },\n {\n option: 'endsWith',\n label: localization.filterEndsWith,\n divider: true,\n fn: endsWith,\n },\n {\n option: 'equals',\n label: localization.filterEquals,\n divider: false,\n fn: equals,\n },\n {\n option: 'notEquals',\n label: localization.filterNotEquals,\n divider: true,\n fn: notEquals,\n },\n {\n option: 'between',\n label: localization.filterBetween,\n divider: false,\n fn: between,\n },\n {\n option: 'greaterThan',\n label: localization.filterGreaterThan,\n divider: false,\n fn: greaterThan,\n },\n {\n option: 'lessThan',\n label: localization.filterLessThan,\n divider: true,\n fn: lessThan,\n },\n {\n option: 'empty',\n label: localization.filterEmpty,\n divider: false,\n fn: empty,\n },\n {\n option: 'notEmpty',\n label: localization.filterNotEmpty,\n divider: false,\n fn: notEmpty,\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_FILTER_OPTION;\n label: string;\n divider: boolean;\n fn: Function;\n }>,\n [],\n );\n\n const handleSelectFilterType = (value: string) => {\n if (header && column) {\n setCurrentFilterFns((prev: { [key: string]: MRT_FilterFn }) => ({\n ...prev,\n [header.id]: value,\n }));\n if (['empty', 'notEmpty'].includes(value)) {\n column.setFilterValue(' ');\n } else if (value === 'between') {\n column.setFilterValue(['', '']);\n } else {\n column.setFilterValue('');\n }\n } else {\n setCurrentGlobalFilterFn(value);\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, fn }, index) => (\n <MenuItem\n divider={divider}\n key={index}\n onClick={() => handleSelectFilterType(option as string)}\n selected={option === filterOption || fn === filterOption}\n sx={commonMenuItemStyles}\n value={option as string}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ColumnPinningButtons: FC<Props> = ({ column, instance }) => {\n const {\n options: {\n icons: { PushPinIcon },\n localization,\n },\n } = instance;\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_GrabHandleButton: FC<Props> = forwardRef(\n ({ instance }, ref) => {\n const {\n options: {\n icons: { DragHandleIcon },\n localization,\n },\n } = instance;\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);\n","import { ColumnDef, ColumnOrderState, Table } from '@tanstack/react-table';\nimport {\n MaterialReactTableProps,\n MRT_Column,\n MRT_ColumnDef,\n MRT_FilterFn,\n} from '.';\nimport { MRT_FilterFns } from './filtersFns';\n\nexport const getAllLeafColumnDefs = (\n columns: MRT_ColumnDef[],\n): MRT_ColumnDef[] => {\n let lowestLevelColumns: MRT_ColumnDef[] = columns;\n let currentCols: MRT_ColumnDef[] | undefined = columns;\n while (!!currentCols?.length && currentCols.some((col) => col.columns)) {\n const nextCols: MRT_ColumnDef[] = currentCols\n .filter((col) => !!col.columns)\n .map((col) => col.columns)\n .flat() as MRT_ColumnDef[];\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 createGroup = <D extends Record<string, any> = {}>(\n table: Table<D>,\n column: MRT_ColumnDef<D>,\n currentFilterFns: { [key: string]: MRT_FilterFn },\n): ColumnDef<D> =>\n table.createGroup({\n ...column,\n columns: column?.columns?.map?.((col) =>\n col.columns\n ? createGroup<D>(table, col, currentFilterFns)\n : createDataColumn(table, col, currentFilterFns),\n ),\n } as any);\n\nexport const createDataColumn = <D extends Record<string, any> = {}>(\n table: Table<D>,\n column: MRT_ColumnDef<D>,\n currentFilterFns: { [key: string]: MRT_FilterFn },\n): ColumnDef<D> => // @ts-ignore\n table.createDataColumn(column.id, {\n filterFn:\n currentFilterFns[column.id] instanceof Function\n ? currentFilterFns[column.id]\n : // @ts-ignore\n MRT_FilterFns[currentFilterFns[column.id]],\n ...column,\n }) as any;\n\nexport const createDisplayColumn = <D extends Record<string, any> = {}>(\n table: Table<D>,\n column: Omit<MRT_ColumnDef<D>, 'header'> & { header?: string },\n): ColumnDef<D> => table.createDisplayColumn(column as ColumnDef<D>);\n\nexport const reorderColumn = (\n movingColumn: MRT_Column,\n receivingColumn: MRT_Column,\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 = (\n props: MaterialReactTableProps<any>,\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 = (\n props: MaterialReactTableProps<any>,\n) => [\n ((props.positionActionsColumn === 'last' && props.enableRowActions) ||\n (props.enableEditing && props.editingMode === 'row')) &&\n 'mrt-row-actions',\n];\n\nexport const getDefaultColumnOrderIds = (props: MaterialReactTableProps<any>) =>\n [\n ...getLeadingDisplayColumnIds(props),\n ...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map((c) => c.id),\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsMenuItems: FC<Props> = ({\n allColumns,\n column,\n isSubMenu,\n instance,\n}) => {\n const {\n getState,\n options: {\n enableColumnOrdering,\n enableHiding,\n enablePinning,\n localization,\n },\n setColumnOrder,\n } = instance;\n\n const { columnOrder } = getState();\n\n const { columnDef, columnDefType } = column;\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((col) => col.columnDefType === 'group') &&\n (columnDef.enableColumnOrdering !== false ? (\n <MRT_GrabHandleButton\n ref={dragRef as Ref<HTMLButtonElement>}\n instance={instance}\n />\n ) : (\n <Box sx={{ width: '28px' }} />\n ))}\n {enablePinning &&\n !isSubMenu &&\n (column.getCanPin() ? (\n <MRT_ColumnPinningButtons column={column} instance={instance} />\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsMenu: FC<Props> = ({\n anchorEl,\n isSubMenu,\n setAnchorEl,\n instance,\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 } = instance;\n\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.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 instance.setColumnOrder(\n getDefaultColumnOrderIds(instance.options as any),\n )\n }\n >\n {localization.resetOrder}\n </Button>\n )}\n {!isSubMenu && enablePinning && (\n <Button\n disabled={!getIsSomeColumnsPinned()}\n onClick={() => instance.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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ColumnActionMenu: FC<Props> = ({\n anchorEl,\n header,\n setAnchorEl,\n instance,\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 } = instance;\n\n const { column } = header;\n\n const { columnDef } = column;\n\n const { columnSizing, columnVisibility, density } = getState();\n\n const [filterMenuAnchorEl, setFilterMenuAnchorEl] =\n useState<null | HTMLElement>(null);\n\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 instance={instance}\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_RowActionMenu: FC<Props> = ({\n anchorEl,\n handleEdit,\n row,\n setAnchorEl,\n instance,\n}) => {\n const {\n getState,\n options: {\n icons: { EditIcon },\n enableEditing,\n localization,\n renderRowActionMenuItems,\n },\n } = instance;\n\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 instance,\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_EditActionButtons: FC<Props> = ({ row, instance }) => {\n const {\n getState,\n options: {\n icons: { CancelIcon, SaveIcon },\n localization,\n onEditRowSubmit,\n },\n setCurrentEditingRow,\n } = instance;\n\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, instance });\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ToggleRowActionMenuButton: FC<Props> = ({ row, instance }) => {\n const {\n getState,\n options: {\n enableEditing,\n icons: { EditIcon, MoreHorizIcon },\n localization,\n renderRowActionMenuItems,\n renderRowActions,\n },\n setCurrentEditingRow,\n } = instance;\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, instance })}</>\n ) : row.id === currentEditingRow?.id ? (\n <MRT_EditActionButtons row={row} instance={instance} />\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_SelectCheckbox: FC<Props> = ({ row, selectAll, instance }) => {\n const {\n getState,\n options: {\n localization,\n muiSelectCheckboxProps,\n muiSelectAllCheckboxProps,\n selectAllMode,\n },\n } = instance;\n\n const { density } = getState();\n\n const handleSelectChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (selectAll) {\n if (selectAllMode === 'all') {\n instance.getToggleAllRowsSelectedHandler()(event as any);\n } else if (selectAllMode === 'page') {\n instance.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({ instance })\n : muiSelectAllCheckboxProps\n : muiSelectCheckboxProps instanceof Function\n ? muiSelectCheckboxProps({ row: row as MRT_Row, instance })\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 ? instance.getIsAllRowsSelected() : row?.getIsSelected()\n }\n indeterminate={\n selectAll\n ? instance.getIsSomeRowsSelected()\n : 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 instance: MRT_TableInstance;\n}\n\nexport const MRT_FullScreenToggleButton: FC<Props> = ({\n instance,\n ...rest\n}) => {\n const {\n getState,\n options: {\n icons: { FullscreenExitIcon, FullscreenIcon },\n localization,\n },\n setIsFullScreen,\n } = instance;\n\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ShowHideColumnsButton: FC<Props> = ({ instance, ...rest }) => {\n const {\n options: {\n icons: { ViewColumnIcon },\n localization,\n },\n } = instance;\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ToggleDensePaddingButton: FC<Props> = ({\n instance,\n ...rest\n}) => {\n const {\n getState,\n options: {\n icons: { DensityLargeIcon, DensityMediumIcon, DensitySmallIcon },\n localization,\n },\n setDensity,\n } = instance;\n\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ToggleFiltersButton: FC<Props> = ({ instance, ...rest }) => {\n const {\n getState,\n options: {\n icons: { FilterListIcon, FilterListOffIcon },\n localization,\n },\n setShowFilters,\n } = instance;\n\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ToggleGlobalFilterButton: FC<Props> = ({\n instance,\n ...rest\n}) => {\n const {\n getState,\n options: {\n icons: { SearchIcon, SearchOffIcon },\n tableId,\n localization,\n muiSearchTextFieldProps,\n },\n setShowGlobalFilter,\n } = instance;\n\n const { showGlobalFilter } = getState();\n\n const textFieldProps =\n muiSearchTextFieldProps instanceof Function\n ? muiSearchTextFieldProps({ instance })\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_GlobalFilterTextField: FC<Props> = ({ instance }) => {\n const {\n getState,\n setGlobalFilter,\n options: {\n enableGlobalFilterChangeMode,\n icons: { SearchIcon, CloseIcon },\n localization,\n muiSearchTextFieldProps,\n tableId,\n },\n } = instance;\n\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({ instance })\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarInternalButtons: FC<Props> = ({ instance }) => {\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 } = instance;\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 instance,\n }) ?? (\n <>\n {enableGlobalFilter && positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField instance={instance} />\n )}\n {enableFilters && enableGlobalFilter && (\n <MRT_ToggleGlobalFilterButton instance={instance} />\n )}\n {enableFilters && enableColumnFilters && (\n <MRT_ToggleFiltersButton instance={instance} />\n )}\n {(enableHiding || enableColumnOrdering || enablePinning) && (\n <MRT_ShowHideColumnsButton instance={instance} />\n )}\n {enableDensityToggle && (\n <MRT_ToggleDensePaddingButton instance={instance} />\n )}\n {enableFullScreenToggle && (\n <MRT_FullScreenToggleButton instance={instance} />\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 instance: MRT_TableInstance;\n position: 'top' | 'bottom';\n}\n\nexport const MRT_TablePagination: FC<Props> = ({ instance, position }) => {\n const {\n getPrePaginationRowModel,\n getState,\n setPageIndex,\n setPageSize,\n options: {\n muiTablePaginationProps,\n enableToolbarInternalActions,\n rowCount,\n },\n } = instance;\n\n const {\n pagination: { pageSize = 10, pageIndex = 0 },\n showGlobalFilter,\n } = getState();\n\n const tablePaginationProps =\n muiTablePaginationProps instanceof Function\n ? muiTablePaginationProps({ instance })\n : muiTablePaginationProps;\n\n const handleChangeRowsPerPage = (event: ChangeEvent<HTMLInputElement>) => {\n setPageSize(+event.target.value);\n };\n\n const totalRowCount = rowCount ?? getPrePaginationRowModel().rows.length;\n\n const showFirstLastPageButtons = totalRowCount / pageSize > 2;\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarAlertBanner: FC<Props> = ({\n stackAlertBanner,\n instance,\n}) => {\n const {\n getPrePaginationRowModel,\n getSelectedRowModel,\n getState,\n options: { localization, muiTableToolbarAlertBannerProps },\n } = instance;\n\n const { grouping, showAlertBanner } = getState();\n\n const alertProps =\n muiTableToolbarAlertBannerProps instanceof Function\n ? muiTableToolbarAlertBannerProps({ instance })\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={instance.getColumn(columnId).columnDef.header}\n onDelete={() => instance.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 instance: MRT_TableInstance;\n}\n\nexport const MRT_LinearProgressBar: FC<Props> = ({ alignTo, instance }) => {\n const {\n options: { muiLinearProgressProps },\n getState,\n } = instance;\n\n const { isLoading, showProgressBars } = getState();\n\n const linearProgressProps =\n muiLinearProgressProps instanceof Function\n ? muiLinearProgressProps({ instance })\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarTop: FC<Props> = ({ instance }) => {\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 } = instance;\n\n const { isFullScreen, showGlobalFilter } = getState();\n\n const isMobile = useMediaQuery('(max-width:720px)');\n\n const toolbarProps =\n muiTableToolbarTopProps instanceof Function\n ? muiTableToolbarTopProps({ instance })\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 instance={instance}\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 instance={instance} />\n )}\n\n {renderToolbarTopCustomActions?.({ instance }) ?? <span />}\n {enableToolbarInternalActions ? (\n <MRT_ToolbarInternalButtons instance={instance} />\n ) : (\n enableGlobalFilter &&\n positionGlobalFilter === 'right' && (\n <MRT_GlobalFilterTextField instance={instance} />\n )\n )}\n </Box>\n {enablePagination &&\n ['top', 'both'].includes(positionPagination ?? '') && (\n <MRT_TablePagination instance={instance} position=\"top\" />\n )}\n <MRT_LinearProgressBar alignTo=\"bottom\" instance={instance} />\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_ToolbarBottom: FC<Props> = ({ instance }) => {\n const {\n getState,\n options: {\n enablePagination,\n muiTableToolbarBottomProps,\n positionPagination,\n positionToolbarAlertBanner,\n renderToolbarBottomCustomActions,\n tableId,\n },\n } = instance;\n\n const { isFullScreen } = getState();\n\n const isMobile = useMediaQuery('(max-width:720px)');\n\n const toolbarProps =\n muiTableToolbarBottomProps instanceof Function\n ? muiTableToolbarBottomProps({ instance })\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\" instance={instance} />\n {positionToolbarAlertBanner === 'bottom' && (\n <MRT_ToolbarAlertBanner instance={instance} />\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({ instance })}\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 instance={instance} 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 instance: MRT_TableInstance;\n}\n\nexport const MRT_FilterTextField: FC<Props> = ({\n header,\n inputIndex,\n instance,\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 } = instance;\n\n const { column } = header;\n\n const { columnDef } = column;\n\n const { currentFilterFns } = getState();\n\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\n const mTableHeadCellFilterTextFieldProps =\n muiTableHeadCellFilterTextFieldProps instanceof Function\n ? muiTableHeadCellFilterTextFieldProps({ column, instance })\n : muiTableHeadCellFilterTextFieldProps;\n\n const mcTableHeadCellFilterTextFieldProps =\n columnDef.muiTableHeadCellFilterTextFieldProps instanceof Function\n ? columnDef.muiTableHeadCellFilterTextFieldProps({\n column,\n instance,\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, instance })}</>;\n }\n\n const filterId = `mrt-${tableId}-${header.id}-filter-text-field${\n inputIndex ?? ''\n }`;\n const filterFn = currentFilterFns?.[header.id];\n const isSelectFilter = !!columnDef.filterSelectOptions;\n const filterChipLabel =\n !(filterFn instanceof Function) && ['empty', 'notEmpty'].includes(filterFn)\n ? //@ts-ignore\n localization[\n `filter${filterFn.charAt(0).toUpperCase() + filterFn.slice(1)}`\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 {filterFn instanceof Function\n ? localization.filterMode.replace(\n '{filterType}',\n // @ts-ignore\n localization[\n `filter${\n filterFn.name.charAt(0).toUpperCase() +\n filterFn.name.slice(1)\n }`\n ] ?? '',\n ) ?? ''\n : localization.filterMode.replace(\n '{filterType}',\n // @ts-ignore\n localization[\n `filter${\n filterFn.charAt(0).toUpperCase() + filterFn.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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_FilterRangeFields: FC<Props> = ({ header, instance }) => {\n return (\n <Box sx={{ display: 'grid', gridTemplateColumns: '6fr 6fr', gap: '1rem' }}>\n <MRT_FilterTextField header={header} inputIndex={0} instance={instance} />\n <MRT_FilterTextField header={header} inputIndex={1} instance={instance} />\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellFilterContainer: FC<Props> = ({\n header,\n instance,\n}) => {\n const { getState } = instance;\n\n const { currentFilterFns, showFilters } = getState();\n\n const { column } = header;\n\n return (\n <Collapse in={showFilters} mountOnEnter unmountOnExit>\n {currentFilterFns[column.id] === 'between' ? (\n <MRT_FilterRangeFields header={header} instance={instance} />\n ) : (\n <MRT_FilterTextField header={header} instance={instance} />\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellFilterLabel: FC<Props> = ({\n header,\n instance,\n}) => {\n const {\n getState,\n options: {\n icons: { FilterAltIcon },\n localization,\n },\n } = instance;\n\n const { currentFilterFns } = getState();\n\n const { column } = header;\n\n const { columnDef } = column;\n\n const filterFn = currentFilterFns?.[header.id];\n\n const filterTooltip = localization.filteringByColumn\n .replace('{column}', String(columnDef.header))\n .replace(\n '{filterType}',\n filterFn instanceof Function\n ? ''\n : // @ts-ignore\n localization[\n `filter${filterFn.charAt(0).toUpperCase() + filterFn.slice(1)}`\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() && filterFn !== 'between') ||\n (filterFn === '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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellResizeHandle: FC<Props> = ({\n header,\n instance,\n}) => {\n const { getState } = instance;\n\n const { density, showFilters } = getState();\n\n const { column } = header;\n\n const { columnDefType } = column;\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(${getState().columnSizingInfo.deltaOffset}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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellSortLabel: FC<Props> = ({ header, instance }) => {\n const {\n options: { localization },\n } = instance;\n\n const { column } = header;\n\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadCellColumnActionsButton: FC<Props> = ({\n header,\n instance,\n}) => {\n const {\n options: {\n icons: { MoreVertIcon },\n localization,\n muiTableHeadCellColumnActionsButtonProps,\n },\n } = instance;\n\n const { column } = header;\n\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, instance })\n : muiTableHeadCellColumnActionsButtonProps;\n\n const mcTableHeadCellColumnActionsButtonProps =\n columnDef.muiTableHeadCellColumnActionsButtonProps instanceof Function\n ? columnDef.muiTableHeadCellColumnActionsButtonProps({\n column,\n instance,\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 instance={instance}\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 instance: MRT_TableInstance;\n isDragging?: boolean;\n previewRef?: Ref<HTMLTableCellElement>;\n}\n\nexport const MRT_TableHeadCell: FC<Props> = ({\n dragRef,\n dropRef,\n header,\n instance,\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 } = instance;\n\n const { density, showFilters } = getState();\n\n const { column } = header;\n\n const { columnDef, columnDefType } = column;\n\n const mTableHeadCellProps =\n muiTableHeadCellProps instanceof Function\n ? muiTableHeadCellProps({ column, instance })\n : muiTableHeadCellProps;\n\n const mcTableHeadCellProps =\n columnDef.muiTableHeadCellProps instanceof Function\n ? columnDef.muiTableHeadCellProps({ column, instance })\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 instance,\n })\n : columnDef?.Header) ??\n header.renderHeader() ??\n columnDef.header) as ReactNode;\n\n const getIsLastLeftPinnedColumn = () => {\n return (\n column.getIsPinned() === 'left' &&\n instance.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 (instance.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) *\n 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 ? '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} instance={instance} />\n )}\n {columnDefType === 'data' && column.getCanFilter() && (\n <MRT_TableHeadCellFilterLabel\n header={header}\n instance={instance}\n />\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 instance={instance}\n />\n )}\n {(enableColumnActions || columnDef.enableColumnActions) &&\n columnDef.enableColumnActions !== false &&\n columnDefType !== 'group' && (\n <MRT_TableHeadCellColumnActionsButton\n header={header}\n instance={instance}\n />\n )}\n </Box>\n {column.getCanResize() && (\n <MRT_TableHeadCellResizeHandle\n header={header}\n instance={instance}\n />\n )}\n </Box>\n )}\n {columnDefType === 'data' && column.getCanFilter() && (\n <MRT_TableHeadCellFilterContainer header={header} instance={instance} />\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_DraggableTableHeadCell: FC<Props> = ({ header, instance }) => {\n const { getState, setColumnOrder } = instance;\n\n const { columnOrder } = getState();\n\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHeadRow: FC<Props> = ({ headerGroup, instance }) => {\n const {\n options: { enableColumnOrdering, enableGrouping, muiTableHeadRowProps },\n } = instance;\n\n const tableRowProps =\n muiTableHeadRowProps instanceof Function\n ? muiTableHeadRowProps({ headerGroup, instance })\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 instance={instance}\n />\n ) : (\n <MRT_TableHeadCell\n header={header}\n key={header.id || index}\n instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableHead: FC<Props> = ({ instance }) => {\n const {\n getHeaderGroups,\n options: { muiTableHeadProps },\n } = instance;\n\n const tableHeadProps =\n muiTableHeadProps instanceof Function\n ? muiTableHeadProps({ instance })\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_EditCellTextField: FC<Props> = ({ cell, instance }) => {\n const {\n getState,\n options: {\n tableId,\n enableEditing,\n muiTableBodyCellEditTextFieldProps,\n onCellEditBlur,\n onCellEditChange,\n },\n setCurrentEditingCell,\n setCurrentEditingRow,\n } = instance;\n\n const [value, setValue] = useState(cell.getValue());\n\n const { column, row } = cell;\n\n const { columnDef } = column;\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n setValue(event.target.value);\n columnDef.onCellEditChange?.({ event, cell, instance });\n onCellEditChange?.({ event, cell, instance });\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, instance });\n onCellEditBlur?.({ event, cell, instance });\n };\n\n const mTableBodyCellEditTextFieldProps =\n muiTableBodyCellEditTextFieldProps instanceof Function\n ? muiTableBodyCellEditTextFieldProps({ cell, instance })\n : muiTableBodyCellEditTextFieldProps;\n\n const mcTableBodyCellEditTextFieldProps =\n columnDef.muiTableBodyCellEditTextFieldProps instanceof Function\n ? columnDef.muiTableBodyCellEditTextFieldProps({\n cell,\n instance,\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, instance })}</>;\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_CopyButton: FC<Props> = ({ cell, children, instance }) => {\n const {\n options: { localization, muiTableBodyCellCopyButtonProps },\n } = instance;\n\n const { column } = cell;\n\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, instance })\n : muiTableBodyCellCopyButtonProps;\n\n const mcTableBodyCellCopyButtonProps =\n columnDef.muiTableBodyCellCopyButtonProps instanceof Function\n ? columnDef.muiTableBodyCellCopyButtonProps({\n cell,\n instance,\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableBodyCell: FC<Props> = ({\n cell,\n enableHover,\n rowIndex,\n instance,\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 } = instance;\n\n const {\n columnOrder,\n currentEditingCell,\n currentEditingRow,\n density,\n isLoading,\n showSkeletons,\n } = getState();\n\n const { column, row } = cell;\n\n const { columnDef, columnDefType } = column;\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, instance })\n : muiTableBodyCellProps;\n\n const mcTableCellBodyProps =\n columnDef.muiTableBodyCellProps instanceof Function\n ? columnDef.muiTableBodyCellProps({ cell, instance })\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 [columnDefType, column.getSize()],\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 instance.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 (instance.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) *\n 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 {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, instance })\n ) : cell.getIsPlaceholder() ||\n (row.getIsGrouped() &&\n column.id !==\n row.groupingColumnId) ? null : cell.getIsAggregated() ? (\n columnDef.AggregatedCell?.({ cell, instance }) ??\n cell.renderAggregatedCell()\n ) : isEditing ? (\n <MRT_EditCellTextField cell={cell} instance={instance} />\n ) : (enableClickToCopy || columnDef.enableClickToCopy) &&\n columnDef.enableClickToCopy !== false ? (\n <>\n <MRT_CopyButton cell={cell} instance={instance}>\n <>{columnDef?.Cell?.({ cell, instance }) ?? cell.renderCell()}</>\n </MRT_CopyButton>\n {row.getIsGrouped() && <> ({row.subRows?.length})</>}\n </>\n ) : (\n <>\n {columnDef?.Cell?.({ cell, instance }) ?? cell.renderCell()}\n {row.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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableDetailPanel: FC<Props> = ({ row, instance }) => {\n const {\n getVisibleLeafColumns,\n options: {\n muiTableBodyRowProps,\n muiTableDetailPanelProps,\n renderDetailPanel,\n },\n } = instance;\n\n const tableRowProps =\n muiTableBodyRowProps instanceof Function\n ? muiTableBodyRowProps({ row, instance })\n : muiTableBodyRowProps;\n\n const tableCellProps =\n muiTableDetailPanelProps instanceof Function\n ? muiTableDetailPanelProps({ row, instance })\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: `${instance.getTotalSize()}px`,\n ...tableCellProps?.sx,\n }}\n >\n {renderDetailPanel && (\n <Collapse in={row.getIsExpanded()}>\n {renderDetailPanel({ row, instance })}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableBodyRow: FC<Props> = ({ row, rowIndex, instance }) => {\n const {\n getIsSomeColumnsPinned,\n options: { muiTableBodyRowProps, renderDetailPanel },\n } = instance;\n\n const tableRowProps =\n muiTableBodyRowProps instanceof Function\n ? muiTableBodyRowProps({ row, instance })\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 instance={instance}\n />\n ))}\n </TableRow>\n {renderDetailPanel && !row.getIsGrouped() && (\n <MRT_TableDetailPanel row={row} instance={instance} />\n )}\n </>\n );\n};\n","import { compareItems, RankingInfo } from '@tanstack/match-sorter-utils';\nimport { Row, sortingFns } from '@tanstack/react-table';\nimport type { MRT_Row } from '.';\n\nconst fuzzy = (rowA: MRT_Row, rowB: MRT_Row, columnId: string) => {\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 fuzzy,\n};\n\nexport const rankGlobalFuzzy = (rowA: MRT_Row, rowB: MRT_Row) =>\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 React, { FC, RefObject, useMemo } from 'react';\nimport { useVirtual } from 'react-virtual';\nimport { TableBody } from '@mui/material';\nimport { MRT_TableBodyRow } from './MRT_TableBodyRow';\nimport type { MRT_Row, MRT_TableInstance } from '..';\nimport { rankGlobalFuzzy } from '../sortingFns';\n\ninterface Props {\n instance: MRT_TableInstance;\n tableContainerRef: RefObject<HTMLDivElement>;\n}\n\nexport const MRT_TableBody: FC<Props> = ({ instance, tableContainerRef }) => {\n const {\n getRowModel,\n getPrePaginationRowModel,\n getState,\n options: {\n enableGlobalFilterRankedResults,\n enablePagination,\n enableRowVirtualization,\n muiTableBodyProps,\n virtualizerProps,\n },\n } = instance;\n\n const { density, globalFilter, pagination, sorting } = getState();\n\n const tableBodyProps =\n muiTableBodyProps instanceof Function\n ? muiTableBodyProps({ instance })\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 overscan: density === 'compact' ? 20 : 10,\n size: rows.length,\n parentRef: tableContainerRef,\n ...virtualizerProps,\n })\n : ({} as any);\n\n const { virtualItems: virtualRows } = rowVirtualizer;\n const paddingTop = virtualRows?.length > 0 ? virtualRows[0].start : 0;\n const paddingBottom =\n virtualRows?.length > 0\n ? rowVirtualizer.totalSize - virtualRows[virtualRows.length - 1].end\n : 0;\n\n return (\n <TableBody {...tableBodyProps}>\n {enableRowVirtualization && paddingTop > 0 && (\n <tr>\n <td style={{ height: `${paddingTop}px` }} />\n </tr>\n )}\n {/* @ts-ignore */}\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableFooterCell: FC<Props> = ({ footer, instance }) => {\n const {\n getState,\n options: { muiTableFooterCellProps, enableColumnResizing },\n } = instance;\n\n const { density } = getState();\n\n const { column } = footer;\n\n const { columnDef, columnDefType } = column;\n\n const mTableFooterCellProps =\n muiTableFooterCellProps instanceof Function\n ? muiTableFooterCellProps({ column, instance })\n : muiTableFooterCellProps;\n\n const mcTableFooterCellProps =\n columnDef.muiTableFooterCellProps instanceof Function\n ? columnDef.muiTableFooterCellProps({ column, instance })\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 instance,\n })\n : columnDef.Footer) ??\n columnDef.footer ??\n footer.renderFooter() ??\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableFooterRow: FC<Props> = ({ footerGroup, instance }) => {\n const {\n options: { muiTableFooterRowProps },\n } = instance;\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, instance })\n : muiTableFooterRowProps;\n\n return (\n <TableRow {...tableRowProps}>\n {footerGroup.headers.map((footer: MRT_Header) => (\n <MRT_TableFooterCell\n footer={footer}\n key={footer.id}\n instance={instance}\n />\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableFooter: FC<Props> = ({ instance }) => {\n const {\n getFooterGroups,\n\n options: { muiTableFooterProps },\n } = instance;\n\n const tableFooterProps =\n muiTableFooterProps instanceof Function\n ? muiTableFooterProps({ instance })\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 instance={instance}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_Table: FC<Props> = ({ tableContainerRef, instance }) => {\n const {\n getState,\n options: {\n enableColumnResizing,\n enableRowVirtualization,\n enableStickyHeader,\n enableTableFooter,\n enableTableHead,\n muiTableProps,\n },\n } = instance;\n\n const { isFullScreen } = getState();\n\n const tableProps =\n muiTableProps instanceof Function\n ? muiTableProps({ instance })\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 instance={instance} />}\n <MRT_TableBody\n tableContainerRef={tableContainerRef}\n instance={instance}\n />\n {enableTableFooter && <MRT_TableFooter instance={instance} />}\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TableContainer: FC<Props> = ({ instance }) => {\n const {\n getState,\n options: {\n enableStickyHeader,\n enableRowVirtualization,\n muiTableContainerProps,\n tableId,\n },\n } = instance;\n\n const { isFullScreen } = getState();\n\n const [totalToolbarHeight, setTotalToolbarHeight] = useState(0);\n\n const tableContainerProps =\n muiTableContainerProps instanceof Function\n ? muiTableContainerProps({ instance })\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} instance={instance} />\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 instance: MRT_TableInstance;\n}\n\nexport const MRT_TablePaper: FC<Props> = ({ instance }) => {\n const {\n getState,\n options: { enableToolbarBottom, enableToolbarTop, muiTablePaperProps },\n } = instance;\n\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({ instance })\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 instance={instance} />}\n <MRT_TableContainer instance={instance} />\n {enableToolbarBottom && <MRT_ToolbarBottom instance={instance} />}\n </Paper>\n </DndProvider>\n );\n};\n","import React, { useEffect, useMemo, useState } from 'react';\nimport {\n FilterFn,\n ReactTableGenerics,\n Table,\n TableState,\n createTable,\n filterFns,\n getCoreRowModel,\n getExpandedRowModel,\n getFacetedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useTableInstance,\n sortingFns,\n} from '@tanstack/react-table';\nimport {\n MRT_Cell,\n MRT_ColumnDef,\n MRT_FilterFn,\n MRT_FILTER_OPTION,\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 createDataColumn,\n createDisplayColumn,\n createGroup,\n getAllLeafColumnDefs,\n getDefaultColumnOrderIds,\n} from '../utils';\nimport { MRT_FilterFns } from '../filtersFns';\nimport { MRT_SortingFns } from '../sortingFns';\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_FilterFn;\n }>(() =>\n Object.assign(\n {},\n ...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map((c) => ({\n [c.id as string]:\n c.filterFn ??\n initialState?.currentFilterFns?.[c.id] ??\n (!!c.filterSelectOptions?.length ? 'equals' : 'fuzzy'),\n })),\n ),\n );\n\n const [currentGlobalFilterFn, setCurrentGlobalFilterFn] = useState<\n MRT_FILTER_OPTION | FilterFn<ReactTableGenerics> | string | number | symbol\n >(props.globalFilterFn ?? 'fuzzy');\n\n const table = useMemo(\n () =>\n // @ts-ignore\n createTable().setOptions({\n filterFns: { ...filterFns, ...MRT_FilterFns, ...props.filterFns },\n getCoreRowModel: getCoreRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getGroupedRowModel: getGroupedRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n sortingFns: { ...sortingFns, ...MRT_SortingFns, ...props.sortingFns },\n }) as Table<D>,\n [],\n );\n\n const displayColumns = useMemo(() => {\n return [\n columnOrder.includes('mrt-row-actions') &&\n createDisplayColumn(table, {\n Cell: ({ cell }) => (\n <MRT_ToggleRowActionMenuButton\n row={cell.row as any}\n instance={instance}\n />\n ),\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 createDisplayColumn(table, {\n Cell: ({ cell }) => (\n <MRT_ExpandButton row={cell.row as any} instance={instance} />\n ),\n Header: () =>\n props.enableExpandAll ? (\n <MRT_ExpandAllButton instance={instance} />\n ) : null,\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 createDisplayColumn(table, {\n Cell: ({ cell }) => (\n <MRT_SelectCheckbox row={cell.row as any} instance={instance} />\n ),\n Header: () =>\n props.enableSelectAll ? (\n <MRT_SelectCheckbox selectAll instance={instance} />\n ) : null,\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 createDisplayColumn(table, {\n Cell: ({ cell }) => cell.row.index + 1,\n Header: () => props.localization?.rowNumber,\n header: props.localization?.rowNumbers,\n id: 'mrt-row-numbers',\n muiTableBodyCellProps: props.muiTableBodyCellProps,\n muiTableHeadCellProps: props.muiTableHeadCellProps,\n size: 60,\n }),\n ].filter(Boolean) as MRT_ColumnDef<D>[];\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 table,\n ]);\n\n const columns = useMemo(\n () => [\n ...displayColumns,\n ...props.columns.map((column) =>\n column.columns\n ? createGroup(table, column as any, currentFilterFns)\n : createDataColumn(table, column as any, currentFilterFns),\n ),\n ],\n [table, props.columns, currentFilterFns],\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 (c) => ({\n [c.id]: null,\n }),\n ),\n ),\n )\n : props.data,\n [props.data, props.state?.isLoading, props.state?.showSkeletons],\n );\n\n //@ts-ignore\n const instance = {\n //@ts-ignore\n ...useTableInstance(table, {\n onColumnOrderChange: setColumnOrder,\n ...props,\n //@ts-ignore\n columns,\n data,\n getSubRows: (row) => (row as MRT_Row)?.subRows,\n //@ts-ignore\n globalFilterFn: currentGlobalFilterFn,\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 instance={instance} />\n </Dialog>\n {!isFullScreen && <MRT_TablePaper instance={instance} />}\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 FilterFnOption,\n Header,\n HeaderGroup,\n OnChangeFn,\n Overwrite,\n ReactTableGenerics,\n Row,\n SortingFn,\n SortingFnOption,\n TableGenerics,\n TableInstance,\n TableState,\n UseTableInstanceOptions,\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';\n\nexport type MRT_TableOptions<D extends Record<string, any> = {}> = Partial<\n Omit<\n UseTableInstanceOptions<ReactTableGenerics>,\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 TableInstance<\n Overwrite<\n Partial<TableGenerics>,\n {\n Row: D;\n }\n >\n >,\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_FilterFn;\n }>\n >;\n setCurrentGlobalFilterFn: Dispatch<SetStateAction<MRT_FilterFn>>;\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, string | Function>;\n currentGlobalFilterFn: Record<string, string | Function>;\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 | 'aggregatedCell'\n | 'cell'\n | 'columns'\n | 'filterFn'\n | 'footer'\n | 'header'\n | 'sortingFn'\n> & {\n AggregatedCell?: ({\n cell,\n instance,\n }: {\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n Cell?: ({\n cell,\n instance,\n }: {\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n Edit?: ({\n cell,\n instance,\n }: {\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n Filter?: ({\n header,\n instance,\n }: {\n header: MRT_Header<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n Footer?:\n | ReactNode\n | (({\n footer,\n instance,\n }: {\n footer: MRT_Header<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode);\n Header?:\n | ReactNode\n | (({\n header,\n instance,\n }: {\n header: MRT_Header<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode);\n accessorFn?: (row: D) => any;\n columns?: MRT_ColumnDef<D>[];\n enableClickToCopy?: boolean;\n enableColumnActions?: boolean;\n enableColumnFilterChangeMode?: boolean;\n enableColumnOrdering?: boolean;\n enableEditing?: boolean;\n enabledColumnFilterOptions?: (MRT_FILTER_OPTION | string)[] | null;\n filterFn?: MRT_FilterFn;\n filterSelectOptions?: (string | { text: string; value: string })[];\n footer?: string;\n header: string;\n id: keyof D | string;\n muiTableBodyCellCopyButtonProps?:\n | ButtonProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => ButtonProps);\n muiTableBodyCellEditTextFieldProps?:\n | TextFieldProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TextFieldProps);\n muiTableBodyCellProps?:\n | TableCellProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TableCellProps);\n muiTableFooterCellProps?:\n | TableCellProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableHeadCellColumnActionsButtonProps?:\n | IconButtonProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => IconButtonProps);\n muiTableHeadCellFilterTextFieldProps?:\n | TextFieldProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TextFieldProps);\n muiTableHeadCellProps?:\n | TableCellProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n onCellEditBlur?: ({\n cell,\n event,\n instance,\n }: {\n event: FocusEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => void;\n onCellEditChange?: ({\n cell,\n event,\n instance,\n }: {\n event: ChangeEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => void;\n sortingFn?: MRT_SortingFn;\n};\n\nexport type MRT_Column<D extends Record<string, any> = {}> = Omit<\n Column<D>,\n 'header' | 'footer' | 'columns' | 'columnDef'\n> & {\n columns?: MRT_Column<D>[];\n columnDef: MRT_ColumnDef<D>;\n header: string;\n footer: 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 = SortingFnOption<TableGenerics> | 'fuzzy';\n\nexport type MRT_SortingFn = SortingFn<TableGenerics> | MRT_SortingOption;\n\nexport type MRT_FILTER_OPTION =\n | 'between'\n | 'contains'\n | 'empty'\n | 'endsWith'\n | 'equals'\n | 'fuzzy'\n | 'greaterThan'\n | 'greaterThanOrEqual'\n | 'lessThan'\n | 'lessThanOrEqual'\n | 'notEmpty'\n | 'notEquals'\n | 'startsWith'\n | FilterFnOption<TableGenerics>;\n\nexport type MRT_FilterFn = FilterFn<TableGenerics> | MRT_FILTER_OPTION;\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_FILTER_OPTION | string)[] | null;\n enabledGlobalFilterOptions?: (MRT_FILTER_OPTION | string)[] | null;\n icons?: Partial<MRT_Icons>;\n localization?: Partial<MRT_Localization>;\n muiExpandAllButtonProps?:\n | IconButtonProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => IconButtonProps);\n muiExpandButtonProps?:\n | IconButtonProps\n | (({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => IconButtonProps);\n muiLinearProgressProps?:\n | LinearProgressProps\n | (({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n }) => LinearProgressProps);\n muiSearchTextFieldProps?:\n | TextFieldProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => TextFieldProps);\n muiSelectAllCheckboxProps?:\n | CheckboxProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => CheckboxProps);\n muiSelectCheckboxProps?:\n | CheckboxProps\n | (({\n instance,\n row,\n }: {\n instance: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => CheckboxProps);\n muiTableBodyCellCopyButtonProps?:\n | ButtonProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => ButtonProps);\n muiTableBodyCellEditTextFieldProps?:\n | TextFieldProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TextFieldProps);\n muiTableBodyCellProps?:\n | TableCellProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => TableCellProps);\n muiTableBodyCellSkeletonProps?:\n | SkeletonProps\n | (({\n instance,\n cell,\n }: {\n instance: MRT_TableInstance<D>;\n cell: MRT_Cell<D>;\n }) => SkeletonProps);\n muiTableBodyProps?:\n | TableBodyProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => TableBodyProps);\n muiTableBodyRowProps?:\n | TableRowProps\n | (({\n instance,\n row,\n }: {\n instance: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => TableRowProps);\n muiTableContainerProps?:\n | TableContainerProps\n | (({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n }) => TableContainerProps);\n muiTableDetailPanelProps?:\n | TableCellProps\n | (({\n instance,\n row,\n }: {\n instance: MRT_TableInstance<D>;\n row: MRT_Row<D>;\n }) => TableCellProps);\n muiTableFooterCellProps?:\n | TableCellProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableFooterProps?:\n | TableFooterProps\n | (({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n }) => TableFooterProps);\n muiTableFooterRowProps?:\n | TableRowProps\n | (({\n instance,\n footerGroup,\n }: {\n instance: MRT_TableInstance<D>;\n footerGroup: MRT_HeaderGroup<D>;\n }) => TableRowProps);\n muiTableHeadCellColumnActionsButtonProps?:\n | IconButtonProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => IconButtonProps);\n muiTableHeadCellFilterTextFieldProps?:\n | TextFieldProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TextFieldProps);\n muiTableHeadCellProps?:\n | TableCellProps\n | (({\n instance,\n column,\n }: {\n instance: MRT_TableInstance<D>;\n column: MRT_Column<D>;\n }) => TableCellProps);\n muiTableHeadProps?:\n | TableHeadProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => TableHeadProps);\n muiTableHeadRowProps?:\n | TableRowProps\n | (({\n instance,\n headerGroup,\n }: {\n instance: MRT_TableInstance<D>;\n headerGroup: MRT_HeaderGroup<D>;\n }) => TableRowProps);\n muiTablePaginationProps?:\n | Partial<TablePaginationProps>\n | (({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n }) => Partial<TablePaginationProps>);\n muiTablePaperProps?:\n | PaperProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => PaperProps);\n muiTableProps?:\n | TableProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => TableProps);\n muiTableToolbarAlertBannerProps?:\n | AlertProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => AlertProps);\n muiTableToolbarBottomProps?:\n | ToolbarProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => ToolbarProps);\n muiTableToolbarTopProps?:\n | ToolbarProps\n | (({ instance }: { instance: MRT_TableInstance<D> }) => ToolbarProps);\n onCellEditBlur?: ({\n cell,\n event,\n instance,\n }: {\n event: FocusEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => void;\n onCellEditChange?: ({\n cell,\n event,\n instance,\n }: {\n event: ChangeEvent<HTMLInputElement>;\n cell: MRT_Cell<D>;\n instance: MRT_TableInstance<D>;\n }) => void;\n onCurrentEditingCellChange?: OnChangeFn<MRT_Cell>;\n onCurrentEditingRowChange?: OnChangeFn<MRT_Row>;\n onCurrentFilterFnsChange?: OnChangeFn<{ [key: string]: MRT_FilterFn }>;\n onCurrentGlobalFilterFnChange?: OnChangeFn<MRT_FilterFn>;\n onEditRowSubmit?: ({\n row,\n instance,\n }: {\n row: MRT_Row<D>;\n instance: 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 instance,\n }: {\n row: MRT_Row<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n renderRowActionMenuItems?: ({\n closeMenu,\n row,\n instance,\n }: {\n closeMenu: () => void;\n row: MRT_Row<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode[];\n renderRowActions?: ({\n row,\n instance,\n }: {\n row: MRT_Row<D>;\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarBottomCustomActions?: ({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarTopCustomActions?: ({\n instance,\n }: {\n instance: MRT_TableInstance<D>;\n }) => ReactNode;\n renderToolbarInternalActions?: ({\n instance,\n MRT_ToggleGlobalFilterButton,\n MRT_ToggleFiltersButton,\n MRT_ShowHideColumnsButton,\n MRT_ToggleDensePaddingButton,\n MRT_FullScreenToggleButton,\n }: {\n instance: MRT_TableInstance<D>;\n MRT_ToggleGlobalFilterButton: FC<\n IconButtonProps & { instance: MRT_TableInstance<D> }\n >;\n MRT_ToggleFiltersButton: FC<\n IconButtonProps & { instance: MRT_TableInstance<D> }\n >;\n MRT_ShowHideColumnsButton: FC<\n IconButtonProps & { instance: MRT_TableInstance<D> }\n >;\n MRT_ToggleDensePaddingButton: FC<\n IconButtonProps & { instance: MRT_TableInstance<D> }\n >;\n MRT_FullScreenToggleButton: FC<\n IconButtonProps & { instance: 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","instance","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","fuzzy","columnId","filterValue","addMeta","itemRank","rankItem","getValue","threshold","rankings","MATCHES","passed","autoRemove","val","contains","id","toString","toLowerCase","trim","includes","startsWith","endsWith","equals","notEquals","greaterThan","isNaN","lessThan","between","filterValues","undefined","empty","_filterValue","notEmpty","MRT_FilterFns","commonMenuItemStyles","py","my","alignItems","MRT_FilterOptionMenu","anchorEl","header","onSelect","setAnchorEl","enabledGlobalFilterOptions","enabledColumnFilterOptions","setCurrentFilterFns","setCurrentGlobalFilterFn","currentFilterFns","currentGlobalFilterFn","column","columnDef","allowedColumnFilterOptions","filterOptions","useMemo","option","label","divider","fn","filter","filterType","filterOption","Menu","anchorOrigin","vertical","horizontal","onClose","open","MenuListProps","dense","map","index","MenuItem","key","value","prev","setFilterValue","selected","DndContext","createContext","dragDropManager","formatProdErrorMessage","code","$$observable","Symbol","observable","randomString","Math","random","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","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","getAllLeafColumnDefs","columns","lowestLevelColumns","currentCols","_currentCols","col","nextCols","flat","every","createDataColumn","table","filterFn","createDisplayColumn","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","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","tablePaginationProps","totalRowCount","rows","showFirstLastPageButtons","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","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","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","renderHeader","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","Skeleton","animation","Cell","getIsPlaceholder","groupingColumnId","getIsAggregated","AggregatedCell","renderAggregatedCell","renderCell","subRows","_row$subRows","_row$subRows2","MRT_TableDetailPanel","getVisibleLeafColumns","muiTableBodyRowProps","muiTableDetailPanelProps","borderBottom","getTotalSize","MRT_TableBodyRow","&:hover td","getVisibleCells","MRT_SortingFns","rowA","rowB","dir","columnFiltersMeta","compareItems","sortingFns","alphanumeric","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","renderFooter","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","_initialState$current3","_c$filterSelectOption","globalFilterFn","createTable","setOptions","filterFns","getCoreRowModel","getExpandedRowModel","getFacetedRowModel","getFilteredRowModel","getGroupedRowModel","getPaginationRowModel","getSortedRowModel","displayColumns","_props$localization","enableExpandAll","_props$localization2","enableSelectAll","_props$localization3","_props$localization4","_props$localization5","createGroup","_column$columns","_props$state2","fill","_props$state3","_props$state4","useTableInstance","onColumnOrderChange","getSubRows","onCurrentEditingCellChange","onCurrentEditingRowChange","onCurrentFilterFnsChange","onCurrentGlobalFilterFnChange","onDensityChange","onIsFullScreenChange","onShowAlertBannerChange","onShowFiltersChange","onShowGlobalFilterChange","Dialog","PaperComponent","TransitionComponent","disablePortal","fullScreen","keepMounted","transitionDuration","autoResetExpanded","columnResizeMode","defaultColumn","maxSize","enableMultiRowSelection"],"mappings":"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"}